1.9.2 snapshot
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajde/core/ICompilerConfiguration.class b/org.aspectj.ajde/classes/org/aspectj/ajde/core/ICompilerConfiguration.class
index c151cd6..0030ce3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajde/core/ICompilerConfiguration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajde/core/ICompilerConfiguration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.class b/org.aspectj.ajde/classes/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.class
index 4ec34e4..9872f64 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$AjcConfigParser.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$AjcConfigParser.class
index d597ce4..95a0ec0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$AjcConfigParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$AjcConfigParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$StringPrintWriter.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$StringPrintWriter.class
index 7df8612..9712ee2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$StringPrintWriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser$StringPrintWriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser.class
index 93ae7f4..efba6c2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/BuildArgParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$1.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$1.class
index c68fe15..d0a8e49 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$2.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$2.class
index 3f0d208..3674035 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Arg.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Arg.class
index 65c92d9..ff558bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Arg.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Arg.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CPSourceLocation.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CPSourceLocation.class
index 9668267..32f96e2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CPSourceLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CPSourceLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CommandLineLocation.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CommandLineLocation.class
index f38c6f6..1c01d7c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CommandLineLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$CommandLineLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Location.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Location.class
index 123ff0d..be6aeb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Location.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$Location.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$ParseException.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$ParseException.class
index 71a8e40..7633ca6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$ParseException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser$ParseException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser.class
index d01f2e8..0c5dfe6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/ConfigParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/messages.properties b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/messages.properties
index 6ad836b..516af38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/messages.properties
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/ajc/messages.properties
@@ -4,15 +4,143 @@
      The -Xlintfile:lint.properties allows fine-grained control. In tools.jar, see
      org/aspectj/weaver/XlintDefault.properties for the default behavior and a template to copy. 
 ### AspectJ-specific messages 
-compiler.name = AspectJ Compiler 1.8.13
-compiler.version = Eclipse Compiler Neon.2 #75dbfad0, 3.12
+compiler.name = AspectJ Compiler 1.9.1
+compiler.version = Eclipse Compiler #abe06abe4ce1(Apr2018), 3.14
 compiler.copyright = 
 
+
 ## this next one superceded by above...
 ## configure.version = AspectJ Compiler 1.1 
 
 configure.directoryNotExist = invalid option: {0}
-## 3456789012345678901234567890123456789012345678901234567890123456789012345
+
+### compile
+compile.repetition = [repetition {0}/{1}]
+compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
+compile.detailedTime = [parse: {0} ms ({1}%), resolve: {2} ms ({3}%), analyze: {4} ms ({5}%), generate: {6} ms ({7}%) ]
+compile.ioTime = [i/o: read: {0} ms ({1}%), write: {2} ms ({3}%)]
+compile.averageTime = [average, excluding min-max {0} lines in {1} ms: {2} lines/s]
+compile.totalTime = [total compilation time: {0}]
+compile.oneProblem = 1 problem ({0})
+compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
+compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
+compile.severalProblems = {0} problems ({1}, {2}, {3})
+compile.oneError = 1 error
+compile.severalErrors = {0} errors
+compile.oneWarning = 1 warning
+compile.severalWarnings = {0} warnings
+compile.oneInfo = 1 info
+compile.severalInfos = {0} info
+compile.oneClassFileGenerated = [1 .class file generated]
+compile.severalClassFilesGenerated = [{0} .class files generated]
+
+### configure
+configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
+configure.duplicateLog = duplicate log specification: {0}
+configure.duplicateRepeat = duplicate repeat specification: {0}
+configure.duplicateMaxProblems = duplicate max problems specification: {0}
+configure.duplicateCompliance = duplicate compliance setting specification: {0}
+configure.duplicateSource = duplicate source compliance setting specification: {0}
+configure.duplicateTarget = duplicate target compliance setting specification: {0}
+configure.source = source level should be comprised in between ''1.3'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0''): {0}
+configure.invalidSystem = invalid location for system libraries
+configure.unsupportedOption = option {0} not supported at compliance level 9 and above
+configure.duplicateOutputPath = duplicate output path specification: {0}
+configure.duplicateModulePath = duplicate module path specification: {0}
+configure.duplicateModuleSourcepath = duplicate source module path specification: {0}
+configure.invalidModuleDescriptor = cannot open the module descriptor from {0}
+configure.invalidModuleOption = incorrectly formatted option: {0}
+configure.duplicateExport = can specify a package in a module only once with --add-export
+configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
+configure.duplicateExtDirs = duplicate extdirs specification: {0}
+configure.duplicateSourcepath = duplicate sourcepath specification: {0}
+configure.invalidDebugOption = invalid debug option: {0}
+configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
+configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
+configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
+configure.targetJDK = target JDK should be comprised in between ''1.1'' and ''1.4'': {0}
+configure.incompatibleTargetForSource14 = ''1.4'' source mode requires ''-target 1.4'' : {0}
+configure.incompatibleComplianceForSource14 = ''1.4'' source mode requires ''-1.4'' compliance mode: {0}
+configure.incompatibleComplianceForTarget14 = ''1.4'' target mode requires ''-1.4'' compliance mode: {0}
+configure.incompatibleComplianceForTarget11 = ''1.1'' target mode requires ''-1.3'' compliance mode: {0}
+configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
+configure.repetition = repetition must be a positive integer: {0}
+configure.maxProblems = max problems must be a positive integer: {0}
+configure.invalidNowarnOption = invalid syntax for nowarn option: {0}
+
+configure.invalidErrorConfiguration = invalid error configuration: ''{0}''
+configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
+configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token
+
+configure.invalidInfoConfiguration = invalid info configuration: ''{0}''
+configure.invalidInfo = invalid info token: ''{0}''. Ignoring this info token and compiling
+configure.invalidInfoOption = invalid info option: ''{0}''. Must specify an info token
+
+configure.directoryNotExist = directory does not exist: {0}
+configure.IOError = i/o error : unable to retrieve .JAVA files in directory: {0}
+configure.unrecognizedOption = Unrecognized option : {0}
+configure.noClasspath = no classpath defined, using default directory instead
+configure.incorrectClasspath = incorrect classpath: {0}
+configure.invalidexpansionargumentname = expansion argument file {0} does not exist or cannot be read
+configure.cannotOpenLog = cannot open .log file: {0}
+configure.cannotOpenLogInvalidEncoding = cannot open .log file: {0}; because UTF-8 is not supported
+configure.unexpectedCustomEncoding = unexpected custom encoding specification: {0}[{1}]
+configure.unsupportedEncoding = unsupported encoding format: {0}
+configure.duplicateDefaultEncoding = duplicate default encoding format specification: {0}
+configure.invalidTaskTag ={0} is an invalid task tag
+configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
+configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
+configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
+configure.missingDestinationPath = destination path must be provided with module source path
+configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
+configure.unexpectedBracket = unexpected bracket: {0}
+configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
+configure.unexpectedDestinationPathEntryFile = unexpected destination path entry for file: {0}
+configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
+configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
+configure.invalidClassName = invalid class name: {0}
+configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath.
+configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
+configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
+configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required
+configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
+configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0}
+configure.missingwarningspropertiesfile=properties file {0} does not exist
+configure.ioexceptionwarningspropertiesfile=An IOException occurred while reading the properties file {0}
+configure.multipleencodings=Multiple encoding specified: {1}. The default encoding has been set to {0}
+configure.differentencodings=Found encoding {0}. Different encodings were specified: {1}
+configure.differentencoding=Found encoding {0}. A different encoding was specified: {1}
+
+configure.invalidModuleName = invalid module name: {0}
+### null annotations
+configure.invalidNullAnnot = Token {0} is not in the expected format "nullAnnot(<non null annotation name> | <nullable annotation name> | <non-null by default annotation name>)"
+configure.missingAnnotationPath = Missing argument to -annotationpath at ''{0}''
+
+### requestor
+requestor.error = {0}. ERROR in {1}
+requestor.warning = {0}. WARNING in {1}
+requestor.info = {0}. INFO in {1}
+requestor.extraerror = {0}. ERROR:
+requestor.extrawarning = {0}. WARNING:
+requestor.extrainfo = {0}. INFO:
+requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
+requestor.noFileNameSpecified = (original file name is not available)
+
+### EMACS STYLE
+output.emacs.error=error
+output.emacs.warning=warning
+output.emacs.info=info
+
+### unit
+unit.more = File {0} is specified more than once
+unit.missing = File {0} is missing
+
+### output
+output.noClassFileCreated = No .class file created for file {1} in {0} because of an IOException: {2}
+
+### miscellaneous
+misc.version = {0} {1}, {2}
+
 ### miscellaneous
 misc.usage = {0}\n\
 \n\
@@ -48,7 +176,7 @@
 \ Options enabled by default are prefixed with ''+''\n\
 \ \n\
 \ Classpath options:\n\
-\    -cp -classpath <directories and zip/jar files separated by ;>\n\
+\    -cp -classpath <directories and ZIP archives separated by ;>\n\
 \                       specify location for application classes and sources\n\
 \    -bootclasspath <directories and zip/jar files separated by ;>\n\
 \                       specify location for system classes\n\
@@ -58,17 +186,21 @@
 \                       when suffixed with ''[''<enc>'']'' (e.g. X.java[utf8])\n\
 \ \n\
 \ Compliance options:\n\
-\    -1.3               use 1.3 compliance level (implicit -source 1.3 -target 1.1)\n\
-\    -1.4             + use 1.4 compliance level\n\
+\    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
+\    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
 \    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)\n\
 \    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
 \    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
 \    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
-\    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
-\    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
+\    -1.9 -9 -9.0       use 1.9 compliance (-source 1.9 -target 1.9)\n\
+\    -source <version>  set source level: 1.3 to 1.9 (or 6, 6.0, etc)\n\
+\    -target <version>  set classfile target: 1.1 to 1.9 (or 6, 6.0, etc)\n\
+\                       cldc1.1 can also be used to generate the StackMap\n\
+\                       attribute\n\
 \ \n\
 \ Warning options:\n\
-\    -deprecation         + deprecation outside deprecated code\n\
+\    -deprecation     + deprecation outside deprecated code (equivalent to\n\
+\                       -warn:+deprecation)\n\
 \    -nowarn -warn:none disable all warnings\n\
 \    -warn:<warnings separated by ,>    enable exactly the listed warnings\n\
 \    -warn:+<warnings separated by ,>   enable additional warnings\n\
@@ -91,6 +223,8 @@
 \      emptyBlock           undocumented empty block\n\
 \      enumIdentifier       ''enum'' used as identifier\n\
 \      enumSwitch           incomplete enum switch\n\
+\      enumSwitchPedantic + report missing enum switch cases even\n\
+\                           in the presence of a default case\n\
 \      fallthrough          possible fall-through case\n\
 \      fieldHiding          field hiding another variable\n\
 \      finalBound           type parameter with final bound\n\
@@ -102,20 +236,53 @@
 \      includeAssertNull    raise null warnings for variables\n\
 \                           that got tainted in an assert expression\n\
 \      indirectStatic       indirect reference to static member\n\
+\      inheritNullAnnot     inherit null annotations\n\
 \      intfAnnotation     + annotation type used as super interface\n\
 \      intfNonInherited   + interface non-inherited method compatibility\n\
 \      intfRedundant        find redundant superinterfaces\n\
+\      invalidJavadoc       all warnings for malformed javadoc tags\n\
+\      invalidJavadocTag    validate javadoc tag arguments\n\
+\      invalidJavadocTagDep validate deprecated references in javadoc tag args\n\
+\      invalidJavadocTagNotVisible  validate non-visible references in javadoc\n\
+\							tag args\n\
+\      invalidJavadocVisibility(<visibility>)  specify visibility modifier\n\
+\							for malformed javadoc tag warnings\n\
 \      javadoc              invalid javadoc\n\
 \      localHiding          local variable hiding another variable\n\
 \      maskedCatchBlock   + hidden catch block\n\
+\      missingJavadocTags   missing Javadoc tags\n\
+\      missingJavadocTagsOverriding missing Javadoc tags in overriding methods\n\
+\      missingJavadocTagsMethod missing Javadoc tags for method type parameter\n\
+\      missingJavadocTagsVisibility(<visibility>)  specify visibility modifier\n\
+\							for missing javadoc tags warnings\n\
+\      missingJavadocComments   missing Javadoc comments\n\
+\      missingJavadocCommentsOverriding   missing Javadoc tags in overriding\n\
+\							methods\n\
+\      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
+\							modifier for missing javadoc comments warnings\n\
 \      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
 \      noEffectAssign     + assignment without effect\n\
 \      null                 potential missing or redundant null check\n\
+\      nullAnnot(<annot. names separated by |>)   annotation based null analysis,\n\
+\                           nullable|nonnull|nonnullbydefault annotation types\n\
+\                           optionally specified using fully qualified names.\n\
+\							Enabling this option enables all null-annotation\n\
+\							related sub-options. These can be individually\n\
+\							controlled using options listed below.\n\
+\      nullAnnotConflict    conflict between null annotation specified\n\
+\							and nullness inferred. Is effective only with\n\
+\							nullAnnot option enabled.\n\
+\      nullAnnotRedundant   redundant specification of null annotation. Is\n\
+\							effective only with nullAnnot option enabled.\n\
 \      nullDereference    + missing null check\n\
+\	   nullUncheckedConversion unchecked conversion from non-annotated type\n\
+\							to @NonNull type. Is effective only with\n\
+\							nullAnnot option enabled.\n\
 \      over-ann             missing @Override annotation (superclass)\n\
 \      paramAssign          assignment to a parameter\n\
 \      pkgDefaultMethod   + attempt to override package-default method\n\
 \      raw                + usage of raw type\n\
+\      resource           + (pot.) unsafe usage of resource of type Closeable\n\
 \      semicolon            unnecessary semicolon, empty statement\n\
 \      serial             + missing serialVersionUID\n\
 \      specialParamHiding   constructor or setter parameter hiding a field\n\
@@ -124,27 +291,45 @@
 \      staticReceiver     + non-static reference to static member\n\
 \      super                overriding a method without making a super invocation\n\
 \      suppress           + enable @SuppressWarnings\n\
-\                           When used with -err:, it can also silent optional\n\
+\                           When used with -err:, it can also silence optional\n\
 \                           errors and warnings\n\
+\      switchDefault        switch statement lacking a default case\n\
 \      syncOverride         missing synchronized in synchr. method override\n\
+\      syntacticAnalysis    perform syntax-based null analysis for fields\n\
 \      syntheticAccess      synthetic access for innerclass\n\
 \      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
 \      typeHiding         + type parameter hiding another type\n\
 \      unavoidableGenericProblems + ignore unavoidable type safety problems\n\
 \                                   due to raw APIs\n\
 \      unchecked          + unchecked type operation\n\
+\      unlikelyCollectionMethodArgumentType\n\
+\                         + unlikely argument type for collection method\n\
+\                           declaring an Object parameter\n\
+\      unlikelyEqualsArgumentType unlikely argument type for method equals()\n\
 \      unnecessaryElse      unnecessary else clause\n\
 \      unqualifiedField     unqualified reference to field\n\
 \      unused               macro for unusedAllocation, unusedArgument,\n\
 \                               unusedImport, unusedLabel, unusedLocal,\n\
-\                               unusedPrivate, unusedThrown, and unusedTypeArgs\n\
+\                               unusedPrivate, unusedThrown, and unusedTypeArgs,\n\
+\								unusedExceptionParam\n\
 \      unusedAllocation     allocating an object that is not used\n\
 \      unusedArgument       unread method parameter\n\
+\      unusedExceptionParam unread exception parameter\n\
 \      unusedImport       + unused import declaration\n\
 \      unusedLabel        + unused label\n\
 \      unusedLocal        + unread local variable\n\
+\      unusedParam		    unused parameter\n\
+\      unusedParamOverriding unused parameter for overriding method\n\
+\      unusedParamImplementing unused parameter for implementing method\n\
+\      unusedParamIncludeDoc unused parameter documented in comment tag\n\
 \      unusedPrivate      + unused private member declaration\n\
 \      unusedThrown         unused declared thrown exception\n\
+\      unusedThrownWhenOverriding unused declared thrown exception in \n\
+\							overriding method\n\
+\      unusedThrownIncludeDocComment     unused declared thrown exception,\n\
+\							documented in a comment tag\n\
+\      unusedThrownExemptExceptionThrowable  unused declared thrown exception,\n\
+\							exempt Exception and Throwable\n\
 \      unusedTypeArgs     + unused type arguments for method and constructor\n\
 \      uselessTypeCheck     unnecessary cast/instanceof operation\n\
 \      varargsCast        + varargs argument need explicit cast\n\
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter$CompilerAdapter$1.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter$CompilerAdapter$1.class
index d60f9a4..7064bd8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter$CompilerAdapter$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter$CompilerAdapter$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter.class
index 56ca247..98156b0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/CompilerAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.class
index 53993d3..d73f983 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor$SuperAccessMethodPair.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor$SuperAccessMethodPair.class
index fbbcf91..ae3bf6e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor$SuperAccessMethodPair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor$SuperAccessMethodPair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.class
index 89a6574..33ca063 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.class
index 7d8efc9..b46f8c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.class
index c17e64c..9845a0f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.class
index 41a1394..b5d5fe4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.class
index 45d54e8..d81ed00 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/Proceed.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/Proceed.class
index a2b18c5..1d56b70 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/Proceed.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/Proceed.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/PseudoTokens.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/PseudoTokens.class
index 2e64caf..20dbf05 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/PseudoTokens.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/PseudoTokens.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.class
index 3b2bf4d..20b8c52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.class
index 4224e53..6920e01 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AnonymousClassPublisher.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AnonymousClassPublisher.class
index 2b58119..2270258 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AnonymousClassPublisher.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/AnonymousClassPublisher.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.class
index c14f6b0..4446859 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.class
index 5a29628..3fe27db 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.class
index d3dda2d..f33866e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.class
index b4206b4..cf726be 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.class
index 81b4487..a376c1c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.class
index b8184c8..c23d755 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.class
index 5623ad7..b217e63 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.class
index c5523e6..4c1785e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForFieldBindings.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForFieldBindings.class
index 19e71f3..5cd0a4d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForFieldBindings.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForFieldBindings.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForMethodBindings.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForMethodBindings.class
index ce9b69b..10ceb75 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForMethodBindings.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/OwningClassSupportForMethodBindings.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.class
index 59ea9bd..8a3759d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/WarnOnSwallowedException.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/WarnOnSwallowedException.class
index 55c900f..354996d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/WarnOnSwallowedException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/lookup/WarnOnSwallowedException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/parser/AllowAssertAndEnumAsIdentifierTokensInPointcutExpressions.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/parser/AllowAssertAndEnumAsIdentifierTokensInPointcutExpressions.class
index 417b5f3..dc0d503 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/parser/AllowAssertAndEnumAsIdentifierTokensInPointcutExpressions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/compiler/parser/AllowAssertAndEnumAsIdentifierTokensInPointcutExpressions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.class
index f81a852..f63843f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$1.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$1.class
index 9e065cd..9e31279 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$BinarySourceFile.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$BinarySourceFile.class
index 2824350..73d0419 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$BinarySourceFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig$BinarySourceFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.class
index 78db196..089cd0c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$1.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$1.class
index d7756b6..036ff2c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$2.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$2.class
index dba91ac..bff1f37 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$3.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$3.class
index 4217f2d..27a2c1e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$4.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$4.class
index de1399e..37f951e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$AjBuildContexFormatter.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$AjBuildContexFormatter.class
index af8970d..187b18c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$AjBuildContexFormatter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager$AjBuildContexFormatter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager.class
index 2d9c2bc..9f7dd6e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjBuildManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.class
index 2212bba..44ee602 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile$1.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile$1.class
index f32dfb7..8351bb0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile.class
index dcf636d..6ac9f94 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$ClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap$SoftReferenceKnownKey.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap$SoftReferenceKnownKey.class
index 982d79a..ddef146 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap$SoftReferenceKnownKey.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap$SoftReferenceKnownKey.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap.class
index 044269c..1992fbc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState$SoftHashMap.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState.class
index dff0f7d..e26cb49 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/AjState.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.class
index 0036429..dec1144 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager$ClassFileReaderBackedClassFile.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager$ClassFileReaderBackedClassFile.class
index 6d2f299..7219ea6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager$ClassFileReaderBackedClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager$ClassFileReaderBackedClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.class
index 44d6352..9902f3e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.class
index 50e4beb..233229b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/BindingKey.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/BindingKey.class
index e4d9463..d63acec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/BindingKey.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/BindingKey.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer$1.class
index de06237..a3a502e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.class
index 6d121b2..93ab7eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionProposal.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionProposal.class
index fc026bf..7e60f0a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionProposal.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionProposal.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.class
index af978a7..36529f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.class
index 4be4684..5c76f52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine$1.class
index 45f6e57..a9911da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.class
index c4406e4..43ec557 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Flags.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Flags.class
index 1abb6ca..4f38edb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Flags.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Flags.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IAnnotation.class
index be3967c..5febf8f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClassFile.class
index 784106b..149cfb6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.class
index e2a7842..02e8023 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.class
index e17ad91..2a61060 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.class
index 88975ee..cb3a2d8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IField.class
index c1afccf..111eb5f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.class
index af6b2c2..ff746f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.class
index 968850d..5b8a7bf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaElement.class
index ee6beef..734ea4f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.class
index a847214..e78a8e3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaProject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaProject.class
index 07facfc..627bb50 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaProject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IJavaProject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ILocalVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ILocalVariable.class
index e2acef7..c00f962 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ILocalVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ILocalVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMember.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMember.class
index 5976401..58bb1af 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMember.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMember.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMethod.class
index 31d0606..1737157 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModularClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModularClassFile.class
new file mode 100644
index 0000000..aee24aa
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModularClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModuleDescription.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModuleDescription.class
new file mode 100644
index 0000000..f0b763f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IModuleDescription.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.class
new file mode 100644
index 0000000..9ac061f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.class
index 3d833e3..e06a41e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragment.class
index c3ecd7f..8f0256c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.class
index d83fd99..e8bb60d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IType.class
index 4d6416d..68f7a6c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/IType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ITypeRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ITypeRoot.class
index 67f28ef..51ca3ea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ITypeRoot.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ITypeRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaConventions.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaConventions.class
index 0d8920b..ae4b94a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaConventions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaConventions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$1.class
index 406afa8..a1cf335 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$2.class
index 325ecdd..f6abffd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore.class
index 887614e..dc7242b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaCore.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaModelException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaModelException.class
index df538ba..833bf54 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaModelException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/JavaModelException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions$NamingRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions$NamingRequestor.class
index a47b687..f101288 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions$NamingRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions$NamingRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions.class
index 9c5f498..8d5642e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/NamingConventions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Signature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Signature.class
index 03e160d..265e0de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Signature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/Signature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/SourceRange.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/SourceRange.class
index 6c45a9b..ea3060d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/SourceRange.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/SourceRange.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ToolFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ToolFactory.class
index 5f794fa..6eb02b6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ToolFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/ToolFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.class
index ae7f697..50b927d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.class
index f4253e5..df05fdb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.class
index 6dce399..370ba17 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.class
index afe52ba..700d466 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.class
index 86e24c0..f158fd6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.class
index bf53ce0..4bb6620 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.class
index ac24876..713b406 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AST.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AST.class
index 4e4281f..1fef833 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AST.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AST.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$1.class
new file mode 100644
index 0000000..687f62c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IASTConverterFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IASTConverterFactory.class
index fc4dd5b..6ca317d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IASTConverterFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IASTConverterFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IGetJavaDoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IGetJavaDoc.class
new file mode 100644
index 0000000..4466ece
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$IGetJavaDoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$ISetJavaDoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$ISetJavaDoc.class
new file mode 100644
index 0000000..24f6202
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter$ISetJavaDoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.class
index 8270c73..4c8cb9d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.class
index ef1d681..d2d8380 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList$Cursor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList$Cursor.class
index 30a3d82..72303fd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList$Cursor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList$Cursor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList.class
index 682841a..a99fd51 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode$NodeList.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.class
index d29da0b..52a3e46 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser$IASTFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser$IASTFactory.class
index 56d6fac..6531de1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser$IASTFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser$IASTFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.class
index cf82a42..a173b31 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.class
index f8f24d8..b04d069 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.class
index e11bacb..5653626 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.class
index 57282da..bdb8d21 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.class
index 0fc9e48..7599979 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AjASTConverter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AjASTConverter.class
index 45f08ce..cc20305 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AjASTConverter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AjASTConverter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.class
index b8ea22b..8418262 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Annotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Annotation.class
index 0e66e7c..7f51e43 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Annotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Annotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.class
index e57efd5..5665b55 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.class
index 4bd93ff..867d2fb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.class
index aade076..163ddfa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.class
index bd7f62c..73b4795 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.class
index a35384f..a947a40 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.class
index 07f5755..d3f5eaa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.class
index dab5142..c782cf4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.class
index 356f7fe..d3e79de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.class
index d5be70e..b9081e5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment$Operator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment$Operator.class
index 69b6a6e..ffcdcd1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment$Operator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment$Operator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment.class
index e2c6348..1b3b1ed 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Assignment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.class
index 1a70c69..4d13473 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.class
index ccf9743..4d4a331 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Block.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Block.class
index d37e8db..6dfd031 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Block.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Block.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.class
index b92209d..e992f56 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.class
index 7b73f46..fdaf4e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.class
index 5f7c2aa..e0f9f58 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.class
index d9f2870..25b8476 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.class
index 5fe4b3e..f508ac4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.class
index 265d361..8dddd5a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.class
index fec1282..9875852 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.class
index 8710941..6c0f32b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Comment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Comment.class
index 46ab9e6..27b5c8f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Comment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Comment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.class
index 7f5d256..fdea630 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1.class
index 71e8cdc..d8c8037 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1Requestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1Requestor.class
index c82d3ce..85719b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1Requestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$1Requestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$2.class
index 1a28190..badc082 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$IntArrayList.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$IntArrayList.class
index 2b99569..fcea5e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$IntArrayList.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver$IntArrayList.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.class
index 00d22fa..4caf4b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.class
index c76e555..16d58a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.class
index 65fc32c..287dc17 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.class
index 470a95e..4679137 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.class
index a4937b2..43a1570 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.class
index 7d43d71..5a4fbe9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$1.class
index 4380f3b..f8d04ef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$AnnotationIdentityBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$AnnotationIdentityBinding.class
index c6c0b37..2f37f24 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$AnnotationIdentityBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$AnnotationIdentityBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$BindingTables.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$BindingTables.class
index b7cb6ee..3ef42ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$BindingTables.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver$BindingTables.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.class
index 14abb4f..7ed32ea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper$CommentMapperVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper$CommentMapperVisitor.class
index 05fd057..0710d86 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper$CommentMapperVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper$CommentMapperVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.class
index bc4a4c6..67bca35 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Dimension.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Dimension.class
index 2a061cd..0a694c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Dimension.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Dimension.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.class
index bd1d9c0..8736206 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.class
index 8b777ae..90730e7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.class
index dee2179..5f5ff5f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.class
index 3399523..1f8b70c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.class
index ee3120f..83d01bf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.class
index fc178b7..9757af5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.class
new file mode 100644
index 0000000..8fa659f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.class
index 1d11a1f..34ab5fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.class
index 1c3fae7..6a55db3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.class
index dbcddac..7b13134 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.class
index 4458a36..046b2f6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.class
index 56f2aaa..410288e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.class
index 7120f2c..1a35fe7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IBinding.class
index 60e3192..62413ea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.class
index 556710e..1422b8e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.class
index e532c23..202ee9a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.class
new file mode 100644
index 0000000..e2d251a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.class
index 994297f..e7e731a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.class
index 2ef344c..b2697f4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.class
index 52fa8c1..8ea2e0d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.class
index 918ef24..513b0b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.class
index 348bc97..7e227d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression$Operator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression$Operator.class
index 6790802..999bf1a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression$Operator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression$Operator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.class
index d8b40b4..a47814c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Initializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Initializer.class
index bb2053c..6f06e2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Initializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Initializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.class
index eae1d6d..b5178db 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite$1.class
index 57772d7..a7086a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.class
index ad26b3c..aa1abde 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.class
index 0680574..18dbc6b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.class
index 4e1ddd6..04148fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.class
index 66551df..66e1040 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.class
index ae5ed94..886e513 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LineComment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LineComment.class
index 943ae0c..63b1a51 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LineComment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/LineComment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.class
index 436ea7d..218b708 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.class
index add7c48..0f73702 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.class
index d45cf5f..db2be95 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.class
index ebc32f2..6e8b7c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding$LambdaMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding$LambdaMethod.class
index 76dc051..1ceed68 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding$LambdaMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding$LambdaMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.class
index 43515a65..e0192ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.class
index e08fe2a..f40d416 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.class
index 2db70f7..793d6e5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.class
index 88d35d5..f9bc598 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.class
index 8111e9f..7e50cef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier$ModifierKeyword.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier$ModifierKeyword.class
index 72a6494..1d4078b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier$ModifierKeyword.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier$ModifierKeyword.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier.class
index f3100f3..b5e5ddf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Modifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.class
new file mode 100644
index 0000000..9a264e7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.class
new file mode 100644
index 0000000..197dae6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.class
new file mode 100644
index 0000000..2dddc3b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier$ModuleModifierKeyword.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier$ModuleModifierKeyword.class
new file mode 100644
index 0000000..a144114
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier$ModuleModifierKeyword.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.class
new file mode 100644
index 0000000..6ff53c6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.class
new file mode 100644
index 0000000..851b75c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.class
index 66e485f..de88822 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.class
index 3fcca6f..3d67c3f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder$NodeFinderVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder$NodeFinderVisitor.class
index 2fb83ea..f594361 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder$NodeFinderVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder$NodeFinderVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.class
index 40ad3f4..94a4c18 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.class
index 963e1fb..172b431 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.class
index 88877e8..32d16c6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.class
index ade2861..9b58750 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.class
index 042e513..f364d01 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.class
new file mode 100644
index 0000000..25ce2df
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.class
index 3d97e72..6dde25a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.class
index 4c047f8..2c1e493 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.class
index 6b01239..cc9edc6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.class
index 370ab8c..cb9c289 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression$Operator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression$Operator.class
index a6f4e7d..6066394 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression$Operator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression$Operator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.class
index 35157f2..2452335 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression$Operator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression$Operator.class
index c5a4c14..5d94ed6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression$Operator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression$Operator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.class
index 318e857..962ac61 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType$Code.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType$Code.class
index 766ab98..cdb1439 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType$Code.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType$Code.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.class
index 5031fa1..ef8915b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.class
new file mode 100644
index 0000000..975befe
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.class
index 746571e..5f3e96c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.class
index ec0e87e..b13f59d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.class
new file mode 100644
index 0000000..7c35495
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.class
index 29efb5f..5165e5b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.class
index f047c97..2fed6c8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.class
new file mode 100644
index 0000000..16f8474
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.class
index 9669a9d..60719c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.class
index f74a49c..dac6aaa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.class
index cd166d1..f5bcf26 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.class
index 94bd046..aab2468 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.class
index 8743737..74230fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Statement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Statement.class
index 7971805..1108d23 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Statement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Statement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.class
index 1d53605..12a8583 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.class
index 3bfc261..73ec135 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.class
index 37a9f05..fb76df6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.class
index 6e2da09..702928a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.class
index 02d8c0b..10d5e9c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.class
index bb5318f..2d9a731 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.class
index d5b38e7..dd439a3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.class
index 6a0f472..33da3da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.class
index deb0ff3..9128093 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TagElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TagElement.class
index 9090b86..ecf57ba 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TagElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TagElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TextElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TextElement.class
index 325cd31..6378250 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TextElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TextElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.class
index 840f40b..b14a43c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.class
index f3cb134..b4a11b0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.class
index 2a0387f..dd0159f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Type.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Type.class
index 0793193..6c5bb3e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Type.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/Type.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding$LocalTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding$LocalTypeBinding.class
index 52bd9b2..9c2be79 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding$LocalTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding$LocalTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.class
index 4a3edd9..d650a32 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.class
index 8bc288f..45e0ee3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.class
index 61fed91..b52982c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.class
index cca5cef..2090f98 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.class
index a398bb6..3ee732b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.class
index b76b904..d0ce14f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UnionType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UnionType.class
index 95413f7..5173c8f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UnionType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UnionType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.class
new file mode 100644
index 0000000..26edf78
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.class
index 075de94..be9eb1f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.class
index c0f3ef7..e07b708 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.class
index bd016dc..1e4909f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.class
index 448e5a6..deb4bbb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.class
index 2c1db69..24fee2e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.class
index ad21144..294dcaf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.class
index 93822db..f5dec75 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.class
index 352a803..ad0108c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$1.class
index 746a383..eb3b8a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$ImportRewriteContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$ImportRewriteContext.class
index 52731b0..28f62d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$ImportRewriteContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$ImportRewriteContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$TypeLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$TypeLocation.class
new file mode 100644
index 0000000..30b81e0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite$TypeLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.class
index faca003..6018c39 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.class
index be95447..67d8a1a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication$Messages.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication$Messages.class
index 42bc680..e9b4cf6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication$Messages.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication$Messages.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.class
index f28824b..ab015f6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.class
index 97c23bc..9c9c64c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.class
index 84d194c..2230aa5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.class
index 849b031..6a85d68 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.class
index a7e8bb9..ddcc915 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.class
index 9ae8a56..4dcdf74 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.class
index eb12246..c3eedf5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.class
index a99daf3..240868c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.class
index 5438b23..760369c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.class
index 9733a65..62e0263 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.class
index bc4d062..117d469 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.class
index c35ef6d..05abdf5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.class
new file mode 100644
index 0000000..5c3ae8d
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.class
index 90b7816..cdb34f3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.class
new file mode 100644
index 0000000..25a40e8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.class
new file mode 100644
index 0000000..1a283bb
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$ResultCollectorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$ResultCollectorAdapter.class
index 5179209..ca1c575 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$ResultCollectorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$ResultCollectorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$TypeNameRequestorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$TypeNameRequestorAdapter.class
index a9bd689..386cc33 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$TypeNameRequestorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine$TypeNameRequestorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.class
index 8d417ed..55e1801 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.class
index 10ede1a..083da6b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.class
index d0a3059..d1cc428 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.class
index 27ed5e0..717730f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.class
index 2273940..ae2acc4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.class
index cc12fd2..df5336a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.class
index 0c9e049..c08c2e3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.class
index 315a0d4..e6a5032 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.class
index 3ae94f3..2e8574b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.class
index 0be9325..858a94d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.class
new file mode 100644
index 0000000..9673f56
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.class
index 570d29f..c7b58b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.class
new file mode 100644
index 0000000..9641f0f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.class
new file mode 100644
index 0000000..d061af0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.class
new file mode 100644
index 0000000..aa3590a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.class
new file mode 100644
index 0000000..8ad32c4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.class
new file mode 100644
index 0000000..402ca05
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.class
new file mode 100644
index 0000000..3348640
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.class
index ad7b1ce..654013f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1.class
index b643e0c..df2e3fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$10.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$10.class
index 0d4ad67..f7e4b9d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$10.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$10.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1ImplSearchRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1ImplSearchRequestor.class
new file mode 100644
index 0000000..59b0467
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$1ImplSearchRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$2.class
index ba708ef..3db9713 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$3.class
index 1c6f05a..9054af3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$4.class
index 5055773..4cb45bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$5.class
index bd6ef19..a6f1402 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$6.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$6.class
index 021f00e..e0c0043 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$6.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$6.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$7.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$7.class
index 14e275c..33ddbab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$7.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$7.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$8.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$8.class
index 225631d..70ea8d6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$8.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$8.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$9.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$9.class
index f605fad..17d2684 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$9.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$9.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedConstructor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedConstructor.class
index c7c228a..e7a0641 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedConstructor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedConstructor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedType.class
index 03201bc..334e1f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$AcceptedType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$CompletionProblemFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$CompletionProblemFactory.class
index bd67418..f1388a9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$CompletionProblemFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine$CompletionProblemFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.class
index f4cc840..57cfef3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.class
index 2dcc36b..6b0c6b2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.class
index bd4e77c..904f49a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.class
index c258c3e..c84b1a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.class
index a22c204..6648103 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.class
index 0ec6c31..ee7f1a5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.class
index 414accb..0134982 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext$1.class
index f7260c2..62e6ad6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.class
index ce7f982..34f2d1d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$1.class
index c94e365..49672a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$ResolutionCleaner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$ResolutionCleaner.class
index f7e3eaa..0cd40a1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$ResolutionCleaner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser$ResolutionCleaner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.class
index fa9bef2..4b4b365 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.class
index 4b591e9..20be265 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1.class
index 3770f51..8af563d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1Visitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1Visitor.class
index ee9a65a..0f8a707 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1Visitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$1Visitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$2.class
index 9c98e5e..41752eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$3.class
index cf87b4c..2f05af7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$4.class
index 80424d0..b78f755 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$1.class
index 1a9c2df..e2dda25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$2.class
index f4e1002..490eab7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor.class
index cbeea11..0430e6e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$InheritDocVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper$AcceptedType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper$AcceptedType.class
index 9d4e5de..0fd1391 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper$AcceptedType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper$AcceptedType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper.class
index e581c91..31afa9c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine$SelectionTypeNameMatchRequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.class
index fff380d..32decc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.class
index cfa1398..90cc261 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.class
index c4ec8c6..dd7f67e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.class
new file mode 100644
index 0000000..0cf342c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.class
index 8f07f63..0bbcca1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.class
index a59cccf..387c9e4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.class
index 7a9f0b3..d6018bb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.class
index e6db8cb..638c4f1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.class
index 7aad02e..85293f2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.class
index fe1b6ae..f188372 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.class
index 9c01f58..53e54d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.class
index 4c77880..a76dee1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.class
index b7d8a78..cc01a02 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.class
new file mode 100644
index 0000000..466a06b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.class
index 734dfd1..4c35774 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.class
index 1945aaa..a153b4b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.class
index b1e13ce..cee378e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.class
index 1e14fbb..c40ac33 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.class
index 07ef1b4..9754a71 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.class
index 6fc4a22..a6e3fd7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.class
index ca5a941..0d55aef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.class
index b19a794..4f8d1b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.class
index 4d16196..d6b9245 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.class
index e8bf035..b3c98ce 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.class
index 75b928f..728b030 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.class
index 1e84c58..95792c6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.class
index 024674d..3e7558a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.class
index 8b033de..1caa96c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.class
new file mode 100644
index 0000000..e8af0fa
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.class
new file mode 100644
index 0000000..21f3bb8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.class
new file mode 100644
index 0000000..ba45536
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.class
index 9b52f35..314fd66 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.class
index 4845e0f..61c1f38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.class
index 8ccb0f9..cab7bf8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.class
index 0f8fb55..9cade1a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.class
index 621372d..288105e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.class
index 4831b08..7ee1b87 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.class
index 28d3c9f..42fd4c8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.class
index c35b542..a73acae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.class
index 77f732b..0396aab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.class
new file mode 100644
index 0000000..b164477
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.class
new file mode 100644
index 0000000..e94658b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.class
index 7185c36..cc01ec3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.class
new file mode 100644
index 0000000..4d85782
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.class
index 773ad63..28314a6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.class
new file mode 100644
index 0000000..d4fc371
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.class
new file mode 100644
index 0000000..b2e4939
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.class
new file mode 100644
index 0000000..1032f04
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.class
new file mode 100644
index 0000000..3878a4a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.class
index 9f18003..03561ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.class
index 6d8ed8d..bf66ea6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.class
index 8885e4e..7e81f68 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.class
index 67169a7..5ae6c22 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.class
index 7061aa8..a4871e0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.class
index 8808064..6bb0110 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.class
index a4338f3..1b9997d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.class
new file mode 100644
index 0000000..e764fdf
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.class
new file mode 100644
index 0000000..73113e7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$ModuleKeyword.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$ModuleKeyword.class
new file mode 100644
index 0000000..a76717b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$ModuleKeyword.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$SavedState.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$SavedState.class
new file mode 100644
index 0000000..02a0664
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser$SavedState.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.class
index df6bdcb..dcd91ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.class
index 5e3b2ee..42ca592 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.class
index 739ac64..5265fc4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.class
index 147e845..6e3cb5b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.class
index 03e9061..509c0a2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.class
index e954815..e5ccf36 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.class
index 9dfc515..97a21fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.class
index 5c51e43..1452a9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.class
index fa5c5b2..4ee8848 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.class
index 1345b22..50dee9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.class
index 8d74cf2..f0d70f5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.class
index b2a56b1..8889db4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.class
index 4975b3c..a72dee3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.class
index 21b0d95..419ec71 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.class
index 685745c..3313823 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.class
index d825d21..d124954 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.class
index 9e962ad..89b3049 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.class
index 74ab425..40b8f97 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.class
index 0212d14..c160bcd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.class
index 50a638a..fe11c4b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.class
index 3818f18..020d417 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.class
index 421491f..f3d7084 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.class
index ba6a166..e8f6d31 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.class
index 6d21f79..7763eb6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.class
new file mode 100644
index 0000000..53111b7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.class
new file mode 100644
index 0000000..4e50c68
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.class
index 2850dd7..c180a0b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.class
index 03d3a3b..8d0bc7e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.class
new file mode 100644
index 0000000..af6d061
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.class
index 7f62cb9..3b2de0b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.class
index 0ee2cab..97ceed7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.class
index 7977ae6..fc7f871 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.class
index 40c00eb..38f087f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.class
index 82d6c66..6fa82a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.class
index 1721512..7321442 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.class
index a5a1f4e..c598775 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.class
index 159d24c..f597d86 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.class
index 7b2fc07..4065da0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.class
index 327bc0b..1064ff2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.class
index 9d7d38f..021cb6b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$1.class
index 1e27cea..92be658 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$2.class
index ed5110b..2e62ff6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.class
index 302876e..387d363 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.class
index 4b569f9..93e944c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.class
index d1368f2..fc1c9ea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.class
index bb3b7fe..05db2f8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$1.class
index d45696c..68af573 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$2.class
index 7f52e34..1b61d43 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$3.class
index d7afcf8..5b4584e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.class
index 276a26e..8f86372 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.class
index c0990c0..6cd9fe6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$1.class
index fd3321b..5985402 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$ProblemsForRemovalFilter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$ProblemsForRemovalFilter.class
index 151d12f..619e63e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$ProblemsForRemovalFilter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult$ProblemsForRemovalFilter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.class
index 42a5198..8afb976 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$1.class
index baae26b..36dbe94 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$APTProblem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$APTProblem.class
index 6902f6f..a405a4e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$APTProblem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler$APTProblem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.class
index a3d904c..0e127fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$1.class
index c592ac3..587d22c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$2.class
index 8db6f52..c0358e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$3.class
index 2d7e109..b961d38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$4.class
index 8fd289f..a860aea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$5.class
index f202881..c8b6cab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.class
index 9aa1b36..5efc611 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.class
index 06cc2cd..9d7984c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$FieldInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$FieldInfo.class
index 729f4b2..1be3eb4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$FieldInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$FieldInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$MethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$MethodInfo.class
index 78f253b..12351fe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$MethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$MethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ModuleInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ModuleInfo.class
new file mode 100644
index 0000000..a1f7f3c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ModuleInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$PackageExportInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$PackageExportInfo.class
new file mode 100644
index 0000000..16c9e97
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$PackageExportInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ParameterInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ParameterInfo.class
index 5a2b249..af44918 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ParameterInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ParameterInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$RequiresInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$RequiresInfo.class
new file mode 100644
index 0000000..81b7fc9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$RequiresInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ServicesInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ServicesInfo.class
new file mode 100644
index 0000000..0723df7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$ServicesInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeInfo.class
index a6caa79..c3d934c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeParameterInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeParameterInfo.class
index ff74847..96d7042 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeParameterInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor$TypeParameterInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.class
index b8211c6..cbab660 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.class
index ce72636..debfbae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.class
index 5e79889..e46b4f7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier$LocalDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier$LocalDeclarationVisitor.class
index d0222b0..8cd5791 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier$LocalDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier$LocalDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.class
index 0591540..a74212b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser$1.class
index ab215d5..33f9829 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.class
index 8b5bb41..1cfd2a8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.class
index 636f478..986173c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.class
index 929bd79..99b8675 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.class
index fbb098e..f5fa8fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.class
index 47d40b6..5e25801 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseMessagerImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseMessagerImpl.class
index c977fd2..8ed9d46 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseMessagerImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseMessagerImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.class
index ad18d45..d57c710 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.class
index c41d519..d36ac5d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.class
index d0fbf9f..70c6dfd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.class
index 65439e5..6e8f3b8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.class
index 6e34752..335fe13 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.class
index a345bce..6687516 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.class
index 3b5bbe5..071e6a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.class
index ad3e9f2..25dd179 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.class
index 1ca952b..dcc4b09 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.class
index 32462f5..cc8bb1f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.class
new file mode 100644
index 0000000..8eb3940
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.class
index 2ba6432..08a5ecf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.class
index 91e5934..856b84c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.class
index 58563c4..e176978 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.class
index f32280e..8a2bdb4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.class
index bcb6bdb..e75b92b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ExportsDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ExportsDirectiveImpl.class
new file mode 100644
index 0000000..10a8db0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ExportsDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$OpensDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$OpensDirectiveImpl.class
new file mode 100644
index 0000000..33fceb0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$OpensDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$PackageDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$PackageDirectiveImpl.class
new file mode 100644
index 0000000..efbe2d1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$PackageDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ProvidesDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ProvidesDirectiveImpl.class
new file mode 100644
index 0000000..7022794
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$ProvidesDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$RequiresDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$RequiresDirectiveImpl.class
new file mode 100644
index 0000000..a0540f9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$RequiresDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$UsesDirectiveImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$UsesDirectiveImpl.class
new file mode 100644
index 0000000..10a03cc
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl$UsesDirectiveImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.class
new file mode 100644
index 0000000..1f894a1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl$1.class
new file mode 100644
index 0000000..7fba2ab
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.class
index fef627c..89a13b27 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.class
index 3dff3ca..6af8e98 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.class
index 8664944..e565d33 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl$SourceLocationComparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl$SourceLocationComparator.class
index d92f13a..3f4dbb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl$SourceLocationComparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl$SourceLocationComparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.class
index 40308ee..98b33d6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.class
index 2eddf37..b7a706b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$2.class
index 2a92698..d69759a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$3.class
index 0d83f32..cb22d10 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$4.class
new file mode 100644
index 0000000..608e762
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$MemberInTypeFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$MemberInTypeFinder.class
index d509d77..2ceb87d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$MemberInTypeFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl$MemberInTypeFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.class
index 36e1bb7..afad45e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.class
index f3b6d33..f69e12b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.class
index 4093089..2fd2551 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.class
index d864bbd..ada03a9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$1.class
new file mode 100644
index 0000000..35a273c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$2.class
new file mode 100644
index 0000000..10ac8b7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.class
index 388638f..ac8c5d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.class
index 4642f1d..1d7a93f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$1.class
new file mode 100644
index 0000000..8cf5b6f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$JrtFileObject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$JrtFileObject.class
new file mode 100644
index 0000000..c56a9ac
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem$JrtFileObject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.class
new file mode 100644
index 0000000..be51b9a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.class
index 04c525b..3472752 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationContainer.class
new file mode 100644
index 0000000..61fa522
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationWrapper.class
new file mode 100644
index 0000000..a659572
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$LocationWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$ModuleLocationWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$ModuleLocationWrapper.class
new file mode 100644
index 0000000..27e4e9e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$ModuleLocationWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$SystemLocationContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$SystemLocationContainer.class
new file mode 100644
index 0000000..54355f9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler$SystemLocationContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.class
new file mode 100644
index 0000000..f8129e2
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.class
index 3352989..de73647 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.class
index cb4d12d..f5a682d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.class
index dfa4381..eb0b15a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.class
index 58d4a77..a50cf25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.class
index 4c1ae7e..1d265b6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1LocationCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1LocationCollector.class
index 54564cd..569f802 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1LocationCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1LocationCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1MissingTargetBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1MissingTargetBuilder.class
index 3326861..662c56c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1MissingTargetBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$1MissingTargetBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$AnnotationTargetAllowed.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$AnnotationTargetAllowed.class
index 16e68ec..618a430 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$AnnotationTargetAllowed.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation$AnnotationTargetAllowed.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.class
index baed0d1..6bba92e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.class
index 06cb074..f5b7fb2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.class
index e374cd8..5c54c9e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.class
index 82dbea8..25ed547 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.class
index 9aab150..d5d4da8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.class
index 8cbc800..188992e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.class
index 1bc94fd..8ce0876 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.class
index 8e811a3..32757cf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.class
index 313e00b..7428a91 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.class
index 87f11d9..cf5d1b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.class
index 0053855..65bc05a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.class
index b89f634..ea80adf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.class
index 374621a..778b32d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.class
index 43aaa03..3e65311 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.class
index 0c1e965..ea9a373 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression$1.class
index 3274673..2be537f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.class
index 2ed0a87..bfb618c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.class
index 668a3ab..65b328c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.class
index 17e5f38..e066d85 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.class
index b97f72b..9e19b2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.class
index e1c32fc..7c7efb8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration$1.class
index 0e930d6..2c4b11a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.class
index cfacd0c..4c1bc9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.class
index 7bffdb3..4220e20 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.class
index 608414f..5724337 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.class
index ecef693..c6fd62a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.class
index 4202b42..98f90bd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.class
index ea09063..2a7d21d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.class
index 928d898..1cffa8e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.class
index b30a03d..81fe4ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.class
index aa3d98a..d1ecd91 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.class
index 51058d1..bb9056b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.class
index e7df4af..e26b569 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.class
new file mode 100644
index 0000000..8be6f22
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.class
index ed586a2..54a1450 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$1.class
index 767e04d..5b2706b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$2.class
index 0c6e419..1623e2c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$3.class
index 8c2b541..e719bd4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$4.class
index 7cb0fff..196fe51 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.class
index 36dffdf..b1872ad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.class
index 2e9dbed..1e2ac03 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting$Stage.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting$Stage.class
index 5c26efc..82db6d3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting$Stage.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting$Stage.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting.class
index ab84584..eaa855e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable$IteratorForReporting.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.class
index 857d282..90b4b48 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.class
index 8c9dffa..f2b3c7e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.class
index 73c684e..df488f6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.class
index 2d9aeab..777f017 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.class
index a95a9aa..932e19d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.class
index f1e407c..cf5dba4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.class
index 570b5ec..de9b9e4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$1BridgeCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$1BridgeCollector.class
index 8816648..d476cd2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$1BridgeCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$1BridgeCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$VisibilityInspector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$VisibilityInspector.class
index 0714d40..a54251a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$VisibilityInspector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression$VisibilityInspector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.class
index 1931779..76b9fec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.class
index 26ba6fc..d8fcfcd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.class
index ebff79c..df4a8e4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.class
index 27e6762..8c16450 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.class
index 8df57ef..83ecc32 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.class
index 7891a5b..4e4b5f8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.class
index b674625..10f40ca 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.class
index 60f9f0e..1311982 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.class
index 4bc46ab..0312963 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.class
index 465d445..8c68cfd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.class
index 360d64d..eba2ad3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.class
index 72e37ce..120843f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.class
index 72a1fc8..713ac73 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.class
index 51eecbc..c4a57fb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.class
index fdf071a..c2bec01 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.class
index edd9ddd..6b6d7b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.class
index c43b95f..98b45a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.class
index 9354c22..b64d7ad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.class
index 27b524c..f82cd53 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.class
index 92c28b5..9a302d5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.class
index f7a2f73..039bb25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1LambdaTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1LambdaTypeBinding.class
index 0319668..b75c606 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1LambdaTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1LambdaTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1NotPertientToApplicability.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1NotPertientToApplicability.class
index e1db288..be616f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1NotPertientToApplicability.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1NotPertientToApplicability.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ResultsAnalyser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ResultsAnalyser.class
index 59a6c48..f259a38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ResultsAnalyser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ResultsAnalyser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ShapeComputer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ShapeComputer.class
index 2590123..5f9f4de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ShapeComputer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$1ShapeComputer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$CopyFailureException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$CopyFailureException.class
index 97ad5fc..6c7c294 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$CopyFailureException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression$CopyFailureException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.class
index c569472..450f306 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.class
index 22ee09a..4f6a80d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$1.class
new file mode 100644
index 0000000..82519ab
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$2.class
new file mode 100644
index 0000000..8ecf19c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.class
index 869bf6d..6e54bb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.class
index d19fbf0..cc028c2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.class
index d9fa5dc..ff7de2b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.class
index 7acf355..68ccc52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.class
index 445410b..c9b614a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$1.class
index 571ade6..599af30 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$2.class
index 61bced3..dc550da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.class
index 4d633c2..8594cc6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.class
index 10f8d04..0b5768b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.class
index 58d68d8..576a339 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration$1.class
new file mode 100644
index 0000000..6f4a83f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.class
new file mode 100644
index 0000000..7bdc80a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.class
new file mode 100644
index 0000000..2e85818
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.class
new file mode 100644
index 0000000..14ff90d
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.class
index e39ef21..36590a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.class
index b0057ae..2d6fca9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullAnnotationMatching.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullAnnotationMatching.class
index 85fcc93..0104222 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullAnnotationMatching.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullAnnotationMatching.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.class
index 9ac1bde..f69ead0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.class
index 52c4458..a0d7bb1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.class
index 7e84e63..9c72f6a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.class
new file mode 100644
index 0000000..774e181
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.class
index dfd7525..5656944 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.class
new file mode 100644
index 0000000..5df769a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.class
index 3c73053..a441e71 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.class
index 777fe3e..49638d8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.class
index 19fd7d0..a750cd4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.class
index 155424f..2803e69 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.class
new file mode 100644
index 0000000..5f1607b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression$1ValidityInspector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression$1ValidityInspector.class
new file mode 100644
index 0000000..a98b15b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression$1ValidityInspector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.class
index 7d33166..bfd8bfa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.class
index 919e149..456b8d5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.class
index 3e900ef..56ea76d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.class
index 90a0d2f..f70af42 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.class
index 99e5d46..8ab7132 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.class
index f99f4cb..91b7a15 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.class
index 7899ffc..a3bdb8a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$1.class
index a2d00a6..e315e09 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$2.class
index 02538ff..ba7c07c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.class
index d3dbac8..edef755 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.class
new file mode 100644
index 0000000..01769e9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.class
index c9edf92..ed34a11 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.class
index 824cff3..bb40b47 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.class
index 59f98cb..df63186 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.class
index 3e376d0..f945fab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$1.class
index d1d62ec..0a370e4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$2.class
index 1b75b86..a4b6048 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.class
index 165936c..4b1644f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.class
index d151368..3265bb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.class
index f449128..231b98b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.class
index 4fdf5d8..dc800bf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement$1StringSwitchCase.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement$1StringSwitchCase.class
index 93bde11..581c070 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement$1StringSwitchCase.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement$1StringSwitchCase.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.class
index 98ebe23..fe579e0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.class
index 70c14e7..0368029 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.class
index fa9b872..bd99816 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.class
index 8689256..1f2bb2e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.class
index 59b4d23..882150b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.class
index 1dc6ff7..7661d07 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.class
index e1ac81b..2a88766 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.class
index 3aff577..33aece4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationCollector.class
index bc73119..7e814fd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationPosition.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationPosition.class
index 8dd59fd..4c90a05 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationPosition.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference$AnnotationPosition.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.class
index 9a6d1bb..702ed9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.class
index d172df9..c2fb340 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.class
index 70060b7..352fee0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.class
new file mode 100644
index 0000000..2abf0ad
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.class
new file mode 100644
index 0000000..ba96568
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.class
index 3c6d30a..b7d0478 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.class
index 116bf41..09b2d8f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule$Service.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule$Service.class
new file mode 100644
index 0000000..8a7532d
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule$Service.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.class
new file mode 100644
index 0000000..11ca156
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory$1.class
index 835520b..f21c966 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.class
index abab86f..c47b822 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.class
index 74de4a6..9a2b9c6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247$1.class
new file mode 100644
index 0000000..357929c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.class
new file mode 100644
index 0000000..d7bb6c5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.class
new file mode 100644
index 0000000..59867b9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$1.class
new file mode 100644
index 0000000..84246b7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$2.class
new file mode 100644
index 0000000..efab325
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.class
new file mode 100644
index 0000000..80e4c66
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.class
index 06ed6c7..fb94abe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.class
index f65b68f..7b106ef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.class
index 607d657..11b4f6a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.class
index 993b5c9..b61a91a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$Classpath.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$Classpath.class
index c3795a0..9a47c38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$Classpath.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$Classpath.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathNormalizer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathNormalizer.class
index d26da05..e886abd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathNormalizer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathNormalizer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter.class
index b42487c..06c2955 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.class
index 4f003a7..ff85306 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$1.class
index a65a36e..3aeebff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$2.class
index 3a2ce55..2722018 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$3.class
index 409b02d..999d4d5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger$1.class
index b321989..72cedef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger.class
index c7fce11..efe82e1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$Logger.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$ResourceBundleFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$ResourceBundleFactory.class
index 1311952..7bcd3bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$ResourceBundleFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main$ResourceBundleFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.class
index 92a0411..f34f4e4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$1.class
new file mode 100644
index 0000000..f57f121
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$AddExport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$AddExport.class
new file mode 100644
index 0000000..9ad93ce
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder$AddExport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.class
new file mode 100644
index 0000000..3bba2f1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
index bd38ed9..7923d00 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2015 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -26,7 +26,7 @@
 #Format: compiler.name = word1 word2 word3
 compiler.name = Eclipse Compiler for Java(TM)
 #Format: compiler.version = (The place holders will be automatically filled. Do not remove or alter it)
-compiler.version = MARS_1007a0215, 3.10.0
+compiler.version = bundle_qualifier, bundle_version
 compiler.copyright = Copyright IBM Corp 2000, 2015. All rights reserved.
 
 ### progress
@@ -42,10 +42,13 @@
 compile.oneProblem = 1 problem ({0})
 compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
 compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
+compile.severalProblems = {0} problems ({1}, {2}, {3})
 compile.oneError = 1 error
 compile.severalErrors = {0} errors
 compile.oneWarning = 1 warning
 compile.severalWarnings = {0} warnings
+compile.oneInfo = 1 info
+compile.severalInfos = {0} info
 compile.oneClassFileGenerated = [1 .class file generated]
 compile.severalClassFilesGenerated = [{0} .class files generated]
 
@@ -57,8 +60,19 @@
 configure.duplicateCompliance = duplicate compliance setting specification: {0}
 configure.duplicateSource = duplicate source compliance setting specification: {0}
 configure.duplicateTarget = duplicate target compliance setting specification: {0}
-configure.source = source level should be comprised in between ''1.3'' and ''1.8'' (or ''5'', ''5.0'', ..., ''8'' or ''8.0''): {0}
+configure.unsupportedReleaseOption = option --release is supported only when run with JDK 9 or above
+configure.unsupportedWithRelease = option {0} is not supported when --release is used
+configure.unsupportedReleaseVersion = release version {0} is not supported
+configure.source = source level should be comprised in between ''1.3'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0''): {0}
+configure.invalidSystem = invalid location for system libraries: {0}
+configure.unsupportedOption = option {0} not supported at compliance level 9 and above
 configure.duplicateOutputPath = duplicate output path specification: {0}
+configure.duplicateModulePath = duplicate module path specification: {0}
+configure.duplicateModuleSourcepath = duplicate source module path specification: {0}
+configure.invalidModuleDescriptor = cannot open the module descriptor from {0}
+configure.invalidModuleOption = incorrectly formatted option: {0}
+configure.duplicateExport = can specify a package in a module only once with --add-export
+configure.OneOfModuleOrSourcePath = cannot specify both -source-path and --module-source-path
 configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
 configure.duplicateExtDirs = duplicate extdirs specification: {0}
 configure.duplicateSourcepath = duplicate sourcepath specification: {0}
@@ -66,7 +80,7 @@
 configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
 configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
 configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
-configure.targetJDK = target level should be comprised in between ''1.1'' and ''1.8'' (or ''5'', ''5.0'', ..., ''8'' or ''8.0'') or cldc1.1: {0}
+configure.targetJDK = target level should be comprised in between ''1.1'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0'') or cldc1.1: {0}
 configure.incompatibleTargetForSource = Target level ''{0}'' is incompatible with source level ''{1}''. A target level ''{1}'' or better is required
 configure.incompatibleTargetForGenericSource = Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.5'' or better is required
 configure.incompatibleComplianceForSource = Compliance level ''{0}'' is incompatible with source level ''{1}''. A compliance level ''{1}'' or better is required
@@ -79,6 +93,12 @@
 configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
 configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token
 
+configure.invalidInfoConfiguration = invalid info configuration: ''{0}''
+configure.invalidInfo = invalid info token: ''{0}''. Ignoring this info token and compiling
+configure.invalidInfoOption = invalid info option: ''{0}''. Must specify an info token
+
+configure.notOnModuleSourcePath = ''{0}'' does not belong to a module on the module source path
+
 ## configure.directoryNotExist = directory does not exist: {0}
 configure.unrecognizedOption = Unrecognized option : {0}
 configure.noClasspath = no classpath defined, using default directory instead
@@ -93,6 +113,7 @@
 configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
 configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
 configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
+configure.missingDestinationPath = destination path must be provided with module source path
 configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
 configure.unexpectedBracket = unexpected bracket: {0}
 configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
@@ -100,6 +121,8 @@
 configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
 configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
 configure.invalidClassName = invalid class name: {0}
+configure.invalidModuleName = invalid module name: {0}
+configure.packageConflict = The package {0} is accessible from more than one module: {1}, {2}
 configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath.
 configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
 configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
@@ -119,14 +142,17 @@
 ### requestor
 requestor.error = {0}. ERROR in {1}
 requestor.warning = {0}. WARNING in {1}
+requestor.info = {0}. INFO in {1}
 requestor.extraerror = {0}. ERROR:
 requestor.extrawarning = {0}. WARNING:
+requestor.extrainfo = {0}. INFO:
 requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
 requestor.noFileNameSpecified = (original file name is not available)
 
 ### EMACS STYLE
 output.emacs.error=error
 output.emacs.warning=warning
+output.emacs.info=info
 
 ### unit
 unit.more = File {0} is specified more than once
@@ -181,6 +207,30 @@
 \                       If multiple default encodings are specified, the last\n\
 \                       one will be used.\n\
 \ \n\
+\ Module compilation options:\n\
+\   These options are meaningful only in Java 9 environment or later.\n\
+\    --module-source-path <directories separated by {0}>\n\
+\                       specify where to find source files for multiple modules\n\
+\    -p --module-path <directories separated by {0}>\n\
+\                       specify where to find application modules\n\
+\    --processor-module-path <directories separated by {0}>\n\
+\                       specify module path where annotation processors\n\
+\                       can be found\n\
+\    --system <jdk>      Override location of system modules\n\
+\    --add-exports <module>/<package>=<other-module>(,<other-module>)*\n\
+\                       specify additional package exports clauses to the\n\
+\                       given modules\n\
+\    --add-reads <module>=<other-module>(,<other-module>)*\n\
+\                       specify additional modules to be considered as required\n\
+\                       by given modules\n\
+\    --add-modules  <module>(,<module>)*\n\
+\                       specify the additional module names that should be\n\
+\                       resolved to be root modules\n\
+\    --limit-modules <module>(,<module>)*\n\
+\                       specify the observable module names\n\
+\    --release <release>\n\
+\                       compile for a specific VM version\n\
+\ \n\
 \ Compliance options:\n\
 \    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
 \    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
@@ -188,8 +238,9 @@
 \    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
 \    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
 \    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
-\    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
-\    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
+\    -1.9 -9 -9.0       use 1.9 compliance (-source 1.9 -target 1.9)\n\
+\    -source <version>  set source level: 1.3 to 1.9 (or 6, 6.0, etc)\n\
+\    -target <version>  set classfile target: 1.1 to 1.9 (or 6, 6.0, etc)\n\
 \                       cldc1.1 can also be used to generate the StackMap\n\
 \                       attribute\n\
 \ \n\
@@ -210,11 +261,19 @@
 \    -err:-<warnings separated by ,>   disable specific warnings to be\n\
 \                                      reported as errors\n\
 \ \n\
-\ Setting warning or error options using properties file:\n\
-\    -properties <file>   set warnings/errors option based on the properties\n\
+\ Info options:\n\
+\    -info:<warnings separated by ,>    convert exactly the listed warnings\n\
+\                                      to be reported as infos\n\
+\    -info:+<warnings separated by ,>   enable additional warnings to be\n\
+\                                      reported as infos\n\
+\    -info:-<warnings separated by ,>   disable specific warnings to be\n\
+\                                      reported as infos\n\
+\ \n\
+\ Setting warning, error or info options using properties file:\n\
+\    -properties <file>   set warnings/errors/info option based on the properties\n\
 \                          file contents. This option can be used with -nowarn,\n\
-\                          -err:.. or -warn:.. options, but the last one on the\n\
-\                          command line sets the options to be used.\n\
+\                          -err:.., -info: or -warn:.. options, but the last one\n\
+\                          on the command line sets the options to be used.\n\
 \ \n\
 \ Debug options:\n\
 \    -g[:lines,vars,source] custom debug info\n\
@@ -288,7 +347,7 @@
 \ \n\
 \ Warning options:\n\
 \    -deprecation         + deprecation outside deprecated code\n\
-\    -nowarn -warn:none disable all warnings\n\
+\    -nowarn -warn:none disable all warnings and infos\n\
 \    -nowarn:[<directories separated by {0}>]\n\
 \                       specify directories from which optional problems should\n\
 \                       be ignored\n\
@@ -351,6 +410,7 @@
 \							methods\n\
 \      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
 \							modifier for missing javadoc comments warnings\n\
+\      module             + module related problems.\n\
 \      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
 \      noEffectAssign     + assignment without effect\n\
 \      null                 potential missing or redundant null check\n\
@@ -373,6 +433,7 @@
 \      paramAssign          assignment to a parameter\n\
 \      pkgDefaultMethod   + attempt to override package-default method\n\
 \      raw                + usage of raw type\n\
+\      removal            + deprecation marked for removal\n\
 \      resource           + (pot.) unsafe usage of resource of type Closeable\n\
 \      semicolon            unnecessary semicolon, empty statement\n\
 \      serial             + missing serialVersionUID\n\
@@ -382,7 +443,7 @@
 \      staticReceiver     + non-static reference to static member\n\
 \      super                overriding a method without making a super invocation\n\
 \      suppress           + enable @SuppressWarnings\n\
-\                           When used with -err:, it can also silent optional\n\
+\                           When used with -err:, it can also silence optional\n\
 \                           errors and warnings\n\
 \      switchDefault        switch statement lacking a default case\n\
 \      syncOverride         missing synchronized in synchr. method override\n\
@@ -393,6 +454,10 @@
 \      unavoidableGenericProblems + ignore unavoidable type safety problems\n\
 \                                   due to raw APIs\n\
 \      unchecked          + unchecked type operation\n\
+\      unlikelyCollectionMethodArgumentType\n\
+\                         + unlikely argument type for collection method\n\
+\                           declaring an Object parameter\n\
+\      unlikelyEqualsArgumentType unlikely argument type for method equals()\n\
 \      unnecessaryElse      unnecessary else clause\n\
 \      unqualifiedField     unqualified reference to field\n\
 \      unused               macro for unusedAllocation, unusedArgument,\n\
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.class
index c73e2df..370d788 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.class
index 4ea0cc0..bb99783 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.class
index b8fced7..5dee116 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.class
new file mode 100644
index 0000000..85f6f73
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.class
index 60bc6c9..db068cb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.class
index 0fe40db..ee56e6d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.class
index 518381d..81b8acf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.class
index a34c1c0..bd88916 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator$ZipFileProducer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator$ZipFileProducer.class
index cdabcd7..813b232 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator$ZipFileProducer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator$ZipFileProducer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.class
index e4a0997..ecf0be3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$1.class
index dc663d8..e6daa3c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$2.class
index eafadb0..8cdc71a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$BasicAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$BasicAnnotationWalker.class
index e5cf3fd..0b1f65d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$BasicAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$BasicAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$DispatchingAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$DispatchingAnnotationWalker.class
index 7ec8b24..46fc329 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$DispatchingAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$DispatchingAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$FieldAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$FieldAnnotationWalker.class
index 6b8f199..169c82f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$FieldAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$FieldAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$IMethodAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$IMethodAnnotationWalker.class
index 793fc2b..abf7105 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$IMethodAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$IMethodAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$MethodAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$MethodAnnotationWalker.class
index 8eb8c47..141d4a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$MethodAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$MethodAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SingleMarkerAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SingleMarkerAnnotation.class
index d88eda1..c33a46a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SingleMarkerAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SingleMarkerAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SuperTypesAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SuperTypesAnnotationWalker.class
index 8e9eae4..ae84953 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SuperTypesAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$SuperTypesAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$TypeParametersAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$TypeParametersAnnotationWalker.class
index 293b7c8..5205e1c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$TypeParametersAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider$TypeParametersAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.class
index bdcc82a..8499446 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.class
index 8f203c2..b1253e8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.class
index c48719a..3325952 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.class
index 8a14408..65c4329 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.class
index 5cb87bf..7b7a57f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.class
index fbf0179..7b0854e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.class
index aa55cab..5ea166c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.class
index 1418a69..9e37f25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.class
index c268f7d..f4a66e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ModuleReferenceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ModuleReferenceInfo.class
new file mode 100644
index 0000000..8ca5596
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ModuleReferenceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$PackageExportInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$PackageExportInfo.class
new file mode 100644
index 0000000..4ce53e4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$PackageExportInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ServiceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ServiceInfo.class
new file mode 100644
index 0000000..4a6f0ba
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo$ServiceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.class
new file mode 100644
index 0000000..83e2543
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker$1.class
index c9b9167..6fe83c4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.class
index b09a292..b6d4965 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.class
index 56c2410..3560827 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.class
index 2172d1c..cc40d85 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.class
index cba16de..813bd95 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.class
index 3c97918..2950973 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.class
index 287d8be..3783bfa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.class
index 1857d33..92c4d29 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.class
index b94653f..52ec4c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.class
index 6ea3934..642b2ff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.class
index b531993..3e7658c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.class
index 80e186e..97d86d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.class
index 98f8dbb..7d981d1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.class
index 1c6c740..4ef0a48 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.class
index e8f2606..060991a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.class
index f6361ef..c286760 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.class
index 54d999f..97161ff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.class
index d82691a..8cab3aa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.class
index cb158fe..a9ad0da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$ExceptionMarker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$ExceptionMarker.class
index 4832485..0335aa0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$ExceptionMarker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$ExceptionMarker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$FramePosition.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$FramePosition.class
index 420d3c3..c8598b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$FramePosition.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$FramePosition.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackDepthMarker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackDepthMarker.class
index cc5434c..6771ccd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackDepthMarker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackDepthMarker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackMarker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackMarker.class
index b103248..20c3b17 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackMarker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream$StackMarker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.class
index 82f77f0..6a58bff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.class
index 97ca14b..d43121f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.class
index d26ad26..ee73bb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.class
index 6a952ea..aa3e988 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.class
index 8fdf0f9..cc45a8c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.class
new file mode 100644
index 0000000..2378398
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.class
index f4d1406..6f7a38d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.class
index 654e73a..2e31846 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.class
index 6a8e806..e70487b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.class
new file mode 100644
index 0000000..516777d
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.class
index 0eab4ba..1576b1c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.class
index 9e248b9..927b4fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$1AutoModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$1AutoModule.class
new file mode 100644
index 0000000..34da4df
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$1AutoModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IModuleReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IModuleReference.class
new file mode 100644
index 0000000..e7fa9b6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IModuleReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IPackageExport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IPackageExport.class
new file mode 100644
index 0000000..3dcad70
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IPackageExport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IService.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IService.class
new file mode 100644
index 0000000..d27bbf5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule$IService.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.class
new file mode 100644
index 0000000..b783be1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$1.class
new file mode 100644
index 0000000..fdaff5b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$2.class
new file mode 100644
index 0000000..e860621
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$3.class
new file mode 100644
index 0000000..9295df6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$4.class
new file mode 100644
index 0000000..1a75f7b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy.class
new file mode 100644
index 0000000..bd8eaa3
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment$LookupStrategy.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.class
new file mode 100644
index 0000000..c9dc8d6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.class
new file mode 100644
index 0000000..185ea16
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.class
new file mode 100644
index 0000000..3e4bd9c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.class
index 1da117a..7c148f8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.class
index 0f86bc0..4e186e1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.class
new file mode 100644
index 0000000..4217e96
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker$1.class
index 90e26cb..4437793 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.class
index df18448..1ec7f25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddExports.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddExports.class
new file mode 100644
index 0000000..8f0a3f4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddExports.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddReads.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddReads.class
new file mode 100644
index 0000000..146e86a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$AddReads.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdateKind.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdateKind.class
new file mode 100644
index 0000000..f6df821
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdateKind.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdatesByKind.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdatesByKind.class
new file mode 100644
index 0000000..c4f1234
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule$UpdatesByKind.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.class
new file mode 100644
index 0000000..6be9f4f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.class
new file mode 100644
index 0000000..bc25ee1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.class
index 1c320e5..5f63b1f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.class
new file mode 100644
index 0000000..354b24a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.class
index 691c0d1..16c8658 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.class
index b7d8b77..28f6762 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.class
index db9df4b..a470c53 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.class
index e27811c..137a373 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.class
index 1966971..998a689 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.class
index 7746658..d30f402 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.class
index 9641e60..3003f2c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.class
index 507d363..d8b6e77 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.class
index f5a8a12..eec7c4e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.class
index fab2cc1..51d17c3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.class
index d513b6e..c5f0cc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.class
index d5c8110..45723cb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.class
index 4edb8ea..7764759 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.class
index b6388d7..7730471 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.class
index 149063a..fa08c11 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.class
index b7ae342..7804bc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.class
index cabc84a..0570d2a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.class
index 37405a8..2f0f323 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.class
index 6c1b4d6..004c76c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.class
index 48f63d4..72ef2d6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.class
index 5f22d93..ec4193e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.class
index 8576f5f..43a9b1d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.class
index 6878569..f4a667e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.class
index 95109ba..0536f2e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.class
index 6a0a8ac..8143cd9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.class
index ceef201..44ec245 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.class
index 265e885..e4106dc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.class
index 9de0593..e1ea4f4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$AnnotationMethodHolder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$AnnotationMethodHolder.class
index fdfe2a0..b958ffc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$AnnotationMethodHolder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$AnnotationMethodHolder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$MethodHolder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$MethodHolder.class
index 9d82a1a..22826dc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$MethodHolder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder$MethodHolder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.class
index 63025d7..968f45e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding$1.class
index ddccb75..6b8c7e8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.class
index b12446f..ec36da5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.class
index e513aa8..d3d0080 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding$AutomaticModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding$AutomaticModuleBinding.class
new file mode 100644
index 0000000..67d5bb9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding$AutomaticModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.class
new file mode 100644
index 0000000..85caa3b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus.class
index dec2de5..55db16e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.class
index 1159970..03e02b6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.class
index 9b844bc..f725967 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.class
index 80490f4..b24db82 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$1.class
index ffa7098..94b2050 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$ThreeSets.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$ThreeSets.class
index 715c45d..8336934 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$ThreeSets.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet$ThreeSets.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.class
index 489588e..c18787c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.class
index 0f9cc93..e525276 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18$1.class
index 2609365..f8e965e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.class
index 2d2ce85..ea099e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.class
index 77a55e5..c75fe62 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.class
index ffc5810..ac454a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.class
index 64ef935..e890f66 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.class
index 740fba1..31863be 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.class
index 12edc3d..3a04673 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.class
index 7b24e01..4695a5a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.class
index ad2d1ae..b1f36c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.class
index 02bbd8f..8bb327c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.class
index bd5dfe6..af1d56c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier$InheritedNonNullnessInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier$InheritedNonNullnessInfo.class
index 121eaa5..823217a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier$InheritedNonNullnessInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier$InheritedNonNullnessInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.class
index bb67fb0..3f3e145 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.class
index 5d7d2f6..a2db3b5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.class
index a572f3d..1e97160 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.class
index 6221037..beae5cb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$1.class
index 5f742ec..559a9b4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$2.class
index 0bba258..3033370 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$3.class
index 3fb6551..2867cdc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$InferenceOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$InferenceOperation.class
index e2135fd..038a830 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$InferenceOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$InferenceOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$SuspendedInferenceRecord.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$SuspendedInferenceRecord.class
index c8310de..ad4b664 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$SuspendedInferenceRecord.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18$SuspendedInferenceRecord.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.class
index 57b4c72..6d9ef48 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution$1.class
new file mode 100644
index 0000000..3b879ea
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.class
index 46b06fe..d4fa63b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.class
index c993e35..56cfde5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.class
index b6797c2..0cf9025 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite$EmptyWithAstNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite$EmptyWithAstNode.class
index 9f67ba0..519ce9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite$EmptyWithAstNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite$EmptyWithAstNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.class
index 3582ccb..78e0892 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.class
index 35e7ab8..b6fe7ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment$1.class
new file mode 100644
index 0000000..e3d0416
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.class
index 547f0a5..499128c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.class
index 4368d67..6c4c957 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.class
index 99f97bd..45c13f2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope$1.class
new file mode 100644
index 0000000..36015b6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.class
index 4047441..f99fbc1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.class
index 37cb6fd..edb8e69 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.class
index f1fe49d..b82cf39 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.class
index 4c06bb1..1f2d6ec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding$UnNamedModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding$UnNamedModule.class
new file mode 100644
index 0000000..63f65e6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding$UnNamedModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.class
new file mode 100644
index 0000000..82a747c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.class
index 48d3ebe..8dadfe3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.class
index 30b77dc..82030ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.class
index 126f143..a45a15f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.class
index c5f072f..a0f5c11 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$1.class
new file mode 100644
index 0000000..5f82449
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$2.class
new file mode 100644
index 0000000..27767b8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$MixedProvider.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$MixedProvider.class
new file mode 100644
index 0000000..c63e4a8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider$MixedProvider.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.class
new file mode 100644
index 0000000..c520076
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.class
index de3ac19..54c3e91 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding$LingeringTypeVariableEliminator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding$LingeringTypeVariableEliminator.class
index 7740a86..1b8faaa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding$LingeringTypeVariableEliminator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding$LingeringTypeVariableEliminator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.class
index f47aedd..60fdb38 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$1.class
index ed90ca1..421e020 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$2.class
index d60c41c..756f5b4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.class
index 216407d..7352096 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.class
index e5cd190..2a6daab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.class
index 811d454..e506455 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.class
index 8266392..4916366 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.class
index 68d396a..814892e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.class
index e135c3b..a928de4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.class
index a7247b4..6b526d2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.class
index 2442abb..af535e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.class
index 8c3f8f4..97dfe94 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.class
index a65d71d..1e27999 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.class
index b2c52cf..1b20349 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.class
index 574fe17..165c25e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$1.class
index f88dbdd..5730e7e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$2.class
index ea6b745..6b642a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.class
index 684194f..817736e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$1.class
index ebb654f..0077856 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$2.class
index c10ae01..77bc8ed 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$3.class
index ad26764..0a086f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.class
index f92ecc5..a3a4508 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$1.class
index cb0019b..d46be51 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$2.class
index 381e78e..1b02f2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$3.class
new file mode 100644
index 0000000..1c38c21
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$MethodClashException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$MethodClashException.class
index 43373f5..7e1d036 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$MethodClashException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$MethodClashException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$NullDefaultRange.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$NullDefaultRange.class
new file mode 100644
index 0000000..45dfe99
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$NullDefaultRange.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$Substitutor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$Substitutor.class
index 7ac2068..0b6e4cc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$Substitutor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope$Substitutor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.class
index 890c3e4..1fca480 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.class
index 852b224..ef13aac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.class
new file mode 100644
index 0000000..4c9bdf4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.class
index 0218d1d..d1b2d52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.class
new file mode 100644
index 0000000..afb39f4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.class
index 16ea85d..317ae26 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.class
index 3ffdfbb..d0b9549 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.class
index f353a39..1b386e1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding$1.class
index 788d511..406c6be 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.class
index 2669723..af44d68 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.class
index 38b70a3..ad988fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$BoundCheckStatus.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$BoundCheckStatus.class
index c7dd08e..eae81a3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$BoundCheckStatus.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$BoundCheckStatus.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$CloseMethodRecord.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$CloseMethodRecord.class
index cb00547..df4a175 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$CloseMethodRecord.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$CloseMethodRecord.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$DangerousMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$DangerousMethod.class
new file mode 100644
index 0000000..c3cb64f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants$DangerousMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.class
index addc490..fe7189e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.class
index 1250d83..9420151 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$InternalParameterizedTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$InternalParameterizedTypeBinding.class
deleted file mode 100644
index 606764a..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$InternalParameterizedTypeBinding.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$PTBKey.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$PTBKey.class
new file mode 100644
index 0000000..ad2e57f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes$PTBKey.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes.class
index e5670aa..b03a944 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem$HashedParameterizedTypes.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.class
index 07a928b..4b92389 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.class
index 8f76894..965f434 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.class
index d1b91bb..858b578 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.class
index e55d785..32dd260 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.class
index 44a428b..47fc4ee 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.class
index d4bc720..7d348e3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.class
index 87ff19f..70c6730 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.class
index 957d345..13c65a5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.class
index e386ca4..7226c02 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.class
index 7df6336..2de7863 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.class
index 4b327b0..481de62 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.class
index 9bc1699..4c70eff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.class
index a2cf58b..3d8eea8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.class
index 421c8a9..7122e9a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.class
index c25bea4..1d3838d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.class
index 07f93b2..f5521f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.class
index 8022912..5e52d65 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.class
new file mode 100644
index 0000000..5868dcb
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.class
new file mode 100644
index 0000000..b6cd321
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.class
index 1359faa..f782c60 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.class
index 5d0855b..5464b82 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.class
index 66c545d..3fee5bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.class
index cd5d6e2..d342f5b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.class
index 385d0d7..60c81b1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.class
new file mode 100644
index 0000000..01f17ae
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.class
new file mode 100644
index 0000000..3f8963c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.class
new file mode 100644
index 0000000..eeb2575
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.class
new file mode 100644
index 0000000..cf9cae1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.class
new file mode 100644
index 0000000..2ffe849
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.class
new file mode 100644
index 0000000..631a454
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.class
new file mode 100644
index 0000000..52d35de
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.class
index cb7a308..849517b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.class
index c01746b..6a25b23 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.class
new file mode 100644
index 0000000..5a204bf
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.class
index d3bf926..c0d9e0a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.class
new file mode 100644
index 0000000..a0aaea7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.class
index a69fab6..3337321 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.class
index 72fda8a..2b0879b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.class
index b5c93c7..437e3eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.class
index 7309971..1ee1850 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.class
index 691dfee..cf10aca 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1.class
index 2e3df31..8179799 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1MethodVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1MethodVisitor.class
index 3037c99..9ad3b6f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1MethodVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1MethodVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1TypeVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1TypeVisitor.class
index b0eae16..7e21aac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1TypeVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$1TypeVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$LocalTypeKind.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$LocalTypeKind.class
index 7001aec..1e941b2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$LocalTypeKind.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass$LocalTypeKind.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.class
index ee21f55..3013958 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$Goal.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$Goal.class
index 8871f42..51954e7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$Goal.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$Goal.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContext.class
new file mode 100644
index 0000000..7b6dbf8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$1.class
new file mode 100644
index 0000000..6b9fe5b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$2.class
new file mode 100644
index 0000000..4c6d96f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector.class
new file mode 100644
index 0000000..7374678
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$ScanContextDetector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardParser.class
index 2492df4..8b90d5c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardScanner.class
index ceb1fd5..371291a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass$VanguardScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.class
index bf6608e..61312db 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class
deleted file mode 100644
index 006afb0..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$PrimaryRepairInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$PrimaryRepairInfo.class
index 938f743..c017bf2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$PrimaryRepairInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$PrimaryRepairInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$RepairCandidate.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$RepairCandidate.class
index 13b29a5..f87a9d8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$RepairCandidate.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$RepairCandidate.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$SecondaryRepairInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$SecondaryRepairInfo.class
index d58ae53..0d7702b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$SecondaryRepairInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$SecondaryRepairInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$StateInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$StateInfo.class
index 3c3f6e1..5b1b49b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$StateInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser$StateInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.class
index e6f62b3..44f1e05 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream$Token.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream$Token.class
index 0ff7c63..31615d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream$Token.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream$Token.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.class
index b2f8ff9..48211ec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g
deleted file mode 100644
index b53cf56..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g
+++ /dev/null
@@ -1,3374 +0,0 @@
--- AspectJ Extension
--- Andy Clement, Nov 2007, Nov 2011, Jul 2013
--- previous versions, Adrian Colyer, Jim Hugunin
---main options
-%options ACTION, AN=JavaAction.java, GP=java,
-%options FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 ,
-%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE,
-
---error recovering options.....
--- ASPECTJ: INCLUDE THE COMMAS OR JIKESPG CAN GIVE AN ARRAYINDEXOUTOFBOUNDS EXCEPTION
-%options ERROR_MAPS,
-
---grammar understanding options
-%options first follow
-%options TRACE=FULL,
-%options VERBOSE,
-
-%options DEFERRED,
-%options NAMES=MAXIMUM,
-%options SCOPES,
-
---Usefull macros helping reading/writing semantic actions
-$Define
-$putCase
-/.    case $rule_number : if (DEBUG) { System.out.println("$rule_text"); }  //$NON-NLS-1$
-		   ./
-
-$break
-/.
-			break;
-./
-
-
-$readableName
-/.1#$rule_number#./
-$compliance
-/.2#$rule_number#./
-$recovery
-/.2#$rule_number# recovery./
-$recovery_template
-/.3#$rule_number#./
-$no_statements_recovery
-/.4#$rule_number# 1./
--- here it starts really ------------------------------------------
-$Terminals
-
-	Identifier
-
-	abstract assert boolean break byte case catch char class
-	continue const default do double else enum extends false final finally float
-	for goto if implements import instanceof int
-	interface long native new null package private
-	protected public return short static strictfp super switch
-	synchronized this throw throws transient true try void
-	volatile while
-
--- AspectJ Extension
-	aspect pointcut around before after declare privileged
--- End AspectJ Extension
-
-	IntegerLiteral
-	LongLiteral
-	FloatingPointLiteral
-	DoubleLiteral
-	CharacterLiteral
-	StringLiteral
-
-	PLUS_PLUS
-	MINUS_MINUS
-	EQUAL_EQUAL
-	LESS_EQUAL
-	GREATER_EQUAL
-	NOT_EQUAL
-	LEFT_SHIFT
-	RIGHT_SHIFT
-	UNSIGNED_RIGHT_SHIFT
-	PLUS_EQUAL
-	MINUS_EQUAL
-	MULTIPLY_EQUAL
-	DIVIDE_EQUAL
-	AND_EQUAL
-	OR_EQUAL
-	XOR_EQUAL
-	REMAINDER_EQUAL
-	LEFT_SHIFT_EQUAL
-	RIGHT_SHIFT_EQUAL
-	UNSIGNED_RIGHT_SHIFT_EQUAL
-	OR_OR
-	AND_AND
-	PLUS
-	MINUS
-	NOT
-	REMAINDER
-	XOR
-	AND
-	MULTIPLY
-	OR
-	TWIDDLE
-	DIVIDE
-	GREATER
-	LESS
-	LPAREN
-	RPAREN
-	LBRACE
-	RBRACE
-	LBRACKET
-	RBRACKET
-	SEMICOLON
-	QUESTION
-	COLON
-	COMMA
-	DOT
-	EQUAL
-	AT
-	ELLIPSIS
-	ARROW
-	COLON_COLON
-	BeginLambda
-	BeginIntersectionCast
-	BeginTypeArguments
-	ElidedSemicolonAndRightBrace
-	AT308
-	AT308DOTDOTDOT
-
---    BodyMarker
-
-$Alias
-
-	'::'   ::= COLON_COLON
-	'->'   ::= ARROW
-	'++'   ::= PLUS_PLUS
-	'--'   ::= MINUS_MINUS
-	'=='   ::= EQUAL_EQUAL
-	'<='   ::= LESS_EQUAL
-	'>='   ::= GREATER_EQUAL
-	'!='   ::= NOT_EQUAL
-	'<<'   ::= LEFT_SHIFT
-	'>>'   ::= RIGHT_SHIFT
-	'>>>'  ::= UNSIGNED_RIGHT_SHIFT
-	'+='   ::= PLUS_EQUAL
-	'-='   ::= MINUS_EQUAL
-	'*='   ::= MULTIPLY_EQUAL
-	'/='   ::= DIVIDE_EQUAL
-	'&='   ::= AND_EQUAL
-	'|='   ::= OR_EQUAL
-	'^='   ::= XOR_EQUAL
-	'%='   ::= REMAINDER_EQUAL
-	'<<='  ::= LEFT_SHIFT_EQUAL
-	'>>='  ::= RIGHT_SHIFT_EQUAL
-	'>>>=' ::= UNSIGNED_RIGHT_SHIFT_EQUAL
-	'||'   ::= OR_OR
-	'&&'   ::= AND_AND
-	'+'    ::= PLUS
-	'-'    ::= MINUS
-	'!'    ::= NOT
-	'%'    ::= REMAINDER
-	'^'    ::= XOR
-	'&'    ::= AND
-	'*'    ::= MULTIPLY
-	'|'    ::= OR
-	'~'    ::= TWIDDLE
-	'/'    ::= DIVIDE
-	'>'    ::= GREATER
-	'<'    ::= LESS
-	'('    ::= LPAREN
-	')'    ::= RPAREN
-	'{'    ::= LBRACE
-	'}'    ::= RBRACE
-	'['    ::= LBRACKET
-	']'    ::= RBRACKET
-	';'    ::= SEMICOLON
-	'?'    ::= QUESTION
-	':'    ::= COLON
-	','    ::= COMMA
-	'.'    ::= DOT
-	'='    ::= EQUAL
-	'@'	   ::= AT
-	'...'  ::= ELLIPSIS
-	'@308' ::= AT308
-	'@308...' ::= AT308DOTDOTDOT
-
-$Start
-	Goal
-
-$Rules
-
-/.// This method is part of an automatic generation : do NOT edit-modify
-protected void consumeRule(int act) {
-  switch ( act ) {
-./
-
-Goal ::= '++' CompilationUnit
-Goal ::= '--' MethodBody
--- Initializer
-Goal ::= '>>' StaticInitializer
-Goal ::= '>>' Initializer
--- error recovery
--- Modifiersopt is used to properly consume a header and exit the rule reduction at the end of the parse() method
-Goal ::= '>>>' Header1 Modifiersopt
-Goal ::= '!' Header2 Modifiersopt
-Goal ::= '*' BlockStatements
-Goal ::= '*' CatchHeader
--- JDOM
-Goal ::= '&&' FieldDeclaration
-Goal ::= '||' ImportDeclaration
-Goal ::= '?' PackageDeclaration
-Goal ::= '+' TypeDeclaration
-Goal ::= '/' GenericMethodDeclaration
-Goal ::= '&' ClassBodyDeclarations
--- code snippet
-Goal ::= '%' Expression
-Goal ::= '%' ArrayInitializer
--- completion parser
-Goal ::= '~' BlockStatementsopt
-Goal ::= '{' BlockStatementopt
--- source type converter
-Goal ::= '||' MemberValue
--- syntax diagnosis
-Goal ::= '?' AnnotationTypeMemberDeclaration
--- JSR 335 Reconnaissance missions.
-Goal ::= '->' ParenthesizedLambdaParameterList
-Goal ::= '(' ParenthesizedCastNameAndBounds
-Goal ::= '<' ReferenceExpressionTypeArgumentsAndTrunk
--- JSR 308 Reconnaissance mission.
-Goal ::= '@' TypeAnnotations
-/:$readableName Goal:/
-
-Literal -> IntegerLiteral
-Literal -> LongLiteral
-Literal -> FloatingPointLiteral
-Literal -> DoubleLiteral
-Literal -> CharacterLiteral
-Literal -> StringLiteral
-Literal -> null
-Literal -> BooleanLiteral
-/:$readableName Literal:/
-BooleanLiteral -> true
-BooleanLiteral -> false
-/:$readableName BooleanLiteral:/
-
--- AspectJ Extension
--- we do this because AspectJ keywords are 'pseudo' keywords
--- although they are recognised by the scanner as tokens, there
--- are many places where they are still allowed as identifiers
--- for maximum compatibility with existing Java programs.
--- JavaIdentifer replaces Identifier at many points in the productions
--- that follow, and allows any Java identifier or an AspectJ 'pseudo'
--- keyword to appear at those points in the grammar.
-JavaIdentifier -> 'Identifier'
-JavaIdentifier -> AjSimpleName
-/:$readableName identifier:/
-
-JavaIdentifierNoAround -> 'Identifier'
-JavaIdentifierNoAround -> AjSimpleNameNoAround
-/:$readableName identifier:/
--- End AspectJ Extension
-
-Type ::= PrimitiveType
-/.$putCase consumePrimitiveType(); $break ./
-Type -> ReferenceType
-/:$readableName Type:/
-
-PrimitiveType -> TypeAnnotationsopt NumericType
-/:$readableName PrimitiveType:/
-NumericType -> IntegralType
-NumericType -> FloatingPointType
-/:$readableName NumericType:/
-
-PrimitiveType -> TypeAnnotationsopt 'boolean'
-PrimitiveType -> TypeAnnotationsopt 'void'
-IntegralType -> 'byte'
-IntegralType -> 'short'
-IntegralType -> 'int'
-IntegralType -> 'long'
-IntegralType -> 'char'
-/:$readableName IntegralType:/
-FloatingPointType -> 'float'
-FloatingPointType -> 'double'
-/:$readableName FloatingPointType:/
-
-ReferenceType ::= ClassOrInterfaceType
-/.$putCase consumeReferenceType(); $break ./
-ReferenceType -> ArrayType
-/:$readableName ReferenceType:/
-
----------------------------------------------------------------
--- 1.5 feature
----------------------------------------------------------------
-ClassOrInterfaceType -> ClassOrInterface
-ClassOrInterfaceType -> GenericType
-/:$readableName Type:/
-
-ClassOrInterface ::= Name
-/.$putCase consumeClassOrInterfaceName(); $break ./
-ClassOrInterface ::= GenericType '.' Name
-/.$putCase consumeClassOrInterface(); $break ./
-/:$readableName Type:/
-
-GenericType ::= ClassOrInterface TypeArguments
-/.$putCase consumeGenericType(); $break ./
-/:$readableName GenericType:/
-
-GenericType ::= ClassOrInterface '<' '>'
-/.$putCase consumeGenericTypeWithDiamond(); $break ./
-/:$readableName GenericType:/
-/:$compliance 1.7:/
-
---
--- These rules have been rewritten to avoid some conflicts introduced
--- by adding the 1.1 features
---
--- ArrayType ::= PrimitiveType '[' ']'
--- ArrayType ::= Name '[' ']'
--- ArrayType ::= ArrayType '[' ']'
---
-
-ArrayTypeWithTypeArgumentsName ::= GenericType '.' Name
-/.$putCase consumeArrayTypeWithTypeArgumentsName(); $break ./
-/:$readableName ArrayTypeWithTypeArgumentsName:/
-
-ArrayType ::= PrimitiveType Dims
-/.$putCase consumePrimitiveArrayType(); $break ./
-ArrayType ::= Name Dims
-/.$putCase consumeNameArrayType(); $break ./
-ArrayType ::= ArrayTypeWithTypeArgumentsName Dims
-/.$putCase consumeGenericTypeNameArrayType(); $break ./
-ArrayType ::= GenericType Dims
-/.$putCase consumeGenericTypeArrayType(); $break ./
-/:$readableName ArrayType:/
-
-ClassType -> ClassOrInterfaceType
-/:$readableName ClassType:/
-
---------------------------------------------------------------
---------------------------------------------------------------
-
--- Was this in the old version (37 compiler):
--- START
--- Name -> SimpleName
--- Name -> QualifiedName
--- /:$readableName Name:/
--- /:$recovery_template Identifier:/
---
--- SimpleName -> 'Identifier'
--- /:$readableName SimpleName:/
---
--- QualifiedName ::= Name '.' SimpleName
--- /.$putCase consumeQualifiedName(); $break ./
--- /:$readableName QualifiedName:/
--- END
-
--- AspectJ Extension
--- see earlier comments for why we do this... its all about
--- treating aspectj keywords as pseudo keywords for maximum
--- compatibility with existing Java applications.
-NameOrAj -> AjName
-NameOrAj -> Name
-/:$readableName name:/
-
-SimpleNameOrAj -> AjSimpleName
-SimpleNameOrAj -> SimpleName
-/:$readableName name:/
-
--- the addition of the consumeZero calls here is what has caused the jikespg parser to crash at the end?!?
-AjName ::= AjSimpleName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-AjName ::= AjQualifiedName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-/:$readableName name:/
-
-AjSimpleName -> AjSimpleNameNoAround
-/:$readableName identifer:/
-
-AjSimpleNameNoAround -> 'aspect'
-AjSimpleNameNoAround -> 'privileged'
-AjSimpleNameNoAround -> 'pointcut'
-AjSimpleName -> 'around'
-AjSimpleNameNoAround -> 'before'
-AjSimpleNameNoAround -> 'after'
-AjSimpleNameNoAround -> 'declare'
-/:$readableName identifier (aspect keywords permitted):/
-
-AjQualifiedName ::= AjName '.' SimpleNameOrAj
-/.$putCase consumeQualifiedName(); $break ./
-/:$readableName qualified name:/
-
-UnannotatableNameOrAj -> AjName
-UnannotatableNameOrAj -> UnannotatableName
-/:$readableName name:/
-
--- End AspectJ Extension
-
-
-Name ::= SimpleName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-Name -> TypeAnnotations SimpleName
-/:$compliance 1.8:/
-Name -> QualifiedName
-/:$readableName Name:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension (JavaIdentifier was Identifier)
-
-SimpleName -> 'Identifier'
-/:$readableName SimpleName:/
-
-UnannotatableName -> SimpleName
-UnannotatableName ::= UnannotatableName '.' SimpleName
-/.$putCase consumeUnannotatableQualifiedName(); $break ./
-/:$readableName UnannotatableQualifiedName:/
-
-QualifiedName ::= Name '.' JavaIdentifier -- AspectJ Extension (JavaIdentifier was SimpleName)
-/.$putCase consumeQualifiedName(false); $break ./
-QualifiedName ::= Name '.' TypeAnnotations JavaIdentifier -- AspectJ Extension (JavaIdentifier was SimpleName)
-/.$putCase consumeQualifiedName(true); $break ./
-/:$compliance 1.8:/
-/:$readableName QualifiedName:/
-
-TypeAnnotationsopt ::= $empty
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-TypeAnnotationsopt -> TypeAnnotations
-/:$compliance 1.8:/
-/:$readableName TypeAnnotationsopt:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-TypeAnnotations ::= TypeAnnotations0
-/:$readableName TypeAnnotations:/
-
-TypeAnnotations0 -> TypeAnnotation
-/:$compliance 1.8:/
-TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation
-/. $putCase consumeOneMoreTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-/:$readableName TypeAnnotations:/
-
-TypeAnnotation ::= NormalTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-TypeAnnotation ::= MarkerTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-TypeAnnotation ::= SingleMemberTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-/:$readableName TypeAnnotation:/
-
-TypeAnnotationName ::= @308 UnannotatableName
-/.$putCase consumeAnnotationName() ; $break ./
-/:$readableName AnnotationName:/
-/:$compliance 1.8:/
-/:$recovery_template @ Identifier:/
-NormalTypeAnnotation ::= TypeAnnotationName '(' MemberValuePairsopt ')'
-/.$putCase consumeNormalAnnotation(true) ; $break ./
-/:$readableName NormalAnnotation:/
-/:$compliance 1.8:/
-MarkerTypeAnnotation ::= TypeAnnotationName
-/.$putCase consumeMarkerAnnotation(true) ; $break ./
-/:$readableName MarkerAnnotation:/
-/:$compliance 1.8:/
-SingleMemberTypeAnnotation ::= TypeAnnotationName '(' SingleMemberAnnotationMemberValue ')'
-/.$putCase consumeSingleMemberAnnotation(true) ; $break ./
-/:$readableName SingleMemberAnnotation:/
-/:$compliance 1.8:/
-
-RejectTypeAnnotations ::= $empty
-/.$putCase consumeNonTypeUseName(); $break ./
-/:$readableName RejectTypeAnnotations:/
-
-PushZeroTypeAnnotations ::= $empty
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-/:$readableName ZeroTypeAnnotations:/
-
-VariableDeclaratorIdOrThis ::= 'this'
-/.$putCase consumeExplicitThisParameter(false); $break ./
-/:$compliance 1.8:/
-VariableDeclaratorIdOrThis ::= UnannotatableName '.' 'this'
-/.$putCase consumeExplicitThisParameter(true); $break ./
-/:$compliance 1.8:/
-VariableDeclaratorIdOrThis ::= VariableDeclaratorId
-/.$putCase consumeVariableDeclaratorIdParameter(); $break ./
-/:$readableName VariableDeclaratorId:/
-
-CompilationUnit ::= EnterCompilationUnit InternalCompilationUnit
-/.$putCase consumeCompilationUnit(); $break ./
-/:$readableName CompilationUnit:/
-
-InternalCompilationUnit ::= PackageDeclaration
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= PackageDeclaration TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= ImportDeclarations ReduceImports
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= ImportDeclarations ReduceImports TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= $empty
-/.$putCase consumeEmptyInternalCompilationUnit(); $break ./
-/:$readableName CompilationUnit:/
-
-ReduceImports ::= $empty
-/.$putCase consumeReduceImports(); $break ./
-/:$readableName ReduceImports:/
-
-EnterCompilationUnit ::= $empty
-/.$putCase consumeEnterCompilationUnit(); $break ./
-/:$readableName EnterCompilationUnit:/
-
-Header -> ImportDeclaration
-Header -> PackageDeclaration
-Header -> ClassHeader
-Header -> InterfaceHeader
-Header -> EnumHeader
-Header -> AnnotationTypeDeclarationHeader
-Header -> StaticInitializer
-Header -> RecoveryMethodHeader
-Header -> FieldDeclaration
-Header -> AllocationHeader
-Header -> ArrayCreationHeader
-/:$readableName Header:/
-
-Header1 -> Header
-Header1 -> ConstructorHeader
-/:$readableName Header1:/
-
-Header2 -> Header
-Header2 -> EnumConstantHeader
-/:$readableName Header2:/
-
-CatchHeader ::= 'catch' '(' CatchFormalParameter ')' '{'
-/.$putCase consumeCatchHeader(); $break ./
-/:$readableName CatchHeader:/
-
-ImportDeclarations -> ImportDeclaration
-ImportDeclarations ::= ImportDeclarations ImportDeclaration
-/.$putCase consumeImportDeclarations(); $break ./
-/:$readableName ImportDeclarations:/
-
-TypeDeclarations -> TypeDeclaration
-TypeDeclarations ::= TypeDeclarations TypeDeclaration
-/.$putCase consumeTypeDeclarations(); $break ./
-/:$readableName TypeDeclarations:/
-
-PackageDeclaration ::= PackageDeclarationName ';'
-/.$putCase consumePackageDeclaration(); $break ./
-/:$readableName PackageDeclaration:/
-
-PackageDeclarationName ::= Modifiers 'package' PushRealModifiers Name RejectTypeAnnotations
-/.$putCase consumePackageDeclarationNameWithModifiers(); $break ./
-/:$readableName PackageDeclarationName:/
-/:$compliance 1.5:/
-
-PackageDeclarationName ::= PackageComment 'package' Name RejectTypeAnnotations
-/.$putCase consumePackageDeclarationName(); $break ./
-/:$readableName PackageDeclarationName:/
-
-PackageComment ::= $empty
-/.$putCase consumePackageComment(); $break ./
-/:$readableName PackageComment:/
-
-ImportDeclaration -> SingleTypeImportDeclaration
-ImportDeclaration -> TypeImportOnDemandDeclaration
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-ImportDeclaration -> SingleStaticImportDeclaration
-ImportDeclaration -> StaticImportOnDemandDeclaration
-/:$readableName ImportDeclaration:/
-
-SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName SingleTypeImportDeclaration:/
-
-SingleTypeImportDeclarationName ::= 'import' Name RejectTypeAnnotations
-/.$putCase consumeSingleTypeImportDeclarationName(); $break ./
-/:$readableName SingleTypeImportDeclarationName:/
-
-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName TypeImportOnDemandDeclaration:/
-
-TypeImportOnDemandDeclarationName ::= 'import' Name '.' RejectTypeAnnotations '*'
-/.$putCase consumeTypeImportOnDemandDeclarationName(); $break ./
-/:$readableName TypeImportOnDemandDeclarationName:/
-
-TypeDeclaration -> ClassDeclaration
-TypeDeclaration -> InterfaceDeclaration
--- this declaration in part of a list od declaration and we will
--- use and optimized list length calculation process
--- thus we decrement the number while it will be incremend.....
-TypeDeclaration ::= ';'
-/. $putCase consumeEmptyTypeDeclaration(); $break ./
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-TypeDeclaration -> EnumDeclaration
-TypeDeclaration -> AnnotationTypeDeclaration
-/:$readableName TypeDeclaration:/
-
---18.7 Only in the LALR(1) Grammar
-
-Modifiers -> Modifier
-Modifiers ::= Modifiers Modifier
-/.$putCase consumeModifiers2(); $break ./
-/:$readableName Modifiers:/
-
--- AspectJ Extension, introduced SimpleModifier to avoid shift/reduce conflict with PseudoTokens
-SimpleModifier -> 'public'
-SimpleModifier -> 'protected'
-SimpleModifier -> 'private'
-SimpleModifier -> 'static'
-SimpleModifier -> 'abstract'
-SimpleModifier -> 'final'
-SimpleModifier -> 'native'
-SimpleModifier -> 'synchronized'
-SimpleModifier -> 'transient'
-SimpleModifier -> 'volatile'
-SimpleModifier -> 'strictfp'
-/:$readableName Modifiers:/
--- End AspectJ Extension, for LALR(1)
-Modifier -> SimpleModifier
-Modifier ::= Annotation
-/.$putCase consumeAnnotationAsModifier(); $break ./
-/:$readableName Modifier:/
-
--- AspectJ Extensions - main block
-Header -> DeclareDeclaration
-Header -> InterTypeMethodDeclaration
-Header -> InterTypeFieldDeclaration
-Header -> PointcutDeclaration
-Header -> BasicAdviceDeclaration
-Header -> AroundDeclaration
-
-TypeDeclaration -> AspectDeclaration
-Header -> AspectDeclaration
-
-ClassMemberDeclaration -> AspectDeclaration
-InterfaceMemberDeclaration -> AspectDeclaration
-
-
-ClassMemberDeclaration -> PointcutDeclaration
-InterfaceMemberDeclaration -> PointcutDeclaration
-
--- everthing else is only visible inside an aspect
-AspectDeclaration ::= AspectHeader AspectBody
-/.$putCase consumeAspectDeclaration(); $break ./
-/:$readableName declaration:/
--- shortened readable name above works better in error recovery situations
-
-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt AspectHeaderRest
-/.$putCase consumeAspectHeader(); $break ./
-/:$readableName aspect header:/
-
-AspectHeaderName -> AspectHeaderName1
-/:$readableName aspect header:/
-
-AspectHeaderName -> AspectHeaderName2
-/:$readableName aspect header:/
-
-AspectHeaderName ::= AspectHeaderName1 TypeParameters
-/.$putCase consumeAspectHeaderNameWithTypeParameters(false); $break ./
-
--- (pr235505)
-AspectHeaderName ::= AspectHeaderName2 TypeParameters
-/.$putCase consumeAspectHeaderNameWithTypeParameters(true); $break ./
-
-AspectHeaderName1 ::= Modifiersopt 'aspect' 'Identifier'
-/.$putCase consumeAspectHeaderName(false); $break ./
-/:$readableName aspect declaration:/
-
-AspectHeaderName2 ::= Modifiersopt 'privileged' Modifiersopt  'aspect' 'Identifier'
-/.$putCase consumeAspectHeaderName(true); $break ./
-/:$readableName privileged aspect declaration:/
-
-AspectHeaderRest ::= $empty
-
---[dominates TypePattern] [persingleton() | percflow(PCD) | perthis(PCD) | pertarget(PCD)]
-AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens
-/.$putCase consumeAspectHeaderRest(); $break ./
-/:$readableName per-clause:/
-
-AspectHeaderRestStart ::= 'Identifier'
-/.$putCase consumePseudoTokenIdentifier(); $break ./
-/:$readableName per-clause:/
-
-AspectBody ::= '{' AspectBodyDeclarationsopt '}'
-/:$readableName body:/
-
-AspectBodyDeclarations ::= AspectBodyDeclaration
-AspectBodyDeclarations ::= AspectBodyDeclarations AspectBodyDeclaration
-/.$putCase consumeClassBodyDeclarations(); $break ./
-/:$readableName member declaration:/
-
-AspectBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./
-/:$readableName empty aspect body:/
-
--- ??? why is NestedType here
-AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations
-/.$putCase consumeClassBodyDeclarationsopt(); $break ./
-
-
-AspectBodyDeclaration ::= ClassBodyDeclarationNoAroundMethod
-/.$putCase consumeClassBodyDeclarationInAspect(); $break ./
-/:$readableName aspect member declaration:/
-
---*****************************************
--- these rules are a copy of ClassBodyDeclaration rules, going down the member route until
--- we hit method declarations, at which point we disallow a method called around.
---*****************************************
-
-ClassBodyDeclarationNoAroundMethod -> ClassMemberDeclarationNoAroundMethod
-ClassBodyDeclarationNoAroundMethod -> StaticInitializer
-ClassBodyDeclarationNoAroundMethod -> ConstructorDeclaration
---1.1 feature
-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName ClassBodyDeclarationNoAroundMethod:/
-
-ClassMemberDeclarationNoAroundMethod -> PointcutDeclaration
-ClassMemberDeclarationNoAroundMethod -> AspectDeclaration
-ClassMemberDeclarationNoAroundMethod -> FieldDeclaration
-ClassMemberDeclarationNoAroundMethod -> MethodDeclarationNoAround
---1.1 feature
-ClassMemberDeclarationNoAroundMethod -> ClassDeclaration
---1.1 feature
-ClassMemberDeclarationNoAroundMethod -> InterfaceDeclaration
-ClassMemberDeclarationNoAroundMethod -> IntertypeClassDeclaration
--- 1.5 feature
-ClassMemberDeclarationNoAroundMethod -> EnumDeclaration
-ClassMemberDeclarationNoAroundMethod -> AnnotationTypeDeclaration
-/:$readableName ClassMemberDeclaration:/
-
--- Empty declarations are not valid Java ClassMemberDeclarations.
--- However, since the current (2/14/97) Java compiler accepts them
--- (in fact, some of the official tests contain this erroneous
--- syntax)
-ClassMemberDeclarationNoAroundMethod ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break./
-
-MethodDeclarationNoAround -> AbstractMethodDeclarationNoAround
-MethodDeclarationNoAround ::= MethodHeaderNoAround MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeMethodDeclaration(true,false);  $break ./
-/:$readableName MethodDeclarationNoAround:/
-
-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround ';'
-/.$putCase // set to false to consume a method without body
-  consumeMethodDeclaration(false,false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type JavaIdentifierNoAround '('
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround '('
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
---*****************************************
--- end copy of ClassBodyDeclaration rules *
---*****************************************
-
--- pointcuts and advice
-
-PointcutDeclaration ::= PointcutHeader FormalParameterListopt MethodHeaderRightParen ';'
-/.$putCase consumeEmptyPointcutDeclaration(); $break ./
-/:$readableName pointcut declaration:/
-
-PointcutDeclaration ::= PointcutHeader FormalParameterListopt MethodHeaderRightParen ':' PseudoTokens  ';'
-/.$putCase consumePointcutDeclaration(); $break ./
-/:$readableName pointcut declaration:/
-
-PointcutHeader ::= Modifiersopt 'pointcut'  JavaIdentifier '('
-/.$putCase consumePointcutHeader(); $break ./
-/:$readableName pointcut declaration:/
-
-AspectBodyDeclaration -> AroundDeclaration
-AspectBodyDeclaration -> BasicAdviceDeclaration
-
-AroundDeclaration ::= AroundHeader MethodBody
-/.$putCase consumeAroundDeclaration(); $break ./
-/:$readableName around advice:/
-
-AroundHeader ::= AroundHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeAroundHeader(); $break ./
-/:$readableName around advice header:/
-
-
--- no modifiers are actually allowed on around, but the grammar is happier this way
-AroundHeaderName ::= Modifiersopt Type  'around' '('
-/.$putCase consumeAroundHeaderName(); $break ./
-/:$readableName [modifiers] <return-type> around ( :/
-
--- Recovery rule for around with no return (pr64222)
-AroundHeaderName ::= Modifiersopt 'around' '('
-/.$putCase consumeAroundHeaderNameMissingReturnType(); $break ./
-/:$readableName [modifiers] around (:/
-
-BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody
-/.$putCase consumeBasicAdviceDeclaration(); $break ./
-/:$readableName AdviceDeclaration:/
-
-
-BasicAdviceHeader -> BeforeAdviceHeader
-BasicAdviceHeader -> AfterAdviceHeader
-/:$readableName advice header:/
-
-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeBasicAdviceHeader(); $break ./
-/:$readableName AdviceHeader:/
-
-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt MethodHeaderRightParen ExtraParamopt MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeBasicAdviceHeader(); $break ./
-/:$readableName AdviceHeader:/
-
-BeforeAdviceHeaderName ::= Modifiersopt 'before' '('
-/.$putCase consumeBasicAdviceHeaderName(false); $break ./
-/:$readableName AdviceHeaderName:/
-
-AfterAdviceHeaderName ::= Modifiersopt 'after' '('
-/.$putCase consumeBasicAdviceHeaderName(true); $break ./
-/:$readableName AdviceHeaderName:/
-
-ExtraParamopt ::= 'Identifier' '(' FormalParameter ')'
-/.$putCase consumeExtraParameterWithFormal(); $break ./
-/:$readableName ExtraParam:/
-
-ExtraParamopt ::= 'Identifier' '(' ')'
-/.$putCase consumeExtraParameterNoFormal(); $break ./
-/:$readableName ExtraParam:/
-
--- deprecated, but were probably stuck with it now
-ExtraParamopt ::= 'Identifier'
-/.$putCase consumeExtraParameterNoFormal(); $break ./
-/:$readableName ExtraParam:/
-
-ExtraParamopt ::= $empty
-
-
--- intertype declarations
-
-OnType ::= JavaIdentifier
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-OnType ::= OnType '.' JavaIdentifier
-/.$putCase consumeZeroTypeAnnotations(); consumeQualifiedName(); $break ./
-/:$readableName QualifiedName:/
-
-AspectBodyDeclaration -> InterTypeMethodDeclaration
-AspectBodyDeclaration -> InterTypeConstructorDeclaration
-AspectBodyDeclaration -> InterTypeFieldDeclaration
-
-InterTypeMethodDeclaration -> AbstractInterTypeMethodDeclaration
-InterTypeMethodDeclaration ::= InterTypeMethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeInterTypeMethodDeclaration(true);  $break ./
-/:$readableName inter-type method declaration:/
-
-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeInterTypeMethodHeader(); $break ./
-/:$readableName inter-type method declaration header:/
-
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(false,false); $break ./
-
--- Recovery Rule
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' '*' '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("*"); $break ./
-
--- Recovery Rule
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '+' '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("+"); $break ./
-
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType TypeParametersAsReference '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(false,true); $break ./
-/:$readableName inter-type method declaration header:/
-
-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(true,false); $break ./
-
-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType TypeParametersAsReference '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(true,true); $break ./
-
-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader ';'
-/.$putCase // set to false to consume a method without body
-  consumeInterTypeMethodDeclaration(false); $break ./
-/:$readableName abstract inter-type method declaration:/
-
-TypeParametersAsReference ::= TypeParameters
-/.$putCase convertTypeParametersToSingleTypeReferences(); $break ./
-/:$readableName type parameter list:/
-
-InterTypeConstructorDeclaration ::= InterTypeConstructorHeader MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeInterTypeConstructorDeclaration();  $break ./
-/:$readableName inter-type constructor declaration:/
-
-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt
-/.$putCase consumeInterTypeConstructorHeader(); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- using Name instead of OnType to make jikespg happier
-InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(false,false); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- Recovery Rule
-InterTypeConstructorHeaderName ::= Modifiersopt Name '.' '*' '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("*"); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- Recovery Rule
-InterTypeConstructorHeaderName ::= Modifiersopt Name '+' '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("+"); $break ./
-/:$readableName inter-type constructor declaration header:/
-
-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(true,false); $break ./
-
-InterTypeConstructorHeaderName ::= Modifiersopt GenericType '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(false,true); $break ./
-
-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(true,true); $break ./
-
-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody ';'
-/.$putCase consumeInterTypeFieldDeclaration(); $break ./
-/:$readableName inter-type field declaration:/
-
-InterTypeFieldHeader ::= Modifiersopt Type OnType '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeader(false); $break ./
-/:$readableName inter-type field declaration header:/
-
--- Recovery Rule
-InterTypeFieldHeader ::= Modifiersopt Type OnType '.' '*' '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("*"); $break ./
-/:$readableName inter-type field declaration header:/
-
--- Recovery Rule
-InterTypeFieldHeader ::= Modifiersopt Type OnType '+' '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("+"); $break ./
-/:$readableName inter-type field declaration header:/
-
-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeader(true); $break ./
-
---InterTypeFieldDeclaration ::= Modifiersopt Type OnType '.' ITDFieldVariableDeclarator ';'
---/.$putCase consumeInterTypeFieldDeclaration(); $break ./
---
---InterTypeFieldDeclaration ::= Modifiersopt Type OnType TypeParameters '.' ITDFieldVariableDeclarator ';'
---/.$putCase consumeInterTypeFieldDeclarationWithTypeParameters(); $break ./
---
---ITDFieldVariableDeclarator ::= JavaIdentifier EnterITDVariable InterTypeFieldBody
---/:$readableName ITDFieldVariableDeclarator:/
---
---EnterITDVariable ::= $empty
---/.$putCase consumeEnterITDVariable(); $break ./
---/:$readableName EnterITDVariable:/
-
-InterTypeFieldBody ::=  $empty
-/.$putCase consumeExitITDVariableWithoutInitializer(); $break ./
-
-InterTypeFieldBody ::= '=' ForceNoDiet VariableInitializer RestoreDiet
-/.$putCase consumeExitITDVariableWithInitializer(); $break ./
-/:$readableName field initialization expression:/
-
--- declares (more fun than a pcd)
-AspectBodyDeclaration -> DeclareDeclaration
-
-DeclareDeclaration ::= DeclareHeader PseudoTokens ';'
-/.$putCase consumeDeclareDeclaration(); $break ./
-/:$readableName declare statement:/
-
-DeclareHeader ::= 'declare' 'Identifier' ':'
-/.$putCase consumeDeclareHeader(); $break ./
-/:$readableName declare [error | warning | parents | soft | precedence]:/
-
-
--- for declare annotation support
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' Annotations ';'
-/.$putCase consumeDeclareAnnotation(' '); $break ./
-
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' '+' Annotations ';'
-/.$putCase consumeDeclareAnnotation('+'); $break ./
-
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' '-' Annotations ';'
-/.$putCase consumeDeclareAnnotation('-'); $break ./
-
-Annotations -> Annotation
-Annotations ::= Annotations Annotation
-/:$readableName Annotations:/
-
-DeclareAnnotationHeader ::= 'declare' '@' 'Identifier' ':'
-/.$putCase consumeDeclareAnnotationHeader(); $break ./
-/:$readableName declare @AnnotationName:/
-
--- the joy of pcds
-PseudoTokens ::= PseudoToken
-PseudoTokens ::= ColonPseudoToken
-/:$readableName type pattern or pointcut expression:/
-
-PseudoTokens ::= PseudoTokens ColonPseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-
-PseudoTokens ::= PseudoTokens PseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-
-
-PseudoTokensNoColon ::= PseudoToken
-PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-/:$readableName allowable token in pointcut or type pattern:/
-
-
-ColonPseudoToken ::= ':'
-/.$putCase consumePseudoToken(":"); $break ./
-/:$readableName any allowable token in pointcut or type pattern, except ':':/
-
-PseudoToken ::= JavaIdentifier
-/.$putCase consumePseudoTokenIdentifier(); $break ./
-/:$readableName allowable token in pointcut or type pattern:/
-
-
-PseudoToken ::= '('
-/.$putCase consumePseudoToken("("); $break ./
-
-PseudoToken ::= ')'
-/.$putCase consumePseudoToken(")"); $break ./
-
-PseudoToken ::= '.'
-/.$putCase consumePseudoToken("."); $break ./
-PseudoToken ::= '*'
-/.$putCase consumePseudoToken("*"); $break ./
-
-PseudoToken ::= '+'
-/.$putCase consumePseudoToken("+"); $break ./
-
-PseudoToken ::= '='
-/.$putCase consumePseudoToken("="); $break ./
-
-PseudoToken ::= '&&'
-/.$putCase consumePseudoToken("&&"); $break ./
-
-PseudoToken ::= '||'
-/.$putCase consumePseudoToken("||"); $break ./
-
-PseudoToken ::= '!'
-/.$putCase consumePseudoToken("!"); $break ./
-
-PseudoToken ::= ','
-/.$putCase consumePseudoToken(","); $break ./
-
-PseudoToken ::= '['
-/.$putCase consumePseudoToken("["); $break ./
-
-PseudoToken ::= ']'
-/.$putCase consumePseudoToken("]"); $break ./
-
-PseudoToken ::= '@'
-/.$putCase consumePseudoToken("@"); $break ./
-
-PseudoToken ::= '...'
-/.$putCase consumePseudoToken("..."); $break ./
-
-PseudoToken ::= '?'
-/.$putCase consumePseudoToken("?"); $break ./
-
-PseudoToken ::= '<'
-/.$putCase consumePseudoToken("<"); $break ./
-
-PseudoToken ::= '>'
-/.$putCase consumePseudoToken(">"); $break ./
-
-PseudoToken ::= '>>'
-/.$putCase consumePseudoToken(">>"); $break ./
-
-PseudoToken ::= '>>>'
-/.$putCase consumePseudoToken(">>>"); $break ./
-
-PseudoToken ::= '&'
-/.$putCase consumePseudoToken("&"); $break ./
-
-PseudoToken ::= '!='
-/.$putCase consumePseudoToken("!="); $break ./
-
-PseudoToken ::= PrimitiveType
-/.$putCase consumePseudoTokenPrimitiveType(); $break ./
-
-PseudoToken ::= SimpleModifier
-/.$putCase consumePseudoTokenModifier(); $break ./
-
-PseudoToken ::= Literal
-/.$putCase consumePseudoTokenLiteral(); $break ./
-
-
-PseudoToken ::= 'this'
-/.$putCase consumePseudoToken("this", 1, true); $break ./
-
-PseudoToken ::= 'class'
-/.$putCase consumePseudoToken("class", 1, true); $break ./
-
-PseudoToken ::= 'super'
-/.$putCase consumePseudoToken("super", 1, true); $break ./
-
-
--- special handling for if
-PseudoToken ::= 'if' '(' Expression ')'
-/.$putCase consumePseudoTokenIf(); $break ./
-
-PseudoToken ::= 'assert'
-/.$putCase consumePseudoToken("assert", 1, true); $break ./
-
-PseudoToken ::= 'import'
-/.$putCase consumePseudoToken("import", 1, true); $break ./
-
-PseudoToken ::= 'package'
-/.$putCase consumePseudoToken("package", 1, true); $break ./
-
-PseudoToken ::= 'throw'
-/.$putCase consumePseudoToken("throw", 1, true); $break ./
-
-PseudoToken ::= 'new'
-/.$putCase consumePseudoToken("new", 1, true); $break ./
-
-PseudoToken ::= 'do'
-/.$putCase consumePseudoToken("do", 1, true); $break ./
-
-PseudoToken ::= 'for'
-/.$putCase consumePseudoToken("for", 1, true); $break ./
-
-PseudoToken ::= 'switch'
-/.$putCase consumePseudoToken("switch", 1, true); $break ./
-
-PseudoToken ::= 'try'
-/.$putCase consumePseudoToken("try", 1, true); $break ./
-
-PseudoToken ::= 'while'
-/.$putCase consumePseudoToken("while", 1, true); $break ./
-
-PseudoToken ::= 'break'
-/.$putCase consumePseudoToken("break", 1, true); $break ./
-
-PseudoToken ::= 'continue'
-/.$putCase consumePseudoToken("continue", 1, true); $break ./
-
-PseudoToken ::= 'return'
-/.$putCase consumePseudoToken("return", 1, true); $break ./
-
-PseudoToken ::= 'case'
-/.$putCase consumePseudoToken("case", 1, true); $break ./
-
-PseudoToken ::= 'catch'
-/.$putCase consumePseudoToken("catch", 0, true); $break ./
-
-PseudoToken ::= 'instanceof'
-/.$putCase consumePseudoToken("instanceof", 0, true); $break ./
-
-PseudoToken ::= 'else'
-/.$putCase consumePseudoToken("else", 0, true); $break ./
-
-PseudoToken ::= 'extends'
-/.$putCase consumePseudoToken("extends", 0, true); $break ./
-
-PseudoToken ::= 'finally'
-/.$putCase consumePseudoToken("finally", 0, true); $break ./
-
-PseudoToken ::= 'implements'
-/.$putCase consumePseudoToken("implements", 0, true); $break ./
-
-PseudoToken ::= 'throws'
-/.$putCase consumePseudoToken("throws", 0, true); $break ./
-
--- add all other keywords as identifiers
--- End AspectJ Extensions main block
-
-
---18.8 Productions from 8: Class Declarations
---ClassModifier ::=
---      'abstract'
---    | 'final'
---    | 'public'
---18.8.1 Productions from 8.1: Class Declarations
-
-ClassDeclaration ::= ClassHeader ClassBody
-/.$putCase consumeClassDeclaration(); $break ./
-/:$readableName ClassDeclaration:/
-
-IntertypeClassDeclaration ::= IntertypeClassHeader ClassBody
-/.$putCase consumeIntertypeClassDeclaration(); $break ./
-/:$readableName IntertypeClassDeclaration:/
-
-IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeIntertypeClassHeader(); $break ./
-/:$readableName IntertypeClassHeader:/
-
-IntertypeClassHeaderName ::= IntertypeClassHeaderName1 TypeParameters
-/.$putCase consumeIntertypeTypeHeaderNameWithTypeParameters(); $break ./
-
-IntertypeClassHeaderName -> IntertypeClassHeaderName1
-/:$readableName IntertypeClassHeaderName:/
-
-IntertypeClassHeaderName1 ::= Modifiersopt 'class' OnType '.' JavaIdentifier
-/.$putCase consumeIntertypeClassHeaderName(false); $break ./
-
-InterTypeClassHeaderName1 ::= Modifiersopt 'class' OnType TypeParametersAsReference '.' JavaIdentifier
-/.$putCase consumeIntertypeClassHeaderName(true); $break ./
-/:$readableName IntertypeClassHeader:/
-
-ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeClassHeader(); $break ./
-/:$readableName ClassHeader:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-ClassHeaderName ::= ClassHeaderName1 TypeParameters
-/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./
-
-ClassHeaderName -> ClassHeaderName1
-/:$readableName ClassHeaderName:/
-
-ClassHeaderName1 ::= Modifiersopt 'class' JavaIdentifier -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeClassHeaderName1(); $break ./
-/:$readableName ClassHeaderName:/
-
-ClassHeaderExtends ::= 'extends' ClassType
-/.$putCase consumeClassHeaderExtends(); $break ./
-/:$readableName ClassHeaderExtends:/
-
-ClassHeaderImplements ::= 'implements' InterfaceTypeList
-/.$putCase consumeClassHeaderImplements(); $break ./
-/:$readableName ClassHeaderImplements:/
-
-InterfaceTypeList -> InterfaceType
-InterfaceTypeList ::= InterfaceTypeList ',' InterfaceType
-/.$putCase consumeInterfaceTypeList(); $break ./
-/:$readableName InterfaceTypeList:/
-
-InterfaceType ::= ClassOrInterfaceType
-/.$putCase consumeInterfaceType(); $break ./
-/:$readableName InterfaceType:/
-
-ClassBody ::= '{' ClassBodyDeclarationsopt '}'
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-ClassBodyDeclarations ::= ClassBodyDeclaration
-ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration
-/.$putCase consumeClassBodyDeclarations(); $break ./
-/:$readableName ClassBodyDeclarations:/
-
-ClassBodyDeclaration -> ClassMemberDeclaration
-ClassBodyDeclaration -> StaticInitializer
-ClassBodyDeclaration -> ConstructorDeclaration
---1.1 feature
-ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName ClassBodyDeclaration:/
-
-Diet ::= $empty
-/.$putCase consumeDiet(); $break./
-/:$readableName Diet:/
-
-Initializer ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName Initializer:/
-
-CreateInitializer ::= $empty
-/.$putCase consumeCreateInitializer(); $break./
-/:$readableName CreateInitializer:/
-
-ClassMemberDeclaration -> FieldDeclaration
-ClassMemberDeclaration -> MethodDeclaration
---1.1 feature
-ClassMemberDeclaration -> ClassDeclaration
---1.1 feature
-ClassMemberDeclaration -> InterfaceDeclaration
--- 1.5 feature
-ClassMemberDeclaration -> EnumDeclaration
-ClassMemberDeclaration -> AnnotationTypeDeclaration
-/:$readableName ClassMemberDeclaration:/
-
--- Empty declarations are not valid Java ClassMemberDeclarations.
--- However, since the current (2/14/97) Java compiler accepts them
--- (in fact, some of the official tests contain this erroneous
--- syntax)
-ClassMemberDeclaration ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break./
-
-GenericMethodDeclaration -> MethodDeclaration
-GenericMethodDeclaration -> ConstructorDeclaration
-/:$readableName GenericMethodDeclaration:/
-
---18.8.2 Productions from 8.3: Field Declarations
---VariableModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---    | 'static'
---    | 'final'
---    | 'transient'
---    | 'volatile'
-
-FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';'
-/.$putCase consumeFieldDeclaration(); $break ./
-/:$readableName FieldDeclaration:/
-
-VariableDeclarators -> VariableDeclarator
-VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator
-/.$putCase consumeVariableDeclarators(); $break ./
-/:$readableName VariableDeclarators:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-VariableDeclarator ::= VariableDeclaratorId EnterVariable ExitVariableWithoutInitialization
-VariableDeclarator ::= VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/:$readableName VariableDeclarator:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-EnterVariable ::= $empty
-/.$putCase consumeEnterVariable(); $break ./
-/:$readableName EnterVariable:/
-
-ExitVariableWithInitialization ::= $empty
-/.$putCase consumeExitVariableWithInitialization(); $break ./
-/:$readableName ExitVariableWithInitialization:/
-
-ExitVariableWithoutInitialization ::= $empty
-/.$putCase consumeExitVariableWithoutInitialization(); $break ./
-/:$readableName ExitVariableWithoutInitialization:/
-
-ForceNoDiet ::= $empty
-/.$putCase consumeForceNoDiet(); $break ./
-/:$readableName ForceNoDiet:/
-RestoreDiet ::= $empty
-/.$putCase consumeRestoreDiet(); $break ./
-/:$readableName RestoreDiet:/
-
-VariableDeclaratorId ::= JavaIdentifier Dimsopt -- AspectJ extension : was 'Identifier'
-/:$readableName VariableDeclaratorId:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-VariableInitializer -> Expression
-VariableInitializer -> ArrayInitializer
-/:$readableName VariableInitializer:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
---18.8.3 Productions from 8.4: Method Declarations
---MethodModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---    | 'static'
---    | 'abstract'
---    | 'final'
---    | 'native'
---    | 'synchronized'
---
-
-MethodDeclaration -> AbstractMethodDeclaration
-MethodDeclaration ::= MethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
- consumeMethodDeclaration(true, false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodDeclaration ::= DefaultMethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
- consumeMethodDeclaration(true, true); $break ./
-/:$readableName MethodDeclaration:/
-
-AbstractMethodDeclaration ::= MethodHeader ';'
-/.$putCase // set to false to consume a method without body
- consumeMethodDeclaration(false, false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeader ::= MethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier '(' -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-MethodHeaderName ::= Modifiersopt Type JavaIdentifier '('  -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 'Identifier' '('
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-DefaultMethodHeaderName ::= ModifiersWithDefault Type 'Identifier' '('
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
-ModifiersWithDefault ::= Modifiersopt 'default' Modifiersopt
-/.$putCase consumePushCombineModifiers(); $break ./
-/:$readableName Modifiers:/
-/:$compliance 1.8:/
-
-MethodHeaderRightParen ::= ')'
-/.$putCase consumeMethodHeaderRightParen(); $break ./
-/:$readableName ):/
-/:$recovery_template ):/
-
-MethodHeaderExtendedDims ::= Dimsopt
-/.$putCase consumeMethodHeaderExtendedDims(); $break ./
-/:$readableName MethodHeaderExtendedDims:/
-
-MethodHeaderThrowsClause ::= 'throws' ClassTypeList
-/.$putCase consumeMethodHeaderThrowsClause(); $break ./
-/:$readableName MethodHeaderThrowsClause:/
-
-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt
-/.$putCase consumeConstructorHeader(); $break ./
-/:$readableName ConstructorDeclaration:/
-
-ConstructorHeaderName ::= Modifiersopt TypeParameters 'Identifier' '('
-/.$putCase consumeConstructorHeaderNameWithTypeParameters(); $break ./
-ConstructorHeaderName ::= Modifiersopt 'Identifier' '('
-/.$putCase consumeConstructorHeaderName(); $break ./
-/:$readableName ConstructorHeaderName:/
-
--- AspectJ Extension
-ConstructorHeaderName ::=  Modifiersopt 'aspect' '('  -- makes aspect harder
-/.$putCase consumeConstructorHeaderName(); $break ./
--- End AspectJ Extension
-
-FormalParameterList -> FormalParameter
-FormalParameterList ::= FormalParameterList ',' FormalParameter
-/.$putCase consumeFormalParameterList(); $break ./
-/:$readableName FormalParameterList:/
-
---1.1 feature
-FormalParameter ::= Modifiersopt Type VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(false); $break ./
-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations '...' VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(true); $break ./
-/:$compliance 1.5:/
-FormalParameter ::= Modifiersopt Type @308... TypeAnnotations '...' VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(true); $break ./
-/:$readableName FormalParameter:/
-/:$compliance 1.8:/
-/:$recovery_template JavaIdentifier JavaIdentifier:/ -- AspectJ Extension, was Identifier Identifier
-
-CatchFormalParameter ::= Modifiersopt CatchType VariableDeclaratorId
-/.$putCase consumeCatchFormalParameter(); $break ./
-/:$readableName FormalParameter:/
-/:$recovery_template JavaIdentifier JavaIdentifier:/ -- AspectJ Extension, was Identifier Identifier
-
-CatchType ::= UnionType
-/.$putCase consumeCatchType(); $break ./
-/:$readableName CatchType:/
-
-UnionType ::= Type
-/.$putCase consumeUnionTypeAsClassType(); $break ./
-UnionType ::= UnionType '|' Type
-/.$putCase consumeUnionType(); $break ./
-/:$readableName UnionType:/
-/:$compliance 1.7:/
-
-ClassTypeList -> ClassTypeElt
-ClassTypeList ::= ClassTypeList ',' ClassTypeElt
-/.$putCase consumeClassTypeList(); $break ./
-/:$readableName ClassTypeList:/
-
-ClassTypeElt ::= ClassType
-/.$putCase consumeClassTypeElt(); $break ./
-/:$readableName ClassType:/
-
-MethodBody ::= NestedMethod '{' BlockStatementsopt '}'
-/.$putCase consumeMethodBody(); $break ./
-/:$readableName MethodBody:/
-/:$no_statements_recovery:/
-
-NestedMethod ::= $empty
-/.$putCase consumeNestedMethod(); $break ./
-/:$readableName NestedMethod:/
-
---18.8.4 Productions from 8.5: Static Initializers
-
-StaticInitializer ::= StaticOnly Block
-/.$putCase consumeStaticInitializer(); $break./
-/:$readableName StaticInitializer:/
-
-StaticOnly ::= 'static'
-/.$putCase consumeStaticOnly(); $break ./
-/:$readableName StaticOnly:/
-
---18.8.5 Productions from 8.6: Constructor Declarations
---ConstructorModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---
---
-ConstructorDeclaration ::= ConstructorHeader MethodBody
-/.$putCase consumeConstructorDeclaration() ; $break ./
--- These rules are added to be able to parse constructors with no body
-ConstructorDeclaration ::= ConstructorHeader ';'
-/.$putCase consumeInvalidConstructorDeclaration() ; $break ./
-/:$readableName ConstructorDeclaration:/
-
--- the rules ExplicitConstructorInvocationopt has been expanded
--- in the rule below in order to make the grammar lalr(1).
-
-ExplicitConstructorInvocation ::= 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(0, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(0,SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Primary '.' 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(1, SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Name '.' 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(2, SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Primary '.' 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(1, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Name '.' 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(2, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); $break ./
-/:$readableName ExplicitConstructorInvocation:/
-
---18.9 Productions from 9: Interface Declarations
-
---18.9.1 Productions from 9.1: Interface Declarations
---InterfaceModifier ::=
---      'public'
---    | 'abstract'
---
-InterfaceDeclaration ::= InterfaceHeader InterfaceBody
-/.$putCase consumeInterfaceDeclaration(); $break ./
-/:$readableName InterfaceDeclaration:/
-
-InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt
-/.$putCase consumeInterfaceHeader(); $break ./
-/:$readableName InterfaceHeader:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-InterfaceHeaderName ::= InterfaceHeaderName1 TypeParameters
-/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./
-
-InterfaceHeaderName -> InterfaceHeaderName1
-/:$readableName InterfaceHeaderName:/
-
-InterfaceHeaderName1 ::= Modifiersopt interface JavaIdentifier -- AspectJ Extension, was Identifier
-/.$putCase consumeInterfaceHeaderName1(); $break ./
-/:$readableName InterfaceHeaderName:/
-
-InterfaceHeaderExtends ::= 'extends' InterfaceTypeList
-/.$putCase consumeInterfaceHeaderExtends(); $break ./
-/:$readableName InterfaceHeaderExtends:/
-
-InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}'
-/:$readableName InterfaceBody:/
-
-InterfaceMemberDeclarations -> InterfaceMemberDeclaration
-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration
-/.$putCase consumeInterfaceMemberDeclarations(); $break ./
-/:$readableName InterfaceMemberDeclarations:/
-
---same as for class members
-InterfaceMemberDeclaration ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break ./
-/:$readableName InterfaceMemberDeclaration:/
-
-
-InterfaceMemberDeclaration -> ConstantDeclaration
-InterfaceMemberDeclaration ::= DefaultMethodHeader MethodBody
-/:$compliance 1.8:/
-/.$putCase consumeInterfaceMethodDeclaration(false); $break ./
-InterfaceMemberDeclaration ::= MethodHeader MethodBody
-/.$putCase consumeInterfaceMethodDeclaration(false); $break ./
-/:$readableName InterfaceMemberDeclaration:/
--- the next rule is illegal but allows to give a more canonical error message from inside consumeInterfaceMethodDeclaration():
-InterfaceMemberDeclaration ::= DefaultMethodHeader ';'
-/:$compliance 1.8:/
-/.$putCase consumeInterfaceMethodDeclaration(true); $break ./
-
--- These rules are added to be able to parse constructors inside interface and then report a relevent error message
-InvalidConstructorDeclaration ::= ConstructorHeader MethodBody
-/.$putCase consumeInvalidConstructorDeclaration(true); $break ./
-InvalidConstructorDeclaration ::= ConstructorHeader ';'
-/.$putCase consumeInvalidConstructorDeclaration(false); $break ./
-/:$readableName InvalidConstructorDeclaration:/
-
--- These rules are added to be able to parse initializers inside an interface and then report a relevent error message (bug 212713)
-InvalidInitializer -> StaticInitializer
-InvalidInitializer -> Initializer
-/:$readableName InvalidInitializer:/
-
-
-InterfaceMemberDeclaration -> AbstractMethodDeclaration
-InterfaceMemberDeclaration -> InvalidConstructorDeclaration
-InterfaceMemberDeclaration -> InvalidInitializer
---1.1 feature
-InterfaceMemberDeclaration -> ClassDeclaration
---1.1 feature
-InterfaceMemberDeclaration -> InterfaceDeclaration
-InterfaceMemberDeclaration -> EnumDeclaration
-InterfaceMemberDeclaration -> AnnotationTypeDeclaration
-/:$readableName InterfaceMemberDeclaration:/
-
-ConstantDeclaration -> FieldDeclaration
-/:$readableName ConstantDeclaration:/
-
-PushLeftBrace ::= $empty
-/.$putCase consumePushLeftBrace(); $break ./
-/:$readableName PushLeftBrace:/
-
-ArrayInitializer ::= '{' PushLeftBrace ,opt '}'
-/.$putCase consumeEmptyArrayInitializer(); $break ./
-ArrayInitializer ::= '{' PushLeftBrace VariableInitializers '}'
-/.$putCase consumeArrayInitializer(); $break ./
-ArrayInitializer ::= '{' PushLeftBrace VariableInitializers , '}'
-/.$putCase consumeArrayInitializer(); $break ./
-/:$readableName ArrayInitializer:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
-VariableInitializers ::= VariableInitializer
-VariableInitializers ::= VariableInitializers ',' VariableInitializer
-/.$putCase consumeVariableInitializers(); $break ./
-/:$readableName VariableInitializers:/
-
-Block ::= OpenBlock '{' BlockStatementsopt '}'
-/.$putCase consumeBlock(); $break ./
-/:$readableName Block:/
-
-OpenBlock ::= $empty
-/.$putCase consumeOpenBlock() ; $break ./
-/:$readableName OpenBlock:/
-
-BlockStatements ::= BlockStatement
-/.$putCase consumeBlockStatement() ; $break ./
-/:$readableName BlockStatements:/
-BlockStatements ::= BlockStatements BlockStatement
-/.$putCase consumeBlockStatements() ; $break ./
-/:$readableName BlockStatements:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-BlockStatementopt ::= BlockStatementopt0
-/:$readableName BlockStatementopt:/
-BlockStatementopt0 -> $empty
-BlockStatementopt0 -> BlockStatement
-/:$readableName BlockStatementopt0:/
-
-BlockStatement -> LocalVariableDeclarationStatement
-BlockStatement -> Statement
---1.1 feature
-BlockStatement -> ClassDeclaration
-BlockStatement ::= InterfaceDeclaration
-/.$putCase consumeInvalidInterfaceDeclaration(); $break ./
-/:$readableName BlockStatement:/
-BlockStatement ::= AnnotationTypeDeclaration
-/.$putCase consumeInvalidAnnotationTypeDeclaration(); $break ./
-/:$readableName BlockStatement:/
-BlockStatement ::= EnumDeclaration
-/.$putCase consumeInvalidEnumDeclaration(); $break ./
-/:$readableName BlockStatement:/
-
-LocalVariableDeclarationStatement ::= LocalVariableDeclaration ';'
-/.$putCase consumeLocalVariableDeclarationStatement(); $break ./
-/:$readableName LocalVariableDeclarationStatement:/
-
-LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators
-/.$putCase consumeLocalVariableDeclaration(); $break ./
--- 1.1 feature
--- The modifiers part of this rule makes the grammar more permissive.
--- The only modifier here is final. We put Modifiers to allow multiple modifiers
--- This will require to check the validity of the modifier
-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers VariableDeclarators
-/.$putCase consumeLocalVariableDeclaration(); $break ./
-/:$readableName LocalVariableDeclaration:/
-
-PushModifiers ::= $empty
-/.$putCase consumePushModifiers(); $break ./
-/:$readableName PushModifiers:/
-
-PushModifiersForHeader ::= $empty
-/.$putCase consumePushModifiersForHeader(); $break ./
-/:$readableName PushModifiersForHeader:/
-
-PushRealModifiers ::= $empty
-/.$putCase consumePushRealModifiers(); $break ./
-/:$readableName PushRealModifiers:/
-
-Statement -> StatementWithoutTrailingSubstatement
-Statement -> LabeledStatement
-Statement -> IfThenStatement
-Statement -> IfThenElseStatement
-Statement -> WhileStatement
-Statement -> ForStatement
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-Statement -> EnhancedForStatement
-/:$readableName Statement:/
-/:$recovery_template ;:/
-
-StatementNoShortIf -> StatementWithoutTrailingSubstatement
-StatementNoShortIf -> LabeledStatementNoShortIf
-StatementNoShortIf -> IfThenElseStatementNoShortIf
-StatementNoShortIf -> WhileStatementNoShortIf
-StatementNoShortIf -> ForStatementNoShortIf
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-StatementNoShortIf -> EnhancedForStatementNoShortIf
-/:$readableName Statement:/
-
-StatementWithoutTrailingSubstatement -> AssertStatement
-StatementWithoutTrailingSubstatement -> Block
-StatementWithoutTrailingSubstatement -> EmptyStatement
-StatementWithoutTrailingSubstatement -> ExpressionStatement
-StatementWithoutTrailingSubstatement -> SwitchStatement
-StatementWithoutTrailingSubstatement -> DoStatement
-StatementWithoutTrailingSubstatement -> BreakStatement
-StatementWithoutTrailingSubstatement -> ContinueStatement
-StatementWithoutTrailingSubstatement -> ReturnStatement
-StatementWithoutTrailingSubstatement -> SynchronizedStatement
-StatementWithoutTrailingSubstatement -> ThrowStatement
-StatementWithoutTrailingSubstatement -> TryStatement
-StatementWithoutTrailingSubstatement -> TryStatementWithResources
-/:$readableName Statement:/
-
-EmptyStatement ::= ';'
-/.$putCase consumeEmptyStatement(); $break ./
-/:$readableName EmptyStatement:/
-
-LabeledStatement ::= Label ':' Statement
-/.$putCase consumeStatementLabel() ; $break ./
-/:$readableName LabeledStatement:/
-
-LabeledStatementNoShortIf ::= Label ':' StatementNoShortIf
-/.$putCase consumeStatementLabel() ; $break ./
-/:$readableName LabeledStatement:/
-
-Label ::= 'JavaIdentifier' -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeLabel() ; $break ./
-/:$readableName Label:/
-
-ExpressionStatement ::= StatementExpression ';'
-/. $putCase consumeExpressionStatement(); $break ./
-ExpressionStatement ::= ExplicitConstructorInvocation
-/:$readableName Statement:/
-
-StatementExpression ::= Assignment
-StatementExpression ::= PreIncrementExpression
-StatementExpression ::= PreDecrementExpression
-StatementExpression ::= PostIncrementExpression
-StatementExpression ::= PostDecrementExpression
-StatementExpression ::= MethodInvocation
-StatementExpression ::= ClassInstanceCreationExpression
-/:$readableName Expression:/
-
-IfThenStatement ::= 'if' '(' Expression ')' Statement
-/.$putCase consumeStatementIfNoElse(); $break ./
-/:$readableName IfStatement:/
-
-IfThenElseStatement ::= 'if' '(' Expression ')' StatementNoShortIf 'else' Statement
-/.$putCase consumeStatementIfWithElse(); $break ./
-/:$readableName IfStatement:/
-
-IfThenElseStatementNoShortIf ::= 'if' '(' Expression ')' StatementNoShortIf 'else' StatementNoShortIf
-/.$putCase consumeStatementIfWithElse(); $break ./
-/:$readableName IfStatement:/
-
-SwitchStatement ::= 'switch' '(' Expression ')' OpenBlock SwitchBlock
-/.$putCase consumeStatementSwitch() ; $break ./
-/:$readableName SwitchStatement:/
-
-SwitchBlock ::= '{' '}'
-/.$putCase consumeEmptySwitchBlock() ; $break ./
-
-SwitchBlock ::= '{' SwitchBlockStatements '}'
-SwitchBlock ::= '{' SwitchLabels '}'
-SwitchBlock ::= '{' SwitchBlockStatements SwitchLabels '}'
-/.$putCase consumeSwitchBlock() ; $break ./
-/:$readableName SwitchBlock:/
-
-SwitchBlockStatements -> SwitchBlockStatement
-SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement
-/.$putCase consumeSwitchBlockStatements() ; $break ./
-/:$readableName SwitchBlockStatements:/
-
-SwitchBlockStatement ::= SwitchLabels BlockStatements
-/.$putCase consumeSwitchBlockStatement() ; $break ./
-/:$readableName SwitchBlockStatement:/
-
-SwitchLabels -> SwitchLabel
-SwitchLabels ::= SwitchLabels SwitchLabel
-/.$putCase consumeSwitchLabels() ; $break ./
-/:$readableName SwitchLabels:/
-
-SwitchLabel ::= 'case' ConstantExpression ':'
-/. $putCase consumeCaseLabel(); $break ./
-
-SwitchLabel ::= 'default' ':'
-/. $putCase consumeDefaultLabel(); $break ./
-/:$readableName SwitchLabel:/
-
-WhileStatement ::= 'while' '(' Expression ')' Statement
-/.$putCase consumeStatementWhile() ; $break ./
-/:$readableName WhileStatement:/
-
-WhileStatementNoShortIf ::= 'while' '(' Expression ')' StatementNoShortIf
-/.$putCase consumeStatementWhile() ; $break ./
-/:$readableName WhileStatement:/
-
-DoStatement ::= 'do' Statement 'while' '(' Expression ')' ';'
-/.$putCase consumeStatementDo() ; $break ./
-/:$readableName DoStatement:/
-
-ForStatement ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' Statement
-/.$putCase consumeStatementFor() ; $break ./
-/:$readableName ForStatement:/
-
-ForStatementNoShortIf ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' StatementNoShortIf
-/.$putCase consumeStatementFor() ; $break ./
-/:$readableName ForStatement:/
-
---the minus one allows to avoid a stack-to-stack transfer
-ForInit ::= StatementExpressionList
-/.$putCase consumeForInit() ; $break ./
-ForInit -> LocalVariableDeclaration
-/:$readableName ForInit:/
-
-ForUpdate -> StatementExpressionList
-/:$readableName ForUpdate:/
-
-StatementExpressionList -> StatementExpression
-StatementExpressionList ::= StatementExpressionList ',' StatementExpression
-/.$putCase consumeStatementExpressionList() ; $break ./
-/:$readableName StatementExpressionList:/
-
--- 1.4 feature
-AssertStatement ::= 'assert' Expression ';'
-/.$putCase consumeSimpleAssertStatement() ; $break ./
-/:$compliance 1.4:/
-
-AssertStatement ::= 'assert' Expression ':' Expression ';'
-/.$putCase consumeAssertStatement() ; $break ./
-/:$readableName AssertStatement:/
-/:$compliance 1.4:/
-
-BreakStatement ::= 'break' ';'
-/.$putCase consumeStatementBreak() ; $break ./
-
-BreakStatement ::= 'break' Identifier ';'
-/.$putCase consumeStatementBreakWithLabel() ; $break ./
-/:$readableName BreakStatement:/
-
-ContinueStatement ::= 'continue' ';'
-/.$putCase consumeStatementContinue() ; $break ./
-
-ContinueStatement ::= 'continue' Identifier ';'
-/.$putCase consumeStatementContinueWithLabel() ; $break ./
-/:$readableName ContinueStatement:/
-
-ReturnStatement ::= 'return' Expressionopt ';'
-/.$putCase consumeStatementReturn() ; $break ./
-/:$readableName ReturnStatement:/
-
-ThrowStatement ::= 'throw' Expression ';'
-/.$putCase consumeStatementThrow(); $break ./
-/:$readableName ThrowStatement:/
-
-SynchronizedStatement ::= OnlySynchronized '(' Expression ')' Block
-/.$putCase consumeStatementSynchronized(); $break ./
-/:$readableName SynchronizedStatement:/
-
-OnlySynchronized ::= 'synchronized'
-/.$putCase consumeOnlySynchronized(); $break ./
-/:$readableName OnlySynchronized:/
-
-TryStatement ::= 'try' TryBlock Catches
-/.$putCase consumeStatementTry(false, false); $break ./
-TryStatement ::= 'try' TryBlock Catchesopt Finally
-/.$putCase consumeStatementTry(true, false); $break ./
-/:$readableName TryStatement:/
-
-TryStatementWithResources ::= 'try' ResourceSpecification TryBlock Catchesopt
-/.$putCase consumeStatementTry(false, true); $break ./
-TryStatementWithResources ::= 'try' ResourceSpecification TryBlock Catchesopt Finally
-/.$putCase consumeStatementTry(true, true); $break ./
-/:$readableName TryStatementWithResources:/
-/:$compliance 1.7:/
-
-ResourceSpecification ::= '(' Resources ;opt ')'
-/.$putCase consumeResourceSpecification(); $break ./
-/:$readableName ResourceSpecification:/
-/:$compliance 1.7:/
-
-;opt ::= $empty
-/.$putCase consumeResourceOptionalTrailingSemiColon(false); $break ./
-;opt ::= ';'
-/.$putCase consumeResourceOptionalTrailingSemiColon(true); $break ./
-/:$readableName ;:/
-/:$compliance 1.7:/
-
-Resources ::= Resource
-/.$putCase consumeSingleResource(); $break ./
-Resources ::= Resources TrailingSemiColon Resource
-/.$putCase consumeMultipleResources(); $break ./
-/:$readableName Resources:/
-/:$compliance 1.7:/
-
-TrailingSemiColon ::= ';'
-/.$putCase consumeResourceOptionalTrailingSemiColon(true); $break ./
-/:$readableName ;:/
-/:$compliance 1.7:/
-
-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/.$putCase consumeResourceAsLocalVariableDeclaration(); $break ./
-/:$readableName Resource:/
-/:$compliance 1.7:/
-
-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/.$putCase consumeResourceAsLocalVariableDeclaration(); $break ./
-/:$readableName Resource:/
-/:$compliance 1.7:/
-
-TryBlock ::= Block ExitTryBlock
-/:$readableName Block:/
-
-ExitTryBlock ::= $empty
-/.$putCase consumeExitTryBlock(); $break ./
-/:$readableName ExitTryBlock:/
-
-Catches -> CatchClause
-Catches ::= Catches CatchClause
-/.$putCase consumeCatches(); $break ./
-/:$readableName Catches:/
-
-CatchClause ::= 'catch' '(' CatchFormalParameter ')' Block
-/.$putCase consumeStatementCatch() ; $break ./
-/:$readableName CatchClause:/
-
-Finally ::= 'finally' Block
-/:$readableName Finally:/
-/:$recovery_template finally { }:/
-
---18.12 Productions from 14: Expressions
-
---for source positioning purpose
-PushLPAREN ::= '('
-/.$putCase consumeLeftParen(); $break ./
-/:$readableName (:/
-/:$recovery_template (:/
-PushRPAREN ::= ')'
-/.$putCase consumeRightParen(); $break ./
-/:$readableName ):/
-/:$recovery_template ):/
-
-Primary -> PrimaryNoNewArray
-Primary -> ArrayCreationWithArrayInitializer
-Primary -> ArrayCreationWithoutArrayInitializer
-/:$readableName Expression:/
-
-PrimaryNoNewArray -> Literal
-PrimaryNoNewArray ::= 'this'
-/.$putCase consumePrimaryNoNewArrayThis(); $break ./
-
-PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN
-/.$putCase consumePrimaryNoNewArray(); $break ./
-
-PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN
-/.$putCase consumePrimaryNoNewArrayWithName(); $break ./
-
-PrimaryNoNewArray -> ClassInstanceCreationExpression
-PrimaryNoNewArray -> FieldAccess
---1.1 feature
-PrimaryNoNewArray ::= Name '.' 'this'
-/.$putCase consumePrimaryNoNewArrayNameThis(); $break ./
--- PrimaryNoNewArray ::= Name '.' 'super'
--- /.$putCase consumePrimaryNoNewArrayNameSuper(); $break ./
-
-QualifiedSuperReceiver ::= Name '.' 'super'
-/.$putCase consumeQualifiedSuperReceiver(); $break ./
-
---1.1 feature
---PrimaryNoNewArray ::= Type '.' 'class'
---inline Type in the previous rule in order to make the grammar LL1 instead
--- of LL2. The result is the 3 next rules.
-
-PrimaryNoNewArray ::= Name '.' 'class'
-/.$putCase consumePrimaryNoNewArrayName(); $break ./
-
-PrimaryNoNewArray ::= Name Dims '.' 'class'
-/.$putCase consumePrimaryNoNewArrayArrayType(); $break ./
-
-PrimaryNoNewArray ::= PrimitiveType Dims '.' 'class'
-/.$putCase consumePrimaryNoNewArrayPrimitiveArrayType(); $break ./
-
-PrimaryNoNewArray ::= PrimitiveType '.' 'class'
-/.$putCase consumePrimaryNoNewArrayPrimitiveType(); $break ./
-
-PrimaryNoNewArray -> MethodInvocation
-PrimaryNoNewArray -> ArrayAccess
-
------------------------------------------------------------------------
---                   Start of rules for JSR 335
------------------------------------------------------------------------
-
-PrimaryNoNewArray -> LambdaExpression
-PrimaryNoNewArray -> ReferenceExpression
-/:$readableName Expression:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ReferenceExpressionTypeArgumentsAndTrunk ::= ReferenceExpressionTypeArgumentsAndTrunk0
-/:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/
-
-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt
-/.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(false); $break ./
-/:$compliance 1.8:/
-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments '.' ClassOrInterfaceType Dimsopt
-/.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(true); $break ./
-/:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/
-/:$compliance 1.8:/
-
-ReferenceExpression ::= PrimitiveType Dims '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionTypeForm(true); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= Name Dimsopt '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionTypeForm(false); $break ./
-/:$compliance 1.8:/
-
--- BeginTypeArguments is a synthetic token the scanner concocts to help disambiguate
--- between '<' as an operator and '<' in '<' TypeArguments '>'
-ReferenceExpression ::= Name BeginTypeArguments ReferenceExpressionTypeArgumentsAndTrunk '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionGenericTypeForm(); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= Primary '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionPrimaryForm(); $break ./
-/:$compliance 1.8:/
-ReferenceExpression ::= QualifiedSuperReceiver '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionPrimaryForm(); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= 'super' '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionSuperForm(); $break ./
-/:$readableName ReferenceExpression:/
-/:$compliance 1.8:/
-
-NonWildTypeArgumentsopt ::= $empty
-/.$putCase consumeEmptyTypeArguments(); $break ./
-NonWildTypeArgumentsopt -> OnlyTypeArguments
-/:$readableName NonWildTypeArgumentsopt:/
-/:$compliance 1.8:/
-
-IdentifierOrNew ::= 'Identifier'
-/.$putCase consumeIdentifierOrNew(false); $break ./
-IdentifierOrNew ::= 'new'
-/.$putCase consumeIdentifierOrNew(true); $break ./
-/:$readableName IdentifierOrNew:/
-/:$compliance 1.8:/
-
-LambdaExpression ::= LambdaParameters '->' LambdaBody
-/.$putCase consumeLambdaExpression(); $break ./
-/:$readableName LambdaExpression:/
-/:$compliance 1.8:/
-
-NestedLambda ::= $empty
-/.$putCase consumeNestedLambda(); $break ./
-/:$readableName NestedLambda:/
-
-LambdaParameters ::= Identifier NestedLambda
-/.$putCase consumeTypeElidedLambdaParameter(false); $break ./
-/:$readableName TypeElidedFormalParameter:/
-/:$compliance 1.8:/
-
--- to make the grammar LALR(1), the scanner transforms the input string to
--- contain synthetic tokens to signal start of lambda parameter list.
-LambdaParameters -> BeginLambda NestedLambda LambdaParameterList
-/:$readableName LambdaParameters:/
-/:$compliance 1.8:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ParenthesizedLambdaParameterList ::= LambdaParameterList
-/:$readableName ParenthesizedLambdaParameterList:/
-
-LambdaParameterList -> PushLPAREN FormalParameterListopt PushRPAREN
-LambdaParameterList -> PushLPAREN TypeElidedFormalParameterList PushRPAREN
-/:$readableName LambdaParameterList:/
-/:$compliance 1.8:/
-
-TypeElidedFormalParameterList -> TypeElidedFormalParameter
-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList ',' TypeElidedFormalParameter
-/.$putCase consumeFormalParameterList(); $break ./
-/:$readableName TypeElidedFormalParameterList:/
-/:$compliance 1.8:/
-
--- to work around a shift reduce conflict, we accept Modifiersopt prefixed
--- identifier - downstream phases should reject input strings with modifiers.
-TypeElidedFormalParameter ::= Modifiersopt Identifier
-/.$putCase consumeTypeElidedLambdaParameter(true); $break ./
-/:$readableName TypeElidedFormalParameter:/
-/:$compliance 1.8:/
-
--- A lambda body of the form x is really '{' return x; '}'
-LambdaBody -> ElidedLeftBraceAndReturn Expression ElidedSemicolonAndRightBrace
-LambdaBody -> Block
-/:$readableName LambdaBody:/
-/:$compliance 1.8:/
-
-ElidedLeftBraceAndReturn ::= $empty
-/.$putCase consumeElidedLeftBraceAndReturn(); $break ./
-/:$readableName ElidedLeftBraceAndReturn:/
-/:$compliance 1.8:/
-
------------------------------------------------------------------------
---                   End of rules for JSR 335
------------------------------------------------------------------------
-
---1.1 feature
---
--- In Java 1.0 a ClassBody could not appear at all in a
--- ClassInstanceCreationExpression.
---
-
-AllocationHeader ::= 'new' ClassType '(' ArgumentListopt ')'
-/.$putCase consumeAllocationHeader(); $break ./
-/:$readableName AllocationHeader:/
-
-ClassInstanceCreationExpression ::= 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionWithTypeArguments(); $break ./
-
-ClassInstanceCreationExpression ::= 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpression(); $break ./
---1.1 feature
-
-ClassInstanceCreationExpression ::= Primary '.' 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./
-
-ClassInstanceCreationExpression ::= Primary '.' 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./
-
---1.1 feature
-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./
-/:$readableName ClassInstanceCreationExpression:/
-
-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./
-/:$readableName ClassInstanceCreationExpression:/
-
-EnterInstanceCreationArgumentList ::= $empty
-/.$putCase consumeEnterInstanceCreationArgumentList(); $break ./
-/:$readableName EnterInstanceCreationArgumentList:/
-
-ClassInstanceCreationExpressionName ::= Name '.' 'new'
-/.$putCase consumeClassInstanceCreationExpressionName() ; $break ./
-/:$readableName ClassInstanceCreationExpressionName:/
-
-UnqualifiedClassBodyopt ::= $empty --test made using null as contents
-/.$putCase consumeClassBodyopt(); $break ./
-UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody ClassBody
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-UnqualifiedEnterAnonymousClassBody ::= $empty
-/.$putCase consumeEnterAnonymousClassBody(false); $break ./
-/:$readableName EnterAnonymousClassBody:/
-
-QualifiedClassBodyopt ::= $empty --test made using null as contents
-/.$putCase consumeClassBodyopt(); $break ./
-QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody ClassBody
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-QualifiedEnterAnonymousClassBody ::= $empty
-/.$putCase consumeEnterAnonymousClassBody(true); $break ./
-/:$readableName EnterAnonymousClassBody:/
-
-ArgumentList ::= Expression
-ArgumentList ::= ArgumentList ',' Expression
-/.$putCase consumeArgumentList(); $break ./
-/:$readableName ArgumentList:/
-
-ArrayCreationHeader ::= 'new' PrimitiveType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationHeader(); $break ./
-
-ArrayCreationHeader ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationHeader(); $break ./
-/:$readableName ArrayCreationHeader:/
-
-ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./
-/:$readableName ArrayCreationWithoutArrayInitializer:/
-
-ArrayCreationWithArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs ArrayInitializer
-/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./
-/:$readableName ArrayCreationWithArrayInitializer:/
-
-ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./
-
-ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer
-/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./
-
-DimWithOrWithOutExprs ::= DimWithOrWithOutExpr
-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr
-/.$putCase consumeDimWithOrWithOutExprs(); $break ./
-/:$readableName Dimensions:/
-
-DimWithOrWithOutExpr ::= TypeAnnotationsopt '[' Expression ']'
-DimWithOrWithOutExpr ::= TypeAnnotationsopt '[' ']'
-/. $putCase consumeDimWithOrWithOutExpr(); $break ./
-/:$readableName Dimension:/
--- -----------------------------------------------
-
-Dims ::= DimsLoop
-/. $putCase consumeDims(); $break ./
-/:$readableName Dimensions:/
-DimsLoop -> OneDimLoop
-DimsLoop ::= DimsLoop OneDimLoop
-/:$readableName Dimensions:/
-OneDimLoop ::= '[' ']'
-/. $putCase consumeOneDimLoop(false); $break ./
-OneDimLoop ::= TypeAnnotations '[' ']'
-/:$compliance 1.8:/
-/. $putCase consumeOneDimLoop(true); $break ./
-/:$readableName Dimension:/
-
-FieldAccess ::= Primary '.' JavaIdentifier -- AJ JavaIdentifier was 'Identifier'
-/.$putCase consumeFieldAccess(false); $break ./
-
-FieldAccess ::= 'super' '.' JavaIdentifier -- AJ JavaIdentifier was 'Identifier'
-/.$putCase consumeFieldAccess(true); $break ./
-/:$readableName FieldAccess:/
-
-FieldAccess ::= QualifiedSuperReceiver '.' 'Identifier'
-/.$putCase consumeFieldAccess(false); $break ./
-/:$readableName FieldAccess:/
-
-MethodInvocation ::= NameOrAj '(' ArgumentListopt ')' -- AspectJ Extension, was Name
-/.$putCase consumeMethodInvocationName(); $break ./
-
-MethodInvocation ::= Name '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')'  -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationNameWithTypeArguments(); $break ./
-
-MethodInvocation ::= Primary '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationPrimaryWithTypeArguments(); $break ./
-
-MethodInvocation ::= Primary '.' JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationPrimary(); $break ./
-
-MethodInvocation ::= QualifiedSuperReceiver '.' JavaIdentifier '(' ArgumentListopt ')' -- AJ JI was 'Identifier'
-/.$putCase consumeMethodInvocationPrimary(); $break ./
-
-MethodInvocation ::= QualifiedSuperReceiver '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AJ JI was 'Identifier'
-/.$putCase consumeMethodInvocationPrimaryWithTypeArguments(); $break ./
-
-MethodInvocation ::= 'super' '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationSuperWithTypeArguments(); $break ./
-
-MethodInvocation ::= 'super' '.' JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationSuper(); $break ./
-/:$readableName MethodInvocation:/
-
--- (pr159268)
-ArrayAccess ::= Name '[' Expression ']'
-/.$putCase consumeArrayAccess(true); $break ./
-ArrayAccess ::= AjName '[' Expression ']'
-/.$putCase consumeArrayAccess(true); $break ./
-ArrayAccess ::= PrimaryNoNewArray '[' Expression ']'
-/.$putCase consumeArrayAccess(false); $break ./
-ArrayAccess ::= ArrayCreationWithArrayInitializer '[' Expression ']'
-/.$putCase consumeArrayAccess(false); $break ./
-/:$readableName ArrayAccess:/
-
-PostfixExpression -> Primary
-PostfixExpression ::= NameOrAj -- AspectJ Extension, was Name
-/.$putCase consumePostfixExpression(); $break ./
-PostfixExpression -> PostIncrementExpression
-PostfixExpression -> PostDecrementExpression
-/:$readableName Expression:/
-
-PostIncrementExpression ::= PostfixExpression '++'
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS,true); $break ./
-/:$readableName PostIncrementExpression:/
-
-PostDecrementExpression ::= PostfixExpression '--'
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS,true); $break ./
-/:$readableName PostDecrementExpression:/
-
---for source managment purpose
-PushPosition ::= $empty
- /.$putCase consumePushPosition(); $break ./
-/:$readableName PushPosition:/
-
-UnaryExpression -> PreIncrementExpression
-UnaryExpression -> PreDecrementExpression
-UnaryExpression ::= '+' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./
-UnaryExpression ::= '-' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./
-UnaryExpression -> UnaryExpressionNotPlusMinus
-/:$readableName Expression:/
-
-PreIncrementExpression ::= '++' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS,false); $break ./
-/:$readableName PreIncrementExpression:/
-
-PreDecrementExpression ::= '--' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS,false); $break ./
-/:$readableName PreDecrementExpression:/
-
-UnaryExpressionNotPlusMinus -> PostfixExpression
-UnaryExpressionNotPlusMinus ::= '~' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./
-UnaryExpressionNotPlusMinus ::= '!' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./
-UnaryExpressionNotPlusMinus -> CastExpression
-/:$readableName Expression:/
-
-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpression
-/.$putCase consumeCastExpressionWithPrimitiveType(); $break ./
-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithGenericsArray(); $break ./
-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression '.' ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpressionWithQualifiedGenerics UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithQualifiedGenericsArray(); $break ./
-CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionLL1(); $break ./
-CastExpression ::=  BeginIntersectionCast PushLPAREN CastNameAndBounds PushRPAREN InsideCastExpressionLL1WithBounds UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionLL1WithBounds(); $break ./
-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithNameArray(); $break ./
-/:$readableName CastExpression:/
-
-AdditionalBoundsListOpt ::= $empty
-/.$putCase consumeZeroAdditionalBounds(); $break ./
-/:$readableName AdditionalBoundsListOpt:/
-AdditionalBoundsListOpt -> AdditionalBoundList
-/:$compliance 1.8:/
-/:$readableName AdditionalBoundsListOpt:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ParenthesizedCastNameAndBounds ::= '(' CastNameAndBounds ')'
-/:$readableName ParenthesizedCastNameAndBounds:/
-
-CastNameAndBounds -> Name AdditionalBoundList
-/:$compliance 1.8:/
-/:$readableName CastNameAndBounds:/
-
-OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments
-/.$putCase consumeOnlyTypeArgumentsForCastExpression(); $break ./
-/:$readableName TypeArguments:/
-
-InsideCastExpression ::= $empty
-/.$putCase consumeInsideCastExpression(); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionLL1 ::= $empty
-/.$putCase consumeInsideCastExpressionLL1(); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionLL1WithBounds ::= $empty
-/.$putCase consumeInsideCastExpressionLL1WithBounds (); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionWithQualifiedGenerics ::= $empty
-/.$putCase consumeInsideCastExpressionWithQualifiedGenerics(); $break ./
-/:$readableName InsideCastExpression:/
-
-MultiplicativeExpression -> UnaryExpression
-MultiplicativeExpression ::= MultiplicativeExpression '*' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression ::= MultiplicativeExpression '/' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression ::= MultiplicativeExpression '%' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./
-/:$readableName Expression:/
-
-AdditiveExpression -> MultiplicativeExpression
-AdditiveExpression ::= AdditiveExpression '+' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./
-AdditiveExpression ::= AdditiveExpression '-' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./
-/:$readableName Expression:/
-
-ShiftExpression -> AdditiveExpression
-ShiftExpression ::= ShiftExpression '<<' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression ::= ShiftExpression '>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression ::= ShiftExpression '>>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-/:$readableName Expression:/
-
-RelationalExpression -> ShiftExpression
-RelationalExpression ::= RelationalExpression '<' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./
-RelationalExpression ::= RelationalExpression '>' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./
-RelationalExpression ::= RelationalExpression '<=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression ::= RelationalExpression '>=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./
-/:$readableName Expression:/
-
-InstanceofExpression -> RelationalExpression
-InstanceofExpression ::= InstanceofExpression 'instanceof' ReferenceType
-/.$putCase consumeInstanceOfExpression(); $break ./
-/:$readableName Expression:/
-
-EqualityExpression -> InstanceofExpression
-EqualityExpression ::= EqualityExpression '==' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression ::= EqualityExpression '!=' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./
-/:$readableName Expression:/
-
-AndExpression -> EqualityExpression
-AndExpression ::= AndExpression '&' EqualityExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./
-/:$readableName Expression:/
-
-ExclusiveOrExpression -> AndExpression
-ExclusiveOrExpression ::= ExclusiveOrExpression '^' AndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./
-/:$readableName Expression:/
-
-InclusiveOrExpression -> ExclusiveOrExpression
-InclusiveOrExpression ::= InclusiveOrExpression '|' ExclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./
-/:$readableName Expression:/
-
-ConditionalAndExpression -> InclusiveOrExpression
-ConditionalAndExpression ::= ConditionalAndExpression '&&' InclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./
-/:$readableName Expression:/
-
-ConditionalOrExpression -> ConditionalAndExpression
-ConditionalOrExpression ::= ConditionalOrExpression '||' ConditionalAndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./
-/:$readableName Expression:/
-
-ConditionalExpression -> ConditionalOrExpression
-ConditionalExpression ::= ConditionalOrExpression '?' Expression ':' ConditionalExpression
-/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./
-/:$readableName Expression:/
-
-AssignmentExpression -> ConditionalExpression
-AssignmentExpression -> Assignment
-/:$readableName Expression:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
-Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression
-/.$putCase consumeAssignment(); $break ./
-/:$readableName Assignment:/
-
--- this rule is added to parse an array initializer in a assigment and then report a syntax error knowing the exact senario
-InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator ArrayInitializer
-/:$readableName ArrayInitializerAssignment:/
-/:$recovery:/
-Assignment ::= InvalidArrayInitializerAssignement
-/.$putcase ignoreExpressionAssignment();$break ./
-/:$recovery:/
-
-AssignmentOperator ::= '='
-/.$putCase consumeAssignmentOperator(EQUAL); $break ./
-AssignmentOperator ::= '*='
-/.$putCase consumeAssignmentOperator(MULTIPLY); $break ./
-AssignmentOperator ::= '/='
-/.$putCase consumeAssignmentOperator(DIVIDE); $break ./
-AssignmentOperator ::= '%='
-/.$putCase consumeAssignmentOperator(REMAINDER); $break ./
-AssignmentOperator ::= '+='
-/.$putCase consumeAssignmentOperator(PLUS); $break ./
-AssignmentOperator ::= '-='
-/.$putCase consumeAssignmentOperator(MINUS); $break ./
-AssignmentOperator ::= '<<='
-/.$putCase consumeAssignmentOperator(LEFT_SHIFT); $break ./
-AssignmentOperator ::= '>>='
-/.$putCase consumeAssignmentOperator(RIGHT_SHIFT); $break ./
-AssignmentOperator ::= '>>>='
-/.$putCase consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); $break ./
-AssignmentOperator ::= '&='
-/.$putCase consumeAssignmentOperator(AND); $break ./
-AssignmentOperator ::= '^='
-/.$putCase consumeAssignmentOperator(XOR); $break ./
-AssignmentOperator ::= '|='
-/.$putCase consumeAssignmentOperator(OR); $break ./
-/:$readableName AssignmentOperator:/
-/:$recovery_template =:/
-
--- For handling lambda expressions, we need to know when a full Expression
--- has been reduced.
-Expression ::= AssignmentExpression
-/.$putCase consumeExpression(); $break ./
-/:$readableName Expression:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
--- The following rules are for optional nonterminals.
---
-ClassHeaderExtendsopt ::= $empty
-ClassHeaderExtendsopt -> ClassHeaderExtends
-/:$readableName ClassHeaderExtends:/
-
-Expressionopt ::= $empty
-/.$putCase consumeEmptyExpression(); $break ./
-Expressionopt -> Expression
-/:$readableName Expression:/
-
-ConstantExpression -> Expression
-/:$readableName ConstantExpression:/
-
----------------------------------------------------------------------------------------
---
--- The rules below are for optional terminal symbols.  An optional comma,
--- is only used in the context of an array initializer - It is a
--- "syntactic sugar" that otherwise serves no other purpose. By contrast,
--- an optional identifier is used in the definition of a break and
--- continue statement. When the identifier does not appear, a NULL
--- is produced. When the identifier is present, the user should use the
--- corresponding TOKEN(i) method. See break statement as an example.
---
----------------------------------------------------------------------------------------
-
-,opt -> $empty
-,opt -> ,
-/:$readableName ,:/
-
-ClassBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./
-ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations
-/.$putCase consumeClassBodyDeclarationsopt(); $break ./
-/:$readableName ClassBodyDeclarations:/
-
-Modifiersopt ::= $empty
-/. $putCase consumeDefaultModifiers(); $break ./
-Modifiersopt ::= Modifiers
-/.$putCase consumeModifiers(); $break ./
-/:$readableName Modifiers:/
-
-BlockStatementsopt ::= $empty
-/.$putCase consumeEmptyBlockStatementsopt(); $break ./
-BlockStatementsopt -> BlockStatements
-/:$readableName BlockStatements:/
-
-Dimsopt ::= $empty
-/. $putCase consumeEmptyDimsopt(); $break ./
-Dimsopt -> Dims
-/:$readableName Dimensions:/
-
-ArgumentListopt ::= $empty
-/. $putCase consumeEmptyArgumentListopt(); $break ./
-ArgumentListopt -> ArgumentList
-/:$readableName ArgumentList:/
-
-MethodHeaderThrowsClauseopt ::= $empty
-MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause
-/:$readableName MethodHeaderThrowsClause:/
-
-FormalParameterListopt ::= $empty
-/.$putcase consumeFormalParameterListopt(); $break ./
-FormalParameterListopt -> FormalParameterList
-/:$readableName FormalParameterList:/
-
-ClassHeaderImplementsopt ::= $empty
-ClassHeaderImplementsopt -> ClassHeaderImplements
-/:$readableName ClassHeaderImplements:/
-
-InterfaceMemberDeclarationsopt ::= $empty
-/. $putCase consumeEmptyInterfaceMemberDeclarationsopt(); $break ./
-InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations
-/. $putCase consumeInterfaceMemberDeclarationsopt(); $break ./
-/:$readableName InterfaceMemberDeclarations:/
-
-NestedType ::= $empty
-/.$putCase consumeNestedType(); $break./
-/:$readableName NestedType:/
-
-ForInitopt ::= $empty
-/. $putCase consumeEmptyForInitopt(); $break ./
-ForInitopt -> ForInit
-/:$readableName ForInit:/
-
-ForUpdateopt ::= $empty
-/. $putCase consumeEmptyForUpdateopt(); $break ./
-ForUpdateopt -> ForUpdate
-/:$readableName ForUpdate:/
-
-InterfaceHeaderExtendsopt ::= $empty
-InterfaceHeaderExtendsopt -> InterfaceHeaderExtends
-/:$readableName InterfaceHeaderExtends:/
-
-Catchesopt ::= $empty
-/. $putCase consumeEmptyCatchesopt(); $break ./
-Catchesopt -> Catches
-/:$readableName Catches:/
-
------------------------------------------------
--- 1.5 features : enum type
------------------------------------------------
-EnumDeclaration ::= EnumHeader EnumBody
-/. $putCase consumeEnumDeclaration(); $break ./
-/:$readableName EnumDeclaration:/
-
-EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt
-/. $putCase consumeEnumHeader(); $break ./
-/:$readableName EnumHeader:/
-
-EnumHeaderName ::= Modifiersopt 'enum' JavaIdentifier -- AspectJ Extension, was Identifier
-/. $putCase consumeEnumHeaderName(); $break ./
-/:$compliance 1.5:/
-EnumHeaderName ::= Modifiersopt 'enum' JavaIdentifier TypeParameters -- AspectJ Extension, was Identifier
-/. $putCase consumeEnumHeaderNameWithTypeParameters(); $break ./
-/:$readableName EnumHeaderName:/
-/:$compliance 1.5:/
-
-EnumBody ::= '{' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyNoConstants(); $break ./
-EnumBody ::= '{' ',' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyNoConstants(); $break ./
-EnumBody ::= '{' EnumConstants ',' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyWithConstants(); $break ./
-EnumBody ::= '{' EnumConstants EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyWithConstants(); $break ./
-/:$readableName EnumBody:/
-
-EnumConstants -> EnumConstant
-EnumConstants ::= EnumConstants ',' EnumConstant
-/.$putCase consumeEnumConstants(); $break ./
-/:$readableName EnumConstants:/
-
-EnumConstantHeaderName ::= Modifiersopt Identifier
-/.$putCase consumeEnumConstantHeaderName(); $break ./
-/:$readableName EnumConstantHeaderName:/
-
-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt RestoreDiet
-/.$putCase consumeEnumConstantHeader(); $break ./
-/:$readableName EnumConstantHeader:/
-
-EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody RestoreDiet
-/.$putCase consumeEnumConstantWithClassBody(); $break ./
-EnumConstant ::= EnumConstantHeader
-/.$putCase consumeEnumConstantNoClassBody(); $break ./
-/:$readableName EnumConstant:/
-
-Arguments ::= '(' ArgumentListopt ')'
-/.$putCase consumeArguments(); $break ./
-/:$readableName Arguments:/
-
-Argumentsopt ::= $empty
-/.$putCase consumeEmptyArguments(); $break ./
-Argumentsopt -> Arguments
-/:$readableName Argumentsopt:/
-
-EnumDeclarations ::= ';' ClassBodyDeclarationsopt
-/.$putCase consumeEnumDeclarations(); $break ./
-/:$readableName EnumDeclarations:/
-
-EnumBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyEnumDeclarations(); $break ./
-EnumBodyDeclarationsopt -> EnumDeclarations
-/:$readableName EnumBodyDeclarationsopt:/
-
------------------------------------------------
--- 1.5 features : enhanced for statement
------------------------------------------------
-EnhancedForStatement ::= EnhancedForStatementHeader Statement
-/.$putCase consumeEnhancedForStatement(); $break ./
-/:$readableName EnhancedForStatement:/
-
-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader StatementNoShortIf
-/.$putCase consumeEnhancedForStatement(); $break ./
-/:$readableName EnhancedForStatementNoShortIf:/
-
-EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers JavaIdentifier Dimsopt -- AspectJ extension, was Identifier
-/.$putCase consumeEnhancedForStatementHeaderInit(false); $break ./
-/:$readableName EnhancedForStatementHeaderInit:/
-
-EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers JavaIdentifier Dimsopt -- AspectJ extension, was Identifier
-/.$putCase consumeEnhancedForStatementHeaderInit(true); $break ./
-/:$readableName EnhancedForStatementHeaderInit:/
-
-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit ':' Expression ')'
-/.$putCase consumeEnhancedForStatementHeader(); $break ./
-/:$readableName EnhancedForStatementHeader:/
-/:$compliance 1.5:/
-
------------------------------------------------
--- 1.5 features : static imports
------------------------------------------------
-SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName SingleStaticImportDeclaration:/
-
-SingleStaticImportDeclarationName ::= 'import' 'static' Name RejectTypeAnnotations
-/.$putCase consumeSingleStaticImportDeclarationName(); $break ./
-/:$readableName SingleStaticImportDeclarationName:/
-/:$compliance 1.5:/
-
-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName StaticImportOnDemandDeclaration:/
-
-StaticImportOnDemandDeclarationName ::= 'import' 'static' Name '.' RejectTypeAnnotations '*'
-/.$putCase consumeStaticImportOnDemandDeclarationName(); $break ./
-/:$readableName StaticImportOnDemandDeclarationName:/
-/:$compliance 1.5:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-TypeArguments ::= '<' TypeArgumentList1
-/.$putCase consumeTypeArguments(); $break ./
-/:$readableName TypeArguments:/
-/:$compliance 1.5:/
-
-OnlyTypeArguments ::= '<' TypeArgumentList1
-/.$putCase consumeOnlyTypeArguments(); $break ./
-/:$readableName TypeArguments:/
-/:$compliance 1.5:/
-
-TypeArgumentList1 -> TypeArgument1
-/:$compliance 1.5:/
-TypeArgumentList1 ::= TypeArgumentList ',' TypeArgument1
-/.$putCase consumeTypeArgumentList1(); $break ./
-/:$readableName TypeArgumentList1:/
-/:$compliance 1.5:/
-
-TypeArgumentList -> TypeArgument
-/:$compliance 1.5:/
-TypeArgumentList ::= TypeArgumentList ',' TypeArgument
-/.$putCase consumeTypeArgumentList(); $break ./
-/:$readableName TypeArgumentList:/
-/:$compliance 1.5:/
-
-TypeArgument ::= ReferenceType
-/.$putCase consumeTypeArgument(); $break ./
-/:$compliance 1.5:/
-TypeArgument -> Wildcard
-/:$readableName TypeArgument:/
-/:$compliance 1.5:/
-
-TypeArgument1 -> ReferenceType1
-/:$compliance 1.5:/
-TypeArgument1 -> Wildcard1
-/:$readableName TypeArgument1:/
-/:$compliance 1.5:/
-
-ReferenceType1 ::= ReferenceType '>'
-/.$putCase consumeReferenceType1(); $break ./
-/:$compliance 1.5:/
-ReferenceType1 ::= ClassOrInterface '<' TypeArgumentList2
-/.$putCase consumeTypeArgumentReferenceType1(); $break ./
-/:$readableName ReferenceType1:/
-/:$compliance 1.5:/
-
-TypeArgumentList2 -> TypeArgument2
-/:$compliance 1.5:/
-TypeArgumentList2 ::= TypeArgumentList ',' TypeArgument2
-/.$putCase consumeTypeArgumentList2(); $break ./
-/:$readableName TypeArgumentList2:/
-/:$compliance 1.5:/
-
-TypeArgument2 -> ReferenceType2
-/:$compliance 1.5:/
-TypeArgument2 -> Wildcard2
-/:$readableName TypeArgument2:/
-/:$compliance 1.5:/
-
-ReferenceType2 ::= ReferenceType '>>'
-/.$putCase consumeReferenceType2(); $break ./
-/:$compliance 1.5:/
-ReferenceType2 ::= ClassOrInterface '<' TypeArgumentList3
-/.$putCase consumeTypeArgumentReferenceType2(); $break ./
-/:$readableName ReferenceType2:/
-/:$compliance 1.5:/
-
-TypeArgumentList3 -> TypeArgument3
-TypeArgumentList3 ::= TypeArgumentList ',' TypeArgument3
-/.$putCase consumeTypeArgumentList3(); $break ./
-/:$readableName TypeArgumentList3:/
-/:$compliance 1.5:/
-
-TypeArgument3 -> ReferenceType3
-TypeArgument3 -> Wildcard3
-/:$readableName TypeArgument3:/
-/:$compliance 1.5:/
-
-ReferenceType3 ::= ReferenceType '>>>'
-/.$putCase consumeReferenceType3(); $break ./
-/:$readableName ReferenceType3:/
-/:$compliance 1.5:/
-
-Wildcard ::= TypeAnnotationsopt '?'
-/.$putCase consumeWildcard(); $break ./
-/:$compliance 1.5:/
-Wildcard ::= TypeAnnotationsopt '?' WildcardBounds
-/.$putCase consumeWildcardWithBounds(); $break ./
-/:$readableName Wildcard:/
-/:$compliance 1.5:/
-
-WildcardBounds ::= 'extends' ReferenceType
-/.$putCase consumeWildcardBoundsExtends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds ::= 'super' ReferenceType
-/.$putCase consumeWildcardBoundsSuper(); $break ./
-/:$readableName WildcardBounds:/
-/:$compliance 1.5:/
-
-Wildcard1 ::= TypeAnnotationsopt '?' '>'
-/.$putCase consumeWildcard1(); $break ./
-/:$compliance 1.5:/
-Wildcard1 ::= TypeAnnotationsopt '?' WildcardBounds1
-/.$putCase consumeWildcard1WithBounds(); $break ./
-/:$readableName Wildcard1:/
-/:$compliance 1.5:/
-
-WildcardBounds1 ::= 'extends' ReferenceType1
-/.$putCase consumeWildcardBounds1Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds1 ::= 'super' ReferenceType1
-/.$putCase consumeWildcardBounds1Super(); $break ./
-/:$readableName WildcardBounds1:/
-/:$compliance 1.5:/
-
-Wildcard2 ::= TypeAnnotationsopt '?' '>>'
-/.$putCase consumeWildcard2(); $break ./
-/:$compliance 1.5:/
-Wildcard2 ::= TypeAnnotationsopt '?' WildcardBounds2
-/.$putCase consumeWildcard2WithBounds(); $break ./
-/:$readableName Wildcard2:/
-/:$compliance 1.5:/
-
-WildcardBounds2 ::= 'extends' ReferenceType2
-/.$putCase consumeWildcardBounds2Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds2 ::= 'super' ReferenceType2
-/.$putCase consumeWildcardBounds2Super(); $break ./
-/:$readableName WildcardBounds2:/
-/:$compliance 1.5:/
-
-Wildcard3 ::= TypeAnnotationsopt '?' '>>>'
-/.$putCase consumeWildcard3(); $break ./
-/:$compliance 1.5:/
-Wildcard3 ::= TypeAnnotationsopt '?' WildcardBounds3
-/.$putCase consumeWildcard3WithBounds(); $break ./
-/:$readableName Wildcard3:/
-/:$compliance 1.5:/
-
-WildcardBounds3 ::= 'extends' ReferenceType3
-/.$putCase consumeWildcardBounds3Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds3 ::= 'super' ReferenceType3
-/.$putCase consumeWildcardBounds3Super(); $break ./
-/:$readableName WildcardBound3:/
-/:$compliance 1.5:/
-
-TypeParameterHeader ::= TypeAnnotationsopt JavaIdentifier -- AJ JavaIdentifier was Identifier
-/.$putCase consumeTypeParameterHeader(); $break ./
-/:$readableName TypeParameter:/
-/:$compliance 1.5:/
-
-TypeParameters ::= '<' TypeParameterList1
-/.$putCase consumeTypeParameters(); $break ./
-/:$readableName TypeParameters:/
-/:$compliance 1.5:/
-
-TypeParameterList -> TypeParameter
-/:$compliance 1.5:/
-TypeParameterList ::= TypeParameterList ',' TypeParameter
-/.$putCase consumeTypeParameterList(); $break ./
-/:$readableName TypeParameterList:/
-/:$compliance 1.5:/
-
-TypeParameter -> TypeParameterHeader
-/:$compliance 1.5:/
-TypeParameter ::= TypeParameterHeader 'extends' ReferenceType
-/.$putCase consumeTypeParameterWithExtends(); $break ./
-/:$compliance 1.5:/
-TypeParameter ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList
-/.$putCase consumeTypeParameterWithExtendsAndBounds(); $break ./
-/:$readableName TypeParameter:/
-/:$compliance 1.5:/
-
-AdditionalBoundList -> AdditionalBound
-/:$compliance 1.5:/
-AdditionalBoundList ::= AdditionalBoundList AdditionalBound
-/.$putCase consumeAdditionalBoundList(); $break ./
-/:$readableName AdditionalBoundList:/
-
-AdditionalBound ::= '&' ReferenceType
-/.$putCase consumeAdditionalBound(); $break ./
-/:$readableName AdditionalBound:/
-/:$compliance 1.5:/
-
-TypeParameterList1 -> TypeParameter1
-/:$compliance 1.5:/
-TypeParameterList1 ::= TypeParameterList ',' TypeParameter1
-/.$putCase consumeTypeParameterList1(); $break ./
-/:$readableName TypeParameterList1:/
-/:$compliance 1.5:/
-
-TypeParameter1 ::= TypeParameterHeader '>'
-/.$putCase consumeTypeParameter1(); $break ./
-/:$compliance 1.5:/
-TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType1
-/.$putCase consumeTypeParameter1WithExtends(); $break ./
-/:$compliance 1.5:/
-TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList1
-/.$putCase consumeTypeParameter1WithExtendsAndBounds(); $break ./
-/:$readableName TypeParameter1:/
-/:$compliance 1.5:/
-
-AdditionalBoundList1 -> AdditionalBound1
-/:$compliance 1.5:/
-AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1
-/.$putCase consumeAdditionalBoundList1(); $break ./
-/:$readableName AdditionalBoundList1:/
-/:$compliance 1.5:/
-
-AdditionalBound1 ::= '&' ReferenceType1
-/.$putCase consumeAdditionalBound1(); $break ./
-/:$readableName AdditionalBound1:/
-/:$compliance 1.5:/
-
--------------------------------------------------
--- Duplicate rules to remove ambiguity for (x) --
--------------------------------------------------
-PostfixExpression_NotName -> Primary
-PostfixExpression_NotName -> PostIncrementExpression
-PostfixExpression_NotName -> PostDecrementExpression
-/:$readableName Expression:/
-
-UnaryExpression_NotName -> PreIncrementExpression
-UnaryExpression_NotName -> PreDecrementExpression
-UnaryExpression_NotName ::= '+' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./
-UnaryExpression_NotName ::= '-' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./
-UnaryExpression_NotName -> UnaryExpressionNotPlusMinus_NotName
-/:$readableName Expression:/
-
-UnaryExpressionNotPlusMinus_NotName -> PostfixExpression_NotName
-UnaryExpressionNotPlusMinus_NotName ::= '~' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./
-UnaryExpressionNotPlusMinus_NotName ::= '!' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./
-UnaryExpressionNotPlusMinus_NotName -> CastExpression
-/:$readableName Expression:/
-
-MultiplicativeExpression_NotName -> UnaryExpression_NotName
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '*' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '*' UnaryExpression  -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '/' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '/' UnaryExpression  -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '%' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '%' UnaryExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.REMAINDER); $break ./
-/:$readableName Expression:/
-
-AdditiveExpression_NotName -> MultiplicativeExpression_NotName
-AdditiveExpression_NotName ::= AdditiveExpression_NotName '+' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./
-AdditiveExpression_NotName ::= NameOrAj '+' MultiplicativeExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.PLUS); $break ./
-AdditiveExpression_NotName ::= AdditiveExpression_NotName '-' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./
-AdditiveExpression_NotName ::= NameOrAj '-' MultiplicativeExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.MINUS); $break ./
-/:$readableName Expression:/
-
-ShiftExpression_NotName -> AdditiveExpression_NotName
-ShiftExpression_NotName ::= ShiftExpression_NotName '<<' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '<<' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression_NotName ::= ShiftExpression_NotName '>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '>>' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= ShiftExpression_NotName '>>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '>>>' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-/:$readableName Expression:/
-
-RelationalExpression_NotName -> ShiftExpression_NotName
-RelationalExpression_NotName ::= ShiftExpression_NotName '<' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./
-RelationalExpression_NotName ::= Name '<' ShiftExpression
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS); $break ./
-RelationalExpression_NotName ::= ShiftExpression_NotName '>' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./
-RelationalExpression_NotName ::= NameOrAj '>' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER); $break ./
-RelationalExpression_NotName ::= RelationalExpression_NotName '<=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression_NotName ::= NameOrAj '<=' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression_NotName ::= RelationalExpression_NotName '>=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./
-RelationalExpression_NotName ::= NameOrAj '>=' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); $break ./
-/:$readableName Expression:/
-
-InstanceofExpression_NotName -> RelationalExpression_NotName
-InstanceofExpression_NotName ::= NameOrAj 'instanceof' ReferenceType -- AspectJ Extension was Name
-/.$putCase consumeInstanceOfExpressionWithName(); $break ./
-InstanceofExpression_NotName ::= InstanceofExpression_NotName 'instanceof' ReferenceType
-/.$putCase consumeInstanceOfExpression(); $break ./
-/:$readableName Expression:/
-
-EqualityExpression_NotName -> InstanceofExpression_NotName
-EqualityExpression_NotName ::= EqualityExpression_NotName '==' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression_NotName ::= NameOrAj '==' InstanceofExpression -- AspectJ Extension was Name
-/.$putCase consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression_NotName ::= EqualityExpression_NotName '!=' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./
-EqualityExpression_NotName ::= NameOrAj '!=' InstanceofExpression -- AspectJ Extension was Name
-/.$putCase consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); $break ./
-/:$readableName Expression:/
-
-AndExpression_NotName -> EqualityExpression_NotName
-AndExpression_NotName ::= AndExpression_NotName '&' EqualityExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./
-AndExpression_NotName ::= NameOrAj '&' EqualityExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND); $break ./
-/:$readableName Expression:/
-
-ExclusiveOrExpression_NotName -> AndExpression_NotName
-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName '^' AndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./
-ExclusiveOrExpression_NotName ::= NameOrAj '^' AndExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.XOR); $break ./
-/:$readableName Expression:/
-
-InclusiveOrExpression_NotName -> ExclusiveOrExpression_NotName
-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName '|' ExclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./
-InclusiveOrExpression_NotName ::= NameOrAj '|' ExclusiveOrExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR); $break ./
-/:$readableName Expression:/
-
-ConditionalAndExpression_NotName -> InclusiveOrExpression_NotName
-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName '&&' InclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./
-ConditionalAndExpression_NotName ::= NameOrAj '&&' InclusiveOrExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND_AND); $break ./
-/:$readableName Expression:/
-
-ConditionalOrExpression_NotName -> ConditionalAndExpression_NotName
-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName '||' ConditionalAndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./
-ConditionalOrExpression_NotName ::= NameOrAj '||' ConditionalAndExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR_OR); $break ./
-/:$readableName Expression:/
-
-ConditionalExpression_NotName -> ConditionalOrExpression_NotName
-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName '?' Expression ':' ConditionalExpression
-/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./
-ConditionalExpression_NotName ::= NameOrAj '?' Expression ':' ConditionalExpression -- AspectJ Extension was Name
-/.$putCase consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; $break ./
-/:$readableName Expression:/
-
-AssignmentExpression_NotName -> ConditionalExpression_NotName
-AssignmentExpression_NotName -> Assignment
-/:$readableName Expression:/
-
-Expression_NotName -> AssignmentExpression_NotName
-/:$readableName Expression:/
------------------------------------------------
--- 1.5 features : end of generics
------------------------------------------------
------------------------------------------------
--- 1.5 features : annotation - Metadata feature jsr175
------------------------------------------------
-AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface JavaIdentifier -- AspectJ extension, was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface JavaIdentifier TypeParameters -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface JavaIdentifier TypeParameters -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface JavaIdentifier -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./
-/:$readableName AnnotationTypeDeclarationHeaderName:/
-/:$compliance 1.5:/
-
-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeAnnotationTypeDeclarationHeader() ; $break ./
-/:$readableName AnnotationTypeDeclarationHeader:/
-/:$compliance 1.5:/
-
-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader AnnotationTypeBody
-/.$putCase consumeAnnotationTypeDeclaration() ; $break ./
-/:$readableName AnnotationTypeDeclaration:/
-/:$compliance 1.5:/
-
-AnnotationTypeBody ::= '{' AnnotationTypeMemberDeclarationsopt '}'
-/:$readableName AnnotationTypeBody:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclarationsopt ::= $empty
-/.$putCase consumeEmptyAnnotationTypeMemberDeclarationsopt() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclarationsopt ::= NestedType AnnotationTypeMemberDeclarations
-/.$putCase consumeAnnotationTypeMemberDeclarationsopt() ; $break ./
-/:$readableName AnnotationTypeMemberDeclarations:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclarations -> AnnotationTypeMemberDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations AnnotationTypeMemberDeclaration
-/.$putCase consumeAnnotationTypeMemberDeclarations() ; $break ./
-/:$readableName AnnotationTypeMemberDeclarations:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 'JavaIdentifier' '(' -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeMethodHeaderNameWithTypeParameters(true); $break ./
-AnnotationMethodHeaderName ::= Modifiersopt Type 'JavaIdentifier' '(' -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeMethodHeaderName(true); $break ./
-/:$readableName MethodHeaderName:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeaderDefaultValueopt ::= $empty
-/.$putCase consumeEmptyMethodHeaderDefaultValue() ; $break ./
-/:$readableName MethodHeaderDefaultValue:/
-/:$compliance 1.5:/
-AnnotationMethodHeaderDefaultValueopt ::= DefaultValue
-/.$putCase consumeMethodHeaderDefaultValue(); $break ./
-/:$readableName MethodHeaderDefaultValue:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName AnnotationMethodHeader:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader ';'
-/.$putCase consumeAnnotationTypeMemberDeclaration() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> ConstantDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> ConstructorDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> TypeDeclaration
-/:$readableName AnnotationTypeMemberDeclaration:/
-/:$compliance 1.5:/
-
-DefaultValue ::= 'default' MemberValue
-/:$readableName DefaultValue:/
-/:$compliance 1.5:/
-
-Annotation -> NormalAnnotation
-/:$compliance 1.5:/
-Annotation -> MarkerAnnotation
-/:$compliance 1.5:/
-Annotation -> SingleMemberAnnotation
-/:$readableName Annotation:/
-/:$compliance 1.5:/
-
-AnnotationName ::= '@' UnannotatableNameOrAj -- AspectJ: was UnannotatableName
-/.$putCase consumeAnnotationName() ; $break ./
-/:$readableName AnnotationName:/
-/:$compliance 1.5:/
-/:$recovery_template @ Identifier:/
-
-NormalAnnotation ::= AnnotationName '(' MemberValuePairsopt ')'
-/.$putCase consumeNormalAnnotation(false) ; $break ./
-/:$readableName NormalAnnotation:/
-/:$compliance 1.5:/
-
-MemberValuePairsopt ::= $empty
-/.$putCase consumeEmptyMemberValuePairsopt() ; $break ./
-/:$compliance 1.5:/
-MemberValuePairsopt -> MemberValuePairs
-/:$readableName MemberValuePairsopt:/
-/:$compliance 1.5:/
-
-MemberValuePairs -> MemberValuePair
-/:$compliance 1.5:/
-MemberValuePairs ::= MemberValuePairs ',' MemberValuePair
-/.$putCase consumeMemberValuePairs() ; $break ./
-/:$readableName MemberValuePairs:/
-/:$compliance 1.5:/
-
-MemberValuePair ::= SimpleNameOrAj '=' EnterMemberValue MemberValue ExitMemberValue  -- AspectJ Extension was SimpleName
-/.$putCase consumeMemberValuePair() ; $break ./
-/:$readableName MemberValuePair:/
-/:$compliance 1.5:/
-
-EnterMemberValue ::= $empty
-/.$putCase consumeEnterMemberValue() ; $break ./
-/:$readableName EnterMemberValue:/
-/:$compliance 1.5:/
-
-ExitMemberValue ::= $empty
-/.$putCase consumeExitMemberValue() ; $break ./
-/:$readableName ExitMemberValue:/
-/:$compliance 1.5:/
-
-MemberValue -> ConditionalExpression_NotName
-/:$compliance 1.5:/
-MemberValue ::= NameOrAj -- AspectJ Extension, was Name
-/.$putCase consumeMemberValueAsName() ; $break ./
-/:$compliance 1.5:/
-MemberValue -> Annotation
-/:$compliance 1.5:/
-MemberValue -> MemberValueArrayInitializer
-/:$readableName MemberValue:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-/:$compliance 1.5:/
-
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues ',' '}'
-/.$putCase consumeMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues '}'
-/.$putCase consumeMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace ',' '}'
-/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace '}'
-/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./
-/:$readableName MemberValueArrayInitializer:/
-/:$compliance 1.5:/
-
-EnterMemberValueArrayInitializer ::= $empty
-/.$putCase consumeEnterMemberValueArrayInitializer() ; $break ./
-/:$readableName EnterMemberValueArrayInitializer:/
-/:$compliance 1.5:/
-
-MemberValues -> MemberValue
-/:$compliance 1.5:/
-MemberValues ::= MemberValues ',' MemberValue
-/.$putCase consumeMemberValues() ; $break ./
-/:$readableName MemberValues:/
-/:$compliance 1.5:/
-
-MarkerAnnotation ::= AnnotationName
-/.$putCase consumeMarkerAnnotation(false) ; $break ./
-/:$readableName MarkerAnnotation:/
-/:$compliance 1.5:/
-
-SingleMemberAnnotationMemberValue ::= MemberValue
-/.$putCase consumeSingleMemberAnnotationMemberValue() ; $break ./
-/:$readableName MemberValue:/
-/:$compliance 1.5:/
-
-SingleMemberAnnotation ::= AnnotationName '(' SingleMemberAnnotationMemberValue ')'
-/.$putCase consumeSingleMemberAnnotation(false) ; $break ./
-/:$readableName SingleMemberAnnotation:/
-/:$compliance 1.5:/
---------------------------------------
--- 1.5 features : end of annotation --
---------------------------------------
-
------------------------------------
--- 1.5 features : recovery rules --
------------------------------------
-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderNameWithTypeParameters(); $break ./
-/:$compliance 1.5:/
-RecoveryMethodHeaderName ::= Modifiersopt Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderName(); $break ./
-/:$readableName MethodHeaderName:/
-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderNameWithTypeParameters(); $break ./
-/:$compliance 1.5:/
-RecoveryMethodHeaderName ::= ModifiersWithDefault Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderName(); $break ./
-/:$readableName MethodHeaderName:/
-
-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt
-/.$putCase consumeMethodHeader(); $break ./
-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClause
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodHeader:/
------------------------------------
--- 1.5 features : recovery rules --
------------------------------------
-
-/.	}
-}./
-
-$names
-
-PLUS_PLUS ::=    '++'
-MINUS_MINUS ::=    '--'
-EQUAL_EQUAL ::=    '=='
-LESS_EQUAL ::=    '<='
-GREATER_EQUAL ::=    '>='
-NOT_EQUAL ::=    '!='
-LEFT_SHIFT ::=    '<<'
-RIGHT_SHIFT ::=    '>>'
-UNSIGNED_RIGHT_SHIFT ::=    '>>>'
-PLUS_EQUAL ::=    '+='
-MINUS_EQUAL ::=    '-='
-MULTIPLY_EQUAL ::=    '*='
-DIVIDE_EQUAL ::=    '/='
-AND_EQUAL ::=    '&='
-OR_EQUAL ::=    '|='
-XOR_EQUAL ::=    '^='
-REMAINDER_EQUAL ::=    '%='
-LEFT_SHIFT_EQUAL ::=    '<<='
-RIGHT_SHIFT_EQUAL ::=    '>>='
-UNSIGNED_RIGHT_SHIFT_EQUAL ::=    '>>>='
-OR_OR ::=    '||'
-AND_AND ::=    '&&'
-PLUS ::=    '+'
-MINUS ::=    '-'
-NOT ::=    '!'
-REMAINDER ::=    '%'
-XOR ::=    '^'
-AND ::=    '&'
-MULTIPLY ::=    '*'
-OR ::=    '|'
-TWIDDLE ::=    '~'
-DIVIDE ::=    '/'
-GREATER ::=    '>'
-LESS ::=    '<'
-LPAREN ::=    '('
-RPAREN ::=    ')'
-LBRACE ::=    '{'
-RBRACE ::=    '}'
-LBRACKET ::=    '['
-RBRACKET ::=    ']'
-SEMICOLON ::=    ';'
-QUESTION ::=    '?'
-COLON ::=    ':'
-COMMA ::=    ','
-DOT ::=    '.'
-EQUAL ::=    '='
-AT ::=    '@'
-AT308 ::= '@'
-AT308DOTDOTDOT ::= '@'
-ELLIPSIS ::=    '...'
-ARROW ::= '->'
-COLON_COLON ::= '::'
-
-$end
--- need a carriage return after the $end
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l
deleted file mode 100644
index c767fe7..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l
+++ /dev/null
@@ -1,118926 +0,0 @@
-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1

-

-%OPTIONS ACTION, AN=JavaAction.java, GP=java,

-%OPTIONS FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 ,

-%OPTIONS NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE,

-%OPTIONS ERROR_MAPS,

-%OPTIONS first follow

-%OPTIONS TRACE=FULL,

-%OPTIONS VERBOSE,

-%OPTIONS DEFERRED,

-%OPTIONS NAMES=MAXIMUM,

-%OPTIONS SCOPES,

-

-Options in effect:

-    ACTION  ACTFILE-NAME=JavaAction.java  BLOCKB=/.  BLOCKE=./  BYTE  CONFLICTS

-    DEFAULT=5  NODEBUG  DEFERRED  NOEDIT  ERROR-MAPS  ESCAPE=$  

-    FILE-PREFIX=java  FIRST  FOLLOW  GENERATE-PARSER=JAVA  NOGOTO-DEFAULT  

-    HACTFILE-NAME=javahdr.java  HBLOCKB=/:  HBLOCKE=:/  LALR=1  LIST  

-    MAX-DISTANCE=30  MIN-DISTANCE=3  NAMES=MAXIMUM  NONT-CHECK  ORMARK=|  

-    OUTPUT-SIZE=125  PREFIX=TokenName  READ-REDUCE  SCOPES  NOSHIFT-DEFAULT  

-    SINGLE-PRODUCTIONS  STACK-SIZE=128  STATES  SUFFIX=  TABLE=SPACE  

-    TRACE=FULL  VERBOSE  WARNINGS  XREF  

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2

-

-

-Defined Symbols:

-

-

-

-$putcase

-/.------------------------------------------------------------------------------

-    case $rule_number : if (DEBUG) { System.out.println("$rule_text"); }  //$NON-NLS-1$

-		   

-./------------------------------------------------------------------------------

-

-

-$break

-/.------------------------------------------------------------------------------

-			break;

-

-./------------------------------------------------------------------------------

-

-

-$readablename

-/.------------------------------------------------------------------------------

-1#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$compliance

-/.------------------------------------------------------------------------------

-2#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$recovery

-/.------------------------------------------------------------------------------

-2#$rule_number# recovery

-./------------------------------------------------------------------------------

-

-

-$recovery_template

-/.------------------------------------------------------------------------------

-3#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$no_statements_recovery

-/.------------------------------------------------------------------------------

-4#$rule_number# 1

-./------------------------------------------------------------------------------

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 3

-

-

-Aliases:

-

-&& ::= AND_AND

-] ::= RBRACKET

-< ::= LESS

-+= ::= PLUS_EQUAL

-& ::= AND

-++ ::= PLUS_PLUS

-... ::= ELLIPSIS

-+ ::= PLUS

-%= ::= REMAINDER_EQUAL

-} ::= RBRACE

-|| ::= OR_OR

->>>= ::= UNSIGNED_RIGHT_SHIFT_EQUAL

-; ::= SEMICOLON

-*= ::= MULTIPLY_EQUAL

-% ::= REMAINDER

->>> ::= UNSIGNED_RIGHT_SHIFT

-|= ::= OR_EQUAL

-@ ::= AT

-:: ::= COLON_COLON

-/= ::= DIVIDE_EQUAL

-* ::= MULTIPLY

-'|' ::= OR

-[ ::= LBRACKET

-@308 ::= AT308

-: ::= COLON

-/ ::= DIVIDE

->>= ::= RIGHT_SHIFT_EQUAL

-? ::= QUESTION

-) ::= RPAREN

-@308... ::= AT308DOTDOTDOT

-{ ::= LBRACE

->> ::= RIGHT_SHIFT

->= ::= GREATER_EQUAL

-. ::= DOT

-> ::= GREATER

--> ::= ARROW

--= ::= MINUS_EQUAL

-( ::= LPAREN

--- ::= MINUS_MINUS

-^= ::= XOR_EQUAL

-== ::= EQUAL_EQUAL

-- ::= MINUS

-<<= ::= LEFT_SHIFT_EQUAL

-^ ::= XOR

-= ::= EQUAL

-!= ::= NOT_EQUAL

-<= ::= LESS_EQUAL

-<< ::= LEFT_SHIFT

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 4

-

-, ::= COMMA

-&= ::= AND_EQUAL

-! ::= NOT

-~ ::= TWIDDLE

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 5

-

-

-Terminals:

-

-

-        Identifier abstract assert boolean break byte case catch char class 

-    continue const default do double else enum extends false final finally float 

-    for goto if implements import instanceof int interface long native new null 

-    package private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR TWIDDLE DIVIDE GREATER LESS LPAREN RPAREN 

-    LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS ARROW COLON_COLON BeginLambda BeginIntersectionCast 

-    BeginTypeArguments ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-    $error 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 6

-

-

-Rules:

-

-

-0     $acc ::= Goal 

-1     Goal ::= PLUS_PLUS CompilationUnit 

-2     Goal ::= MINUS_MINUS MethodBody 

-3     Goal ::= RIGHT_SHIFT StaticInitializer 

-4     Goal ::= RIGHT_SHIFT Initializer 

-5     Goal ::= UNSIGNED_RIGHT_SHIFT Header1 Modifiersopt 

-6     Goal ::= NOT Header2 Modifiersopt 

-7     Goal ::= MULTIPLY BlockStatements 

-8     Goal ::= MULTIPLY CatchHeader 

-9     Goal ::= AND_AND FieldDeclaration 

-10    Goal ::= OR_OR ImportDeclaration 

-11    Goal ::= QUESTION PackageDeclaration 

-12    Goal ::= PLUS TypeDeclaration 

-13    Goal ::= DIVIDE GenericMethodDeclaration 

-14    Goal ::= AND ClassBodyDeclarations 

-15    Goal ::= REMAINDER Expression 

-16    Goal ::= REMAINDER ArrayInitializer 

-17    Goal ::= TWIDDLE BlockStatementsopt 

-18    Goal ::= LBRACE BlockStatementopt 

-19    Goal ::= OR_OR MemberValue 

-20    Goal ::= QUESTION AnnotationTypeMemberDeclaration 

-21    Goal ::= ARROW ParenthesizedLambdaParameterList 

-22    Goal ::= LPAREN ParenthesizedCastNameAndBounds 

-23    Goal ::= LESS ReferenceExpressionTypeArgumentsAndTrunk 

-24    Goal ::= AT TypeAnnotations 

-25    Literal -> IntegerLiteral 

-26    Literal -> LongLiteral 

-27    Literal -> FloatingPointLiteral 

-28    Literal -> DoubleLiteral 

-29    Literal -> CharacterLiteral 

-30    Literal -> StringLiteral 

-31    Literal -> null 

-32    Literal -> BooleanLiteral 

-33    BooleanLiteral -> true 

-34    BooleanLiteral -> false 

-35    JavaIdentifier -> Identifier 

-36    JavaIdentifier -> AjSimpleName 

-37    JavaIdentifierNoAround -> Identifier 

-38    JavaIdentifierNoAround -> AjSimpleNameNoAround 

-39    Type ::= PrimitiveType 

-40    Type -> ReferenceType 

-41    PrimitiveType ::= TypeAnnotationsopt NumericType 

-42    NumericType -> IntegralType 

-43    NumericType -> FloatingPointType 

-44    PrimitiveType ::= TypeAnnotationsopt boolean 

-45    PrimitiveType ::= TypeAnnotationsopt void 

-46    IntegralType -> byte 

-47    IntegralType -> short 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 7

-

-

-48    IntegralType -> int 

-49    IntegralType -> long 

-50    IntegralType -> char 

-51    FloatingPointType -> float 

-52    FloatingPointType -> double 

-53    ReferenceType ::= ClassOrInterfaceType 

-54    ReferenceType -> ArrayType 

-55    ClassOrInterfaceType -> ClassOrInterface 

-56    ClassOrInterfaceType -> GenericType 

-57    ClassOrInterface ::= Name 

-58    ClassOrInterface ::= GenericType DOT Name 

-59    GenericType ::= ClassOrInterface TypeArguments 

-60    GenericType ::= ClassOrInterface LESS GREATER 

-61    ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name 

-62    ArrayType ::= PrimitiveType Dims 

-63    ArrayType ::= Name Dims 

-64    ArrayType ::= ArrayTypeWithTypeArgumentsName Dims 

-65    ArrayType ::= GenericType Dims 

-66    ClassType -> ClassOrInterfaceType 

-67    NameOrAj -> AjName 

-68    NameOrAj -> Name 

-69    SimpleNameOrAj -> AjSimpleName 

-70    SimpleNameOrAj -> SimpleName 

-71    AjName ::= AjSimpleName 

-72    AjName ::= AjQualifiedName 

-73    AjSimpleName -> AjSimpleNameNoAround 

-74    AjSimpleNameNoAround -> aspect 

-75    AjSimpleNameNoAround -> privileged 

-76    AjSimpleNameNoAround -> pointcut 

-77    AjSimpleName -> around 

-78    AjSimpleNameNoAround -> before 

-79    AjSimpleNameNoAround -> after 

-80    AjSimpleNameNoAround -> declare 

-81    AjQualifiedName ::= AjName DOT SimpleNameOrAj 

-82    UnannotatableNameOrAj -> AjName 

-83    UnannotatableNameOrAj -> UnannotatableName 

-84    Name ::= SimpleName 

-85    Name ::= TypeAnnotations SimpleName 

-86    Name -> QualifiedName 

-87    SimpleName -> Identifier 

-88    UnannotatableName -> SimpleName 

-89    UnannotatableName ::= UnannotatableName DOT SimpleName 

-90    QualifiedName ::= Name DOT JavaIdentifier 

-91    QualifiedName ::= Name DOT TypeAnnotations JavaIdentifier 

-92    TypeAnnotationsopt ::= 

-93    TypeAnnotationsopt -> TypeAnnotations 

-94    TypeAnnotations ::= TypeAnnotations0 

-95    TypeAnnotations0 -> TypeAnnotation 

-96    TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation 

-97    TypeAnnotation ::= NormalTypeAnnotation 

-98    TypeAnnotation ::= MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 8

-

-

-99    TypeAnnotation ::= SingleMemberTypeAnnotation 

-100   TypeAnnotationName ::= AT308 UnannotatableName 

-101   NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt 

-                               RPAREN 

-102   MarkerTypeAnnotation ::= TypeAnnotationName 

-103   SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                                     SingleMemberAnnotationMemberValue RPAREN 

-104   RejectTypeAnnotations ::= 

-105   PushZeroTypeAnnotations ::= 

-106   VariableDeclaratorIdOrThis ::= this 

-107   VariableDeclaratorIdOrThis ::= UnannotatableName DOT this 

-108   VariableDeclaratorIdOrThis ::= VariableDeclaratorId 

-109   CompilationUnit ::= EnterCompilationUnit InternalCompilationUnit 

-110   InternalCompilationUnit ::= PackageDeclaration 

-111   InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                                  ReduceImports 

-112   InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                                  ReduceImports TypeDeclarations 

-113   InternalCompilationUnit ::= PackageDeclaration TypeDeclarations 

-114   InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-115   InternalCompilationUnit ::= TypeDeclarations 

-116   InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-                                  TypeDeclarations 

-117   InternalCompilationUnit ::= 

-118   ReduceImports ::= 

-119   EnterCompilationUnit ::= 

-120   Header -> ImportDeclaration 

-121   Header -> PackageDeclaration 

-122   Header -> ClassHeader 

-123   Header -> InterfaceHeader 

-124   Header -> EnumHeader 

-125   Header -> AnnotationTypeDeclarationHeader 

-126   Header -> StaticInitializer 

-127   Header -> RecoveryMethodHeader 

-128   Header -> FieldDeclaration 

-129   Header -> AllocationHeader 

-130   Header -> ArrayCreationHeader 

-131   Header1 -> Header 

-132   Header1 -> ConstructorHeader 

-133   Header2 -> Header 

-134   Header2 -> EnumConstantHeader 

-135   CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN LBRACE 

-136   ImportDeclarations -> ImportDeclaration 

-137   ImportDeclarations ::= ImportDeclarations ImportDeclaration 

-138   TypeDeclarations -> TypeDeclaration 

-139   TypeDeclarations ::= TypeDeclarations TypeDeclaration 

-140   PackageDeclaration ::= PackageDeclarationName SEMICOLON 

-141   PackageDeclarationName ::= Modifiers package PushRealModifiers Name 

-                                 RejectTypeAnnotations 

-142   PackageDeclarationName ::= PackageComment package Name 

-                                 RejectTypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 9

-

-

-143   PackageComment ::= 

-144   ImportDeclaration -> SingleTypeImportDeclaration 

-145   ImportDeclaration -> TypeImportOnDemandDeclaration 

-146   ImportDeclaration -> SingleStaticImportDeclaration 

-147   ImportDeclaration -> StaticImportOnDemandDeclaration 

-148   SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName SEMICOLON 

-149   SingleTypeImportDeclarationName ::= import Name RejectTypeAnnotations 

-150   TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName 

-                                        SEMICOLON 

-151   TypeImportOnDemandDeclarationName ::= import Name DOT 

-                                          RejectTypeAnnotations MULTIPLY 

-152   TypeDeclaration -> ClassDeclaration 

-153   TypeDeclaration -> InterfaceDeclaration 

-154   TypeDeclaration ::= SEMICOLON 

-155   TypeDeclaration -> EnumDeclaration 

-156   TypeDeclaration -> AnnotationTypeDeclaration 

-157   Modifiers -> Modifier 

-158   Modifiers ::= Modifiers Modifier 

-159   SimpleModifier -> public 

-160   SimpleModifier -> protected 

-161   SimpleModifier -> private 

-162   SimpleModifier -> static 

-163   SimpleModifier -> abstract 

-164   SimpleModifier -> final 

-165   SimpleModifier -> native 

-166   SimpleModifier -> synchronized 

-167   SimpleModifier -> transient 

-168   SimpleModifier -> volatile 

-169   SimpleModifier -> strictfp 

-170   Modifier -> SimpleModifier 

-171   Modifier ::= Annotation 

-172   Header -> DeclareDeclaration 

-173   Header -> InterTypeMethodDeclaration 

-174   Header -> InterTypeFieldDeclaration 

-175   Header -> PointcutDeclaration 

-176   Header -> BasicAdviceDeclaration 

-177   Header -> AroundDeclaration 

-178   TypeDeclaration -> AspectDeclaration 

-179   Header -> AspectDeclaration 

-180   ClassMemberDeclaration -> AspectDeclaration 

-181   InterfaceMemberDeclaration -> AspectDeclaration 

-182   ClassMemberDeclaration -> PointcutDeclaration 

-183   InterfaceMemberDeclaration -> PointcutDeclaration 

-184   AspectDeclaration ::= AspectHeader AspectBody 

-185   AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt 

-                       ClassHeaderImplementsopt AspectHeaderRest 

-186   AspectHeaderName -> AspectHeaderName1 

-187   AspectHeaderName -> AspectHeaderName2 

-188   AspectHeaderName ::= AspectHeaderName1 TypeParameters 

-189   AspectHeaderName ::= AspectHeaderName2 TypeParameters 

-190   AspectHeaderName1 ::= Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 10

-

-

-191   AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt aspect 

-                            Identifier 

-192   AspectHeaderRest ::= 

-193   AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens 

-194   AspectHeaderRestStart ::= Identifier 

-195   AspectBody ::= LBRACE AspectBodyDeclarationsopt RBRACE 

-196   AspectBodyDeclarations ::= AspectBodyDeclaration 

-197   AspectBodyDeclarations ::= AspectBodyDeclarations AspectBodyDeclaration 

-198   AspectBodyDeclarationsopt ::= 

-199   AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations 

-200   AspectBodyDeclaration ::= ClassBodyDeclarationNoAroundMethod 

-201   ClassBodyDeclarationNoAroundMethod -> 

-                                          ClassMemberDeclarationNoAroundMethod 

-202   ClassBodyDeclarationNoAroundMethod -> StaticInitializer 

-203   ClassBodyDeclarationNoAroundMethod -> ConstructorDeclaration 

-204   ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod 

-                                          CreateInitializer Block 

-205   ClassMemberDeclarationNoAroundMethod -> PointcutDeclaration 

-206   ClassMemberDeclarationNoAroundMethod -> AspectDeclaration 

-207   ClassMemberDeclarationNoAroundMethod -> FieldDeclaration 

-208   ClassMemberDeclarationNoAroundMethod -> MethodDeclarationNoAround 

-209   ClassMemberDeclarationNoAroundMethod -> ClassDeclaration 

-210   ClassMemberDeclarationNoAroundMethod -> InterfaceDeclaration 

-211   ClassMemberDeclarationNoAroundMethod -> IntertypeClassDeclaration 

-212   ClassMemberDeclarationNoAroundMethod -> EnumDeclaration 

-213   ClassMemberDeclarationNoAroundMethod -> AnnotationTypeDeclaration 

-214   ClassMemberDeclarationNoAroundMethod ::= SEMICOLON 

-215   MethodDeclarationNoAround -> AbstractMethodDeclarationNoAround 

-216   MethodDeclarationNoAround ::= MethodHeaderNoAround MethodBody 

-217   AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround SEMICOLON 

-218   MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               MethodHeaderThrowsClauseopt 

-219   MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-220   MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround 

-                                   LPAREN 

-221   PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                              MethodHeaderRightParen SEMICOLON 

-222   PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                              MethodHeaderRightParen COLON PseudoTokens 

-                              SEMICOLON 

-223   PointcutHeader ::= Modifiersopt pointcut JavaIdentifier LPAREN 

-224   AspectBodyDeclaration -> AroundDeclaration 

-225   AspectBodyDeclaration -> BasicAdviceDeclaration 

-226   AroundDeclaration ::= AroundHeader MethodBody 

-227   AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-228   AroundHeaderName ::= Modifiersopt Type around LPAREN 

-229   AroundHeaderName ::= Modifiersopt around LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 11

-

-

-230   BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody 

-231   BasicAdviceHeader -> BeforeAdviceHeader 

-232   BasicAdviceHeader -> AfterAdviceHeader 

-233   BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                             MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                             COLON PseudoTokens 

-234   AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                            MethodHeaderRightParen ExtraParamopt 

-                            MethodHeaderThrowsClauseopt COLON PseudoTokens 

-235   BeforeAdviceHeaderName ::= Modifiersopt before LPAREN 

-236   AfterAdviceHeaderName ::= Modifiersopt after LPAREN 

-237   ExtraParamopt ::= Identifier LPAREN FormalParameter RPAREN 

-238   ExtraParamopt ::= Identifier LPAREN RPAREN 

-239   ExtraParamopt ::= Identifier 

-240   ExtraParamopt ::= 

-241   OnType ::= JavaIdentifier 

-242   OnType ::= OnType DOT JavaIdentifier 

-243   AspectBodyDeclaration -> InterTypeMethodDeclaration 

-244   AspectBodyDeclaration -> InterTypeConstructorDeclaration 

-245   AspectBodyDeclaration -> InterTypeFieldDeclaration 

-246   InterTypeMethodDeclaration -> AbstractInterTypeMethodDeclaration 

-247   InterTypeMethodDeclaration ::= InterTypeMethodHeader MethodBody 

-248   InterTypeMethodHeader ::= InterTypeMethodHeaderName 

-                                FormalParameterListopt MethodHeaderRightParen 

-                                MethodHeaderExtendedDims 

-                                MethodHeaderThrowsClauseopt 

-249   InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT JavaIdentifier 

-                                    LPAREN 

-250   InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                                    JavaIdentifier LPAREN 

-251   InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT 

-                                    JavaIdentifier LPAREN 

-252   InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier LPAREN 

-253   InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT 

-                                    JavaIdentifier LPAREN 

-254   InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier LPAREN 

-255   AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader SEMICOLON 

-256   TypeParametersAsReference ::= TypeParameters 

-257   InterTypeConstructorDeclaration ::= InterTypeConstructorHeader MethodBody 

-258   InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                                     FormalParameterListopt 

-                                     MethodHeaderRightParen 

-                                     MethodHeaderThrowsClauseopt 

-259   InterTypeConstructorHeaderName ::= Modifiersopt Name DOT new LPAREN 

-260   InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT new 

-                                         LPAREN 

-261   InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT new LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 12

-

-

-262   InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT 

-                                         new LPAREN 

-263   InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT new 

-                                         LPAREN 

-264   InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters 

-                                         GenericType DOT new LPAREN 

-265   InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody 

-                                    SEMICOLON 

-266   InterTypeFieldHeader ::= Modifiersopt Type OnType DOT JavaIdentifier 

-267   InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                               JavaIdentifier 

-268   InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-269   InterTypeFieldHeader ::= Modifiersopt Type OnType 

-                               TypeParametersAsReference DOT JavaIdentifier 

-270   InterTypeFieldBody ::= 

-271   InterTypeFieldBody ::= EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-272   AspectBodyDeclaration -> DeclareDeclaration 

-273   DeclareDeclaration ::= DeclareHeader PseudoTokens SEMICOLON 

-274   DeclareHeader ::= declare Identifier COLON 

-275   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             Annotations SEMICOLON 

-276   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             PLUS Annotations SEMICOLON 

-277   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             MINUS Annotations SEMICOLON 

-278   Annotations -> Annotation 

-279   Annotations ::= Annotations Annotation 

-280   DeclareAnnotationHeader ::= declare AT Identifier COLON 

-281   PseudoTokens ::= PseudoToken 

-282   PseudoTokens ::= ColonPseudoToken 

-283   PseudoTokens ::= PseudoTokens ColonPseudoToken 

-284   PseudoTokens ::= PseudoTokens PseudoToken 

-285   PseudoTokensNoColon ::= PseudoToken 

-286   PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken 

-287   ColonPseudoToken ::= COLON 

-288   PseudoToken ::= JavaIdentifier 

-289   PseudoToken ::= LPAREN 

-290   PseudoToken ::= RPAREN 

-291   PseudoToken ::= DOT 

-292   PseudoToken ::= MULTIPLY 

-293   PseudoToken ::= PLUS 

-294   PseudoToken ::= EQUAL 

-295   PseudoToken ::= AND_AND 

-296   PseudoToken ::= OR_OR 

-297   PseudoToken ::= NOT 

-298   PseudoToken ::= COMMA 

-299   PseudoToken ::= LBRACKET 

-300   PseudoToken ::= RBRACKET 

-301   PseudoToken ::= AT 

-302   PseudoToken ::= ELLIPSIS 

-303   PseudoToken ::= QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 13

-

-

-304   PseudoToken ::= LESS 

-305   PseudoToken ::= GREATER 

-306   PseudoToken ::= RIGHT_SHIFT 

-307   PseudoToken ::= UNSIGNED_RIGHT_SHIFT 

-308   PseudoToken ::= AND 

-309   PseudoToken ::= NOT_EQUAL 

-310   PseudoToken ::= PrimitiveType 

-311   PseudoToken ::= SimpleModifier 

-312   PseudoToken ::= Literal 

-313   PseudoToken ::= this 

-314   PseudoToken ::= class 

-315   PseudoToken ::= super 

-316   PseudoToken ::= if LPAREN Expression RPAREN 

-317   PseudoToken ::= assert 

-318   PseudoToken ::= import 

-319   PseudoToken ::= package 

-320   PseudoToken ::= throw 

-321   PseudoToken ::= new 

-322   PseudoToken ::= do 

-323   PseudoToken ::= for 

-324   PseudoToken ::= switch 

-325   PseudoToken ::= try 

-326   PseudoToken ::= while 

-327   PseudoToken ::= break 

-328   PseudoToken ::= continue 

-329   PseudoToken ::= return 

-330   PseudoToken ::= case 

-331   PseudoToken ::= catch 

-332   PseudoToken ::= instanceof 

-333   PseudoToken ::= else 

-334   PseudoToken ::= extends 

-335   PseudoToken ::= finally 

-336   PseudoToken ::= implements 

-337   PseudoToken ::= throws 

-338   ClassDeclaration ::= ClassHeader ClassBody 

-339   IntertypeClassDeclaration ::= IntertypeClassHeader ClassBody 

-340   IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt 

-                               ClassHeaderImplementsopt 

-341   IntertypeClassHeaderName ::= IntertypeClassHeaderName1 TypeParameters 

-342   IntertypeClassHeaderName -> IntertypeClassHeaderName1 

-343   IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT 

-                                    JavaIdentifier 

-344   InterTypeClassHeaderName1 ::= Modifiersopt class OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier 

-345   ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt 

-                      ClassHeaderImplementsopt 

-346   ClassHeaderName ::= ClassHeaderName1 TypeParameters 

-347   ClassHeaderName -> ClassHeaderName1 

-348   ClassHeaderName1 ::= Modifiersopt class JavaIdentifier 

-349   ClassHeaderExtends ::= extends ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 14

-

-

-350   ClassHeaderImplements ::= implements InterfaceTypeList 

-351   InterfaceTypeList -> InterfaceType 

-352   InterfaceTypeList ::= InterfaceTypeList COMMA InterfaceType 

-353   InterfaceType ::= ClassOrInterfaceType 

-354   ClassBody ::= LBRACE ClassBodyDeclarationsopt RBRACE 

-355   ClassBodyDeclarations ::= ClassBodyDeclaration 

-356   ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration 

-357   ClassBodyDeclaration -> ClassMemberDeclaration 

-358   ClassBodyDeclaration -> StaticInitializer 

-359   ClassBodyDeclaration -> ConstructorDeclaration 

-360   ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block 

-361   Diet ::= 

-362   Initializer ::= Diet NestedMethod CreateInitializer Block 

-363   CreateInitializer ::= 

-364   ClassMemberDeclaration -> FieldDeclaration 

-365   ClassMemberDeclaration -> MethodDeclaration 

-366   ClassMemberDeclaration -> ClassDeclaration 

-367   ClassMemberDeclaration -> InterfaceDeclaration 

-368   ClassMemberDeclaration -> EnumDeclaration 

-369   ClassMemberDeclaration -> AnnotationTypeDeclaration 

-370   ClassMemberDeclaration ::= SEMICOLON 

-371   GenericMethodDeclaration -> MethodDeclaration 

-372   GenericMethodDeclaration -> ConstructorDeclaration 

-373   FieldDeclaration ::= Modifiersopt Type VariableDeclarators SEMICOLON 

-374   VariableDeclarators -> VariableDeclarator 

-375   VariableDeclarators ::= VariableDeclarators COMMA VariableDeclarator 

-376   VariableDeclarator ::= VariableDeclaratorId EnterVariable 

-                             ExitVariableWithoutInitialization 

-377   VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL 

-                             ForceNoDiet VariableInitializer RestoreDiet 

-                             ExitVariableWithInitialization 

-378   EnterVariable ::= 

-379   ExitVariableWithInitialization ::= 

-380   ExitVariableWithoutInitialization ::= 

-381   ForceNoDiet ::= 

-382   RestoreDiet ::= 

-383   VariableDeclaratorId ::= JavaIdentifier Dimsopt 

-384   VariableInitializer -> Expression 

-385   VariableInitializer -> ArrayInitializer 

-386   MethodDeclaration -> AbstractMethodDeclaration 

-387   MethodDeclaration ::= MethodHeader MethodBody 

-388   MethodDeclaration ::= DefaultMethodHeader MethodBody 

-389   AbstractMethodDeclaration ::= MethodHeader SEMICOLON 

-390   MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderExtendedDims 

-                       MethodHeaderThrowsClauseopt 

-391   DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                              MethodHeaderRightParen MethodHeaderExtendedDims 

-                              MethodHeaderThrowsClauseopt 

-392   MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier 

-                           LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 15

-

-

-393   MethodHeaderName ::= Modifiersopt Type JavaIdentifier LPAREN 

-394   DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                                  Identifier LPAREN 

-395   DefaultMethodHeaderName ::= ModifiersWithDefault Type Identifier LPAREN 

-396   ModifiersWithDefault ::= Modifiersopt default Modifiersopt 

-397   MethodHeaderRightParen ::= RPAREN 

-398   MethodHeaderExtendedDims ::= Dimsopt 

-399   MethodHeaderThrowsClause ::= throws ClassTypeList 

-400   ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt 

-                            MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-401   ConstructorHeaderName ::= Modifiersopt TypeParameters Identifier LPAREN 

-402   ConstructorHeaderName ::= Modifiersopt Identifier LPAREN 

-403   ConstructorHeaderName ::= Modifiersopt aspect LPAREN 

-404   FormalParameterList -> FormalParameter 

-405   FormalParameterList ::= FormalParameterList COMMA FormalParameter 

-406   FormalParameter ::= Modifiersopt Type VariableDeclaratorIdOrThis 

-407   FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                          VariableDeclaratorIdOrThis 

-408   FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations 

-                          ELLIPSIS VariableDeclaratorIdOrThis 

-409   CatchFormalParameter ::= Modifiersopt CatchType VariableDeclaratorId 

-410   CatchType ::= UnionType 

-411   UnionType ::= Type 

-412   UnionType ::= UnionType OR Type 

-413   ClassTypeList -> ClassTypeElt 

-414   ClassTypeList ::= ClassTypeList COMMA ClassTypeElt 

-415   ClassTypeElt ::= ClassType 

-416   MethodBody ::= NestedMethod LBRACE BlockStatementsopt RBRACE 

-417   NestedMethod ::= 

-418   StaticInitializer ::= StaticOnly Block 

-419   StaticOnly ::= static 

-420   ConstructorDeclaration ::= ConstructorHeader MethodBody 

-421   ConstructorDeclaration ::= ConstructorHeader SEMICOLON 

-422   ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt RPAREN 

-                                        SEMICOLON 

-423   ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-424   ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt RPAREN 

-                                        SEMICOLON 

-425   ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-426   ExplicitConstructorInvocation ::= Primary DOT super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-427   ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super 

-                                        LPAREN ArgumentListopt RPAREN SEMICOLON 

-428   ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-429   ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-430   ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 16

-

-

-431   ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this 

-                                        LPAREN ArgumentListopt RPAREN SEMICOLON 

-432   ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-433   ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-434   InterfaceDeclaration ::= InterfaceHeader InterfaceBody 

-435   InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt 

-436   InterfaceHeaderName ::= InterfaceHeaderName1 TypeParameters 

-437   InterfaceHeaderName -> InterfaceHeaderName1 

-438   InterfaceHeaderName1 ::= Modifiersopt interface JavaIdentifier 

-439   InterfaceHeaderExtends ::= extends InterfaceTypeList 

-440   InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt RBRACE 

-441   InterfaceMemberDeclarations -> InterfaceMemberDeclaration 

-442   InterfaceMemberDeclarations ::= InterfaceMemberDeclarations 

-                                      InterfaceMemberDeclaration 

-443   InterfaceMemberDeclaration ::= SEMICOLON 

-444   InterfaceMemberDeclaration -> ConstantDeclaration 

-445   InterfaceMemberDeclaration ::= DefaultMethodHeader MethodBody 

-446   InterfaceMemberDeclaration ::= MethodHeader MethodBody 

-447   InterfaceMemberDeclaration ::= DefaultMethodHeader SEMICOLON 

-448   InvalidConstructorDeclaration ::= ConstructorHeader MethodBody 

-449   InvalidConstructorDeclaration ::= ConstructorHeader SEMICOLON 

-450   InvalidInitializer -> StaticInitializer 

-451   InvalidInitializer -> Initializer 

-452   InterfaceMemberDeclaration -> AbstractMethodDeclaration 

-453   InterfaceMemberDeclaration -> InvalidConstructorDeclaration 

-454   InterfaceMemberDeclaration -> InvalidInitializer 

-455   InterfaceMemberDeclaration -> ClassDeclaration 

-456   InterfaceMemberDeclaration -> InterfaceDeclaration 

-457   InterfaceMemberDeclaration -> EnumDeclaration 

-458   InterfaceMemberDeclaration -> AnnotationTypeDeclaration 

-459   ConstantDeclaration -> FieldDeclaration 

-460   PushLeftBrace ::= 

-461   ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE 

-462   ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers RBRACE 

-463   ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers COMMA 

-                           RBRACE 

-464   VariableInitializers ::= VariableInitializer 

-465   VariableInitializers ::= VariableInitializers COMMA VariableInitializer 

-466   Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE 

-467   OpenBlock ::= 

-468   BlockStatements ::= BlockStatement 

-469   BlockStatements ::= BlockStatements BlockStatement 

-470   BlockStatementopt ::= BlockStatementopt0 

-471   BlockStatementopt0 ::= 

-472   BlockStatementopt0 -> BlockStatement 

-473   BlockStatement -> LocalVariableDeclarationStatement 

-474   BlockStatement -> Statement 

-475   BlockStatement -> ClassDeclaration 

-476   BlockStatement ::= InterfaceDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 17

-

-

-477   BlockStatement ::= AnnotationTypeDeclaration 

-478   BlockStatement ::= EnumDeclaration 

-479   LocalVariableDeclarationStatement ::= LocalVariableDeclaration SEMICOLON 

-480   LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators 

-481   LocalVariableDeclaration ::= Modifiers Type PushRealModifiers 

-                                   VariableDeclarators 

-482   PushModifiers ::= 

-483   PushModifiersForHeader ::= 

-484   PushRealModifiers ::= 

-485   Statement -> StatementWithoutTrailingSubstatement 

-486   Statement -> LabeledStatement 

-487   Statement -> IfThenStatement 

-488   Statement -> IfThenElseStatement 

-489   Statement -> WhileStatement 

-490   Statement -> ForStatement 

-491   Statement -> EnhancedForStatement 

-492   StatementNoShortIf -> StatementWithoutTrailingSubstatement 

-493   StatementNoShortIf -> LabeledStatementNoShortIf 

-494   StatementNoShortIf -> IfThenElseStatementNoShortIf 

-495   StatementNoShortIf -> WhileStatementNoShortIf 

-496   StatementNoShortIf -> ForStatementNoShortIf 

-497   StatementNoShortIf -> EnhancedForStatementNoShortIf 

-498   StatementWithoutTrailingSubstatement -> AssertStatement 

-499   StatementWithoutTrailingSubstatement -> Block 

-500   StatementWithoutTrailingSubstatement -> EmptyStatement 

-501   StatementWithoutTrailingSubstatement -> ExpressionStatement 

-502   StatementWithoutTrailingSubstatement -> SwitchStatement 

-503   StatementWithoutTrailingSubstatement -> DoStatement 

-504   StatementWithoutTrailingSubstatement -> BreakStatement 

-505   StatementWithoutTrailingSubstatement -> ContinueStatement 

-506   StatementWithoutTrailingSubstatement -> ReturnStatement 

-507   StatementWithoutTrailingSubstatement -> SynchronizedStatement 

-508   StatementWithoutTrailingSubstatement -> ThrowStatement 

-509   StatementWithoutTrailingSubstatement -> TryStatement 

-510   StatementWithoutTrailingSubstatement -> TryStatementWithResources 

-511   EmptyStatement ::= SEMICOLON 

-512   LabeledStatement ::= Label COLON Statement 

-513   LabeledStatementNoShortIf ::= Label COLON StatementNoShortIf 

-514   Label ::= JavaIdentifier 

-515   ExpressionStatement ::= StatementExpression SEMICOLON 

-516   ExpressionStatement ::= ExplicitConstructorInvocation 

-517   StatementExpression ::= Assignment 

-518   StatementExpression ::= PreIncrementExpression 

-519   StatementExpression ::= PreDecrementExpression 

-520   StatementExpression ::= PostIncrementExpression 

-521   StatementExpression ::= PostDecrementExpression 

-522   StatementExpression ::= MethodInvocation 

-523   StatementExpression ::= ClassInstanceCreationExpression 

-524   IfThenStatement ::= if LPAREN Expression RPAREN Statement 

-525   IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf 

-                              else Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 18

-

-

-526   IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                       StatementNoShortIf else 

-                                       StatementNoShortIf 

-527   SwitchStatement ::= switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-528   SwitchBlock ::= LBRACE RBRACE 

-529   SwitchBlock ::= LBRACE SwitchBlockStatements RBRACE 

-530   SwitchBlock ::= LBRACE SwitchLabels RBRACE 

-531   SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels RBRACE 

-532   SwitchBlockStatements -> SwitchBlockStatement 

-533   SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement 

-534   SwitchBlockStatement ::= SwitchLabels BlockStatements 

-535   SwitchLabels -> SwitchLabel 

-536   SwitchLabels ::= SwitchLabels SwitchLabel 

-537   SwitchLabel ::= case ConstantExpression COLON 

-538   SwitchLabel ::= default COLON 

-539   WhileStatement ::= while LPAREN Expression RPAREN Statement 

-540   WhileStatementNoShortIf ::= while LPAREN Expression RPAREN 

-                                  StatementNoShortIf 

-541   DoStatement ::= do Statement while LPAREN Expression RPAREN SEMICOLON 

-542   ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                       ForUpdateopt RPAREN Statement 

-543   ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                                SEMICOLON ForUpdateopt RPAREN 

-                                StatementNoShortIf 

-544   ForInit ::= StatementExpressionList 

-545   ForInit -> LocalVariableDeclaration 

-546   ForUpdate -> StatementExpressionList 

-547   StatementExpressionList -> StatementExpression 

-548   StatementExpressionList ::= StatementExpressionList COMMA 

-                                  StatementExpression 

-549   AssertStatement ::= assert Expression SEMICOLON 

-550   AssertStatement ::= assert Expression COLON Expression SEMICOLON 

-551   BreakStatement ::= break SEMICOLON 

-552   BreakStatement ::= break Identifier SEMICOLON 

-553   ContinueStatement ::= continue SEMICOLON 

-554   ContinueStatement ::= continue Identifier SEMICOLON 

-555   ReturnStatement ::= return Expressionopt SEMICOLON 

-556   ThrowStatement ::= throw Expression SEMICOLON 

-557   SynchronizedStatement ::= OnlySynchronized LPAREN Expression RPAREN Block 

-558   OnlySynchronized ::= synchronized 

-559   TryStatement ::= try TryBlock Catches 

-560   TryStatement ::= try TryBlock Catchesopt Finally 

-561   TryStatementWithResources ::= try ResourceSpecification TryBlock 

-                                    Catchesopt 

-562   TryStatementWithResources ::= try ResourceSpecification TryBlock 

-                                    Catchesopt Finally 

-563   ResourceSpecification ::= LPAREN Resources ;opt RPAREN 

-564   ;opt ::= 

-565   ;opt ::= SEMICOLON 

-566   Resources ::= Resource 

-567   Resources ::= Resources TrailingSemiColon Resource 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 19

-

-

-568   TrailingSemiColon ::= SEMICOLON 

-569   Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-                   ForceNoDiet VariableInitializer RestoreDiet 

-                   ExitVariableWithInitialization 

-570   Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-                   EnterVariable EQUAL ForceNoDiet VariableInitializer 

-                   RestoreDiet ExitVariableWithInitialization 

-571   TryBlock ::= Block ExitTryBlock 

-572   ExitTryBlock ::= 

-573   Catches -> CatchClause 

-574   Catches ::= Catches CatchClause 

-575   CatchClause ::= catch LPAREN CatchFormalParameter RPAREN Block 

-576   Finally ::= finally Block 

-577   PushLPAREN ::= LPAREN 

-578   PushRPAREN ::= RPAREN 

-579   Primary -> PrimaryNoNewArray 

-580   Primary -> ArrayCreationWithArrayInitializer 

-581   Primary -> ArrayCreationWithoutArrayInitializer 

-582   PrimaryNoNewArray -> Literal 

-583   PrimaryNoNewArray ::= this 

-584   PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN 

-585   PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN 

-586   PrimaryNoNewArray -> ClassInstanceCreationExpression 

-587   PrimaryNoNewArray -> FieldAccess 

-588   PrimaryNoNewArray ::= Name DOT this 

-589   QualifiedSuperReceiver ::= Name DOT super 

-590   PrimaryNoNewArray ::= Name DOT class 

-591   PrimaryNoNewArray ::= Name Dims DOT class 

-592   PrimaryNoNewArray ::= PrimitiveType Dims DOT class 

-593   PrimaryNoNewArray ::= PrimitiveType DOT class 

-594   PrimaryNoNewArray -> MethodInvocation 

-595   PrimaryNoNewArray -> ArrayAccess 

-596   PrimaryNoNewArray -> LambdaExpression 

-597   PrimaryNoNewArray -> ReferenceExpression 

-598   ReferenceExpressionTypeArgumentsAndTrunk ::= 

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                           

-599   ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt 

-600   ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT 

-                                          ClassOrInterfaceType Dimsopt 

-601   ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-                              NonWildTypeArgumentsopt IdentifierOrNew 

-602   ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                              IdentifierOrNew 

-603   ReferenceExpression ::= Name BeginTypeArguments 

-                              ReferenceExpressionTypeArgumentsAndTrunk 

-                              COLON_COLON NonWildTypeArgumentsopt 

-                              IdentifierOrNew 

-604   ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt 

-                              Identifier 

-605   ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 20

-

-

-                              NonWildTypeArgumentsopt Identifier 

-606   ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt 

-                              Identifier 

-607   NonWildTypeArgumentsopt ::= 

-608   NonWildTypeArgumentsopt -> OnlyTypeArguments 

-609   IdentifierOrNew ::= Identifier 

-610   IdentifierOrNew ::= new 

-611   LambdaExpression ::= LambdaParameters ARROW LambdaBody 

-612   NestedLambda ::= 

-613   LambdaParameters ::= Identifier NestedLambda 

-614   LambdaParameters ::= BeginLambda NestedLambda LambdaParameterList 

-615   ParenthesizedLambdaParameterList ::= LambdaParameterList 

-616   LambdaParameterList ::= PushLPAREN FormalParameterListopt PushRPAREN 

-617   LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList 

-                              PushRPAREN 

-618   TypeElidedFormalParameterList -> TypeElidedFormalParameter 

-619   TypeElidedFormalParameterList ::= TypeElidedFormalParameterList COMMA 

-                                        TypeElidedFormalParameter 

-620   TypeElidedFormalParameter ::= Modifiersopt Identifier 

-621   LambdaBody ::= ElidedLeftBraceAndReturn Expression 

-                     ElidedSemicolonAndRightBrace 

-622   LambdaBody -> Block 

-623   ElidedLeftBraceAndReturn ::= 

-624   AllocationHeader ::= new ClassType LPAREN ArgumentListopt RPAREN 

-625   ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          UnqualifiedClassBodyopt 

-626   ClassInstanceCreationExpression ::= new ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          UnqualifiedClassBodyopt 

-627   ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                          ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-628   ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-629   ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                          ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-630   ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                          OnlyTypeArguments ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 21

-

-

-631   EnterInstanceCreationArgumentList ::= 

-632   ClassInstanceCreationExpressionName ::= Name DOT new 

-633   UnqualifiedClassBodyopt ::= 

-634   UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody ClassBody 

-635   UnqualifiedEnterAnonymousClassBody ::= 

-636   QualifiedClassBodyopt ::= 

-637   QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody ClassBody 

-638   QualifiedEnterAnonymousClassBody ::= 

-639   ArgumentList ::= Expression 

-640   ArgumentList ::= ArgumentList COMMA Expression 

-641   ArrayCreationHeader ::= new PrimitiveType DimWithOrWithOutExprs 

-642   ArrayCreationHeader ::= new ClassOrInterfaceType DimWithOrWithOutExprs 

-643   ArrayCreationWithoutArrayInitializer ::= new PrimitiveType 

-                                          DimWithOrWithOutExprs 

-644   ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                          DimWithOrWithOutExprs 

-                                          ArrayInitializer 

-645   ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType 

-                                          DimWithOrWithOutExprs 

-646   ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                          DimWithOrWithOutExprs 

-                                          ArrayInitializer 

-647   DimWithOrWithOutExprs ::= DimWithOrWithOutExpr 

-648   DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr 

-649   DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression RBRACKET 

-650   DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET RBRACKET 

-651   Dims ::= DimsLoop 

-652   DimsLoop -> OneDimLoop 

-653   DimsLoop ::= DimsLoop OneDimLoop 

-654   OneDimLoop ::= LBRACKET RBRACKET 

-655   OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET 

-656   FieldAccess ::= Primary DOT JavaIdentifier 

-657   FieldAccess ::= super DOT JavaIdentifier 

-658   FieldAccess ::= QualifiedSuperReceiver DOT Identifier 

-659   MethodInvocation ::= NameOrAj LPAREN ArgumentListopt RPAREN 

-660   MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-661   MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-662   MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt 

-                           RPAREN 

-663   MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-664   MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                           JavaIdentifier LPAREN ArgumentListopt RPAREN 

-665   MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-666   MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt 

-                           RPAREN 

-667   ArrayAccess ::= Name LBRACKET Expression RBRACKET 

-668   ArrayAccess ::= AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 22

-

-

-669   ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression RBRACKET 

-670   ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression 

-                      RBRACKET 

-671   PostfixExpression -> Primary 

-672   PostfixExpression ::= NameOrAj 

-673   PostfixExpression -> PostIncrementExpression 

-674   PostfixExpression -> PostDecrementExpression 

-675   PostIncrementExpression ::= PostfixExpression PLUS_PLUS 

-676   PostDecrementExpression ::= PostfixExpression MINUS_MINUS 

-677   PushPosition ::= 

-678   UnaryExpression -> PreIncrementExpression 

-679   UnaryExpression -> PreDecrementExpression 

-680   UnaryExpression ::= PLUS PushPosition UnaryExpression 

-681   UnaryExpression ::= MINUS PushPosition UnaryExpression 

-682   UnaryExpression -> UnaryExpressionNotPlusMinus 

-683   PreIncrementExpression ::= PLUS_PLUS PushPosition UnaryExpression 

-684   PreDecrementExpression ::= MINUS_MINUS PushPosition UnaryExpression 

-685   UnaryExpressionNotPlusMinus -> PostfixExpression 

-686   UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition UnaryExpression 

-687   UnaryExpressionNotPlusMinus ::= NOT PushPosition UnaryExpression 

-688   UnaryExpressionNotPlusMinus -> CastExpression 

-689   CastExpression ::= PushLPAREN PrimitiveType Dimsopt 

-                         AdditionalBoundsListOpt PushRPAREN 

-                         InsideCastExpression UnaryExpression 

-690   CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                         Dimsopt AdditionalBoundsListOpt PushRPAREN 

-                         InsideCastExpression UnaryExpressionNotPlusMinus 

-691   CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                         ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                         PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                         UnaryExpressionNotPlusMinus 

-692   CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                         UnaryExpressionNotPlusMinus 

-693   CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                         PushRPAREN InsideCastExpressionLL1WithBounds 

-                         UnaryExpressionNotPlusMinus 

-694   CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt 

-                         PushRPAREN InsideCastExpression 

-                         UnaryExpressionNotPlusMinus 

-695   AdditionalBoundsListOpt ::= 

-696   AdditionalBoundsListOpt -> AdditionalBoundList 

-697   ParenthesizedCastNameAndBounds ::= LPAREN CastNameAndBounds RPAREN 

-698   CastNameAndBounds ::= Name AdditionalBoundList 

-699   OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments 

-700   InsideCastExpression ::= 

-701   InsideCastExpressionLL1 ::= 

-702   InsideCastExpressionLL1WithBounds ::= 

-703   InsideCastExpressionWithQualifiedGenerics ::= 

-704   MultiplicativeExpression -> UnaryExpression 

-705   MultiplicativeExpression ::= MultiplicativeExpression MULTIPLY 

-                                   UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 23

-

-

-706   MultiplicativeExpression ::= MultiplicativeExpression DIVIDE 

-                                   UnaryExpression 

-707   MultiplicativeExpression ::= MultiplicativeExpression REMAINDER 

-                                   UnaryExpression 

-708   AdditiveExpression -> MultiplicativeExpression 

-709   AdditiveExpression ::= AdditiveExpression PLUS MultiplicativeExpression 

-710   AdditiveExpression ::= AdditiveExpression MINUS MultiplicativeExpression 

-711   ShiftExpression -> AdditiveExpression 

-712   ShiftExpression ::= ShiftExpression LEFT_SHIFT AdditiveExpression 

-713   ShiftExpression ::= ShiftExpression RIGHT_SHIFT AdditiveExpression 

-714   ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT 

-                          AdditiveExpression 

-715   RelationalExpression -> ShiftExpression 

-716   RelationalExpression ::= RelationalExpression LESS ShiftExpression 

-717   RelationalExpression ::= RelationalExpression GREATER ShiftExpression 

-718   RelationalExpression ::= RelationalExpression LESS_EQUAL ShiftExpression 

-719   RelationalExpression ::= RelationalExpression GREATER_EQUAL 

-                               ShiftExpression 

-720   InstanceofExpression -> RelationalExpression 

-721   InstanceofExpression ::= InstanceofExpression instanceof ReferenceType 

-722   EqualityExpression -> InstanceofExpression 

-723   EqualityExpression ::= EqualityExpression EQUAL_EQUAL 

-                             InstanceofExpression 

-724   EqualityExpression ::= EqualityExpression NOT_EQUAL InstanceofExpression 

-725   AndExpression -> EqualityExpression 

-726   AndExpression ::= AndExpression AND EqualityExpression 

-727   ExclusiveOrExpression -> AndExpression 

-728   ExclusiveOrExpression ::= ExclusiveOrExpression XOR AndExpression 

-729   InclusiveOrExpression -> ExclusiveOrExpression 

-730   InclusiveOrExpression ::= InclusiveOrExpression OR ExclusiveOrExpression 

-731   ConditionalAndExpression -> InclusiveOrExpression 

-732   ConditionalAndExpression ::= ConditionalAndExpression AND_AND 

-                                   InclusiveOrExpression 

-733   ConditionalOrExpression -> ConditionalAndExpression 

-734   ConditionalOrExpression ::= ConditionalOrExpression OR_OR 

-                                  ConditionalAndExpression 

-735   ConditionalExpression -> ConditionalOrExpression 

-736   ConditionalExpression ::= ConditionalOrExpression QUESTION Expression 

-                                COLON ConditionalExpression 

-737   AssignmentExpression -> ConditionalExpression 

-738   AssignmentExpression -> Assignment 

-739   Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression 

-740   InvalidArrayInitializerAssignement ::= PostfixExpression 

-                                          AssignmentOperator ArrayInitializer 

-741   Assignment ::= InvalidArrayInitializerAssignement 

-742   AssignmentOperator ::= EQUAL 

-743   AssignmentOperator ::= MULTIPLY_EQUAL 

-744   AssignmentOperator ::= DIVIDE_EQUAL 

-745   AssignmentOperator ::= REMAINDER_EQUAL 

-746   AssignmentOperator ::= PLUS_EQUAL 

-747   AssignmentOperator ::= MINUS_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 24

-

-

-748   AssignmentOperator ::= LEFT_SHIFT_EQUAL 

-749   AssignmentOperator ::= RIGHT_SHIFT_EQUAL 

-750   AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL 

-751   AssignmentOperator ::= AND_EQUAL 

-752   AssignmentOperator ::= XOR_EQUAL 

-753   AssignmentOperator ::= OR_EQUAL 

-754   Expression ::= AssignmentExpression 

-755   ClassHeaderExtendsopt ::= 

-756   ClassHeaderExtendsopt -> ClassHeaderExtends 

-757   Expressionopt ::= 

-758   Expressionopt -> Expression 

-759   ConstantExpression -> Expression 

-760   ,opt ::= 

-761   ,opt -> COMMA 

-762   ClassBodyDeclarationsopt ::= 

-763   ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations 

-764   Modifiersopt ::= 

-765   Modifiersopt ::= Modifiers 

-766   BlockStatementsopt ::= 

-767   BlockStatementsopt -> BlockStatements 

-768   Dimsopt ::= 

-769   Dimsopt -> Dims 

-770   ArgumentListopt ::= 

-771   ArgumentListopt -> ArgumentList 

-772   MethodHeaderThrowsClauseopt ::= 

-773   MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause 

-774   FormalParameterListopt ::= 

-775   FormalParameterListopt -> FormalParameterList 

-776   ClassHeaderImplementsopt ::= 

-777   ClassHeaderImplementsopt -> ClassHeaderImplements 

-778   InterfaceMemberDeclarationsopt ::= 

-779   InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations 

-780   NestedType ::= 

-781   ForInitopt ::= 

-782   ForInitopt -> ForInit 

-783   ForUpdateopt ::= 

-784   ForUpdateopt -> ForUpdate 

-785   InterfaceHeaderExtendsopt ::= 

-786   InterfaceHeaderExtendsopt -> InterfaceHeaderExtends 

-787   Catchesopt ::= 

-788   Catchesopt -> Catches 

-789   EnumDeclaration ::= EnumHeader EnumBody 

-790   EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt 

-791   EnumHeaderName ::= Modifiersopt enum JavaIdentifier 

-792   EnumHeaderName ::= Modifiersopt enum JavaIdentifier TypeParameters 

-793   EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE 

-794   EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt RBRACE 

-795   EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-796   EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt RBRACE 

-797   EnumConstants -> EnumConstant 

-798   EnumConstants ::= EnumConstants COMMA EnumConstant 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 25

-

-

-799   EnumConstantHeaderName ::= Modifiersopt Identifier 

-800   EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                             RestoreDiet 

-801   EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-802   EnumConstant ::= EnumConstantHeader 

-803   Arguments ::= LPAREN ArgumentListopt RPAREN 

-804   Argumentsopt ::= 

-805   Argumentsopt -> Arguments 

-806   EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt 

-807   EnumBodyDeclarationsopt ::= 

-808   EnumBodyDeclarationsopt -> EnumDeclarations 

-809   EnhancedForStatement ::= EnhancedForStatementHeader Statement 

-810   EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader 

-                                        StatementNoShortIf 

-811   EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                         JavaIdentifier Dimsopt 

-812   EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                         PushRealModifiers JavaIdentifier 

-                                         Dimsopt 

-813   EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                                     Expression RPAREN 

-814   SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName 

-                                        SEMICOLON 

-815   SingleStaticImportDeclarationName ::= import static Name 

-                                          RejectTypeAnnotations 

-816   StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName 

-                                          SEMICOLON 

-817   StaticImportOnDemandDeclarationName ::= import static Name DOT 

-                                          RejectTypeAnnotations MULTIPLY 

-818   TypeArguments ::= LESS TypeArgumentList1 

-819   OnlyTypeArguments ::= LESS TypeArgumentList1 

-820   TypeArgumentList1 -> TypeArgument1 

-821   TypeArgumentList1 ::= TypeArgumentList COMMA TypeArgument1 

-822   TypeArgumentList -> TypeArgument 

-823   TypeArgumentList ::= TypeArgumentList COMMA TypeArgument 

-824   TypeArgument ::= ReferenceType 

-825   TypeArgument -> Wildcard 

-826   TypeArgument1 -> ReferenceType1 

-827   TypeArgument1 -> Wildcard1 

-828   ReferenceType1 ::= ReferenceType GREATER 

-829   ReferenceType1 ::= ClassOrInterface LESS TypeArgumentList2 

-830   TypeArgumentList2 -> TypeArgument2 

-831   TypeArgumentList2 ::= TypeArgumentList COMMA TypeArgument2 

-832   TypeArgument2 -> ReferenceType2 

-833   TypeArgument2 -> Wildcard2 

-834   ReferenceType2 ::= ReferenceType RIGHT_SHIFT 

-835   ReferenceType2 ::= ClassOrInterface LESS TypeArgumentList3 

-836   TypeArgumentList3 -> TypeArgument3 

-837   TypeArgumentList3 ::= TypeArgumentList COMMA TypeArgument3 

-838   TypeArgument3 -> ReferenceType3 

-839   TypeArgument3 -> Wildcard3 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 26

-

-

-840   ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT 

-841   Wildcard ::= TypeAnnotationsopt QUESTION 

-842   Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds 

-843   WildcardBounds ::= extends ReferenceType 

-844   WildcardBounds ::= super ReferenceType 

-845   Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER 

-846   Wildcard1 ::= TypeAnnotationsopt QUESTION WildcardBounds1 

-847   WildcardBounds1 ::= extends ReferenceType1 

-848   WildcardBounds1 ::= super ReferenceType1 

-849   Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-850   Wildcard2 ::= TypeAnnotationsopt QUESTION WildcardBounds2 

-851   WildcardBounds2 ::= extends ReferenceType2 

-852   WildcardBounds2 ::= super ReferenceType2 

-853   Wildcard3 ::= TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-854   Wildcard3 ::= TypeAnnotationsopt QUESTION WildcardBounds3 

-855   WildcardBounds3 ::= extends ReferenceType3 

-856   WildcardBounds3 ::= super ReferenceType3 

-857   TypeParameterHeader ::= TypeAnnotationsopt JavaIdentifier 

-858   TypeParameters ::= LESS TypeParameterList1 

-859   TypeParameterList -> TypeParameter 

-860   TypeParameterList ::= TypeParameterList COMMA TypeParameter 

-861   TypeParameter -> TypeParameterHeader 

-862   TypeParameter ::= TypeParameterHeader extends ReferenceType 

-863   TypeParameter ::= TypeParameterHeader extends ReferenceType 

-                        AdditionalBoundList 

-864   AdditionalBoundList -> AdditionalBound 

-865   AdditionalBoundList ::= AdditionalBoundList AdditionalBound 

-866   AdditionalBound ::= AND ReferenceType 

-867   TypeParameterList1 -> TypeParameter1 

-868   TypeParameterList1 ::= TypeParameterList COMMA TypeParameter1 

-869   TypeParameter1 ::= TypeParameterHeader GREATER 

-870   TypeParameter1 ::= TypeParameterHeader extends ReferenceType1 

-871   TypeParameter1 ::= TypeParameterHeader extends ReferenceType 

-                         AdditionalBoundList1 

-872   AdditionalBoundList1 -> AdditionalBound1 

-873   AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1 

-874   AdditionalBound1 ::= AND ReferenceType1 

-875   PostfixExpression_NotName -> Primary 

-876   PostfixExpression_NotName -> PostIncrementExpression 

-877   PostfixExpression_NotName -> PostDecrementExpression 

-878   UnaryExpression_NotName -> PreIncrementExpression 

-879   UnaryExpression_NotName -> PreDecrementExpression 

-880   UnaryExpression_NotName ::= PLUS PushPosition UnaryExpression 

-881   UnaryExpression_NotName ::= MINUS PushPosition UnaryExpression 

-882   UnaryExpression_NotName -> UnaryExpressionNotPlusMinus_NotName 

-883   UnaryExpressionNotPlusMinus_NotName -> PostfixExpression_NotName 

-884   UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE PushPosition 

-                                          UnaryExpression 

-885   UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition UnaryExpression 

-886   UnaryExpressionNotPlusMinus_NotName -> CastExpression 

-887   MultiplicativeExpression_NotName -> UnaryExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 27

-

-

-888   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          MULTIPLY UnaryExpression 

-889   MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY UnaryExpression 

-890   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          DIVIDE UnaryExpression 

-891   MultiplicativeExpression_NotName ::= NameOrAj DIVIDE UnaryExpression 

-892   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          REMAINDER UnaryExpression 

-893   MultiplicativeExpression_NotName ::= NameOrAj REMAINDER UnaryExpression 

-894   AdditiveExpression_NotName -> MultiplicativeExpression_NotName 

-895   AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS 

-                                     MultiplicativeExpression 

-896   AdditiveExpression_NotName ::= NameOrAj PLUS MultiplicativeExpression 

-897   AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS 

-                                     MultiplicativeExpression 

-898   AdditiveExpression_NotName ::= NameOrAj MINUS MultiplicativeExpression 

-899   ShiftExpression_NotName -> AdditiveExpression_NotName 

-900   ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT 

-                                  AdditiveExpression 

-901   ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT AdditiveExpression 

-902   ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT 

-                                  AdditiveExpression 

-903   ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT AdditiveExpression 

-904   ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                                  AdditiveExpression 

-905   ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT 

-                                  AdditiveExpression 

-906   RelationalExpression_NotName -> ShiftExpression_NotName 

-907   RelationalExpression_NotName ::= ShiftExpression_NotName LESS 

-                                       ShiftExpression 

-908   RelationalExpression_NotName ::= Name LESS ShiftExpression 

-909   RelationalExpression_NotName ::= ShiftExpression_NotName GREATER 

-                                       ShiftExpression 

-910   RelationalExpression_NotName ::= NameOrAj GREATER ShiftExpression 

-911   RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL 

-                                       ShiftExpression 

-912   RelationalExpression_NotName ::= NameOrAj LESS_EQUAL ShiftExpression 

-913   RelationalExpression_NotName ::= RelationalExpression_NotName 

-                                       GREATER_EQUAL ShiftExpression 

-914   RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL ShiftExpression 

-915   InstanceofExpression_NotName -> RelationalExpression_NotName 

-916   InstanceofExpression_NotName ::= NameOrAj instanceof ReferenceType 

-917   InstanceofExpression_NotName ::= InstanceofExpression_NotName instanceof 

-                                       ReferenceType 

-918   EqualityExpression_NotName -> InstanceofExpression_NotName 

-919   EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL 

-                                     InstanceofExpression 

-920   EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL InstanceofExpression 

-921   EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL 

-                                     InstanceofExpression 

-922   EqualityExpression_NotName ::= NameOrAj NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 28

-

-

-923   AndExpression_NotName -> EqualityExpression_NotName 

-924   AndExpression_NotName ::= AndExpression_NotName AND EqualityExpression 

-925   AndExpression_NotName ::= NameOrAj AND EqualityExpression 

-926   ExclusiveOrExpression_NotName -> AndExpression_NotName 

-927   ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR 

-                                        AndExpression 

-928   ExclusiveOrExpression_NotName ::= NameOrAj XOR AndExpression 

-929   InclusiveOrExpression_NotName -> ExclusiveOrExpression_NotName 

-930   InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR 

-                                        ExclusiveOrExpression 

-931   InclusiveOrExpression_NotName ::= NameOrAj OR ExclusiveOrExpression 

-932   ConditionalAndExpression_NotName -> InclusiveOrExpression_NotName 

-933   ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                          AND_AND InclusiveOrExpression 

-934   ConditionalAndExpression_NotName ::= NameOrAj AND_AND 

-                                          InclusiveOrExpression 

-935   ConditionalOrExpression_NotName -> ConditionalAndExpression_NotName 

-936   ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR 

-                                          ConditionalAndExpression 

-937   ConditionalOrExpression_NotName ::= NameOrAj OR_OR 

-                                          ConditionalAndExpression 

-938   ConditionalExpression_NotName -> ConditionalOrExpression_NotName 

-939   ConditionalExpression_NotName ::= ConditionalOrExpression_NotName 

-                                        QUESTION Expression COLON 

-                                        ConditionalExpression 

-940   ConditionalExpression_NotName ::= NameOrAj QUESTION Expression COLON 

-                                        ConditionalExpression 

-941   AssignmentExpression_NotName -> ConditionalExpression_NotName 

-942   AssignmentExpression_NotName -> Assignment 

-943   Expression_NotName -> AssignmentExpression_NotName 

-944   AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                          interface JavaIdentifier 

-945   AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                          interface JavaIdentifier 

-                                          TypeParameters 

-946   AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader 

-                                          interface JavaIdentifier 

-                                          TypeParameters 

-947   AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader 

-                                          interface JavaIdentifier 

-948   AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName 

-                                          ClassHeaderExtendsopt 

-                                          ClassHeaderImplementsopt 

-949   AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader 

-                                    AnnotationTypeBody 

-950   AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt RBRACE 

-951   AnnotationTypeMemberDeclarationsopt ::= 

-952   AnnotationTypeMemberDeclarationsopt ::= NestedType 

-                                          AnnotationTypeMemberDeclarations 

-953   AnnotationTypeMemberDeclarations -> AnnotationTypeMemberDeclaration 

-954   AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 29

-

-

-                                          AnnotationTypeMemberDeclaration 

-955   AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                                     JavaIdentifier LPAREN 

-956   AnnotationMethodHeaderName ::= Modifiersopt Type JavaIdentifier LPAREN 

-957   AnnotationMethodHeaderDefaultValueopt ::= 

-958   AnnotationMethodHeaderDefaultValueopt ::= DefaultValue 

-959   AnnotationMethodHeader ::= AnnotationMethodHeaderName 

-                                 FormalParameterListopt MethodHeaderRightParen 

-                                 MethodHeaderExtendedDims 

-                                 AnnotationMethodHeaderDefaultValueopt 

-960   AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader SEMICOLON 

-961   AnnotationTypeMemberDeclaration -> ConstantDeclaration 

-962   AnnotationTypeMemberDeclaration -> ConstructorDeclaration 

-963   AnnotationTypeMemberDeclaration -> TypeDeclaration 

-964   DefaultValue ::= default MemberValue 

-965   Annotation -> NormalAnnotation 

-966   Annotation -> MarkerAnnotation 

-967   Annotation -> SingleMemberAnnotation 

-968   AnnotationName ::= AT UnannotatableNameOrAj 

-969   NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt RPAREN 

-970   MemberValuePairsopt ::= 

-971   MemberValuePairsopt -> MemberValuePairs 

-972   MemberValuePairs -> MemberValuePair 

-973   MemberValuePairs ::= MemberValuePairs COMMA MemberValuePair 

-974   MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                          ExitMemberValue 

-975   EnterMemberValue ::= 

-976   ExitMemberValue ::= 

-977   MemberValue -> ConditionalExpression_NotName 

-978   MemberValue ::= NameOrAj 

-979   MemberValue -> Annotation 

-980   MemberValue -> MemberValueArrayInitializer 

-981   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace MemberValues COMMA RBRACE 

-982   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace MemberValues RBRACE 

-983   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace COMMA RBRACE 

-984   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace RBRACE 

-985   EnterMemberValueArrayInitializer ::= 

-986   MemberValues -> MemberValue 

-987   MemberValues ::= MemberValues COMMA MemberValue 

-988   MarkerAnnotation ::= AnnotationName 

-989   SingleMemberAnnotationMemberValue ::= MemberValue 

-990   SingleMemberAnnotation ::= AnnotationName LPAREN 

-                                 SingleMemberAnnotationMemberValue RPAREN 

-991   RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-992   RecoveryMethodHeaderName ::= Modifiersopt Type JavaIdentifierNoAround 

-                                   LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 30

-

-

-993   RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-994   RecoveryMethodHeaderName ::= ModifiersWithDefault Type 

-                                   JavaIdentifierNoAround LPAREN 

-995   RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               AnnotationMethodHeaderDefaultValueopt 

-996   RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               MethodHeaderThrowsClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 31

-

-*** The following Terminals are useless: 

-

-

-        const  goto  

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 32

-

-*** The following Non-Terminal is useless: InterTypeClassHeaderName1 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 33

-

-

-

-Cross-reference table:

-

-

-$error  ==>> 

-

-,opt  ==>> 760 761 

-

-;opt  ==>> 564 565 

-

-AND  ==>> 14 308 726 866 874 924 925 

-

-AND_AND  ==>> 9 295 732 933 934 

-

-AND_EQUAL  ==>> 751 

-

-ARROW  ==>> 21 611 

-

-AT  ==>> 24 280 301 944 945 946 947 968 

-

-AT308  ==>> 100 

-

-AT308DOTDOTDOT  ==>> 408 

-

-AbstractInterTypeMethodDeclaration  ==>> 255 

-

-AbstractMethodDeclaration  ==>> 389 

-

-AbstractMethodDeclarationNoAround  ==>> 217 

-

-AdditionalBound  ==>> 866 

-

-AdditionalBound1  ==>> 874 

-

-AdditionalBoundList  ==>> 864 865 

-

-AdditionalBoundList1  ==>> 872 873 

-

-AdditionalBoundsListOpt  ==>> 695 696 

-

-AdditiveExpression  ==>> 708 709 710 

-

-AdditiveExpression_NotName  ==>> 894 895 896 897 898 

-

-AfterAdviceHeader  ==>> 234 

-

-AfterAdviceHeaderName  ==>> 236 

-

-AjName  ==>> 71 72 

-

-AjQualifiedName  ==>> 81 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 34

-

-

-

-AjSimpleName  ==>> 73 77 

-

-AjSimpleNameNoAround  ==>> 74 75 76 78 79 80 

-

-AllocationHeader  ==>> 624 

-

-AndExpression  ==>> 725 726 

-

-AndExpression_NotName  ==>> 923 924 925 

-

-Annotation  ==>> 965 966 967 

-

-AnnotationMethodHeader  ==>> 959 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> 957 958 

-

-AnnotationMethodHeaderName  ==>> 955 956 

-

-AnnotationName  ==>> 968 

-

-AnnotationTypeBody  ==>> 950 

-

-AnnotationTypeDeclaration  ==>> 949 

-

-AnnotationTypeDeclarationHeader  ==>> 948 

-

-AnnotationTypeDeclarationHeaderName  ==>> 944 945 946 947 

-

-AnnotationTypeMemberDeclaration  ==>> 960 961 962 963 

-

-AnnotationTypeMemberDeclarations  ==>> 953 954 

-

-AnnotationTypeMemberDeclarationsopt  ==>> 951 952 

-

-Annotations  ==>> 278 279 

-

-ArgumentList  ==>> 639 640 

-

-ArgumentListopt  ==>> 770 771 

-

-Arguments  ==>> 803 

-

-Argumentsopt  ==>> 804 805 

-

-AroundDeclaration  ==>> 226 

-

-AroundHeader  ==>> 227 

-

-AroundHeaderName  ==>> 228 229 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 35

-

-

-ArrayAccess  ==>> 667 668 669 670 

-

-ArrayCreationHeader  ==>> 641 642 

-

-ArrayCreationWithArrayInitializer  ==>> 644 646 

-

-ArrayCreationWithoutArrayInitializer  ==>> 643 645 

-

-ArrayInitializer  ==>> 461 462 463 

-

-ArrayType  ==>> 62 63 64 65 

-

-ArrayTypeWithTypeArgumentsName  ==>> 61 

-

-AspectBody  ==>> 195 

-

-AspectBodyDeclaration  ==>> 200 224 225 243 244 245 272 

-

-AspectBodyDeclarations  ==>> 196 197 

-

-AspectBodyDeclarationsopt  ==>> 198 199 

-

-AspectDeclaration  ==>> 184 

-

-AspectHeader  ==>> 185 

-

-AspectHeaderName  ==>> 186 187 188 189 

-

-AspectHeaderName1  ==>> 190 

-

-AspectHeaderName2  ==>> 191 

-

-AspectHeaderRest  ==>> 192 193 

-

-AspectHeaderRestStart  ==>> 194 

-

-AssertStatement  ==>> 549 550 

-

-Assignment  ==>> 739 741 

-

-AssignmentExpression  ==>> 737 738 

-

-AssignmentExpression_NotName  ==>> 941 942 

-

-AssignmentOperator  ==>> 742 743 744 745 746 747 748 749 750 751 752 753 

-

-BasicAdviceDeclaration  ==>> 230 

-

-BasicAdviceHeader  ==>> 231 232 

-

-BeforeAdviceHeader  ==>> 233 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 36

-

-

-

-BeforeAdviceHeaderName  ==>> 235 

-

-BeginIntersectionCast  ==>> 693 

-

-BeginLambda  ==>> 614 

-

-BeginTypeArguments  ==>> 603 

-

-Block  ==>> 466 

-

-BlockStatement  ==>> 473 474 475 476 477 478 

-

-BlockStatementopt  ==>> 470 

-

-BlockStatementopt0  ==>> 471 472 

-

-BlockStatements  ==>> 468 469 

-

-BlockStatementsopt  ==>> 766 767 

-

-BooleanLiteral  ==>> 33 34 

-

-BreakStatement  ==>> 551 552 

-

-COLON  ==>> 222 227 233 234 274 275 276 277 280 287 512 513 537 538 550 736 813 

-            939 940 

-

-COLON_COLON  ==>> 601 602 603 604 605 606 

-

-COMMA  ==>> 298 352 375 405 414 463 465 548 619 640 761 794 795 798 821 823 831 

-            837 860 868 973 981 983 987 

-

-CastExpression  ==>> 689 690 691 692 693 694 

-

-CastNameAndBounds  ==>> 698 

-

-CatchClause  ==>> 575 

-

-CatchFormalParameter  ==>> 409 

-

-CatchHeader  ==>> 135 

-

-CatchType  ==>> 410 

-

-Catches  ==>> 573 574 

-

-Catchesopt  ==>> 787 788 

-

-CharacterLiteral  ==>> 29 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 37

-

-

-ClassBody  ==>> 354 

-

-ClassBodyDeclaration  ==>> 357 358 359 360 

-

-ClassBodyDeclarationNoAroundMethod  ==>> 201 202 203 204 

-

-ClassBodyDeclarations  ==>> 355 356 

-

-ClassBodyDeclarationsopt  ==>> 762 763 

-

-ClassDeclaration  ==>> 338 

-

-ClassHeader  ==>> 345 

-

-ClassHeaderExtends  ==>> 349 

-

-ClassHeaderExtendsopt  ==>> 755 756 

-

-ClassHeaderImplements  ==>> 350 

-

-ClassHeaderImplementsopt  ==>> 776 777 

-

-ClassHeaderName  ==>> 346 347 

-

-ClassHeaderName1  ==>> 348 

-

-ClassInstanceCreationExpression  ==>> 625 626 627 628 629 630 

-

-ClassInstanceCreationExpressionName  ==>> 632 

-

-ClassMemberDeclaration  ==>> 180 182 364 365 366 367 368 369 370 

-

-ClassMemberDeclarationNoAroundMethod  ==>> 205 206 207 208 209 210 211 212 213 

-                                           214 

-

-ClassOrInterface  ==>> 57 58 

-

-ClassOrInterfaceType  ==>> 55 56 

-

-ClassType  ==>> 66 

-

-ClassTypeElt  ==>> 415 

-

-ClassTypeList  ==>> 413 414 

-

-ColonPseudoToken  ==>> 287 

-

-CompilationUnit  ==>> 109 

-

-ConditionalAndExpression  ==>> 731 732 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 38

-

-

-ConditionalAndExpression_NotName  ==>> 932 933 934 

-

-ConditionalExpression  ==>> 735 736 

-

-ConditionalExpression_NotName  ==>> 938 939 940 

-

-ConditionalOrExpression  ==>> 733 734 

-

-ConditionalOrExpression_NotName  ==>> 935 936 937 

-

-ConstantDeclaration  ==>> 459 

-

-ConstantExpression  ==>> 759 

-

-ConstructorDeclaration  ==>> 420 421 

-

-ConstructorHeader  ==>> 400 

-

-ConstructorHeaderName  ==>> 401 402 403 

-

-ContinueStatement  ==>> 553 554 

-

-CreateInitializer  ==>> 363 

-

-DIVIDE  ==>> 13 706 890 891 

-

-DIVIDE_EQUAL  ==>> 744 

-

-DOT  ==>> 58 61 81 89 90 91 107 151 242 249 250 250 251 252 253 254 259 260 260 

-          261 262 263 264 266 267 267 268 269 291 343 344 426 427 428 429 430 

-          431 432 433 588 589 590 591 592 593 600 627 628 632 656 657 658 660 

-          661 662 663 664 665 666 691 817 

-

-DeclareAnnotationHeader  ==>> 280 

-

-DeclareDeclaration  ==>> 273 275 276 277 

-

-DeclareHeader  ==>> 274 

-

-DefaultMethodHeader  ==>> 391 

-

-DefaultMethodHeaderName  ==>> 394 395 

-

-DefaultValue  ==>> 964 

-

-Diet  ==>> 361 

-

-DimWithOrWithOutExpr  ==>> 649 650 

-

-DimWithOrWithOutExprs  ==>> 647 648 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 39

-

-

-Dims  ==>> 651 

-

-DimsLoop  ==>> 652 653 

-

-Dimsopt  ==>> 768 769 

-

-DoStatement  ==>> 541 

-

-DoubleLiteral  ==>> 28 

-

-ELLIPSIS  ==>> 302 407 408 

-

-EQUAL  ==>> 271 294 377 569 570 742 974 

-

-EQUAL_EQUAL  ==>> 723 919 920 

-

-ElidedLeftBraceAndReturn  ==>> 623 

-

-ElidedSemicolonAndRightBrace  ==>> 621 

-

-EmptyStatement  ==>> 511 

-

-EnhancedForStatement  ==>> 809 

-

-EnhancedForStatementHeader  ==>> 813 

-

-EnhancedForStatementHeaderInit  ==>> 811 812 

-

-EnhancedForStatementNoShortIf  ==>> 810 

-

-EnterCompilationUnit  ==>> 119 

-

-EnterInstanceCreationArgumentList  ==>> 631 

-

-EnterMemberValue  ==>> 975 

-

-EnterMemberValueArrayInitializer  ==>> 985 

-

-EnterVariable  ==>> 378 

-

-EnumBody  ==>> 793 794 795 796 

-

-EnumBodyDeclarationsopt  ==>> 807 808 

-

-EnumConstant  ==>> 801 802 

-

-EnumConstantHeader  ==>> 800 

-

-EnumConstantHeaderName  ==>> 799 

-

-EnumConstants  ==>> 797 798 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 40

-

-

-

-EnumDeclaration  ==>> 789 

-

-EnumDeclarations  ==>> 806 

-

-EnumHeader  ==>> 790 

-

-EnumHeaderName  ==>> 791 792 

-

-EqualityExpression  ==>> 722 723 724 

-

-EqualityExpression_NotName  ==>> 918 919 920 921 922 

-

-ExclusiveOrExpression  ==>> 727 728 

-

-ExclusiveOrExpression_NotName  ==>> 926 927 928 

-

-ExitMemberValue  ==>> 976 

-

-ExitTryBlock  ==>> 572 

-

-ExitVariableWithInitialization  ==>> 379 

-

-ExitVariableWithoutInitialization  ==>> 380 

-

-ExplicitConstructorInvocation  ==>> 422 423 424 425 426 427 428 429 430 431 432 

-                                    433 

-

-Expression  ==>> 754 

-

-ExpressionStatement  ==>> 515 516 

-

-Expression_NotName  ==>> 943 

-

-Expressionopt  ==>> 757 758 

-

-ExtraParamopt  ==>> 237 238 239 240 

-

-FieldAccess  ==>> 656 657 658 

-

-FieldDeclaration  ==>> 373 

-

-Finally  ==>> 576 

-

-FloatingPointLiteral  ==>> 27 

-

-FloatingPointType  ==>> 51 52 

-

-ForInit  ==>> 544 545 

-

-ForInitopt  ==>> 781 782 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 41

-

-

-

-ForStatement  ==>> 542 

-

-ForStatementNoShortIf  ==>> 543 

-

-ForUpdate  ==>> 546 

-

-ForUpdateopt  ==>> 783 784 

-

-ForceNoDiet  ==>> 381 

-

-FormalParameter  ==>> 406 407 408 

-

-FormalParameterList  ==>> 404 405 

-

-FormalParameterListopt  ==>> 774 775 

-

-GREATER  ==>> 60 305 717 828 845 869 909 910 

-

-GREATER_EQUAL  ==>> 719 913 914 

-

-GenericMethodDeclaration  ==>> 371 372 

-

-GenericType  ==>> 59 60 

-

-Goal  ==>> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 

-

-Header  ==>> 120 121 122 123 124 125 126 127 128 129 130 172 173 174 175 176 177 

-             179 

-

-Header1  ==>> 131 132 

-

-Header2  ==>> 133 134 

-

-Identifier  ==>> 35 37 87 190 191 194 237 238 239 274 280 394 395 401 402 552 

-                 554 604 605 606 609 613 620 658 799 

-

-IdentifierOrNew  ==>> 609 610 

-

-IfThenElseStatement  ==>> 525 

-

-IfThenElseStatementNoShortIf  ==>> 526 

-

-IfThenStatement  ==>> 524 

-

-ImportDeclaration  ==>> 144 145 146 147 

-

-ImportDeclarations  ==>> 136 137 

-

-InclusiveOrExpression  ==>> 729 730 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 42

-

-

-InclusiveOrExpression_NotName  ==>> 929 930 931 

-

-Initializer  ==>> 362 

-

-InsideCastExpression  ==>> 700 

-

-InsideCastExpressionLL1  ==>> 701 

-

-InsideCastExpressionLL1WithBounds  ==>> 702 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> 703 

-

-InstanceofExpression  ==>> 720 721 

-

-InstanceofExpression_NotName  ==>> 915 916 917 

-

-IntegerLiteral  ==>> 25 

-

-IntegralType  ==>> 46 47 48 49 50 

-

-InterTypeClassHeaderName1  ==>> 344 

-

-InterTypeConstructorDeclaration  ==>> 257 

-

-InterTypeConstructorHeader  ==>> 258 

-

-InterTypeConstructorHeaderName  ==>> 259 260 261 262 263 264 

-

-InterTypeFieldBody  ==>> 270 271 

-

-InterTypeFieldDeclaration  ==>> 265 

-

-InterTypeFieldHeader  ==>> 266 267 268 269 

-

-InterTypeMethodDeclaration  ==>> 246 247 

-

-InterTypeMethodHeader  ==>> 248 

-

-InterTypeMethodHeaderName  ==>> 249 250 251 252 253 254 

-

-InterfaceBody  ==>> 440 

-

-InterfaceDeclaration  ==>> 434 

-

-InterfaceHeader  ==>> 435 

-

-InterfaceHeaderExtends  ==>> 439 

-

-InterfaceHeaderExtendsopt  ==>> 785 786 

-

-InterfaceHeaderName  ==>> 436 437 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 43

-

-

-

-InterfaceHeaderName1  ==>> 438 

-

-InterfaceMemberDeclaration  ==>> 181 183 443 444 445 446 447 452 453 454 455 456 

-                                 457 458 

-

-InterfaceMemberDeclarations  ==>> 441 442 

-

-InterfaceMemberDeclarationsopt  ==>> 778 779 

-

-InterfaceType  ==>> 353 

-

-InterfaceTypeList  ==>> 351 352 

-

-InternalCompilationUnit  ==>> 110 111 112 113 114 115 116 117 

-

-IntertypeClassDeclaration  ==>> 339 

-

-IntertypeClassHeader  ==>> 340 

-

-IntertypeClassHeaderName  ==>> 341 342 

-

-IntertypeClassHeaderName1  ==>> 343 

-

-InvalidArrayInitializerAssignement  ==>> 740 

-

-InvalidConstructorDeclaration  ==>> 448 449 

-

-InvalidInitializer  ==>> 450 451 

-

-JavaIdentifier  ==>> 35 36 

-

-JavaIdentifierNoAround  ==>> 37 38 

-

-LBRACE  ==>> 18 135 195 354 416 440 461 462 463 466 528 529 530 531 793 794 795 

-             796 950 981 982 983 984 

-

-LBRACKET  ==>> 299 649 650 654 655 667 668 669 670 

-

-LEFT_SHIFT  ==>> 712 900 901 

-

-LEFT_SHIFT_EQUAL  ==>> 748 

-

-LESS  ==>> 23 60 304 716 818 819 829 835 858 907 908 

-

-LESS_EQUAL  ==>> 718 911 912 

-

-LPAREN  ==>> 22 101 103 135 219 220 223 228 229 235 236 237 238 249 250 251 252 

-             253 254 259 260 261 262 263 264 289 316 392 393 394 395 401 402 403 

-             422 423 424 425 426 427 428 429 430 431 432 433 524 525 526 527 539 

-             540 541 542 543 557 563 575 577 624 625 626 627 628 629 630 659 660 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 44

-

-

-             661 662 663 664 665 666 697 803 811 812 955 956 969 990 991 992 993 

-             994 

-

-Label  ==>> 514 

-

-LabeledStatement  ==>> 512 

-

-LabeledStatementNoShortIf  ==>> 513 

-

-LambdaBody  ==>> 621 622 

-

-LambdaExpression  ==>> 611 

-

-LambdaParameterList  ==>> 616 617 

-

-LambdaParameters  ==>> 613 614 

-

-Literal  ==>> 25 26 27 28 29 30 31 32 

-

-LocalVariableDeclaration  ==>> 480 481 

-

-LocalVariableDeclarationStatement  ==>> 479 

-

-LongLiteral  ==>> 26 

-

-MINUS  ==>> 277 681 710 881 897 898 

-

-MINUS_EQUAL  ==>> 747 

-

-MINUS_MINUS  ==>> 2 676 684 

-

-MULTIPLY  ==>> 7 8 151 250 260 267 292 705 817 888 889 

-

-MULTIPLY_EQUAL  ==>> 743 

-

-MarkerAnnotation  ==>> 988 

-

-MarkerTypeAnnotation  ==>> 102 

-

-MemberValue  ==>> 977 978 979 980 

-

-MemberValueArrayInitializer  ==>> 981 982 983 984 

-

-MemberValuePair  ==>> 974 

-

-MemberValuePairs  ==>> 972 973 

-

-MemberValuePairsopt  ==>> 970 971 

-

-MemberValues  ==>> 986 987 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 45

-

-

-MethodBody  ==>> 416 

-

-MethodDeclaration  ==>> 386 387 388 

-

-MethodDeclarationNoAround  ==>> 215 216 

-

-MethodHeader  ==>> 390 

-

-MethodHeaderExtendedDims  ==>> 398 

-

-MethodHeaderName  ==>> 392 393 

-

-MethodHeaderNameNoAround  ==>> 219 220 

-

-MethodHeaderNoAround  ==>> 218 

-

-MethodHeaderRightParen  ==>> 397 

-

-MethodHeaderThrowsClause  ==>> 399 

-

-MethodHeaderThrowsClauseopt  ==>> 772 773 

-

-MethodInvocation  ==>> 659 660 661 662 663 664 665 666 

-

-Modifier  ==>> 170 171 

-

-Modifiers  ==>> 157 158 

-

-ModifiersWithDefault  ==>> 396 

-

-Modifiersopt  ==>> 764 765 

-

-MultiplicativeExpression  ==>> 704 705 706 707 

-

-MultiplicativeExpression_NotName  ==>> 887 888 889 890 891 892 893 

-

-NOT  ==>> 6 297 687 885 

-

-NOT_EQUAL  ==>> 309 724 921 922 

-

-Name  ==>> 84 85 86 

-

-NameOrAj  ==>> 67 68 

-

-NestedLambda  ==>> 612 

-

-NestedMethod  ==>> 417 

-

-NestedType  ==>> 780 

-

-NonWildTypeArgumentsopt  ==>> 607 608 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 46

-

-

-

-NormalAnnotation  ==>> 969 

-

-NormalTypeAnnotation  ==>> 101 

-

-NumericType  ==>> 42 43 

-

-OR  ==>> 412 730 930 931 

-

-OR_EQUAL  ==>> 753 

-

-OR_OR  ==>> 10 19 296 734 936 937 

-

-OnType  ==>> 241 242 

-

-OneDimLoop  ==>> 654 655 

-

-OnlySynchronized  ==>> 558 

-

-OnlyTypeArguments  ==>> 819 

-

-OnlyTypeArgumentsForCastExpression  ==>> 699 

-

-OpenBlock  ==>> 467 

-

-PLUS  ==>> 12 251 261 268 276 293 680 709 880 895 896 

-

-PLUS_EQUAL  ==>> 746 

-

-PLUS_PLUS  ==>> 1 675 683 

-

-PackageComment  ==>> 143 

-

-PackageDeclaration  ==>> 140 

-

-PackageDeclarationName  ==>> 141 142 

-

-ParenthesizedCastNameAndBounds  ==>> 697 

-

-ParenthesizedLambdaParameterList  ==>> 615 

-

-PointcutDeclaration  ==>> 221 222 

-

-PointcutHeader  ==>> 223 

-

-PostDecrementExpression  ==>> 676 

-

-PostIncrementExpression  ==>> 675 

-

-PostfixExpression  ==>> 671 672 673 674 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 47

-

-

-PostfixExpression_NotName  ==>> 875 876 877 

-

-PreDecrementExpression  ==>> 684 

-

-PreIncrementExpression  ==>> 683 

-

-Primary  ==>> 579 580 581 

-

-PrimaryNoNewArray  ==>> 582 583 584 585 586 587 588 590 591 592 593 594 595 596 

-                        597 

-

-PrimitiveType  ==>> 41 44 45 

-

-PseudoToken  ==>> 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 

-                  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 

-                  318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 

-                  333 334 335 336 337 

-

-PseudoTokens  ==>> 281 282 283 284 

-

-PseudoTokensNoColon  ==>> 285 286 

-

-PushLPAREN  ==>> 577 

-

-PushLeftBrace  ==>> 460 

-

-PushModifiers  ==>> 482 

-

-PushModifiersForHeader  ==>> 483 

-

-PushPosition  ==>> 677 

-

-PushRPAREN  ==>> 578 

-

-PushRealModifiers  ==>> 484 

-

-PushZeroTypeAnnotations  ==>> 105 

-

-QUESTION  ==>> 11 20 303 736 841 842 845 846 849 850 853 854 939 940 

-

-QualifiedClassBodyopt  ==>> 636 637 

-

-QualifiedEnterAnonymousClassBody  ==>> 638 

-

-QualifiedName  ==>> 90 91 

-

-QualifiedSuperReceiver  ==>> 589 

-

-RBRACE  ==>> 195 354 416 440 461 462 463 466 528 529 530 531 793 794 795 796 950 

-             981 982 983 984 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 48

-

-

-RBRACKET  ==>> 300 649 650 654 655 667 668 669 670 

-

-REMAINDER  ==>> 15 16 707 892 893 

-

-REMAINDER_EQUAL  ==>> 745 

-

-RIGHT_SHIFT  ==>> 3 4 306 713 834 849 902 903 

-

-RIGHT_SHIFT_EQUAL  ==>> 749 

-

-RPAREN  ==>> 101 103 135 237 238 290 316 397 422 423 424 425 426 427 428 429 430 

-             431 432 433 524 525 526 527 539 540 541 542 543 557 563 575 578 624 

-             625 626 627 628 629 630 659 660 661 662 663 664 665 666 697 803 813 

-             969 990 

-

-RecoveryMethodHeader  ==>> 995 996 

-

-RecoveryMethodHeaderName  ==>> 991 992 993 994 

-

-ReduceImports  ==>> 118 

-

-ReferenceExpression  ==>> 601 602 603 604 605 606 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> 598 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> 599 600 

-

-ReferenceType  ==>> 53 54 

-

-ReferenceType1  ==>> 828 829 

-

-ReferenceType2  ==>> 834 835 

-

-ReferenceType3  ==>> 840 

-

-RejectTypeAnnotations  ==>> 104 

-

-RelationalExpression  ==>> 715 716 717 718 719 

-

-RelationalExpression_NotName  ==>> 906 907 908 909 910 911 912 913 914 

-

-Resource  ==>> 569 570 

-

-ResourceSpecification  ==>> 563 

-

-Resources  ==>> 566 567 

-

-RestoreDiet  ==>> 382 

-

-ReturnStatement  ==>> 555 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 49

-

-

-SEMICOLON  ==>> 140 148 150 154 214 217 221 222 255 265 273 275 276 277 370 373 

-                389 421 422 423 424 425 426 427 428 429 430 431 432 433 443 447 

-                449 479 511 515 541 542 542 543 543 549 550 551 552 553 554 555 

-                556 565 568 806 814 816 960 

-

-ShiftExpression  ==>> 711 712 713 714 

-

-ShiftExpression_NotName  ==>> 899 900 901 902 903 904 905 

-

-SimpleModifier  ==>> 159 160 161 162 163 164 165 166 167 168 169 

-

-SimpleName  ==>> 87 

-

-SimpleNameOrAj  ==>> 69 70 

-

-SingleMemberAnnotation  ==>> 990 

-

-SingleMemberAnnotationMemberValue  ==>> 989 

-

-SingleMemberTypeAnnotation  ==>> 103 

-

-SingleStaticImportDeclaration  ==>> 814 

-

-SingleStaticImportDeclarationName  ==>> 815 

-

-SingleTypeImportDeclaration  ==>> 148 

-

-SingleTypeImportDeclarationName  ==>> 149 

-

-Statement  ==>> 485 486 487 488 489 490 491 

-

-StatementExpression  ==>> 517 518 519 520 521 522 523 

-

-StatementExpressionList  ==>> 547 548 

-

-StatementNoShortIf  ==>> 492 493 494 495 496 497 

-

-StatementWithoutTrailingSubstatement  ==>> 498 499 500 501 502 503 504 505 506 

-                                           507 508 509 510 

-

-StaticImportOnDemandDeclaration  ==>> 816 

-

-StaticImportOnDemandDeclarationName  ==>> 817 

-

-StaticInitializer  ==>> 418 

-

-StaticOnly  ==>> 419 

-

-StringLiteral  ==>> 30 

-

-SwitchBlock  ==>> 528 529 530 531 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 50

-

-

-

-SwitchBlockStatement  ==>> 534 

-

-SwitchBlockStatements  ==>> 532 533 

-

-SwitchLabel  ==>> 537 538 

-

-SwitchLabels  ==>> 535 536 

-

-SwitchStatement  ==>> 527 

-

-SynchronizedStatement  ==>> 557 

-

-TWIDDLE  ==>> 17 686 884 

-

-ThrowStatement  ==>> 556 

-

-TrailingSemiColon  ==>> 568 

-

-TryBlock  ==>> 571 

-

-TryStatement  ==>> 559 560 

-

-TryStatementWithResources  ==>> 561 562 

-

-Type  ==>> 39 40 

-

-TypeAnnotation  ==>> 97 98 99 

-

-TypeAnnotationName  ==>> 100 

-

-TypeAnnotations  ==>> 94 

-

-TypeAnnotations0  ==>> 95 96 

-

-TypeAnnotationsopt  ==>> 92 93 

-

-TypeArgument  ==>> 824 825 

-

-TypeArgument1  ==>> 826 827 

-

-TypeArgument2  ==>> 832 833 

-

-TypeArgument3  ==>> 838 839 

-

-TypeArgumentList  ==>> 822 823 

-

-TypeArgumentList1  ==>> 820 821 

-

-TypeArgumentList2  ==>> 830 831 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 51

-

-

-TypeArgumentList3  ==>> 836 837 

-

-TypeArguments  ==>> 818 

-

-TypeDeclaration  ==>> 152 153 154 155 156 178 

-

-TypeDeclarations  ==>> 138 139 

-

-TypeElidedFormalParameter  ==>> 620 

-

-TypeElidedFormalParameterList  ==>> 618 619 

-

-TypeImportOnDemandDeclaration  ==>> 150 

-

-TypeImportOnDemandDeclarationName  ==>> 151 

-

-TypeParameter  ==>> 861 862 863 

-

-TypeParameter1  ==>> 869 870 871 

-

-TypeParameterHeader  ==>> 857 

-

-TypeParameterList  ==>> 859 860 

-

-TypeParameterList1  ==>> 867 868 

-

-TypeParameters  ==>> 858 

-

-TypeParametersAsReference  ==>> 256 

-

-UNSIGNED_RIGHT_SHIFT  ==>> 5 307 714 840 853 904 905 

-

-UNSIGNED_RIGHT_SHIFT_EQUAL  ==>> 750 

-

-UnannotatableName  ==>> 88 89 

-

-UnannotatableNameOrAj  ==>> 82 83 

-

-UnaryExpression  ==>> 678 679 680 681 682 

-

-UnaryExpressionNotPlusMinus  ==>> 685 686 687 688 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> 883 884 885 886 

-

-UnaryExpression_NotName  ==>> 878 879 880 881 882 

-

-UnionType  ==>> 411 412 

-

-UnqualifiedClassBodyopt  ==>> 633 634 

-

-UnqualifiedEnterAnonymousClassBody  ==>> 635 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 52

-

-

-

-VariableDeclarator  ==>> 376 377 

-

-VariableDeclaratorId  ==>> 383 

-

-VariableDeclaratorIdOrThis  ==>> 106 107 108 

-

-VariableDeclarators  ==>> 374 375 

-

-VariableInitializer  ==>> 384 385 

-

-VariableInitializers  ==>> 464 465 

-

-WhileStatement  ==>> 539 

-

-WhileStatementNoShortIf  ==>> 540 

-

-Wildcard  ==>> 841 842 

-

-Wildcard1  ==>> 845 846 

-

-Wildcard2  ==>> 849 850 

-

-Wildcard3  ==>> 853 854 

-

-WildcardBounds  ==>> 843 844 

-

-WildcardBounds1  ==>> 847 848 

-

-WildcardBounds2  ==>> 851 852 

-

-WildcardBounds3  ==>> 855 856 

-

-XOR  ==>> 728 927 928 

-

-XOR_EQUAL  ==>> 752 

-

-abstract  ==>> 163 

-

-after  ==>> 79 236 

-

-around  ==>> 77 228 229 

-

-aspect  ==>> 74 190 191 403 

-

-assert  ==>> 317 549 550 

-

-before  ==>> 78 235 

-

-boolean  ==>> 44 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 53

-

-

-break  ==>> 327 551 552 

-

-byte  ==>> 46 

-

-case  ==>> 330 537 

-

-catch  ==>> 135 331 575 

-

-char  ==>> 50 

-

-class  ==>> 314 343 344 348 590 591 592 593 

-

-const  ==>> 

-

-continue  ==>> 328 553 554 

-

-declare  ==>> 80 274 280 

-

-default  ==>> 396 538 964 

-

-do  ==>> 322 541 

-

-double  ==>> 52 

-

-else  ==>> 333 525 526 

-

-enum  ==>> 791 792 

-

-extends  ==>> 334 349 439 843 847 851 855 862 863 870 871 

-

-false  ==>> 34 

-

-final  ==>> 164 

-

-finally  ==>> 335 576 

-

-float  ==>> 51 

-

-for  ==>> 323 542 543 811 812 

-

-goto  ==>> 

-

-if  ==>> 316 524 525 526 

-

-implements  ==>> 336 350 

-

-import  ==>> 149 151 318 815 817 

-

-instanceof  ==>> 332 721 916 917 

-

-int  ==>> 48 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 54

-

-

-

-interface  ==>> 438 944 945 946 947 

-

-long  ==>> 49 

-

-native  ==>> 165 

-

-new  ==>> 259 260 261 262 263 264 321 610 624 625 626 627 628 632 641 642 643 

-          644 645 646 

-

-null  ==>> 31 

-

-package  ==>> 141 142 319 

-

-pointcut  ==>> 76 223 

-

-private  ==>> 161 

-

-privileged  ==>> 75 191 

-

-protected  ==>> 160 

-

-public  ==>> 159 

-

-return  ==>> 329 555 

-

-short  ==>> 47 

-

-static  ==>> 162 419 815 817 

-

-strictfp  ==>> 169 

-

-super  ==>> 315 424 425 426 427 428 429 589 606 657 665 666 844 848 852 856 

-

-switch  ==>> 324 527 

-

-synchronized  ==>> 166 558 

-

-this  ==>> 106 107 313 422 423 430 431 432 433 583 588 

-

-throw  ==>> 320 556 

-

-throws  ==>> 337 399 

-

-transient  ==>> 167 

-

-true  ==>> 33 

-

-try  ==>> 325 559 560 561 562 

-

-void  ==>> 45 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 55

-

-

-

-volatile  ==>> 168 

-

-while  ==>> 326 539 540 541 

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 56

-

-

-First map for non-terminals:

-

-

-$acc  ==>> PLUS_PLUS MINUS_MINUS RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT REMAINDER AND MULTIPLY TWIDDLE DIVIDE LESS LPAREN LBRACE QUESTION 

-    AT ARROW 

-

-Goal  ==>> PLUS_PLUS MINUS_MINUS RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT REMAINDER AND MULTIPLY TWIDDLE DIVIDE LESS LPAREN LBRACE QUESTION 

-    AT ARROW 

-

-CompilationUnit  ==>> $empty abstract class enum final import interface native 

-    package private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT 

-

-MethodBody  ==>> LBRACE 

-

-StaticInitializer  ==>> static 

-

-Initializer  ==>> LBRACE 

-

-Header1  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-Modifiersopt  ==>> $empty abstract final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-Header2  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-BlockStatements  ==>> Identifier abstract assert boolean break byte char class 

-    continue do double enum false final float for if int interface long native 

-    new null private protected public return short static strictfp super switch 

-    synchronized this throw transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT BeginLambda AT308 

-

-CatchHeader  ==>> catch 

-

-FieldDeclaration  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-ImportDeclaration  ==>> import 

-

-PackageDeclaration  ==>> abstract final native package private protected public 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 57

-

-

-    static strictfp synchronized transient volatile AT 

-

-TypeDeclaration  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT 

-

-GenericMethodDeclaration  ==>> Identifier abstract boolean byte char default 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile aspect LESS AT AT308 

-

-ClassBodyDeclarations  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE SEMICOLON AT AT308 

-

-Expression  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ArrayInitializer  ==>> LBRACE 

-

-BlockStatementsopt  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-BlockStatementopt  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-MemberValue  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-AnnotationTypeMemberDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS SEMICOLON AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 58

-

-

-ParenthesizedLambdaParameterList  ==>> LPAREN 

-

-ParenthesizedCastNameAndBounds  ==>> LPAREN 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> LESS 

-

-TypeAnnotations  ==>> AT308 

-

-Literal  ==>> false null true IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral 

-

-BooleanLiteral  ==>> false true 

-

-JavaIdentifier  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-AjSimpleName  ==>> aspect pointcut around before after declare privileged 

-

-JavaIdentifierNoAround  ==>> Identifier aspect pointcut before after declare 

-    privileged 

-

-AjSimpleNameNoAround  ==>> aspect pointcut before after declare privileged 

-

-Type  ==>> Identifier boolean byte char double float int long short void AT308 

-

-PrimitiveType  ==>> boolean byte char double float int long short void AT308 

-

-ReferenceType  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-TypeAnnotationsopt  ==>> $empty AT308 

-

-NumericType  ==>> byte char double float int long short 

-

-IntegralType  ==>> byte char int long short 

-

-FloatingPointType  ==>> double float 

-

-ClassOrInterfaceType  ==>> Identifier AT308 

-

-ArrayType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-ClassOrInterface  ==>> Identifier AT308 

-

-GenericType  ==>> Identifier AT308 

-

-Name  ==>> Identifier AT308 

-

-TypeArguments  ==>> LESS 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 59

-

-

-ArrayTypeWithTypeArgumentsName  ==>> Identifier AT308 

-

-Dims  ==>> LBRACKET AT308 

-

-ClassType  ==>> Identifier AT308 

-

-NameOrAj  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AjName  ==>> aspect pointcut around before after declare privileged 

-

-SimpleNameOrAj  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-SimpleName  ==>> Identifier 

-

-AjQualifiedName  ==>> aspect pointcut around before after declare privileged 

-

-UnannotatableNameOrAj  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-UnannotatableName  ==>> Identifier 

-

-QualifiedName  ==>> Identifier AT308 

-

-TypeAnnotations0  ==>> AT308 

-

-TypeAnnotation  ==>> AT308 

-

-NormalTypeAnnotation  ==>> AT308 

-

-MarkerTypeAnnotation  ==>> AT308 

-

-SingleMemberTypeAnnotation  ==>> AT308 

-

-TypeAnnotationName  ==>> AT308 

-

-MemberValuePairsopt  ==>> $empty Identifier aspect pointcut around before after 

-    declare privileged 

-

-SingleMemberAnnotationMemberValue  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN LBRACE AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-RejectTypeAnnotations  ==>> $empty 

-

-PushZeroTypeAnnotations  ==>> $empty 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 60

-

-

-VariableDeclaratorIdOrThis  ==>> Identifier this aspect pointcut around before 

-    after declare privileged 

-

-VariableDeclaratorId  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-EnterCompilationUnit  ==>> $empty 

-

-InternalCompilationUnit  ==>> $empty abstract class enum final import interface 

-    native package private protected public static strictfp synchronized 

-    transient volatile aspect privileged SEMICOLON AT 

-

-ImportDeclarations  ==>> import 

-

-ReduceImports  ==>> $empty 

-

-TypeDeclarations  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT 

-

-Header  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-ClassHeader  ==>> abstract class final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-InterfaceHeader  ==>> abstract final interface native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumHeader  ==>> abstract enum final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-AnnotationTypeDeclarationHeader  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-RecoveryMethodHeader  ==>> Identifier abstract boolean byte char default double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-AllocationHeader  ==>> new 

-

-ArrayCreationHeader  ==>> new 

-

-ConstructorHeader  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-EnumConstantHeader  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 61

-

-

-CatchFormalParameter  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PackageDeclarationName  ==>> abstract final native package private protected 

-    public static strictfp synchronized transient volatile AT 

-

-Modifiers  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT 

-

-PushRealModifiers  ==>> $empty 

-

-PackageComment  ==>> $empty 

-

-SingleTypeImportDeclaration  ==>> import 

-

-TypeImportOnDemandDeclaration  ==>> import 

-

-SingleStaticImportDeclaration  ==>> import 

-

-StaticImportOnDemandDeclaration  ==>> import 

-

-SingleTypeImportDeclarationName  ==>> import 

-

-TypeImportOnDemandDeclarationName  ==>> import 

-

-ClassDeclaration  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-InterfaceDeclaration  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-EnumDeclaration  ==>> abstract enum final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-AnnotationTypeDeclaration  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-Modifier  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT 

-

-SimpleModifier  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile 

-

-Annotation  ==>> AT 

-

-DeclareDeclaration  ==>> declare 

-

-InterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 62

-

-

-InterTypeFieldDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PointcutDeclaration  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile pointcut AT 

-

-BasicAdviceDeclaration  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile before after AT 

-

-AroundDeclaration  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile around AT AT308 

-

-AspectDeclaration  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-ClassMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS SEMICOLON AT AT308 

-

-InterfaceMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-AspectHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-AspectBody  ==>> LBRACE 

-

-AspectHeaderName  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-ClassHeaderExtendsopt  ==>> $empty extends 

-

-ClassHeaderImplementsopt  ==>> $empty implements 

-

-AspectHeaderRest  ==>> $empty Identifier 

-

-AspectHeaderName1  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect AT 

-

-AspectHeaderName2  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile privileged AT 

-

-TypeParameters  ==>> LESS 

-

-AspectHeaderRestStart  ==>> Identifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 63

-

-

-PseudoTokens  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND MULTIPLY 

-    GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COLON COMMA DOT EQUAL 

-    AT ELLIPSIS AT308 

-

-AspectBodyDeclarationsopt  ==>> $empty Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE SEMICOLON AT 

-    AT308 

-

-AspectBodyDeclarations  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut around 

-    before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-AspectBodyDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut around 

-    before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-NestedType  ==>> $empty 

-

-ClassBodyDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassMemberDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte 

-    char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect pointcut privileged LESS SEMICOLON AT AT308 

-

-ConstructorDeclaration  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-Diet  ==>> $empty 

-

-NestedMethod  ==>> $empty 

-

-CreateInitializer  ==>> $empty 

-

-Block  ==>> LBRACE 

-

-MethodDeclarationNoAround  ==>> Identifier abstract boolean byte char double 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 64

-

-

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-IntertypeClassDeclaration  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-AbstractMethodDeclarationNoAround  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-MethodHeaderNoAround  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-MethodHeaderNameNoAround  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-FormalParameterListopt  ==>> $empty Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile AT AT308 

-

-MethodHeaderRightParen  ==>> RPAREN 

-

-MethodHeaderExtendedDims  ==>> $empty LBRACKET AT308 

-

-MethodHeaderThrowsClauseopt  ==>> $empty throws 

-

-PointcutHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile pointcut AT 

-

-AroundHeader  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile around AT AT308 

-

-AroundHeaderName  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile around AT AT308 

-

-BasicAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile before after AT 

-

-BeforeAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile before AT 

-

-AfterAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile after AT 

-

-BeforeAdviceHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile before AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 65

-

-

-AfterAdviceHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile after AT 

-

-ExtraParamopt  ==>> $empty Identifier 

-

-FormalParameter  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-OnType  ==>> Identifier aspect pointcut around before after declare privileged 

-

-InterTypeConstructorDeclaration  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-AbstractInterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-InterTypeMethodHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-InterTypeMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-TypeParametersAsReference  ==>> LESS 

-

-InterTypeConstructorHeader  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-InterTypeConstructorHeaderName  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-InterTypeFieldHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-InterTypeFieldBody  ==>> $empty EQUAL 

-

-ForceNoDiet  ==>> $empty 

-

-VariableInitializer  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 66

-

-

-RestoreDiet  ==>> $empty 

-

-DeclareHeader  ==>> declare 

-

-DeclareAnnotationHeader  ==>> declare 

-

-PseudoTokensNoColon  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS 

-    NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION 

-    COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-Annotations  ==>> AT 

-

-PseudoToken  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND MULTIPLY 

-    GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COMMA DOT EQUAL AT 

-    ELLIPSIS AT308 

-

-ColonPseudoToken  ==>> COLON 

-

-ClassBody  ==>> LBRACE 

-

-IntertypeClassHeader  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-IntertypeClassHeaderName  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-IntertypeClassHeaderName1  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-InterTypeClassHeaderName1  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-ClassHeaderName  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-ClassHeaderName1  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 67

-

-

-ClassHeaderExtends  ==>> extends 

-

-ClassHeaderImplements  ==>> implements 

-

-InterfaceTypeList  ==>> Identifier AT308 

-

-InterfaceType  ==>> Identifier AT308 

-

-ClassBodyDeclarationsopt  ==>> $empty Identifier abstract boolean byte char 

-    class default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassBodyDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE SEMICOLON AT AT308 

-

-MethodDeclaration  ==>> Identifier abstract boolean byte char default double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-VariableDeclarators  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-VariableDeclarator  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-EnterVariable  ==>> $empty 

-

-ExitVariableWithoutInitialization  ==>> $empty 

-

-ExitVariableWithInitialization  ==>> $empty 

-

-Dimsopt  ==>> $empty LBRACKET AT308 

-

-AbstractMethodDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-MethodHeader  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile LESS AT AT308 

-

-DefaultMethodHeader  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-MethodHeaderName  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 68

-

-

-DefaultMethodHeaderName  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-ModifiersWithDefault  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-MethodHeaderThrowsClause  ==>> throws 

-

-ClassTypeList  ==>> Identifier AT308 

-

-ConstructorHeaderName  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-FormalParameterList  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-CatchType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-UnionType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-ClassTypeElt  ==>> Identifier AT308 

-

-StaticOnly  ==>> static 

-

-ExplicitConstructorInvocation  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LESS 

-    LPAREN BeginLambda AT308 

-

-ArgumentListopt  ==>> $empty Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-OnlyTypeArguments  ==>> LESS 

-

-Primary  ==>> Identifier boolean byte char double false float int long new null 

-    short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-InterfaceBody  ==>> LBRACE 

-

-InterfaceHeaderName  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 69

-

-

-InterfaceHeaderExtendsopt  ==>> $empty extends 

-

-InterfaceHeaderName1  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-InterfaceHeaderExtends  ==>> extends 

-

-InterfaceMemberDeclarationsopt  ==>> $empty Identifier abstract boolean byte 

-    char class default double enum final float int interface long native 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-InterfaceMemberDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ConstantDeclaration  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-InvalidConstructorDeclaration  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    LESS AT 

-

-InvalidInitializer  ==>> static LBRACE 

-

-PushLeftBrace  ==>> $empty 

-

-,opt  ==>> $empty COMMA 

-

-VariableInitializers  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-OpenBlock  ==>> $empty 

-

-BlockStatement  ==>> Identifier abstract assert boolean break byte char class 

-    continue do double enum false final float for if int interface long native 

-    new null private protected public return short static strictfp super switch 

-    synchronized this throw transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT BeginLambda AT308 

-

-BlockStatementopt0  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 70

-

-

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-LocalVariableDeclarationStatement  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile AT AT308 

-

-Statement  ==>> Identifier assert boolean break byte char continue do double 

-    false float for if int long new null return short super switch synchronized 

-    this throw true try void while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    SEMICOLON BeginLambda AT308 

-

-LocalVariableDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PushModifiers  ==>> $empty 

-

-PushModifiersForHeader  ==>> $empty 

-

-StatementWithoutTrailingSubstatement  ==>> Identifier assert boolean break byte 

-    char continue do double false float int long new null return short super 

-    switch synchronized this throw true try void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-LabeledStatement  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-IfThenStatement  ==>> if 

-

-IfThenElseStatement  ==>> if 

-

-WhileStatement  ==>> while 

-

-ForStatement  ==>> for 

-

-EnhancedForStatement  ==>> for 

-

-StatementNoShortIf  ==>> Identifier assert boolean break byte char continue do 

-    double false float for if int long new null return short super switch 

-    synchronized this throw true try void while aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 71

-

-

-LabeledStatementNoShortIf  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-IfThenElseStatementNoShortIf  ==>> if 

-

-WhileStatementNoShortIf  ==>> while 

-

-ForStatementNoShortIf  ==>> for 

-

-EnhancedForStatementNoShortIf  ==>> for 

-

-AssertStatement  ==>> assert 

-

-EmptyStatement  ==>> SEMICOLON 

-

-ExpressionStatement  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN BeginLambda AT308 

-

-SwitchStatement  ==>> switch 

-

-DoStatement  ==>> do 

-

-BreakStatement  ==>> break 

-

-ContinueStatement  ==>> continue 

-

-ReturnStatement  ==>> return 

-

-SynchronizedStatement  ==>> synchronized 

-

-ThrowStatement  ==>> throw 

-

-TryStatement  ==>> try 

-

-TryStatementWithResources  ==>> try 

-

-Label  ==>> Identifier aspect pointcut around before after declare privileged 

-

-StatementExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-Assignment  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 72

-

-

-PreIncrementExpression  ==>> PLUS_PLUS 

-

-PreDecrementExpression  ==>> MINUS_MINUS 

-

-PostIncrementExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-PostDecrementExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-MethodInvocation  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ClassInstanceCreationExpression  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LPAREN 

-    BeginLambda AT308 

-

-SwitchBlock  ==>> LBRACE 

-

-SwitchBlockStatements  ==>> case default 

-

-SwitchLabels  ==>> case default 

-

-SwitchBlockStatement  ==>> case default 

-

-SwitchLabel  ==>> case default 

-

-ConstantExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ForInitopt  ==>> $empty Identifier abstract boolean byte char double false 

-    final float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LPAREN AT BeginLambda AT308 

-

-Expressionopt  ==>> $empty Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 73

-

-

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ForUpdateopt  ==>> $empty Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-ForInit  ==>> Identifier abstract boolean byte char double false final float 

-    int long native new null private protected public short static strictfp 

-    super synchronized this transient true void volatile aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LPAREN AT BeginLambda AT308 

-

-StatementExpressionList  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-ForUpdate  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN BeginLambda 

-    AT308 

-

-OnlySynchronized  ==>> synchronized 

-

-TryBlock  ==>> LBRACE 

-

-Catches  ==>> catch 

-

-Catchesopt  ==>> $empty catch 

-

-Finally  ==>> finally 

-

-ResourceSpecification  ==>> LPAREN 

-

-Resources  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-;opt  ==>> $empty SEMICOLON 

-

-Resource  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-TrailingSemiColon  ==>> SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 74

-

-

-ExitTryBlock  ==>> $empty 

-

-CatchClause  ==>> catch 

-

-PushLPAREN  ==>> LPAREN 

-

-PushRPAREN  ==>> RPAREN 

-

-PrimaryNoNewArray  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ArrayCreationWithArrayInitializer  ==>> new 

-

-ArrayCreationWithoutArrayInitializer  ==>> new 

-

-Expression_NotName  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-FieldAccess  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-QualifiedSuperReceiver  ==>> Identifier AT308 

-

-ArrayAccess  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-LambdaExpression  ==>> Identifier BeginLambda 

-

-ReferenceExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> LESS 

-

-NonWildTypeArgumentsopt  ==>> $empty LESS 

-

-IdentifierOrNew  ==>> Identifier new 

-

-LambdaParameters  ==>> Identifier BeginLambda 

-

-LambdaBody  ==>> Identifier boolean byte char double false float int long new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 75

-

-

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-NestedLambda  ==>> $empty 

-

-LambdaParameterList  ==>> LPAREN 

-

-TypeElidedFormalParameterList  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-TypeElidedFormalParameter  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-ElidedLeftBraceAndReturn  ==>> $empty 

-

-EnterInstanceCreationArgumentList  ==>> $empty 

-

-UnqualifiedClassBodyopt  ==>> $empty LBRACE 

-

-QualifiedClassBodyopt  ==>> $empty LBRACE 

-

-ClassInstanceCreationExpressionName  ==>> Identifier AT308 

-

-UnqualifiedEnterAnonymousClassBody  ==>> $empty 

-

-QualifiedEnterAnonymousClassBody  ==>> $empty 

-

-ArgumentList  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN BeginLambda BeginIntersectionCast AT308 

-

-DimWithOrWithOutExprs  ==>> LBRACKET AT308 

-

-DimWithOrWithOutExpr  ==>> LBRACKET AT308 

-

-DimsLoop  ==>> LBRACKET AT308 

-

-OneDimLoop  ==>> LBRACKET AT308 

-

-PostfixExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-PushPosition  ==>> $empty 

-

-UnaryExpression  ==>> Identifier boolean byte char double false float int long 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 76

-

-

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpressionNotPlusMinus  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-CastExpression  ==>> LPAREN BeginIntersectionCast 

-

-AdditionalBoundsListOpt  ==>> $empty AND 

-

-InsideCastExpression  ==>> $empty 

-

-OnlyTypeArgumentsForCastExpression  ==>> LESS 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> $empty 

-

-InsideCastExpressionLL1  ==>> $empty 

-

-CastNameAndBounds  ==>> Identifier AT308 

-

-InsideCastExpressionLL1WithBounds  ==>> $empty 

-

-AdditionalBoundList  ==>> AND 

-

-MultiplicativeExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AdditiveExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ShiftExpression  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-RelationalExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 77

-

-

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InstanceofExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-EqualityExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AndExpression  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ExclusiveOrExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InclusiveOrExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalAndExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalOrExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AssignmentExpression  ==>> Identifier boolean byte char double false float int 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 78

-

-

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AssignmentOperator  ==>> PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL EQUAL 

-

-InvalidArrayInitializerAssignement  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LPAREN 

-    BeginLambda AT308 

-

-EnumBody  ==>> LBRACE 

-

-EnumHeaderName  ==>> abstract enum final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-EnumBodyDeclarationsopt  ==>> $empty SEMICOLON 

-

-EnumConstants  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumConstant  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumConstantHeaderName  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-Argumentsopt  ==>> $empty LPAREN 

-

-Arguments  ==>> LPAREN 

-

-EnumDeclarations  ==>> SEMICOLON 

-

-EnhancedForStatementHeader  ==>> for 

-

-EnhancedForStatementHeaderInit  ==>> for 

-

-SingleStaticImportDeclarationName  ==>> import 

-

-StaticImportOnDemandDeclarationName  ==>> import 

-

-TypeArgumentList1  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument1  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 79

-

-

-TypeArgumentList  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-TypeArgument  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-Wildcard  ==>> QUESTION AT308 

-

-ReferenceType1  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard1  ==>> QUESTION AT308 

-

-TypeArgumentList2  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument2  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-ReferenceType2  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard2  ==>> QUESTION AT308 

-

-TypeArgumentList3  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument3  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-ReferenceType3  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard3  ==>> QUESTION AT308 

-

-WildcardBounds  ==>> extends super 

-

-WildcardBounds1  ==>> extends super 

-

-WildcardBounds2  ==>> extends super 

-

-WildcardBounds3  ==>> extends super 

-

-TypeParameterHeader  ==>> Identifier aspect pointcut around before after 

-    declare privileged AT308 

-

-TypeParameterList1  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-TypeParameterList  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 80

-

-

-TypeParameter  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AdditionalBound  ==>> AND 

-

-TypeParameter1  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AdditionalBoundList1  ==>> AND 

-

-AdditionalBound1  ==>> AND 

-

-PostfixExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-UnaryExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-MultiplicativeExpression_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AdditiveExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ShiftExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-RelationalExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 81

-

-

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-InstanceofExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-EqualityExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AndExpression_NotName  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ExclusiveOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-InclusiveOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ConditionalAndExpression_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ConditionalOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 82

-

-

-    AT308 

-

-ConditionalExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AssignmentExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AnnotationTypeDeclarationHeaderName  ==>> abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-AnnotationTypeBody  ==>> LBRACE 

-

-AnnotationTypeMemberDeclarationsopt  ==>> $empty Identifier abstract boolean 

-    byte char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect privileged LESS SEMICOLON AT AT308 

-

-AnnotationTypeMemberDeclarations  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS SEMICOLON AT AT308 

-

-AnnotationMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> $empty default 

-

-DefaultValue  ==>> default 

-

-AnnotationMethodHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-NormalAnnotation  ==>> AT 

-

-MarkerAnnotation  ==>> AT 

-

-SingleMemberAnnotation  ==>> AT 

-

-AnnotationName  ==>> AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 83

-

-

-MemberValuePairs  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-MemberValuePair  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-EnterMemberValue  ==>> $empty 

-

-ExitMemberValue  ==>> $empty 

-

-MemberValueArrayInitializer  ==>> LBRACE 

-

-EnterMemberValueArrayInitializer  ==>> $empty 

-

-MemberValues  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-RecoveryMethodHeaderName  ==>> Identifier abstract boolean byte char default 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 84

-

-

-Follow Map:

-

-

-$acc  ==>> $eof 

-

-Goal  ==>> $eof 

-

-CompilationUnit  ==>> $eof 

-

-MethodBody  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-StaticInitializer  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-Initializer  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-Header1  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-Modifiersopt  ==>> Identifier boolean byte char class default double enum 

-    float int interface long short void aspect pointcut around before after 

-    privileged LESS AT308 $eof 

-

-Header2  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-BlockStatements  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-CatchHeader  ==>> $eof 

-

-FieldDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 85

-

-

-    AT308 $eof 

-

-ImportDeclaration  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-PackageDeclaration  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-TypeDeclaration  ==>> Identifier abstract boolean byte char class double enum 

-    final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect privileged 

-    LESS RBRACE SEMICOLON AT AT308 $eof 

-

-GenericMethodDeclaration  ==>> $eof 

-

-ClassBodyDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-Expression  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-ArrayInitializer  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-BlockStatementsopt  ==>> RBRACE $eof 

-

-BlockStatementopt  ==>> $eof 

-

-MemberValue  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile RPAREN RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-AnnotationTypeMemberDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS RBRACE SEMICOLON AT AT308 $eof 

-

-ParenthesizedLambdaParameterList  ==>> $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 86

-

-

-ParenthesizedCastNameAndBounds  ==>> $eof 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> COLON_COLON $eof 

-

-TypeAnnotations  ==>> Identifier boolean byte char double float int long short 

-    void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS $eof 

-

-Literal  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    $eof 

-

-BooleanLiteral  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    $eof 

-

-JavaIdentifier  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 87

-

-

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON BeginTypeArguments 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-AjSimpleName  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-JavaIdentifierNoAround  ==>> LPAREN 

-

-AjSimpleNameNoAround  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-Type  ==>> Identifier this aspect pointcut around before after declare 

-    privileged OR ELLIPSIS AT308DOTDOTDOT 

-

-PrimitiveType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 88

-

-

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-ReferenceType  ==>> Identifier abstract final instanceof native private 

-    protected public static strictfp synchronized this transient volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT ELLIPSIS 

-    ElidedSemicolonAndRightBrace AT308DOTDOTDOT $eof 

-

-TypeAnnotationsopt  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION 

-

-NumericType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-IntegralType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-FloatingPointType  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-    AT308DOTDOTDOT 

-

-ClassOrInterfaceType  ==>> Identifier abstract final implements instanceof 

-    native private protected public static strictfp synchronized this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 89

-

-

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-ArrayType  ==>> Identifier abstract final instanceof native private protected 

-    public static strictfp synchronized this transient volatile aspect 

-    pointcut around before after declare privileged EQUAL_EQUAL NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT ELLIPSIS 

-    ElidedSemicolonAndRightBrace AT308DOTDOTDOT $eof 

-

-ClassOrInterface  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LESS LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET 

-    SEMICOLON QUESTION COLON COMMA AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-GenericType  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Name  ==>> Identifier abstract final implements instanceof native private 

-    protected public static strictfp synchronized this transient volatile 

-    aspect pointcut around before after declare privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeArguments  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-ArrayTypeWithTypeArgumentsName  ==>> LBRACKET AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 90

-

-

-Dims  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308DOTDOTDOT $eof 

-

-ClassType  ==>> Identifier abstract final implements native private protected 

-    public static strictfp synchronized transient volatile LPAREN LBRACE 

-    SEMICOLON COLON COMMA AT $eof 

-

-NameOrAj  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA EQUAL AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-AjName  ==>> Identifier abstract boolean byte char class default double enum 

-    final float instanceof int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-SimpleNameOrAj  ==>> Identifier abstract boolean byte char class default 

-    double enum final float instanceof int interface long native package 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-SimpleName  ==>> Identifier abstract boolean byte char class default double 

-    enum final float implements instanceof int interface long native package 

-    private protected public short static strictfp synchronized this transient 

-    void volatile aspect pointcut around before after declare privileged 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 91

-

-

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON BeginTypeArguments 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-AjQualifiedName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float instanceof int interface long native package 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-UnannotatableNameOrAj  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS LPAREN RPAREN 

-    RBRACE SEMICOLON COMMA AT AT308 $eof 

-

-UnannotatableName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LPAREN RPAREN RBRACE LBRACKET SEMICOLON QUESTION COMMA DOT AT ELLIPSIS 

-    AT308 $eof 

-

-QualifiedName  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeAnnotations0  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-TypeAnnotation  ==>> Identifier boolean byte char double float int long short 

-    void aspect pointcut around before after declare privileged LBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 92

-

-

-    QUESTION ELLIPSIS AT308 $eof 

-

-NormalTypeAnnotation  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-MarkerTypeAnnotation  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-SingleMemberTypeAnnotation  ==>> Identifier boolean byte char double float int 

-    long short void aspect pointcut around before after declare privileged 

-    LBRACKET QUESTION ELLIPSIS AT308 $eof 

-

-TypeAnnotationName  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LPAREN 

-    LBRACKET QUESTION ELLIPSIS AT308 $eof 

-

-MemberValuePairsopt  ==>> RPAREN 

-

-SingleMemberAnnotationMemberValue  ==>> RPAREN 

-

-RejectTypeAnnotations  ==>> MULTIPLY SEMICOLON 

-

-PushZeroTypeAnnotations  ==>> ELLIPSIS 

-

-VariableDeclaratorIdOrThis  ==>> RPAREN COMMA 

-

-VariableDeclaratorId  ==>> RPAREN SEMICOLON COMMA EQUAL 

-

-EnterCompilationUnit  ==>> abstract class enum final import interface native 

-    package private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-InternalCompilationUnit  ==>> $eof 

-

-ImportDeclarations  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-ReduceImports  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT $eof 

-

-TypeDeclarations  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT $eof 

-

-Header  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 93

-

-

-ClassHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-EnumHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-AnnotationTypeDeclarationHeader  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-RecoveryMethodHeader  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT $eof 

-

-AllocationHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile AT $eof 

-

-ArrayCreationHeader  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT $eof 

-

-ConstructorHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON AT $eof 

-

-EnumConstantHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-CatchFormalParameter  ==>> RPAREN 

-

-PackageDeclarationName  ==>> SEMICOLON 

-

-Modifiers  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged LESS AT AT308 $eof 

-

-PushRealModifiers  ==>> Identifier interface aspect pointcut around before 

-    after declare privileged AT308 

-

-PackageComment  ==>> package 

-

-SingleTypeImportDeclaration  ==>> abstract class enum final import interface 

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-TypeImportOnDemandDeclaration  ==>> abstract class enum final import interface 

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-SingleStaticImportDeclaration  ==>> abstract class enum final import interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 94

-

-

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-StaticImportOnDemandDeclaration  ==>> abstract class enum final import 

-    interface native private protected public static strictfp synchronized 

-    transient volatile aspect privileged SEMICOLON AT $eof 

-

-SingleTypeImportDeclarationName  ==>> SEMICOLON 

-

-TypeImportOnDemandDeclarationName  ==>> SEMICOLON 

-

-ClassDeclaration  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-InterfaceDeclaration  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnumDeclaration  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-AnnotationTypeDeclaration  ==>> Identifier abstract assert boolean break byte 

-    case char class continue default do double enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Modifier  ==>> Identifier abstract boolean byte char class default double enum 

-    final float int interface long native package private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after privileged LESS AT AT308 $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 95

-

-

-SimpleModifier  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT 

-    OR_OR AND_AND PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS 

-    AT308 $eof 

-

-Annotation  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged LESS RPAREN RBRACE SEMICOLON COMMA 

-    AT AT308 $eof 

-

-DeclareDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-InterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-InterTypeFieldDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-PointcutDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-BasicAdviceDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AroundDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 96

-

-

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AspectDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-ClassMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-InterfaceMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-AspectHeader  ==>> LBRACE 

-

-AspectBody  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AspectHeaderName  ==>> Identifier extends implements LBRACE 

-

-ClassHeaderExtendsopt  ==>> Identifier abstract final implements native 

-    private protected public static strictfp synchronized transient volatile 

-    LBRACE AT $eof 

-

-ClassHeaderImplementsopt  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-AspectHeaderRest  ==>> LBRACE 

-

-AspectHeaderName1  ==>> Identifier extends implements LESS LBRACE 

-

-AspectHeaderName2  ==>> Identifier extends implements LESS LBRACE 

-

-TypeParameters  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-AspectHeaderRestStart  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 97

-

-

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-PseudoTokens  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-AspectBodyDeclarationsopt  ==>> RBRACE 

-

-AspectBodyDeclarations  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-AspectBodyDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-NestedType  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassBodyDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-ClassMemberDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte 

-    char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LBRACE RBRACE SEMICOLON AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 98

-

-

-ConstructorDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-Diet  ==>> LBRACE 

-

-NestedMethod  ==>> LBRACE 

-

-CreateInitializer  ==>> LBRACE 

-

-Block  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if instanceof int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON BeginLambda ElidedSemicolonAndRightBrace AT308 $eof 

-

-MethodDeclarationNoAround  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-IntertypeClassDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-AbstractMethodDeclarationNoAround  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-MethodHeaderNoAround  ==>> LBRACE SEMICOLON 

-

-MethodHeaderNameNoAround  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 99

-

-

-FormalParameterListopt  ==>> RPAREN 

-

-MethodHeaderRightParen  ==>> Identifier abstract default final native private 

-    protected public static strictfp synchronized throws transient volatile 

-    LBRACE LBRACKET SEMICOLON COLON AT AT308 $eof 

-

-MethodHeaderExtendedDims  ==>> abstract default final native private protected 

-    public static strictfp synchronized throws transient volatile LBRACE 

-    SEMICOLON AT $eof 

-

-MethodHeaderThrowsClauseopt  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE SEMICOLON 

-    COLON AT $eof 

-

-PointcutHeader  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AroundHeader  ==>> LBRACE 

-

-AroundHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-BasicAdviceHeader  ==>> LBRACE 

-

-BeforeAdviceHeader  ==>> LBRACE 

-

-AfterAdviceHeader  ==>> LBRACE 

-

-BeforeAdviceHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AfterAdviceHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-ExtraParamopt  ==>> throws COLON 

-

-FormalParameter  ==>> RPAREN COMMA 

-

-OnType  ==>> PLUS LESS DOT 

-

-InterTypeConstructorDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-AbstractInterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 100

-

-

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 $eof 

-

-InterTypeMethodHeader  ==>> LBRACE SEMICOLON 

-

-InterTypeMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-TypeParametersAsReference  ==>> DOT 

-

-InterTypeConstructorHeader  ==>> LBRACE 

-

-InterTypeConstructorHeaderName  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile RPAREN AT AT308 

-

-InterTypeFieldHeader  ==>> SEMICOLON EQUAL 

-

-InterTypeFieldBody  ==>> SEMICOLON 

-

-ForceNoDiet  ==>> Identifier abstract boolean byte char double false final 

-    float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN LBRACE RBRACE 

-    SEMICOLON COMMA AT BeginLambda BeginIntersectionCast AT308 $eof 

-

-VariableInitializer  ==>> RPAREN RBRACE SEMICOLON COMMA 

-

-RestoreDiet  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile RPAREN LBRACE RBRACE SEMICOLON 

-    COMMA AT $eof 

-

-DeclareHeader  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COLON COMMA 

-    DOT EQUAL AT ELLIPSIS AT308 

-

-DeclareAnnotationHeader  ==>> Identifier abstract assert boolean break byte 

-    case catch char class continue do double else extends false final finally 

-    float for if implements import instanceof int long native new null package 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 101

-

-

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-PseudoTokensNoColon  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-Annotations  ==>> SEMICOLON AT 

-

-PseudoToken  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-ColonPseudoToken  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET 

-    SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-ClassBody  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if instanceof int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 102

-

-

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON BeginLambda ElidedSemicolonAndRightBrace AT308 $eof 

-

-IntertypeClassHeader  ==>> LBRACE 

-

-IntertypeClassHeaderName  ==>> extends implements LBRACE 

-

-IntertypeClassHeaderName1  ==>> extends implements LESS LBRACE 

-

-InterTypeClassHeaderName1  ==>> 

-

-ClassHeaderName  ==>> abstract extends final implements native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-ClassHeaderName1  ==>> abstract extends final implements native private 

-    protected public static strictfp synchronized transient volatile LESS 

-    LBRACE AT $eof 

-

-ClassHeaderExtends  ==>> Identifier abstract final implements native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-ClassHeaderImplements  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceTypeList  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE COMMA AT 

-    $eof 

-

-InterfaceType  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE COMMA AT $eof 

-

-ClassBodyDeclarationsopt  ==>> RBRACE 

-

-ClassBodyDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-MethodDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-VariableDeclarators  ==>> SEMICOLON COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 103

-

-

-VariableDeclarator  ==>> SEMICOLON COMMA 

-

-EnterVariable  ==>> SEMICOLON COMMA EQUAL 

-

-ExitVariableWithoutInitialization  ==>> SEMICOLON COMMA 

-

-ExitVariableWithInitialization  ==>> RPAREN SEMICOLON COMMA 

-

-Dimsopt  ==>> abstract default final native private protected public static 

-    strictfp synchronized throws transient volatile AND RPAREN LBRACE 

-    SEMICOLON COLON COMMA EQUAL AT COLON_COLON $eof 

-

-AbstractMethodDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-MethodHeader  ==>> LBRACE SEMICOLON 

-

-DefaultMethodHeader  ==>> LBRACE SEMICOLON 

-

-MethodHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-DefaultMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-ModifiersWithDefault  ==>> Identifier boolean byte char double float int long 

-    short void LESS AT308 

-

-MethodHeaderThrowsClause  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE SEMICOLON COLON AT 

-    $eof 

-

-ClassTypeList  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON COLON COMMA AT 

-    $eof 

-

-ConstructorHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-FormalParameterList  ==>> RPAREN COMMA 

-

-CatchType  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-UnionType  ==>> Identifier aspect pointcut around before after declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 104

-

-

-    privileged OR 

-

-ClassTypeElt  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON COLON COMMA AT 

-    $eof 

-

-StaticOnly  ==>> LBRACE 

-

-ExplicitConstructorInvocation  ==>> Identifier abstract assert boolean break 

-    byte case char class continue default do double else enum false final 

-    float for if int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ArgumentListopt  ==>> RPAREN 

-

-OnlyTypeArguments  ==>> Identifier new super this aspect pointcut around 

-    before after declare privileged AND RPAREN LBRACKET DOT COLON_COLON AT308 

-    $eof 

-

-Primary  ==>> abstract final instanceof native private protected public static 

-    strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-InterfaceBody  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-InterfaceHeaderName  ==>> abstract extends final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeaderExtendsopt  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeaderName1  ==>> abstract extends final native private protected 

-    public static strictfp synchronized transient volatile LESS LBRACE AT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 105

-

-

-InterfaceHeaderExtends  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceMemberDeclarationsopt  ==>> RBRACE 

-

-InterfaceMemberDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-ConstantDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-InvalidConstructorDeclaration  ==>> Identifier abstract boolean byte char 

-    class default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-InvalidInitializer  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-PushLeftBrace  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE RBRACE COMMA AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-,opt  ==>> RBRACE 

-

-VariableInitializers  ==>> RBRACE COMMA 

-

-OpenBlock  ==>> LBRACE 

-

-BlockStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-BlockStatementopt0  ==>> $eof 

-

-LocalVariableDeclarationStatement  ==>> Identifier abstract assert boolean 

-    break byte case char class continue default do double enum false final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 106

-

-

-    float for if int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Statement  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile 

-    while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-LocalVariableDeclaration  ==>> SEMICOLON 

-

-PushModifiers  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-PushModifiersForHeader  ==>> interface 

-

-StatementWithoutTrailingSubstatement  ==>> Identifier abstract assert boolean 

-    break byte case char class continue default do double else enum false 

-    final float for if int interface long native new null private protected 

-    public return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-LabeledStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-IfThenStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-IfThenElseStatement  ==>> Identifier abstract assert boolean break byte case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 107

-

-

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-WhileStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ForStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnhancedForStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-StatementNoShortIf  ==>> else 

-

-LabeledStatementNoShortIf  ==>> else 

-

-IfThenElseStatementNoShortIf  ==>> else 

-

-WhileStatementNoShortIf  ==>> else 

-

-ForStatementNoShortIf  ==>> else 

-

-EnhancedForStatementNoShortIf  ==>> else 

-

-AssertStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 108

-

-

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EmptyStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ExpressionStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SwitchStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-DoStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-BreakStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ContinueStatement  ==>> Identifier abstract assert boolean break byte case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 109

-

-

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ReturnStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SynchronizedStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ThrowStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-TryStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-TryStatementWithResources  ==>> Identifier abstract assert boolean break byte 

-    case char class continue default do double else enum false final float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 110

-

-

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Label  ==>> COLON 

-

-StatementExpression  ==>> RPAREN SEMICOLON COMMA 

-

-Assignment  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-PreIncrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-PreDecrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-PostIncrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-PostDecrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-MethodInvocation  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 111

-

-

-ClassInstanceCreationExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-SwitchBlock  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SwitchBlockStatements  ==>> case default RBRACE 

-

-SwitchLabels  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 

-

-SwitchBlockStatement  ==>> case default RBRACE 

-

-SwitchLabel  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 

-

-ConstantExpression  ==>> COLON 

-

-ForInitopt  ==>> SEMICOLON 

-

-Expressionopt  ==>> SEMICOLON 

-

-ForUpdateopt  ==>> RPAREN 

-

-ForInit  ==>> SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 112

-

-

-StatementExpressionList  ==>> RPAREN SEMICOLON COMMA 

-

-ForUpdate  ==>> RPAREN 

-

-OnlySynchronized  ==>> LPAREN 

-

-TryBlock  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Catches  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Catchesopt  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double else enum false final finally float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Finally  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ResourceSpecification  ==>> LBRACE 

-

-Resources  ==>> RPAREN SEMICOLON 

-

-;opt  ==>> RPAREN 

-

-Resource  ==>> RPAREN SEMICOLON 

-

-TrailingSemiColon  ==>> Identifier abstract boolean byte char double final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 113

-

-

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-ExitTryBlock  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum false final finally float 

-    for if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-CatchClause  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum false final finally float 

-    for if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-PushLPAREN  ==>> Identifier abstract boolean byte char double false final 

-    float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN RPAREN AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-PushRPAREN  ==>> Identifier abstract boolean byte char double false final 

-    float instanceof int long native new null private protected public short 

-    static strictfp super synchronized this transient true void volatile 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL 

-    NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL 

-    MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL 

-    REMAINDER_EQUAL LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL 

-    UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT REMAINDER XOR AND 

-    MULTIPLY OR TWIDDLE DIVIDE GREATER LESS LPAREN RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ARROW COLON_COLON 

-    BeginLambda BeginIntersectionCast ElidedSemicolonAndRightBrace AT308 $eof 

-

-PrimaryNoNewArray  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 114

-

-

-    ElidedSemicolonAndRightBrace $eof 

-

-ArrayCreationWithArrayInitializer  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL 

-    AT COLON_COLON ElidedSemicolonAndRightBrace $eof 

-

-ArrayCreationWithoutArrayInitializer  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON ElidedSemicolonAndRightBrace $eof 

-

-Expression_NotName  ==>> RPAREN 

-

-FieldAccess  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-QualifiedSuperReceiver  ==>> DOT COLON_COLON 

-

-ArrayAccess  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-LambdaExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 115

-

-

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ReferenceExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> COLON_COLON $eof 

-

-NonWildTypeArgumentsopt  ==>> Identifier new 

-

-IdentifierOrNew  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-LambdaParameters  ==>> ARROW 

-

-LambdaBody  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-NestedLambda  ==>> LPAREN ARROW 

-

-LambdaParameterList  ==>> ARROW $eof 

-

-TypeElidedFormalParameterList  ==>> RPAREN COMMA 

-

-TypeElidedFormalParameter  ==>> RPAREN COMMA 

-

-ElidedLeftBraceAndReturn  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 116

-

-

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-EnterInstanceCreationArgumentList  ==>> LPAREN 

-

-UnqualifiedClassBodyopt  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-QualifiedClassBodyopt  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ClassInstanceCreationExpressionName  ==>> Identifier LESS AT308 

-

-UnqualifiedEnterAnonymousClassBody  ==>> LBRACE 

-

-QualifiedEnterAnonymousClassBody  ==>> LBRACE 

-

-ArgumentList  ==>> RPAREN COMMA 

-

-DimWithOrWithOutExprs  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN LBRACE RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-DimWithOrWithOutExpr  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN LBRACE RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 117

-

-

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-DimsLoop  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-OneDimLoop  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-PostfixExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-PushPosition  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-UnaryExpressionNotPlusMinus  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-CastExpression  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile EQUAL_EQUAL LESS_EQUAL 

-    GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 118

-

-

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-AdditionalBoundsListOpt  ==>> RPAREN 

-

-InsideCastExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-OnlyTypeArgumentsForCastExpression  ==>> AND RPAREN LBRACKET DOT AT308 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> Identifier boolean byte char 

-    double false float int long new null short super this true void aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InsideCastExpressionLL1  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral NOT TWIDDLE LPAREN 

-    BeginLambda BeginIntersectionCast AT308 

-

-CastNameAndBounds  ==>> RPAREN 

-

-InsideCastExpressionLL1WithBounds  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AdditionalBoundList  ==>> AND RPAREN COMMA 

-

-MultiplicativeExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-AdditiveExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS XOR AND OR GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ShiftExpression  ==>> abstract final instanceof native private protected 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 119

-

-

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER LESS RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace 

-    $eof 

-

-RelationalExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-InstanceofExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE RBRACKET SEMICOLON 

-    QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-EqualityExpression  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile EQUAL_EQUAL NOT_EQUAL OR_OR 

-    AND_AND XOR AND OR RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA 

-    AT ElidedSemicolonAndRightBrace $eof 

-

-AndExpression  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile OR_OR AND_AND XOR AND OR RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ExclusiveOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND XOR OR 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-InclusiveOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND OR RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ConditionalAndExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ConditionalOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace 

-    $eof 

-

-ConditionalExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile RPAREN RBRACE RBRACKET 

-    SEMICOLON COLON COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 120

-

-

-AssignmentExpression  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-AssignmentOperator  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-InvalidArrayInitializerAssignement  ==>> RPAREN RBRACE RBRACKET SEMICOLON 

-    COLON COMMA ElidedSemicolonAndRightBrace $eof 

-

-EnumBody  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile 

-    while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnumHeaderName  ==>> abstract final implements native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-EnumBodyDeclarationsopt  ==>> RBRACE 

-

-EnumConstants  ==>> RBRACE SEMICOLON COMMA 

-

-EnumConstant  ==>> RBRACE SEMICOLON COMMA 

-

-EnumConstantHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LPAREN LBRACE RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-Argumentsopt  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-Arguments  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT $eof 

-

-EnumDeclarations  ==>> RBRACE 

-

-EnhancedForStatementHeader  ==>> Identifier assert boolean break byte char 

-    continue do double false float for if int long new null return short super 

-    switch synchronized this throw true try void while aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-EnhancedForStatementHeaderInit  ==>> COLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 121

-

-

-SingleStaticImportDeclarationName  ==>> SEMICOLON 

-

-StaticImportOnDemandDeclarationName  ==>> SEMICOLON 

-

-TypeArgumentList1  ==>> Identifier abstract final implements instanceof native 

-    new private protected public static strictfp super synchronized this 

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgument1  ==>> Identifier abstract final implements instanceof native new 

-    private protected public static strictfp super synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgumentList  ==>> COMMA 

-

-TypeArgument  ==>> COMMA 

-

-Wildcard  ==>> COMMA 

-

-ReferenceType1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard1  ==>> Identifier abstract final implements instanceof native new 

-    private protected public static strictfp super synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgumentList2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 122

-

-

-TypeArgument2  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-ReferenceType2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard2  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeArgumentList3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgument3  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-ReferenceType3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 123

-

-

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard3  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-WildcardBounds  ==>> COMMA 

-

-WildcardBounds1  ==>> Identifier abstract final implements instanceof native 

-    new private protected public static strictfp super synchronized this 

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-WildcardBounds2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-WildcardBounds3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeParameterHeader  ==>> extends GREATER COMMA 

-

-TypeParameterList1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-TypeParameterList  ==>> COMMA 

-

-TypeParameter  ==>> COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 124

-

-

-AdditionalBound  ==>> AND RPAREN COMMA 

-

-TypeParameter1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-AdditionalBoundList1  ==>> Identifier abstract boolean byte char double 

-    extends final float implements int long native private protected public 

-    short static strictfp synchronized transient void volatile LBRACE DOT AT 

-    AT308 $eof 

-

-AdditionalBound1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-PostfixExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-UnaryExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-MultiplicativeExpression_NotName  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-AdditiveExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS XOR AND OR GREATER LESS 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ShiftExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER LESS RPAREN RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 125

-

-

-    SEMICOLON QUESTION COMMA AT $eof 

-

-RelationalExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-InstanceofExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE SEMICOLON 

-    QUESTION COMMA AT $eof 

-

-EqualityExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE SEMICOLON QUESTION COMMA 

-    AT $eof 

-

-AndExpression_NotName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND XOR AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ExclusiveOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND XOR 

-    OR RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-InclusiveOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalAndExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR RPAREN RBRACE 

-    SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile RPAREN RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-AssignmentExpression_NotName  ==>> RPAREN 

-

-AnnotationTypeDeclarationHeaderName  ==>> abstract extends final implements 

-    native private protected public static strictfp synchronized transient 

-    volatile LBRACE AT $eof 

-

-AnnotationTypeBody  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 126

-

-

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-AnnotationTypeMemberDeclarationsopt  ==>> RBRACE 

-

-AnnotationTypeMemberDeclarations  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS RBRACE SEMICOLON AT AT308 

-

-AnnotationMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> abstract final native private 

-    protected public static strictfp synchronized transient volatile SEMICOLON 

-    AT $eof 

-

-DefaultValue  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile SEMICOLON AT $eof 

-

-AnnotationMethodHeader  ==>> SEMICOLON 

-

-NormalAnnotation  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-MarkerAnnotation  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-SingleMemberAnnotation  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-AnnotationName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS LPAREN RPAREN 

-    RBRACE SEMICOLON COMMA AT AT308 $eof 

-

-MemberValuePairs  ==>> RPAREN COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 127

-

-

-MemberValuePair  ==>> RPAREN COMMA 

-

-EnterMemberValue  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-ExitMemberValue  ==>> RPAREN COMMA 

-

-MemberValueArrayInitializer  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile RPAREN RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-EnterMemberValueArrayInitializer  ==>> LBRACE 

-

-MemberValues  ==>> RBRACE COMMA 

-

-RecoveryMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 128

-

-

-Name map:

-

-$empty ::= $empty

-Identifier ::= Identifier

-abstract ::= abstract

-assert ::= assert

-boolean ::= boolean

-break ::= break

-byte ::= byte

-case ::= case

-catch ::= catch

-char ::= char

-class ::= class

-continue ::= continue

-const ::= const

-default ::= default

-do ::= do

-double ::= double

-else ::= else

-enum ::= enum

-extends ::= extends

-false ::= false

-final ::= final

-finally ::= finally

-float ::= float

-for ::= for

-goto ::= goto

-if ::= if

-implements ::= implements

-import ::= import

-instanceof ::= instanceof

-int ::= int

-interface ::= interface

-long ::= long

-native ::= native

-new ::= new

-null ::= null

-package ::= package

-private ::= private

-protected ::= protected

-public ::= public

-return ::= return

-short ::= short

-static ::= static

-strictfp ::= strictfp

-super ::= super

-switch ::= switch

-synchronized ::= synchronized

-this ::= this

-throw ::= throw

-throws ::= throws

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 129

-

-

-transient ::= transient

-true ::= true

-try ::= try

-void ::= void

-volatile ::= volatile

-while ::= while

-aspect ::= aspect

-pointcut ::= pointcut

-around ::= around

-before ::= before

-after ::= after

-declare ::= declare

-privileged ::= privileged

-IntegerLiteral ::= IntegerLiteral

-LongLiteral ::= LongLiteral

-FloatingPointLiteral ::= FloatingPointLiteral

-DoubleLiteral ::= DoubleLiteral

-CharacterLiteral ::= CharacterLiteral

-StringLiteral ::= StringLiteral

-PLUS_PLUS ::= ++

-MINUS_MINUS ::= --

-EQUAL_EQUAL ::= ==

-LESS_EQUAL ::= <=

-GREATER_EQUAL ::= >=

-NOT_EQUAL ::= !=

-LEFT_SHIFT ::= <<

-RIGHT_SHIFT ::= >>

-UNSIGNED_RIGHT_SHIFT ::= >>>

-PLUS_EQUAL ::= +=

-MINUS_EQUAL ::= -=

-MULTIPLY_EQUAL ::= *=

-DIVIDE_EQUAL ::= /=

-AND_EQUAL ::= &=

-OR_EQUAL ::= |=

-XOR_EQUAL ::= ^=

-REMAINDER_EQUAL ::= %=

-LEFT_SHIFT_EQUAL ::= <<=

-RIGHT_SHIFT_EQUAL ::= >>=

-UNSIGNED_RIGHT_SHIFT_EQUAL ::= >>>=

-OR_OR ::= ||

-AND_AND ::= &&

-PLUS ::= +

-MINUS ::= -

-NOT ::= !

-REMAINDER ::= %

-XOR ::= ^

-AND ::= &

-MULTIPLY ::= *

-OR ::= '|'

-TWIDDLE ::= ~

-DIVIDE ::= /

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 130

-

-

-GREATER ::= >

-LESS ::= <

-LPAREN ::= (

-RPAREN ::= )

-LBRACE ::= {

-RBRACE ::= }

-LBRACKET ::= [

-RBRACKET ::= ]

-SEMICOLON ::= ;

-QUESTION ::= ?

-COLON ::= :

-COMMA ::= ,

-DOT ::= .

-EQUAL ::= =

-AT ::= @

-ELLIPSIS ::= ...

-ARROW ::= ->

-COLON_COLON ::= ::

-BeginLambda ::= BeginLambda

-BeginIntersectionCast ::= BeginIntersectionCast

-BeginTypeArguments ::= BeginTypeArguments

-ElidedSemicolonAndRightBrace ::= ElidedSemicolonAndRightBrace

-AT308 ::= @

-AT308DOTDOTDOT ::= @

-$eof ::= $eof

-$error ::= $error

-Goal ::= Goal

-CompilationUnit ::= CompilationUnit

-MethodBody ::= MethodBody

-StaticInitializer ::= StaticInitializer

-Initializer ::= Initializer

-Header1 ::= Header1

-Modifiersopt ::= Modifiersopt

-Header2 ::= Header2

-BlockStatements ::= BlockStatements

-CatchHeader ::= CatchHeader

-FieldDeclaration ::= FieldDeclaration

-ImportDeclaration ::= ImportDeclaration

-PackageDeclaration ::= PackageDeclaration

-TypeDeclaration ::= TypeDeclaration

-GenericMethodDeclaration ::= GenericMethodDeclaration

-ClassBodyDeclarations ::= ClassBodyDeclarations

-Expression ::= Expression

-ArrayInitializer ::= ArrayInitializer

-BlockStatementsopt ::= BlockStatementsopt

-BlockStatementopt ::= BlockStatementopt

-MemberValue ::= MemberValue

-AnnotationTypeMemberDeclaration ::= AnnotationTypeMemberDeclaration

-ParenthesizedLambdaParameterList ::= ParenthesizedLambdaParameterList

-ParenthesizedCastNameAndBounds ::= ParenthesizedCastNameAndBounds

-ReferenceExpressionTypeArgumentsAndTrunk ::= 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 131

-

-

-    ReferenceExpressionTypeArgumentsAndTrunk

-TypeAnnotations ::= TypeAnnotations

-Literal ::= Literal

-BooleanLiteral ::= BooleanLiteral

-JavaIdentifier ::= JavaIdentifier

-AjSimpleName ::= AjSimpleName

-JavaIdentifierNoAround ::= JavaIdentifierNoAround

-AjSimpleNameNoAround ::= AjSimpleNameNoAround

-Type ::= Type

-PrimitiveType ::= PrimitiveType

-ReferenceType ::= ReferenceType

-TypeAnnotationsopt ::= TypeAnnotationsopt

-NumericType ::= NumericType

-IntegralType ::= IntegralType

-FloatingPointType ::= FloatingPointType

-ClassOrInterfaceType ::= ClassOrInterfaceType

-ArrayType ::= ArrayType

-ClassOrInterface ::= ClassOrInterface

-GenericType ::= GenericType

-Name ::= Name

-TypeArguments ::= TypeArguments

-ArrayTypeWithTypeArgumentsName ::= ArrayTypeWithTypeArgumentsName

-Dims ::= Dims

-ClassType ::= ClassType

-NameOrAj ::= NameOrAj

-AjName ::= AjName

-SimpleNameOrAj ::= SimpleNameOrAj

-SimpleName ::= SimpleName

-AjQualifiedName ::= AjQualifiedName

-UnannotatableNameOrAj ::= UnannotatableNameOrAj

-UnannotatableName ::= UnannotatableName

-QualifiedName ::= QualifiedName

-TypeAnnotations0 ::= TypeAnnotations0

-TypeAnnotation ::= TypeAnnotation

-NormalTypeAnnotation ::= NormalTypeAnnotation

-MarkerTypeAnnotation ::= MarkerTypeAnnotation

-SingleMemberTypeAnnotation ::= SingleMemberTypeAnnotation

-TypeAnnotationName ::= TypeAnnotationName

-MemberValuePairsopt ::= MemberValuePairsopt

-SingleMemberAnnotationMemberValue ::= SingleMemberAnnotationMemberValue

-RejectTypeAnnotations ::= RejectTypeAnnotations

-PushZeroTypeAnnotations ::= PushZeroTypeAnnotations

-VariableDeclaratorIdOrThis ::= VariableDeclaratorIdOrThis

-VariableDeclaratorId ::= VariableDeclaratorId

-EnterCompilationUnit ::= EnterCompilationUnit

-InternalCompilationUnit ::= InternalCompilationUnit

-ImportDeclarations ::= ImportDeclarations

-ReduceImports ::= ReduceImports

-TypeDeclarations ::= TypeDeclarations

-Header ::= Header

-ClassHeader ::= ClassHeader

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 132

-

-

-InterfaceHeader ::= InterfaceHeader

-EnumHeader ::= EnumHeader

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeader

-RecoveryMethodHeader ::= RecoveryMethodHeader

-AllocationHeader ::= AllocationHeader

-ArrayCreationHeader ::= ArrayCreationHeader

-ConstructorHeader ::= ConstructorHeader

-EnumConstantHeader ::= EnumConstantHeader

-CatchFormalParameter ::= CatchFormalParameter

-PackageDeclarationName ::= PackageDeclarationName

-Modifiers ::= Modifiers

-PushRealModifiers ::= PushRealModifiers

-PackageComment ::= PackageComment

-SingleTypeImportDeclaration ::= SingleTypeImportDeclaration

-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclaration

-SingleStaticImportDeclaration ::= SingleStaticImportDeclaration

-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclaration

-SingleTypeImportDeclarationName ::= SingleTypeImportDeclarationName

-TypeImportOnDemandDeclarationName ::= TypeImportOnDemandDeclarationName

-ClassDeclaration ::= ClassDeclaration

-InterfaceDeclaration ::= InterfaceDeclaration

-EnumDeclaration ::= EnumDeclaration

-AnnotationTypeDeclaration ::= AnnotationTypeDeclaration

-Modifier ::= Modifier

-SimpleModifier ::= SimpleModifier

-Annotation ::= Annotation

-DeclareDeclaration ::= DeclareDeclaration

-InterTypeMethodDeclaration ::= InterTypeMethodDeclaration

-InterTypeFieldDeclaration ::= InterTypeFieldDeclaration

-PointcutDeclaration ::= PointcutDeclaration

-BasicAdviceDeclaration ::= BasicAdviceDeclaration

-AroundDeclaration ::= AroundDeclaration

-AspectDeclaration ::= AspectDeclaration

-ClassMemberDeclaration ::= ClassMemberDeclaration

-InterfaceMemberDeclaration ::= InterfaceMemberDeclaration

-AspectHeader ::= AspectHeader

-AspectBody ::= AspectBody

-AspectHeaderName ::= AspectHeaderName

-ClassHeaderExtendsopt ::= ClassHeaderExtendsopt

-ClassHeaderImplementsopt ::= ClassHeaderImplementsopt

-AspectHeaderRest ::= AspectHeaderRest

-AspectHeaderName1 ::= AspectHeaderName1

-AspectHeaderName2 ::= AspectHeaderName2

-TypeParameters ::= TypeParameters

-AspectHeaderRestStart ::= AspectHeaderRestStart

-PseudoTokens ::= PseudoTokens

-AspectBodyDeclarationsopt ::= AspectBodyDeclarationsopt

-AspectBodyDeclarations ::= AspectBodyDeclarations

-AspectBodyDeclaration ::= AspectBodyDeclaration

-NestedType ::= NestedType

-ClassBodyDeclarationNoAroundMethod ::= ClassBodyDeclarationNoAroundMethod

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 133

-

-

-ClassMemberDeclarationNoAroundMethod ::= ClassMemberDeclarationNoAroundMethod

-ConstructorDeclaration ::= ConstructorDeclaration

-Diet ::= Diet

-NestedMethod ::= NestedMethod

-CreateInitializer ::= CreateInitializer

-Block ::= Block

-MethodDeclarationNoAround ::= MethodDeclarationNoAround

-IntertypeClassDeclaration ::= IntertypeClassDeclaration

-AbstractMethodDeclarationNoAround ::= AbstractMethodDeclarationNoAround

-MethodHeaderNoAround ::= MethodHeaderNoAround

-MethodHeaderNameNoAround ::= MethodHeaderNameNoAround

-FormalParameterListopt ::= FormalParameterListopt

-MethodHeaderRightParen ::= MethodHeaderRightParen

-MethodHeaderExtendedDims ::= MethodHeaderExtendedDims

-MethodHeaderThrowsClauseopt ::= MethodHeaderThrowsClauseopt

-PointcutHeader ::= PointcutHeader

-AroundHeader ::= AroundHeader

-AroundHeaderName ::= AroundHeaderName

-BasicAdviceHeader ::= BasicAdviceHeader

-BeforeAdviceHeader ::= BeforeAdviceHeader

-AfterAdviceHeader ::= AfterAdviceHeader

-BeforeAdviceHeaderName ::= BeforeAdviceHeaderName

-AfterAdviceHeaderName ::= AfterAdviceHeaderName

-ExtraParamopt ::= ExtraParamopt

-FormalParameter ::= FormalParameter

-OnType ::= OnType

-InterTypeConstructorDeclaration ::= InterTypeConstructorDeclaration

-AbstractInterTypeMethodDeclaration ::= AbstractInterTypeMethodDeclaration

-InterTypeMethodHeader ::= InterTypeMethodHeader

-InterTypeMethodHeaderName ::= InterTypeMethodHeaderName

-TypeParametersAsReference ::= TypeParametersAsReference

-InterTypeConstructorHeader ::= InterTypeConstructorHeader

-InterTypeConstructorHeaderName ::= InterTypeConstructorHeaderName

-InterTypeFieldHeader ::= InterTypeFieldHeader

-InterTypeFieldBody ::= InterTypeFieldBody

-ForceNoDiet ::= ForceNoDiet

-VariableInitializer ::= VariableInitializer

-RestoreDiet ::= RestoreDiet

-DeclareHeader ::= DeclareHeader

-DeclareAnnotationHeader ::= DeclareAnnotationHeader

-PseudoTokensNoColon ::= PseudoTokensNoColon

-Annotations ::= Annotations

-PseudoToken ::= PseudoToken

-ColonPseudoToken ::= ColonPseudoToken

-ClassBody ::= ClassBody

-IntertypeClassHeader ::= IntertypeClassHeader

-IntertypeClassHeaderName ::= IntertypeClassHeaderName

-IntertypeClassHeaderName1 ::= IntertypeClassHeaderName1

-InterTypeClassHeaderName1 ::= InterTypeClassHeaderName1

-ClassHeaderName ::= ClassHeaderName

-ClassHeaderName1 ::= ClassHeaderName1

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 134

-

-

-ClassHeaderExtends ::= ClassHeaderExtends

-ClassHeaderImplements ::= ClassHeaderImplements

-InterfaceTypeList ::= InterfaceTypeList

-InterfaceType ::= InterfaceType

-ClassBodyDeclarationsopt ::= ClassBodyDeclarationsopt

-ClassBodyDeclaration ::= ClassBodyDeclaration

-MethodDeclaration ::= MethodDeclaration

-VariableDeclarators ::= VariableDeclarators

-VariableDeclarator ::= VariableDeclarator

-EnterVariable ::= EnterVariable

-ExitVariableWithoutInitialization ::= ExitVariableWithoutInitialization

-ExitVariableWithInitialization ::= ExitVariableWithInitialization

-Dimsopt ::= Dimsopt

-AbstractMethodDeclaration ::= AbstractMethodDeclaration

-MethodHeader ::= MethodHeader

-DefaultMethodHeader ::= DefaultMethodHeader

-MethodHeaderName ::= MethodHeaderName

-DefaultMethodHeaderName ::= DefaultMethodHeaderName

-ModifiersWithDefault ::= ModifiersWithDefault

-MethodHeaderThrowsClause ::= MethodHeaderThrowsClause

-ClassTypeList ::= ClassTypeList

-ConstructorHeaderName ::= ConstructorHeaderName

-FormalParameterList ::= FormalParameterList

-CatchType ::= CatchType

-UnionType ::= UnionType

-ClassTypeElt ::= ClassTypeElt

-StaticOnly ::= StaticOnly

-ExplicitConstructorInvocation ::= ExplicitConstructorInvocation

-ArgumentListopt ::= ArgumentListopt

-OnlyTypeArguments ::= OnlyTypeArguments

-Primary ::= Primary

-InterfaceBody ::= InterfaceBody

-InterfaceHeaderName ::= InterfaceHeaderName

-InterfaceHeaderExtendsopt ::= InterfaceHeaderExtendsopt

-InterfaceHeaderName1 ::= InterfaceHeaderName1

-InterfaceHeaderExtends ::= InterfaceHeaderExtends

-InterfaceMemberDeclarationsopt ::= InterfaceMemberDeclarationsopt

-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations

-ConstantDeclaration ::= ConstantDeclaration

-InvalidConstructorDeclaration ::= InvalidConstructorDeclaration

-InvalidInitializer ::= InvalidInitializer

-PushLeftBrace ::= PushLeftBrace

-,opt ::= ,opt

-VariableInitializers ::= VariableInitializers

-OpenBlock ::= OpenBlock

-BlockStatement ::= BlockStatement

-BlockStatementopt0 ::= BlockStatementopt0

-LocalVariableDeclarationStatement ::= LocalVariableDeclarationStatement

-Statement ::= Statement

-LocalVariableDeclaration ::= LocalVariableDeclaration

-PushModifiers ::= PushModifiers

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 135

-

-

-PushModifiersForHeader ::= PushModifiersForHeader

-StatementWithoutTrailingSubstatement ::= StatementWithoutTrailingSubstatement

-LabeledStatement ::= LabeledStatement

-IfThenStatement ::= IfThenStatement

-IfThenElseStatement ::= IfThenElseStatement

-WhileStatement ::= WhileStatement

-ForStatement ::= ForStatement

-EnhancedForStatement ::= EnhancedForStatement

-StatementNoShortIf ::= StatementNoShortIf

-LabeledStatementNoShortIf ::= LabeledStatementNoShortIf

-IfThenElseStatementNoShortIf ::= IfThenElseStatementNoShortIf

-WhileStatementNoShortIf ::= WhileStatementNoShortIf

-ForStatementNoShortIf ::= ForStatementNoShortIf

-EnhancedForStatementNoShortIf ::= EnhancedForStatementNoShortIf

-AssertStatement ::= AssertStatement

-EmptyStatement ::= EmptyStatement

-ExpressionStatement ::= ExpressionStatement

-SwitchStatement ::= SwitchStatement

-DoStatement ::= DoStatement

-BreakStatement ::= BreakStatement

-ContinueStatement ::= ContinueStatement

-ReturnStatement ::= ReturnStatement

-SynchronizedStatement ::= SynchronizedStatement

-ThrowStatement ::= ThrowStatement

-TryStatement ::= TryStatement

-TryStatementWithResources ::= TryStatementWithResources

-Label ::= Label

-StatementExpression ::= StatementExpression

-Assignment ::= Assignment

-PreIncrementExpression ::= PreIncrementExpression

-PreDecrementExpression ::= PreDecrementExpression

-PostIncrementExpression ::= PostIncrementExpression

-PostDecrementExpression ::= PostDecrementExpression

-MethodInvocation ::= MethodInvocation

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpression

-SwitchBlock ::= SwitchBlock

-SwitchBlockStatements ::= SwitchBlockStatements

-SwitchLabels ::= SwitchLabels

-SwitchBlockStatement ::= SwitchBlockStatement

-SwitchLabel ::= SwitchLabel

-ConstantExpression ::= ConstantExpression

-ForInitopt ::= ForInitopt

-Expressionopt ::= Expressionopt

-ForUpdateopt ::= ForUpdateopt

-ForInit ::= ForInit

-StatementExpressionList ::= StatementExpressionList

-ForUpdate ::= ForUpdate

-OnlySynchronized ::= OnlySynchronized

-TryBlock ::= TryBlock

-Catches ::= Catches

-Catchesopt ::= Catchesopt

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 136

-

-

-Finally ::= Finally

-ResourceSpecification ::= ResourceSpecification

-Resources ::= Resources

-;opt ::= ;opt

-Resource ::= Resource

-TrailingSemiColon ::= TrailingSemiColon

-ExitTryBlock ::= ExitTryBlock

-CatchClause ::= CatchClause

-PushLPAREN ::= PushLPAREN

-PushRPAREN ::= PushRPAREN

-PrimaryNoNewArray ::= PrimaryNoNewArray

-ArrayCreationWithArrayInitializer ::= ArrayCreationWithArrayInitializer

-ArrayCreationWithoutArrayInitializer ::= ArrayCreationWithoutArrayInitializer

-Expression_NotName ::= Expression_NotName

-FieldAccess ::= FieldAccess

-QualifiedSuperReceiver ::= QualifiedSuperReceiver

-ArrayAccess ::= ArrayAccess

-LambdaExpression ::= LambdaExpression

-ReferenceExpression ::= ReferenceExpression

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= 

-    ReferenceExpressionTypeArgumentsAndTrunk0

-NonWildTypeArgumentsopt ::= NonWildTypeArgumentsopt

-IdentifierOrNew ::= IdentifierOrNew

-LambdaParameters ::= LambdaParameters

-LambdaBody ::= LambdaBody

-NestedLambda ::= NestedLambda

-LambdaParameterList ::= LambdaParameterList

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList

-TypeElidedFormalParameter ::= TypeElidedFormalParameter

-ElidedLeftBraceAndReturn ::= ElidedLeftBraceAndReturn

-EnterInstanceCreationArgumentList ::= EnterInstanceCreationArgumentList

-UnqualifiedClassBodyopt ::= UnqualifiedClassBodyopt

-QualifiedClassBodyopt ::= QualifiedClassBodyopt

-ClassInstanceCreationExpressionName ::= ClassInstanceCreationExpressionName

-UnqualifiedEnterAnonymousClassBody ::= UnqualifiedEnterAnonymousClassBody

-QualifiedEnterAnonymousClassBody ::= QualifiedEnterAnonymousClassBody

-ArgumentList ::= ArgumentList

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs

-DimWithOrWithOutExpr ::= DimWithOrWithOutExpr

-DimsLoop ::= DimsLoop

-OneDimLoop ::= OneDimLoop

-PostfixExpression ::= PostfixExpression

-PushPosition ::= PushPosition

-UnaryExpression ::= UnaryExpression

-UnaryExpressionNotPlusMinus ::= UnaryExpressionNotPlusMinus

-CastExpression ::= CastExpression

-AdditionalBoundsListOpt ::= AdditionalBoundsListOpt

-InsideCastExpression ::= InsideCastExpression

-OnlyTypeArgumentsForCastExpression ::= OnlyTypeArgumentsForCastExpression

-InsideCastExpressionWithQualifiedGenerics ::= 

-    InsideCastExpressionWithQualifiedGenerics

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 137

-

-

-InsideCastExpressionLL1 ::= InsideCastExpressionLL1

-CastNameAndBounds ::= CastNameAndBounds

-InsideCastExpressionLL1WithBounds ::= InsideCastExpressionLL1WithBounds

-AdditionalBoundList ::= AdditionalBoundList

-MultiplicativeExpression ::= MultiplicativeExpression

-AdditiveExpression ::= AdditiveExpression

-ShiftExpression ::= ShiftExpression

-RelationalExpression ::= RelationalExpression

-InstanceofExpression ::= InstanceofExpression

-EqualityExpression ::= EqualityExpression

-AndExpression ::= AndExpression

-ExclusiveOrExpression ::= ExclusiveOrExpression

-InclusiveOrExpression ::= InclusiveOrExpression

-ConditionalAndExpression ::= ConditionalAndExpression

-ConditionalOrExpression ::= ConditionalOrExpression

-ConditionalExpression ::= ConditionalExpression

-AssignmentExpression ::= AssignmentExpression

-AssignmentOperator ::= AssignmentOperator

-InvalidArrayInitializerAssignement ::= InvalidArrayInitializerAssignement

-EnumBody ::= EnumBody

-EnumHeaderName ::= EnumHeaderName

-EnumBodyDeclarationsopt ::= EnumBodyDeclarationsopt

-EnumConstants ::= EnumConstants

-EnumConstant ::= EnumConstant

-EnumConstantHeaderName ::= EnumConstantHeaderName

-Argumentsopt ::= Argumentsopt

-Arguments ::= Arguments

-EnumDeclarations ::= EnumDeclarations

-EnhancedForStatementHeader ::= EnhancedForStatementHeader

-EnhancedForStatementHeaderInit ::= EnhancedForStatementHeaderInit

-SingleStaticImportDeclarationName ::= SingleStaticImportDeclarationName

-StaticImportOnDemandDeclarationName ::= StaticImportOnDemandDeclarationName

-TypeArgumentList1 ::= TypeArgumentList1

-TypeArgument1 ::= TypeArgument1

-TypeArgumentList ::= TypeArgumentList

-TypeArgument ::= TypeArgument

-Wildcard ::= Wildcard

-ReferenceType1 ::= ReferenceType1

-Wildcard1 ::= Wildcard1

-TypeArgumentList2 ::= TypeArgumentList2

-TypeArgument2 ::= TypeArgument2

-ReferenceType2 ::= ReferenceType2

-Wildcard2 ::= Wildcard2

-TypeArgumentList3 ::= TypeArgumentList3

-TypeArgument3 ::= TypeArgument3

-ReferenceType3 ::= ReferenceType3

-Wildcard3 ::= Wildcard3

-WildcardBounds ::= WildcardBounds

-WildcardBounds1 ::= WildcardBounds1

-WildcardBounds2 ::= WildcardBounds2

-WildcardBounds3 ::= WildcardBounds3

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 138

-

-

-TypeParameterHeader ::= TypeParameterHeader

-TypeParameterList1 ::= TypeParameterList1

-TypeParameterList ::= TypeParameterList

-TypeParameter ::= TypeParameter

-AdditionalBound ::= AdditionalBound

-TypeParameter1 ::= TypeParameter1

-AdditionalBoundList1 ::= AdditionalBoundList1

-AdditionalBound1 ::= AdditionalBound1

-PostfixExpression_NotName ::= PostfixExpression_NotName

-UnaryExpression_NotName ::= UnaryExpression_NotName

-UnaryExpressionNotPlusMinus_NotName ::= UnaryExpressionNotPlusMinus_NotName

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName

-AdditiveExpression_NotName ::= AdditiveExpression_NotName

-ShiftExpression_NotName ::= ShiftExpression_NotName

-RelationalExpression_NotName ::= RelationalExpression_NotName

-InstanceofExpression_NotName ::= InstanceofExpression_NotName

-EqualityExpression_NotName ::= EqualityExpression_NotName

-AndExpression_NotName ::= AndExpression_NotName

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName

-ConditionalExpression_NotName ::= ConditionalExpression_NotName

-AssignmentExpression_NotName ::= AssignmentExpression_NotName

-AnnotationTypeDeclarationHeaderName ::= AnnotationTypeDeclarationHeaderName

-AnnotationTypeBody ::= AnnotationTypeBody

-AnnotationTypeMemberDeclarationsopt ::= AnnotationTypeMemberDeclarationsopt

-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations

-AnnotationMethodHeaderName ::= AnnotationMethodHeaderName

-AnnotationMethodHeaderDefaultValueopt ::= AnnotationMethodHeaderDefaultValueopt

-DefaultValue ::= DefaultValue

-AnnotationMethodHeader ::= AnnotationMethodHeader

-NormalAnnotation ::= NormalAnnotation

-MarkerAnnotation ::= MarkerAnnotation

-SingleMemberAnnotation ::= SingleMemberAnnotation

-AnnotationName ::= AnnotationName

-MemberValuePairs ::= MemberValuePairs

-MemberValuePair ::= MemberValuePair

-EnterMemberValue ::= EnterMemberValue

-ExitMemberValue ::= ExitMemberValue

-MemberValueArrayInitializer ::= MemberValueArrayInitializer

-EnterMemberValueArrayInitializer ::= EnterMemberValueArrayInitializer

-MemberValues ::= MemberValues

-RecoveryMethodHeaderName ::= RecoveryMethodHeaderName

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 139

-

-

-Scopes:

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt  .RPAREN StatementNoShortIf 

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt  .RPAREN Statement 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 140

-

-

-                       MINUS Annotations  .SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS Annotations  .SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens  .SEMICOLON 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers  .JavaIdentifier 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-DoStatement ::= do Statement while LPAREN Expression  .RPAREN SEMICOLON 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf  .else StatementNoShortIf 

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt  .COLON PseudoTokens 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt  .PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .

-                          SEMICOLON RPAREN StatementNoShortIf 

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 RPAREN Statement 

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable  .EQUAL VariableInitializer 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .RBRACE 

-EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt  .RBRACE 

-ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt  .

-                        IdentifierOrNew 

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 141

-

-

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt  .

-                              Finally 

-AssertStatement ::= assert Expression COLON Expression  .SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations  .SEMICOLON 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .COMMA RBRACE 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers  .

-                                   JavaIdentifier 

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference  .

-                         DOT JavaIdentifier 

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt  .

-                       COLON PseudoTokens 

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt  .COLON 

-                 PseudoTokens 

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt  .PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN UnaryExpression 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable  .EQUAL 

-             VariableInitializer 

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments  .

-                                    ClassType LPAREN RPAREN 

-SingleMemberAnnotation ::= AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue  .RPAREN 

-NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-TypeParameter1 ::= TypeParameterHeader extends ReferenceType  .

-                   AdditionalBoundList1 

-TypeParameter ::= TypeParameterHeader extends ReferenceType  .

-                  AdditionalBoundList 

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                               Expression  .RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 142

-

-

-EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt  .RBRACE 

-EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt  .RBRACE 

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression  .

-                RBRACKET 

-ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression  .RBRACKET 

-ArrayAccess ::= AjName LBRACKET Expression  .RBRACKET 

-ArrayAccess ::= Name LBRACKET Expression  .RBRACKET 

-MethodInvocation ::= NameOrAj LPAREN ArgumentListopt  .RPAREN 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression  .RBRACKET 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt  .Identifier 

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt  .Identifier 

-ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt  .

-                        Identifier 

-ResourceSpecification ::= LPAREN Resources ;opt  .RPAREN 

-TryStatement ::= try TryBlock Catchesopt  .Finally 

-SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels  .RBRACE 

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-Block ::= OpenBlock LBRACE BlockStatementsopt  .RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .RBRACE 

-MethodBody ::= NestedMethod LBRACE BlockStatementsopt  .RBRACE 

-FieldDeclaration ::= Modifiersopt Type VariableDeclarators  .SEMICOLON 

-PseudoToken ::= if LPAREN Expression  .RPAREN 

-ExtraParamopt ::= Identifier LPAREN FormalParameter  .RPAREN 

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue  .RPAREN 

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-QualifiedName ::= Name DOT TypeAnnotations  .JavaIdentifier 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                               JavaIdentifier LPAREN 

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression  .COLON 

-                                  ConditionalExpression 

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression  .COLON ConditionalExpression 

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression  .COLON 

-                          ConditionalExpression 

-CatchClause ::= catch LPAREN CatchFormalParameter  .RPAREN Block 

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression  .RPAREN Block 

-WhileStatementNoShortIf ::= while LPAREN Expression  .RPAREN StatementNoShortIf 

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .COMMA RBRACE 

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 143

-

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt TypeParameters Type  .JavaIdentifier LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt  .aspect Identifier 

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds  .

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk  .COLON_COLON 

-                        IdentifierOrNew 

-SwitchStatement ::= switch LPAREN Expression  .RPAREN SwitchBlock 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType  .

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name  .DOT new 

-                                   LPAREN 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers  .Type JavaIdentifier 

-MethodInvocation ::= super DOT OnlyTypeArguments  .JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments  .

-                     JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     RPAREN 

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression  .RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .super LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .super LPAREN 

-                                  RPAREN SEMICOLON 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt  .SEMICOLON SEMICOLON RPAREN 

-                          StatementNoShortIf 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 144

-

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON SEMICOLON RPAREN Statement 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .DOT 

-                   ClassOrInterfaceType PushRPAREN UnaryExpressionNotPlusMinus 

-Resource ::= Modifiers Type PushRealModifiers  .VariableDeclaratorId EQUAL 

-             VariableInitializer 

-AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt  .RBRACE 

-Arguments ::= LPAREN ArgumentListopt  .RPAREN 

-EnumBody ::= LBRACE EnumBodyDeclarationsopt  .RBRACE 

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType  .

-                                        DimWithOrWithOutExprs 

-LambdaBody ::= ElidedLeftBraceAndReturn Expression  .

-               ElidedSemicolonAndRightBrace 

-LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList  .PushRPAREN 

-LambdaParameterList ::= PushLPAREN FormalParameterListopt  .PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN Expression_NotName  .PushRPAREN 

-TryStatement ::= try TryBlock  .Catches 

-ThrowStatement ::= throw Expression  .SEMICOLON 

-ReturnStatement ::= return Expressionopt  .SEMICOLON 

-AssertStatement ::= assert Expression  .SEMICOLON 

-SwitchLabel ::= case ConstantExpression  .COLON 

-SwitchBlock ::= LBRACE SwitchLabels  .RBRACE 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .RBRACE 

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt  .RBRACE 

-CatchFormalParameter ::= Modifiersopt CatchType  .VariableDeclaratorId 

-FormalParameter ::= Modifiersopt Type  .VariableDeclaratorIdOrThis 

-ClassBody ::= LBRACE ClassBodyDeclarationsopt  .RBRACE 

-DeclareDeclaration ::= DeclareHeader PseudoTokens  .SEMICOLON 

-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody  .

-                              SEMICOLON 

-AspectBody ::= LBRACE AspectBodyDeclarationsopt  .RBRACE 

-AnnotationMethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType  .

-                                      DimWithOrWithOutExprs ArrayInitializer 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType  .DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .SwitchLabels RBRACE 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen 

-DefaultMethodHeaderName ::= ModifiersWithDefault Type  .Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt  .MethodHeaderRightParen 

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 145

-

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen SEMICOLON 

-MethodHeaderNameNoAround ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt  .

-                           MethodHeaderRightParen 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                               JavaIdentifier LPAREN 

-EnumBody ::= LBRACE EnumConstants  .COMMA RBRACE 

-CastExpression ::= PushLPAREN Name  .PushRPAREN UnaryExpressionNotPlusMinus 

-ReferenceExpression ::= Name Dimsopt  .COLON_COLON IdentifierOrNew 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON IdentifierOrNew 

-AssertStatement ::= assert Expression  .COLON Expression SEMICOLON 

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt TypeParameters  .Type JavaIdentifier LPAREN 

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt  .

-                        MethodHeaderRightParen 

-MethodHeader ::= MethodHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       Annotations SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType  .DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT new LPAREN 

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt  .

-                          MethodHeaderRightParen 

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt  .

-                         MethodHeaderRightParen 

-FormalParameter ::= Modifiersopt Type  .AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       MINUS Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON PLUS 

-                       Annotations SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .GenericType 

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .PLUS DOT new LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt  .

-                       MethodHeaderRightParen COLON PseudoTokens 

-AroundHeader ::= AroundHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen COLON PseudoTokens 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 146

-

-

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-CastExpression ::= PushLPAREN Name  .Dims PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-DoStatement ::= do Statement  .while LPAREN Expression RPAREN SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen COLON PseudoTokens 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression 

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments  .ClassType LPAREN RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments  .ClassType LPAREN 

-                                    RPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-Resource ::= Type PushModifiers  .VariableDeclaratorId EQUAL 

-             VariableInitializer 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType PushRPAREN UnaryExpressionNotPlusMinus 

-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader  .SEMICOLON 

-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader  .

-                              AnnotationTypeBody 

-AdditionalBoundList1 ::= AdditionalBoundList  .AdditionalBound1 

-TypeParameter1 ::= TypeParameterHeader  .GREATER 

-TypeParameterHeader ::= TypeAnnotationsopt  .JavaIdentifier 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType1 ::= ReferenceType  .GREATER 

-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader  .

-                                  StatementNoShortIf 

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-EnumDeclaration ::= EnumHeader  .EnumBody 

-CastNameAndBounds ::= Name  .AdditionalBoundList 

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-ExpressionStatement ::= StatementExpression  .SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 147

-

-

-LocalVariableDeclarationStatement ::= LocalVariableDeclaration  .SEMICOLON 

-InvalidConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .SEMICOLON 

-InterfaceDeclaration ::= InterfaceHeader  .InterfaceBody 

-ConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-IntertypeClassDeclaration ::= IntertypeClassHeader  .ClassBody 

-ClassDeclaration ::= ClassHeader  .ClassBody 

-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader  .SEMICOLON 

-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround  .SEMICOLON 

-AspectDeclaration ::= AspectHeader  .AspectBody 

-Name ::= TypeAnnotations  .SimpleName 

-ArrayType ::= ArrayTypeWithTypeArgumentsName  .Dims 

-ArrayType ::= PrimitiveType  .Dims 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType1 

-TypeParameterList1 ::= TypeParameterList  .COMMA TypeParameter1 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION WildcardBounds3 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-TypeArgumentList3 ::= TypeArgumentList  .COMMA TypeArgument3 

-ReferenceType2 ::= ClassOrInterface  .LESS TypeArgumentList3 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 148

-

-

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-FieldAccess ::= QualifiedSuperReceiver  .DOT Identifier 

-OneDimLoop ::= TypeAnnotations  .LBRACKET RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET RBRACKET 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-LambdaExpression ::= LambdaParameters  .ARROW LambdaBody 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-PrimaryNoNewArray ::= Name  .DOT class 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT this 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-CatchFormalParameter ::= Modifiersopt  .CatchType VariableDeclaratorId 

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ModifiersWithDefault ::= Modifiersopt  .default 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-AnnotationMethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType 

-                   AdditionalBoundList1 

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit  .COLON 

-                               Expression RPAREN 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-MethodInvocation ::= NameOrAj  .LPAREN RPAREN 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET Expression RBRACKET 

-ReferenceExpression ::= QualifiedSuperReceiver  .COLON_COLON Identifier 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-LocalVariableDeclaration ::= Modifiers  .Type VariableDeclarators 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .Type Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                               JavaIdentifier LPAREN 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT interface JavaIdentifier 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 149

-

-

-FormalParameter ::= Modifiersopt  .Type ELLIPSIS VariableDeclaratorIdOrThis 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-IntertypeClassHeaderName1 ::= Modifiersopt  .class OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT new LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-AspectHeaderName2 ::= Modifiersopt  .privileged aspect Identifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT interface JavaIdentifier 

-                                        TypeParameters 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT JavaIdentifier LPAREN RPAREN 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        IdentifierOrNew 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .super LPAREN RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .this LPAREN RPAREN 

-                                  SEMICOLON 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters GenericType 

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name PLUS DOT new LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    ClassType LPAREN RPAREN 

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT this LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT super LPAREN RPAREN SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 150

-

-

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    OnlyTypeArguments ClassType LPAREN RPAREN 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments super LPAREN 

-                                  RPAREN SEMICOLON 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-Resource ::= Modifiers  .Type VariableDeclaratorId EQUAL VariableInitializer 

-

-This grammar is LALR(1).

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 151

-

-

-Number of Terminals: 125

-Number of Nonterminals: 423

-Number of Productions: 997

-Number of Single Productions: 297

-Number of Items: 3178

-Number of Scopes: 374

-Number of States: 1275

-Number of Shift actions: 7501

-Number of Goto actions: 10870

-Number of Shift/Reduce actions: 1481

-Number of Goto/Reduce actions: 2978

-Number of Reduce actions: 19101

-Number of Shift-Reduce conflicts: 0

-Number of Reduce-Reduce conflicts: 0

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 152

-

-Shift STATES: 

-

-

-STATE 1 ------------------------------------------------------------------------

-( )

-

-$acc ::= .Goal 

-

-Goal ::= .PLUS_PLUS CompilationUnit 

-Goal ::= .MINUS_MINUS MethodBody 

-Goal ::= .RIGHT_SHIFT StaticInitializer 

-Goal ::= .RIGHT_SHIFT Initializer 

-Goal ::= .UNSIGNED_RIGHT_SHIFT Header1 Modifiersopt 

-Goal ::= .NOT Header2 Modifiersopt 

-Goal ::= .MULTIPLY BlockStatements 

-Goal ::= .MULTIPLY CatchHeader 

-Goal ::= .AND_AND FieldDeclaration 

-Goal ::= .OR_OR ImportDeclaration 

-Goal ::= .QUESTION PackageDeclaration 

-Goal ::= .PLUS TypeDeclaration 

-Goal ::= .DIVIDE GenericMethodDeclaration 

-Goal ::= .AND ClassBodyDeclarations 

-Goal ::= .REMAINDER Expression 

-Goal ::= .REMAINDER ArrayInitializer 

-Goal ::= .TWIDDLE BlockStatementsopt 

-Goal ::= .LBRACE BlockStatementopt 

-Goal ::= .OR_OR MemberValue 

-Goal ::= .QUESTION AnnotationTypeMemberDeclaration 

-Goal ::= .ARROW ParenthesizedLambdaParameterList 

-Goal ::= .LPAREN ParenthesizedCastNameAndBounds 

-Goal ::= .LESS ReferenceExpressionTypeArgumentsAndTrunk 

-Goal ::= .AT TypeAnnotations 

-

-AT                      Shift  3

-LESS                    Shift  4

-LPAREN                  Shift  5

-ARROW                   Shift  6

-LBRACE                  Shift  7

-TWIDDLE                 Shift  8

-REMAINDER               Shift  9

-AND                     Shift  10

-DIVIDE                  Shift  11

-PLUS                    Shift  12

-QUESTION                Shift  13

-OR_OR                   Shift  14

-AND_AND                 Shift  15

-MULTIPLY                Shift  16

-NOT                     Shift  17

-UNSIGNED_RIGHT_SHIFT    Shift  18

-RIGHT_SHIFT             Shift  19

-MINUS_MINUS             Shift  20

-PLUS_PLUS               Shift  21

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 153

-

-

-

-Goal                    Goto   2

-

-

-STATE 2 ------------------------------------------------------------------------

-( 1 )

-

-$acc ::= Goal . (0)

-

-$eof    Accept

-

-

-STATE 3 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= AT  .TypeAnnotations 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotations               Gt/Rd  24

-

-

-STATE 4 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LESS  .ReferenceExpressionTypeArgumentsAndTrunk 

-

-ReferenceExpressionTypeArgumentsAndTrunk ::= .

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                         

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 154

-

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                                         Shift  25

-

-OnlyTypeArguments                            Goto   26

-ReferenceExpressionTypeArgumentsAndTrunk0    Gt/Rd  598

-ReferenceExpressionTypeArgumentsAndTrunk     Gt/Rd  23

-

-

-STATE 5 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LPAREN  .ParenthesizedCastNameAndBounds 

-

-ParenthesizedCastNameAndBounds ::= .LPAREN CastNameAndBounds RPAREN 

-

-LPAREN                            Shift  27

-

-ParenthesizedCastNameAndBounds    Gt/Rd  22

-

-

-STATE 6 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= ARROW  .ParenthesizedLambdaParameterList 

-

-PushLPAREN ::= .LPAREN 

-ParenthesizedLambdaParameterList ::= .LambdaParameterList 

-LambdaParameterList ::= .PushLPAREN FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= .PushLPAREN TypeElidedFormalParameterList PushRPAREN 

-

-LPAREN                              Sh/Rd  577

-

-PushLPAREN                          Goto   28

-LambdaParameterList                 Gt/Rd  615

-ParenthesizedLambdaParameterList    Gt/Rd  21

-

-

-STATE 7 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LBRACE  .BlockStatementopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 155

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 156

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 157

-

-

-BlockStatementopt ::= .BlockStatementopt0 

-BlockStatementopt0 ::= . (471)

-BlockStatementopt0 ::= .BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 158

-

-

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 159

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 160

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 161

-

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 162

-

-

-BlockStatement                          Goto   1041

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1041

-LabeledStatement                        Goto   1041

-IfThenStatement                         Goto   1041

-IfThenElseStatement                     Goto   1041

-WhileStatement                          Goto   1041

-ForStatement                            Goto   1041

-EnhancedForStatement                    Goto   1041

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 163

-

-

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1041

-Block                                   Goto   1041

-EmptyStatement                          Goto   1041

-ExpressionStatement                     Goto   1041

-SwitchStatement                         Goto   1041

-DoStatement                             Goto   1041

-BreakStatement                          Goto   1041

-ContinueStatement                       Goto   1041

-ReturnStatement                         Goto   1041

-SynchronizedStatement                   Goto   1041

-ThrowStatement                          Goto   1041

-TryStatement                            Goto   1041

-TryStatementWithResources               Goto   1041

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1041

-Statement                               Goto   1041

-ClassDeclaration                        Goto   1041

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 164

-

-

-EnumDeclaration                         Gt/Rd  478

-BlockStatementopt0                      Gt/Rd  470

-BlockStatementopt                       Gt/Rd  18

-

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-$eof                                    Reduce 471

-

-Default reduction to rule  92

-

-

-STATE 8 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= TWIDDLE  .BlockStatementsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 165

-

-

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 166

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 167

-

-

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 168

-

-

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 169

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 170

-

-

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 171

-

-

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 172

-

-

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 173

-

-

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Gt/Rd  17

-

-$eof                                    Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 174

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 9 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= REMAINDER  .Expression 

-Goal ::= REMAINDER  .ArrayInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 175

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 176

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 177

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 178

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 179

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 180

-

-

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Gt/Rd  15

-ArrayInitializer                        Gt/Rd  16

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 10 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= AND  .ClassBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassMemberDeclaration ::= .AspectDeclaration 

-ClassMemberDeclaration ::= .PointcutDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 181

-

-

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclarations ::= .ClassBodyDeclaration 

-ClassBodyDeclarations ::= .ClassBodyDeclarations ClassBodyDeclaration 

-ClassBodyDeclaration ::= .ClassMemberDeclaration 

-ClassBodyDeclaration ::= .StaticInitializer 

-ClassBodyDeclaration ::= .ConstructorDeclaration 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .FieldDeclaration 

-ClassMemberDeclaration ::= .MethodDeclaration 

-ClassMemberDeclaration ::= .ClassDeclaration 

-ClassMemberDeclaration ::= .InterfaceDeclaration 

-ClassMemberDeclaration ::= .EnumDeclaration 

-ClassMemberDeclaration ::= .AnnotationTypeDeclaration 

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .AbstractMethodDeclaration 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 182

-

-

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 183

-

-

-ClassMemberDeclaration                 Goto   1065

-StaticInitializer                      Goto   1065

-ConstructorDeclaration                 Goto   1065

-Diet                                   Goto   135

-ConstructorHeaderName                  Goto   134

-Modifiersopt                           Goto   133

-ConstructorHeader                      Goto   132

-StaticOnly                             Goto   130

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-AbstractMethodDeclaration              Goto   1065

-MethodHeader                           Goto   123

-DefaultMethodHeader                    Goto   122

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-MethodHeaderName                       Goto   119

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Goto   1065

-PointcutDeclaration                    Goto   1065

-FieldDeclaration                       Goto   1065

-MethodDeclaration                      Goto   1065

-ClassDeclaration                       Goto   1065

-InterfaceDeclaration                   Goto   1065

-EnumDeclaration                        Goto   1065

-AnnotationTypeDeclaration              Goto   1065

-ClassBodyDeclaration                   Gt/Rd  355

-ClassBodyDeclarations                  Goto   118

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 184

-

-

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 11 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= DIVIDE  .GenericMethodDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 185

-

-

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                     Shift  1064

-volatile                     Shift  1064

-transient                    Shift  1064

-synchronized                 Shift  1064

-native                       Shift  1064

-final                        Shift  1064

-abstract                     Shift  1064

-static                       Shift  1064

-private                      Shift  1064

-protected                    Shift  1064

-public                       Shift  1064

-AT                           Shift  136

-

-AbstractMethodDeclaration    Gt/Rd  13

-MethodHeader                 Goto   123

-DefaultMethodHeader          Goto   122

-ModifiersWithDefault         Goto   121

-Modifiersopt                 Goto   138

-DefaultMethodHeaderName      Goto   120

-MethodHeaderName             Goto   119

-Modifiers                    Goto   137

-SimpleModifier               Goto   1064

-Annotation                   Gt/Rd  171

-AnnotationName               Goto   81

-NormalAnnotation             Goto   1047

-MarkerAnnotation             Goto   1047

-SingleMemberAnnotation       Goto   1047

-Modifier                     Goto   1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 186

-

-

-ConstructorHeader            Goto   132

-ConstructorHeaderName        Goto   134

-MethodDeclaration            Gt/Rd  13

-ConstructorDeclaration       Gt/Rd  13

-GenericMethodDeclaration     Gt/Rd  13

-

-Identifier                   Reduce 764

-boolean                      Reduce 764

-byte                         Reduce 764

-char                         Reduce 764

-default                      Reduce 764

-double                       Reduce 764

-float                        Reduce 764

-int                          Reduce 764

-long                         Reduce 764

-short                        Reduce 764

-void                         Reduce 764

-aspect                       Reduce 764

-LESS                         Reduce 764

-AT308                        Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 12 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= PLUS  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 187

-

-

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 188

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  12

-InterfaceDeclaration                   Gt/Rd  12

-EnumDeclaration                        Gt/Rd  12

-AnnotationTypeDeclaration              Gt/Rd  12

-AspectDeclaration                      Gt/Rd  12

-TypeDeclaration                        Gt/Rd  12

-

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 13 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= QUESTION  .PackageDeclaration 

-Goal ::= QUESTION  .AnnotationTypeMemberDeclaration 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 189

-

-

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 190

-

-

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeaderName             Goto   145

-Modifiers                              Goto   144

-Modifiersopt                           Goto   143

-FieldDeclaration                       Gt/Rd  20

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassDeclaration                       Gt/Rd  20

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 191

-

-

-InterfaceDeclaration                   Gt/Rd  20

-EnumDeclaration                        Gt/Rd  20

-AnnotationTypeDeclaration              Gt/Rd  20

-AspectDeclaration                      Gt/Rd  20

-AspectHeaderName                       Goto   125

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Gt/Rd  20

-ConstructorDeclaration                 Gt/Rd  20

-TypeDeclaration                        Gt/Rd  20

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-PackageDeclaration                     Gt/Rd  11

-AnnotationTypeMemberDeclaration        Gt/Rd  20

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 192

-

-

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 14 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= OR_OR  .ImportDeclaration 

-Goal ::= OR_OR  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 193

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 194

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 195

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 196

-

-

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 197

-

-

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-import                                  Shift  149

-AT                                      Shift  136

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-false                                   Shift  1066

-true                                    Shift  1066

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 198

-

-

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 199

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  19

-MarkerAnnotation                        Gt/Rd  19

-SingleMemberAnnotation                  Gt/Rd  19

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  19

-Annotation                              Gt/Rd  19

-MemberValueArrayInitializer             Gt/Rd  19

-SingleTypeImportDeclarationName         Goto   150

-TypeImportOnDemandDeclarationName       Goto   148

-SingleStaticImportDeclarationName       Goto   147

-StaticImportOnDemandDeclarationName     Goto   146

-SingleTypeImportDeclaration             Gt/Rd  10

-TypeImportOnDemandDeclaration           Gt/Rd  10

-SingleStaticImportDeclaration           Gt/Rd  10

-StaticImportOnDemandDeclaration         Gt/Rd  10

-ImportDeclaration                       Gt/Rd  10

-MemberValue                             Gt/Rd  19

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 15 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= AND_AND  .FieldDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 200

-

-

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   173

-FieldDeclaration          Gt/Rd  9

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 201

-

-

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 16 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= MULTIPLY  .BlockStatements 

-Goal ::= MULTIPLY  .CatchHeader 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 202

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CatchHeader ::= .catch LPAREN CatchFormalParameter RPAREN LBRACE 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 203

-

-

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 204

-

-

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 205

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 206

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 207

-

-

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 208

-

-

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-catch                                   Shift  175

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 209

-

-

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 210

-

-

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   174

-CatchHeader                             Gt/Rd  8

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 17 -----------------------------------------------------------------------

-( 1 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 211

-

-

-Goal ::= NOT  .Header2 Modifiersopt 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 212

-

-

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 213

-

-

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-AllocationHeader ::= .new ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= .new PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= .new ClassOrInterfaceType DimWithOrWithOutExprs 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault Type JavaIdentifierNoAround 

-                             LPAREN 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 214

-

-

-

-import                                 Shift  149

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-new                                    Shift  180

-declare                                Shift  183

-

-ImportDeclaration                      Goto   176

-PackageDeclaration                     Goto   176

-ClassHeader                            Goto   176

-InterfaceHeader                        Goto   176

-EnumHeader                             Goto   176

-AnnotationTypeDeclarationHeader        Goto   176

-StaticInitializer                      Goto   176

-RecoveryMethodHeader                   Goto   176

-FieldDeclaration                       Goto   176

-AllocationHeader                       Goto   176

-ArrayCreationHeader                    Goto   176

-DeclareDeclaration                     Goto   176

-InterTypeMethodDeclaration             Goto   176

-InterTypeFieldDeclaration              Goto   176

-PointcutDeclaration                    Goto   176

-BasicAdviceDeclaration                 Goto   176

-AroundDeclaration                      Goto   176

-AspectDeclaration                      Goto   176

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   192

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AroundHeaderName                       Goto   191

-AroundHeader                           Goto   190

-BeforeAdviceHeader                     Goto   187

-AfterAdviceHeader                      Goto   187

-AfterAdviceHeaderName                  Goto   189

-BeforeAdviceHeaderName                 Goto   188

-BasicAdviceHeader                      Goto   187

-PointcutHeader                         Goto   124

-InterTypeFieldHeader                   Goto   186

-InterTypeMethodHeader                  Goto   185

-InterTypeMethodHeaderName              Goto   184

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 215

-

-

-AbstractInterTypeMethodDeclaration     Goto   176

-DeclareHeader                          Goto   182

-DeclareAnnotationHeader                Goto   181

-ModifiersWithDefault                   Goto   179

-RecoveryMethodHeaderName               Goto   178

-StaticOnly                             Goto   130

-Modifiers                              Goto   144

-AnnotationTypeDeclarationHeaderName    Goto   31

-EnumHeaderName                         Goto   29

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   176

-TypeImportOnDemandDeclaration          Goto   176

-SingleStaticImportDeclaration          Goto   176

-StaticImportOnDemandDeclaration        Goto   176

-EnumConstantHeaderName                 Goto   177

-Header                                 Goto   176

-EnumConstantHeader                     Goto   176

-Header2                                Goto   176

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 216

-

-

-pointcut                               Reduce 764

-around                                 Reduce 764

-before                                 Reduce 764

-after                                  Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 18 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= UNSIGNED_RIGHT_SHIFT  .Header1 Modifiersopt 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 217

-

-

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 218

-

-

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-AllocationHeader ::= .new ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= .new PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= .new ClassOrInterfaceType DimWithOrWithOutExprs 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 219

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault Type JavaIdentifierNoAround 

-                             LPAREN 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-import                                 Shift  149

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-new                                    Shift  180

-declare                                Shift  183

-

-ImportDeclaration                      Goto   193

-PackageDeclaration                     Goto   193

-ClassHeader                            Goto   193

-InterfaceHeader                        Goto   193

-EnumHeader                             Goto   193

-AnnotationTypeDeclarationHeader        Goto   193

-StaticInitializer                      Goto   193

-RecoveryMethodHeader                   Goto   193

-FieldDeclaration                       Goto   193

-AllocationHeader                       Goto   193

-ArrayCreationHeader                    Goto   193

-DeclareDeclaration                     Goto   193

-InterTypeMethodDeclaration             Goto   193

-InterTypeFieldDeclaration              Goto   193

-PointcutDeclaration                    Goto   193

-BasicAdviceDeclaration                 Goto   193

-AroundDeclaration                      Goto   193

-AspectDeclaration                      Goto   193

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 220

-

-

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   194

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AroundHeaderName                       Goto   191

-AroundHeader                           Goto   190

-BeforeAdviceHeader                     Goto   187

-AfterAdviceHeader                      Goto   187

-AfterAdviceHeaderName                  Goto   189

-BeforeAdviceHeaderName                 Goto   188

-BasicAdviceHeader                      Goto   187

-PointcutHeader                         Goto   124

-InterTypeFieldHeader                   Goto   186

-InterTypeMethodHeader                  Goto   185

-InterTypeMethodHeaderName              Goto   184

-AbstractInterTypeMethodDeclaration     Goto   193

-DeclareHeader                          Goto   182

-DeclareAnnotationHeader                Goto   181

-ModifiersWithDefault                   Goto   179

-RecoveryMethodHeaderName               Goto   178

-StaticOnly                             Goto   130

-Modifiers                              Goto   144

-AnnotationTypeDeclarationHeaderName    Goto   31

-EnumHeaderName                         Goto   29

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   193

-TypeImportOnDemandDeclaration          Goto   193

-SingleStaticImportDeclaration          Goto   193

-StaticImportOnDemandDeclaration        Goto   193

-ConstructorHeaderName                  Goto   134

-Header                                 Goto   193

-ConstructorHeader                      Goto   193

-Header1                                Goto   193

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 221

-

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-around                                 Reduce 764

-before                                 Reduce 764

-after                                  Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 19 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= RIGHT_SHIFT  .StaticInitializer 

-Goal ::= RIGHT_SHIFT  .Initializer 

-

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-

-static               Sh/Rd  419

-

-Diet                 Goto   195

-StaticOnly           Goto   130

-StaticInitializer    Gt/Rd  3

-Initializer          Gt/Rd  4

-

-LBRACE               Reduce 361

-

-Default reduction to rule  361

-

-

-STATE 20 -----------------------------------------------------------------------

-( 1 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 222

-

-

-Goal ::= MINUS_MINUS  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  2

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 21 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= PLUS_PLUS  .CompilationUnit 

-

-CompilationUnit ::= .EnterCompilationUnit InternalCompilationUnit 

-EnterCompilationUnit ::= . (119)

-

-EnterCompilationUnit    Goto   197

-CompilationUnit         Gt/Rd  1

-

-abstract                Reduce 119

-class                   Reduce 119

-enum                    Reduce 119

-final                   Reduce 119

-import                  Reduce 119

-interface               Reduce 119

-native                  Reduce 119

-package                 Reduce 119

-private                 Reduce 119

-protected               Reduce 119

-public                  Reduce 119

-static                  Reduce 119

-strictfp                Reduce 119

-synchronized            Reduce 119

-transient               Reduce 119

-volatile                Reduce 119

-aspect                  Reduce 119

-privileged              Reduce 119

-SEMICOLON               Reduce 119

-AT                      Reduce 119

-$eof                    Reduce 119

-

-Default reduction to rule  119

-

-

-STATE 22 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 24 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 223

-

-

-  102 121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 

-  209 216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 

-  262 263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 

-  300 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 

-  362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 

-  381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 

-  494 495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 

-  596 632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 

-  700 702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 

-  751 752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 

-  842 848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 

-  900 911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 

-  951 953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 

-  1012 1013 1023 1028 1032 1033 1036 )

-

-TypeAnnotationName ::= AT308  .UnannotatableName 

-

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-

-Identifier           Shift  198

-

-SimpleName           Goto   198

-UnannotatableName    Goto   198

-

-

-STATE 23 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 24 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 

-  102 121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 

-  209 216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 

-  262 263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 

-  300 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 

-  362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 

-  381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 

-  494 495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 

-  596 632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 

-  700 702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 

-  751 752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 

-  842 848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 

-  900 911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 

-  951 953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 

-  1012 1013 1023 1028 1032 1033 1036 )

-

-NormalTypeAnnotation ::= TypeAnnotationName  .LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= TypeAnnotationName . (102)

-SingleMemberTypeAnnotation ::= TypeAnnotationName  .LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 224

-

-

-LPAREN        Shift  199

-

-Identifier    Reduce 102

-boolean       Reduce 102

-byte          Reduce 102

-char          Reduce 102

-double        Reduce 102

-float         Reduce 102

-int           Reduce 102

-long          Reduce 102

-short         Reduce 102

-void          Reduce 102

-aspect        Reduce 102

-pointcut      Reduce 102

-around        Reduce 102

-before        Reduce 102

-after         Reduce 102

-declare       Reduce 102

-privileged    Reduce 102

-LBRACKET      Reduce 102

-QUESTION      Reduce 102

-ELLIPSIS      Reduce 102

-AT308         Reduce 102

-$eof          Reduce 102

-

-Default reduction to rule  102

-

-

-STATE 24 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 102 

-  121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 209 

-  216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 262 

-  263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 300 

-  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 

-  322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 362 

-  363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 

-  382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 

-  401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 494 

-  495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 596 

-  632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 700 

-  702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 751 

-  752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 842 

-  848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 900 

-  911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 951 

-  953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 1012 

-  1013 1023 1028 1032 1033 1036 )

-

-TypeAnnotations ::= TypeAnnotations0 . (94)

-TypeAnnotations0 ::= TypeAnnotations0  .TypeAnnotation 

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 225

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotation                Gt/Rd  96

-

-Identifier                    Reduce 94

-boolean                       Reduce 94

-byte                          Reduce 94

-char                          Reduce 94

-double                        Reduce 94

-float                         Reduce 94

-int                           Reduce 94

-long                          Reduce 94

-short                         Reduce 94

-void                          Reduce 94

-aspect                        Reduce 94

-pointcut                      Reduce 94

-around                        Reduce 94

-before                        Reduce 94

-after                         Reduce 94

-declare                       Reduce 94

-privileged                    Reduce 94

-LBRACKET                      Reduce 94

-QUESTION                      Reduce 94

-ELLIPSIS                      Reduce 94

-$eof                          Reduce 94

-

-Default reduction to rule  94

-

-

-STATE 25 -----------------------------------------------------------------------

-( 4 7 8 16 46 60 61 76 93 174 252 253 265 266 267 268 273 275 288 290 300 302 

-  432 504 534 542 724 725 735 842 919 923 969 1005 1007 1011 1012 1013 1033 

-  1036 )

-

-OnlyTypeArguments ::= LESS  .TypeArgumentList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 226

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType1                    Gt/Rd  819

-Wildcard1                         Gt/Rd  819

-TypeAnnotationsopt                Goto   205

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 227

-

-

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   202

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   201

-TypeArgument                      Goto   200

-TypeArgumentList                  Goto   200

-Wildcard                          Goto   200

-TypeArgument1                     Gt/Rd  819

-TypeArgumentList1                 Gt/Rd  819

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 26 -----------------------------------------------------------------------

-( 4 288 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments  .Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments  .DOT 

-                                        ClassOrInterfaceType Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 228

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-DOT                           Shift  206

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  599

-Dimsopt                       Gt/Rd  599

-

-COLON_COLON                   Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 27 -----------------------------------------------------------------------

-( 5 )

-

-ParenthesizedCastNameAndBounds ::= LPAREN  .CastNameAndBounds RPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 229

-

-

-CastNameAndBounds ::= .Name AdditionalBoundList 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   211

-Name                          Goto   211

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-CastNameAndBounds             Goto   210

-

-

-STATE 28 -----------------------------------------------------------------------

-( 6 247 )

-

-LambdaParameterList ::= PushLPAREN  .FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= PushLPAREN  .TypeElidedFormalParameterList PushRPAREN 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-TypeElidedFormalParameterList ::= .TypeElidedFormalParameterList COMMA 

-                                  TypeElidedFormalParameter 

-TypeElidedFormalParameter ::= .Modifiersopt Identifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 230

-

-

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                         Shift  1064

-volatile                         Shift  1064

-transient                        Shift  1064

-synchronized                     Shift  1064

-native                           Shift  1064

-final                            Shift  1064

-abstract                         Shift  1064

-static                           Shift  1064

-private                          Shift  1064

-protected                        Shift  1064

-public                           Shift  1064

-AT                               Shift  136

-

-Modifiersopt                     Goto   216

-TypeElidedFormalParameter        Goto   215

-TypeElidedFormalParameterList    Goto   215

-FormalParameter                  Goto   1080

-FormalParameterList              Goto   214

-Modifiers                        Goto   137

-SimpleModifier                   Goto   1064

-Annotation                       Gt/Rd  171

-AnnotationName                   Goto   81

-NormalAnnotation                 Goto   1047

-MarkerAnnotation                 Goto   1047

-SingleMemberAnnotation           Goto   1047

-Modifier                         Goto   1064

-FormalParameterListopt           Goto   213

-

-RPAREN                           Reduce 774

-Identifier                       Reduce 764

-boolean                          Reduce 764

-byte                             Reduce 764

-char                             Reduce 764

-double                           Reduce 764

-float                            Reduce 764

-int                              Reduce 764

-long                             Reduce 764

-short                            Reduce 764

-void                             Reduce 764

-AT308                            Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 231

-

-

-

-Default reduction to rule  764

-

-

-STATE 29 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-EnumHeader ::= EnumHeaderName  .ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  790

-ClassHeaderImplementsopt    Gt/Rd  790

-

-abstract                    Reduce 776

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 30 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-EnumDeclaration ::= EnumHeader  .EnumBody 

-

-EnumBody ::= .LBRACE EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE EnumConstants EnumBodyDeclarationsopt RBRACE 

-

-LBRACE      Shift  218

-

-EnumBody    Gt/Rd  789

-

-

-STATE 31 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 232

-

-

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName  .

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   219

-ClassHeaderExtendsopt    Goto   219

-

-abstract                 Reduce 755

-final                    Reduce 755

-implements               Reduce 755

-native                   Reduce 755

-private                  Reduce 755

-protected                Reduce 755

-public                   Reduce 755

-static                   Reduce 755

-strictfp                 Reduce 755

-synchronized             Reduce 755

-transient                Reduce 755

-volatile                 Reduce 755

-LBRACE                   Reduce 755

-AT                       Reduce 755

-$eof                     Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 32 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader  .

-                              AnnotationTypeBody 

-

-AnnotationTypeBody ::= .LBRACE AnnotationTypeMemberDeclarationsopt RBRACE 

-

-LBRACE                Shift  221

-

-AnnotationTypeBody    Gt/Rd  949

-

-

-STATE 33 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 233

-

-

-InterfaceHeader ::= InterfaceHeaderName  .InterfaceHeaderExtendsopt 

-

-InterfaceHeaderExtends ::= .extends InterfaceTypeList 

-InterfaceHeaderExtendsopt ::= . (785)

-

-extends                      Shift  222

-

-InterfaceHeaderExtends       Gt/Rd  435

-InterfaceHeaderExtendsopt    Gt/Rd  435

-

-abstract                     Reduce 785

-final                        Reduce 785

-native                       Reduce 785

-private                      Reduce 785

-protected                    Reduce 785

-public                       Reduce 785

-static                       Reduce 785

-strictfp                     Reduce 785

-synchronized                 Reduce 785

-transient                    Reduce 785

-volatile                     Reduce 785

-LBRACE                       Reduce 785

-AT                           Reduce 785

-$eof                         Reduce 785

-

-Default reduction to rule  785

-

-

-STATE 34 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-InterfaceHeaderName ::= InterfaceHeaderName1  .TypeParameters 

-InterfaceHeaderName ::= InterfaceHeaderName1 . (437)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  436

-

-abstract          Reduce 437

-extends           Reduce 437

-final             Reduce 437

-native            Reduce 437

-private           Reduce 437

-protected         Reduce 437

-public            Reduce 437

-static            Reduce 437

-strictfp          Reduce 437

-synchronized      Reduce 437

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 234

-

-

-transient         Reduce 437

-volatile          Reduce 437

-LBRACE            Reduce 437

-AT                Reduce 437

-$eof              Reduce 437

-

-Default reduction to rule  437

-

-

-STATE 35 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-InterfaceDeclaration ::= InterfaceHeader  .InterfaceBody 

-

-InterfaceBody ::= .LBRACE InterfaceMemberDeclarationsopt RBRACE 

-

-LBRACE           Shift  224

-

-InterfaceBody    Gt/Rd  434

-

-

-STATE 36 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-ClassHeader ::= ClassHeaderName  .ClassHeaderExtendsopt 

-                ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   225

-ClassHeaderExtendsopt    Goto   225

-

-abstract                 Reduce 755

-final                    Reduce 755

-implements               Reduce 755

-native                   Reduce 755

-private                  Reduce 755

-protected                Reduce 755

-public                   Reduce 755

-static                   Reduce 755

-strictfp                 Reduce 755

-synchronized             Reduce 755

-transient                Reduce 755

-volatile                 Reduce 755

-LBRACE                   Reduce 755

-AT                       Reduce 755

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 235

-

-

-$eof                     Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 37 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-enum         Shift  226

-interface    Shift  227

-class        Shift  228

-

-

-STATE 38 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-ClassHeaderName ::= ClassHeaderName1  .TypeParameters 

-ClassHeaderName ::= ClassHeaderName1 . (347)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  346

-

-abstract          Reduce 347

-extends           Reduce 347

-final             Reduce 347

-implements        Reduce 347

-native            Reduce 347

-private           Reduce 347

-protected         Reduce 347

-public            Reduce 347

-static            Reduce 347

-strictfp          Reduce 347

-synchronized      Reduce 347

-transient         Reduce 347

-volatile          Reduce 347

-LBRACE            Reduce 347

-AT                Reduce 347

-$eof              Reduce 347

-

-Default reduction to rule  347

-

-

-STATE 39 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 236

-

-

-  682 686 758 802 803 891 969 1005 1007 )

-

-ClassDeclaration ::= ClassHeader  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  338

-

-

-STATE 40 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-TryStatement ::= try  .TryBlock Catches 

-TryStatement ::= try  .TryBlock Catchesopt Finally 

-TryStatementWithResources ::= try  .ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= try  .ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-ResourceSpecification ::= .LPAREN Resources ;opt RPAREN 

-TryBlock ::= .Block ExitTryBlock 

-

-LPAREN                   Shift  233

-

-OpenBlock                Goto   70

-Block                    Goto   232

-TryBlock                 Goto   231

-ResourceSpecification    Goto   230

-

-LBRACE                   Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 41 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ThrowStatement ::= throw  .Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 237

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 238

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 239

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 240

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 241

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 242

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   234

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 42 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 243

-

-

-  1013 1033 1036 )

-

-SynchronizedStatement ::= OnlySynchronized  .LPAREN Expression RPAREN Block 

-

-LPAREN    Shift  235

-

-

-STATE 43 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ReturnStatement ::= return  .Expressionopt SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 244

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 245

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 246

-

-

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 247

-

-

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 248

-

-

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 249

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   236

-Expressionopt                           Goto   236

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 44 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ContinueStatement ::= continue  .SEMICOLON 

-ContinueStatement ::= continue  .Identifier SEMICOLON 

-

-Identifier    Shift  237

-SEMICOLON     Sh/Rd  553

-

-

-STATE 45 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-BreakStatement ::= break  .SEMICOLON 

-BreakStatement ::= break  .Identifier SEMICOLON 

-

-Identifier    Shift  238

-SEMICOLON     Sh/Rd  551

-

-

-STATE 46 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-DoStatement ::= do  .Statement while LPAREN Expression RPAREN SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 250

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 251

-

-

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 252

-

-

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 253

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 254

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 255

-

-

-

-AssertStatement                         Goto   239

-Block                                   Goto   239

-EmptyStatement                          Goto   239

-ExpressionStatement                     Goto   239

-SwitchStatement                         Goto   239

-DoStatement                             Goto   239

-BreakStatement                          Goto   239

-ContinueStatement                       Goto   239

-ReturnStatement                         Goto   239

-SynchronizedStatement                   Goto   239

-ThrowStatement                          Goto   239

-TryStatement                            Goto   239

-TryStatementWithResources               Goto   239

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 256

-

-

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   239

-LabeledStatement                        Goto   239

-IfThenStatement                         Goto   239

-IfThenElseStatement                     Goto   239

-WhileStatement                          Goto   239

-ForStatement                            Goto   239

-EnhancedForStatement                    Goto   239

-Statement                               Goto   239

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 47 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-SwitchStatement ::= switch  .LPAREN Expression RPAREN OpenBlock SwitchBlock 

-

-LPAREN    Shift  241

-

-

-STATE 48 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 257

-

-

-  706 707 709 712 716 718 724 725 726 729 737 741 751 752 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 875 877 911 919 920 921 922 923 924 927 

-  933 968 969 975 1004 1005 1007 1010 1011 1012 1013 1023 1032 1033 1036 )

-

-PreDecrementExpression ::= MINUS_MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   242

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 258

-

-

-

-

-STATE 49 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 751 752 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 875 877 911 919 920 921 922 923 924 927 

-  933 968 969 975 1004 1005 1007 1010 1011 1012 1013 1023 1032 1033 1036 )

-

-PreIncrementExpression ::= PLUS_PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   243

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 259

-

-

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 50 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= PostDecrementExpression . (521)

-PostfixExpression ::= PostDecrementExpression . (674)

-

-PLUS_PLUS                     Reduce 674

-MINUS_MINUS                   Reduce 674

-PLUS_EQUAL                    Reduce 674

-MINUS_EQUAL                   Reduce 674

-MULTIPLY_EQUAL                Reduce 674

-DIVIDE_EQUAL                  Reduce 674

-AND_EQUAL                     Reduce 674

-OR_EQUAL                      Reduce 674

-XOR_EQUAL                     Reduce 674

-REMAINDER_EQUAL               Reduce 674

-LEFT_SHIFT_EQUAL              Reduce 674

-RIGHT_SHIFT_EQUAL             Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 674

-EQUAL                         Reduce 674

-RPAREN                        Reduce 521

-SEMICOLON                     Reduce 521

-COMMA                         Reduce 521

-

-Default reduction to rule  674

-

-

-STATE 51 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= PostIncrementExpression . (520)

-PostfixExpression ::= PostIncrementExpression . (673)

-

-PLUS_PLUS                     Reduce 673

-MINUS_MINUS                   Reduce 673

-PLUS_EQUAL                    Reduce 673

-MINUS_EQUAL                   Reduce 673

-MULTIPLY_EQUAL                Reduce 673

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 260

-

-

-DIVIDE_EQUAL                  Reduce 673

-AND_EQUAL                     Reduce 673

-OR_EQUAL                      Reduce 673

-XOR_EQUAL                     Reduce 673

-REMAINDER_EQUAL               Reduce 673

-LEFT_SHIFT_EQUAL              Reduce 673

-RIGHT_SHIFT_EQUAL             Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 673

-EQUAL                         Reduce 673

-RPAREN                        Reduce 520

-SEMICOLON                     Reduce 520

-COMMA                         Reduce 520

-

-Default reduction to rule  673

-

-

-STATE 52 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= MethodInvocation . (522)

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 594

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-RPAREN                        Reduce 522

-SEMICOLON                     Reduce 522

-COMMA                         Reduce 522

-

-Default reduction to rule  594

-

-

-STATE 53 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 261

-

-

-StatementExpression ::= ClassInstanceCreationExpression . (523)

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 586

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-RPAREN                        Reduce 523

-SEMICOLON                     Reduce 523

-COMMA                         Reduce 523

-

-Default reduction to rule  586

-

-

-STATE 54 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-PrimaryNoNewArray ::= PushLPAREN  .Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN  .Name PushRPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 262

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 263

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 264

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 265

-

-

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 266

-

-

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1081

-true                                    Shift  1081

-null                                    Shift  1081

-StringLiteral                           Shift  1081

-CharacterLiteral                        Shift  1081

-DoubleLiteral                           Shift  1081

-FloatingPointLiteral                    Shift  1081

-LongLiteral                             Shift  1081

-IntegerLiteral                          Shift  1081

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 267

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression_NotName           Goto   244

-Assignment                              Goto   244

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   246

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1082

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1082

-CastExpression                          Goto   1082

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1090

-BooleanLiteral                          Goto   1081

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   245

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 268

-

-

-Literal                                 Goto   1081

-ClassInstanceCreationExpression         Goto   1088

-FieldAccess                             Goto   1087

-MethodInvocation                        Goto   1086

-ArrayAccess                             Goto   1085

-LambdaExpression                        Goto   1084

-ReferenceExpression                     Goto   1083

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1082

-PreDecrementExpression                  Goto   1082

-UnaryExpressionNotPlusMinus_NotName     Goto   1082

-AssignmentExpression_NotName            Goto   244

-Expression_NotName                      Goto   244

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 55 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-LambdaParameters ::= BeginLambda  .NestedLambda LambdaParameterList 

-

-NestedLambda ::= . (612)

-

-NestedLambda    Goto   247

-

-LPAREN          Reduce 612

-

-Default reduction to rule  612

-

-

-STATE 56 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 269

-

-

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-LambdaExpression ::= LambdaParameters  .ARROW LambdaBody 

-

-ARROW    Shift  248

-

-

-STATE 57 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-NameOrAj ::= AjName . (67)

-AjQualifiedName ::= AjName  .DOT SimpleNameOrAj 

-ArrayAccess ::= AjName  .LBRACKET Expression RBRACKET 

-

-LBRACKET                        Shift  249

-DOT                             Shift  250

-

-abstract                        Reduce 67

-final                           Reduce 67

-instanceof                      Reduce 67

-native                          Reduce 67

-private                         Reduce 67

-protected                       Reduce 67

-public                          Reduce 67

-static                          Reduce 67

-strictfp                        Reduce 67

-synchronized                    Reduce 67

-transient                       Reduce 67

-volatile                        Reduce 67

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 67

-LESS_EQUAL                      Reduce 67

-GREATER_EQUAL                   Reduce 67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 270

-

-

-NOT_EQUAL                       Reduce 67

-LEFT_SHIFT                      Reduce 67

-RIGHT_SHIFT                     Reduce 67

-UNSIGNED_RIGHT_SHIFT            Reduce 67

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 67

-AND_AND                         Reduce 67

-PLUS                            Reduce 67

-MINUS                           Reduce 67

-REMAINDER                       Reduce 67

-XOR                             Reduce 67

-AND                             Reduce 67

-MULTIPLY                        Reduce 67

-OR                              Reduce 67

-DIVIDE                          Reduce 67

-GREATER                         Reduce 67

-LESS                            Reduce 672

-LPAREN                          Reduce 67

-RPAREN                          Reduce 67

-RBRACE                          Reduce 67

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 67

-QUESTION                        Reduce 67

-COLON                           Reduce 672

-COMMA                           Reduce 67

-EQUAL                           Reduce 672

-AT                              Reduce 67

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 67

-

-Default reduction to rule  67

-

-

-STATE 58 -----------------------------------------------------------------------

-( 7 8 9 16 41 43 46 71 76 93 174 235 241 242 243 249 251 262 263 264 269 272 

-  273 275 276 277 278 279 291 297 298 306 307 308 309 310 311 312 313 314 315 

-  317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 

-  364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 

-  384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 

-  432 484 512 513 516 552 634 639 642 645 697 700 702 704 706 707 709 712 716 

-  718 724 725 726 729 737 741 748 751 752 778 779 821 823 827 832 833 834 836 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 271

-

-

-  842 854 855 856 858 911 919 920 921 922 923 924 927 933 936 968 969 975 988 

-  1004 1005 1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-

-LPAREN                          Shift  251

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 272

-

-

-LESS                            Reduce 672

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-EQUAL                           Reduce 672

-AT                              Reduce 672

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 59 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-ReferenceExpression ::= QualifiedSuperReceiver  .COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= QualifiedSuperReceiver  .DOT Identifier 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  252

-COLON_COLON    Shift  253

-

-

-STATE 60 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 273

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1077

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 274

-

-

-ClassOrInterfaceType          Goto   255

-ClassType                     Goto   255

-OnlyTypeArguments             Goto   254

-

-

-STATE 61 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-ClassInstanceCreationExpression ::= new  .OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= new  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ArrayCreationWithoutArrayInitializer ::= new  .PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new  .PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= new  .ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new  .ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 275

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotations               Goto   88

-TypeAnnotationsopt            Goto   84

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   261

-OnlyTypeArguments             Goto   260

-ClassType                     Goto   259

-PrimitiveType                 Goto   258

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 62 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 276

-

-

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-Primary ::= ArrayCreationWithArrayInitializer . (580)

-ArrayAccess ::= ArrayCreationWithArrayInitializer  .LBRACKET Expression 

-                RBRACKET 

-

-LBRACKET                        Shift  262

-

-abstract                        Reduce 580

-final                           Reduce 580

-instanceof                      Reduce 580

-native                          Reduce 580

-private                         Reduce 580

-protected                       Reduce 580

-public                          Reduce 580

-static                          Reduce 580

-strictfp                        Reduce 580

-synchronized                    Reduce 580

-transient                       Reduce 580

-volatile                        Reduce 580

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 580

-LESS_EQUAL                      Reduce 580

-GREATER_EQUAL                   Reduce 580

-NOT_EQUAL                       Reduce 580

-LEFT_SHIFT                      Reduce 580

-RIGHT_SHIFT                     Reduce 580

-UNSIGNED_RIGHT_SHIFT            Reduce 580

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 580

-AND_AND                         Reduce 580

-PLUS                            Reduce 580

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 277

-

-

-MINUS                           Reduce 580

-REMAINDER                       Reduce 580

-XOR                             Reduce 580

-AND                             Reduce 580

-MULTIPLY                        Reduce 580

-OR                              Reduce 580

-DIVIDE                          Reduce 580

-GREATER                         Reduce 580

-LESS                            Reduce 580

-RPAREN                          Reduce 580

-RBRACE                          Reduce 580

-RBRACKET                        Reduce 580

-SEMICOLON                       Reduce 580

-QUESTION                        Reduce 580

-COLON                           Reduce 580

-COMMA                           Reduce 580

-DOT                             Reduce 580

-EQUAL                           Reduce 671

-AT                              Reduce 580

-COLON_COLON                     Reduce 580

-ElidedSemicolonAndRightBrace    Reduce 580

-$eof                            Reduce 580

-

-Default reduction to rule  580

-

-

-STATE 63 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-Primary ::= PrimaryNoNewArray . (579)

-ArrayAccess ::= PrimaryNoNewArray  .LBRACKET Expression RBRACKET 

-

-LBRACKET                        Shift  263

-

-abstract                        Reduce 579

-final                           Reduce 579

-instanceof                      Reduce 579

-native                          Reduce 579

-private                         Reduce 579

-protected                       Reduce 579

-public                          Reduce 579

-static                          Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 278

-

-

-strictfp                        Reduce 579

-synchronized                    Reduce 579

-transient                       Reduce 579

-volatile                        Reduce 579

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 579

-LESS_EQUAL                      Reduce 579

-GREATER_EQUAL                   Reduce 579

-NOT_EQUAL                       Reduce 579

-LEFT_SHIFT                      Reduce 579

-RIGHT_SHIFT                     Reduce 579

-UNSIGNED_RIGHT_SHIFT            Reduce 579

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 579

-AND_AND                         Reduce 579

-PLUS                            Reduce 579

-MINUS                           Reduce 579

-REMAINDER                       Reduce 579

-XOR                             Reduce 579

-AND                             Reduce 579

-MULTIPLY                        Reduce 579

-OR                              Reduce 579

-DIVIDE                          Reduce 579

-GREATER                         Reduce 579

-LESS                            Reduce 579

-RPAREN                          Reduce 579

-RBRACE                          Reduce 579

-RBRACKET                        Reduce 579

-SEMICOLON                       Reduce 579

-QUESTION                        Reduce 579

-COLON                           Reduce 579

-COMMA                           Reduce 579

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-AT                              Reduce 579

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 579

-$eof                            Reduce 579

-

-Default reduction to rule  579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 279

-

-

-

-

-STATE 64 -----------------------------------------------------------------------

-( 7 8 16 46 54 76 93 102 174 273 275 278 432 724 725 729 842 919 920 923 924 

-  969 1005 1007 1011 1012 1013 1032 1033 1036 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-

-AssignmentOperator ::= .EQUAL 

-AssignmentOperator ::= .MULTIPLY_EQUAL 

-AssignmentOperator ::= .DIVIDE_EQUAL 

-AssignmentOperator ::= .REMAINDER_EQUAL 

-AssignmentOperator ::= .PLUS_EQUAL 

-AssignmentOperator ::= .MINUS_EQUAL 

-AssignmentOperator ::= .LEFT_SHIFT_EQUAL 

-AssignmentOperator ::= .RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .UNSIGNED_RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .AND_EQUAL 

-AssignmentOperator ::= .XOR_EQUAL 

-AssignmentOperator ::= .OR_EQUAL 

-

-MINUS_MINUS                   Sh/Rd  676

-PLUS_PLUS                     Sh/Rd  675

-OR_EQUAL                      Sh/Rd  753

-XOR_EQUAL                     Sh/Rd  752

-AND_EQUAL                     Sh/Rd  751

-UNSIGNED_RIGHT_SHIFT_EQUAL    Sh/Rd  750

-RIGHT_SHIFT_EQUAL             Sh/Rd  749

-LEFT_SHIFT_EQUAL              Sh/Rd  748

-MINUS_EQUAL                   Sh/Rd  747

-PLUS_EQUAL                    Sh/Rd  746

-REMAINDER_EQUAL               Sh/Rd  745

-DIVIDE_EQUAL                  Sh/Rd  744

-MULTIPLY_EQUAL                Sh/Rd  743

-EQUAL                         Sh/Rd  742

-

-AssignmentOperator            Goto   264

-

-

-STATE 65 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= Primary  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 280

-

-

-ExplicitConstructorInvocation ::= Primary  .DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= Primary . (671)

-

-COLON_COLON                   Shift  265

-DOT                           Shift  266

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-EQUAL                         Reduce 671

-

-Default reduction to rule  671

-

-

-STATE 66 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= super  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ReferenceExpression ::= super  .COLON_COLON NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= super  .DOT JavaIdentifier 

-MethodInvocation ::= super  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 281

-

-

-MethodInvocation ::= super  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  267

-COLON_COLON    Shift  268

-LPAREN         Shift  269

-

-

-STATE 67 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-super    Shift  270

-this     Shift  271

-

-

-STATE 68 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= this  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-PrimaryNoNewArray ::= this . (583)

-

-LPAREN                        Shift  272

-

-PLUS_PLUS                     Reduce 583

-MINUS_MINUS                   Reduce 583

-PLUS_EQUAL                    Reduce 583

-MINUS_EQUAL                   Reduce 583

-MULTIPLY_EQUAL                Reduce 583

-DIVIDE_EQUAL                  Reduce 583

-AND_EQUAL                     Reduce 583

-OR_EQUAL                      Reduce 583

-XOR_EQUAL                     Reduce 583

-REMAINDER_EQUAL               Reduce 583

-LEFT_SHIFT_EQUAL              Reduce 583

-RIGHT_SHIFT_EQUAL             Reduce 583

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 583

-LBRACKET                      Reduce 583

-DOT                           Reduce 583

-EQUAL                         Reduce 583

-COLON_COLON                   Reduce 583

-

-Default reduction to rule  583

-

-

-STATE 69 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 282

-

-

-  1013 1033 1036 )

-

-ExpressionStatement ::= StatementExpression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  515

-

-

-STATE 70 -----------------------------------------------------------------------

-( 7 8 16 40 46 76 93 130 174 230 248 273 275 432 587 656 689 696 724 725 842 

-  901 919 923 937 969 1005 1007 1011 1012 1013 1033 1036 )

-

-Block ::= OpenBlock  .LBRACE BlockStatementsopt RBRACE 

-

-LBRACE    Shift  273

-

-

-STATE 71 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-AssertStatement ::= assert  .Expression SEMICOLON 

-AssertStatement ::= assert  .Expression COLON Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 283

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 284

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 285

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 286

-

-

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 287

-

-

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 288

-

-

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   274

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 72 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-LabeledStatement ::= Label  .COLON Statement 

-

-COLON    Shift  275

-

-

-STATE 73 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjName ::= AjSimpleName . (71)

-

-PLUS_PLUS                     Reduce 71

-MINUS_MINUS                   Reduce 71

-PLUS_EQUAL                    Reduce 71

-MINUS_EQUAL                   Reduce 71

-MULTIPLY_EQUAL                Reduce 71

-DIVIDE_EQUAL                  Reduce 71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 289

-

-

-AND_EQUAL                     Reduce 71

-OR_EQUAL                      Reduce 71

-XOR_EQUAL                     Reduce 71

-REMAINDER_EQUAL               Reduce 71

-LEFT_SHIFT_EQUAL              Reduce 71

-RIGHT_SHIFT_EQUAL             Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 71

-LPAREN                        Reduce 71

-LBRACKET                      Reduce 71

-DOT                           Reduce 71

-EQUAL                         Reduce 71

-COLON                         Reduce 514

-

-Default reduction to rule  71

-

-

-STATE 74 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-IfThenStatement ::= if  .LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= if  .LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

-LPAREN    Shift  276

-

-

-STATE 75 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-WhileStatement ::= while  .LPAREN Expression RPAREN Statement 

-

-LPAREN    Shift  277

-

-

-STATE 76 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 290

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 291

-

-

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 292

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 293

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 294

-

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  809

-Block                                   Gt/Rd  809

-EmptyStatement                          Gt/Rd  809

-ExpressionStatement                     Gt/Rd  809

-SwitchStatement                         Gt/Rd  809

-DoStatement                             Gt/Rd  809

-BreakStatement                          Gt/Rd  809

-ContinueStatement                       Gt/Rd  809

-ReturnStatement                         Gt/Rd  809

-SynchronizedStatement                   Gt/Rd  809

-ThrowStatement                          Gt/Rd  809

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 295

-

-

-TryStatement                            Gt/Rd  809

-TryStatementWithResources               Gt/Rd  809

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 296

-

-

-StatementWithoutTrailingSubstatement    Gt/Rd  809

-LabeledStatement                        Gt/Rd  809

-IfThenStatement                         Gt/Rd  809

-IfThenElseStatement                     Gt/Rd  809

-WhileStatement                          Gt/Rd  809

-ForStatement                            Gt/Rd  809

-EnhancedForStatement                    Gt/Rd  809

-Statement                               Gt/Rd  809

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 77 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-ForStatement ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-LPAREN    Shift  278

-

-

-STATE 78 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit  .COLON 

-                               Expression RPAREN 

-

-COLON    Shift  279

-

-

-STATE 79 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-LocalVariableDeclaration ::= Type  .PushModifiers VariableDeclarators 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 297

-

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   280

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 80 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclarationHeaderName ::= AT  .PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT  .PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushModifiersForHeader ::= . (483)

-

-Identifier                Shift  1092

-around                    Shift  1051

-declare                   Shift  1051

-after                     Shift  1051

-before                    Shift  1051

-pointcut                  Shift  1051

-privileged                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 298

-

-

-aspect                    Shift  1051

-

-AjSimpleName              Gt/Rd  71

-AjQualifiedName           Gt/Rd  72

-AjName                    Goto   283

-AjSimpleNameNoAround      Goto   1051

-SimpleName                Goto   1092

-UnannotatableName         Goto   282

-PushModifiersForHeader    Goto   281

-UnannotatableNameOrAj     Gt/Rd  968

-

-interface                 Reduce 483

-

-Default reduction to rule  483

-

-

-STATE 81 -----------------------------------------------------------------------

-( 7 8 10 11 12 13 14 15 16 17 18 28 83 93 118 119 120 124 126 134 137 144 145 

-  174 176 178 184 188 189 191 193 197 199 218 233 273 278 284 338 342 405 432 

-  433 434 451 452 463 469 472 478 521 579 596 641 659 660 677 679 682 686 690 

-  691 758 760 766 787 788 789 802 803 804 875 877 879 880 883 891 920 969 1005 

-  1007 )

-

-NormalAnnotation ::= AnnotationName  .LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= AnnotationName . (988)

-SingleMemberAnnotation ::= AnnotationName  .LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-LPAREN          Shift  284

-

-Identifier      Reduce 988

-abstract        Reduce 988

-boolean         Reduce 988

-byte            Reduce 988

-char            Reduce 988

-class           Reduce 988

-default         Reduce 988

-double          Reduce 988

-enum            Reduce 988

-final           Reduce 988

-float           Reduce 988

-int             Reduce 988

-interface       Reduce 988

-long            Reduce 988

-native          Reduce 988

-package         Reduce 988

-private         Reduce 988

-protected       Reduce 988

-public          Reduce 988

-short           Reduce 988

-static          Reduce 988

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 299

-

-

-strictfp        Reduce 988

-synchronized    Reduce 988

-transient       Reduce 988

-void            Reduce 988

-volatile        Reduce 988

-aspect          Reduce 988

-pointcut        Reduce 988

-around          Reduce 988

-before          Reduce 988

-after           Reduce 988

-privileged      Reduce 988

-LESS            Reduce 988

-RPAREN          Reduce 988

-RBRACE          Reduce 988

-SEMICOLON       Reduce 988

-COMMA           Reduce 988

-AT              Reduce 988

-AT308           Reduce 988

-$eof            Reduce 988

-

-Default reduction to rule  988

-

-

-STATE 82 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-SimpleModifier ::= synchronized . (166)

-OnlySynchronized ::= synchronized . (558)

-

-LPAREN          Reduce 558

-Identifier      Reduce 157

-abstract        Reduce 157

-boolean         Reduce 157

-byte            Reduce 157

-char            Reduce 157

-class           Reduce 765

-double          Reduce 157

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 157

-int             Reduce 157

-interface       Reduce 765

-long            Reduce 157

-native          Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 157

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 300

-

-

-transient       Reduce 157

-void            Reduce 157

-volatile        Reduce 157

-AT              Reduce 157

-AT308           Reduce 157

-

-Default reduction to rule  166

-

-

-STATE 83 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-Modifiers ::= Modifiers  .Modifier 

-LocalVariableDeclaration ::= Modifiers  .Type PushRealModifiers 

-                             VariableDeclarators 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 301

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                                Shift  286

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   285

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   285

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 302

-

-

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-Type                              Goto   285

-

-class                             Reduce 765

-enum                              Reduce 765

-interface                         Reduce 765

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 84 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 61 71 76 83 93 102 121 133 138 143 173 174 179 180 

-  181 182 192 194 199 216 233 235 241 242 243 249 251 262 263 264 269 272 273 

-  275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 

-  316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 334 339 351 358 

-  359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 

-  378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 

-  397 398 399 400 401 402 403 409 413 415 424 430 432 450 478 484 512 513 516 

-  521 596 632 634 639 642 645 667 668 681 691 697 700 702 704 706 707 709 712 

-  716 718 724 725 726 729 737 741 748 751 752 756 757 767 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 858 863 864 871 875 877 878 881 884 896 

-  897 900 911 919 920 921 922 923 924 927 933 936 950 951 953 968 969 975 988 

-  998 1001 1002 1004 1005 1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 303

-

-

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 85 -----------------------------------------------------------------------

-( 7 8 16 25 83 93 121 133 138 143 173 174 179 192 194 216 233 273 278 294 316 

-  331 334 339 351 377 390 409 424 430 432 443 444 450 478 521 552 632 667 668 

-  681 691 767 805 806 871 878 896 897 900 920 959 969 1001 1002 1005 1007 )

-

-ArrayType ::= ArrayTypeWithTypeArgumentsName  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  64

-

-

-STATE 86 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-JavaIdentifier ::= Identifier . (35)

-SimpleName ::= Identifier . (87)

-LambdaParameters ::= Identifier  .NestedLambda 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 304

-

-

-NestedLambda ::= . (612)

-

-NestedLambda                  Gt/Rd  613

-

-Identifier                    Reduce 84

-aspect                        Reduce 84

-pointcut                      Reduce 84

-around                        Reduce 84

-before                        Reduce 84

-after                         Reduce 84

-declare                       Reduce 84

-privileged                    Reduce 84

-PLUS_PLUS                     Reduce 84

-MINUS_MINUS                   Reduce 84

-PLUS_EQUAL                    Reduce 84

-MINUS_EQUAL                   Reduce 84

-MULTIPLY_EQUAL                Reduce 84

-DIVIDE_EQUAL                  Reduce 84

-AND_EQUAL                     Reduce 84

-OR_EQUAL                      Reduce 84

-XOR_EQUAL                     Reduce 84

-REMAINDER_EQUAL               Reduce 84

-LEFT_SHIFT_EQUAL              Reduce 84

-RIGHT_SHIFT_EQUAL             Reduce 84

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 84

-LESS                          Reduce 84

-LPAREN                        Reduce 84

-LBRACKET                      Reduce 84

-DOT                           Reduce 84

-EQUAL                         Reduce 84

-COLON_COLON                   Reduce 84

-BeginTypeArguments            Reduce 84

-AT308                         Reduce 84

-COLON                         Reduce 514

-ARROW                         Reduce 612

-

-Default reduction to rule  87

-

-

-STATE 87 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 305

-

-

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  290

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   292

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 306

-

-

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-LPAREN                        Reduce 68

-EQUAL                         Reduce 672

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 88 -----------------------------------------------------------------------

-( 7 8 9 14 16 25 41 43 46 54 61 71 76 83 93 102 121 133 138 143 173 174 179 

-  180 192 194 199 216 233 235 241 242 243 249 251 262 263 264 269 272 273 275 

-  276 277 278 279 284 291 294 297 298 306 307 308 309 310 311 312 313 314 315 

-  316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 334 339 351 358 

-  359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 

-  378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 

-  397 398 399 400 401 402 403 409 424 430 432 443 444 450 478 484 512 513 516 

-  521 552 596 632 634 639 642 645 667 668 681 691 697 700 702 704 706 707 709 

-  712 716 718 724 725 726 729 737 741 748 751 752 767 778 779 804 805 806 821 

-  823 827 832 833 834 836 842 854 855 856 858 871 875 877 878 896 897 900 911 

-  919 920 921 922 923 924 927 933 936 959 968 969 975 988 1001 1002 1004 1005 

-  1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-Name ::= TypeAnnotations  .SimpleName 

-TypeAnnotationsopt ::= TypeAnnotations . (93)

-

-Identifier    Sh/Rd  85

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 307

-

-

-SimpleName    Gt/Rd  85

-

-boolean       Reduce 93

-byte          Reduce 93

-char          Reduce 93

-double        Reduce 93

-float         Reduce 93

-int           Reduce 93

-long          Reduce 93

-short         Reduce 93

-void          Reduce 93

-QUESTION      Reduce 93

-

-Default reduction to rule  93

-

-

-STATE 89 -----------------------------------------------------------------------

-( 7 8 16 25 83 93 121 133 138 143 173 174 179 192 194 216 233 273 278 294 316 

-  331 334 339 351 377 390 409 424 430 432 443 444 450 478 521 552 632 667 668 

-  681 691 805 806 878 896 897 900 920 959 969 1001 1002 1005 1007 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                             Shift  293

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 308

-

-

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dims                            Gt/Rd  65

-

-Identifier                      Reduce 53

-abstract                        Reduce 53

-final                           Reduce 53

-instanceof                      Reduce 53

-native                          Reduce 53

-private                         Reduce 53

-protected                       Reduce 53

-public                          Reduce 53

-static                          Reduce 53

-strictfp                        Reduce 53

-synchronized                    Reduce 53

-this                            Reduce 53

-transient                       Reduce 53

-volatile                        Reduce 53

-aspect                          Reduce 53

-pointcut                        Reduce 53

-around                          Reduce 53

-before                          Reduce 53

-after                           Reduce 53

-declare                         Reduce 53

-privileged                      Reduce 53

-EQUAL_EQUAL                     Reduce 53

-NOT_EQUAL                       Reduce 53

-RIGHT_SHIFT                     Reduce 53

-UNSIGNED_RIGHT_SHIFT            Reduce 53

-OR_OR                           Reduce 53

-AND_AND                         Reduce 53

-XOR                             Reduce 53

-AND                             Reduce 53

-OR                              Reduce 53

-GREATER                         Reduce 53

-RPAREN                          Reduce 53

-RBRACE                          Reduce 53

-RBRACKET                        Reduce 53

-SEMICOLON                       Reduce 53

-QUESTION                        Reduce 53

-COLON                           Reduce 53

-COMMA                           Reduce 53

-AT                              Reduce 53

-ELLIPSIS                        Reduce 53

-ElidedSemicolonAndRightBrace    Reduce 53

-AT308DOTDOTDOT                  Reduce 53

-$eof                            Reduce 53

-

-Default reduction to rule  56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 309

-

-

-

-

-STATE 90 -----------------------------------------------------------------------

-( 7 8 16 60 61 83 93 121 133 138 143 173 174 179 180 192 194 206 216 217 220 

-  222 233 254 260 273 278 316 331 334 339 351 377 390 409 424 430 432 450 478 

-  504 521 632 674 691 711 746 767 770 871 878 920 949 969 1005 1007 )

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                            Shift  294

-

-TypeArguments                   Gt/Rd  59

-

-Identifier                      Reduce 55

-abstract                        Reduce 55

-final                           Reduce 55

-implements                      Reduce 55

-instanceof                      Reduce 55

-native                          Reduce 55

-private                         Reduce 55

-protected                       Reduce 55

-public                          Reduce 55

-static                          Reduce 55

-strictfp                        Reduce 55

-synchronized                    Reduce 55

-this                            Reduce 55

-transient                       Reduce 55

-volatile                        Reduce 55

-aspect                          Reduce 55

-pointcut                        Reduce 55

-around                          Reduce 55

-before                          Reduce 55

-after                           Reduce 55

-declare                         Reduce 55

-privileged                      Reduce 55

-EQUAL_EQUAL                     Reduce 55

-NOT_EQUAL                       Reduce 55

-OR_OR                           Reduce 55

-AND_AND                         Reduce 55

-XOR                             Reduce 55

-AND                             Reduce 55

-OR                              Reduce 55

-LPAREN                          Reduce 55

-RPAREN                          Reduce 55

-LBRACE                          Reduce 55

-RBRACE                          Reduce 55

-LBRACKET                        Reduce 55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 310

-

-

-RBRACKET                        Reduce 55

-SEMICOLON                       Reduce 55

-QUESTION                        Reduce 55

-COLON                           Reduce 55

-COMMA                           Reduce 55

-AT                              Reduce 55

-ELLIPSIS                        Reduce 55

-COLON_COLON                     Reduce 55

-ElidedSemicolonAndRightBrace    Reduce 55

-AT308                           Reduce 55

-AT308DOTDOTDOT                  Reduce 55

-$eof                            Reduce 55

-

-Default reduction to rule  55

-

-

-STATE 91 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 278 432 920 969 1005 1007 )

-

-Type ::= PrimitiveType . (39)

-ArrayType ::= PrimitiveType  .Dims 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 311

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   296

-

-Identifier                    Reduce 39

-aspect                        Reduce 39

-pointcut                      Reduce 39

-around                        Reduce 39

-before                        Reduce 39

-after                         Reduce 39

-declare                       Reduce 39

-privileged                    Reduce 39

-

-Default reduction to rule  39

-

-

-STATE 92 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-LocalVariableDeclarationStatement ::= LocalVariableDeclaration  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  479

-

-

-STATE 93 -----------------------------------------------------------------------

-( 8 273 432 )

-

-BlockStatements ::= BlockStatements  .BlockStatement 

-BlockStatementsopt ::= BlockStatements . (767)

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 312

-

-

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 313

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 314

-

-

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 315

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 316

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 317

-

-

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 318

-

-

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 319

-

-

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 320

-

-

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-RBRACE                                  Reduce 767

-$eof                                    Reduce 767

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 94 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 

-  823 827 832 833 834 836 854 855 856 911 921 922 927 933 968 975 1004 1010 

-  1023 )

-

-UnaryExpression ::= MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   297

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 321

-

-

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 95 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 322

-

-

-  823 827 832 833 834 836 854 855 856 911 921 922 927 933 968 975 1004 1010 

-  1023 )

-

-UnaryExpression ::= PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   298

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 96 -----------------------------------------------------------------------

-( 9 14 41 43 46 54 71 76 199 235 241 242 243 249 251 262 263 264 269 272 275 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 323

-

-

-  276 277 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 

-  319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 

-  366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 

-  386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 

-  513 516 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 724 725 

-  726 729 737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 842 854 

-  855 856 858 875 877 911 919 921 922 923 924 927 933 936 968 975 988 1004 

-  1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   299

-

-

-STATE 97 -----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 324

-

-

-  367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 

-  387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 

-  516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 729 

-  737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 

-  875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-ReferenceExpression ::= super  .COLON_COLON NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= super  .DOT JavaIdentifier 

-MethodInvocation ::= super  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= super  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  267

-COLON_COLON    Shift  268

-

-

-STATE 98 -----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 

-  367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 

-  387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 

-  516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 729 

-  737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 

-  875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-SimpleName ::= Identifier . (87)

-LambdaParameters ::= Identifier  .NestedLambda 

-

-NestedLambda ::= . (612)

-

-NestedLambda                    Gt/Rd  613

-

-Identifier                      Reduce 87

-abstract                        Reduce 87

-final                           Reduce 87

-instanceof                      Reduce 84

-native                          Reduce 87

-private                         Reduce 87

-protected                       Reduce 87

-public                          Reduce 87

-static                          Reduce 87

-strictfp                        Reduce 87

-synchronized                    Reduce 87

-transient                       Reduce 87

-volatile                        Reduce 87

-aspect                          Reduce 87

-pointcut                        Reduce 87

-around                          Reduce 87

-before                          Reduce 87

-after                           Reduce 87

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 325

-

-

-declare                         Reduce 87

-privileged                      Reduce 87

-PLUS_PLUS                       Reduce 84

-MINUS_MINUS                     Reduce 84

-EQUAL_EQUAL                     Reduce 84

-LESS_EQUAL                      Reduce 84

-GREATER_EQUAL                   Reduce 84

-NOT_EQUAL                       Reduce 84

-LEFT_SHIFT                      Reduce 84

-RIGHT_SHIFT                     Reduce 84

-UNSIGNED_RIGHT_SHIFT            Reduce 84

-PLUS_EQUAL                      Reduce 87

-MINUS_EQUAL                     Reduce 87

-MULTIPLY_EQUAL                  Reduce 87

-DIVIDE_EQUAL                    Reduce 87

-AND_EQUAL                       Reduce 87

-OR_EQUAL                        Reduce 87

-XOR_EQUAL                       Reduce 87

-REMAINDER_EQUAL                 Reduce 87

-LEFT_SHIFT_EQUAL                Reduce 87

-RIGHT_SHIFT_EQUAL               Reduce 87

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 87

-OR_OR                           Reduce 84

-AND_AND                         Reduce 84

-PLUS                            Reduce 84

-MINUS                           Reduce 84

-REMAINDER                       Reduce 84

-XOR                             Reduce 84

-AND                             Reduce 84

-MULTIPLY                        Reduce 84

-OR                              Reduce 84

-DIVIDE                          Reduce 84

-GREATER                         Reduce 84

-LESS                            Reduce 84

-LPAREN                          Reduce 84

-RPAREN                          Reduce 84

-RBRACE                          Reduce 87

-LBRACKET                        Reduce 84

-RBRACKET                        Reduce 87

-SEMICOLON                       Reduce 87

-QUESTION                        Reduce 84

-COLON                           Reduce 87

-COMMA                           Reduce 87

-DOT                             Reduce 84

-EQUAL                           Reduce 87

-AT                              Reduce 87

-COLON_COLON                     Reduce 84

-BeginTypeArguments              Reduce 84

-ElidedSemicolonAndRightBrace    Reduce 87

-AT308                           Reduce 84

-$eof                            Reduce 87

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 326

-

-

-ARROW                           Reduce 612

-

-Default reduction to rule  87

-

-

-STATE 99 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 634 639 642 645 

-  697 700 702 704 706 707 709 712 716 718 726 729 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 924 927 933 936 968 

-  975 988 1004 1010 1023 1028 1032 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 327

-

-

-BeginTypeArguments              Shift  288

-DOT                             Shift  300

-LBRACKET                        Shift  291

-AT308                           Shift  22

-

-Dims                            Goto   301

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dimsopt                         Goto   289

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 328

-

-

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-LESS                            Reduce 672

-LPAREN                          Reduce 68

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-EQUAL                           Reduce 672

-AT                              Reduce 672

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 672

-COLON_COLON                     Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 100 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 278 279 291 

-  297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 

-  324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 

-  392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 

-  642 645 697 700 702 704 706 707 709 712 716 718 726 729 737 741 748 751 752 

-  778 779 821 823 827 832 833 834 836 854 855 856 858 911 920 921 922 924 927 

-  933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 329

-

-

-PostfixExpression ::= Primary . (671)

-

-DOT                             Shift  302

-COLON_COLON                     Shift  265

-

-abstract                        Reduce 671

-final                           Reduce 671

-instanceof                      Reduce 671

-native                          Reduce 671

-private                         Reduce 671

-protected                       Reduce 671

-public                          Reduce 671

-static                          Reduce 671

-strictfp                        Reduce 671

-synchronized                    Reduce 671

-transient                       Reduce 671

-volatile                        Reduce 671

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 671

-LESS_EQUAL                      Reduce 671

-GREATER_EQUAL                   Reduce 671

-NOT_EQUAL                       Reduce 671

-LEFT_SHIFT                      Reduce 671

-RIGHT_SHIFT                     Reduce 671

-UNSIGNED_RIGHT_SHIFT            Reduce 671

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 671

-AND_AND                         Reduce 671

-PLUS                            Reduce 671

-MINUS                           Reduce 671

-REMAINDER                       Reduce 671

-XOR                             Reduce 671

-AND                             Reduce 671

-MULTIPLY                        Reduce 671

-OR                              Reduce 671

-DIVIDE                          Reduce 671

-GREATER                         Reduce 671

-LESS                            Reduce 671

-RPAREN                          Reduce 671

-RBRACE                          Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 330

-

-

-RBRACKET                        Reduce 671

-SEMICOLON                       Reduce 671

-QUESTION                        Reduce 671

-COLON                           Reduce 671

-COMMA                           Reduce 671

-EQUAL                           Reduce 671

-AT                              Reduce 671

-ElidedSemicolonAndRightBrace    Reduce 671

-$eof                            Reduce 671

-

-Default reduction to rule  671

-

-

-STATE 101 ----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 

-  368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 

-  388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 

-  552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 

-  748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 875 877 

-  911 921 922 927 933 936 968 975 988 1004 1010 1023 1028 )

-

-CastExpression ::= BeginIntersectionCast  .PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-PushLPAREN ::= .LPAREN 

-

-LPAREN        Sh/Rd  577

-

-PushLPAREN    Goto   303

-

-

-STATE 102 ----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 

-  368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 

-  388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 

-  552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 

-  748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 875 877 

-  911 921 922 927 933 936 968 975 988 1004 1010 1023 1028 )

-

-PrimaryNoNewArray ::= PushLPAREN  .Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN  .Name PushRPAREN 

-CastExpression ::= PushLPAREN  .PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= PushLPAREN  .Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 331

-

-

-CastExpression ::= PushLPAREN  .Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN  .Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN  .Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 332

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 333

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 334

-

-

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 335

-

-

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 336

-

-

-                                  ConditionalExpression 

-

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1081

-true                                    Shift  1081

-null                                    Shift  1081

-StringLiteral                           Shift  1081

-CharacterLiteral                        Shift  1081

-DoubleLiteral                           Shift  1081

-FloatingPointLiteral                    Shift  1081

-LongLiteral                             Shift  1081

-IntegerLiteral                          Shift  1081

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression_NotName           Goto   244

-Assignment                              Goto   244

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   246

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1082

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1082

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 337

-

-

-CastExpression                          Goto   1082

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1090

-BooleanLiteral                          Goto   1081

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   305

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   304

-Literal                                 Goto   1081

-ClassInstanceCreationExpression         Goto   1088

-FieldAccess                             Goto   1087

-MethodInvocation                        Goto   1086

-ArrayAccess                             Goto   1085

-LambdaExpression                        Goto   1084

-ReferenceExpression                     Goto   1083

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1082

-PreDecrementExpression                  Goto   1082

-UnaryExpressionNotPlusMinus_NotName     Goto   1082

-AssignmentExpression_NotName            Goto   244

-Expression_NotName                      Goto   244

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 338

-

-

-

-

-STATE 103 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-UnaryExpressionNotPlusMinus ::= NOT  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   306

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 339

-

-

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 104 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-UnaryExpressionNotPlusMinus ::= TWIDDLE  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   307

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 340

-

-

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 105 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 311 312 313 

-  317 318 319 320 321 322 323 324 325 326 327 328 329 367 368 369 370 371 372 

-  373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 393 

-  394 395 396 402 403 484 512 513 516 552 634 639 642 645 697 700 702 704 706 

-  707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 

-  854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= MultiplicativeExpression . (708)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 341

-

-

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-XOR                             Reduce 708

-AND                             Reduce 708

-OR                              Reduce 708

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 106 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 322 323 

-  324 325 326 327 328 329 375 376 378 379 380 381 382 383 384 385 386 387 388 

-  389 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 

-  716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 

-  911 921 922 927 968 975 1004 1010 1023 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= ShiftExpression . (715)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 342

-

-

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-XOR                             Reduce 720

-AND                             Reduce 720

-OR                              Reduce 720

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  715

-

-

-STATE 107 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 367 368 369 370 371 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 402 403 484 512 513 516 

-  552 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 

-  752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= AdditiveExpression . (711)

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 343

-

-

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-XOR                             Reduce 711

-AND                             Reduce 711

-OR                              Reduce 711

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 108 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 324 325 

-  326 327 328 329 378 379 380 381 382 383 384 385 386 387 402 403 484 512 513 

-  516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 

-  752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= InstanceofExpression . (722)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 722

-final                           Reduce 722

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 344

-

-

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-EQUAL_EQUAL                     Reduce 722

-NOT_EQUAL                       Reduce 722

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-XOR                             Reduce 722

-AND                             Reduce 722

-OR                              Reduce 722

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 109 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 322 323 

-  324 325 326 327 328 329 375 376 378 379 380 381 382 383 384 385 386 387 388 

-  389 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 

-  716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 

-  911 921 922 927 968 975 1004 1010 1023 )

-

-RelationalExpression ::= RelationalExpression  .LESS ShiftExpression 

-RelationalExpression ::= RelationalExpression  .GREATER ShiftExpression 

-RelationalExpression ::= RelationalExpression  .LESS_EQUAL ShiftExpression 

-RelationalExpression ::= RelationalExpression  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= RelationalExpression . (720)

-

-GREATER_EQUAL                   Shift  317

-LESS_EQUAL                      Shift  318

-GREATER                         Shift  319

-LESS                            Shift  320

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 345

-

-

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-NOT_EQUAL                       Reduce 720

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-XOR                             Reduce 720

-AND                             Reduce 720

-OR                              Reduce 720

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 110 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 324 326 327 

-  328 329 380 381 382 383 384 385 402 403 484 512 513 516 634 639 642 645 697 

-  700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 

-  832 833 834 836 854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression ::= AndExpression . (727)

-

-AND                             Shift  321

-

-abstract                        Reduce 727

-final                           Reduce 727

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 346

-

-

-XOR                             Reduce 727

-OR                              Reduce 727

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 111 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 324 325 326 

-  327 328 329 378 380 381 382 383 384 385 386 402 403 484 512 513 516 634 639 

-  642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 1004 1010 

-  1023 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression ::= EqualityExpression . (725)

-

-NOT_EQUAL                       Shift  322

-EQUAL_EQUAL                     Shift  323

-

-abstract                        Reduce 725

-final                           Reduce 725

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-XOR                             Reduce 725

-AND                             Reduce 725

-OR                              Reduce 725

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 347

-

-

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 112 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 327 329 

-  382 383 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 

-  712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 

-  856 911 921 922 927 968 975 1004 1010 1023 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression ::= InclusiveOrExpression . (731)

-

-OR                              Shift  324

-

-abstract                        Reduce 731

-final                           Reduce 731

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 113 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 327 328 

-  329 380 382 383 384 402 403 484 512 513 516 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 348

-

-

-  836 854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression ::= ExclusiveOrExpression . (729)

-

-XOR                             Shift  325

-

-abstract                        Reduce 729

-final                           Reduce 729

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-OR                              Reduce 729

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 114 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 

-  922 927 968 975 1004 1010 1023 )

-

-ConditionalOrExpression ::= ConditionalOrExpression  .OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= ConditionalOrExpression . (735)

-ConditionalExpression ::= ConditionalOrExpression  .QUESTION Expression COLON 

-                          ConditionalExpression 

-

-QUESTION                        Shift  326

-OR_OR                           Shift  327

-

-abstract                        Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 349

-

-

-final                           Reduce 735

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 115 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 

-  922 927 968 975 1004 1010 1023 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= ConditionalAndExpression . (733)

-

-AND_AND                         Shift  328

-

-abstract                        Reduce 735

-final                           Reduce 735

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-OR_OR                           Reduce 733

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 350

-

-

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  733

-

-

-STATE 116 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 

-  975 1004 1010 1023 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= PostfixExpression . (685)

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-

-AssignmentOperator ::= .EQUAL 

-AssignmentOperator ::= .MULTIPLY_EQUAL 

-AssignmentOperator ::= .DIVIDE_EQUAL 

-AssignmentOperator ::= .REMAINDER_EQUAL 

-AssignmentOperator ::= .PLUS_EQUAL 

-AssignmentOperator ::= .MINUS_EQUAL 

-AssignmentOperator ::= .LEFT_SHIFT_EQUAL 

-AssignmentOperator ::= .RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .UNSIGNED_RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .AND_EQUAL 

-AssignmentOperator ::= .XOR_EQUAL 

-AssignmentOperator ::= .OR_EQUAL 

-

-MINUS_MINUS                     Sh/Rd  676

-PLUS_PLUS                       Sh/Rd  675

-OR_EQUAL                        Sh/Rd  753

-XOR_EQUAL                       Sh/Rd  752

-AND_EQUAL                       Sh/Rd  751

-UNSIGNED_RIGHT_SHIFT_EQUAL      Sh/Rd  750

-RIGHT_SHIFT_EQUAL               Sh/Rd  749

-LEFT_SHIFT_EQUAL                Sh/Rd  748

-MINUS_EQUAL                     Sh/Rd  747

-PLUS_EQUAL                      Sh/Rd  746

-REMAINDER_EQUAL                 Sh/Rd  745

-DIVIDE_EQUAL                    Sh/Rd  744

-MULTIPLY_EQUAL                  Sh/Rd  743

-EQUAL                           Sh/Rd  742

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 351

-

-

-AssignmentOperator              Goto   264

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  685

-

-

-STATE 117 ----------------------------------------------------------------------

-( 9 264 329 495 499 645 752 927 1004 1023 )

-

-ArrayInitializer ::= LBRACE  .PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= LBRACE  .PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= LBRACE  .PushLeftBrace VariableInitializers COMMA RBRACE 

-

-PushLeftBrace ::= . (460)

-

-PushLeftBrace            Goto   329

-

-Identifier               Reduce 460

-boolean                  Reduce 460

-byte                     Reduce 460

-char                     Reduce 460

-double                   Reduce 460

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 352

-

-

-false                    Reduce 460

-float                    Reduce 460

-int                      Reduce 460

-long                     Reduce 460

-new                      Reduce 460

-null                     Reduce 460

-short                    Reduce 460

-super                    Reduce 460

-this                     Reduce 460

-true                     Reduce 460

-void                     Reduce 460

-aspect                   Reduce 460

-pointcut                 Reduce 460

-around                   Reduce 460

-before                   Reduce 460

-after                    Reduce 460

-declare                  Reduce 460

-privileged               Reduce 460

-IntegerLiteral           Reduce 460

-LongLiteral              Reduce 460

-FloatingPointLiteral     Reduce 460

-DoubleLiteral            Reduce 460

-CharacterLiteral         Reduce 460

-StringLiteral            Reduce 460

-PLUS_PLUS                Reduce 460

-MINUS_MINUS              Reduce 460

-PLUS                     Reduce 460

-MINUS                    Reduce 460

-NOT                      Reduce 460

-TWIDDLE                  Reduce 460

-LPAREN                   Reduce 460

-LBRACE                   Reduce 460

-RBRACE                   Reduce 460

-COMMA                    Reduce 460

-BeginLambda              Reduce 460

-BeginIntersectionCast    Reduce 460

-AT308                    Reduce 460

-

-Default reduction to rule  460

-

-

-STATE 118 ----------------------------------------------------------------------

-( 10 )

-

-Goal ::= AND ClassBodyDeclarations . (14)

-ClassBodyDeclarations ::= ClassBodyDeclarations  .ClassBodyDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 353

-

-

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 354

-

-

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 355

-

-

-AT                                     Shift  80

-static                                 Shift  131

-

-AspectDeclaration                      Gt/Rd  356

-PointcutDeclaration                    Gt/Rd  356

-FieldDeclaration                       Gt/Rd  356

-MethodDeclaration                      Gt/Rd  356

-ClassDeclaration                       Gt/Rd  356

-InterfaceDeclaration                   Gt/Rd  356

-EnumDeclaration                        Gt/Rd  356

-AnnotationTypeDeclaration              Gt/Rd  356

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-MethodHeader                           Goto   123

-MethodHeaderName                       Goto   119

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-AbstractMethodDeclaration              Gt/Rd  356

-DefaultMethodHeader                    Goto   122

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-StaticOnly                             Goto   130

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassMemberDeclaration                 Gt/Rd  356

-StaticInitializer                      Gt/Rd  356

-ConstructorDeclaration                 Gt/Rd  356

-Diet                                   Goto   135

-ClassBodyDeclaration                   Gt/Rd  356

-

-$eof                                   Reduce 14

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 356

-

-

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 119 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-MethodHeader ::= MethodHeaderName  .FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 357

-

-

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   330

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 358

-

-

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 120 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName  .FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 359

-

-

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   332

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 121 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .Type Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 360

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS                              Shift  223

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   333

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 361

-

-

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   333

-TypeParameters                    Goto   334

-Type                              Goto   333

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 122 ----------------------------------------------------------------------

-( 10 11 118 472 686 )

-

-MethodDeclaration ::= DefaultMethodHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  388

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 123 ----------------------------------------------------------------------

-( 10 11 118 472 686 )

-

-MethodDeclaration ::= MethodHeader  .MethodBody 

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  389

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  387

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 362

-

-

-

-

-STATE 124 ----------------------------------------------------------------------

-( 10 17 18 118 469 472 579 682 686 758 )

-

-PointcutDeclaration ::= PointcutHeader  .FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= PointcutHeader  .FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 363

-

-

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   335

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 125 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeader ::= AspectHeaderName  .ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   336

-ClassHeaderExtendsopt    Goto   336

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 364

-

-

-Identifier               Reduce 755

-implements               Reduce 755

-LBRACE                   Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 126 ----------------------------------------------------------------------

-( 10 12 118 433 434 463 469 472 579 659 660 679 682 686 758 802 803 891 )

-

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  286

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 365

-

-

-char                      Reduce 765

-class                     Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-enum                      Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-interface                 Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-pointcut                  Reduce 765

-around                    Reduce 765

-before                    Reduce 765

-after                     Reduce 765

-privileged                Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 127 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeaderName ::= AspectHeaderName2 . (187)

-AspectHeaderName ::= AspectHeaderName2  .TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  189

-

-Identifier        Reduce 187

-extends           Reduce 187

-implements        Reduce 187

-LBRACE            Reduce 187

-

-Default reduction to rule  187

-

-

-STATE 128 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeaderName ::= AspectHeaderName1 . (186)

-AspectHeaderName ::= AspectHeaderName1  .TypeParameters 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 366

-

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  188

-

-Identifier        Reduce 186

-extends           Reduce 186

-implements        Reduce 186

-LBRACE            Reduce 186

-

-Default reduction to rule  186

-

-

-STATE 129 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectDeclaration ::= AspectHeader  .AspectBody 

-

-AspectBody ::= .LBRACE AspectBodyDeclarationsopt RBRACE 

-

-LBRACE        Shift  337

-

-AspectBody    Gt/Rd  184

-

-

-STATE 130 ----------------------------------------------------------------------

-( 10 17 18 19 118 469 472 579 682 686 758 )

-

-StaticInitializer ::= StaticOnly  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  418

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 131 ----------------------------------------------------------------------

-( 10 17 18 118 469 472 579 682 686 758 )

-

-SimpleModifier ::= static . (162)

-StaticOnly ::= static . (419)

-

-LBRACE          Reduce 419

-Identifier      Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 367

-

-

-abstract        Reduce 157

-boolean         Reduce 765

-byte            Reduce 765

-char            Reduce 765

-class           Reduce 765

-default         Reduce 765

-double          Reduce 765

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 765

-int             Reduce 765

-interface       Reduce 765

-long            Reduce 765

-native          Reduce 157

-package         Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 765

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 765

-volatile        Reduce 157

-aspect          Reduce 765

-pointcut        Reduce 765

-around          Reduce 765

-before          Reduce 765

-after           Reduce 765

-privileged      Reduce 765

-LESS            Reduce 765

-AT              Reduce 157

-AT308           Reduce 765

-

-Default reduction to rule  162

-

-

-STATE 132 ----------------------------------------------------------------------

-( 10 11 13 118 463 472 579 679 686 758 )

-

-ConstructorDeclaration ::= ConstructorHeader  .MethodBody 

-ConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  421

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  420

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 368

-

-

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 133 ----------------------------------------------------------------------

-( 10 118 469 472 682 686 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 369

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   340

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   340

-Type                              Goto   340

-TypeParameters                    Goto   339

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 370

-

-

-

-Default reduction to rule  92

-

-

-STATE 134 ----------------------------------------------------------------------

-( 10 11 13 18 118 463 469 472 579 679 682 686 758 )

-

-ConstructorHeader ::= ConstructorHeaderName  .FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 371

-

-

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   345

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 135 ----------------------------------------------------------------------

-( 10 118 472 686 )

-

-ClassBodyDeclaration ::= Diet  .NestedMethod CreateInitializer Block 

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   346

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 136 ----------------------------------------------------------------------

-( 11 14 15 28 119 120 124 134 137 145 176 178 184 188 189 191 193 199 218 233 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 372

-

-

-  278 284 338 342 405 451 452 478 521 596 641 677 690 691 760 766 787 788 789 

-  804 875 877 879 880 883 920 )

-

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-

-Identifier               Shift  1092

-around                   Shift  1051

-declare                  Shift  1051

-after                    Shift  1051

-before                   Shift  1051

-pointcut                 Shift  1051

-privileged               Shift  1051

-aspect                   Shift  1051

-

-AjSimpleName             Gt/Rd  71

-AjQualifiedName          Gt/Rd  72

-AjName                   Goto   283

-AjSimpleNameNoAround     Goto   1051

-SimpleName               Goto   1092

-UnannotatableName        Goto   282

-UnannotatableNameOrAj    Gt/Rd  968

-

-

-STATE 137 ----------------------------------------------------------------------

-( 11 15 28 119 120 124 134 145 176 178 184 188 189 191 193 218 338 342 405 451 

-  452 677 690 760 766 883 )

-

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 373

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-AT                        Shift  136

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-char                      Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-$eof                      Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 138 ----------------------------------------------------------------------

-( 11 )

-

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 374

-

-

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-aspect                            Shift  347

-default                           Shift  338

-LESS                              Shift  223

-Identifier                        Shift  344

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 375

-

-

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   348

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   348

-TypeParameters                    Goto   339

-Type                              Goto   348

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 139 ----------------------------------------------------------------------

-( 12 197 433 434 659 660 802 803 891 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-enum          Shift  226

-interface     Shift  227

-class         Shift  228

-privileged    Shift  342

-aspect        Shift  349

-

-

-STATE 140 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 376

-

-

-PackageDeclaration ::= PackageDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  140

-

-

-STATE 141 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-PackageDeclarationName ::= PackageComment  .package Name RejectTypeAnnotations 

-

-package    Shift  350

-

-

-STATE 142 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  960

-

-

-STATE 143 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-AnnotationMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                               JavaIdentifier LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 377

-

-

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-class                             Shift  228

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   352

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   352

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 378

-

-

-Type                              Goto   352

-TypeParameters                    Goto   351

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 144 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-PackageDeclarationName ::= Modifiers  .package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-package                   Shift  353

-AT                        Shift  286

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 379

-

-

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-char                      Reduce 765

-class                     Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-enum                      Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-interface                 Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-pointcut                  Reduce 765

-around                    Reduce 765

-before                    Reduce 765

-after                     Reduce 765

-privileged                Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 145 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName  .FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 380

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   354

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 381

-

-

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 146 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName  .

-                                    SEMICOLON 

-

-SEMICOLON    Sh/Rd  816

-

-

-STATE 147 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  814

-

-

-STATE 148 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  150

-

-

-STATE 149 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleTypeImportDeclarationName ::= import  .Name RejectTypeAnnotations 

-TypeImportOnDemandDeclarationName ::= import  .Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclarationName ::= import  .static Name 

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import  .static Name DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 382

-

-

-                                        RejectTypeAnnotations MULTIPLY 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-static                        Shift  355

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   356

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   356

-

-

-STATE 150 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  148

-

-

-STATE 151 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 383

-

-

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace RBRACE 

-

-LBRACE    Shift  357

-

-

-STATE 152 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpressionNotPlusMinus_NotName ::= NOT  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   358

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 384

-

-

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 153 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   359

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 385

-

-

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 154 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-

-MINUS_MINUS    Sh/Rd  676

-PLUS_PLUS      Sh/Rd  675

-

-

-STATE 155 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-PostfixExpression ::= PostDecrementExpression . (674)

-PostfixExpression_NotName ::= PostDecrementExpression . (877)

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 386

-

-

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-PLUS_PLUS                     Reduce 674

-MINUS_MINUS                   Reduce 674

-PLUS_EQUAL                    Reduce 674

-MINUS_EQUAL                   Reduce 674

-MULTIPLY_EQUAL                Reduce 674

-DIVIDE_EQUAL                  Reduce 674

-AND_EQUAL                     Reduce 674

-OR_EQUAL                      Reduce 674

-XOR_EQUAL                     Reduce 674

-REMAINDER_EQUAL               Reduce 674

-LEFT_SHIFT_EQUAL              Reduce 674

-RIGHT_SHIFT_EQUAL             Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 674

-EQUAL                         Reduce 674

-

-Default reduction to rule  877

-

-

-STATE 156 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-PostfixExpression ::= PostIncrementExpression . (673)

-PostfixExpression_NotName ::= PostIncrementExpression . (876)

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 387

-

-

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-PLUS_PLUS                     Reduce 673

-MINUS_MINUS                   Reduce 673

-PLUS_EQUAL                    Reduce 673

-MINUS_EQUAL                   Reduce 673

-MULTIPLY_EQUAL                Reduce 673

-DIVIDE_EQUAL                  Reduce 673

-AND_EQUAL                     Reduce 673

-OR_EQUAL                      Reduce 673

-XOR_EQUAL                     Reduce 673

-REMAINDER_EQUAL               Reduce 673

-LEFT_SHIFT_EQUAL              Reduce 673

-RIGHT_SHIFT_EQUAL             Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 673

-EQUAL                         Reduce 673

-

-Default reduction to rule  876

-

-

-STATE 157 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 388

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= Primary . (671)

-PostfixExpression_NotName ::= Primary . (875)

-

-DOT                           Shift  302

-COLON_COLON                   Shift  265

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 389

-

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-EQUAL                         Reduce 671

-

-Default reduction to rule  875

-

-

-STATE 158 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpression_NotName ::= MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   360

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 390

-

-

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 159 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpression_NotName ::= PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   361

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 391

-

-

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 160 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName  .PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName  .MINUS 

-                               MultiplicativeExpression 

-ShiftExpression_NotName ::= AdditiveExpression_NotName . (899)

-

-MINUS                   Shift  362

-PLUS                    Shift  363

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 392

-

-

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  899

-

-

-STATE 161 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .

-                                     MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .

-                                     REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= MultiplicativeExpression_NotName . (894)

-

-REMAINDER               Shift  364

-DIVIDE                  Shift  365

-MULTIPLY                Shift  366

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 393

-

-

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  894

-

-

-STATE 162 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName  .LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName  .GREATER_EQUAL 

-                                 ShiftExpression 

-InstanceofExpression_NotName ::= RelationalExpression_NotName . (915)

-

-GREATER_EQUAL    Shift  367

-LESS_EQUAL       Shift  368

-

-abstract         Reduce 938

-final            Reduce 938

-instanceof       Reduce 915

-native           Reduce 938

-private          Reduce 938

-protected        Reduce 938

-public           Reduce 938

-static           Reduce 938

-strictfp         Reduce 938

-synchronized     Reduce 938

-transient        Reduce 938

-volatile         Reduce 938

-EQUAL_EQUAL      Reduce 918

-NOT_EQUAL        Reduce 918

-OR_OR            Reduce 935

-AND_AND          Reduce 932

-XOR              Reduce 926

-AND              Reduce 923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 394

-

-

-OR               Reduce 929

-RPAREN           Reduce 938

-RBRACE           Reduce 938

-SEMICOLON        Reduce 938

-QUESTION         Reduce 935

-COMMA            Reduce 938

-AT               Reduce 938

-$eof             Reduce 938

-

-Default reduction to rule  915

-

-

-STATE 163 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 395

-

-

-

-LESS                          Shift  369

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-abstract                      Reduce 978

-final                         Reduce 978

-instanceof                    Reduce 68

-native                        Reduce 978

-private                       Reduce 978

-protected                     Reduce 978

-public                        Reduce 978

-static                        Reduce 978

-strictfp                      Reduce 978

-synchronized                  Reduce 978

-transient                     Reduce 978

-volatile                      Reduce 978

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 396

-

-

-LPAREN                        Reduce 68

-RPAREN                        Reduce 978

-RBRACE                        Reduce 978

-SEMICOLON                     Reduce 978

-QUESTION                      Reduce 68

-COMMA                         Reduce 978

-AT                            Reduce 978

-$eof                          Reduce 978

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 164 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName  .LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName  .RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName  .UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName . (906)

-RelationalExpression_NotName ::= ShiftExpression_NotName  .LESS ShiftExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName  .GREATER 

-                                 ShiftExpression 

-

-GREATER                 Shift  370

-LESS                    Shift  371

-UNSIGNED_RIGHT_SHIFT    Shift  372

-RIGHT_SHIFT             Shift  373

-LEFT_SHIFT              Shift  374

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 397

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  906

-

-

-STATE 165 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName  .EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= EqualityExpression_NotName  .NOT_EQUAL 

-                               InstanceofExpression 

-AndExpression_NotName ::= EqualityExpression_NotName . (923)

-

-NOT_EQUAL       Shift  375

-EQUAL_EQUAL     Shift  376

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-AND             Reduce 923

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 398

-

-

-

-

-STATE 166 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-InstanceofExpression_NotName ::= InstanceofExpression_NotName  .instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= InstanceofExpression_NotName . (918)

-

-instanceof      Shift  377

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-EQUAL_EQUAL     Reduce 918

-NOT_EQUAL       Reduce 918

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-AND             Reduce 923

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  918

-

-

-STATE 167 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName  .XOR 

-                                  AndExpression 

-InclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName . (929)

-

-XOR             Shift  378

-

-abstract        Reduce 938

-final           Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 399

-

-

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  929

-

-

-STATE 168 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-AndExpression_NotName ::= AndExpression_NotName  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= AndExpression_NotName . (926)

-

-AND             Shift  379

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 400

-

-

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  926

-

-

-STATE 169 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName  .AND_AND 

-                                     InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= ConditionalAndExpression_NotName . (935)

-

-AND_AND         Shift  380

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  935

-

-

-STATE 170 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName  .OR 

-                                  ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= InclusiveOrExpression_NotName . (932)

-

-OR              Shift  381

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 401

-

-

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  932

-

-

-STATE 171 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-MemberValue ::= NameOrAj . (978)

-

-QUESTION                Shift  382

-OR_OR                   Shift  383

-AND_AND                 Shift  384

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 402

-

-

-OR                      Shift  385

-XOR                     Shift  386

-AND                     Shift  387

-NOT_EQUAL               Shift  388

-EQUAL_EQUAL             Shift  389

-instanceof              Shift  390

-GREATER_EQUAL           Shift  391

-LESS_EQUAL              Shift  392

-GREATER                 Shift  393

-UNSIGNED_RIGHT_SHIFT    Shift  394

-RIGHT_SHIFT             Shift  395

-LEFT_SHIFT              Shift  396

-MINUS                   Shift  397

-PLUS                    Shift  398

-REMAINDER               Shift  399

-DIVIDE                  Shift  400

-MULTIPLY                Shift  401

-LPAREN                  Shift  251

-

-abstract                Reduce 978

-final                   Reduce 978

-native                  Reduce 978

-private                 Reduce 978

-protected               Reduce 978

-public                  Reduce 978

-static                  Reduce 978

-strictfp                Reduce 978

-synchronized            Reduce 978

-transient               Reduce 978

-volatile                Reduce 978

-RPAREN                  Reduce 978

-RBRACE                  Reduce 978

-SEMICOLON               Reduce 978

-COMMA                   Reduce 978

-AT                      Reduce 978

-$eof                    Reduce 978

-PLUS_PLUS               Reduce 672

-MINUS_MINUS             Reduce 672

-

-Default reduction to rule  978

-

-

-STATE 172 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName  .OR_OR 

-                                    ConditionalAndExpression 

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName . (938)

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName  .QUESTION 

-                                  Expression COLON ConditionalExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 403

-

-

-QUESTION        Shift  402

-OR_OR           Shift  403

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  938

-

-

-STATE 173 ----------------------------------------------------------------------

-( 15 )

-

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 404

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   404

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   404

-Type                              Goto   404

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 174 ----------------------------------------------------------------------

-( 16 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 405

-

-

-Goal ::= MULTIPLY BlockStatements . (7)

-BlockStatements ::= BlockStatements  .BlockStatement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 406

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 407

-

-

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 408

-

-

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 409

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 410

-

-

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 411

-

-

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 412

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 413

-

-

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-$eof                                    Reduce 7

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 414

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 175 ----------------------------------------------------------------------

-( 16 )

-

-CatchHeader ::= catch  .LPAREN CatchFormalParameter RPAREN LBRACE 

-

-LPAREN    Shift  405

-

-

-STATE 176 ----------------------------------------------------------------------

-( 17 )

-

-Goal ::= NOT Header2  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 415

-

-

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  6

-

-$eof                      Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 177 ----------------------------------------------------------------------

-( 17 218 677 )

-

-EnumConstantHeader ::= EnumConstantHeaderName  .ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet     Goto   406

-

-abstract        Reduce 381

-final           Reduce 381

-native          Reduce 381

-private         Reduce 381

-protected       Reduce 381

-public          Reduce 381

-static          Reduce 381

-strictfp        Reduce 381

-synchronized    Reduce 381

-transient       Reduce 381

-volatile        Reduce 381

-LPAREN          Reduce 381

-LBRACE          Reduce 381

-RBRACE          Reduce 381

-SEMICOLON       Reduce 381

-COMMA           Reduce 381

-AT              Reduce 381

-$eof            Reduce 381

-

-Default reduction to rule  381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 416

-

-

-

-

-STATE 178 ----------------------------------------------------------------------

-( 17 18 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 417

-

-

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   407

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 179 ----------------------------------------------------------------------

-( 17 18 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= ModifiersWithDefault  .Type JavaIdentifierNoAround 

-                             LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 418

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS                              Shift  223

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   408

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 419

-

-

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   408

-TypeParameters                    Goto   409

-Type                              Goto   408

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 180 ----------------------------------------------------------------------

-( 17 18 )

-

-AllocationHeader ::= new  .ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= new  .PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= new  .ClassOrInterfaceType DimWithOrWithOutExprs 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 420

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations               Goto   88

-TypeAnnotationsopt            Goto   84

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   412

-ClassType                     Goto   411

-PrimitiveType                 Goto   410

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 181 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON 

-                       MINUS Annotations SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 421

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokensNoColon ::= .PseudoToken 

-PseudoTokensNoColon ::= .PseudoTokensNoColon PseudoToken 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 422

-

-

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 423

-

-

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 424

-

-

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  285

-PseudoTokensNoColon           Goto   413

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 182 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 425

-

-

-DeclareDeclaration ::= DeclareHeader  .PseudoTokens SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 426

-

-

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 427

-

-

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 428

-

-

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   415

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 429

-

-

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 183 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-DeclareHeader ::= declare  .Identifier COLON 

-DeclareAnnotationHeader ::= declare  .AT Identifier COLON 

-

-AT            Shift  416

-Identifier    Shift  417

-

-

-STATE 184 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName  .FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 430

-

-

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   418

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 185 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 431

-

-

-InterTypeMethodDeclaration ::= InterTypeMethodHeader  .MethodBody 

-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  255

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  247

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 186 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-InterTypeFieldDeclaration ::= InterTypeFieldHeader  .InterTypeFieldBody 

-                              SEMICOLON 

-

-InterTypeFieldBody ::= . (270)

-InterTypeFieldBody ::= .EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-

-EQUAL                 Shift  420

-

-InterTypeFieldBody    Goto   419

-

-SEMICOLON             Reduce 270

-

-Default reduction to rule  270

-

-

-STATE 187 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-BasicAdviceDeclaration ::= BasicAdviceHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  230

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 188 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 432

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName  .FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 433

-

-

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   421

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 189 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName  .FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 434

-

-

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   422

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 435

-

-

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 190 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AroundDeclaration ::= AroundHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  226

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 191 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AroundHeader ::= AroundHeaderName  .FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 436

-

-

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   423

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 437

-

-

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 192 ----------------------------------------------------------------------

-( 17 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-RecoveryMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 438

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-after                             Shift  425

-before                            Shift  426

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  349

-Identifier                        Shift  429

-AT308                             Shift  22

-LESS                              Shift  223

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 439

-

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   428

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   428

-Type                              Goto   428

-TypeParameters                    Goto   424

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 193 ----------------------------------------------------------------------

-( 18 )

-

-Goal ::= UNSIGNED_RIGHT_SHIFT Header1  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 440

-

-

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  5

-

-$eof                      Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 194 ----------------------------------------------------------------------

-( 18 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 441

-

-

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-RecoveryMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 442

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-after                             Shift  425

-before                            Shift  426

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   428

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 443

-

-

-ReferenceType                     Goto   428

-Type                              Goto   428

-TypeParameters                    Goto   430

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 195 ----------------------------------------------------------------------

-( 19 469 682 )

-

-Initializer ::= Diet  .NestedMethod CreateInitializer Block 

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   431

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 196 ----------------------------------------------------------------------

-( 20 122 123 132 185 187 190 683 684 685 761 765 )

-

-MethodBody ::= NestedMethod  .LBRACE BlockStatementsopt RBRACE 

-

-LBRACE    Shift  432

-

-

-STATE 197 ----------------------------------------------------------------------

-( 21 )

-

-CompilationUnit ::= EnterCompilationUnit  .InternalCompilationUnit 

-

-InternalCompilationUnit ::= .PackageDeclaration 

-InternalCompilationUnit ::= .PackageDeclaration ImportDeclarations 

-                            ReduceImports 

-InternalCompilationUnit ::= .PackageDeclaration ImportDeclarations 

-                            ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= .PackageDeclaration TypeDeclarations 

-InternalCompilationUnit ::= .ImportDeclarations ReduceImports 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 444

-

-

-InternalCompilationUnit ::= .TypeDeclarations 

-InternalCompilationUnit ::= .ImportDeclarations ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= . (117)

-ImportDeclarations ::= .ImportDeclarations ImportDeclaration 

-TypeDeclarations ::= .TypeDeclaration 

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-TypeDeclaration ::= .ClassDeclaration 

-TypeDeclaration ::= .InterfaceDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-TypeDeclaration ::= .EnumDeclaration 

-TypeDeclaration ::= .AnnotationTypeDeclaration 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-TypeDeclaration ::= .AspectDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 445

-

-

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-import                                 Shift  149

-AT                                     Shift  80

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 446

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-

-PackageDeclarationName                 Goto   140

-Modifier                               Goto   1064

-Modifiers                              Goto   144

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-PackageComment                         Goto   141

-ImportDeclaration                      Goto   435

-ImportDeclarations                     Goto   435

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   435

-TypeImportOnDemandDeclaration          Goto   435

-SingleStaticImportDeclaration          Goto   435

-StaticImportOnDemandDeclaration        Goto   435

-TypeDeclaration                        Goto   1096

-TypeDeclarations                       Goto   434

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Goto   1096

-InterfaceDeclaration                   Goto   1096

-EnumDeclaration                        Goto   1096

-AnnotationTypeDeclaration              Goto   1096

-AspectDeclaration                      Goto   1096

-PackageDeclaration                     Goto   433

-InternalCompilationUnit                Gt/Rd  109

-

-$eof                                   Reduce 117

-class                                  Reduce 764

-enum                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 447

-

-

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-package                                Reduce 143

-

-Default reduction to rule  764

-

-

-STATE 198 ----------------------------------------------------------------------

-( 22 )

-

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-TypeAnnotationName ::= AT308 UnannotatableName . (100)

-

-DOT           Shift  436

-

-Identifier    Reduce 100

-boolean       Reduce 100

-byte          Reduce 100

-char          Reduce 100

-double        Reduce 100

-float         Reduce 100

-int           Reduce 100

-long          Reduce 100

-short         Reduce 100

-void          Reduce 100

-aspect        Reduce 100

-pointcut      Reduce 100

-around        Reduce 100

-before        Reduce 100

-after         Reduce 100

-declare       Reduce 100

-privileged    Reduce 100

-LPAREN        Reduce 100

-LBRACKET      Reduce 100

-QUESTION      Reduce 100

-ELLIPSIS      Reduce 100

-AT308         Reduce 100

-$eof          Reduce 100

-

-Default reduction to rule  100

-

-

-STATE 199 ----------------------------------------------------------------------

-( 23 )

-

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN  .MemberValuePairsopt RPAREN 

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN  .

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 448

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-SimpleNameOrAj ::= .AjSimpleName 

-SimpleNameOrAj ::= .SimpleName 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 449

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 450

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 451

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 452

-

-

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValuePairsopt ::= . (970)

-MemberValuePairsopt ::= .MemberValuePairs 

-MemberValuePairs ::= .MemberValuePair 

-MemberValuePairs ::= .MemberValuePairs COMMA MemberValuePair 

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 453

-

-

-MemberValue ::= .ConditionalExpression_NotName 

-MemberValue ::= .NameOrAj 

-MemberValue ::= .Annotation 

-MemberValue ::= .MemberValueArrayInitializer 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotationMemberValue ::= .MemberValue 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1098

-declare                                 Shift  1098

-after                                   Shift  1098

-before                                  Shift  1098

-pointcut                                Shift  1098

-privileged                              Shift  1098

-aspect                                  Shift  1098

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1097

-true                                    Shift  1097

-null                                    Shift  1097

-StringLiteral                           Shift  1097

-CharacterLiteral                        Shift  1097

-DoubleLiteral                           Shift  1097

-FloatingPointLiteral                    Shift  1097

-LongLiteral                             Shift  1097

-IntegerLiteral                          Shift  1097

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   1108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 454

-

-

-NameOrAj                                Goto   171

-Annotation                              Goto   1108

-MemberValueArrayInitializer             Goto   1108

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1108

-MarkerAnnotation                        Goto   1108

-SingleMemberAnnotation                  Goto   1108

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1100

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1100

-CastExpression                          Goto   1100

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1107

-BooleanLiteral                          Goto   1097

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Goto   442

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Goto   441

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1097

-ClassInstanceCreationExpression         Goto   1106

-FieldAccess                             Goto   1105

-MethodInvocation                        Goto   1104

-ArrayAccess                             Goto   1103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 455

-

-

-LambdaExpression                        Goto   1102

-ReferenceExpression                     Goto   1101

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1100

-PreDecrementExpression                  Goto   1100

-UnaryExpressionNotPlusMinus_NotName     Goto   1100

-MemberValue                             Gt/Rd  989

-MemberValuePair                         Goto   1099

-MemberValuePairs                        Goto   440

-AjSimpleNameNoAround                    Goto   1098

-SimpleNameOrAj                          Goto   439

-MemberValuePairsopt                     Goto   438

-SingleMemberAnnotationMemberValue       Goto   437

-

-RPAREN                                  Reduce 970

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 200 ----------------------------------------------------------------------

-( 25 294 552 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-

-COMMA    Shift  443

-

-

-STATE 201 ----------------------------------------------------------------------

-( 25 294 443 552 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 824

-

-Default reduction to rule  824

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 456

-

-

-

-

-STATE 202 ----------------------------------------------------------------------

-( 25 294 443 552 667 668 681 900 )

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS             Shift  444

-

-TypeArguments    Gt/Rd  59

-

-AND              Reduce 53

-GREATER          Reduce 53

-COMMA            Reduce 53

-

-Default reduction to rule  55

-

-

-STATE 203 ----------------------------------------------------------------------

-( 25 83 121 133 138 143 173 179 192 194 216 233 294 316 331 334 339 351 377 

-  390 409 424 430 443 444 450 478 521 632 667 668 681 691 805 806 878 896 897 

-  900 959 1001 1002 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                             Shift  445

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 457

-

-

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dims                            Gt/Rd  63

-

-Identifier                      Reduce 57

-abstract                        Reduce 57

-final                           Reduce 57

-instanceof                      Reduce 57

-native                          Reduce 57

-private                         Reduce 57

-protected                       Reduce 57

-public                          Reduce 57

-static                          Reduce 57

-strictfp                        Reduce 57

-synchronized                    Reduce 57

-this                            Reduce 57

-transient                       Reduce 57

-volatile                        Reduce 57

-aspect                          Reduce 57

-pointcut                        Reduce 57

-around                          Reduce 57

-before                          Reduce 57

-after                           Reduce 57

-declare                         Reduce 57

-privileged                      Reduce 57

-EQUAL_EQUAL                     Reduce 57

-NOT_EQUAL                       Reduce 57

-RIGHT_SHIFT                     Reduce 57

-UNSIGNED_RIGHT_SHIFT            Reduce 57

-OR_OR                           Reduce 57

-AND_AND                         Reduce 57

-XOR                             Reduce 57

-AND                             Reduce 57

-OR                              Reduce 57

-GREATER                         Reduce 57

-LESS                            Reduce 57

-RPAREN                          Reduce 57

-RBRACE                          Reduce 57

-RBRACKET                        Reduce 57

-SEMICOLON                       Reduce 57

-QUESTION                        Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 458

-

-

-COLON                           Reduce 57

-COMMA                           Reduce 57

-AT                              Reduce 57

-ELLIPSIS                        Reduce 57

-ElidedSemicolonAndRightBrace    Reduce 57

-AT308DOTDOTDOT                  Reduce 57

-$eof                            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 204 ----------------------------------------------------------------------

-( 25 294 316 377 390 443 444 450 667 668 681 805 806 896 897 900 959 1001 1002 )

-

-ArrayType ::= PrimitiveType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  62

-

-

-STATE 205 ----------------------------------------------------------------------

-( 25 294 443 552 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 459

-

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-

-QUESTION             Shift  446

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 206 ----------------------------------------------------------------------

-( 26 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT  .

-                                        ClassOrInterfaceType Dimsopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 460

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassOrInterfaceType          Goto   447

-

-

-STATE 207 ----------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 209 240 245 287 304 305 447 522 526 549 572 

-  573 583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-OneDimLoop ::= TypeAnnotations  .LBRACKET RBRACKET 

-

-LBRACKET    Shift  448

-

-

-STATE 208 ----------------------------------------------------------------------

-( 26 85 89 91 96 203 204 209 287 304 447 526 549 572 573 583 591 593 635 644 

-  653 750 848 860 872 873 926 938 944 945 )

-

-OneDimLoop ::= LBRACKET  .RBRACKET 

-

-RBRACKET    Sh/Rd  654

-

-

-STATE 209 ----------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 240 245 287 304 305 447 522 526 549 572 573 

-  583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-Dims ::= DimsLoop . (651)

-DimsLoop ::= DimsLoop  .OneDimLoop 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 461

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-OneDimLoop                      Gt/Rd  653

-

-Identifier                      Reduce 651

-abstract                        Reduce 651

-default                         Reduce 651

-final                           Reduce 651

-instanceof                      Reduce 651

-native                          Reduce 651

-private                         Reduce 651

-protected                       Reduce 651

-public                          Reduce 651

-static                          Reduce 651

-strictfp                        Reduce 651

-synchronized                    Reduce 651

-this                            Reduce 651

-throws                          Reduce 651

-transient                       Reduce 651

-volatile                        Reduce 651

-aspect                          Reduce 651

-pointcut                        Reduce 651

-around                          Reduce 651

-before                          Reduce 651

-after                           Reduce 651

-declare                         Reduce 651

-privileged                      Reduce 651

-EQUAL_EQUAL                     Reduce 651

-NOT_EQUAL                       Reduce 651

-RIGHT_SHIFT                     Reduce 651

-UNSIGNED_RIGHT_SHIFT            Reduce 651

-OR_OR                           Reduce 651

-AND_AND                         Reduce 651

-XOR                             Reduce 651

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 462

-

-

-AND                             Reduce 651

-OR                              Reduce 651

-GREATER                         Reduce 651

-RPAREN                          Reduce 651

-LBRACE                          Reduce 651

-RBRACE                          Reduce 651

-RBRACKET                        Reduce 651

-SEMICOLON                       Reduce 651

-QUESTION                        Reduce 651

-COLON                           Reduce 651

-COMMA                           Reduce 651

-DOT                             Reduce 651

-EQUAL                           Reduce 651

-AT                              Reduce 651

-ELLIPSIS                        Reduce 651

-COLON_COLON                     Reduce 651

-ElidedSemicolonAndRightBrace    Reduce 651

-AT308DOTDOTDOT                  Reduce 651

-$eof                            Reduce 651

-

-Default reduction to rule  651

-

-

-STATE 210 ----------------------------------------------------------------------

-( 27 )

-

-ParenthesizedCastNameAndBounds ::= LPAREN CastNameAndBounds  .RPAREN 

-

-RPAREN    Sh/Rd  697

-

-

-STATE 211 ----------------------------------------------------------------------

-( 27 303 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-CastNameAndBounds ::= Name  .AdditionalBoundList 

-

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-DOT                    Shift  445

-AND                    Shift  450

-

-AdditionalBound        Goto   449

-AdditionalBoundList    Goto   449

-

-

-STATE 212 ----------------------------------------------------------------------

-( 27 60 149 206 217 220 222 254 260 293 303 350 355 494 504 592 674 711 746 

-  770 948 949 993 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 463

-

-

-Name ::= TypeAnnotations  .SimpleName 

-

-Identifier    Sh/Rd  85

-

-SimpleName    Gt/Rd  85

-

-

-STATE 213 ----------------------------------------------------------------------

-( 28 )

-

-LambdaParameterList ::= PushLPAREN FormalParameterListopt  .PushRPAREN 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  616

-

-

-STATE 214 ----------------------------------------------------------------------

-( 28 119 120 124 134 145 178 184 188 189 191 760 766 )

-

-FormalParameterList ::= FormalParameterList  .COMMA FormalParameter 

-FormalParameterListopt ::= FormalParameterList . (775)

-

-COMMA     Shift  451

-

-RPAREN    Reduce 775

-

-Default reduction to rule  775

-

-

-STATE 215 ----------------------------------------------------------------------

-( 28 )

-

-LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList  .PushRPAREN 

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList  .COMMA 

-                                  TypeElidedFormalParameter 

-

-PushRPAREN ::= .RPAREN 

-

-COMMA         Shift  452

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  617

-

-

-STATE 216 ----------------------------------------------------------------------

-( 28 )

-

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 464

-

-

-FormalParameter ::= Modifiersopt  .Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  454

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 465

-

-

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   453

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   453

-Type                              Goto   453

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 217 ----------------------------------------------------------------------

-( 29 219 225 336 867 )

-

-ClassHeaderImplements ::= implements  .InterfaceTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 466

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceTypeList ::= .InterfaceTypeList COMMA InterfaceType 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Gt/Rd  353

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-InterfaceType                 Goto   455

-InterfaceTypeList             Goto   455

-

-

-STATE 218 ----------------------------------------------------------------------

-( 30 )

-

-EnumBody ::= LBRACE  .EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .EnumConstants EnumBodyDeclarationsopt RBRACE 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 467

-

-

-Modifiersopt ::= .Modifiers 

-EnumConstants ::= .EnumConstants COMMA EnumConstant 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-EnumConstant ::= .EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= .EnumConstantHeader 

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-COMMA                      Shift  456

-SEMICOLON                  Shift  458

-AT                         Shift  136

-strictfp                   Shift  1064

-volatile                   Shift  1064

-transient                  Shift  1064

-synchronized               Shift  1064

-native                     Shift  1064

-final                      Shift  1064

-abstract                   Shift  1064

-static                     Shift  1064

-private                    Shift  1064

-protected                  Shift  1064

-public                     Shift  1064

-

-EnumConstantHeader         Goto   461

-Modifiersopt               Goto   460

-Modifier                   Goto   1064

-Modifiers                  Goto   137

-NormalAnnotation           Goto   1047

-MarkerAnnotation           Goto   1047

-SingleMemberAnnotation     Goto   1047

-AnnotationName             Goto   81

-SimpleModifier             Goto   1064

-Annotation                 Gt/Rd  171

-EnumConstantHeaderName     Goto   177

-EnumConstant               Goto   459

-EnumConstants              Goto   459

-EnumDeclarations           Goto   457

-EnumBodyDeclarationsopt    Goto   457

-

-RBRACE                     Reduce 807

-Identifier                 Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 468

-

-

-

-Default reduction to rule  807

-

-

-STATE 219 ----------------------------------------------------------------------

-( 31 )

-

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt  .

-                                    ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  948

-ClassHeaderImplementsopt    Gt/Rd  948

-

-abstract                    Reduce 776

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 220 ----------------------------------------------------------------------

-( 31 36 125 764 )

-

-ClassHeaderExtends ::= extends  .ClassType 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 469

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Gt/Rd  349

-ClassType                     Gt/Rd  349

-

-

-STATE 221 ----------------------------------------------------------------------

-( 32 )

-

-AnnotationTypeBody ::= LBRACE  .AnnotationTypeMemberDeclarationsopt RBRACE 

-

-NestedType ::= . (780)

-AnnotationTypeMemberDeclarationsopt ::= . (951)

-AnnotationTypeMemberDeclarationsopt ::= .NestedType 

-                                        AnnotationTypeMemberDeclarations 

-

-NestedType                             Goto   463

-AnnotationTypeMemberDeclarationsopt    Goto   462

-

-RBRACE                                 Reduce 951

-Identifier                             Reduce 780

-abstract                               Reduce 780

-boolean                                Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 470

-

-

-byte                                   Reduce 780

-char                                   Reduce 780

-class                                  Reduce 780

-double                                 Reduce 780

-enum                                   Reduce 780

-final                                  Reduce 780

-float                                  Reduce 780

-int                                    Reduce 780

-interface                              Reduce 780

-long                                   Reduce 780

-native                                 Reduce 780

-private                                Reduce 780

-protected                              Reduce 780

-public                                 Reduce 780

-short                                  Reduce 780

-static                                 Reduce 780

-strictfp                               Reduce 780

-synchronized                           Reduce 780

-transient                              Reduce 780

-void                                   Reduce 780

-volatile                               Reduce 780

-aspect                                 Reduce 780

-privileged                             Reduce 780

-LESS                                   Reduce 780

-SEMICOLON                              Reduce 780

-AT                                     Reduce 780

-AT308                                  Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 222 ----------------------------------------------------------------------

-( 33 )

-

-InterfaceHeaderExtends ::= extends  .InterfaceTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 471

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceTypeList ::= .InterfaceTypeList COMMA InterfaceType 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Gt/Rd  353

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-InterfaceType                 Goto   464

-InterfaceTypeList             Goto   464

-

-

-STATE 223 ----------------------------------------------------------------------

-( 34 38 121 127 128 133 138 143 179 192 194 470 651 732 763 767 798 851 )

-

-TypeParameters ::= LESS  .TypeParameterList1 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameterHeader ::= .TypeAnnotationsopt JavaIdentifier 

-TypeParameterList ::= .TypeParameterList COMMA TypeParameter 

-TypeParameter ::= .TypeParameterHeader 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 472

-

-

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameterList1 ::= .TypeParameterList COMMA TypeParameter1 

-TypeParameter1 ::= .TypeParameterHeader GREATER 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType1 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType 

-                   AdditionalBoundList1 

-

-AT308                         Shift  22

-

-TypeParameterHeader           Goto   467

-TypeAnnotations               Goto   466

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   466

-TypeParameter                 Goto   465

-TypeParameterList             Goto   465

-TypeParameter1                Gt/Rd  858

-TypeParameterList1            Gt/Rd  858

-

-Identifier                    Reduce 92

-aspect                        Reduce 92

-pointcut                      Reduce 92

-around                        Reduce 92

-before                        Reduce 92

-after                         Reduce 92

-declare                       Reduce 92

-privileged                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 224 ----------------------------------------------------------------------

-( 35 )

-

-InterfaceBody ::= LBRACE  .InterfaceMemberDeclarationsopt RBRACE 

-

-InterfaceMemberDeclarationsopt ::= . (778)

-InterfaceMemberDeclarationsopt ::= .NestedType InterfaceMemberDeclarations 

-NestedType ::= . (780)

-

-NestedType                        Goto   469

-InterfaceMemberDeclarationsopt    Goto   468

-

-RBRACE                            Reduce 778

-Identifier                        Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 473

-

-

-abstract                          Reduce 780

-boolean                           Reduce 780

-byte                              Reduce 780

-char                              Reduce 780

-class                             Reduce 780

-default                           Reduce 780

-double                            Reduce 780

-enum                              Reduce 780

-final                             Reduce 780

-float                             Reduce 780

-int                               Reduce 780

-interface                         Reduce 780

-long                              Reduce 780

-native                            Reduce 780

-private                           Reduce 780

-protected                         Reduce 780

-public                            Reduce 780

-short                             Reduce 780

-static                            Reduce 780

-strictfp                          Reduce 780

-synchronized                      Reduce 780

-transient                         Reduce 780

-void                              Reduce 780

-volatile                          Reduce 780

-aspect                            Reduce 780

-pointcut                          Reduce 780

-privileged                        Reduce 780

-LESS                              Reduce 780

-LBRACE                            Reduce 780

-SEMICOLON                         Reduce 780

-AT                                Reduce 780

-AT308                             Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 225 ----------------------------------------------------------------------

-( 36 )

-

-ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt  .

-                ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  345

-ClassHeaderImplementsopt    Gt/Rd  345

-

-abstract                    Reduce 776

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 474

-

-

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 226 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 767 )

-

-EnumHeaderName ::= Modifiersopt enum  .JavaIdentifier 

-EnumHeaderName ::= Modifiersopt enum  .JavaIdentifier TypeParameters 

-

-Identifier              Shift  470

-declare                 Shift  470

-after                   Shift  470

-before                  Shift  470

-pointcut                Shift  470

-privileged              Shift  470

-aspect                  Shift  470

-around                  Shift  470

-

-AjSimpleNameNoAround    Goto   470

-AjSimpleName            Goto   470

-JavaIdentifier          Goto   470

-

-

-STATE 227 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 767 )

-

-InterfaceHeaderName1 ::= Modifiersopt interface  .JavaIdentifier 

-

-Identifier              Sh/Rd  438

-declare                 Sh/Rd  438

-after                   Sh/Rd  438

-before                  Sh/Rd  438

-pointcut                Sh/Rd  438

-privileged              Sh/Rd  438

-aspect                  Sh/Rd  438

-around                  Sh/Rd  438

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 475

-

-

-AjSimpleNameNoAround    Gt/Rd  438

-AjSimpleName            Gt/Rd  438

-JavaIdentifier          Gt/Rd  438

-

-

-STATE 228 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 )

-

-ClassHeaderName1 ::= Modifiersopt class  .JavaIdentifier 

-

-Identifier              Sh/Rd  348

-declare                 Sh/Rd  348

-after                   Sh/Rd  348

-before                  Sh/Rd  348

-pointcut                Sh/Rd  348

-privileged              Sh/Rd  348

-aspect                  Sh/Rd  348

-around                  Sh/Rd  348

-

-AjSimpleNameNoAround    Gt/Rd  348

-AjSimpleName            Gt/Rd  348

-JavaIdentifier          Gt/Rd  348

-

-

-STATE 229 ----------------------------------------------------------------------

-( 39 678 762 971 972 )

-

-ClassBody ::= LBRACE  .ClassBodyDeclarationsopt RBRACE 

-

-ClassBodyDeclarationsopt ::= . (762)

-ClassBodyDeclarationsopt ::= .NestedType ClassBodyDeclarations 

-NestedType ::= . (780)

-

-NestedType                  Goto   472

-ClassBodyDeclarationsopt    Goto   471

-

-RBRACE                      Reduce 762

-Identifier                  Reduce 780

-abstract                    Reduce 780

-boolean                     Reduce 780

-byte                        Reduce 780

-char                        Reduce 780

-class                       Reduce 780

-default                     Reduce 780

-double                      Reduce 780

-enum                        Reduce 780

-final                       Reduce 780

-float                       Reduce 780

-int                         Reduce 780

-interface                   Reduce 780

-long                        Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 476

-

-

-native                      Reduce 780

-private                     Reduce 780

-protected                   Reduce 780

-public                      Reduce 780

-short                       Reduce 780

-static                      Reduce 780

-strictfp                    Reduce 780

-synchronized                Reduce 780

-transient                   Reduce 780

-void                        Reduce 780

-volatile                    Reduce 780

-aspect                      Reduce 780

-pointcut                    Reduce 780

-privileged                  Reduce 780

-LESS                        Reduce 780

-LBRACE                      Reduce 780

-SEMICOLON                   Reduce 780

-AT                          Reduce 780

-AT308                       Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 230 ----------------------------------------------------------------------

-( 40 )

-

-TryStatementWithResources ::= try ResourceSpecification  .TryBlock Catchesopt 

-TryStatementWithResources ::= try ResourceSpecification  .TryBlock Catchesopt 

-                              Finally 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-TryBlock ::= .Block ExitTryBlock 

-

-OpenBlock    Goto   70

-Block        Goto   232

-TryBlock     Goto   473

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 231 ----------------------------------------------------------------------

-( 40 )

-

-TryStatement ::= try TryBlock  .Catches 

-TryStatement ::= try TryBlock  .Catchesopt Finally 

-

-Catches ::= .CatchClause 

-Catches ::= .Catches CatchClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 477

-

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-Catchesopt ::= . (787)

-Catchesopt ::= .Catches 

-

-catch          Shift  475

-

-Catches        Goto   476

-CatchClause    Goto   1109

-Catchesopt     Goto   474

-

-finally        Reduce 787

-

-Default reduction to rule  787

-

-

-STATE 232 ----------------------------------------------------------------------

-( 40 230 )

-

-TryBlock ::= Block  .ExitTryBlock 

-

-ExitTryBlock ::= . (572)

-

-ExitTryBlock            Gt/Rd  571

-

-Identifier              Reduce 572

-abstract                Reduce 572

-assert                  Reduce 572

-boolean                 Reduce 572

-break                   Reduce 572

-byte                    Reduce 572

-case                    Reduce 572

-catch                   Reduce 572

-char                    Reduce 572

-class                   Reduce 572

-continue                Reduce 572

-default                 Reduce 572

-do                      Reduce 572

-double                  Reduce 572

-else                    Reduce 572

-enum                    Reduce 572

-false                   Reduce 572

-final                   Reduce 572

-finally                 Reduce 572

-float                   Reduce 572

-for                     Reduce 572

-if                      Reduce 572

-int                     Reduce 572

-interface               Reduce 572

-long                    Reduce 572

-native                  Reduce 572

-new                     Reduce 572

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 478

-

-

-null                    Reduce 572

-private                 Reduce 572

-protected               Reduce 572

-public                  Reduce 572

-return                  Reduce 572

-short                   Reduce 572

-static                  Reduce 572

-strictfp                Reduce 572

-super                   Reduce 572

-switch                  Reduce 572

-synchronized            Reduce 572

-this                    Reduce 572

-throw                   Reduce 572

-transient               Reduce 572

-true                    Reduce 572

-try                     Reduce 572

-void                    Reduce 572

-volatile                Reduce 572

-while                   Reduce 572

-aspect                  Reduce 572

-pointcut                Reduce 572

-around                  Reduce 572

-before                  Reduce 572

-after                   Reduce 572

-declare                 Reduce 572

-privileged              Reduce 572

-IntegerLiteral          Reduce 572

-LongLiteral             Reduce 572

-FloatingPointLiteral    Reduce 572

-DoubleLiteral           Reduce 572

-CharacterLiteral        Reduce 572

-StringLiteral           Reduce 572

-PLUS_PLUS               Reduce 572

-MINUS_MINUS             Reduce 572

-LESS                    Reduce 572

-LPAREN                  Reduce 572

-LBRACE                  Reduce 572

-RBRACE                  Reduce 572

-SEMICOLON               Reduce 572

-AT                      Reduce 572

-BeginLambda             Reduce 572

-AT308                   Reduce 572

-$eof                    Reduce 572

-

-Default reduction to rule  572

-

-

-STATE 233 ----------------------------------------------------------------------

-( 40 )

-

-ResourceSpecification ::= LPAREN  .Resources ;opt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 479

-

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-Resources ::= .Resource 

-Resources ::= .Resources TrailingSemiColon Resource 

-Resource ::= .Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Resource ::= .Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 480

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Shift  478

-volatile                          Shift  478

-transient                         Shift  478

-synchronized                      Shift  478

-native                            Shift  478

-final                             Shift  478

-abstract                          Shift  478

-static                            Shift  478

-private                           Shift  478

-protected                         Shift  478

-public                            Shift  478

-AT                                Shift  136

-

-Type                              Goto   479

-Modifiers                         Goto   478

-SimpleModifier                    Goto   478

-Annotation                        Gt/Rd  171

-AnnotationName                    Goto   81

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-Modifier                          Goto   478

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   479

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   479

-Resource                          Gt/Rd  566

-Resources                         Goto   477

-

-boolean                           Reduce 92

-byte                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 481

-

-

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 234 ----------------------------------------------------------------------

-( 41 )

-

-ThrowStatement ::= throw Expression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  556

-

-

-STATE 235 ----------------------------------------------------------------------

-( 42 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN  .Expression RPAREN Block 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 482

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 483

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 484

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 485

-

-

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 486

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 487

-

-

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   480

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 236 ----------------------------------------------------------------------

-( 43 )

-

-ReturnStatement ::= return Expressionopt  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  555

-

-

-STATE 237 ----------------------------------------------------------------------

-( 44 )

-

-ContinueStatement ::= continue Identifier  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  554

-

-

-STATE 238 ----------------------------------------------------------------------

-( 45 )

-

-BreakStatement ::= break Identifier  .SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 488

-

-

-

-SEMICOLON    Sh/Rd  552

-

-

-STATE 239 ----------------------------------------------------------------------

-( 46 )

-

-DoStatement ::= do Statement  .while LPAREN Expression RPAREN SEMICOLON 

-

-while    Shift  481

-

-

-STATE 240 ----------------------------------------------------------------------

-( 46 76 275 724 725 842 919 923 1011 1012 1013 1033 1036 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 489

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  290

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-LPAREN                        Reduce 68

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 241 ----------------------------------------------------------------------

-( 47 )

-

-SwitchStatement ::= switch LPAREN  .Expression RPAREN OpenBlock SwitchBlock 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 490

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 491

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 492

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 493

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 494

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 495

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   482

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 496

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 242 ----------------------------------------------------------------------

-( 48 )

-

-PreDecrementExpression ::= MINUS_MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 497

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 498

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 499

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 500

-

-

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  684

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  684

-PreDecrementExpression                  Gt/Rd  684

-UnaryExpressionNotPlusMinus             Gt/Rd  684

-UnaryExpression                         Gt/Rd  684

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 501

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 243 ----------------------------------------------------------------------

-( 49 )

-

-PreIncrementExpression ::= PLUS_PLUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 502

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 503

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 504

-

-

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 505

-

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  683

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  683

-PreDecrementExpression                  Gt/Rd  683

-UnaryExpressionNotPlusMinus             Gt/Rd  683

-UnaryExpression                         Gt/Rd  683

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 506

-

-

-

-Default reduction to rule  92

-

-

-STATE 244 ----------------------------------------------------------------------

-( 54 102 )

-

-PrimaryNoNewArray ::= PushLPAREN Expression_NotName  .PushRPAREN 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  584

-

-

-STATE 245 ----------------------------------------------------------------------

-( 54 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushRPAREN ::= .RPAREN 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 507

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LESS                          Shift  369

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-RPAREN                        Sh/Rd  578

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-PushRPAREN                    Gt/Rd  585

-Dimsopt                       Goto   289

-

-instanceof                    Reduce 68

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 508

-

-

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-LPAREN                        Reduce 68

-QUESTION                      Reduce 68

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 246 ----------------------------------------------------------------------

-( 54 102 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-

-QUESTION                      Shift  382

-OR_OR                         Shift  383

-AND_AND                       Shift  384

-OR                            Shift  385

-XOR                           Shift  386

-AND                           Shift  387

-NOT_EQUAL                     Shift  388

-EQUAL_EQUAL                   Shift  389

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 509

-

-

-instanceof                    Shift  390

-GREATER_EQUAL                 Shift  391

-LESS_EQUAL                    Shift  392

-GREATER                       Shift  393

-UNSIGNED_RIGHT_SHIFT          Shift  394

-RIGHT_SHIFT                   Shift  395

-LEFT_SHIFT                    Shift  396

-MINUS                         Shift  397

-PLUS                          Shift  398

-REMAINDER                     Shift  399

-DIVIDE                        Shift  400

-MULTIPLY                      Shift  401

-LPAREN                        Shift  251

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-EQUAL                         Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 247 ----------------------------------------------------------------------

-( 55 )

-

-LambdaParameters ::= BeginLambda NestedLambda  .LambdaParameterList 

-

-PushLPAREN ::= .LPAREN 

-LambdaParameterList ::= .PushLPAREN FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= .PushLPAREN TypeElidedFormalParameterList PushRPAREN 

-

-LPAREN                 Sh/Rd  577

-

-PushLPAREN             Goto   28

-LambdaParameterList    Gt/Rd  614

-

-

-STATE 248 ----------------------------------------------------------------------

-( 56 )

-

-LambdaExpression ::= LambdaParameters ARROW  .LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 510

-

-

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-LambdaBody ::= .ElidedLeftBraceAndReturn Expression 

-               ElidedSemicolonAndRightBrace 

-ElidedLeftBraceAndReturn ::= . (623)

-

-OpenBlock                   Goto   70

-ElidedLeftBraceAndReturn    Goto   484

-Block                       Gt/Rd  611

-LambdaBody                  Gt/Rd  611

-

-LBRACE                      Reduce 467

-Identifier                  Reduce 623

-boolean                     Reduce 623

-byte                        Reduce 623

-char                        Reduce 623

-double                      Reduce 623

-false                       Reduce 623

-float                       Reduce 623

-int                         Reduce 623

-long                        Reduce 623

-new                         Reduce 623

-null                        Reduce 623

-short                       Reduce 623

-super                       Reduce 623

-this                        Reduce 623

-true                        Reduce 623

-void                        Reduce 623

-aspect                      Reduce 623

-pointcut                    Reduce 623

-around                      Reduce 623

-before                      Reduce 623

-after                       Reduce 623

-declare                     Reduce 623

-privileged                  Reduce 623

-IntegerLiteral              Reduce 623

-LongLiteral                 Reduce 623

-FloatingPointLiteral        Reduce 623

-DoubleLiteral               Reduce 623

-CharacterLiteral            Reduce 623

-StringLiteral               Reduce 623

-PLUS_PLUS                   Reduce 623

-MINUS_MINUS                 Reduce 623

-PLUS                        Reduce 623

-MINUS                       Reduce 623

-NOT                         Reduce 623

-TWIDDLE                     Reduce 623

-LPAREN                      Reduce 623

-BeginLambda                 Reduce 623

-BeginIntersectionCast       Reduce 623

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 511

-

-

-AT308                       Reduce 623

-

-Default reduction to rule  623

-

-

-STATE 249 ----------------------------------------------------------------------

-( 57 )

-

-ArrayAccess ::= AjName LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 512

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 513

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 514

-

-

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 515

-

-

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 516

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 517

-

-

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   485

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 250 ----------------------------------------------------------------------

-( 57 283 )

-

-AjQualifiedName ::= AjName DOT  .SimpleNameOrAj 

-

-Identifier              Sh/Rd  81

-around                  Sh/Rd  81

-declare                 Sh/Rd  81

-after                   Sh/Rd  81

-before                  Sh/Rd  81

-pointcut                Sh/Rd  81

-privileged              Sh/Rd  81

-aspect                  Sh/Rd  81

-

-AjSimpleNameNoAround    Gt/Rd  81

-AjSimpleName            Gt/Rd  81

-SimpleName              Gt/Rd  81

-SimpleNameOrAj          Gt/Rd  81

-

-

-STATE 251 ----------------------------------------------------------------------

-( 58 171 246 )

-

-MethodInvocation ::= NameOrAj LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 518

-

-

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 519

-

-

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 520

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 521

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 522

-

-

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 523

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   486

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 524

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 252 ----------------------------------------------------------------------

-( 59 )

-

-FieldAccess ::= QualifiedSuperReceiver DOT  .Identifier 

-MethodInvocation ::= QualifiedSuperReceiver DOT  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT  .OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-JavaIdentifier ::= .Identifier 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier              Shift  490

-declare                 Shift  489

-after                   Shift  489

-before                  Shift  489

-pointcut                Shift  489

-privileged              Shift  489

-aspect                  Shift  489

-around                  Shift  489

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   489

-AjSimpleName            Goto   489

-JavaIdentifier          Goto   489

-OnlyTypeArguments       Goto   488

-

-

-STATE 253 ----------------------------------------------------------------------

-( 59 )

-

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON  .

-                        NonWildTypeArgumentsopt Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   491

-NonWildTypeArgumentsopt    Goto   491

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 254 ----------------------------------------------------------------------

-( 60 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 525

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   492

-ClassType                     Goto   492

-

-

-STATE 255 ----------------------------------------------------------------------

-( 60 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 526

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   493

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 256 ----------------------------------------------------------------------

-( 60 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-ClassOrInterface ::= Name . (57)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT             Shift  445

-

-Identifier      Reduce 57

-abstract        Reduce 57

-final           Reduce 57

-implements      Reduce 57

-native          Reduce 57

-private         Reduce 57

-protected       Reduce 57

-public          Reduce 57

-static          Reduce 57

-strictfp        Reduce 57

-synchronized    Reduce 57

-transient       Reduce 57

-volatile        Reduce 57

-AND             Reduce 57

-LESS            Reduce 57

-LPAREN          Reduce 57

-RPAREN          Reduce 57

-LBRACE          Reduce 57

-LBRACKET        Reduce 57

-SEMICOLON       Reduce 57

-COLON           Reduce 57

-COMMA           Reduce 57

-AT              Reduce 57

-COLON_COLON     Reduce 57

-AT308           Reduce 57

-$eof            Reduce 57

-

-Default reduction to rule  57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 527

-

-

-

-

-STATE 257 ----------------------------------------------------------------------

-( 60 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-

-DOT             Shift  494

-

-Identifier      Reduce 56

-abstract        Reduce 56

-final           Reduce 56

-implements      Reduce 56

-native          Reduce 56

-private         Reduce 56

-protected       Reduce 56

-public          Reduce 56

-static          Reduce 56

-strictfp        Reduce 56

-synchronized    Reduce 56

-transient       Reduce 56

-volatile        Reduce 56

-AND             Reduce 56

-LPAREN          Reduce 56

-RPAREN          Reduce 56

-LBRACE          Reduce 56

-LBRACKET        Reduce 56

-SEMICOLON       Reduce 56

-COLON           Reduce 56

-COMMA           Reduce 56

-AT              Reduce 56

-COLON_COLON     Reduce 56

-AT308           Reduce 56

-$eof            Reduce 56

-

-Default reduction to rule  56

-

-

-STATE 258 ----------------------------------------------------------------------

-( 61 )

-

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType  .DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 528

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   495

-

-LBRACKET                      Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 259 ----------------------------------------------------------------------

-( 61 )

-

-ClassInstanceCreationExpression ::= new ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   497

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 260 ----------------------------------------------------------------------

-( 61 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 529

-

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   498

-ClassType                     Goto   498

-

-

-STATE 261 ----------------------------------------------------------------------

-( 61 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 530

-

-

-ClassType ::= ClassOrInterfaceType . (66)

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType  .

-                                      DimWithOrWithOutExprs ArrayInitializer 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   499

-

-LPAREN                        Reduce 66

-LBRACKET                      Reduce 92

-

-Default reduction to rule  66

-

-

-STATE 262 ----------------------------------------------------------------------

-( 62 )

-

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET  .Expression 

-                RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 531

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 532

-

-

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 533

-

-

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 534

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 535

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 536

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   500

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 537

-

-

-

-Default reduction to rule  92

-

-

-STATE 263 ----------------------------------------------------------------------

-( 63 )

-

-ArrayAccess ::= PrimaryNoNewArray LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 538

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 539

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 540

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 541

-

-

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 542

-

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 543

-

-

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   501

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 264 ----------------------------------------------------------------------

-( 64 116 )

-

-Assignment ::= PostfixExpression AssignmentOperator  .AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator  .

-                                       ArrayInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 544

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 545

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 546

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 547

-

-

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1120

-true                                    Shift  1120

-null                                    Shift  1120

-StringLiteral                           Shift  1120

-CharacterLiteral                        Shift  1120

-DoubleLiteral                           Shift  1120

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 548

-

-

-FloatingPointLiteral                    Shift  1120

-LongLiteral                             Shift  1120

-IntegerLiteral                          Shift  1120

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1121

-PreDecrementExpression                  Goto   1121

-UnaryExpressionNotPlusMinus             Goto   1121

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1130

-PostDecrementExpression                 Goto   1129

-PostfixExpression                       Goto   116

-Literal                                 Goto   1120

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1128

-FieldAccess                             Goto   1127

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1126

-ArrayAccess                             Goto   1125

-LambdaExpression                        Goto   1124

-ReferenceExpression                     Goto   1123

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 549

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1120

-ArrayCreationWithoutArrayInitializer    Goto   1122

-CastExpression                          Goto   1121

-UnaryExpression                         Goto   1121

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Gt/Rd  739

-Assignment                              Gt/Rd  739

-AssignmentExpression                    Gt/Rd  739

-ArrayInitializer                        Gt/Rd  740

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 265 ----------------------------------------------------------------------

-( 65 100 157 )

-

-ReferenceExpression ::= Primary COLON_COLON  .NonWildTypeArgumentsopt 

-                        Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   502

-NonWildTypeArgumentsopt    Goto   502

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 266 ----------------------------------------------------------------------

-( 65 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 550

-

-

-ExplicitConstructorInvocation ::= Primary DOT  .super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ClassInstanceCreationExpression ::= Primary DOT  .new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT  .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary DOT  .JavaIdentifier 

-MethodInvocation ::= Primary DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                     Shift  504

-this                    Shift  505

-super                   Shift  507

-LESS                    Shift  25

-Identifier              Shift  503

-declare                 Shift  503

-after                   Shift  503

-before                  Shift  503

-pointcut                Shift  503

-privileged              Shift  503

-aspect                  Shift  503

-around                  Shift  503

-

-AjSimpleNameNoAround    Goto   503

-AjSimpleName            Goto   503

-OnlyTypeArguments       Goto   506

-JavaIdentifier          Goto   503

-

-

-STATE 267 ----------------------------------------------------------------------

-( 66 97 )

-

-FieldAccess ::= super DOT  .JavaIdentifier 

-MethodInvocation ::= super DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= super DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 551

-

-

-

-Identifier              Shift  509

-declare                 Shift  509

-after                   Shift  509

-before                  Shift  509

-pointcut                Shift  509

-privileged              Shift  509

-aspect                  Shift  509

-around                  Shift  509

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   509

-AjSimpleName            Goto   509

-JavaIdentifier          Goto   509

-OnlyTypeArguments       Goto   508

-

-

-STATE 268 ----------------------------------------------------------------------

-( 66 97 )

-

-ReferenceExpression ::= super COLON_COLON  .NonWildTypeArgumentsopt Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   510

-NonWildTypeArgumentsopt    Goto   510

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 269 ----------------------------------------------------------------------

-( 66 )

-

-ExplicitConstructorInvocation ::= super LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 552

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 553

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 554

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 555

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 556

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 557

-

-

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   511

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 558

-

-

-

-Default reduction to rule  92

-

-

-STATE 270 ----------------------------------------------------------------------

-( 67 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  512

-

-

-STATE 271 ----------------------------------------------------------------------

-( 67 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  513

-

-

-STATE 272 ----------------------------------------------------------------------

-( 68 )

-

-ExplicitConstructorInvocation ::= this LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 559

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 560

-

-

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 561

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 562

-

-

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 563

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 564

-

-

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   514

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 273 ----------------------------------------------------------------------

-( 70 )

-

-Block ::= OpenBlock LBRACE  .BlockStatementsopt RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 565

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 566

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 567

-

-

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 568

-

-

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 569

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 570

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 571

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 572

-

-

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 573

-

-

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 574

-

-

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Goto   515

-

-RBRACE                                  Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 274 ----------------------------------------------------------------------

-( 71 )

-

-AssertStatement ::= assert Expression  .SEMICOLON 

-AssertStatement ::= assert Expression  .COLON Expression SEMICOLON 

-

-COLON        Shift  516

-SEMICOLON    Sh/Rd  549

-

-

-STATE 275 ----------------------------------------------------------------------

-( 72 )

-

-LabeledStatement ::= Label COLON  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 575

-

-

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 576

-

-

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 577

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 578

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 579

-

-

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  512

-Block                                   Gt/Rd  512

-EmptyStatement                          Gt/Rd  512

-ExpressionStatement                     Gt/Rd  512

-SwitchStatement                         Gt/Rd  512

-DoStatement                             Gt/Rd  512

-BreakStatement                          Gt/Rd  512

-ContinueStatement                       Gt/Rd  512

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 580

-

-

-ReturnStatement                         Gt/Rd  512

-SynchronizedStatement                   Gt/Rd  512

-ThrowStatement                          Gt/Rd  512

-TryStatement                            Gt/Rd  512

-TryStatementWithResources               Gt/Rd  512

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 581

-

-

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  512

-LabeledStatement                        Gt/Rd  512

-IfThenStatement                         Gt/Rd  512

-IfThenElseStatement                     Gt/Rd  512

-WhileStatement                          Gt/Rd  512

-ForStatement                            Gt/Rd  512

-EnhancedForStatement                    Gt/Rd  512

-Statement                               Gt/Rd  512

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 276 ----------------------------------------------------------------------

-( 74 )

-

-IfThenStatement ::= if LPAREN  .Expression RPAREN Statement 

-IfThenElseStatement ::= if LPAREN  .Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 582

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 583

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 584

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 585

-

-

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 586

-

-

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 587

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   517

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 277 ----------------------------------------------------------------------

-( 75 )

-

-WhileStatement ::= while LPAREN  .Expression RPAREN Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 588

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 589

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 590

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 591

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 592

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 593

-

-

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   518

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 278 ----------------------------------------------------------------------

-( 77 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 594

-

-

-ForStatement ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 595

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForInit ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 596

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 597

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForInitopt ::= . (781)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 598

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-AT                                      Shift  136

-strictfp                                Shift  521

-volatile                                Shift  521

-transient                               Shift  521

-synchronized                            Shift  521

-native                                  Shift  521

-final                                   Shift  521

-abstract                                Shift  521

-static                                  Shift  521

-private                                 Shift  521

-protected                               Shift  521

-public                                  Shift  521

-

-StatementExpressionList                 Goto   523

-LocalVariableDeclaration                Goto   519

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   520

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-Name                                    Goto   522

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   520

-Modifier                                Goto   521

-Modifiers                               Goto   521

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   521

-Annotation                              Gt/Rd  171

-Type                                    Goto   520

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 599

-

-

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1131

-ForInit                                 Goto   519

-ForInitopt                              Goto   519

-

-SEMICOLON                               Reduce 781

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 279 ----------------------------------------------------------------------

-( 78 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 600

-

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON  .

-                               Expression RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 601

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 602

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 603

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 604

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 605

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   524

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 606

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 280 ----------------------------------------------------------------------

-( 79 )

-

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   525

-VariableDeclarators     Goto   525

-

-

-STATE 281 ----------------------------------------------------------------------

-( 80 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader  .interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader  .interface 

-                                        JavaIdentifier 

-

-interface    Shift  528

-

-

-STATE 282 ----------------------------------------------------------------------

-( 80 136 286 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 607

-

-

-UnannotatableNameOrAj ::= UnannotatableName . (83)

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-

-DOT             Shift  436

-

-Identifier      Reduce 83

-abstract        Reduce 83

-boolean         Reduce 83

-byte            Reduce 83

-char            Reduce 83

-class           Reduce 83

-default         Reduce 83

-double          Reduce 83

-enum            Reduce 83

-final           Reduce 83

-float           Reduce 83

-int             Reduce 83

-interface       Reduce 83

-long            Reduce 83

-native          Reduce 83

-package         Reduce 83

-private         Reduce 83

-protected       Reduce 83

-public          Reduce 83

-short           Reduce 83

-static          Reduce 83

-strictfp        Reduce 83

-synchronized    Reduce 83

-transient       Reduce 83

-void            Reduce 83

-volatile        Reduce 83

-aspect          Reduce 83

-pointcut        Reduce 83

-around          Reduce 83

-before          Reduce 83

-after           Reduce 83

-privileged      Reduce 83

-LESS            Reduce 83

-LPAREN          Reduce 83

-RPAREN          Reduce 83

-RBRACE          Reduce 83

-SEMICOLON       Reduce 83

-COMMA           Reduce 83

-AT              Reduce 83

-AT308           Reduce 83

-$eof            Reduce 83

-

-Default reduction to rule  83

-

-

-STATE 283 ----------------------------------------------------------------------

-( 80 136 286 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 608

-

-

-AjQualifiedName ::= AjName  .DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= AjName . (82)

-

-DOT             Shift  250

-

-Identifier      Reduce 82

-abstract        Reduce 82

-boolean         Reduce 82

-byte            Reduce 82

-char            Reduce 82

-class           Reduce 82

-default         Reduce 82

-double          Reduce 82

-enum            Reduce 82

-final           Reduce 82

-float           Reduce 82

-int             Reduce 82

-interface       Reduce 82

-long            Reduce 82

-native          Reduce 82

-package         Reduce 82

-private         Reduce 82

-protected       Reduce 82

-public          Reduce 82

-short           Reduce 82

-static          Reduce 82

-strictfp        Reduce 82

-synchronized    Reduce 82

-transient       Reduce 82

-void            Reduce 82

-volatile        Reduce 82

-aspect          Reduce 82

-pointcut        Reduce 82

-around          Reduce 82

-before          Reduce 82

-after           Reduce 82

-privileged      Reduce 82

-LESS            Reduce 82

-LPAREN          Reduce 82

-RPAREN          Reduce 82

-RBRACE          Reduce 82

-SEMICOLON       Reduce 82

-COMMA           Reduce 82

-AT              Reduce 82

-AT308           Reduce 82

-$eof            Reduce 82

-

-Default reduction to rule  82

-

-

-STATE 284 ----------------------------------------------------------------------

-( 81 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 609

-

-

-NormalAnnotation ::= AnnotationName LPAREN  .MemberValuePairsopt RPAREN 

-SingleMemberAnnotation ::= AnnotationName LPAREN  .

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-SimpleNameOrAj ::= .AjSimpleName 

-SimpleNameOrAj ::= .SimpleName 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 610

-

-

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 611

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 612

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 613

-

-

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValuePairsopt ::= . (970)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 614

-

-

-MemberValuePairsopt ::= .MemberValuePairs 

-MemberValuePairs ::= .MemberValuePair 

-MemberValuePairs ::= .MemberValuePairs COMMA MemberValuePair 

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-MemberValue ::= .ConditionalExpression_NotName 

-MemberValue ::= .NameOrAj 

-MemberValue ::= .Annotation 

-MemberValue ::= .MemberValueArrayInitializer 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotationMemberValue ::= .MemberValue 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1098

-declare                                 Shift  1098

-after                                   Shift  1098

-before                                  Shift  1098

-pointcut                                Shift  1098

-privileged                              Shift  1098

-aspect                                  Shift  1098

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1097

-true                                    Shift  1097

-null                                    Shift  1097

-StringLiteral                           Shift  1097

-CharacterLiteral                        Shift  1097

-DoubleLiteral                           Shift  1097

-FloatingPointLiteral                    Shift  1097

-LongLiteral                             Shift  1097

-IntegerLiteral                          Shift  1097

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 615

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   1108

-NameOrAj                                Goto   171

-Annotation                              Goto   1108

-MemberValueArrayInitializer             Goto   1108

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1108

-MarkerAnnotation                        Goto   1108

-SingleMemberAnnotation                  Goto   1108

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1100

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1100

-CastExpression                          Goto   1100

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1107

-BooleanLiteral                          Goto   1097

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Goto   442

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Goto   441

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 616

-

-

-Literal                                 Goto   1097

-ClassInstanceCreationExpression         Goto   1106

-FieldAccess                             Goto   1105

-MethodInvocation                        Goto   1104

-ArrayAccess                             Goto   1103

-LambdaExpression                        Goto   1102

-ReferenceExpression                     Goto   1101

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1100

-PreDecrementExpression                  Goto   1100

-UnaryExpressionNotPlusMinus_NotName     Goto   1100

-MemberValue                             Gt/Rd  989

-MemberValuePair                         Goto   1099

-MemberValuePairs                        Goto   440

-AjSimpleNameNoAround                    Goto   1098

-SimpleNameOrAj                          Goto   439

-MemberValuePairsopt                     Goto   530

-SingleMemberAnnotationMemberValue       Goto   529

-

-RPAREN                                  Reduce 970

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 285 ----------------------------------------------------------------------

-( 83 )

-

-LocalVariableDeclaration ::= Modifiers Type  .PushRealModifiers 

-                             VariableDeclarators 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   531

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 617

-

-

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 286 ----------------------------------------------------------------------

-( 83 126 144 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT  .PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT  .PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushRealModifiers ::= . (484)

-

-Identifier               Shift  1092

-around                   Shift  1051

-declare                  Shift  1051

-after                    Shift  1051

-before                   Shift  1051

-pointcut                 Shift  1051

-privileged               Shift  1051

-aspect                   Shift  1051

-

-AjSimpleName             Gt/Rd  71

-AjQualifiedName          Gt/Rd  72

-AjName                   Goto   283

-AjSimpleNameNoAround     Goto   1051

-SimpleName               Goto   1092

-UnannotatableName        Goto   282

-PushRealModifiers        Goto   532

-UnannotatableNameOrAj    Gt/Rd  968

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 618

-

-

-

-interface                Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 287 ----------------------------------------------------------------------

-( 83 121 133 138 143 173 179 192 194 216 233 331 334 339 351 409 424 430 478 

-  521 632 691 767 871 878 )

-

-Type ::= PrimitiveType . (39)

-ArrayType ::= PrimitiveType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  62

-

-Identifier                    Reduce 39

-this                          Reduce 39

-aspect                        Reduce 39

-pointcut                      Reduce 39

-around                        Reduce 39

-before                        Reduce 39

-after                         Reduce 39

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 619

-

-

-declare                       Reduce 39

-privileged                    Reduce 39

-OR                            Reduce 39

-ELLIPSIS                      Reduce 39

-AT308DOTDOTDOT                Reduce 39

-

-Default reduction to rule  39

-

-

-STATE 288 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-ReferenceExpression ::= Name BeginTypeArguments  .

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-ReferenceExpressionTypeArgumentsAndTrunk ::= .

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                         

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType Dimsopt 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                                         Shift  25

-

-OnlyTypeArguments                            Goto   26

-ReferenceExpressionTypeArgumentsAndTrunk0    Gt/Rd  598

-ReferenceExpressionTypeArgumentsAndTrunk     Goto   533

-

-

-STATE 289 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-ReferenceExpression ::= Name Dimsopt  .COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

-COLON_COLON    Shift  534

-

-

-STATE 290 ----------------------------------------------------------------------

-( 87 240 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name DOT  .super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT  .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT  .this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 620

-

-

-ExplicitConstructorInvocation ::= Name DOT  .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name DOT  .this 

-QualifiedSuperReceiver ::= Name DOT  .super 

-PrimaryNoNewArray ::= Name DOT  .class 

-ClassInstanceCreationExpressionName ::= Name DOT  .new 

-MethodInvocation ::= Name DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                           Sh/Rd  632

-class                         Sh/Rd  590

-this                          Shift  535

-super                         Shift  537

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-OnlyTypeArguments             Goto   536

-

-

-STATE 291 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 621

-

-

-OneDimLoop ::= LBRACKET  .RBRACKET 

-ArrayAccess ::= Name LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 622

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 623

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 624

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 625

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACKET                                Sh/Rd  654

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 626

-

-

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   539

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 627

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 292 ----------------------------------------------------------------------

-( 87 522 )

-

-ArrayType ::= Name Dims . (63)

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-Dimsopt ::= Dims . (769)

-

-DOT            Shift  540

-

-COLON_COLON    Reduce 769

-Identifier     Reduce 63

-aspect         Reduce 63

-pointcut       Reduce 63

-around         Reduce 63

-before         Reduce 63

-after          Reduce 63

-declare        Reduce 63

-privileged     Reduce 63

-GREATER        Reduce 63

-COMMA          Reduce 63

-

-Default reduction to rule  63

-

-

-STATE 293 ----------------------------------------------------------------------

-( 89 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 628

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 294 ----------------------------------------------------------------------

-( 90 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 629

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-TypeAnnotationsopt                Goto   205

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   202

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   201

-TypeArgument                      Goto   200

-TypeArgumentList                  Goto   200

-Wildcard                          Goto   200

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 630

-

-

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 295 ----------------------------------------------------------------------

-( 91 96 304 750 )

-

-PrimaryNoNewArray ::= PrimitiveType DOT  .class 

-

-class    Sh/Rd  593

-

-

-STATE 296 ----------------------------------------------------------------------

-( 91 750 )

-

-ArrayType ::= PrimitiveType Dims . (62)

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  542

-DOT            Shift  543

-

-Identifier     Reduce 62

-aspect         Reduce 62

-pointcut       Reduce 62

-around         Reduce 62

-before         Reduce 62

-after          Reduce 62

-declare        Reduce 62

-privileged     Reduce 62

-GREATER        Reduce 62

-COMMA          Reduce 62

-

-Default reduction to rule  62

-

-

-STATE 297 ----------------------------------------------------------------------

-( 94 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 631

-

-

-UnaryExpression ::= MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 632

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 633

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 634

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  681

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 635

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  681

-PreDecrementExpression                  Gt/Rd  681

-UnaryExpressionNotPlusMinus             Gt/Rd  681

-UnaryExpression                         Gt/Rd  681

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 298 ----------------------------------------------------------------------

-( 95 )

-

-UnaryExpression ::= PLUS PushPosition  .UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 636

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 637

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 638

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 639

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  680

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 640

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  680

-PreDecrementExpression                  Gt/Rd  680

-UnaryExpressionNotPlusMinus             Gt/Rd  680

-UnaryExpression                         Gt/Rd  680

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 299 ----------------------------------------------------------------------

-( 96 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 641

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  542

-DOT            Shift  543

-

-

-STATE 300 ----------------------------------------------------------------------

-( 99 163 245 305 522 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name DOT  .this 

-QualifiedSuperReceiver ::= Name DOT  .super 

-PrimaryNoNewArray ::= Name DOT  .class 

-ClassInstanceCreationExpressionName ::= Name DOT  .new 

-MethodInvocation ::= Name DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                           Sh/Rd  632

-class                         Sh/Rd  590

-super                         Sh/Rd  589

-this                          Sh/Rd  588

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 642

-

-

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-OnlyTypeArguments             Goto   544

-

-

-STATE 301 ----------------------------------------------------------------------

-( 99 163 240 245 )

-

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-Dimsopt ::= Dims . (769)

-

-DOT            Shift  540

-

-COLON_COLON    Reduce 769

-

-Default reduction to rule  769

-

-

-STATE 302 ----------------------------------------------------------------------

-( 100 157 )

-

-ClassInstanceCreationExpression ::= Primary DOT  .new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT  .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary DOT  .JavaIdentifier 

-MethodInvocation ::= Primary DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                     Shift  504

-Identifier              Shift  503

-declare                 Shift  503

-after                   Shift  503

-before                  Shift  503

-pointcut                Shift  503

-privileged              Shift  503

-aspect                  Shift  503

-around                  Shift  503

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   503

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 643

-

-

-AjSimpleName            Goto   503

-JavaIdentifier          Goto   503

-OnlyTypeArguments       Goto   545

-

-

-STATE 303 ----------------------------------------------------------------------

-( 101 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN  .CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CastNameAndBounds ::= .Name AdditionalBoundList 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   211

-Name                          Goto   211

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-CastNameAndBounds             Goto   546

-

-

-STATE 304 ----------------------------------------------------------------------

-( 102 )

-

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 644

-

-

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-CastExpression ::= PushLPAREN PrimitiveType  .Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   548

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   547

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 305 ----------------------------------------------------------------------

-( 102 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 645

-

-

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushRPAREN ::= .RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-OnlyTypeArgumentsForCastExpression ::= .OnlyTypeArguments 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-BeginTypeArguments                    Shift  288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 646

-

-

-DOT                                   Shift  300

-RPAREN                                Sh/Rd  578

-LBRACKET                              Shift  291

-AT308                                 Shift  22

-LESS                                  Shift  552

-

-OnlyTypeArguments                     Gt/Rd  699

-Dims                                  Goto   551

-OneDimLoop                            Goto   1079

-DimsLoop                              Goto   209

-TypeAnnotations0                      Goto   24

-NormalTypeAnnotation                  Gt/Rd  97

-MarkerTypeAnnotation                  Gt/Rd  98

-SingleMemberTypeAnnotation            Gt/Rd  99

-TypeAnnotationName                    Goto   23

-TypeAnnotation                        Goto   1037

-TypeAnnotations                       Goto   207

-PushRPAREN                            Goto   550

-Dimsopt                               Goto   289

-OnlyTypeArgumentsForCastExpression    Goto   549

-

-instanceof                            Reduce 68

-PLUS_PLUS                             Reduce 672

-MINUS_MINUS                           Reduce 672

-EQUAL_EQUAL                           Reduce 68

-LESS_EQUAL                            Reduce 68

-GREATER_EQUAL                         Reduce 68

-NOT_EQUAL                             Reduce 68

-LEFT_SHIFT                            Reduce 68

-RIGHT_SHIFT                           Reduce 68

-UNSIGNED_RIGHT_SHIFT                  Reduce 68

-PLUS_EQUAL                            Reduce 672

-MINUS_EQUAL                           Reduce 672

-MULTIPLY_EQUAL                        Reduce 672

-DIVIDE_EQUAL                          Reduce 672

-AND_EQUAL                             Reduce 672

-OR_EQUAL                              Reduce 672

-XOR_EQUAL                             Reduce 672

-REMAINDER_EQUAL                       Reduce 672

-LEFT_SHIFT_EQUAL                      Reduce 672

-RIGHT_SHIFT_EQUAL                     Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 672

-OR_OR                                 Reduce 68

-AND_AND                               Reduce 68

-PLUS                                  Reduce 68

-MINUS                                 Reduce 68

-REMAINDER                             Reduce 68

-XOR                                   Reduce 68

-AND                                   Reduce 68

-MULTIPLY                              Reduce 68

-OR                                    Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 647

-

-

-DIVIDE                                Reduce 68

-GREATER                               Reduce 68

-LPAREN                                Reduce 68

-QUESTION                              Reduce 68

-EQUAL                                 Reduce 672

-COLON_COLON                           Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 306 ----------------------------------------------------------------------

-( 103 )

-

-UnaryExpressionNotPlusMinus ::= NOT PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 648

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 649

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 650

-

-

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 651

-

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  687

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  687

-PreDecrementExpression                  Gt/Rd  687

-UnaryExpressionNotPlusMinus             Gt/Rd  687

-UnaryExpression                         Gt/Rd  687

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 652

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 307 ----------------------------------------------------------------------

-( 104 )

-

-UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 653

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 654

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 655

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 656

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  686

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  686

-PreDecrementExpression                  Gt/Rd  686

-UnaryExpressionNotPlusMinus             Gt/Rd  686

-UnaryExpression                         Gt/Rd  686

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 657

-

-

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 308 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression REMAINDER  .

-                             UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 658

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 659

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 660

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 661

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  707

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  707

-PreDecrementExpression                  Gt/Rd  707

-UnaryExpressionNotPlusMinus             Gt/Rd  707

-UnaryExpression                         Gt/Rd  707

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 662

-

-

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 309 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression DIVIDE  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 663

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 664

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 665

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 666

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  706

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  706

-PreDecrementExpression                  Gt/Rd  706

-UnaryExpressionNotPlusMinus             Gt/Rd  706

-UnaryExpression                         Gt/Rd  706

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 667

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 310 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression MULTIPLY  .

-                             UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 668

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 669

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 670

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 671

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  705

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  705

-PreDecrementExpression                  Gt/Rd  705

-UnaryExpressionNotPlusMinus             Gt/Rd  705

-UnaryExpression                         Gt/Rd  705

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 672

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 311 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 673

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 674

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 675

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 676

-

-

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 677

-

-

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   553

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 312 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 678

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 679

-

-

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 680

-

-

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 681

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 682

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   554

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 313 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression LEFT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 683

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 684

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 685

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 686

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 687

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   555

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 314 ----------------------------------------------------------------------

-( 107 553 554 555 604 605 606 624 625 626 )

-

-AdditiveExpression ::= AdditiveExpression MINUS  .MultiplicativeExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 688

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 689

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 690

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 691

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   556

-PreDecrementExpression                  Goto   556

-UnaryExpressionNotPlusMinus             Goto   556

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 692

-

-

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   556

-UnaryExpression                         Goto   556

-MultiplicativeExpression                Goto   556

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 315 ----------------------------------------------------------------------

-( 107 553 554 555 604 605 606 624 625 626 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 693

-

-

-AdditiveExpression ::= AdditiveExpression PLUS  .MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 694

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 695

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 696

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   557

-PreDecrementExpression                  Goto   557

-UnaryExpressionNotPlusMinus             Goto   557

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 697

-

-

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   557

-UnaryExpression                         Goto   557

-MultiplicativeExpression                Goto   557

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 316 ----------------------------------------------------------------------

-( 108 563 564 607 608 619 620 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 698

-

-

-InstanceofExpression ::= InstanceofExpression instanceof  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 699

-

-

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  721

-ReferenceType                     Gt/Rd  721

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 317 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression GREATER_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 700

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 701

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 702

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 703

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 704

-

-

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   558

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 318 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression LESS_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 705

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 706

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 707

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 708

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 709

-

-

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   559

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 710

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 319 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression GREATER  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 711

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 712

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 713

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 714

-

-

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 715

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   560

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 320 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 716

-

-

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 717

-

-

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 718

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 719

-

-

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 720

-

-

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   561

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 321 ----------------------------------------------------------------------

-( 110 566 609 617 )

-

-AndExpression ::= AndExpression AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 721

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 722

-

-

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 723

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 724

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 725

-

-

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 726

-

-

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   562

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 322 ----------------------------------------------------------------------

-( 111 562 610 618 )

-

-EqualityExpression ::= EqualityExpression NOT_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 727

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 728

-

-

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 729

-

-

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 730

-

-

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 731

-

-

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   563

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 323 ----------------------------------------------------------------------

-( 111 562 610 618 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 732

-

-

-EqualityExpression ::= EqualityExpression EQUAL_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 733

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 734

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 735

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 736

-

-

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 737

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   564

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 324 ----------------------------------------------------------------------

-( 112 569 611 615 )

-

-InclusiveOrExpression ::= InclusiveOrExpression OR  .ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 738

-

-

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 739

-

-

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 740

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 741

-

-

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 742

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   565

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 743

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 325 ----------------------------------------------------------------------

-( 113 565 612 616 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression XOR  .AndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 744

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 745

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 746

-

-

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 747

-

-

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 748

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   566

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 326 ----------------------------------------------------------------------

-( 114 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION  .Expression COLON 

-                          ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 749

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 750

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 751

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 752

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 753

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 754

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   567

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 755

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 327 ----------------------------------------------------------------------

-( 114 )

-

-ConditionalOrExpression ::= ConditionalOrExpression OR_OR  .

-                            ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 756

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 757

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 758

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 759

-

-

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 760

-

-

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   568

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 328 ----------------------------------------------------------------------

-( 115 568 614 630 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 761

-

-

-ConditionalAndExpression ::= ConditionalAndExpression AND_AND  .

-                             InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 762

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 763

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 764

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 765

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 766

-

-

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   569

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 329 ----------------------------------------------------------------------

-( 117 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace  .,opt RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace  .VariableInitializers RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace  .VariableInitializers COMMA RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 767

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-VariableInitializer ::= .Expression 

-VariableInitializer ::= .ArrayInitializer 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-VariableInitializers ::= .VariableInitializer 

-VariableInitializers ::= .VariableInitializers COMMA VariableInitializer 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 768

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 769

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 770

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 771

-

-

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-,opt ::= . (760)

-

-COMMA                                   Shift  570

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-Expression                              Goto   1230

-ArrayInitializer                        Goto   1230

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 772

-

-

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-VariableInitializer                     Gt/Rd  464

-VariableInitializers                    Goto   571

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 773

-

-

-,opt                                    Goto   570

-

-RBRACE                                  Reduce 760

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 330 ----------------------------------------------------------------------

-( 119 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   572

-

-

-STATE 331 ----------------------------------------------------------------------

-( 119 120 124 134 145 178 184 188 189 191 451 760 766 883 )

-

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 774

-

-

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   453

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   453

-Type                              Goto   453

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 775

-

-

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 332 ----------------------------------------------------------------------

-( 120 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt  .

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   573

-

-

-STATE 333 ----------------------------------------------------------------------

-( 121 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault Type  .Identifier LPAREN 

-

-Identifier    Shift  574

-

-

-STATE 334 ----------------------------------------------------------------------

-( 121 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                            Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 776

-

-

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   575

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   575

-Type                              Goto   575

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 777

-

-

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 335 ----------------------------------------------------------------------

-( 124 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   576

-

-

-STATE 336 ----------------------------------------------------------------------

-( 125 )

-

-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt  .

-                 ClassHeaderImplementsopt AspectHeaderRest 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Goto   577

-ClassHeaderImplementsopt    Goto   577

-

-Identifier                  Reduce 776

-LBRACE                      Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 337 ----------------------------------------------------------------------

-( 129 )

-

-AspectBody ::= LBRACE  .AspectBodyDeclarationsopt RBRACE 

-

-AspectBodyDeclarationsopt ::= . (198)

-AspectBodyDeclarationsopt ::= .NestedType AspectBodyDeclarations 

-NestedType ::= . (780)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 778

-

-

-NestedType                   Goto   579

-AspectBodyDeclarationsopt    Goto   578

-

-RBRACE                       Reduce 198

-Identifier                   Reduce 780

-abstract                     Reduce 780

-boolean                      Reduce 780

-byte                         Reduce 780

-char                         Reduce 780

-class                        Reduce 780

-double                       Reduce 780

-enum                         Reduce 780

-final                        Reduce 780

-float                        Reduce 780

-int                          Reduce 780

-interface                    Reduce 780

-long                         Reduce 780

-native                       Reduce 780

-private                      Reduce 780

-protected                    Reduce 780

-public                       Reduce 780

-short                        Reduce 780

-static                       Reduce 780

-strictfp                     Reduce 780

-synchronized                 Reduce 780

-transient                    Reduce 780

-void                         Reduce 780

-volatile                     Reduce 780

-aspect                       Reduce 780

-pointcut                     Reduce 780

-around                       Reduce 780

-before                       Reduce 780

-after                        Reduce 780

-declare                      Reduce 780

-privileged                   Reduce 780

-LESS                         Reduce 780

-LBRACE                       Reduce 780

-SEMICOLON                    Reduce 780

-AT                           Reduce 780

-AT308                        Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 338 ----------------------------------------------------------------------

-( 133 138 192 194 )

-

-ModifiersWithDefault ::= Modifiersopt default  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 779

-

-

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  396

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 780

-

-

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-LESS                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 339 ----------------------------------------------------------------------

-( 133 138 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters  .Type JavaIdentifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 781

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   580

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   580

-Type                              Goto   580

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 340 ----------------------------------------------------------------------

-( 133 )

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 782

-

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  583

-declare                 Shift  583

-after                   Shift  583

-before                  Shift  583

-pointcut                Shift  583

-privileged              Shift  583

-aspect                  Shift  583

-around                  Shift  583

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   583

-AjSimpleNameNoAround    Goto   583

-JavaIdentifier          Goto   583

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 341 ----------------------------------------------------------------------

-( 133 192 194 767 )

-

-PointcutHeader ::= Modifiersopt pointcut  .JavaIdentifier LPAREN 

-

-Identifier              Shift  584

-declare                 Shift  584

-after                   Shift  584

-before                  Shift  584

-pointcut                Shift  584

-privileged              Shift  584

-aspect                  Shift  584

-around                  Shift  584

-

-AjSimpleNameNoAround    Goto   584

-AjSimpleName            Goto   584

-JavaIdentifier          Goto   584

-

-

-STATE 342 ----------------------------------------------------------------------

-( 133 139 143 192 194 767 )

-

-AspectHeaderName2 ::= Modifiersopt privileged  .Modifiersopt aspect Identifier 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 783

-

-

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Goto   585

-

-aspect                    Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 343 ----------------------------------------------------------------------

-( 133 143 194 767 )

-

-AspectHeaderName1 ::= Modifiersopt aspect  .Identifier 

-ConstructorHeaderName ::= Modifiersopt aspect  .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 784

-

-

-

-LPAREN        Sh/Rd  403

-Identifier    Sh/Rd  190

-

-

-STATE 344 ----------------------------------------------------------------------

-( 133 138 143 194 767 )

-

-SimpleName ::= Identifier . (87)

-ConstructorHeaderName ::= Modifiersopt Identifier  .LPAREN 

-

-LPAREN        Sh/Rd  402

-

-Identifier    Reduce 84

-aspect        Reduce 84

-pointcut      Reduce 84

-around        Reduce 84

-before        Reduce 84

-after         Reduce 84

-declare       Reduce 84

-privileged    Reduce 84

-PLUS          Reduce 84

-LESS          Reduce 84

-LBRACKET      Reduce 84

-DOT           Reduce 84

-AT308         Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 345 ----------------------------------------------------------------------

-( 134 )

-

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   586

-

-

-STATE 346 ----------------------------------------------------------------------

-( 135 )

-

-ClassBodyDeclaration ::= Diet NestedMethod  .CreateInitializer Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   587

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 785

-

-

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 347 ----------------------------------------------------------------------

-( 138 )

-

-ConstructorHeaderName ::= Modifiersopt aspect  .LPAREN 

-

-LPAREN    Sh/Rd  403

-

-

-STATE 348 ----------------------------------------------------------------------

-( 138 )

-

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-Identifier              Shift  588

-declare                 Shift  588

-after                   Shift  588

-before                  Shift  588

-pointcut                Shift  588

-privileged              Shift  588

-aspect                  Shift  588

-around                  Shift  588

-

-AjSimpleNameNoAround    Goto   588

-AjSimpleName            Goto   588

-JavaIdentifier          Goto   588

-

-

-STATE 349 ----------------------------------------------------------------------

-( 139 192 )

-

-AspectHeaderName1 ::= Modifiersopt aspect  .Identifier 

-

-Identifier    Sh/Rd  190

-

-

-STATE 350 ----------------------------------------------------------------------

-( 141 )

-

-PackageDeclarationName ::= PackageComment package  .Name RejectTypeAnnotations 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 786

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   589

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   589

-

-

-STATE 351 ----------------------------------------------------------------------

-( 143 )

-

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                               JavaIdentifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 787

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   590

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   590

-Type                              Goto   590

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 788

-

-

-

-Default reduction to rule  92

-

-

-STATE 352 ----------------------------------------------------------------------

-( 143 )

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-AnnotationMethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  591

-declare                 Shift  591

-after                   Shift  591

-before                  Shift  591

-pointcut                Shift  591

-privileged              Shift  591

-aspect                  Shift  591

-around                  Shift  591

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   591

-AjSimpleNameNoAround    Goto   591

-JavaIdentifier          Goto   591

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 353 ----------------------------------------------------------------------

-( 144 )

-

-PackageDeclarationName ::= Modifiers package  .PushRealModifiers Name 

-                           RejectTypeAnnotations 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   592

-

-Identifier           Reduce 484

-AT308                Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 354 ----------------------------------------------------------------------

-( 145 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 789

-

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt  .

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   593

-

-

-STATE 355 ----------------------------------------------------------------------

-( 149 )

-

-SingleStaticImportDeclarationName ::= import static  .Name 

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import static  .Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   594

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   594

-

-

-STATE 356 ----------------------------------------------------------------------

-( 149 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 790

-

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-SingleTypeImportDeclarationName ::= import Name  .RejectTypeAnnotations 

-TypeImportOnDemandDeclarationName ::= import Name  .DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  595

-

-RejectTypeAnnotations    Gt/Rd  149

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 357 ----------------------------------------------------------------------

-( 151 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace RBRACE 

-

-PushLeftBrace ::= . (460)

-

-PushLeftBrace            Goto   596

-

-Identifier               Reduce 460

-boolean                  Reduce 460

-byte                     Reduce 460

-char                     Reduce 460

-double                   Reduce 460

-false                    Reduce 460

-float                    Reduce 460

-int                      Reduce 460

-long                     Reduce 460

-new                      Reduce 460

-null                     Reduce 460

-short                    Reduce 460

-super                    Reduce 460

-this                     Reduce 460

-true                     Reduce 460

-void                     Reduce 460

-aspect                   Reduce 460

-pointcut                 Reduce 460

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 791

-

-

-around                   Reduce 460

-before                   Reduce 460

-after                    Reduce 460

-declare                  Reduce 460

-privileged               Reduce 460

-IntegerLiteral           Reduce 460

-LongLiteral              Reduce 460

-FloatingPointLiteral     Reduce 460

-DoubleLiteral            Reduce 460

-CharacterLiteral         Reduce 460

-StringLiteral            Reduce 460

-PLUS_PLUS                Reduce 460

-MINUS_MINUS              Reduce 460

-PLUS                     Reduce 460

-MINUS                    Reduce 460

-NOT                      Reduce 460

-TWIDDLE                  Reduce 460

-LPAREN                   Reduce 460

-LBRACE                   Reduce 460

-RBRACE                   Reduce 460

-COMMA                    Reduce 460

-AT                       Reduce 460

-BeginLambda              Reduce 460

-BeginIntersectionCast    Reduce 460

-AT308                    Reduce 460

-

-Default reduction to rule  460

-

-

-STATE 358 ----------------------------------------------------------------------

-( 152 )

-

-UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 792

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 793

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 794

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 795

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  885

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 796

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  885

-PreDecrementExpression                  Gt/Rd  885

-UnaryExpressionNotPlusMinus             Gt/Rd  885

-UnaryExpression                         Gt/Rd  885

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 359 ----------------------------------------------------------------------

-( 153 )

-

-UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 797

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 798

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 799

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 800

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  884

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 801

-

-

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  884

-PreDecrementExpression                  Gt/Rd  884

-UnaryExpressionNotPlusMinus             Gt/Rd  884

-UnaryExpression                         Gt/Rd  884

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 360 ----------------------------------------------------------------------

-( 158 )

-

-UnaryExpression_NotName ::= MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 802

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 803

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 804

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 805

-

-

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  881

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 806

-

-

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  881

-PreDecrementExpression                  Gt/Rd  881

-UnaryExpressionNotPlusMinus             Gt/Rd  881

-UnaryExpression                         Gt/Rd  881

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 361 ----------------------------------------------------------------------

-( 159 )

-

-UnaryExpression_NotName ::= PLUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 807

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 808

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 809

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 810

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  880

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 811

-

-

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  880

-PreDecrementExpression                  Gt/Rd  880

-UnaryExpressionNotPlusMinus             Gt/Rd  880

-UnaryExpression                         Gt/Rd  880

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 362 ----------------------------------------------------------------------

-( 160 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS  .

-                               MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 812

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 813

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 814

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 815

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   597

-PreDecrementExpression                  Goto   597

-UnaryExpressionNotPlusMinus             Goto   597

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 816

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   597

-UnaryExpression                         Goto   597

-MultiplicativeExpression                Goto   597

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 363 ----------------------------------------------------------------------

-( 160 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS  .

-                               MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 817

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 818

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 819

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 820

-

-

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   598

-PreDecrementExpression                  Goto   598

-UnaryExpressionNotPlusMinus             Goto   598

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 821

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   598

-UnaryExpression                         Goto   598

-MultiplicativeExpression                Goto   598

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 364 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                     REMAINDER  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 822

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 823

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 824

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 825

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  892

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 826

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  892

-PreDecrementExpression                  Gt/Rd  892

-UnaryExpressionNotPlusMinus             Gt/Rd  892

-UnaryExpression                         Gt/Rd  892

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 365 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName DIVIDE  .

-                                     UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 827

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 828

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 829

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 830

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  890

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 831

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  890

-PreDecrementExpression                  Gt/Rd  890

-UnaryExpressionNotPlusMinus             Gt/Rd  890

-UnaryExpression                         Gt/Rd  890

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 366 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                     MULTIPLY  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 832

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 833

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 834

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 835

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  888

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 836

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  888

-PreDecrementExpression                  Gt/Rd  888

-UnaryExpressionNotPlusMinus             Gt/Rd  888

-UnaryExpression                         Gt/Rd  888

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 367 ----------------------------------------------------------------------

-( 162 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName GREATER_EQUAL  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 837

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 838

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 839

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 840

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 841

-

-

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   599

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 842

-

-

-

-

-STATE 368 ----------------------------------------------------------------------

-( 162 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 843

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 844

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 845

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 846

-

-

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 847

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   600

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 369 ----------------------------------------------------------------------

-( 163 245 )

-

-RelationalExpression_NotName ::= Name LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 848

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 849

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 850

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 851

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 852

-

-

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   601

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 370 ----------------------------------------------------------------------

-( 164 )

-

-RelationalExpression_NotName ::= ShiftExpression_NotName GREATER  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 853

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 854

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 855

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 856

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 857

-

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   602

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 858

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 371 ----------------------------------------------------------------------

-( 164 )

-

-RelationalExpression_NotName ::= ShiftExpression_NotName LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 859

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 860

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 861

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 862

-

-

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 863

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   603

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 372 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 864

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 865

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 866

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 867

-

-

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 868

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   604

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 373 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 869

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 870

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 871

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 872

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 873

-

-

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   605

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 874

-

-

-

-

-STATE 374 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 875

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 876

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 877

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 878

-

-

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 879

-

-

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   606

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 375 ----------------------------------------------------------------------

-( 165 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL  .

-                               InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 880

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 881

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 882

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 883

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 884

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   607

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 376 ----------------------------------------------------------------------

-( 165 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL  .

-                               InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 885

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 886

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 887

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 888

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 889

-

-

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 890

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   608

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 377 ----------------------------------------------------------------------

-( 166 )

-

-InstanceofExpression_NotName ::= InstanceofExpression_NotName instanceof  .

-                                 ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 891

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  917

-ReferenceType                     Gt/Rd  917

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 378 ----------------------------------------------------------------------

-( 167 )

-

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR  .

-                                  AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 892

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 893

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 894

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 895

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 896

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 897

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   609

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 379 ----------------------------------------------------------------------

-( 168 )

-

-AndExpression_NotName ::= AndExpression_NotName AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 898

-

-

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 899

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 900

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 901

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 902

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   610

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 903

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 380 ----------------------------------------------------------------------

-( 169 )

-

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                     AND_AND  .InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 904

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 905

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 906

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 907

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 908

-

-

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   611

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 381 ----------------------------------------------------------------------

-( 170 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 909

-

-

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR  .

-                                  ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 910

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 911

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 912

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 913

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 914

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   612

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 382 ----------------------------------------------------------------------

-( 171 246 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION  .Expression COLON 

-                                  ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 915

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 916

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 917

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 918

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 919

-

-

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 920

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   613

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 383 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 921

-

-

-ConditionalOrExpression_NotName ::= NameOrAj OR_OR  .ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 922

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 923

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 924

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 925

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 926

-

-

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   614

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 384 ----------------------------------------------------------------------

-( 171 246 )

-

-ConditionalAndExpression_NotName ::= NameOrAj AND_AND  .InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 927

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 928

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 929

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 930

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 931

-

-

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 932

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   615

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 385 ----------------------------------------------------------------------

-( 171 246 )

-

-InclusiveOrExpression_NotName ::= NameOrAj OR  .ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 933

-

-

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 934

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 935

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 936

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 937

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 938

-

-

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   616

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 386 ----------------------------------------------------------------------

-( 171 246 )

-

-ExclusiveOrExpression_NotName ::= NameOrAj XOR  .AndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 939

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 940

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 941

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 942

-

-

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 943

-

-

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   617

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 387 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 944

-

-

-AndExpression_NotName ::= NameOrAj AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 945

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 946

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 947

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 948

-

-

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 949

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   618

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 388 ----------------------------------------------------------------------

-( 171 246 )

-

-EqualityExpression_NotName ::= NameOrAj NOT_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 950

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 951

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 952

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 953

-

-

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 954

-

-

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   619

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 955

-

-

-

-Default reduction to rule  92

-

-

-STATE 389 ----------------------------------------------------------------------

-( 171 246 )

-

-EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 956

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 957

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 958

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 959

-

-

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 960

-

-

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   620

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 390 ----------------------------------------------------------------------

-( 171 246 )

-

-InstanceofExpression_NotName ::= NameOrAj instanceof  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 961

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  916

-ReferenceType                     Gt/Rd  916

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 962

-

-

-

-Default reduction to rule  92

-

-

-STATE 391 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 963

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 964

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 965

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 966

-

-

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 967

-

-

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   621

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 392 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj LESS_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 968

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 969

-

-

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 970

-

-

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 971

-

-

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 972

-

-

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   622

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 393 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj GREATER  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 973

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 974

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 975

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 976

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 977

-

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   623

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 978

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 394 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 979

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 980

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 981

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 982

-

-

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 983

-

-

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   624

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 395 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 984

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 985

-

-

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 986

-

-

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 987

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 988

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   625

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 396 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 989

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 990

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 991

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 992

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 993

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   626

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 397 ----------------------------------------------------------------------

-( 171 246 )

-

-AdditiveExpression_NotName ::= NameOrAj MINUS  .MultiplicativeExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 994

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 995

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 996

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 997

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   627

-PreDecrementExpression                  Goto   627

-UnaryExpressionNotPlusMinus             Goto   627

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 998

-

-

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   627

-UnaryExpression                         Goto   627

-MultiplicativeExpression                Goto   627

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 398 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 999

-

-

-AdditiveExpression_NotName ::= NameOrAj PLUS  .MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1000

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1001

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1002

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   628

-PreDecrementExpression                  Goto   628

-UnaryExpressionNotPlusMinus             Goto   628

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1003

-

-

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   628

-UnaryExpression                         Goto   628

-MultiplicativeExpression                Goto   628

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 399 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1004

-

-

-MultiplicativeExpression_NotName ::= NameOrAj REMAINDER  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1005

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1006

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1007

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  893

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1008

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  893

-PreDecrementExpression                  Gt/Rd  893

-UnaryExpressionNotPlusMinus             Gt/Rd  893

-UnaryExpression                         Gt/Rd  893

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 400 ----------------------------------------------------------------------

-( 171 246 )

-

-MultiplicativeExpression_NotName ::= NameOrAj DIVIDE  .UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1009

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1010

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1011

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1012

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  891

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1013

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  891

-PreDecrementExpression                  Gt/Rd  891

-UnaryExpressionNotPlusMinus             Gt/Rd  891

-UnaryExpression                         Gt/Rd  891

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 401 ----------------------------------------------------------------------

-( 171 246 )

-

-MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY  .UnaryExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1014

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1015

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1016

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1017

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  889

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1018

-

-

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  889

-PreDecrementExpression                  Gt/Rd  889

-UnaryExpressionNotPlusMinus             Gt/Rd  889

-UnaryExpression                         Gt/Rd  889

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 402 ----------------------------------------------------------------------

-( 172 )

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION  .

-                                  Expression COLON ConditionalExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1019

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1020

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1021

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1022

-

-

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1023

-

-

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1024

-

-

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   629

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1025

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 403 ----------------------------------------------------------------------

-( 172 )

-

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR  .

-                                    ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1026

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1027

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1028

-

-

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1029

-

-

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1030

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   630

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 404 ----------------------------------------------------------------------

-( 173 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1031

-

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 405 ----------------------------------------------------------------------

-( 175 )

-

-CatchHeader ::= catch LPAREN  .CatchFormalParameter RPAREN LBRACE 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-CatchFormalParameter ::= .Modifiersopt CatchType VariableDeclaratorId 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1032

-

-

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   632

-CatchFormalParameter      Goto   631

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 406 ----------------------------------------------------------------------

-( 177 )

-

-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet  .Argumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1033

-

-

-                       RestoreDiet 

-

-Arguments ::= .LPAREN ArgumentListopt RPAREN 

-Argumentsopt ::= . (804)

-

-LPAREN          Shift  634

-

-Arguments       Goto   633

-Argumentsopt    Goto   633

-

-abstract        Reduce 804

-final           Reduce 804

-native          Reduce 804

-private         Reduce 804

-protected       Reduce 804

-public          Reduce 804

-static          Reduce 804

-strictfp        Reduce 804

-synchronized    Reduce 804

-transient       Reduce 804

-volatile        Reduce 804

-LBRACE          Reduce 804

-RBRACE          Reduce 804

-SEMICOLON       Reduce 804

-COMMA           Reduce 804

-AT              Reduce 804

-$eof            Reduce 804

-

-Default reduction to rule  804

-

-

-STATE 407 ----------------------------------------------------------------------

-( 178 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   635

-

-

-STATE 408 ----------------------------------------------------------------------

-( 179 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1034

-

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault Type  .JavaIdentifierNoAround 

-                             LPAREN 

-

-Identifier                Shift  636

-declare                   Shift  636

-after                     Shift  636

-before                    Shift  636

-pointcut                  Shift  636

-privileged                Shift  636

-aspect                    Shift  636

-

-AjSimpleNameNoAround      Goto   636

-JavaIdentifierNoAround    Goto   636

-

-

-STATE 409 ----------------------------------------------------------------------

-( 179 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1035

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   637

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   637

-Type                              Goto   637

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 410 ----------------------------------------------------------------------

-( 180 )

-

-ArrayCreationHeader ::= new PrimitiveType  .DimWithOrWithOutExprs 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1036

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   638

-

-LBRACKET                      Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 411 ----------------------------------------------------------------------

-( 180 )

-

-AllocationHeader ::= new ClassType  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN    Shift  639

-

-

-STATE 412 ----------------------------------------------------------------------

-( 180 )

-

-ClassType ::= ClassOrInterfaceType . (66)

-ArrayCreationHeader ::= new ClassOrInterfaceType  .DimWithOrWithOutExprs 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1037

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   640

-

-LPAREN                        Reduce 66

-LBRACKET                      Reduce 92

-

-Default reduction to rule  66

-

-

-STATE 413 ----------------------------------------------------------------------

-( 181 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       MINUS Annotations SEMICOLON 

-PseudoTokensNoColon ::= PseudoTokensNoColon  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1038

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1039

-

-

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Shift  641

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1040

-

-

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1041

-

-

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-PseudoToken                   Gt/Rd  286

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 414 ----------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-PseudoToken ::= if  .LPAREN Expression RPAREN 

-

-LPAREN    Shift  642

-

-

-STATE 415 ----------------------------------------------------------------------

-( 182 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1042

-

-

-DeclareDeclaration ::= DeclareHeader PseudoTokens  .SEMICOLON 

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1043

-

-

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1044

-

-

-SEMICOLON                     Sh/Rd  273

-COLON                         Sh/Rd  287

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1045

-

-

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1046

-

-

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 416 ----------------------------------------------------------------------

-( 183 )

-

-DeclareAnnotationHeader ::= declare AT  .Identifier COLON 

-

-Identifier    Shift  643

-

-

-STATE 417 ----------------------------------------------------------------------

-( 183 )

-

-DeclareHeader ::= declare Identifier  .COLON 

-

-COLON    Sh/Rd  274

-

-

-STATE 418 ----------------------------------------------------------------------

-( 184 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt  .

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   644

-

-

-STATE 419 ----------------------------------------------------------------------

-( 186 )

-

-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody  .

-                              SEMICOLON 

-

-SEMICOLON    Sh/Rd  265

-

-

-STATE 420 ----------------------------------------------------------------------

-( 186 )

-

-InterTypeFieldBody ::= EQUAL  .ForceNoDiet VariableInitializer RestoreDiet 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1047

-

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   645

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 421 ----------------------------------------------------------------------

-( 188 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1048

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt  .

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   646

-

-

-STATE 422 ----------------------------------------------------------------------

-( 189 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   647

-

-

-STATE 423 ----------------------------------------------------------------------

-( 191 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   648

-

-

-STATE 424 ----------------------------------------------------------------------

-( 192 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1049

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   649

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1050

-

-

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   649

-Type                              Goto   649

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 425 ----------------------------------------------------------------------

-( 192 194 767 )

-

-AfterAdviceHeaderName ::= Modifiersopt after  .LPAREN 

-

-LPAREN    Sh/Rd  236

-

-

-STATE 426 ----------------------------------------------------------------------

-( 192 194 767 )

-

-BeforeAdviceHeaderName ::= Modifiersopt before  .LPAREN 

-

-LPAREN    Sh/Rd  235

-

-

-STATE 427 ----------------------------------------------------------------------

-( 192 194 767 )

-

-AroundHeaderName ::= Modifiersopt around  .LPAREN 

-

-LPAREN    Sh/Rd  229

-

-

-STATE 428 ----------------------------------------------------------------------

-( 192 194 )

-

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1051

-

-

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-RecoveryMethodHeaderName ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-around                    Shift  652

-declare                   Shift  1231

-after                     Shift  1231

-before                    Shift  1231

-pointcut                  Shift  1231

-privileged                Shift  1231

-aspect                    Shift  1231

-Identifier                Shift  655

-

-AjSimpleNameNoAround      Goto   654

-VariableDeclaratorId      Goto   527

-JavaIdentifier            Goto   653

-VariableDeclarator        Goto   582

-VariableDeclarators       Goto   582

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1052

-

-

-AjSimpleName              Goto   1232

-OnType                    Goto   651

-JavaIdentifierNoAround    Goto   650

-

-

-STATE 429 ----------------------------------------------------------------------

-( 192 )

-

-SimpleName ::= Identifier . (87)

-EnumConstantHeaderName ::= Modifiersopt Identifier . (799)

-

-abstract        Reduce 799

-final           Reduce 799

-native          Reduce 799

-private         Reduce 799

-protected       Reduce 799

-public          Reduce 799

-static          Reduce 799

-strictfp        Reduce 799

-synchronized    Reduce 799

-transient       Reduce 799

-volatile        Reduce 799

-LPAREN          Reduce 799

-AT              Reduce 799

-$eof            Reduce 799

-Identifier      Reduce 84

-aspect          Reduce 84

-pointcut        Reduce 84

-around          Reduce 84

-before          Reduce 84

-after           Reduce 84

-declare         Reduce 84

-privileged      Reduce 84

-LESS            Reduce 84

-LBRACKET        Reduce 84

-DOT             Reduce 84

-AT308           Reduce 84

-

-Default reduction to rule  799

-

-

-STATE 430 ----------------------------------------------------------------------

-( 194 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1053

-

-

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   649

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1054

-

-

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   649

-Type                              Goto   649

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 431 ----------------------------------------------------------------------

-( 195 )

-

-Initializer ::= Diet NestedMethod  .CreateInitializer Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   656

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 432 ----------------------------------------------------------------------

-( 196 )

-

-MethodBody ::= NestedMethod LBRACE  .BlockStatementsopt RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1055

-

-

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1056

-

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1057

-

-

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1058

-

-

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1059

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1060

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1061

-

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1062

-

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1063

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1064

-

-

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Goto   657

-

-RBRACE                                  Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 433 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= PackageDeclaration . (110)

-InternalCompilationUnit ::= PackageDeclaration  .ImportDeclarations 

-                            ReduceImports 

-InternalCompilationUnit ::= PackageDeclaration  .ImportDeclarations 

-                            ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= PackageDeclaration  .TypeDeclarations 

-

-ImportDeclarations ::= .ImportDeclarations ImportDeclaration 

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1065

-

-

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1066

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-import                                 Shift  149

-AT                                     Shift  80

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

-ClassDeclaration                       Goto   659

-InterfaceDeclaration                   Goto   659

-EnumDeclaration                        Goto   659

-AnnotationTypeDeclaration              Goto   659

-AspectDeclaration                      Goto   659

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-TypeDeclaration                        Goto   659

-TypeDeclarations                       Goto   659

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1067

-

-

-SingleTypeImportDeclaration            Goto   658

-TypeImportOnDemandDeclaration          Goto   658

-SingleStaticImportDeclaration          Goto   658

-StaticImportOnDemandDeclaration        Goto   658

-StaticImportOnDemandDeclarationName    Goto   146

-SingleStaticImportDeclarationName      Goto   147

-TypeImportOnDemandDeclarationName      Goto   148

-SingleTypeImportDeclarationName        Goto   150

-ImportDeclaration                      Goto   658

-ImportDeclarations                     Goto   658

-

-$eof                                   Reduce 110

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 434 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= TypeDeclarations . (115)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1068

-

-

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1069

-

-

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 115

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 435 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= ImportDeclarations  .ReduceImports 

-InternalCompilationUnit ::= ImportDeclarations  .ReduceImports TypeDeclarations 

-ImportDeclarations ::= ImportDeclarations  .ImportDeclaration 

-

-ReduceImports ::= . (118)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1070

-

-

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-import                                 Shift  149

-

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Gt/Rd  137

-TypeImportOnDemandDeclaration          Gt/Rd  137

-SingleStaticImportDeclaration          Gt/Rd  137

-StaticImportOnDemandDeclaration        Gt/Rd  137

-ReduceImports                          Goto   660

-ImportDeclaration                      Gt/Rd  137

-

-abstract                               Reduce 118

-class                                  Reduce 118

-enum                                   Reduce 118

-final                                  Reduce 118

-interface                              Reduce 118

-native                                 Reduce 118

-private                                Reduce 118

-protected                              Reduce 118

-public                                 Reduce 118

-static                                 Reduce 118

-strictfp                               Reduce 118

-synchronized                           Reduce 118

-transient                              Reduce 118

-volatile                               Reduce 118

-aspect                                 Reduce 118

-privileged                             Reduce 118

-SEMICOLON                              Reduce 118

-AT                                     Reduce 118

-$eof                                   Reduce 118

-

-Default reduction to rule  118

-

-

-STATE 436 ----------------------------------------------------------------------

-( 198 282 )

-

-UnannotatableName ::= UnannotatableName DOT  .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1071

-

-

-

-Identifier    Sh/Rd  89

-

-SimpleName    Gt/Rd  89

-

-

-STATE 437 ----------------------------------------------------------------------

-( 199 )

-

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue  .RPAREN 

-

-RPAREN    Sh/Rd  103

-

-

-STATE 438 ----------------------------------------------------------------------

-( 199 )

-

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-

-RPAREN    Sh/Rd  101

-

-

-STATE 439 ----------------------------------------------------------------------

-( 199 284 662 )

-

-MemberValuePair ::= SimpleNameOrAj  .EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-EQUAL    Shift  661

-

-

-STATE 440 ----------------------------------------------------------------------

-( 199 284 )

-

-MemberValuePairsopt ::= MemberValuePairs . (971)

-MemberValuePairs ::= MemberValuePairs  .COMMA MemberValuePair 

-

-COMMA     Shift  662

-

-RPAREN    Reduce 971

-

-Default reduction to rule  971

-

-

-STATE 441 ----------------------------------------------------------------------

-( 199 284 )

-

-SimpleNameOrAj ::= AjSimpleName . (69)

-AjName ::= AjSimpleName . (71)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1072

-

-

-instanceof              Reduce 71

-PLUS_PLUS               Reduce 71

-MINUS_MINUS             Reduce 71

-EQUAL_EQUAL             Reduce 71

-LESS_EQUAL              Reduce 71

-GREATER_EQUAL           Reduce 71

-NOT_EQUAL               Reduce 71

-LEFT_SHIFT              Reduce 71

-RIGHT_SHIFT             Reduce 71

-UNSIGNED_RIGHT_SHIFT    Reduce 71

-OR_OR                   Reduce 71

-AND_AND                 Reduce 71

-PLUS                    Reduce 71

-MINUS                   Reduce 71

-REMAINDER               Reduce 71

-XOR                     Reduce 71

-AND                     Reduce 71

-MULTIPLY                Reduce 71

-OR                      Reduce 71

-DIVIDE                  Reduce 71

-GREATER                 Reduce 71

-LPAREN                  Reduce 71

-RPAREN                  Reduce 71

-LBRACKET                Reduce 71

-QUESTION                Reduce 71

-DOT                     Reduce 71

-EQUAL                   Reduce 69

-

-Default reduction to rule  71

-

-

-STATE 442 ----------------------------------------------------------------------

-( 199 284 )

-

-SimpleNameOrAj ::= SimpleName . (70)

-Name ::= SimpleName . (84)

-

-instanceof              Reduce 84

-PLUS_PLUS               Reduce 84

-MINUS_MINUS             Reduce 84

-EQUAL_EQUAL             Reduce 84

-LESS_EQUAL              Reduce 84

-GREATER_EQUAL           Reduce 84

-NOT_EQUAL               Reduce 84

-LEFT_SHIFT              Reduce 84

-RIGHT_SHIFT             Reduce 84

-UNSIGNED_RIGHT_SHIFT    Reduce 84

-OR_OR                   Reduce 84

-AND_AND                 Reduce 84

-PLUS                    Reduce 84

-MINUS                   Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1073

-

-

-REMAINDER               Reduce 84

-XOR                     Reduce 84

-AND                     Reduce 84

-MULTIPLY                Reduce 84

-OR                      Reduce 84

-DIVIDE                  Reduce 84

-GREATER                 Reduce 84

-LESS                    Reduce 84

-LPAREN                  Reduce 84

-RPAREN                  Reduce 84

-LBRACKET                Reduce 84

-QUESTION                Reduce 84

-DOT                     Reduce 84

-COLON_COLON             Reduce 84

-BeginTypeArguments      Reduce 84

-AT308                   Reduce 84

-EQUAL                   Reduce 70

-

-Default reduction to rule  84

-

-

-STATE 443 ----------------------------------------------------------------------

-( 200 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1074

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   205

-ReferenceType                     Goto   201

-Wildcard                          Gt/Rd  823

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1075

-

-

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 444 ----------------------------------------------------------------------

-( 202 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-ReferenceType1 ::= ClassOrInterface LESS  .TypeArgumentList2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1076

-

-

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-TypeArgumentList2 ::= .TypeArgumentList COMMA TypeArgument2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType2                    Gt/Rd  829

-Wildcard2                         Gt/Rd  829

-TypeAnnotationsopt                Goto   666

-ReferenceType                     Goto   665

-ClassOrInterface                  Goto   664

-TypeArgument2                     Gt/Rd  829

-TypeArgumentList                  Goto   663

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-TypeArgument                      Goto   663

-Wildcard                          Goto   663

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-TypeArgumentList2                 Gt/Rd  829

-

-boolean                           Reduce 92

-byte                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1077

-

-

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 445 ----------------------------------------------------------------------

-( 203 211 256 541 589 705 772 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 446 ----------------------------------------------------------------------

-( 205 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1078

-

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-

-GREATER            Sh/Rd  845

-super              Shift  667

-extends            Shift  668

-

-WildcardBounds     Gt/Rd  842

-WildcardBounds1    Gt/Rd  846

-

-COMMA              Reduce 841

-

-Default reduction to rule  841

-

-

-STATE 447 ----------------------------------------------------------------------

-( 206 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1079

-

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  600

-Dimsopt                       Gt/Rd  600

-

-COLON_COLON                   Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 448 ----------------------------------------------------------------------

-( 207 )

-

-OneDimLoop ::= TypeAnnotations LBRACKET  .RBRACKET 

-

-RBRACKET    Sh/Rd  655

-

-

-STATE 449 ----------------------------------------------------------------------

-( 211 )

-

-CastNameAndBounds ::= Name AdditionalBoundList . (698)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-

-AdditionalBound ::= .AND ReferenceType 

-

-AND                Shift  450

-

-AdditionalBound    Gt/Rd  865

-

-RPAREN             Reduce 698

-

-Default reduction to rule  698

-

-

-STATE 450 ----------------------------------------------------------------------

-( 211 449 547 551 745 747 934 )

-

-AdditionalBound ::= AND  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1080

-

-

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  866

-ReferenceType                     Gt/Rd  866

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1081

-

-

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 451 ----------------------------------------------------------------------

-( 214 )

-

-FormalParameterList ::= FormalParameterList COMMA  .FormalParameter 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1082

-

-

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameter           Gt/Rd  405

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 452 ----------------------------------------------------------------------

-( 215 )

-

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList COMMA  .

-                                  TypeElidedFormalParameter 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1083

-

-

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-TypeElidedFormalParameter ::= .Modifiersopt Identifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                     Shift  1064

-volatile                     Shift  1064

-transient                    Shift  1064

-synchronized                 Shift  1064

-native                       Shift  1064

-final                        Shift  1064

-abstract                     Shift  1064

-static                       Shift  1064

-private                      Shift  1064

-protected                    Shift  1064

-public                       Shift  1064

-AT                           Shift  136

-

-Modifiers                    Goto   137

-SimpleModifier               Goto   1064

-Annotation                   Gt/Rd  171

-AnnotationName               Goto   81

-NormalAnnotation             Goto   1047

-MarkerAnnotation             Goto   1047

-SingleMemberAnnotation       Goto   1047

-Modifier                     Goto   1064

-Modifiersopt                 Goto   669

-TypeElidedFormalParameter    Gt/Rd  619

-

-Identifier                   Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 453 ----------------------------------------------------------------------

-( 216 331 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1084

-

-

-FormalParameter ::= Modifiersopt Type  .VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt Type  .PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt Type  .AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushZeroTypeAnnotations ::= . (105)

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-AT308DOTDOTDOT                Shift  670

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  406

-PushZeroTypeAnnotations       Goto   671

-

-ELLIPSIS                      Reduce 105

-

-Default reduction to rule  105

-

-

-STATE 454 ----------------------------------------------------------------------

-( 216 )

-

-SimpleName ::= Identifier . (87)

-TypeElidedFormalParameter ::= Modifiersopt Identifier . (620)

-

-RPAREN            Reduce 620

-COMMA             Reduce 620

-Identifier        Reduce 84

-this              Reduce 84

-aspect            Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1085

-

-

-pointcut          Reduce 84

-around            Reduce 84

-before            Reduce 84

-after             Reduce 84

-declare           Reduce 84

-privileged        Reduce 84

-LESS              Reduce 84

-LBRACKET          Reduce 84

-DOT               Reduce 84

-ELLIPSIS          Reduce 84

-AT308             Reduce 84

-AT308DOTDOTDOT    Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 455 ----------------------------------------------------------------------

-( 217 )

-

-ClassHeaderImplements ::= implements InterfaceTypeList . (350)

-InterfaceTypeList ::= InterfaceTypeList  .COMMA InterfaceType 

-

-COMMA           Shift  674

-

-Identifier      Reduce 350

-abstract        Reduce 350

-final           Reduce 350

-native          Reduce 350

-private         Reduce 350

-protected       Reduce 350

-public          Reduce 350

-static          Reduce 350

-strictfp        Reduce 350

-synchronized    Reduce 350

-transient       Reduce 350

-volatile        Reduce 350

-LBRACE          Reduce 350

-AT              Reduce 350

-$eof            Reduce 350

-

-Default reduction to rule  350

-

-

-STATE 456 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE COMMA  .EnumBodyDeclarationsopt RBRACE 

-

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1086

-

-

-SEMICOLON                  Shift  458

-

-EnumDeclarations           Goto   675

-EnumBodyDeclarationsopt    Goto   675

-

-RBRACE                     Reduce 807

-

-Default reduction to rule  807

-

-

-STATE 457 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  793

-

-

-STATE 458 ----------------------------------------------------------------------

-( 218 456 459 677 )

-

-EnumDeclarations ::= SEMICOLON  .ClassBodyDeclarationsopt 

-

-ClassBodyDeclarationsopt ::= . (762)

-ClassBodyDeclarationsopt ::= .NestedType ClassBodyDeclarations 

-NestedType ::= . (780)

-

-NestedType                  Goto   472

-ClassBodyDeclarationsopt    Gt/Rd  806

-

-RBRACE                      Reduce 762

-Identifier                  Reduce 780

-abstract                    Reduce 780

-boolean                     Reduce 780

-byte                        Reduce 780

-char                        Reduce 780

-class                       Reduce 780

-default                     Reduce 780

-double                      Reduce 780

-enum                        Reduce 780

-final                       Reduce 780

-float                       Reduce 780

-int                         Reduce 780

-interface                   Reduce 780

-long                        Reduce 780

-native                      Reduce 780

-private                     Reduce 780

-protected                   Reduce 780

-public                      Reduce 780

-short                       Reduce 780

-static                      Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1087

-

-

-strictfp                    Reduce 780

-synchronized                Reduce 780

-transient                   Reduce 780

-void                        Reduce 780

-volatile                    Reduce 780

-aspect                      Reduce 780

-pointcut                    Reduce 780

-privileged                  Reduce 780

-LESS                        Reduce 780

-LBRACE                      Reduce 780

-SEMICOLON                   Reduce 780

-AT                          Reduce 780

-AT308                       Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 459 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE EnumConstants  .COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE EnumConstants  .EnumBodyDeclarationsopt RBRACE 

-EnumConstants ::= EnumConstants  .COMMA EnumConstant 

-

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-

-COMMA                      Shift  677

-SEMICOLON                  Shift  458

-

-EnumDeclarations           Goto   676

-EnumBodyDeclarationsopt    Goto   676

-

-RBRACE                     Reduce 807

-

-Default reduction to rule  807

-

-

-STATE 460 ----------------------------------------------------------------------

-( 218 677 )

-

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-

-Identifier    Sh/Rd  799

-

-

-STATE 461 ----------------------------------------------------------------------

-( 218 677 )

-

-EnumConstant ::= EnumConstantHeader  .ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= EnumConstantHeader . (802)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1088

-

-

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet    Goto   678

-

-RBRACE         Reduce 802

-SEMICOLON      Reduce 802

-COMMA          Reduce 802

-LBRACE         Reduce 381

-

-Default reduction to rule  802

-

-

-STATE 462 ----------------------------------------------------------------------

-( 221 )

-

-AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  950

-

-

-STATE 463 ----------------------------------------------------------------------

-( 221 )

-

-AnnotationTypeMemberDeclarationsopt ::= NestedType  .

-                                        AnnotationTypeMemberDeclarations 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1089

-

-

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-AnnotationTypeMemberDeclarations ::= .AnnotationTypeMemberDeclarations 

-                                     AnnotationTypeMemberDeclaration 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1090

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Goto   679

-ConstructorDeclaration                 Goto   679

-TypeDeclaration                        Goto   679

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiersopt                           Goto   143

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Goto   679

-InterfaceDeclaration                   Goto   679

-EnumDeclaration                        Goto   679

-AnnotationTypeDeclaration              Goto   679

-AspectDeclaration                      Goto   679

-ConstructorHeaderName                  Goto   134

-ConstructorHeader                      Goto   132

-FieldDeclaration                       Goto   679

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1091

-

-

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationMethodHeaderName             Goto   145

-AnnotationTypeMemberDeclaration        Goto   679

-AnnotationTypeMemberDeclarations       Goto   679

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 464 ----------------------------------------------------------------------

-( 222 )

-

-InterfaceTypeList ::= InterfaceTypeList  .COMMA InterfaceType 

-InterfaceHeaderExtends ::= extends InterfaceTypeList . (439)

-

-COMMA           Shift  674

-

-abstract        Reduce 439

-final           Reduce 439

-native          Reduce 439

-private         Reduce 439

-protected       Reduce 439

-public          Reduce 439

-static          Reduce 439

-strictfp        Reduce 439

-synchronized    Reduce 439

-transient       Reduce 439

-volatile        Reduce 439

-LBRACE          Reduce 439

-AT              Reduce 439

-$eof            Reduce 439

-

-Default reduction to rule  439

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1092

-

-

-

-

-STATE 465 ----------------------------------------------------------------------

-( 223 )

-

-TypeParameterList ::= TypeParameterList  .COMMA TypeParameter 

-TypeParameterList1 ::= TypeParameterList  .COMMA TypeParameter1 

-

-COMMA    Shift  680

-

-

-STATE 466 ----------------------------------------------------------------------

-( 223 680 )

-

-TypeParameterHeader ::= TypeAnnotationsopt  .JavaIdentifier 

-

-Identifier              Sh/Rd  857

-declare                 Sh/Rd  857

-after                   Sh/Rd  857

-before                  Sh/Rd  857

-pointcut                Sh/Rd  857

-privileged              Sh/Rd  857

-aspect                  Sh/Rd  857

-around                  Sh/Rd  857

-

-AjSimpleNameNoAround    Gt/Rd  857

-AjSimpleName            Gt/Rd  857

-JavaIdentifier          Gt/Rd  857

-

-

-STATE 467 ----------------------------------------------------------------------

-( 223 680 )

-

-TypeParameter ::= TypeParameterHeader . (861)

-TypeParameter ::= TypeParameterHeader  .extends ReferenceType 

-TypeParameter ::= TypeParameterHeader  .extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader  .GREATER 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType1 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType 

-                   AdditionalBoundList1 

-

-GREATER    Sh/Rd  869

-extends    Shift  681

-

-COMMA      Reduce 861

-

-Default reduction to rule  861

-

-

-STATE 468 ----------------------------------------------------------------------

-( 224 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1093

-

-

-InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  440

-

-

-STATE 469 ----------------------------------------------------------------------

-( 224 )

-

-InterfaceMemberDeclarationsopt ::= NestedType  .InterfaceMemberDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1094

-

-

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-InterfaceMemberDeclarations ::= .InterfaceMemberDeclarations 

-                                InterfaceMemberDeclaration 

-InterfaceMemberDeclaration ::= .SEMICOLON 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .MethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader SEMICOLON 

-InvalidConstructorDeclaration ::= .ConstructorHeader MethodBody 

-InvalidConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1095

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-static                                 Shift  131

-AT                                     Shift  80

-SEMICOLON                              Sh/Rd  443

-

-AspectDeclaration                      Goto   682

-PointcutDeclaration                    Goto   682

-ConstantDeclaration                    Goto   682

-DefaultMethodHeader                    Goto   685

-MethodHeader                           Goto   684

-AbstractMethodDeclaration              Goto   682

-InvalidConstructorDeclaration          Goto   682

-InvalidInitializer                     Goto   682

-ClassDeclaration                       Goto   682

-InterfaceDeclaration                   Goto   682

-EnumDeclaration                        Goto   682

-AnnotationTypeDeclaration              Goto   682

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-StaticOnly                             Goto   130

-Diet                                   Goto   195

-StaticInitializer                      Goto   682

-Initializer                            Goto   682

-ConstructorHeaderName                  Goto   134

-ConstructorHeader                      Goto   683

-MethodHeaderName                       Goto   119

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1096

-

-

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-FieldDeclaration                       Goto   682

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-InterfaceMemberDeclaration             Goto   682

-InterfaceMemberDeclarations            Goto   682

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 470 ----------------------------------------------------------------------

-( 226 )

-

-EnumHeaderName ::= Modifiersopt enum JavaIdentifier . (791)

-EnumHeaderName ::= Modifiersopt enum JavaIdentifier  .TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1097

-

-

-

-TypeParameters    Gt/Rd  792

-

-abstract          Reduce 791

-final             Reduce 791

-implements        Reduce 791

-native            Reduce 791

-private           Reduce 791

-protected         Reduce 791

-public            Reduce 791

-static            Reduce 791

-strictfp          Reduce 791

-synchronized      Reduce 791

-transient         Reduce 791

-volatile          Reduce 791

-LBRACE            Reduce 791

-AT                Reduce 791

-$eof              Reduce 791

-

-Default reduction to rule  791

-

-

-STATE 471 ----------------------------------------------------------------------

-( 229 )

-

-ClassBody ::= LBRACE ClassBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  354

-

-

-STATE 472 ----------------------------------------------------------------------

-( 229 458 )

-

-ClassBodyDeclarationsopt ::= NestedType  .ClassBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassMemberDeclaration ::= .AspectDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1098

-

-

-ClassMemberDeclaration ::= .PointcutDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclarations ::= .ClassBodyDeclaration 

-ClassBodyDeclarations ::= .ClassBodyDeclarations ClassBodyDeclaration 

-ClassBodyDeclaration ::= .ClassMemberDeclaration 

-ClassBodyDeclaration ::= .StaticInitializer 

-ClassBodyDeclaration ::= .ConstructorDeclaration 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .FieldDeclaration 

-ClassMemberDeclaration ::= .MethodDeclaration 

-ClassMemberDeclaration ::= .ClassDeclaration 

-ClassMemberDeclaration ::= .InterfaceDeclaration 

-ClassMemberDeclaration ::= .EnumDeclaration 

-ClassMemberDeclaration ::= .AnnotationTypeDeclaration 

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .AbstractMethodDeclaration 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1099

-

-

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1100

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-ClassMemberDeclaration                 Goto   1065

-StaticInitializer                      Goto   1065

-ConstructorDeclaration                 Goto   1065

-Diet                                   Goto   135

-ConstructorHeaderName                  Goto   134

-Modifiersopt                           Goto   133

-ConstructorHeader                      Goto   132

-StaticOnly                             Goto   130

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-AbstractMethodDeclaration              Goto   1065

-MethodHeader                           Goto   123

-DefaultMethodHeader                    Goto   122

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-MethodHeaderName                       Goto   119

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Goto   1065

-PointcutDeclaration                    Goto   1065

-FieldDeclaration                       Goto   1065

-MethodDeclaration                      Goto   1065

-ClassDeclaration                       Goto   1065

-InterfaceDeclaration                   Goto   1065

-EnumDeclaration                        Goto   1065

-AnnotationTypeDeclaration              Goto   1065

-ClassBodyDeclaration                   Gt/Rd  355

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1101

-

-

-ClassBodyDeclarations                  Goto   686

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 473 ----------------------------------------------------------------------

-( 230 )

-

-TryStatementWithResources ::= try ResourceSpecification TryBlock  .Catchesopt 

-TryStatementWithResources ::= try ResourceSpecification TryBlock  .Catchesopt 

-                              Finally 

-

-Catches ::= .CatchClause 

-Catches ::= .Catches CatchClause 

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-Catchesopt ::= . (787)

-Catchesopt ::= .Catches 

-

-catch                   Shift  475

-

-CatchClause             Goto   1233

-Catches                 Goto   688

-Catchesopt              Goto   687

-

-Identifier              Reduce 787

-abstract                Reduce 787

-assert                  Reduce 787

-boolean                 Reduce 787

-break                   Reduce 787

-byte                    Reduce 787

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1102

-

-

-case                    Reduce 787

-char                    Reduce 787

-class                   Reduce 787

-continue                Reduce 787

-default                 Reduce 787

-do                      Reduce 787

-double                  Reduce 787

-else                    Reduce 787

-enum                    Reduce 787

-false                   Reduce 787

-final                   Reduce 787

-finally                 Reduce 787

-float                   Reduce 787

-for                     Reduce 787

-if                      Reduce 787

-int                     Reduce 787

-interface               Reduce 787

-long                    Reduce 787

-native                  Reduce 787

-new                     Reduce 787

-null                    Reduce 787

-private                 Reduce 787

-protected               Reduce 787

-public                  Reduce 787

-return                  Reduce 787

-short                   Reduce 787

-static                  Reduce 787

-strictfp                Reduce 787

-super                   Reduce 787

-switch                  Reduce 787

-synchronized            Reduce 787

-this                    Reduce 787

-throw                   Reduce 787

-transient               Reduce 787

-true                    Reduce 787

-try                     Reduce 787

-void                    Reduce 787

-volatile                Reduce 787

-while                   Reduce 787

-aspect                  Reduce 787

-pointcut                Reduce 787

-around                  Reduce 787

-before                  Reduce 787

-after                   Reduce 787

-declare                 Reduce 787

-privileged              Reduce 787

-IntegerLiteral          Reduce 787

-LongLiteral             Reduce 787

-FloatingPointLiteral    Reduce 787

-DoubleLiteral           Reduce 787

-CharacterLiteral        Reduce 787

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1103

-

-

-StringLiteral           Reduce 787

-PLUS_PLUS               Reduce 787

-MINUS_MINUS             Reduce 787

-LESS                    Reduce 787

-LPAREN                  Reduce 787

-LBRACE                  Reduce 787

-RBRACE                  Reduce 787

-SEMICOLON               Reduce 787

-AT                      Reduce 787

-BeginLambda             Reduce 787

-AT308                   Reduce 787

-$eof                    Reduce 787

-

-Default reduction to rule  787

-

-

-STATE 474 ----------------------------------------------------------------------

-( 231 )

-

-TryStatement ::= try TryBlock Catchesopt  .Finally 

-

-Finally ::= .finally Block 

-

-finally    Shift  689

-

-Finally    Gt/Rd  560

-

-

-STATE 475 ----------------------------------------------------------------------

-( 231 473 476 688 )

-

-CatchClause ::= catch  .LPAREN CatchFormalParameter RPAREN Block 

-

-LPAREN    Shift  690

-

-

-STATE 476 ----------------------------------------------------------------------

-( 231 )

-

-TryStatement ::= try TryBlock Catches . (559)

-Catches ::= Catches  .CatchClause 

-Catchesopt ::= Catches . (788)

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-

-catch                   Shift  475

-

-CatchClause             Gt/Rd  574

-

-finally                 Reduce 788

-Identifier              Reduce 559

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1104

-

-

-abstract                Reduce 559

-assert                  Reduce 559

-boolean                 Reduce 559

-break                   Reduce 559

-byte                    Reduce 559

-case                    Reduce 559

-char                    Reduce 559

-class                   Reduce 559

-continue                Reduce 559

-default                 Reduce 559

-do                      Reduce 559

-double                  Reduce 559

-else                    Reduce 559

-enum                    Reduce 559

-false                   Reduce 559

-final                   Reduce 559

-float                   Reduce 559

-for                     Reduce 559

-if                      Reduce 559

-int                     Reduce 559

-interface               Reduce 559

-long                    Reduce 559

-native                  Reduce 559

-new                     Reduce 559

-null                    Reduce 559

-private                 Reduce 559

-protected               Reduce 559

-public                  Reduce 559

-return                  Reduce 559

-short                   Reduce 559

-static                  Reduce 559

-strictfp                Reduce 559

-super                   Reduce 559

-switch                  Reduce 559

-synchronized            Reduce 559

-this                    Reduce 559

-throw                   Reduce 559

-transient               Reduce 559

-true                    Reduce 559

-try                     Reduce 559

-void                    Reduce 559

-volatile                Reduce 559

-while                   Reduce 559

-aspect                  Reduce 559

-pointcut                Reduce 559

-around                  Reduce 559

-before                  Reduce 559

-after                   Reduce 559

-declare                 Reduce 559

-privileged              Reduce 559

-IntegerLiteral          Reduce 559

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1105

-

-

-LongLiteral             Reduce 559

-FloatingPointLiteral    Reduce 559

-DoubleLiteral           Reduce 559

-CharacterLiteral        Reduce 559

-StringLiteral           Reduce 559

-PLUS_PLUS               Reduce 559

-MINUS_MINUS             Reduce 559

-LESS                    Reduce 559

-LPAREN                  Reduce 559

-LBRACE                  Reduce 559

-RBRACE                  Reduce 559

-SEMICOLON               Reduce 559

-AT                      Reduce 559

-BeginLambda             Reduce 559

-AT308                   Reduce 559

-$eof                    Reduce 559

-

-Default reduction to rule  559

-

-

-STATE 477 ----------------------------------------------------------------------

-( 233 )

-

-ResourceSpecification ::= LPAREN Resources  .;opt RPAREN 

-Resources ::= Resources  .TrailingSemiColon Resource 

-

-;opt ::= . (564)

-;opt ::= .SEMICOLON 

-TrailingSemiColon ::= .SEMICOLON 

-

-SEMICOLON            Shift  693

-

-;opt                 Goto   692

-TrailingSemiColon    Goto   691

-

-RPAREN               Reduce 564

-

-Default reduction to rule  564

-

-

-STATE 478 ----------------------------------------------------------------------

-( 233 691 )

-

-Modifiers ::= Modifiers  .Modifier 

-Resource ::= Modifiers  .Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1106

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1107

-

-

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-AT                                Shift  136

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   694

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   694

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-Type                              Goto   694

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 479 ----------------------------------------------------------------------

-( 233 691 )

-

-Resource ::= Type  .PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1108

-

-

-             ExitVariableWithInitialization 

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   695

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 480 ----------------------------------------------------------------------

-( 235 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression  .RPAREN Block 

-

-RPAREN    Shift  696

-

-

-STATE 481 ----------------------------------------------------------------------

-( 239 )

-

-DoStatement ::= do Statement while  .LPAREN Expression RPAREN SEMICOLON 

-

-LPAREN    Shift  697

-

-

-STATE 482 ----------------------------------------------------------------------

-( 241 )

-

-SwitchStatement ::= switch LPAREN Expression  .RPAREN OpenBlock SwitchBlock 

-

-RPAREN    Shift  698

-

-

-STATE 483 ----------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 

-  322 323 324 325 327 328 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 403 552 748 751 778 779 858 933 936 988 

-  1028 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1109

-

-

-UnaryExpressionNotPlusMinus ::= PostfixExpression . (685)

-

-MINUS_MINUS                     Sh/Rd  676

-PLUS_PLUS                       Sh/Rd  675

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 484 ----------------------------------------------------------------------

-( 248 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1110

-

-

-LambdaBody ::= ElidedLeftBraceAndReturn  .Expression 

-               ElidedSemicolonAndRightBrace 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1111

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1112

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1113

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1114

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1115

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   699

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1116

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 485 ----------------------------------------------------------------------

-( 249 )

-

-ArrayAccess ::= AjName LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  668

-

-

-STATE 486 ----------------------------------------------------------------------

-( 251 )

-

-MethodInvocation ::= NameOrAj LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  659

-

-

-STATE 487 ----------------------------------------------------------------------

-( 251 269 272 512 513 634 639 702 704 707 709 712 716 718 737 741 821 823 827 

-  832 833 834 836 854 855 856 911 975 )

-

-ArgumentList ::= ArgumentList  .COMMA Expression 

-ArgumentListopt ::= ArgumentList . (771)

-

-COMMA     Shift  700

-

-RPAREN    Reduce 771

-

-Default reduction to rule  771

-

-

-STATE 488 ----------------------------------------------------------------------

-( 252 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments  .

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-Identifier              Shift  701

-declare                 Shift  701

-after                   Shift  701

-before                  Shift  701

-pointcut                Shift  701

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1117

-

-

-privileged              Shift  701

-aspect                  Shift  701

-around                  Shift  701

-

-AjSimpleNameNoAround    Goto   701

-AjSimpleName            Goto   701

-JavaIdentifier          Goto   701

-

-

-STATE 489 ----------------------------------------------------------------------

-( 252 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  702

-

-

-STATE 490 ----------------------------------------------------------------------

-( 252 )

-

-JavaIdentifier ::= Identifier . (35)

-FieldAccess ::= QualifiedSuperReceiver DOT Identifier . (658)

-

-abstract                        Reduce 658

-final                           Reduce 658

-instanceof                      Reduce 658

-native                          Reduce 658

-private                         Reduce 658

-protected                       Reduce 658

-public                          Reduce 658

-static                          Reduce 658

-strictfp                        Reduce 658

-synchronized                    Reduce 658

-transient                       Reduce 658

-volatile                        Reduce 658

-PLUS_PLUS                       Reduce 658

-MINUS_MINUS                     Reduce 658

-EQUAL_EQUAL                     Reduce 658

-LESS_EQUAL                      Reduce 658

-GREATER_EQUAL                   Reduce 658

-NOT_EQUAL                       Reduce 658

-LEFT_SHIFT                      Reduce 658

-RIGHT_SHIFT                     Reduce 658

-UNSIGNED_RIGHT_SHIFT            Reduce 658

-PLUS_EQUAL                      Reduce 658

-MINUS_EQUAL                     Reduce 658

-MULTIPLY_EQUAL                  Reduce 658

-DIVIDE_EQUAL                    Reduce 658

-AND_EQUAL                       Reduce 658

-OR_EQUAL                        Reduce 658

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1118

-

-

-XOR_EQUAL                       Reduce 658

-REMAINDER_EQUAL                 Reduce 658

-LEFT_SHIFT_EQUAL                Reduce 658

-RIGHT_SHIFT_EQUAL               Reduce 658

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 658

-OR_OR                           Reduce 658

-AND_AND                         Reduce 658

-PLUS                            Reduce 658

-MINUS                           Reduce 658

-REMAINDER                       Reduce 658

-XOR                             Reduce 658

-AND                             Reduce 658

-MULTIPLY                        Reduce 658

-OR                              Reduce 658

-DIVIDE                          Reduce 658

-GREATER                         Reduce 658

-LESS                            Reduce 658

-RPAREN                          Reduce 658

-RBRACE                          Reduce 658

-LBRACKET                        Reduce 658

-RBRACKET                        Reduce 658

-SEMICOLON                       Reduce 658

-QUESTION                        Reduce 658

-COLON                           Reduce 658

-COMMA                           Reduce 658

-DOT                             Reduce 658

-EQUAL                           Reduce 658

-AT                              Reduce 658

-COLON_COLON                     Reduce 658

-ElidedSemicolonAndRightBrace    Reduce 658

-$eof                            Reduce 658

-LPAREN                          Reduce 35

-

-Default reduction to rule  658

-

-

-STATE 491 ----------------------------------------------------------------------

-( 253 )

-

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt  .Identifier 

-

-Identifier    Sh/Rd  605

-

-

-STATE 492 ----------------------------------------------------------------------

-( 254 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1119

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   703

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 493 ----------------------------------------------------------------------

-( 255 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  704

-

-

-STATE 494 ----------------------------------------------------------------------

-( 257 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1120

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   705

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   705

-

-

-STATE 495 ----------------------------------------------------------------------

-( 258 )

-

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType 

-                                        DimWithOrWithOutExprs . (643)

-ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-LBRACE                          Shift  117

-AT308                           Shift  22

-

-TypeAnnotations                 Goto   496

-TypeAnnotation                  Goto   1037

-TypeAnnotations0                Goto   24

-TypeAnnotationName              Goto   23

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationsopt              Goto   496

-ArrayInitializer                Gt/Rd  644

-DimWithOrWithOutExpr            Gt/Rd  648

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1121

-

-

-abstract                        Reduce 643

-final                           Reduce 643

-instanceof                      Reduce 643

-native                          Reduce 643

-private                         Reduce 643

-protected                       Reduce 643

-public                          Reduce 643

-static                          Reduce 643

-strictfp                        Reduce 643

-synchronized                    Reduce 643

-transient                       Reduce 643

-volatile                        Reduce 643

-PLUS_PLUS                       Reduce 643

-MINUS_MINUS                     Reduce 643

-EQUAL_EQUAL                     Reduce 643

-LESS_EQUAL                      Reduce 643

-GREATER_EQUAL                   Reduce 643

-NOT_EQUAL                       Reduce 643

-LEFT_SHIFT                      Reduce 643

-RIGHT_SHIFT                     Reduce 643

-UNSIGNED_RIGHT_SHIFT            Reduce 643

-PLUS_EQUAL                      Reduce 643

-MINUS_EQUAL                     Reduce 643

-MULTIPLY_EQUAL                  Reduce 643

-DIVIDE_EQUAL                    Reduce 643

-AND_EQUAL                       Reduce 643

-OR_EQUAL                        Reduce 643

-XOR_EQUAL                       Reduce 643

-REMAINDER_EQUAL                 Reduce 643

-LEFT_SHIFT_EQUAL                Reduce 643

-RIGHT_SHIFT_EQUAL               Reduce 643

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 643

-OR_OR                           Reduce 643

-AND_AND                         Reduce 643

-PLUS                            Reduce 643

-MINUS                           Reduce 643

-REMAINDER                       Reduce 643

-XOR                             Reduce 643

-AND                             Reduce 643

-MULTIPLY                        Reduce 643

-OR                              Reduce 643

-DIVIDE                          Reduce 643

-GREATER                         Reduce 643

-LESS                            Reduce 643

-RPAREN                          Reduce 643

-RBRACE                          Reduce 643

-RBRACKET                        Reduce 643

-SEMICOLON                       Reduce 643

-QUESTION                        Reduce 643

-COLON                           Reduce 643

-COMMA                           Reduce 643

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1122

-

-

-DOT                             Reduce 643

-EQUAL                           Reduce 643

-AT                              Reduce 643

-COLON_COLON                     Reduce 643

-ElidedSemicolonAndRightBrace    Reduce 643

-$eof                            Reduce 643

-LBRACKET                        Reduce 92

-

-Default reduction to rule  643

-

-

-STATE 496 ----------------------------------------------------------------------

-( 258 261 410 412 495 499 638 640 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET RBRACKET 

-

-LBRACKET    Shift  706

-

-

-STATE 497 ----------------------------------------------------------------------

-( 259 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-LPAREN    Shift  707

-

-

-STATE 498 ----------------------------------------------------------------------

-( 260 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   708

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 499 ----------------------------------------------------------------------

-( 261 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1123

-

-

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs . (645)

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-LBRACE                          Shift  117

-AT308                           Shift  22

-

-TypeAnnotations                 Goto   496

-TypeAnnotation                  Goto   1037

-TypeAnnotations0                Goto   24

-TypeAnnotationName              Goto   23

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationsopt              Goto   496

-ArrayInitializer                Gt/Rd  646

-DimWithOrWithOutExpr            Gt/Rd  648

-

-abstract                        Reduce 645

-final                           Reduce 645

-instanceof                      Reduce 645

-native                          Reduce 645

-private                         Reduce 645

-protected                       Reduce 645

-public                          Reduce 645

-static                          Reduce 645

-strictfp                        Reduce 645

-synchronized                    Reduce 645

-transient                       Reduce 645

-volatile                        Reduce 645

-PLUS_PLUS                       Reduce 645

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1124

-

-

-MINUS_MINUS                     Reduce 645

-EQUAL_EQUAL                     Reduce 645

-LESS_EQUAL                      Reduce 645

-GREATER_EQUAL                   Reduce 645

-NOT_EQUAL                       Reduce 645

-LEFT_SHIFT                      Reduce 645

-RIGHT_SHIFT                     Reduce 645

-UNSIGNED_RIGHT_SHIFT            Reduce 645

-PLUS_EQUAL                      Reduce 645

-MINUS_EQUAL                     Reduce 645

-MULTIPLY_EQUAL                  Reduce 645

-DIVIDE_EQUAL                    Reduce 645

-AND_EQUAL                       Reduce 645

-OR_EQUAL                        Reduce 645

-XOR_EQUAL                       Reduce 645

-REMAINDER_EQUAL                 Reduce 645

-LEFT_SHIFT_EQUAL                Reduce 645

-RIGHT_SHIFT_EQUAL               Reduce 645

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 645

-OR_OR                           Reduce 645

-AND_AND                         Reduce 645

-PLUS                            Reduce 645

-MINUS                           Reduce 645

-REMAINDER                       Reduce 645

-XOR                             Reduce 645

-AND                             Reduce 645

-MULTIPLY                        Reduce 645

-OR                              Reduce 645

-DIVIDE                          Reduce 645

-GREATER                         Reduce 645

-LESS                            Reduce 645

-RPAREN                          Reduce 645

-RBRACE                          Reduce 645

-RBRACKET                        Reduce 645

-SEMICOLON                       Reduce 645

-QUESTION                        Reduce 645

-COLON                           Reduce 645

-COMMA                           Reduce 645

-DOT                             Reduce 645

-EQUAL                           Reduce 645

-AT                              Reduce 645

-COLON_COLON                     Reduce 645

-ElidedSemicolonAndRightBrace    Reduce 645

-$eof                            Reduce 645

-LBRACKET                        Reduce 92

-

-Default reduction to rule  645

-

-

-STATE 500 ----------------------------------------------------------------------

-( 262 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1125

-

-

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression  .

-                RBRACKET 

-

-RBRACKET    Sh/Rd  670

-

-

-STATE 501 ----------------------------------------------------------------------

-( 263 )

-

-ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  669

-

-

-STATE 502 ----------------------------------------------------------------------

-( 265 )

-

-ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt  .

-                        Identifier 

-

-Identifier    Sh/Rd  604

-

-

-STATE 503 ----------------------------------------------------------------------

-( 266 302 )

-

-FieldAccess ::= Primary DOT JavaIdentifier . (656)

-MethodInvocation ::= Primary DOT JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN                          Shift  709

-

-abstract                        Reduce 656

-final                           Reduce 656

-instanceof                      Reduce 656

-native                          Reduce 656

-private                         Reduce 656

-protected                       Reduce 656

-public                          Reduce 656

-static                          Reduce 656

-strictfp                        Reduce 656

-synchronized                    Reduce 656

-transient                       Reduce 656

-volatile                        Reduce 656

-PLUS_PLUS                       Reduce 656

-MINUS_MINUS                     Reduce 656

-EQUAL_EQUAL                     Reduce 656

-LESS_EQUAL                      Reduce 656

-GREATER_EQUAL                   Reduce 656

-NOT_EQUAL                       Reduce 656

-LEFT_SHIFT                      Reduce 656

-RIGHT_SHIFT                     Reduce 656

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1126

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 656

-PLUS_EQUAL                      Reduce 656

-MINUS_EQUAL                     Reduce 656

-MULTIPLY_EQUAL                  Reduce 656

-DIVIDE_EQUAL                    Reduce 656

-AND_EQUAL                       Reduce 656

-OR_EQUAL                        Reduce 656

-XOR_EQUAL                       Reduce 656

-REMAINDER_EQUAL                 Reduce 656

-LEFT_SHIFT_EQUAL                Reduce 656

-RIGHT_SHIFT_EQUAL               Reduce 656

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 656

-OR_OR                           Reduce 656

-AND_AND                         Reduce 656

-PLUS                            Reduce 656

-MINUS                           Reduce 656

-REMAINDER                       Reduce 656

-XOR                             Reduce 656

-AND                             Reduce 656

-MULTIPLY                        Reduce 656

-OR                              Reduce 656

-DIVIDE                          Reduce 656

-GREATER                         Reduce 656

-LESS                            Reduce 656

-RPAREN                          Reduce 656

-RBRACE                          Reduce 656

-LBRACKET                        Reduce 656

-RBRACKET                        Reduce 656

-SEMICOLON                       Reduce 656

-QUESTION                        Reduce 656

-COLON                           Reduce 656

-COMMA                           Reduce 656

-DOT                             Reduce 656

-EQUAL                           Reduce 656

-AT                              Reduce 656

-COLON_COLON                     Reduce 656

-ElidedSemicolonAndRightBrace    Reduce 656

-$eof                            Reduce 656

-

-Default reduction to rule  656

-

-

-STATE 504 ----------------------------------------------------------------------

-( 266 302 )

-

-ClassInstanceCreationExpression ::= Primary DOT new  .OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT new  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1127

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   710

-OnlyTypeArguments             Goto   711

-ClassType                     Goto   710

-

-

-STATE 505 ----------------------------------------------------------------------

-( 266 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1128

-

-

-ExplicitConstructorInvocation ::= Primary DOT this  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-LPAREN    Shift  712

-

-

-STATE 506 ----------------------------------------------------------------------

-( 266 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-this                    Shift  714

-super                   Shift  715

-Identifier              Shift  713

-declare                 Shift  713

-after                   Shift  713

-before                  Shift  713

-pointcut                Shift  713

-privileged              Shift  713

-aspect                  Shift  713

-around                  Shift  713

-

-AjSimpleNameNoAround    Goto   713

-AjSimpleName            Goto   713

-JavaIdentifier          Goto   713

-

-

-STATE 507 ----------------------------------------------------------------------

-( 266 )

-

-ExplicitConstructorInvocation ::= Primary DOT super  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-LPAREN    Shift  716

-

-

-STATE 508 ----------------------------------------------------------------------

-( 267 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  717

-declare                 Shift  717

-after                   Shift  717

-before                  Shift  717

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1129

-

-

-pointcut                Shift  717

-privileged              Shift  717

-aspect                  Shift  717

-around                  Shift  717

-

-AjSimpleNameNoAround    Goto   717

-AjSimpleName            Goto   717

-JavaIdentifier          Goto   717

-

-

-STATE 509 ----------------------------------------------------------------------

-( 267 )

-

-FieldAccess ::= super DOT JavaIdentifier . (657)

-MethodInvocation ::= super DOT JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN                          Shift  718

-

-abstract                        Reduce 657

-final                           Reduce 657

-instanceof                      Reduce 657

-native                          Reduce 657

-private                         Reduce 657

-protected                       Reduce 657

-public                          Reduce 657

-static                          Reduce 657

-strictfp                        Reduce 657

-synchronized                    Reduce 657

-transient                       Reduce 657

-volatile                        Reduce 657

-PLUS_PLUS                       Reduce 657

-MINUS_MINUS                     Reduce 657

-EQUAL_EQUAL                     Reduce 657

-LESS_EQUAL                      Reduce 657

-GREATER_EQUAL                   Reduce 657

-NOT_EQUAL                       Reduce 657

-LEFT_SHIFT                      Reduce 657

-RIGHT_SHIFT                     Reduce 657

-UNSIGNED_RIGHT_SHIFT            Reduce 657

-PLUS_EQUAL                      Reduce 657

-MINUS_EQUAL                     Reduce 657

-MULTIPLY_EQUAL                  Reduce 657

-DIVIDE_EQUAL                    Reduce 657

-AND_EQUAL                       Reduce 657

-OR_EQUAL                        Reduce 657

-XOR_EQUAL                       Reduce 657

-REMAINDER_EQUAL                 Reduce 657

-LEFT_SHIFT_EQUAL                Reduce 657

-RIGHT_SHIFT_EQUAL               Reduce 657

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 657

-OR_OR                           Reduce 657

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1130

-

-

-AND_AND                         Reduce 657

-PLUS                            Reduce 657

-MINUS                           Reduce 657

-REMAINDER                       Reduce 657

-XOR                             Reduce 657

-AND                             Reduce 657

-MULTIPLY                        Reduce 657

-OR                              Reduce 657

-DIVIDE                          Reduce 657

-GREATER                         Reduce 657

-LESS                            Reduce 657

-RPAREN                          Reduce 657

-RBRACE                          Reduce 657

-LBRACKET                        Reduce 657

-RBRACKET                        Reduce 657

-SEMICOLON                       Reduce 657

-QUESTION                        Reduce 657

-COLON                           Reduce 657

-COMMA                           Reduce 657

-DOT                             Reduce 657

-EQUAL                           Reduce 657

-AT                              Reduce 657

-COLON_COLON                     Reduce 657

-ElidedSemicolonAndRightBrace    Reduce 657

-$eof                            Reduce 657

-

-Default reduction to rule  657

-

-

-STATE 510 ----------------------------------------------------------------------

-( 268 )

-

-ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt  .Identifier 

-

-Identifier    Sh/Rd  606

-

-

-STATE 511 ----------------------------------------------------------------------

-( 269 )

-

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  719

-

-

-STATE 512 ----------------------------------------------------------------------

-( 270 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1131

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1132

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1133

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1134

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1135

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1136

-

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1137

-

-

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 513 ----------------------------------------------------------------------

-( 271 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1138

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1139

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1140

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1141

-

-

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1142

-

-

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1143

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   721

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 514 ----------------------------------------------------------------------

-( 272 )

-

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  722

-

-

-STATE 515 ----------------------------------------------------------------------

-( 273 )

-

-Block ::= OpenBlock LBRACE BlockStatementsopt  .RBRACE 

-

-RBRACE    Sh/Rd  466

-

-

-STATE 516 ----------------------------------------------------------------------

-( 274 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1144

-

-

-AssertStatement ::= assert Expression COLON  .Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1145

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1146

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1147

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1148

-

-

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1149

-

-

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   723

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1150

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 517 ----------------------------------------------------------------------

-( 276 )

-

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-

-RPAREN    Shift  724

-

-

-STATE 518 ----------------------------------------------------------------------

-( 277 )

-

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-

-RPAREN    Shift  725

-

-

-STATE 519 ----------------------------------------------------------------------

-( 278 )

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-SEMICOLON    Shift  726

-

-

-STATE 520 ----------------------------------------------------------------------

-( 278 920 )

-

-LocalVariableDeclaration ::= Type  .PushModifiers VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Type  .PushModifiers 

-                                   JavaIdentifier Dimsopt 

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   727

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1151

-

-

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 521 ----------------------------------------------------------------------

-( 278 920 )

-

-Modifiers ::= Modifiers  .Modifier 

-LocalVariableDeclaration ::= Modifiers  .Type PushRealModifiers 

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers  .Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1152

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-AT                                Shift  136

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   728

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   728

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1153

-

-

-Type                              Goto   728

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 522 ----------------------------------------------------------------------

-( 278 552 920 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1154

-

-

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   292

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-instanceof                    Reduce 672

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 672

-LESS_EQUAL                    Reduce 672

-GREATER_EQUAL                 Reduce 672

-NOT_EQUAL                     Reduce 672

-LEFT_SHIFT                    Reduce 672

-RIGHT_SHIFT                   Reduce 672

-UNSIGNED_RIGHT_SHIFT          Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 672

-AND_AND                       Reduce 672

-PLUS                          Reduce 672

-MINUS                         Reduce 672

-REMAINDER                     Reduce 672

-XOR                           Reduce 672

-AND                           Reduce 672

-MULTIPLY                      Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1155

-

-

-OR                            Reduce 672

-DIVIDE                        Reduce 672

-LPAREN                        Reduce 68

-RPAREN                        Reduce 672

-QUESTION                      Reduce 672

-EQUAL                         Reduce 672

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-GREATER                       Reduce 57

-LESS                          Reduce 57

-COMMA                         Reduce 57

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 523 ----------------------------------------------------------------------

-( 278 920 )

-

-ForInit ::= StatementExpressionList . (544)

-StatementExpressionList ::= StatementExpressionList  .COMMA StatementExpression 

-

-COMMA        Shift  729

-

-SEMICOLON    Reduce 544

-

-Default reduction to rule  544

-

-

-STATE 524 ----------------------------------------------------------------------

-( 279 )

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                               Expression  .RPAREN 

-

-RPAREN    Sh/Rd  813

-

-

-STATE 525 ----------------------------------------------------------------------

-( 280 727 )

-

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators . (480)

-

-COMMA        Shift  730

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1156

-

-

-

-SEMICOLON    Reduce 480

-

-Default reduction to rule  480

-

-

-STATE 526 ----------------------------------------------------------------------

-( 280 404 453 531 695 730 781 811 817 898 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-RPAREN                        Reduce 768

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 527 ----------------------------------------------------------------------

-( 280 340 352 404 428 531 727 730 849 870 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1157

-

-

-VariableDeclarator ::= VariableDeclaratorId  .EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= VariableDeclaratorId  .EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-EnterVariable    Goto   731

-

-SEMICOLON        Reduce 378

-COMMA            Reduce 378

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 528 ----------------------------------------------------------------------

-( 281 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface  .

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface  .

-                                        JavaIdentifier 

-

-Identifier              Shift  732

-declare                 Shift  732

-after                   Shift  732

-before                  Shift  732

-pointcut                Shift  732

-privileged              Shift  732

-aspect                  Shift  732

-around                  Shift  732

-

-AjSimpleNameNoAround    Goto   732

-AjSimpleName            Goto   732

-JavaIdentifier          Goto   732

-

-

-STATE 529 ----------------------------------------------------------------------

-( 284 )

-

-SingleMemberAnnotation ::= AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue  .RPAREN 

-

-RPAREN    Sh/Rd  990

-

-

-STATE 530 ----------------------------------------------------------------------

-( 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1158

-

-

-NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-

-RPAREN    Sh/Rd  969

-

-

-STATE 531 ----------------------------------------------------------------------

-( 285 )

-

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   733

-VariableDeclarators     Goto   733

-

-

-STATE 532 ----------------------------------------------------------------------

-( 286 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers  .

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers  .

-                                        interface JavaIdentifier TypeParameters 

-

-interface    Shift  734

-

-

-STATE 533 ----------------------------------------------------------------------

-( 288 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1159

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  735

-

-

-STATE 534 ----------------------------------------------------------------------

-( 289 )

-

-ReferenceExpression ::= Name Dimsopt COLON_COLON  .NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   736

-NonWildTypeArgumentsopt    Goto   736

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 535 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT this  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-PrimaryNoNewArray ::= Name DOT this . (588)

-

-LPAREN                        Shift  737

-

-PLUS_PLUS                     Reduce 588

-MINUS_MINUS                   Reduce 588

-PLUS_EQUAL                    Reduce 588

-MINUS_EQUAL                   Reduce 588

-MULTIPLY_EQUAL                Reduce 588

-DIVIDE_EQUAL                  Reduce 588

-AND_EQUAL                     Reduce 588

-OR_EQUAL                      Reduce 588

-XOR_EQUAL                     Reduce 588

-REMAINDER_EQUAL               Reduce 588

-LEFT_SHIFT_EQUAL              Reduce 588

-RIGHT_SHIFT_EQUAL             Reduce 588

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 588

-LBRACKET                      Reduce 588

-DOT                           Reduce 588

-EQUAL                         Reduce 588

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1160

-

-

-COLON_COLON                   Reduce 588

-

-Default reduction to rule  588

-

-

-STATE 536 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-this                    Shift  739

-super                   Shift  740

-Identifier              Shift  738

-declare                 Shift  738

-after                   Shift  738

-before                  Shift  738

-pointcut                Shift  738

-privileged              Shift  738

-aspect                  Shift  738

-around                  Shift  738

-

-AjSimpleNameNoAround    Goto   738

-AjSimpleName            Goto   738

-JavaIdentifier          Goto   738

-

-

-STATE 537 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT super  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-QualifiedSuperReceiver ::= Name DOT super . (589)

-

-LPAREN         Shift  741

-

-DOT            Reduce 589

-COLON_COLON    Reduce 589

-

-Default reduction to rule  589

-

-

-STATE 538 ----------------------------------------------------------------------

-( 290 300 445 595 774 947 992 )

-

-QualifiedName ::= Name DOT TypeAnnotations  .JavaIdentifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1161

-

-

-Identifier              Sh/Rd  91

-declare                 Sh/Rd  91

-after                   Sh/Rd  91

-before                  Sh/Rd  91

-pointcut                Sh/Rd  91

-privileged              Sh/Rd  91

-aspect                  Sh/Rd  91

-around                  Sh/Rd  91

-

-AjSimpleNameNoAround    Gt/Rd  91

-AjSimpleName            Gt/Rd  91

-JavaIdentifier          Gt/Rd  91

-

-

-STATE 539 ----------------------------------------------------------------------

-( 291 )

-

-ArrayAccess ::= Name LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  667

-

-

-STATE 540 ----------------------------------------------------------------------

-( 292 301 551 )

-

-PrimaryNoNewArray ::= Name Dims DOT  .class 

-

-class    Sh/Rd  591

-

-

-STATE 541 ----------------------------------------------------------------------

-( 293 948 993 )

-

-ClassOrInterface ::= GenericType DOT Name . (58)

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name . (61)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT                             Shift  445

-

-LBRACKET                        Reduce 61

-AT308                           Reduce 61

-Identifier                      Reduce 58

-abstract                        Reduce 58

-final                           Reduce 58

-instanceof                      Reduce 58

-native                          Reduce 58

-private                         Reduce 58

-protected                       Reduce 58

-public                          Reduce 58

-static                          Reduce 58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1162

-

-

-strictfp                        Reduce 58

-synchronized                    Reduce 58

-this                            Reduce 58

-transient                       Reduce 58

-volatile                        Reduce 58

-aspect                          Reduce 58

-pointcut                        Reduce 58

-around                          Reduce 58

-before                          Reduce 58

-after                           Reduce 58

-declare                         Reduce 58

-privileged                      Reduce 58

-EQUAL_EQUAL                     Reduce 58

-NOT_EQUAL                       Reduce 58

-RIGHT_SHIFT                     Reduce 58

-UNSIGNED_RIGHT_SHIFT            Reduce 58

-OR_OR                           Reduce 58

-AND_AND                         Reduce 58

-XOR                             Reduce 58

-AND                             Reduce 58

-OR                              Reduce 58

-GREATER                         Reduce 58

-LESS                            Reduce 58

-RPAREN                          Reduce 58

-RBRACE                          Reduce 58

-RBRACKET                        Reduce 58

-SEMICOLON                       Reduce 58

-QUESTION                        Reduce 58

-COLON                           Reduce 58

-COMMA                           Reduce 58

-AT                              Reduce 58

-ELLIPSIS                        Reduce 58

-ElidedSemicolonAndRightBrace    Reduce 58

-AT308DOTDOTDOT                  Reduce 58

-$eof                            Reduce 58

-

-Default reduction to rule  58

-

-

-STATE 542 ----------------------------------------------------------------------

-( 296 299 548 )

-

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON  .

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   742

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1163

-

-

-NonWildTypeArgumentsopt    Goto   742

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 543 ----------------------------------------------------------------------

-( 296 299 548 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims DOT  .class 

-

-class    Sh/Rd  592

-

-

-STATE 544 ----------------------------------------------------------------------

-( 300 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  738

-declare                 Shift  738

-after                   Shift  738

-before                  Shift  738

-pointcut                Shift  738

-privileged              Shift  738

-aspect                  Shift  738

-around                  Shift  738

-

-AjSimpleNameNoAround    Goto   738

-AjSimpleName            Goto   738

-JavaIdentifier          Goto   738

-

-

-STATE 545 ----------------------------------------------------------------------

-( 302 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  713

-declare                 Shift  713

-after                   Shift  713

-before                  Shift  713

-pointcut                Shift  713

-privileged              Shift  713

-aspect                  Shift  713

-around                  Shift  713

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1164

-

-

-AjSimpleNameNoAround    Goto   713

-AjSimpleName            Goto   713

-JavaIdentifier          Goto   713

-

-

-STATE 546 ----------------------------------------------------------------------

-( 303 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds  .

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   743

-

-

-STATE 547 ----------------------------------------------------------------------

-( 304 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt  .AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   744

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 548 ----------------------------------------------------------------------

-( 304 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-Dimsopt ::= Dims . (769)

-

-COLON_COLON    Shift  542

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1165

-

-

-DOT            Shift  543

-

-AND            Reduce 769

-RPAREN         Reduce 769

-

-Default reduction to rule  769

-

-

-STATE 549 ----------------------------------------------------------------------

-( 305 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-DOT                           Shift  746

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   747

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1166

-

-

-Dimsopt                       Goto   747

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 550 ----------------------------------------------------------------------

-( 305 )

-

-PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN . (585)

-CastExpression ::= PushLPAREN Name PushRPAREN  .InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionLL1 ::= . (701)

-

-InsideCastExpressionLL1         Goto   748

-

-abstract                        Reduce 585

-final                           Reduce 585

-instanceof                      Reduce 585

-native                          Reduce 585

-private                         Reduce 585

-protected                       Reduce 585

-public                          Reduce 585

-static                          Reduce 585

-strictfp                        Reduce 585

-synchronized                    Reduce 585

-transient                       Reduce 585

-volatile                        Reduce 585

-PLUS_PLUS                       Reduce 585

-MINUS_MINUS                     Reduce 585

-EQUAL_EQUAL                     Reduce 585

-LESS_EQUAL                      Reduce 585

-GREATER_EQUAL                   Reduce 585

-NOT_EQUAL                       Reduce 585

-LEFT_SHIFT                      Reduce 585

-RIGHT_SHIFT                     Reduce 585

-UNSIGNED_RIGHT_SHIFT            Reduce 585

-PLUS_EQUAL                      Reduce 585

-MINUS_EQUAL                     Reduce 585

-MULTIPLY_EQUAL                  Reduce 585

-DIVIDE_EQUAL                    Reduce 585

-AND_EQUAL                       Reduce 585

-OR_EQUAL                        Reduce 585

-XOR_EQUAL                       Reduce 585

-REMAINDER_EQUAL                 Reduce 585

-LEFT_SHIFT_EQUAL                Reduce 585

-RIGHT_SHIFT_EQUAL               Reduce 585

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 585

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1167

-

-

-OR_OR                           Reduce 585

-AND_AND                         Reduce 585

-PLUS                            Reduce 585

-MINUS                           Reduce 585

-REMAINDER                       Reduce 585

-XOR                             Reduce 585

-AND                             Reduce 585

-MULTIPLY                        Reduce 585

-OR                              Reduce 585

-DIVIDE                          Reduce 585

-GREATER                         Reduce 585

-LESS                            Reduce 585

-RPAREN                          Reduce 585

-RBRACE                          Reduce 585

-LBRACKET                        Reduce 585

-RBRACKET                        Reduce 585

-SEMICOLON                       Reduce 585

-QUESTION                        Reduce 585

-COLON                           Reduce 585

-COMMA                           Reduce 585

-DOT                             Reduce 585

-EQUAL                           Reduce 585

-AT                              Reduce 585

-COLON_COLON                     Reduce 585

-ElidedSemicolonAndRightBrace    Reduce 585

-$eof                            Reduce 585

-Identifier                      Reduce 701

-boolean                         Reduce 701

-byte                            Reduce 701

-char                            Reduce 701

-double                          Reduce 701

-false                           Reduce 701

-float                           Reduce 701

-int                             Reduce 701

-long                            Reduce 701

-new                             Reduce 701

-null                            Reduce 701

-short                           Reduce 701

-super                           Reduce 701

-this                            Reduce 701

-true                            Reduce 701

-void                            Reduce 701

-aspect                          Reduce 701

-pointcut                        Reduce 701

-around                          Reduce 701

-before                          Reduce 701

-after                           Reduce 701

-declare                         Reduce 701

-privileged                      Reduce 701

-IntegerLiteral                  Reduce 701

-LongLiteral                     Reduce 701

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1168

-

-

-FloatingPointLiteral            Reduce 701

-DoubleLiteral                   Reduce 701

-CharacterLiteral                Reduce 701

-StringLiteral                   Reduce 701

-NOT                             Reduce 701

-TWIDDLE                         Reduce 701

-LPAREN                          Reduce 701

-BeginLambda                     Reduce 701

-BeginIntersectionCast           Reduce 701

-AT308                           Reduce 701

-

-Default reduction to rule  585

-

-

-STATE 551 ----------------------------------------------------------------------

-( 305 )

-

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-CastExpression ::= PushLPAREN Name Dims  .AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Dimsopt ::= Dims . (769)

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-DOT                        Shift  540

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   749

-

-COLON_COLON                Reduce 769

-RPAREN                     Reduce 695

-

-Default reduction to rule  769

-

-

-STATE 552 ----------------------------------------------------------------------

-( 305 )

-

-OnlyTypeArguments ::= LESS  .TypeArgumentList1 

-RelationalExpression_NotName ::= Name LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1169

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1170

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1171

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1172

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1173

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   522

-PrimitiveType                           Goto   750

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1174

-

-

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   601

-ReferenceType1                          Gt/Rd  819

-Wildcard1                               Gt/Rd  819

-TypeAnnotationsopt                      Goto   205

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   1078

-TypeAnnotations                         Goto   88

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   202

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   201

-TypeArgument                            Goto   200

-TypeArgumentList                        Goto   200

-Wildcard                                Goto   200

-TypeArgument1                           Gt/Rd  819

-TypeArgumentList1                       Gt/Rd  819

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-QUESTION                                Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 553 ----------------------------------------------------------------------

-( 311 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1175

-

-

-                     (714)

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 714

-final                           Reduce 714

-instanceof                      Reduce 714

-native                          Reduce 714

-private                         Reduce 714

-protected                       Reduce 714

-public                          Reduce 714

-static                          Reduce 714

-strictfp                        Reduce 714

-synchronized                    Reduce 714

-transient                       Reduce 714

-volatile                        Reduce 714

-EQUAL_EQUAL                     Reduce 714

-LESS_EQUAL                      Reduce 714

-GREATER_EQUAL                   Reduce 714

-NOT_EQUAL                       Reduce 714

-LEFT_SHIFT                      Reduce 714

-RIGHT_SHIFT                     Reduce 714

-UNSIGNED_RIGHT_SHIFT            Reduce 714

-OR_OR                           Reduce 714

-AND_AND                         Reduce 714

-XOR                             Reduce 714

-AND                             Reduce 714

-OR                              Reduce 714

-GREATER                         Reduce 714

-LESS                            Reduce 714

-RPAREN                          Reduce 714

-RBRACE                          Reduce 714

-RBRACKET                        Reduce 714

-SEMICOLON                       Reduce 714

-QUESTION                        Reduce 714

-COLON                           Reduce 714

-COMMA                           Reduce 714

-AT                              Reduce 714

-ElidedSemicolonAndRightBrace    Reduce 714

-$eof                            Reduce 714

-

-Default reduction to rule  714

-

-

-STATE 554 ----------------------------------------------------------------------

-( 312 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression RIGHT_SHIFT AdditiveExpression . (713)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1176

-

-

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 713

-final                           Reduce 713

-instanceof                      Reduce 713

-native                          Reduce 713

-private                         Reduce 713

-protected                       Reduce 713

-public                          Reduce 713

-static                          Reduce 713

-strictfp                        Reduce 713

-synchronized                    Reduce 713

-transient                       Reduce 713

-volatile                        Reduce 713

-EQUAL_EQUAL                     Reduce 713

-LESS_EQUAL                      Reduce 713

-GREATER_EQUAL                   Reduce 713

-NOT_EQUAL                       Reduce 713

-LEFT_SHIFT                      Reduce 713

-RIGHT_SHIFT                     Reduce 713

-UNSIGNED_RIGHT_SHIFT            Reduce 713

-OR_OR                           Reduce 713

-AND_AND                         Reduce 713

-XOR                             Reduce 713

-AND                             Reduce 713

-OR                              Reduce 713

-GREATER                         Reduce 713

-LESS                            Reduce 713

-RPAREN                          Reduce 713

-RBRACE                          Reduce 713

-RBRACKET                        Reduce 713

-SEMICOLON                       Reduce 713

-QUESTION                        Reduce 713

-COLON                           Reduce 713

-COMMA                           Reduce 713

-AT                              Reduce 713

-ElidedSemicolonAndRightBrace    Reduce 713

-$eof                            Reduce 713

-

-Default reduction to rule  713

-

-

-STATE 555 ----------------------------------------------------------------------

-( 313 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression LEFT_SHIFT AdditiveExpression . (712)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1177

-

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 712

-final                           Reduce 712

-instanceof                      Reduce 712

-native                          Reduce 712

-private                         Reduce 712

-protected                       Reduce 712

-public                          Reduce 712

-static                          Reduce 712

-strictfp                        Reduce 712

-synchronized                    Reduce 712

-transient                       Reduce 712

-volatile                        Reduce 712

-EQUAL_EQUAL                     Reduce 712

-LESS_EQUAL                      Reduce 712

-GREATER_EQUAL                   Reduce 712

-NOT_EQUAL                       Reduce 712

-LEFT_SHIFT                      Reduce 712

-RIGHT_SHIFT                     Reduce 712

-UNSIGNED_RIGHT_SHIFT            Reduce 712

-OR_OR                           Reduce 712

-AND_AND                         Reduce 712

-XOR                             Reduce 712

-AND                             Reduce 712

-OR                              Reduce 712

-GREATER                         Reduce 712

-LESS                            Reduce 712

-RPAREN                          Reduce 712

-RBRACE                          Reduce 712

-RBRACKET                        Reduce 712

-SEMICOLON                       Reduce 712

-QUESTION                        Reduce 712

-COLON                           Reduce 712

-COMMA                           Reduce 712

-AT                              Reduce 712

-ElidedSemicolonAndRightBrace    Reduce 712

-$eof                            Reduce 712

-

-Default reduction to rule  712

-

-

-STATE 556 ----------------------------------------------------------------------

-( 314 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1178

-

-

-AdditiveExpression ::= AdditiveExpression MINUS MultiplicativeExpression .

-                        (710)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 710

-final                           Reduce 710

-instanceof                      Reduce 710

-native                          Reduce 710

-private                         Reduce 710

-protected                       Reduce 710

-public                          Reduce 710

-static                          Reduce 710

-strictfp                        Reduce 710

-synchronized                    Reduce 710

-transient                       Reduce 710

-volatile                        Reduce 710

-EQUAL_EQUAL                     Reduce 710

-LESS_EQUAL                      Reduce 710

-GREATER_EQUAL                   Reduce 710

-NOT_EQUAL                       Reduce 710

-LEFT_SHIFT                      Reduce 710

-RIGHT_SHIFT                     Reduce 710

-UNSIGNED_RIGHT_SHIFT            Reduce 710

-OR_OR                           Reduce 710

-AND_AND                         Reduce 710

-PLUS                            Reduce 710

-MINUS                           Reduce 710

-XOR                             Reduce 710

-AND                             Reduce 710

-OR                              Reduce 710

-GREATER                         Reduce 710

-LESS                            Reduce 710

-RPAREN                          Reduce 710

-RBRACE                          Reduce 710

-RBRACKET                        Reduce 710

-SEMICOLON                       Reduce 710

-QUESTION                        Reduce 710

-COLON                           Reduce 710

-COMMA                           Reduce 710

-AT                              Reduce 710

-ElidedSemicolonAndRightBrace    Reduce 710

-$eof                            Reduce 710

-

-Default reduction to rule  710

-

-

-STATE 557 ----------------------------------------------------------------------

-( 315 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1179

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= AdditiveExpression PLUS MultiplicativeExpression . (709)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 709

-final                           Reduce 709

-instanceof                      Reduce 709

-native                          Reduce 709

-private                         Reduce 709

-protected                       Reduce 709

-public                          Reduce 709

-static                          Reduce 709

-strictfp                        Reduce 709

-synchronized                    Reduce 709

-transient                       Reduce 709

-volatile                        Reduce 709

-EQUAL_EQUAL                     Reduce 709

-LESS_EQUAL                      Reduce 709

-GREATER_EQUAL                   Reduce 709

-NOT_EQUAL                       Reduce 709

-LEFT_SHIFT                      Reduce 709

-RIGHT_SHIFT                     Reduce 709

-UNSIGNED_RIGHT_SHIFT            Reduce 709

-OR_OR                           Reduce 709

-AND_AND                         Reduce 709

-PLUS                            Reduce 709

-MINUS                           Reduce 709

-XOR                             Reduce 709

-AND                             Reduce 709

-OR                              Reduce 709

-GREATER                         Reduce 709

-LESS                            Reduce 709

-RPAREN                          Reduce 709

-RBRACE                          Reduce 709

-RBRACKET                        Reduce 709

-SEMICOLON                       Reduce 709

-QUESTION                        Reduce 709

-COLON                           Reduce 709

-COMMA                           Reduce 709

-AT                              Reduce 709

-ElidedSemicolonAndRightBrace    Reduce 709

-$eof                            Reduce 709

-

-Default reduction to rule  709

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1180

-

-

-

-

-STATE 558 ----------------------------------------------------------------------

-( 317 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression GREATER_EQUAL ShiftExpression .

-                          (719)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 719

-final                           Reduce 719

-instanceof                      Reduce 719

-native                          Reduce 719

-private                         Reduce 719

-protected                       Reduce 719

-public                          Reduce 719

-static                          Reduce 719

-strictfp                        Reduce 719

-synchronized                    Reduce 719

-transient                       Reduce 719

-volatile                        Reduce 719

-EQUAL_EQUAL                     Reduce 719

-LESS_EQUAL                      Reduce 719

-GREATER_EQUAL                   Reduce 719

-NOT_EQUAL                       Reduce 719

-OR_OR                           Reduce 719

-AND_AND                         Reduce 719

-XOR                             Reduce 719

-AND                             Reduce 719

-OR                              Reduce 719

-GREATER                         Reduce 719

-LESS                            Reduce 719

-RPAREN                          Reduce 719

-RBRACE                          Reduce 719

-RBRACKET                        Reduce 719

-SEMICOLON                       Reduce 719

-QUESTION                        Reduce 719

-COLON                           Reduce 719

-COMMA                           Reduce 719

-AT                              Reduce 719

-ElidedSemicolonAndRightBrace    Reduce 719

-$eof                            Reduce 719

-

-Default reduction to rule  719

-

-

-STATE 559 ----------------------------------------------------------------------

-( 318 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1181

-

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression LESS_EQUAL ShiftExpression .

-                          (718)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 718

-final                           Reduce 718

-instanceof                      Reduce 718

-native                          Reduce 718

-private                         Reduce 718

-protected                       Reduce 718

-public                          Reduce 718

-static                          Reduce 718

-strictfp                        Reduce 718

-synchronized                    Reduce 718

-transient                       Reduce 718

-volatile                        Reduce 718

-EQUAL_EQUAL                     Reduce 718

-LESS_EQUAL                      Reduce 718

-GREATER_EQUAL                   Reduce 718

-NOT_EQUAL                       Reduce 718

-OR_OR                           Reduce 718

-AND_AND                         Reduce 718

-XOR                             Reduce 718

-AND                             Reduce 718

-OR                              Reduce 718

-GREATER                         Reduce 718

-LESS                            Reduce 718

-RPAREN                          Reduce 718

-RBRACE                          Reduce 718

-RBRACKET                        Reduce 718

-SEMICOLON                       Reduce 718

-QUESTION                        Reduce 718

-COLON                           Reduce 718

-COMMA                           Reduce 718

-AT                              Reduce 718

-ElidedSemicolonAndRightBrace    Reduce 718

-$eof                            Reduce 718

-

-Default reduction to rule  718

-

-

-STATE 560 ----------------------------------------------------------------------

-( 319 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1182

-

-

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression GREATER ShiftExpression . (717)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 717

-final                           Reduce 717

-instanceof                      Reduce 717

-native                          Reduce 717

-private                         Reduce 717

-protected                       Reduce 717

-public                          Reduce 717

-static                          Reduce 717

-strictfp                        Reduce 717

-synchronized                    Reduce 717

-transient                       Reduce 717

-volatile                        Reduce 717

-EQUAL_EQUAL                     Reduce 717

-LESS_EQUAL                      Reduce 717

-GREATER_EQUAL                   Reduce 717

-NOT_EQUAL                       Reduce 717

-OR_OR                           Reduce 717

-AND_AND                         Reduce 717

-XOR                             Reduce 717

-AND                             Reduce 717

-OR                              Reduce 717

-GREATER                         Reduce 717

-LESS                            Reduce 717

-RPAREN                          Reduce 717

-RBRACE                          Reduce 717

-RBRACKET                        Reduce 717

-SEMICOLON                       Reduce 717

-QUESTION                        Reduce 717

-COLON                           Reduce 717

-COMMA                           Reduce 717

-AT                              Reduce 717

-ElidedSemicolonAndRightBrace    Reduce 717

-$eof                            Reduce 717

-

-Default reduction to rule  717

-

-

-STATE 561 ----------------------------------------------------------------------

-( 320 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1183

-

-

-RelationalExpression ::= RelationalExpression LESS ShiftExpression . (716)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 716

-final                           Reduce 716

-instanceof                      Reduce 716

-native                          Reduce 716

-private                         Reduce 716

-protected                       Reduce 716

-public                          Reduce 716

-static                          Reduce 716

-strictfp                        Reduce 716

-synchronized                    Reduce 716

-transient                       Reduce 716

-volatile                        Reduce 716

-EQUAL_EQUAL                     Reduce 716

-LESS_EQUAL                      Reduce 716

-GREATER_EQUAL                   Reduce 716

-NOT_EQUAL                       Reduce 716

-OR_OR                           Reduce 716

-AND_AND                         Reduce 716

-XOR                             Reduce 716

-AND                             Reduce 716

-OR                              Reduce 716

-GREATER                         Reduce 716

-LESS                            Reduce 716

-RPAREN                          Reduce 716

-RBRACE                          Reduce 716

-RBRACKET                        Reduce 716

-SEMICOLON                       Reduce 716

-QUESTION                        Reduce 716

-COLON                           Reduce 716

-COMMA                           Reduce 716

-AT                              Reduce 716

-ElidedSemicolonAndRightBrace    Reduce 716

-$eof                            Reduce 716

-

-Default reduction to rule  716

-

-

-STATE 562 ----------------------------------------------------------------------

-( 321 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression ::= AndExpression AND EqualityExpression . (726)

-

-NOT_EQUAL                       Shift  322

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1184

-

-

-EQUAL_EQUAL                     Shift  323

-

-abstract                        Reduce 726

-final                           Reduce 726

-native                          Reduce 726

-private                         Reduce 726

-protected                       Reduce 726

-public                          Reduce 726

-static                          Reduce 726

-strictfp                        Reduce 726

-synchronized                    Reduce 726

-transient                       Reduce 726

-volatile                        Reduce 726

-OR_OR                           Reduce 726

-AND_AND                         Reduce 726

-XOR                             Reduce 726

-AND                             Reduce 726

-OR                              Reduce 726

-RPAREN                          Reduce 726

-RBRACE                          Reduce 726

-RBRACKET                        Reduce 726

-SEMICOLON                       Reduce 726

-QUESTION                        Reduce 726

-COLON                           Reduce 726

-COMMA                           Reduce 726

-AT                              Reduce 726

-ElidedSemicolonAndRightBrace    Reduce 726

-$eof                            Reduce 726

-

-Default reduction to rule  726

-

-

-STATE 563 ----------------------------------------------------------------------

-( 322 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= EqualityExpression NOT_EQUAL InstanceofExpression .

-                        (724)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 724

-final                           Reduce 724

-native                          Reduce 724

-private                         Reduce 724

-protected                       Reduce 724

-public                          Reduce 724

-static                          Reduce 724

-strictfp                        Reduce 724

-synchronized                    Reduce 724

-transient                       Reduce 724

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1185

-

-

-volatile                        Reduce 724

-EQUAL_EQUAL                     Reduce 724

-NOT_EQUAL                       Reduce 724

-OR_OR                           Reduce 724

-AND_AND                         Reduce 724

-XOR                             Reduce 724

-AND                             Reduce 724

-OR                              Reduce 724

-RPAREN                          Reduce 724

-RBRACE                          Reduce 724

-RBRACKET                        Reduce 724

-SEMICOLON                       Reduce 724

-QUESTION                        Reduce 724

-COLON                           Reduce 724

-COMMA                           Reduce 724

-AT                              Reduce 724

-ElidedSemicolonAndRightBrace    Reduce 724

-$eof                            Reduce 724

-

-Default reduction to rule  724

-

-

-STATE 564 ----------------------------------------------------------------------

-( 323 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= EqualityExpression EQUAL_EQUAL InstanceofExpression .

-                        (723)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 723

-final                           Reduce 723

-native                          Reduce 723

-private                         Reduce 723

-protected                       Reduce 723

-public                          Reduce 723

-static                          Reduce 723

-strictfp                        Reduce 723

-synchronized                    Reduce 723

-transient                       Reduce 723

-volatile                        Reduce 723

-EQUAL_EQUAL                     Reduce 723

-NOT_EQUAL                       Reduce 723

-OR_OR                           Reduce 723

-AND_AND                         Reduce 723

-XOR                             Reduce 723

-AND                             Reduce 723

-OR                              Reduce 723

-RPAREN                          Reduce 723

-RBRACE                          Reduce 723

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1186

-

-

-RBRACKET                        Reduce 723

-SEMICOLON                       Reduce 723

-QUESTION                        Reduce 723

-COLON                           Reduce 723

-COMMA                           Reduce 723

-AT                              Reduce 723

-ElidedSemicolonAndRightBrace    Reduce 723

-$eof                            Reduce 723

-

-Default reduction to rule  723

-

-

-STATE 565 ----------------------------------------------------------------------

-( 324 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression ::= InclusiveOrExpression OR ExclusiveOrExpression .

-                           (730)

-

-XOR                             Shift  325

-

-abstract                        Reduce 730

-final                           Reduce 730

-native                          Reduce 730

-private                         Reduce 730

-protected                       Reduce 730

-public                          Reduce 730

-static                          Reduce 730

-strictfp                        Reduce 730

-synchronized                    Reduce 730

-transient                       Reduce 730

-volatile                        Reduce 730

-OR_OR                           Reduce 730

-AND_AND                         Reduce 730

-OR                              Reduce 730

-RPAREN                          Reduce 730

-RBRACE                          Reduce 730

-RBRACKET                        Reduce 730

-SEMICOLON                       Reduce 730

-QUESTION                        Reduce 730

-COLON                           Reduce 730

-COMMA                           Reduce 730

-AT                              Reduce 730

-ElidedSemicolonAndRightBrace    Reduce 730

-$eof                            Reduce 730

-

-Default reduction to rule  730

-

-

-STATE 566 ----------------------------------------------------------------------

-( 325 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1187

-

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression ::= ExclusiveOrExpression XOR AndExpression . (728)

-

-AND                             Shift  321

-

-abstract                        Reduce 728

-final                           Reduce 728

-native                          Reduce 728

-private                         Reduce 728

-protected                       Reduce 728

-public                          Reduce 728

-static                          Reduce 728

-strictfp                        Reduce 728

-synchronized                    Reduce 728

-transient                       Reduce 728

-volatile                        Reduce 728

-OR_OR                           Reduce 728

-AND_AND                         Reduce 728

-XOR                             Reduce 728

-OR                              Reduce 728

-RPAREN                          Reduce 728

-RBRACE                          Reduce 728

-RBRACKET                        Reduce 728

-SEMICOLON                       Reduce 728

-QUESTION                        Reduce 728

-COLON                           Reduce 728

-COMMA                           Reduce 728

-AT                              Reduce 728

-ElidedSemicolonAndRightBrace    Reduce 728

-$eof                            Reduce 728

-

-Default reduction to rule  728

-

-

-STATE 567 ----------------------------------------------------------------------

-( 326 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression  .COLON 

-                          ConditionalExpression 

-

-COLON    Shift  751

-

-

-STATE 568 ----------------------------------------------------------------------

-( 327 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression . (734)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1188

-

-

-AND_AND                         Shift  328

-

-abstract                        Reduce 734

-final                           Reduce 734

-native                          Reduce 734

-private                         Reduce 734

-protected                       Reduce 734

-public                          Reduce 734

-static                          Reduce 734

-strictfp                        Reduce 734

-synchronized                    Reduce 734

-transient                       Reduce 734

-volatile                        Reduce 734

-OR_OR                           Reduce 734

-RPAREN                          Reduce 734

-RBRACE                          Reduce 734

-RBRACKET                        Reduce 734

-SEMICOLON                       Reduce 734

-QUESTION                        Reduce 734

-COLON                           Reduce 734

-COMMA                           Reduce 734

-AT                              Reduce 734

-ElidedSemicolonAndRightBrace    Reduce 734

-$eof                            Reduce 734

-

-Default reduction to rule  734

-

-

-STATE 569 ----------------------------------------------------------------------

-( 328 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression ::= ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression . (732)

-

-OR                              Shift  324

-

-abstract                        Reduce 732

-final                           Reduce 732

-native                          Reduce 732

-private                         Reduce 732

-protected                       Reduce 732

-public                          Reduce 732

-static                          Reduce 732

-strictfp                        Reduce 732

-synchronized                    Reduce 732

-transient                       Reduce 732

-volatile                        Reduce 732

-OR_OR                           Reduce 732

-AND_AND                         Reduce 732

-RPAREN                          Reduce 732

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1189

-

-

-RBRACE                          Reduce 732

-RBRACKET                        Reduce 732

-SEMICOLON                       Reduce 732

-QUESTION                        Reduce 732

-COLON                           Reduce 732

-COMMA                           Reduce 732

-AT                              Reduce 732

-ElidedSemicolonAndRightBrace    Reduce 732

-$eof                            Reduce 732

-

-Default reduction to rule  732

-

-

-STATE 570 ----------------------------------------------------------------------

-( 329 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace ,opt  .RBRACE 

-

-RBRACE    Sh/Rd  461

-

-

-STATE 571 ----------------------------------------------------------------------

-( 329 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .COMMA RBRACE 

-VariableInitializers ::= VariableInitializers  .COMMA VariableInitializer 

-

-COMMA     Shift  752

-RBRACE    Sh/Rd  462

-

-

-STATE 572 ----------------------------------------------------------------------

-( 330 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1190

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   753

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 573 ----------------------------------------------------------------------

-( 332 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1191

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   754

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 574 ----------------------------------------------------------------------

-( 333 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault Type Identifier  .LPAREN 

-

-LPAREN    Sh/Rd  395

-

-

-STATE 575 ----------------------------------------------------------------------

-( 334 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                            Identifier LPAREN 

-

-Identifier    Shift  755

-

-

-STATE 576 ----------------------------------------------------------------------

-( 335 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1192

-

-

-                        MethodHeaderRightParen  .SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen  .COLON PseudoTokens SEMICOLON 

-

-COLON        Shift  756

-SEMICOLON    Sh/Rd  221

-

-

-STATE 577 ----------------------------------------------------------------------

-( 336 )

-

-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt  .AspectHeaderRest 

-

-AspectHeaderRest ::= . (192)

-AspectHeaderRest ::= .AspectHeaderRestStart PseudoTokens 

-AspectHeaderRestStart ::= .Identifier 

-

-Identifier               Sh/Rd  194

-

-AspectHeaderRestStart    Goto   757

-AspectHeaderRest         Gt/Rd  185

-

-LBRACE                   Reduce 192

-

-Default reduction to rule  192

-

-

-STATE 578 ----------------------------------------------------------------------

-( 337 )

-

-AspectBody ::= LBRACE AspectBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  195

-

-

-STATE 579 ----------------------------------------------------------------------

-( 337 )

-

-AspectBodyDeclarationsopt ::= NestedType  .AspectBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1193

-

-

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-AspectBodyDeclarations ::= .AspectBodyDeclaration 

-AspectBodyDeclarations ::= .AspectBodyDeclarations AspectBodyDeclaration 

-AspectBodyDeclaration ::= .ClassBodyDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .ClassMemberDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .StaticInitializer 

-ClassBodyDeclarationNoAroundMethod ::= .ConstructorDeclaration 

-ClassBodyDeclarationNoAroundMethod ::= .Diet NestedMethod CreateInitializer 

-                                       Block 

-ClassMemberDeclarationNoAroundMethod ::= .PointcutDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AspectDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .FieldDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .MethodDeclarationNoAround 

-ClassMemberDeclarationNoAroundMethod ::= .ClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .InterfaceDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .IntertypeClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .EnumDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AnnotationTypeDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .SEMICOLON 

-MethodDeclarationNoAround ::= .AbstractMethodDeclarationNoAround 

-MethodDeclarationNoAround ::= .MethodHeaderNoAround MethodBody 

-AbstractMethodDeclarationNoAround ::= .MethodHeaderNoAround SEMICOLON 

-MethodHeaderNoAround ::= .MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-MethodHeaderNameNoAround ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AspectBodyDeclaration ::= .AroundDeclaration 

-AspectBodyDeclaration ::= .BasicAdviceDeclaration 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1194

-

-

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-AspectBodyDeclaration ::= .InterTypeMethodDeclaration 

-AspectBodyDeclaration ::= .InterTypeConstructorDeclaration 

-AspectBodyDeclaration ::= .InterTypeFieldDeclaration 

-InterTypeMethodDeclaration ::= .AbstractInterTypeMethodDeclaration 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeConstructorDeclaration ::= .InterTypeConstructorHeader MethodBody 

-InterTypeConstructorHeader ::= .InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters GenericType DOT 

-                                   new LPAREN 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1195

-

-

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-AspectBodyDeclaration ::= .DeclareDeclaration 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassDeclaration ::= .ClassHeader ClassBody 

-IntertypeClassDeclaration ::= .IntertypeClassHeader ClassBody 

-IntertypeClassHeader ::= .IntertypeClassHeaderName ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 TypeParameters 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 

-IntertypeClassHeaderName1 ::= .Modifiersopt class OnType DOT JavaIdentifier 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1196

-

-

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                                Shift  1064

-volatile                                Shift  1064

-transient                               Shift  1064

-synchronized                            Shift  1064

-native                                  Shift  1064

-final                                   Shift  1064

-abstract                                Shift  1064

-static                                  Shift  131

-private                                 Shift  1064

-protected                               Shift  1064

-public                                  Shift  1064

-AT                                      Shift  80

-SEMICOLON                               Sh/Rd  214

-declare                                 Shift  183

-

-ClassBodyDeclarationNoAroundMethod      Gt/Rd  200

-AroundDeclaration                       Goto   1237

-BasicAdviceDeclaration                  Goto   1237

-InterTypeMethodDeclaration              Goto   1237

-InterTypeConstructorDeclaration         Goto   1237

-InterTypeFieldDeclaration               Goto   1237

-DeclareDeclaration                      Goto   1237

-DeclareHeader                           Goto   182

-DeclareAnnotationHeader                 Goto   181

-Modifiersopt                            Goto   767

-InterTypeFieldHeader                    Goto   186

-InterTypeConstructorHeaderName          Goto   766

-InterTypeConstructorHeader              Goto   765

-InterTypeMethodHeader                   Goto   185

-InterTypeMethodHeaderName               Goto   184

-AbstractInterTypeMethodDeclaration      Goto   1237

-BeforeAdviceHeader                      Goto   187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1197

-

-

-AfterAdviceHeader                       Goto   187

-AfterAdviceHeaderName                   Goto   189

-BeforeAdviceHeaderName                  Goto   188

-BasicAdviceHeader                       Goto   187

-AroundHeaderName                        Goto   191

-AroundHeader                            Goto   190

-PointcutDeclaration                     Goto   1236

-AspectDeclaration                       Goto   1236

-FieldDeclaration                        Goto   1236

-MethodDeclarationNoAround               Goto   1236

-ClassDeclaration                        Goto   1236

-InterfaceDeclaration                    Goto   1236

-IntertypeClassDeclaration               Goto   1236

-EnumDeclaration                         Goto   1236

-AnnotationTypeDeclaration               Goto   1236

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   126

-AnnotationTypeDeclarationHeader         Goto   32

-EnumHeaderName                          Goto   29

-EnumHeader                              Goto   30

-IntertypeClassHeaderName                Goto   764

-IntertypeClassHeaderName1               Goto   763

-IntertypeClassHeader                    Goto   762

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-MethodHeaderNoAround                    Goto   761

-MethodHeaderNameNoAround                Goto   760

-AbstractMethodDeclarationNoAround       Goto   1236

-AspectHeaderName                        Goto   125

-AspectHeaderName1                       Goto   128

-AspectHeaderName2                       Goto   127

-AspectHeader                            Goto   129

-Modifier                                Goto   1064

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1064

-Annotation                              Gt/Rd  171

-PointcutHeader                          Goto   124

-StaticOnly                              Goto   130

-ConstructorHeader                       Goto   132

-ConstructorHeaderName                   Goto   134

-ClassMemberDeclarationNoAroundMethod    Goto   1236

-StaticInitializer                       Goto   1236

-ConstructorDeclaration                  Goto   1236

-Diet                                    Goto   759

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1198

-

-

-AspectBodyDeclaration                   Gt/Rd  196

-AspectBodyDeclarations                  Goto   758

-

-LBRACE                                  Reduce 361

-Identifier                              Reduce 764

-boolean                                 Reduce 764

-byte                                    Reduce 764

-char                                    Reduce 764

-class                                   Reduce 764

-double                                  Reduce 764

-enum                                    Reduce 764

-float                                   Reduce 764

-int                                     Reduce 764

-interface                               Reduce 764

-long                                    Reduce 764

-short                                   Reduce 764

-void                                    Reduce 764

-aspect                                  Reduce 764

-pointcut                                Reduce 764

-around                                  Reduce 764

-before                                  Reduce 764

-after                                   Reduce 764

-privileged                              Reduce 764

-LESS                                    Reduce 764

-AT308                                   Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 580 ----------------------------------------------------------------------

-( 339 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters Type  .JavaIdentifier LPAREN 

-

-Identifier              Shift  768

-declare                 Shift  768

-after                   Shift  768

-before                  Shift  768

-pointcut                Shift  768

-privileged              Shift  768

-aspect                  Shift  768

-around                  Shift  768

-

-AjSimpleNameNoAround    Goto   768

-AjSimpleName            Goto   768

-JavaIdentifier          Goto   768

-

-

-STATE 581 ----------------------------------------------------------------------

-( 339 351 430 871 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1199

-

-

-SimpleName ::= Identifier . (87)

-ConstructorHeaderName ::= Modifiersopt TypeParameters Identifier  .LPAREN 

-

-LPAREN        Sh/Rd  401

-

-Identifier    Reduce 84

-aspect        Reduce 84

-pointcut      Reduce 84

-around        Reduce 84

-before        Reduce 84

-after         Reduce 84

-declare       Reduce 84

-privileged    Reduce 84

-LESS          Reduce 84

-LBRACKET      Reduce 84

-DOT           Reduce 84

-AT308         Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 582 ----------------------------------------------------------------------

-( 340 352 404 428 870 )

-

-FieldDeclaration ::= Modifiersopt Type VariableDeclarators  .SEMICOLON 

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-

-COMMA        Shift  730

-SEMICOLON    Sh/Rd  373

-

-

-STATE 583 ----------------------------------------------------------------------

-( 340 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-MethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1200

-

-

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LPAREN                        Sh/Rd  393

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 584 ----------------------------------------------------------------------

-( 341 )

-

-PointcutHeader ::= Modifiersopt pointcut JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  223

-

-

-STATE 585 ----------------------------------------------------------------------

-( 342 )

-

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt  .aspect Identifier 

-

-aspect    Shift  769

-

-

-STATE 586 ----------------------------------------------------------------------

-( 345 )

-

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen  .MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1201

-

-

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  400

-MethodHeaderThrowsClauseopt    Gt/Rd  400

-

-abstract                       Reduce 772

-final                          Reduce 772

-native                         Reduce 772

-private                        Reduce 772

-protected                      Reduce 772

-public                         Reduce 772

-static                         Reduce 772

-strictfp                       Reduce 772

-synchronized                   Reduce 772

-transient                      Reduce 772

-volatile                       Reduce 772

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-AT                             Reduce 772

-$eof                           Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 587 ----------------------------------------------------------------------

-( 346 )

-

-ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  360

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 588 ----------------------------------------------------------------------

-( 348 )

-

-MethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  393

-

-

-STATE 589 ----------------------------------------------------------------------

-( 350 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1202

-

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PackageDeclarationName ::= PackageComment package Name  .RejectTypeAnnotations 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  445

-

-RejectTypeAnnotations    Gt/Rd  142

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 590 ----------------------------------------------------------------------

-( 351 )

-

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                               JavaIdentifier LPAREN 

-

-Identifier              Shift  771

-declare                 Shift  771

-after                   Shift  771

-before                  Shift  771

-pointcut                Shift  771

-privileged              Shift  771

-aspect                  Shift  771

-around                  Shift  771

-

-AjSimpleNameNoAround    Goto   771

-AjSimpleName            Goto   771

-JavaIdentifier          Goto   771

-

-

-STATE 591 ----------------------------------------------------------------------

-( 352 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-AnnotationMethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1203

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LPAREN                        Sh/Rd  956

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 592 ----------------------------------------------------------------------

-( 353 )

-

-PackageDeclarationName ::= Modifiers package PushRealModifiers  .Name 

-                           RejectTypeAnnotations 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1204

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   772

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   772

-

-

-STATE 593 ----------------------------------------------------------------------

-( 354 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1205

-

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   773

-

-default                       Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 594 ----------------------------------------------------------------------

-( 355 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-SingleStaticImportDeclarationName ::= import static Name  .

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import static Name  .DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  774

-

-RejectTypeAnnotations    Gt/Rd  815

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 595 ----------------------------------------------------------------------

-( 356 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-TypeImportOnDemandDeclarationName ::= import Name DOT  .RejectTypeAnnotations 

-                                      MULTIPLY 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1206

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-RejectTypeAnnotations ::= . (104)

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-RejectTypeAnnotations         Goto   775

-

-MULTIPLY                      Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 596 ----------------------------------------------------------------------

-( 357 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1207

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1208

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1209

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1210

-

-

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1211

-

-

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MemberValues ::= .MemberValues COMMA MemberValue 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1212

-

-

-RBRACE                                  Sh/Rd  984

-COMMA                                   Shift  776

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1238

-true                                    Shift  1238

-null                                    Shift  1238

-StringLiteral                           Shift  1238

-CharacterLiteral                        Shift  1238

-DoubleLiteral                           Shift  1238

-FloatingPointLiteral                    Shift  1238

-LongLiteral                             Shift  1238

-IntegerLiteral                          Shift  1238

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   777

-NameOrAj                                Goto   171

-Annotation                              Goto   777

-MemberValueArrayInitializer             Goto   777

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   777

-MarkerAnnotation                        Goto   777

-SingleMemberAnnotation                  Goto   777

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1213

-

-

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1239

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1239

-CastExpression                          Goto   1239

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1246

-BooleanLiteral                          Goto   1238

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1238

-ClassInstanceCreationExpression         Goto   1245

-FieldAccess                             Goto   1244

-MethodInvocation                        Goto   1243

-ArrayAccess                             Goto   1242

-LambdaExpression                        Goto   1241

-ReferenceExpression                     Goto   1240

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1239

-PreDecrementExpression                  Goto   1239

-UnaryExpressionNotPlusMinus_NotName     Goto   1239

-MemberValue                             Goto   777

-MemberValues                            Goto   777

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1214

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 597 ----------------------------------------------------------------------

-( 362 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression . (897)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 897

-final                   Reduce 897

-instanceof              Reduce 897

-native                  Reduce 897

-private                 Reduce 897

-protected               Reduce 897

-public                  Reduce 897

-static                  Reduce 897

-strictfp                Reduce 897

-synchronized            Reduce 897

-transient               Reduce 897

-volatile                Reduce 897

-EQUAL_EQUAL             Reduce 897

-LESS_EQUAL              Reduce 897

-GREATER_EQUAL           Reduce 897

-NOT_EQUAL               Reduce 897

-LEFT_SHIFT              Reduce 897

-RIGHT_SHIFT             Reduce 897

-UNSIGNED_RIGHT_SHIFT    Reduce 897

-OR_OR                   Reduce 897

-AND_AND                 Reduce 897

-PLUS                    Reduce 897

-MINUS                   Reduce 897

-XOR                     Reduce 897

-AND                     Reduce 897

-OR                      Reduce 897

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1215

-

-

-GREATER                 Reduce 897

-LESS                    Reduce 897

-RPAREN                  Reduce 897

-RBRACE                  Reduce 897

-SEMICOLON               Reduce 897

-QUESTION                Reduce 897

-COMMA                   Reduce 897

-AT                      Reduce 897

-$eof                    Reduce 897

-

-Default reduction to rule  897

-

-

-STATE 598 ----------------------------------------------------------------------

-( 363 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression . (895)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 895

-final                   Reduce 895

-instanceof              Reduce 895

-native                  Reduce 895

-private                 Reduce 895

-protected               Reduce 895

-public                  Reduce 895

-static                  Reduce 895

-strictfp                Reduce 895

-synchronized            Reduce 895

-transient               Reduce 895

-volatile                Reduce 895

-EQUAL_EQUAL             Reduce 895

-LESS_EQUAL              Reduce 895

-GREATER_EQUAL           Reduce 895

-NOT_EQUAL               Reduce 895

-LEFT_SHIFT              Reduce 895

-RIGHT_SHIFT             Reduce 895

-UNSIGNED_RIGHT_SHIFT    Reduce 895

-OR_OR                   Reduce 895

-AND_AND                 Reduce 895

-PLUS                    Reduce 895

-MINUS                   Reduce 895

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1216

-

-

-XOR                     Reduce 895

-AND                     Reduce 895

-OR                      Reduce 895

-GREATER                 Reduce 895

-LESS                    Reduce 895

-RPAREN                  Reduce 895

-RBRACE                  Reduce 895

-SEMICOLON               Reduce 895

-QUESTION                Reduce 895

-COMMA                   Reduce 895

-AT                      Reduce 895

-$eof                    Reduce 895

-

-Default reduction to rule  895

-

-

-STATE 599 ----------------------------------------------------------------------

-( 367 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression . (913)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 913

-final                   Reduce 913

-instanceof              Reduce 913

-native                  Reduce 913

-private                 Reduce 913

-protected               Reduce 913

-public                  Reduce 913

-static                  Reduce 913

-strictfp                Reduce 913

-synchronized            Reduce 913

-transient               Reduce 913

-volatile                Reduce 913

-EQUAL_EQUAL             Reduce 913

-LESS_EQUAL              Reduce 913

-GREATER_EQUAL           Reduce 913

-NOT_EQUAL               Reduce 913

-OR_OR                   Reduce 913

-AND_AND                 Reduce 913

-XOR                     Reduce 913

-AND                     Reduce 913

-OR                      Reduce 913

-RPAREN                  Reduce 913

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1217

-

-

-RBRACE                  Reduce 913

-SEMICOLON               Reduce 913

-QUESTION                Reduce 913

-COMMA                   Reduce 913

-AT                      Reduce 913

-$eof                    Reduce 913

-

-Default reduction to rule  913

-

-

-STATE 600 ----------------------------------------------------------------------

-( 368 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression . (911)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 911

-final                   Reduce 911

-instanceof              Reduce 911

-native                  Reduce 911

-private                 Reduce 911

-protected               Reduce 911

-public                  Reduce 911

-static                  Reduce 911

-strictfp                Reduce 911

-synchronized            Reduce 911

-transient               Reduce 911

-volatile                Reduce 911

-EQUAL_EQUAL             Reduce 911

-LESS_EQUAL              Reduce 911

-GREATER_EQUAL           Reduce 911

-NOT_EQUAL               Reduce 911

-OR_OR                   Reduce 911

-AND_AND                 Reduce 911

-XOR                     Reduce 911

-AND                     Reduce 911

-OR                      Reduce 911

-RPAREN                  Reduce 911

-RBRACE                  Reduce 911

-SEMICOLON               Reduce 911

-QUESTION                Reduce 911

-COMMA                   Reduce 911

-AT                      Reduce 911

-$eof                    Reduce 911

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1218

-

-

-

-Default reduction to rule  911

-

-

-STATE 601 ----------------------------------------------------------------------

-( 369 552 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= Name LESS ShiftExpression . (908)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 908

-final                   Reduce 908

-instanceof              Reduce 908

-native                  Reduce 908

-private                 Reduce 908

-protected               Reduce 908

-public                  Reduce 908

-static                  Reduce 908

-strictfp                Reduce 908

-synchronized            Reduce 908

-transient               Reduce 908

-volatile                Reduce 908

-EQUAL_EQUAL             Reduce 908

-LESS_EQUAL              Reduce 908

-GREATER_EQUAL           Reduce 908

-NOT_EQUAL               Reduce 908

-OR_OR                   Reduce 908

-AND_AND                 Reduce 908

-XOR                     Reduce 908

-AND                     Reduce 908

-OR                      Reduce 908

-RPAREN                  Reduce 908

-RBRACE                  Reduce 908

-SEMICOLON               Reduce 908

-QUESTION                Reduce 908

-COMMA                   Reduce 908

-AT                      Reduce 908

-$eof                    Reduce 908

-

-Default reduction to rule  908

-

-

-STATE 602 ----------------------------------------------------------------------

-( 370 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1219

-

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName GREATER 

-                                 ShiftExpression . (909)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 909

-final                   Reduce 909

-instanceof              Reduce 909

-native                  Reduce 909

-private                 Reduce 909

-protected               Reduce 909

-public                  Reduce 909

-static                  Reduce 909

-strictfp                Reduce 909

-synchronized            Reduce 909

-transient               Reduce 909

-volatile                Reduce 909

-EQUAL_EQUAL             Reduce 909

-LESS_EQUAL              Reduce 909

-GREATER_EQUAL           Reduce 909

-NOT_EQUAL               Reduce 909

-OR_OR                   Reduce 909

-AND_AND                 Reduce 909

-XOR                     Reduce 909

-AND                     Reduce 909

-OR                      Reduce 909

-RPAREN                  Reduce 909

-RBRACE                  Reduce 909

-SEMICOLON               Reduce 909

-QUESTION                Reduce 909

-COMMA                   Reduce 909

-AT                      Reduce 909

-$eof                    Reduce 909

-

-Default reduction to rule  909

-

-

-STATE 603 ----------------------------------------------------------------------

-( 371 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName LESS 

-                                 ShiftExpression . (907)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1220

-

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 907

-final                   Reduce 907

-instanceof              Reduce 907

-native                  Reduce 907

-private                 Reduce 907

-protected               Reduce 907

-public                  Reduce 907

-static                  Reduce 907

-strictfp                Reduce 907

-synchronized            Reduce 907

-transient               Reduce 907

-volatile                Reduce 907

-EQUAL_EQUAL             Reduce 907

-LESS_EQUAL              Reduce 907

-GREATER_EQUAL           Reduce 907

-NOT_EQUAL               Reduce 907

-OR_OR                   Reduce 907

-AND_AND                 Reduce 907

-XOR                     Reduce 907

-AND                     Reduce 907

-OR                      Reduce 907

-RPAREN                  Reduce 907

-RBRACE                  Reduce 907

-SEMICOLON               Reduce 907

-QUESTION                Reduce 907

-COMMA                   Reduce 907

-AT                      Reduce 907

-$eof                    Reduce 907

-

-Default reduction to rule  907

-

-

-STATE 604 ----------------------------------------------------------------------

-( 372 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression . (904)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 904

-final                   Reduce 904

-instanceof              Reduce 904

-native                  Reduce 904

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1221

-

-

-private                 Reduce 904

-protected               Reduce 904

-public                  Reduce 904

-static                  Reduce 904

-strictfp                Reduce 904

-synchronized            Reduce 904

-transient               Reduce 904

-volatile                Reduce 904

-EQUAL_EQUAL             Reduce 904

-LESS_EQUAL              Reduce 904

-GREATER_EQUAL           Reduce 904

-NOT_EQUAL               Reduce 904

-LEFT_SHIFT              Reduce 904

-RIGHT_SHIFT             Reduce 904

-UNSIGNED_RIGHT_SHIFT    Reduce 904

-OR_OR                   Reduce 904

-AND_AND                 Reduce 904

-XOR                     Reduce 904

-AND                     Reduce 904

-OR                      Reduce 904

-GREATER                 Reduce 904

-LESS                    Reduce 904

-RPAREN                  Reduce 904

-RBRACE                  Reduce 904

-SEMICOLON               Reduce 904

-QUESTION                Reduce 904

-COMMA                   Reduce 904

-AT                      Reduce 904

-$eof                    Reduce 904

-

-Default reduction to rule  904

-

-

-STATE 605 ----------------------------------------------------------------------

-( 373 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression . (902)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 902

-final                   Reduce 902

-instanceof              Reduce 902

-native                  Reduce 902

-private                 Reduce 902

-protected               Reduce 902

-public                  Reduce 902

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1222

-

-

-static                  Reduce 902

-strictfp                Reduce 902

-synchronized            Reduce 902

-transient               Reduce 902

-volatile                Reduce 902

-EQUAL_EQUAL             Reduce 902

-LESS_EQUAL              Reduce 902

-GREATER_EQUAL           Reduce 902

-NOT_EQUAL               Reduce 902

-LEFT_SHIFT              Reduce 902

-RIGHT_SHIFT             Reduce 902

-UNSIGNED_RIGHT_SHIFT    Reduce 902

-OR_OR                   Reduce 902

-AND_AND                 Reduce 902

-XOR                     Reduce 902

-AND                     Reduce 902

-OR                      Reduce 902

-GREATER                 Reduce 902

-LESS                    Reduce 902

-RPAREN                  Reduce 902

-RBRACE                  Reduce 902

-SEMICOLON               Reduce 902

-QUESTION                Reduce 902

-COMMA                   Reduce 902

-AT                      Reduce 902

-$eof                    Reduce 902

-

-Default reduction to rule  902

-

-

-STATE 606 ----------------------------------------------------------------------

-( 374 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression . (900)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 900

-final                   Reduce 900

-instanceof              Reduce 900

-native                  Reduce 900

-private                 Reduce 900

-protected               Reduce 900

-public                  Reduce 900

-static                  Reduce 900

-strictfp                Reduce 900

-synchronized            Reduce 900

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1223

-

-

-transient               Reduce 900

-volatile                Reduce 900

-EQUAL_EQUAL             Reduce 900

-LESS_EQUAL              Reduce 900

-GREATER_EQUAL           Reduce 900

-NOT_EQUAL               Reduce 900

-LEFT_SHIFT              Reduce 900

-RIGHT_SHIFT             Reduce 900

-UNSIGNED_RIGHT_SHIFT    Reduce 900

-OR_OR                   Reduce 900

-AND_AND                 Reduce 900

-XOR                     Reduce 900

-AND                     Reduce 900

-OR                      Reduce 900

-GREATER                 Reduce 900

-LESS                    Reduce 900

-RPAREN                  Reduce 900

-RBRACE                  Reduce 900

-SEMICOLON               Reduce 900

-QUESTION                Reduce 900

-COMMA                   Reduce 900

-AT                      Reduce 900

-$eof                    Reduce 900

-

-Default reduction to rule  900

-

-

-STATE 607 ----------------------------------------------------------------------

-( 375 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression . (921)

-

-instanceof      Shift  316

-

-abstract        Reduce 921

-final           Reduce 921

-native          Reduce 921

-private         Reduce 921

-protected       Reduce 921

-public          Reduce 921

-static          Reduce 921

-strictfp        Reduce 921

-synchronized    Reduce 921

-transient       Reduce 921

-volatile        Reduce 921

-EQUAL_EQUAL     Reduce 921

-NOT_EQUAL       Reduce 921

-OR_OR           Reduce 921

-AND_AND         Reduce 921

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1224

-

-

-XOR             Reduce 921

-AND             Reduce 921

-OR              Reduce 921

-RPAREN          Reduce 921

-RBRACE          Reduce 921

-SEMICOLON       Reduce 921

-QUESTION        Reduce 921

-COMMA           Reduce 921

-AT              Reduce 921

-$eof            Reduce 921

-

-Default reduction to rule  921

-

-

-STATE 608 ----------------------------------------------------------------------

-( 376 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression . (919)

-

-instanceof      Shift  316

-

-abstract        Reduce 919

-final           Reduce 919

-native          Reduce 919

-private         Reduce 919

-protected       Reduce 919

-public          Reduce 919

-static          Reduce 919

-strictfp        Reduce 919

-synchronized    Reduce 919

-transient       Reduce 919

-volatile        Reduce 919

-EQUAL_EQUAL     Reduce 919

-NOT_EQUAL       Reduce 919

-OR_OR           Reduce 919

-AND_AND         Reduce 919

-XOR             Reduce 919

-AND             Reduce 919

-OR              Reduce 919

-RPAREN          Reduce 919

-RBRACE          Reduce 919

-SEMICOLON       Reduce 919

-QUESTION        Reduce 919

-COMMA           Reduce 919

-AT              Reduce 919

-$eof            Reduce 919

-

-Default reduction to rule  919

-

-

-STATE 609 ----------------------------------------------------------------------

-( 378 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1225

-

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR 

-                                  AndExpression . (927)

-

-AND             Shift  321

-

-abstract        Reduce 927

-final           Reduce 927

-native          Reduce 927

-private         Reduce 927

-protected       Reduce 927

-public          Reduce 927

-static          Reduce 927

-strictfp        Reduce 927

-synchronized    Reduce 927

-transient       Reduce 927

-volatile        Reduce 927

-OR_OR           Reduce 927

-AND_AND         Reduce 927

-XOR             Reduce 927

-OR              Reduce 927

-RPAREN          Reduce 927

-RBRACE          Reduce 927

-SEMICOLON       Reduce 927

-QUESTION        Reduce 927

-COMMA           Reduce 927

-AT              Reduce 927

-$eof            Reduce 927

-

-Default reduction to rule  927

-

-

-STATE 610 ----------------------------------------------------------------------

-( 379 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= AndExpression_NotName AND EqualityExpression . (924)

-

-NOT_EQUAL       Shift  322

-EQUAL_EQUAL     Shift  323

-

-abstract        Reduce 924

-final           Reduce 924

-native          Reduce 924

-private         Reduce 924

-protected       Reduce 924

-public          Reduce 924

-static          Reduce 924

-strictfp        Reduce 924

-synchronized    Reduce 924

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1226

-

-

-transient       Reduce 924

-volatile        Reduce 924

-OR_OR           Reduce 924

-AND_AND         Reduce 924

-XOR             Reduce 924

-AND             Reduce 924

-OR              Reduce 924

-RPAREN          Reduce 924

-RBRACE          Reduce 924

-SEMICOLON       Reduce 924

-QUESTION        Reduce 924

-COMMA           Reduce 924

-AT              Reduce 924

-$eof            Reduce 924

-

-Default reduction to rule  924

-

-

-STATE 611 ----------------------------------------------------------------------

-( 380 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                     AND_AND InclusiveOrExpression . (933)

-

-OR              Shift  324

-

-abstract        Reduce 933

-final           Reduce 933

-native          Reduce 933

-private         Reduce 933

-protected       Reduce 933

-public          Reduce 933

-static          Reduce 933

-strictfp        Reduce 933

-synchronized    Reduce 933

-transient       Reduce 933

-volatile        Reduce 933

-OR_OR           Reduce 933

-AND_AND         Reduce 933

-RPAREN          Reduce 933

-RBRACE          Reduce 933

-SEMICOLON       Reduce 933

-QUESTION        Reduce 933

-COMMA           Reduce 933

-AT              Reduce 933

-$eof            Reduce 933

-

-Default reduction to rule  933

-

-

-STATE 612 ----------------------------------------------------------------------

-( 381 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1227

-

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression . (930)

-

-XOR             Shift  325

-

-abstract        Reduce 930

-final           Reduce 930

-native          Reduce 930

-private         Reduce 930

-protected       Reduce 930

-public          Reduce 930

-static          Reduce 930

-strictfp        Reduce 930

-synchronized    Reduce 930

-transient       Reduce 930

-volatile        Reduce 930

-OR_OR           Reduce 930

-AND_AND         Reduce 930

-OR              Reduce 930

-RPAREN          Reduce 930

-RBRACE          Reduce 930

-SEMICOLON       Reduce 930

-QUESTION        Reduce 930

-COMMA           Reduce 930

-AT              Reduce 930

-$eof            Reduce 930

-

-Default reduction to rule  930

-

-

-STATE 613 ----------------------------------------------------------------------

-( 382 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression  .COLON 

-                                  ConditionalExpression 

-

-COLON    Shift  778

-

-

-STATE 614 ----------------------------------------------------------------------

-( 383 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj OR_OR ConditionalAndExpression .

-                                     (937)

-

-AND_AND         Shift  328

-

-abstract        Reduce 937

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1228

-

-

-final           Reduce 937

-native          Reduce 937

-private         Reduce 937

-protected       Reduce 937

-public          Reduce 937

-static          Reduce 937

-strictfp        Reduce 937

-synchronized    Reduce 937

-transient       Reduce 937

-volatile        Reduce 937

-OR_OR           Reduce 937

-RPAREN          Reduce 937

-RBRACE          Reduce 937

-SEMICOLON       Reduce 937

-QUESTION        Reduce 937

-COMMA           Reduce 937

-AT              Reduce 937

-$eof            Reduce 937

-

-Default reduction to rule  937

-

-

-STATE 615 ----------------------------------------------------------------------

-( 384 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj AND_AND InclusiveOrExpression .

-                                      (934)

-

-OR              Shift  324

-

-abstract        Reduce 934

-final           Reduce 934

-native          Reduce 934

-private         Reduce 934

-protected       Reduce 934

-public          Reduce 934

-static          Reduce 934

-strictfp        Reduce 934

-synchronized    Reduce 934

-transient       Reduce 934

-volatile        Reduce 934

-OR_OR           Reduce 934

-AND_AND         Reduce 934

-RPAREN          Reduce 934

-RBRACE          Reduce 934

-SEMICOLON       Reduce 934

-QUESTION        Reduce 934

-COMMA           Reduce 934

-AT              Reduce 934

-$eof            Reduce 934

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1229

-

-

-

-Default reduction to rule  934

-

-

-STATE 616 ----------------------------------------------------------------------

-( 385 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj OR ExclusiveOrExpression . (931)

-

-XOR             Shift  325

-

-abstract        Reduce 931

-final           Reduce 931

-native          Reduce 931

-private         Reduce 931

-protected       Reduce 931

-public          Reduce 931

-static          Reduce 931

-strictfp        Reduce 931

-synchronized    Reduce 931

-transient       Reduce 931

-volatile        Reduce 931

-OR_OR           Reduce 931

-AND_AND         Reduce 931

-OR              Reduce 931

-RPAREN          Reduce 931

-RBRACE          Reduce 931

-SEMICOLON       Reduce 931

-QUESTION        Reduce 931

-COMMA           Reduce 931

-AT              Reduce 931

-$eof            Reduce 931

-

-Default reduction to rule  931

-

-

-STATE 617 ----------------------------------------------------------------------

-( 386 )

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj XOR AndExpression . (928)

-

-AND             Shift  321

-

-abstract        Reduce 928

-final           Reduce 928

-native          Reduce 928

-private         Reduce 928

-protected       Reduce 928

-public          Reduce 928

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1230

-

-

-static          Reduce 928

-strictfp        Reduce 928

-synchronized    Reduce 928

-transient       Reduce 928

-volatile        Reduce 928

-OR_OR           Reduce 928

-AND_AND         Reduce 928

-XOR             Reduce 928

-OR              Reduce 928

-RPAREN          Reduce 928

-RBRACE          Reduce 928

-SEMICOLON       Reduce 928

-QUESTION        Reduce 928

-COMMA           Reduce 928

-AT              Reduce 928

-$eof            Reduce 928

-

-Default reduction to rule  928

-

-

-STATE 618 ----------------------------------------------------------------------

-( 387 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj AND EqualityExpression . (925)

-

-NOT_EQUAL       Shift  322

-EQUAL_EQUAL     Shift  323

-

-abstract        Reduce 925

-final           Reduce 925

-native          Reduce 925

-private         Reduce 925

-protected       Reduce 925

-public          Reduce 925

-static          Reduce 925

-strictfp        Reduce 925

-synchronized    Reduce 925

-transient       Reduce 925

-volatile        Reduce 925

-OR_OR           Reduce 925

-AND_AND         Reduce 925

-XOR             Reduce 925

-AND             Reduce 925

-OR              Reduce 925

-RPAREN          Reduce 925

-RBRACE          Reduce 925

-SEMICOLON       Reduce 925

-QUESTION        Reduce 925

-COMMA           Reduce 925

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1231

-

-

-AT              Reduce 925

-$eof            Reduce 925

-

-Default reduction to rule  925

-

-

-STATE 619 ----------------------------------------------------------------------

-( 388 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj NOT_EQUAL InstanceofExpression . (922)

-

-instanceof      Shift  316

-

-abstract        Reduce 922

-final           Reduce 922

-native          Reduce 922

-private         Reduce 922

-protected       Reduce 922

-public          Reduce 922

-static          Reduce 922

-strictfp        Reduce 922

-synchronized    Reduce 922

-transient       Reduce 922

-volatile        Reduce 922

-EQUAL_EQUAL     Reduce 922

-NOT_EQUAL       Reduce 922

-OR_OR           Reduce 922

-AND_AND         Reduce 922

-XOR             Reduce 922

-AND             Reduce 922

-OR              Reduce 922

-RPAREN          Reduce 922

-RBRACE          Reduce 922

-SEMICOLON       Reduce 922

-QUESTION        Reduce 922

-COMMA           Reduce 922

-AT              Reduce 922

-$eof            Reduce 922

-

-Default reduction to rule  922

-

-

-STATE 620 ----------------------------------------------------------------------

-( 389 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL InstanceofExpression .

-                                (920)

-

-instanceof      Shift  316

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1232

-

-

-

-abstract        Reduce 920

-final           Reduce 920

-native          Reduce 920

-private         Reduce 920

-protected       Reduce 920

-public          Reduce 920

-static          Reduce 920

-strictfp        Reduce 920

-synchronized    Reduce 920

-transient       Reduce 920

-volatile        Reduce 920

-EQUAL_EQUAL     Reduce 920

-NOT_EQUAL       Reduce 920

-OR_OR           Reduce 920

-AND_AND         Reduce 920

-XOR             Reduce 920

-AND             Reduce 920

-OR              Reduce 920

-RPAREN          Reduce 920

-RBRACE          Reduce 920

-SEMICOLON       Reduce 920

-QUESTION        Reduce 920

-COMMA           Reduce 920

-AT              Reduce 920

-$eof            Reduce 920

-

-Default reduction to rule  920

-

-

-STATE 621 ----------------------------------------------------------------------

-( 391 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL ShiftExpression . (914)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 914

-final                   Reduce 914

-instanceof              Reduce 914

-native                  Reduce 914

-private                 Reduce 914

-protected               Reduce 914

-public                  Reduce 914

-static                  Reduce 914

-strictfp                Reduce 914

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1233

-

-

-synchronized            Reduce 914

-transient               Reduce 914

-volatile                Reduce 914

-EQUAL_EQUAL             Reduce 914

-LESS_EQUAL              Reduce 914

-GREATER_EQUAL           Reduce 914

-NOT_EQUAL               Reduce 914

-OR_OR                   Reduce 914

-AND_AND                 Reduce 914

-XOR                     Reduce 914

-AND                     Reduce 914

-OR                      Reduce 914

-RPAREN                  Reduce 914

-RBRACE                  Reduce 914

-SEMICOLON               Reduce 914

-QUESTION                Reduce 914

-COMMA                   Reduce 914

-AT                      Reduce 914

-$eof                    Reduce 914

-

-Default reduction to rule  914

-

-

-STATE 622 ----------------------------------------------------------------------

-( 392 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj LESS_EQUAL ShiftExpression . (912)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 912

-final                   Reduce 912

-instanceof              Reduce 912

-native                  Reduce 912

-private                 Reduce 912

-protected               Reduce 912

-public                  Reduce 912

-static                  Reduce 912

-strictfp                Reduce 912

-synchronized            Reduce 912

-transient               Reduce 912

-volatile                Reduce 912

-EQUAL_EQUAL             Reduce 912

-LESS_EQUAL              Reduce 912

-GREATER_EQUAL           Reduce 912

-NOT_EQUAL               Reduce 912

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1234

-

-

-OR_OR                   Reduce 912

-AND_AND                 Reduce 912

-XOR                     Reduce 912

-AND                     Reduce 912

-OR                      Reduce 912

-RPAREN                  Reduce 912

-RBRACE                  Reduce 912

-SEMICOLON               Reduce 912

-QUESTION                Reduce 912

-COMMA                   Reduce 912

-AT                      Reduce 912

-$eof                    Reduce 912

-

-Default reduction to rule  912

-

-

-STATE 623 ----------------------------------------------------------------------

-( 393 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj GREATER ShiftExpression . (910)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 910

-final                   Reduce 910

-instanceof              Reduce 910

-native                  Reduce 910

-private                 Reduce 910

-protected               Reduce 910

-public                  Reduce 910

-static                  Reduce 910

-strictfp                Reduce 910

-synchronized            Reduce 910

-transient               Reduce 910

-volatile                Reduce 910

-EQUAL_EQUAL             Reduce 910

-LESS_EQUAL              Reduce 910

-GREATER_EQUAL           Reduce 910

-NOT_EQUAL               Reduce 910

-OR_OR                   Reduce 910

-AND_AND                 Reduce 910

-XOR                     Reduce 910

-AND                     Reduce 910

-OR                      Reduce 910

-RPAREN                  Reduce 910

-RBRACE                  Reduce 910

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1235

-

-

-SEMICOLON               Reduce 910

-QUESTION                Reduce 910

-COMMA                   Reduce 910

-AT                      Reduce 910

-$eof                    Reduce 910

-

-Default reduction to rule  910

-

-

-STATE 624 ----------------------------------------------------------------------

-( 394 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression .

-                             (905)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 905

-final                   Reduce 905

-instanceof              Reduce 905

-native                  Reduce 905

-private                 Reduce 905

-protected               Reduce 905

-public                  Reduce 905

-static                  Reduce 905

-strictfp                Reduce 905

-synchronized            Reduce 905

-transient               Reduce 905

-volatile                Reduce 905

-EQUAL_EQUAL             Reduce 905

-LESS_EQUAL              Reduce 905

-GREATER_EQUAL           Reduce 905

-NOT_EQUAL               Reduce 905

-LEFT_SHIFT              Reduce 905

-RIGHT_SHIFT             Reduce 905

-UNSIGNED_RIGHT_SHIFT    Reduce 905

-OR_OR                   Reduce 905

-AND_AND                 Reduce 905

-XOR                     Reduce 905

-AND                     Reduce 905

-OR                      Reduce 905

-GREATER                 Reduce 905

-LESS                    Reduce 905

-RPAREN                  Reduce 905

-RBRACE                  Reduce 905

-SEMICOLON               Reduce 905

-QUESTION                Reduce 905

-COMMA                   Reduce 905

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1236

-

-

-AT                      Reduce 905

-$eof                    Reduce 905

-

-Default reduction to rule  905

-

-

-STATE 625 ----------------------------------------------------------------------

-( 395 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT AdditiveExpression . (903)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 903

-final                   Reduce 903

-instanceof              Reduce 903

-native                  Reduce 903

-private                 Reduce 903

-protected               Reduce 903

-public                  Reduce 903

-static                  Reduce 903

-strictfp                Reduce 903

-synchronized            Reduce 903

-transient               Reduce 903

-volatile                Reduce 903

-EQUAL_EQUAL             Reduce 903

-LESS_EQUAL              Reduce 903

-GREATER_EQUAL           Reduce 903

-NOT_EQUAL               Reduce 903

-LEFT_SHIFT              Reduce 903

-RIGHT_SHIFT             Reduce 903

-UNSIGNED_RIGHT_SHIFT    Reduce 903

-OR_OR                   Reduce 903

-AND_AND                 Reduce 903

-XOR                     Reduce 903

-AND                     Reduce 903

-OR                      Reduce 903

-GREATER                 Reduce 903

-LESS                    Reduce 903

-RPAREN                  Reduce 903

-RBRACE                  Reduce 903

-SEMICOLON               Reduce 903

-QUESTION                Reduce 903

-COMMA                   Reduce 903

-AT                      Reduce 903

-$eof                    Reduce 903

-

-Default reduction to rule  903

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1237

-

-

-

-

-STATE 626 ----------------------------------------------------------------------

-( 396 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT AdditiveExpression . (901)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 901

-final                   Reduce 901

-instanceof              Reduce 901

-native                  Reduce 901

-private                 Reduce 901

-protected               Reduce 901

-public                  Reduce 901

-static                  Reduce 901

-strictfp                Reduce 901

-synchronized            Reduce 901

-transient               Reduce 901

-volatile                Reduce 901

-EQUAL_EQUAL             Reduce 901

-LESS_EQUAL              Reduce 901

-GREATER_EQUAL           Reduce 901

-NOT_EQUAL               Reduce 901

-LEFT_SHIFT              Reduce 901

-RIGHT_SHIFT             Reduce 901

-UNSIGNED_RIGHT_SHIFT    Reduce 901

-OR_OR                   Reduce 901

-AND_AND                 Reduce 901

-XOR                     Reduce 901

-AND                     Reduce 901

-OR                      Reduce 901

-GREATER                 Reduce 901

-LESS                    Reduce 901

-RPAREN                  Reduce 901

-RBRACE                  Reduce 901

-SEMICOLON               Reduce 901

-QUESTION                Reduce 901

-COMMA                   Reduce 901

-AT                      Reduce 901

-$eof                    Reduce 901

-

-Default reduction to rule  901

-

-

-STATE 627 ----------------------------------------------------------------------

-( 397 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1238

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj MINUS MultiplicativeExpression . (898)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 898

-final                   Reduce 898

-instanceof              Reduce 898

-native                  Reduce 898

-private                 Reduce 898

-protected               Reduce 898

-public                  Reduce 898

-static                  Reduce 898

-strictfp                Reduce 898

-synchronized            Reduce 898

-transient               Reduce 898

-volatile                Reduce 898

-EQUAL_EQUAL             Reduce 898

-LESS_EQUAL              Reduce 898

-GREATER_EQUAL           Reduce 898

-NOT_EQUAL               Reduce 898

-LEFT_SHIFT              Reduce 898

-RIGHT_SHIFT             Reduce 898

-UNSIGNED_RIGHT_SHIFT    Reduce 898

-OR_OR                   Reduce 898

-AND_AND                 Reduce 898

-PLUS                    Reduce 898

-MINUS                   Reduce 898

-XOR                     Reduce 898

-AND                     Reduce 898

-OR                      Reduce 898

-GREATER                 Reduce 898

-LESS                    Reduce 898

-RPAREN                  Reduce 898

-RBRACE                  Reduce 898

-SEMICOLON               Reduce 898

-QUESTION                Reduce 898

-COMMA                   Reduce 898

-AT                      Reduce 898

-$eof                    Reduce 898

-

-Default reduction to rule  898

-

-

-STATE 628 ----------------------------------------------------------------------

-( 398 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1239

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj PLUS MultiplicativeExpression . (896)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 896

-final                   Reduce 896

-instanceof              Reduce 896

-native                  Reduce 896

-private                 Reduce 896

-protected               Reduce 896

-public                  Reduce 896

-static                  Reduce 896

-strictfp                Reduce 896

-synchronized            Reduce 896

-transient               Reduce 896

-volatile                Reduce 896

-EQUAL_EQUAL             Reduce 896

-LESS_EQUAL              Reduce 896

-GREATER_EQUAL           Reduce 896

-NOT_EQUAL               Reduce 896

-LEFT_SHIFT              Reduce 896

-RIGHT_SHIFT             Reduce 896

-UNSIGNED_RIGHT_SHIFT    Reduce 896

-OR_OR                   Reduce 896

-AND_AND                 Reduce 896

-PLUS                    Reduce 896

-MINUS                   Reduce 896

-XOR                     Reduce 896

-AND                     Reduce 896

-OR                      Reduce 896

-GREATER                 Reduce 896

-LESS                    Reduce 896

-RPAREN                  Reduce 896

-RBRACE                  Reduce 896

-SEMICOLON               Reduce 896

-QUESTION                Reduce 896

-COMMA                   Reduce 896

-AT                      Reduce 896

-$eof                    Reduce 896

-

-Default reduction to rule  896

-

-

-STATE 629 ----------------------------------------------------------------------

-( 402 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1240

-

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression  .COLON ConditionalExpression 

-

-COLON    Shift  779

-

-

-STATE 630 ----------------------------------------------------------------------

-( 403 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression . (936)

-

-AND_AND         Shift  328

-

-abstract        Reduce 936

-final           Reduce 936

-native          Reduce 936

-private         Reduce 936

-protected       Reduce 936

-public          Reduce 936

-static          Reduce 936

-strictfp        Reduce 936

-synchronized    Reduce 936

-transient       Reduce 936

-volatile        Reduce 936

-OR_OR           Reduce 936

-RPAREN          Reduce 936

-RBRACE          Reduce 936

-SEMICOLON       Reduce 936

-QUESTION        Reduce 936

-COMMA           Reduce 936

-AT              Reduce 936

-$eof            Reduce 936

-

-Default reduction to rule  936

-

-

-STATE 631 ----------------------------------------------------------------------

-( 405 )

-

-CatchHeader ::= catch LPAREN CatchFormalParameter  .RPAREN LBRACE 

-

-RPAREN    Shift  780

-

-

-STATE 632 ----------------------------------------------------------------------

-( 405 690 )

-

-CatchFormalParameter ::= Modifiersopt  .CatchType VariableDeclaratorId 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1241

-

-

-

-Type ::= .PrimitiveType 

-Type ::= .ReferenceType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CatchType ::= .UnionType 

-UnionType ::= .Type 

-UnionType ::= .UnionType OR Type 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-Type                              Gt/Rd  411

-UnionType                         Goto   782

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1242

-

-

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1247

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   1247

-CatchType                         Goto   781

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 633 ----------------------------------------------------------------------

-( 406 )

-

-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt  .

-                       RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet     Gt/Rd  800

-

-abstract        Reduce 382

-final           Reduce 382

-native          Reduce 382

-private         Reduce 382

-protected       Reduce 382

-public          Reduce 382

-static          Reduce 382

-strictfp        Reduce 382

-synchronized    Reduce 382

-transient       Reduce 382

-volatile        Reduce 382

-LBRACE          Reduce 382

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1243

-

-

-RBRACE          Reduce 382

-SEMICOLON       Reduce 382

-COMMA           Reduce 382

-AT              Reduce 382

-$eof            Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 634 ----------------------------------------------------------------------

-( 406 )

-

-Arguments ::= LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1244

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1245

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1246

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1247

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1248

-

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1249

-

-

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   783

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 635 ----------------------------------------------------------------------

-( 407 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1250

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   784

-

-abstract                      Reduce 768

-default                       Reduce 768

-final                         Reduce 768

-native                        Reduce 768

-private                       Reduce 768

-protected                     Reduce 768

-public                        Reduce 768

-static                        Reduce 768

-strictfp                      Reduce 768

-synchronized                  Reduce 768

-throws                        Reduce 768

-transient                     Reduce 768

-volatile                      Reduce 768

-AT                            Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 636 ----------------------------------------------------------------------

-( 408 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  994

-

-

-STATE 637 ----------------------------------------------------------------------

-( 409 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1251

-

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-

-Identifier                Shift  785

-declare                   Shift  785

-after                     Shift  785

-before                    Shift  785

-pointcut                  Shift  785

-privileged                Shift  785

-aspect                    Shift  785

-

-AjSimpleNameNoAround      Goto   785

-JavaIdentifierNoAround    Goto   785

-

-

-STATE 638 ----------------------------------------------------------------------

-( 410 )

-

-ArrayCreationHeader ::= new PrimitiveType DimWithOrWithOutExprs . (641)

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotations               Goto   496

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   496

-DimWithOrWithOutExpr          Gt/Rd  648

-

-abstract                      Reduce 641

-final                         Reduce 641

-native                        Reduce 641

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1252

-

-

-private                       Reduce 641

-protected                     Reduce 641

-public                        Reduce 641

-static                        Reduce 641

-strictfp                      Reduce 641

-synchronized                  Reduce 641

-transient                     Reduce 641

-volatile                      Reduce 641

-AT                            Reduce 641

-$eof                          Reduce 641

-LBRACKET                      Reduce 92

-

-Default reduction to rule  641

-

-

-STATE 639 ----------------------------------------------------------------------

-( 411 )

-

-AllocationHeader ::= new ClassType LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1253

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1254

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1255

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1256

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1257

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1258

-

-

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   786

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 640 ----------------------------------------------------------------------

-( 412 )

-

-ArrayCreationHeader ::= new ClassOrInterfaceType DimWithOrWithOutExprs . (642)

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1259

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotations               Goto   496

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   496

-DimWithOrWithOutExpr          Gt/Rd  648

-

-abstract                      Reduce 642

-final                         Reduce 642

-native                        Reduce 642

-private                       Reduce 642

-protected                     Reduce 642

-public                        Reduce 642

-static                        Reduce 642

-strictfp                      Reduce 642

-synchronized                  Reduce 642

-transient                     Reduce 642

-volatile                      Reduce 642

-AT                            Reduce 642

-$eof                          Reduce 642

-LBRACKET                      Reduce 92

-

-Default reduction to rule  642

-

-

-STATE 641 ----------------------------------------------------------------------

-( 413 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .

-                       MINUS Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1260

-

-

-MINUS                     Shift  787

-PLUS                      Shift  788

-AT                        Shift  136

-

-NormalAnnotation          Goto   789

-MarkerAnnotation          Goto   789

-SingleMemberAnnotation    Goto   789

-AnnotationName            Goto   81

-Annotation                Goto   789

-Annotations               Goto   789

-

-

-STATE 642 ----------------------------------------------------------------------

-( 414 )

-

-PseudoToken ::= if LPAREN  .Expression RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1261

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1262

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1263

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1264

-

-

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1265

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1266

-

-

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   790

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 643 ----------------------------------------------------------------------

-( 416 )

-

-DeclareAnnotationHeader ::= declare AT Identifier  .COLON 

-

-COLON    Sh/Rd  280

-

-

-STATE 644 ----------------------------------------------------------------------

-( 418 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1267

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   791

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 645 ----------------------------------------------------------------------

-( 420 )

-

-InterTypeFieldBody ::= EQUAL ForceNoDiet  .VariableInitializer RestoreDiet 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1268

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1269

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1270

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1271

-

-

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1272

-

-

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1273

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   792

-ArrayInitializer                        Goto   792

-VariableInitializer                     Goto   792

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 646 ----------------------------------------------------------------------

-( 421 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1274

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen  .MethodHeaderThrowsClauseopt 

-                       COLON PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Goto   793

-MethodHeaderThrowsClauseopt    Goto   793

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 647 ----------------------------------------------------------------------

-( 422 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen  .ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-ExtraParamopt ::= .Identifier LPAREN FormalParameter RPAREN 

-ExtraParamopt ::= .Identifier LPAREN RPAREN 

-ExtraParamopt ::= .Identifier 

-ExtraParamopt ::= . (240)

-

-Identifier       Shift  795

-

-ExtraParamopt    Goto   794

-

-throws           Reduce 240

-COLON            Reduce 240

-

-Default reduction to rule  240

-

-

-STATE 648 ----------------------------------------------------------------------

-( 423 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen  .MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1275

-

-

-MethodHeaderThrowsClause       Goto   796

-MethodHeaderThrowsClauseopt    Goto   796

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 649 ----------------------------------------------------------------------

-( 424 430 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-around                    Shift  1249

-declare                   Shift  1248

-after                     Shift  1248

-before                    Shift  1248

-pointcut                  Shift  1248

-privileged                Shift  1248

-aspect                    Shift  1248

-Identifier                Shift  655

-

-AjSimpleNameNoAround      Goto   654

-AjSimpleName              Goto   1249

-JavaIdentifier            Gt/Rd  241

-OnType                    Goto   798

-JavaIdentifierNoAround    Goto   797

-

-

-STATE 650 ----------------------------------------------------------------------

-( 428 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1276

-

-

-RecoveryMethodHeaderName ::= Modifiersopt Type JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  992

-

-

-STATE 651 ----------------------------------------------------------------------

-( 428 870 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .TypeParametersAsReference 

-                         DOT JavaIdentifier 

-

-TypeParametersAsReference ::= .TypeParameters 

-TypeParameters ::= .LESS TypeParameterList1 

-

-PLUS                         Shift  800

-DOT                          Shift  801

-LESS                         Shift  223

-

-TypeParameters               Gt/Rd  256

-TypeParametersAsReference    Goto   799

-

-

-STATE 652 ----------------------------------------------------------------------

-( 428 870 )

-

-AjSimpleName ::= around . (77)

-AroundHeaderName ::= Modifiersopt Type around  .LPAREN 

-

-LPAREN       Sh/Rd  228

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1277

-

-

-AT308        Reduce 36

-

-Default reduction to rule  77

-

-

-STATE 653 ----------------------------------------------------------------------

-( 428 870 )

-

-OnType ::= JavaIdentifier . (241)

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-PLUS                          Reduce 241

-LESS                          Reduce 241

-DOT                           Reduce 241

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  241

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1278

-

-

-

-

-STATE 654 ----------------------------------------------------------------------

-( 428 649 870 943 )

-

-JavaIdentifierNoAround ::= AjSimpleNameNoAround . (38)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-LPAREN       Reduce 38

-

-Default reduction to rule  73

-

-

-STATE 655 ----------------------------------------------------------------------

-( 428 649 870 943 )

-

-JavaIdentifier ::= Identifier . (35)

-JavaIdentifierNoAround ::= Identifier . (37)

-

-LPAREN       Reduce 37

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 35

-SEMICOLON    Reduce 35

-COMMA        Reduce 35

-DOT          Reduce 241

-EQUAL        Reduce 35

-AT308        Reduce 35

-

-Default reduction to rule  35

-

-

-STATE 656 ----------------------------------------------------------------------

-( 431 )

-

-Initializer ::= Diet NestedMethod CreateInitializer  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  362

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1279

-

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 657 ----------------------------------------------------------------------

-( 432 )

-

-MethodBody ::= NestedMethod LBRACE BlockStatementsopt  .RBRACE 

-

-RBRACE    Sh/Rd  416

-

-

-STATE 658 ----------------------------------------------------------------------

-( 433 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations  .

-                            ReduceImports 

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations  .

-                            ReduceImports TypeDeclarations 

-ImportDeclarations ::= ImportDeclarations  .ImportDeclaration 

-

-ReduceImports ::= . (118)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-import                                 Shift  149

-

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Gt/Rd  137

-TypeImportOnDemandDeclaration          Gt/Rd  137

-SingleStaticImportDeclaration          Gt/Rd  137

-StaticImportOnDemandDeclaration        Gt/Rd  137

-ReduceImports                          Goto   802

-ImportDeclaration                      Gt/Rd  137

-

-abstract                               Reduce 118

-class                                  Reduce 118

-enum                                   Reduce 118

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1280

-

-

-final                                  Reduce 118

-interface                              Reduce 118

-native                                 Reduce 118

-private                                Reduce 118

-protected                              Reduce 118

-public                                 Reduce 118

-static                                 Reduce 118

-strictfp                               Reduce 118

-synchronized                           Reduce 118

-transient                              Reduce 118

-volatile                               Reduce 118

-aspect                                 Reduce 118

-privileged                             Reduce 118

-SEMICOLON                              Reduce 118

-AT                                     Reduce 118

-$eof                                   Reduce 118

-

-Default reduction to rule  118

-

-

-STATE 659 ----------------------------------------------------------------------

-( 433 )

-

-InternalCompilationUnit ::= PackageDeclaration TypeDeclarations . (113)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1281

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1282

-

-

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 113

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 660 ----------------------------------------------------------------------

-( 435 )

-

-InternalCompilationUnit ::= ImportDeclarations ReduceImports . (114)

-InternalCompilationUnit ::= ImportDeclarations ReduceImports  .TypeDeclarations 

-

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1283

-

-

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1284

-

-

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassDeclaration                       Goto   803

-InterfaceDeclaration                   Goto   803

-EnumDeclaration                        Goto   803

-AnnotationTypeDeclaration              Goto   803

-AspectDeclaration                      Goto   803

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1285

-

-

-TypeDeclaration                        Goto   803

-TypeDeclarations                       Goto   803

-

-$eof                                   Reduce 114

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 661 ----------------------------------------------------------------------

-( 439 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL  .EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-EnterMemberValue ::= . (975)

-

-EnterMemberValue         Goto   804

-

-Identifier               Reduce 975

-boolean                  Reduce 975

-byte                     Reduce 975

-char                     Reduce 975

-double                   Reduce 975

-false                    Reduce 975

-float                    Reduce 975

-int                      Reduce 975

-long                     Reduce 975

-new                      Reduce 975

-null                     Reduce 975

-short                    Reduce 975

-super                    Reduce 975

-this                     Reduce 975

-true                     Reduce 975

-void                     Reduce 975

-aspect                   Reduce 975

-pointcut                 Reduce 975

-around                   Reduce 975

-before                   Reduce 975

-after                    Reduce 975

-declare                  Reduce 975

-privileged               Reduce 975

-IntegerLiteral           Reduce 975

-LongLiteral              Reduce 975

-FloatingPointLiteral     Reduce 975

-DoubleLiteral            Reduce 975

-CharacterLiteral         Reduce 975

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1286

-

-

-StringLiteral            Reduce 975

-PLUS_PLUS                Reduce 975

-MINUS_MINUS              Reduce 975

-PLUS                     Reduce 975

-MINUS                    Reduce 975

-NOT                      Reduce 975

-TWIDDLE                  Reduce 975

-LPAREN                   Reduce 975

-LBRACE                   Reduce 975

-AT                       Reduce 975

-BeginLambda              Reduce 975

-BeginIntersectionCast    Reduce 975

-AT308                    Reduce 975

-

-Default reduction to rule  975

-

-

-STATE 662 ----------------------------------------------------------------------

-( 440 )

-

-MemberValuePairs ::= MemberValuePairs COMMA  .MemberValuePair 

-

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-Identifier              Shift  439

-around                  Shift  439

-declare                 Shift  439

-after                   Shift  439

-before                  Shift  439

-pointcut                Shift  439

-privileged              Shift  439

-aspect                  Shift  439

-

-AjSimpleName            Goto   439

-SimpleName              Goto   439

-AjSimpleNameNoAround    Goto   439

-SimpleNameOrAj          Goto   439

-MemberValuePair         Gt/Rd  973

-

-

-STATE 663 ----------------------------------------------------------------------

-( 444 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-

-COMMA    Shift  805

-

-

-STATE 664 ----------------------------------------------------------------------

-( 444 805 806 896 897 959 1001 1002 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1287

-

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-ReferenceType2 ::= ClassOrInterface  .LESS TypeArgumentList3 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                    Shift  806

-

-TypeArguments           Gt/Rd  59

-

-RIGHT_SHIFT             Reduce 53

-UNSIGNED_RIGHT_SHIFT    Reduce 53

-GREATER                 Reduce 53

-COMMA                   Reduce 53

-

-Default reduction to rule  55

-

-

-STATE 665 ----------------------------------------------------------------------

-( 444 805 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 824

-

-Default reduction to rule  824

-

-

-STATE 666 ----------------------------------------------------------------------

-( 444 805 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-

-QUESTION             Shift  807

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1288

-

-

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 667 ----------------------------------------------------------------------

-( 446 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1289

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   808

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   808

-ReferenceType1                    Gt/Rd  848

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 668 ----------------------------------------------------------------------

-( 446 )

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1290

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   809

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1291

-

-

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   809

-ReferenceType1                    Gt/Rd  847

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 669 ----------------------------------------------------------------------

-( 452 )

-

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-

-Identifier    Sh/Rd  620

-

-

-STATE 670 ----------------------------------------------------------------------

-( 453 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT  .TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1292

-

-

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotations               Goto   810

-

-

-STATE 671 ----------------------------------------------------------------------

-( 453 )

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-ELLIPSIS    Shift  811

-

-

-STATE 672 ----------------------------------------------------------------------

-( 453 811 898 )

-

-JavaIdentifier ::= Identifier . (35)

-SimpleName ::= Identifier . (87)

-

-DOT         Reduce 88

-RPAREN      Reduce 35

-LBRACKET    Reduce 35

-COMMA       Reduce 35

-AT308       Reduce 35

-

-Default reduction to rule  35

-

-

-STATE 673 ----------------------------------------------------------------------

-( 453 811 898 )

-

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-VariableDeclaratorIdOrThis ::= UnannotatableName  .DOT this 

-

-DOT    Shift  812

-

-

-STATE 674 ----------------------------------------------------------------------

-( 455 464 )

-

-InterfaceTypeList ::= InterfaceTypeList COMMA  .InterfaceType 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1293

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Gt/Rd  353

-InterfaceType                 Gt/Rd  352

-

-

-STATE 675 ----------------------------------------------------------------------

-( 456 )

-

-EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  794

-

-

-STATE 676 ----------------------------------------------------------------------

-( 459 )

-

-EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  796

-

-

-STATE 677 ----------------------------------------------------------------------

-( 459 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1294

-

-

-EnumBody ::= LBRACE EnumConstants COMMA  .EnumBodyDeclarationsopt RBRACE 

-EnumConstants ::= EnumConstants COMMA  .EnumConstant 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-EnumConstant ::= .EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= .EnumConstantHeader 

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                  Shift  458

-strictfp                   Shift  1064

-volatile                   Shift  1064

-transient                  Shift  1064

-synchronized               Shift  1064

-native                     Shift  1064

-final                      Shift  1064

-abstract                   Shift  1064

-static                     Shift  1064

-private                    Shift  1064

-protected                  Shift  1064

-public                     Shift  1064

-AT                         Shift  136

-

-EnumConstantHeaderName     Goto   177

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1295

-

-

-Modifiers                  Goto   137

-SimpleModifier             Goto   1064

-Annotation                 Gt/Rd  171

-AnnotationName             Goto   81

-NormalAnnotation           Goto   1047

-MarkerAnnotation           Goto   1047

-SingleMemberAnnotation     Goto   1047

-Modifier                   Goto   1064

-Modifiersopt               Goto   460

-EnumConstantHeader         Goto   461

-EnumDeclarations           Goto   813

-EnumBodyDeclarationsopt    Goto   813

-EnumConstant               Gt/Rd  798

-

-RBRACE                     Reduce 807

-Identifier                 Reduce 764

-

-Default reduction to rule  807

-

-

-STATE 678 ----------------------------------------------------------------------

-( 461 )

-

-EnumConstant ::= EnumConstantHeader ForceNoDiet  .ClassBody RestoreDiet 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Goto   814

-

-

-STATE 679 ----------------------------------------------------------------------

-( 463 )

-

-AnnotationTypeMemberDeclarationsopt ::= NestedType 

-                                        AnnotationTypeMemberDeclarations .

-                                         (952)

-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations  .

-                                     AnnotationTypeMemberDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1296

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1297

-

-

-                              AnnotationTypeBody 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeaderName             Goto   145

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   143

-FieldDeclaration                       Gt/Rd  954

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassDeclaration                       Gt/Rd  954

-InterfaceDeclaration                   Gt/Rd  954

-EnumDeclaration                        Gt/Rd  954

-AnnotationTypeDeclaration              Gt/Rd  954

-AspectDeclaration                      Gt/Rd  954

-AspectHeaderName                       Goto   125

-AspectHeaderName1                      Goto   128

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1298

-

-

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Gt/Rd  954

-ConstructorDeclaration                 Gt/Rd  954

-TypeDeclaration                        Gt/Rd  954

-AnnotationTypeMemberDeclaration        Gt/Rd  954

-

-RBRACE                                 Reduce 952

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 680 ----------------------------------------------------------------------

-( 465 )

-

-TypeParameterList ::= TypeParameterList COMMA  .TypeParameter 

-TypeParameterList1 ::= TypeParameterList COMMA  .TypeParameter1 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1299

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameterHeader ::= .TypeAnnotationsopt JavaIdentifier 

-TypeParameter ::= .TypeParameterHeader 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= .TypeParameterHeader GREATER 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType1 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType 

-                   AdditionalBoundList1 

-

-AT308                         Shift  22

-

-TypeParameterHeader           Goto   467

-TypeAnnotationsopt            Goto   466

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   466

-TypeParameter                 Gt/Rd  860

-TypeParameter1                Gt/Rd  868

-

-Identifier                    Reduce 92

-aspect                        Reduce 92

-pointcut                      Reduce 92

-around                        Reduce 92

-before                        Reduce 92

-after                         Reduce 92

-declare                       Reduce 92

-privileged                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 681 ----------------------------------------------------------------------

-( 467 )

-

-TypeParameter ::= TypeParameterHeader extends  .ReferenceType 

-TypeParameter ::= TypeParameterHeader extends  .ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader extends  .ReferenceType1 

-TypeParameter1 ::= TypeParameterHeader extends  .ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1300

-

-

-                   AdditionalBoundList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   815

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1301

-

-

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   815

-ReferenceType1                    Gt/Rd  870

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 682 ----------------------------------------------------------------------

-( 469 )

-

-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations  .

-                                InterfaceMemberDeclaration 

-InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations .

-                                    (779)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1302

-

-

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-InterfaceMemberDeclaration ::= .SEMICOLON 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .MethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader SEMICOLON 

-InvalidConstructorDeclaration ::= .ConstructorHeader MethodBody 

-InvalidConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1303

-

-

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-static                                 Shift  131

-AT                                     Shift  80

-SEMICOLON                              Sh/Rd  443

-

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiersopt                           Goto   133

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1304

-

-

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-FieldDeclaration                       Gt/Rd  442

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-MethodHeaderName                       Goto   119

-MethodHeader                           Goto   684

-ConstructorHeader                      Goto   683

-ConstructorHeaderName                  Goto   134

-StaticInitializer                      Gt/Rd  442

-Initializer                            Gt/Rd  442

-Diet                                   Goto   195

-StaticOnly                             Goto   130

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Gt/Rd  442

-PointcutDeclaration                    Gt/Rd  442

-ConstantDeclaration                    Gt/Rd  442

-DefaultMethodHeader                    Goto   685

-AbstractMethodDeclaration              Gt/Rd  442

-InvalidConstructorDeclaration          Gt/Rd  442

-InvalidInitializer                     Gt/Rd  442

-ClassDeclaration                       Gt/Rd  442

-InterfaceDeclaration                   Gt/Rd  442

-EnumDeclaration                        Gt/Rd  442

-AnnotationTypeDeclaration              Gt/Rd  442

-InterfaceMemberDeclaration             Gt/Rd  442

-

-RBRACE                                 Reduce 779

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1305

-

-

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 683 ----------------------------------------------------------------------

-( 469 682 )

-

-InvalidConstructorDeclaration ::= ConstructorHeader  .MethodBody 

-InvalidConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  449

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  448

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 684 ----------------------------------------------------------------------

-( 469 682 )

-

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-InterfaceMemberDeclaration ::= MethodHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  389

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  446

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 685 ----------------------------------------------------------------------

-( 469 682 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1306

-

-

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .MethodBody 

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  447

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  445

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 686 ----------------------------------------------------------------------

-( 472 )

-

-ClassBodyDeclarations ::= ClassBodyDeclarations  .ClassBodyDeclaration 

-ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations . (763)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1307

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1308

-

-

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-AspectDeclaration                      Gt/Rd  356

-PointcutDeclaration                    Gt/Rd  356

-FieldDeclaration                       Gt/Rd  356

-MethodDeclaration                      Gt/Rd  356

-ClassDeclaration                       Gt/Rd  356

-InterfaceDeclaration                   Gt/Rd  356

-EnumDeclaration                        Gt/Rd  356

-AnnotationTypeDeclaration              Gt/Rd  356

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-MethodHeader                           Goto   123

-MethodHeaderName                       Goto   119

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1309

-

-

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-AbstractMethodDeclaration              Gt/Rd  356

-DefaultMethodHeader                    Goto   122

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-StaticOnly                             Goto   130

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassMemberDeclaration                 Gt/Rd  356

-StaticInitializer                      Gt/Rd  356

-ConstructorDeclaration                 Gt/Rd  356

-Diet                                   Goto   135

-ClassBodyDeclaration                   Gt/Rd  356

-

-RBRACE                                 Reduce 763

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 687 ----------------------------------------------------------------------

-( 473 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1310

-

-

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt .

-                               (561)

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt  .

-                              Finally 

-

-Finally ::= .finally Block 

-

-finally                 Shift  689

-

-Finally                 Gt/Rd  562

-

-Identifier              Reduce 561

-abstract                Reduce 561

-assert                  Reduce 561

-boolean                 Reduce 561

-break                   Reduce 561

-byte                    Reduce 561

-case                    Reduce 561

-char                    Reduce 561

-class                   Reduce 561

-continue                Reduce 561

-default                 Reduce 561

-do                      Reduce 561

-double                  Reduce 561

-else                    Reduce 561

-enum                    Reduce 561

-false                   Reduce 561

-final                   Reduce 561

-float                   Reduce 561

-for                     Reduce 561

-if                      Reduce 561

-int                     Reduce 561

-interface               Reduce 561

-long                    Reduce 561

-native                  Reduce 561

-new                     Reduce 561

-null                    Reduce 561

-private                 Reduce 561

-protected               Reduce 561

-public                  Reduce 561

-return                  Reduce 561

-short                   Reduce 561

-static                  Reduce 561

-strictfp                Reduce 561

-super                   Reduce 561

-switch                  Reduce 561

-synchronized            Reduce 561

-this                    Reduce 561

-throw                   Reduce 561

-transient               Reduce 561

-true                    Reduce 561

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1311

-

-

-try                     Reduce 561

-void                    Reduce 561

-volatile                Reduce 561

-while                   Reduce 561

-aspect                  Reduce 561

-pointcut                Reduce 561

-around                  Reduce 561

-before                  Reduce 561

-after                   Reduce 561

-declare                 Reduce 561

-privileged              Reduce 561

-IntegerLiteral          Reduce 561

-LongLiteral             Reduce 561

-FloatingPointLiteral    Reduce 561

-DoubleLiteral           Reduce 561

-CharacterLiteral        Reduce 561

-StringLiteral           Reduce 561

-PLUS_PLUS               Reduce 561

-MINUS_MINUS             Reduce 561

-LESS                    Reduce 561

-LPAREN                  Reduce 561

-LBRACE                  Reduce 561

-RBRACE                  Reduce 561

-SEMICOLON               Reduce 561

-AT                      Reduce 561

-BeginLambda             Reduce 561

-AT308                   Reduce 561

-$eof                    Reduce 561

-

-Default reduction to rule  561

-

-

-STATE 688 ----------------------------------------------------------------------

-( 473 )

-

-Catches ::= Catches  .CatchClause 

-Catchesopt ::= Catches . (788)

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-

-catch                   Shift  475

-

-CatchClause             Gt/Rd  574

-

-Identifier              Reduce 788

-abstract                Reduce 788

-assert                  Reduce 788

-boolean                 Reduce 788

-break                   Reduce 788

-byte                    Reduce 788

-case                    Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1312

-

-

-char                    Reduce 788

-class                   Reduce 788

-continue                Reduce 788

-default                 Reduce 788

-do                      Reduce 788

-double                  Reduce 788

-else                    Reduce 788

-enum                    Reduce 788

-false                   Reduce 788

-final                   Reduce 788

-finally                 Reduce 788

-float                   Reduce 788

-for                     Reduce 788

-if                      Reduce 788

-int                     Reduce 788

-interface               Reduce 788

-long                    Reduce 788

-native                  Reduce 788

-new                     Reduce 788

-null                    Reduce 788

-private                 Reduce 788

-protected               Reduce 788

-public                  Reduce 788

-return                  Reduce 788

-short                   Reduce 788

-static                  Reduce 788

-strictfp                Reduce 788

-super                   Reduce 788

-switch                  Reduce 788

-synchronized            Reduce 788

-this                    Reduce 788

-throw                   Reduce 788

-transient               Reduce 788

-true                    Reduce 788

-try                     Reduce 788

-void                    Reduce 788

-volatile                Reduce 788

-while                   Reduce 788

-aspect                  Reduce 788

-pointcut                Reduce 788

-around                  Reduce 788

-before                  Reduce 788

-after                   Reduce 788

-declare                 Reduce 788

-privileged              Reduce 788

-IntegerLiteral          Reduce 788

-LongLiteral             Reduce 788

-FloatingPointLiteral    Reduce 788

-DoubleLiteral           Reduce 788

-CharacterLiteral        Reduce 788

-StringLiteral           Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1313

-

-

-PLUS_PLUS               Reduce 788

-MINUS_MINUS             Reduce 788

-LESS                    Reduce 788

-LPAREN                  Reduce 788

-LBRACE                  Reduce 788

-RBRACE                  Reduce 788

-SEMICOLON               Reduce 788

-AT                      Reduce 788

-BeginLambda             Reduce 788

-AT308                   Reduce 788

-$eof                    Reduce 788

-

-Default reduction to rule  788

-

-

-STATE 689 ----------------------------------------------------------------------

-( 474 687 )

-

-Finally ::= finally  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  576

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 690 ----------------------------------------------------------------------

-( 475 )

-

-CatchClause ::= catch LPAREN  .CatchFormalParameter RPAREN Block 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1314

-

-

-CatchFormalParameter ::= .Modifiersopt CatchType VariableDeclaratorId 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   632

-CatchFormalParameter      Goto   816

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 691 ----------------------------------------------------------------------

-( 477 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1315

-

-

-Resources ::= Resources TrailingSemiColon  .Resource 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-Resource ::= .Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Resource ::= .Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1316

-

-

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Shift  478

-volatile                          Shift  478

-transient                         Shift  478

-synchronized                      Shift  478

-native                            Shift  478

-final                             Shift  478

-abstract                          Shift  478

-static                            Shift  478

-private                           Shift  478

-protected                         Shift  478

-public                            Shift  478

-AT                                Shift  136

-

-PrimitiveType                     Goto   287

-ReferenceType                     Goto   479

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   479

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationsopt                Goto   84

-Modifier                          Goto   478

-Modifiers                         Goto   478

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Goto   478

-Annotation                        Gt/Rd  171

-Type                              Goto   479

-Resource                          Gt/Rd  567

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1317

-

-

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 692 ----------------------------------------------------------------------

-( 477 )

-

-ResourceSpecification ::= LPAREN Resources ;opt  .RPAREN 

-

-RPAREN    Sh/Rd  563

-

-

-STATE 693 ----------------------------------------------------------------------

-( 477 )

-

-;opt ::= SEMICOLON . (565)

-TrailingSemiColon ::= SEMICOLON . (568)

-

-Identifier      Reduce 568

-abstract        Reduce 568

-boolean         Reduce 568

-byte            Reduce 568

-char            Reduce 568

-double          Reduce 568

-final           Reduce 568

-float           Reduce 568

-int             Reduce 568

-long            Reduce 568

-native          Reduce 568

-private         Reduce 568

-protected       Reduce 568

-public          Reduce 568

-short           Reduce 568

-static          Reduce 568

-strictfp        Reduce 568

-synchronized    Reduce 568

-transient       Reduce 568

-void            Reduce 568

-volatile        Reduce 568

-AT              Reduce 568

-AT308           Reduce 568

-RPAREN          Reduce 565

-

-Default reduction to rule  568

-

-

-STATE 694 ----------------------------------------------------------------------

-( 478 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1318

-

-

-Resource ::= Modifiers Type  .PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   817

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 695 ----------------------------------------------------------------------

-( 479 )

-

-Resource ::= Type PushModifiers  .VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Goto   818

-

-

-STATE 696 ----------------------------------------------------------------------

-( 480 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression RPAREN  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1319

-

-

-

-OpenBlock    Goto   70

-Block        Gt/Rd  557

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 697 ----------------------------------------------------------------------

-( 481 )

-

-DoStatement ::= do Statement while LPAREN  .Expression RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1320

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1321

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1322

-

-

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1323

-

-

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1324

-

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1325

-

-

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   819

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 698 ----------------------------------------------------------------------

-( 482 )

-

-SwitchStatement ::= switch LPAREN Expression RPAREN  .OpenBlock SwitchBlock 

-

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   820

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 699 ----------------------------------------------------------------------

-( 484 )

-

-LambdaBody ::= ElidedLeftBraceAndReturn Expression  .

-               ElidedSemicolonAndRightBrace 

-

-ElidedSemicolonAndRightBrace    Sh/Rd  621

-

-

-STATE 700 ----------------------------------------------------------------------

-( 487 )

-

-ArgumentList ::= ArgumentList COMMA  .Expression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1326

-

-

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1327

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1328

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1329

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1330

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1331

-

-

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Gt/Rd  640

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1332

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 701 ----------------------------------------------------------------------

-( 488 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN    Shift  821

-

-

-STATE 702 ----------------------------------------------------------------------

-( 489 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1333

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1334

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1335

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1336

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1337

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1338

-

-

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   822

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 703 ----------------------------------------------------------------------

-( 492 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  823

-

-

-STATE 704 ----------------------------------------------------------------------

-( 493 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1339

-

-

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1340

-

-

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1341

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1342

-

-

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1343

-

-

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1344

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1345

-

-

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   824

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 705 ----------------------------------------------------------------------

-( 494 )

-

-ClassOrInterface ::= GenericType DOT Name . (58)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT             Shift  445

-

-Identifier      Reduce 58

-abstract        Reduce 58

-final           Reduce 58

-implements      Reduce 58

-native          Reduce 58

-private         Reduce 58

-protected       Reduce 58

-public          Reduce 58

-static          Reduce 58

-strictfp        Reduce 58

-synchronized    Reduce 58

-transient       Reduce 58

-volatile        Reduce 58

-AND             Reduce 58

-LESS            Reduce 58

-LPAREN          Reduce 58

-RPAREN          Reduce 58

-LBRACE          Reduce 58

-LBRACKET        Reduce 58

-SEMICOLON       Reduce 58

-COLON           Reduce 58

-COMMA           Reduce 58

-AT              Reduce 58

-COLON_COLON     Reduce 58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1346

-

-

-AT308           Reduce 58

-$eof            Reduce 58

-

-Default reduction to rule  58

-

-

-STATE 706 ----------------------------------------------------------------------

-( 496 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET  .Expression RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET  .RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1347

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1348

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1349

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1350

-

-

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACKET                                Sh/Rd  650

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1351

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1352

-

-

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   825

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 707 ----------------------------------------------------------------------

-( 497 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1353

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1354

-

-

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1355

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1356

-

-

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1357

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1358

-

-

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   826

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 708 ----------------------------------------------------------------------

-( 498 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-LPAREN    Shift  827

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1359

-

-

-

-

-STATE 709 ----------------------------------------------------------------------

-( 503 )

-

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1360

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1361

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1362

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1363

-

-

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1364

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1365

-

-

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   828

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 710 ----------------------------------------------------------------------

-( 504 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   829

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 711 ----------------------------------------------------------------------

-( 504 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments  .

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1366

-

-

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   830

-ClassType                     Goto   830

-

-

-STATE 712 ----------------------------------------------------------------------

-( 505 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1367

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1368

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1369

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1370

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1371

-

-

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1372

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   831

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1373

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 713 ----------------------------------------------------------------------

-( 506 545 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  832

-

-

-STATE 714 ----------------------------------------------------------------------

-( 506 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  833

-

-

-STATE 715 ----------------------------------------------------------------------

-( 506 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  834

-

-

-STATE 716 ----------------------------------------------------------------------

-( 507 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1374

-

-

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1375

-

-

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1376

-

-

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1377

-

-

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1378

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1379

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   835

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1380

-

-

-

-

-STATE 717 ----------------------------------------------------------------------

-( 508 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  836

-

-

-STATE 718 ----------------------------------------------------------------------

-( 509 )

-

-MethodInvocation ::= super DOT JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1381

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1382

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1383

-

-

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1384

-

-

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1385

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1386

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   837

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 719 ----------------------------------------------------------------------

-( 511 )

-

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt RPAREN  .

-                                  SEMICOLON 

-

-SEMICOLON    Sh/Rd  424

-

-

-STATE 720 ----------------------------------------------------------------------

-( 512 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  838

-

-

-STATE 721 ----------------------------------------------------------------------

-( 513 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1387

-

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  839

-

-

-STATE 722 ----------------------------------------------------------------------

-( 514 )

-

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt RPAREN  .

-                                  SEMICOLON 

-

-SEMICOLON    Sh/Rd  422

-

-

-STATE 723 ----------------------------------------------------------------------

-( 516 )

-

-AssertStatement ::= assert Expression COLON Expression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  550

-

-

-STATE 724 ----------------------------------------------------------------------

-( 517 )

-

-IfThenStatement ::= if LPAREN Expression RPAREN  .Statement 

-IfThenElseStatement ::= if LPAREN Expression RPAREN  .StatementNoShortIf else 

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1388

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1389

-

-

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1390

-

-

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1391

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1392

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1393

-

-

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Goto   840

-IfThenElseStatementNoShortIf            Goto   840

-WhileStatementNoShortIf                 Goto   840

-ForStatementNoShortIf                   Goto   840

-EnhancedForStatementNoShortIf           Goto   840

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1394

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  524

-IfThenStatement                         Gt/Rd  524

-IfThenElseStatement                     Gt/Rd  524

-WhileStatement                          Gt/Rd  524

-ForStatement                            Gt/Rd  524

-EnhancedForStatement                    Gt/Rd  524

-Statement                               Gt/Rd  524

-StatementNoShortIf                      Goto   840

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 725 ----------------------------------------------------------------------

-( 518 )

-

-WhileStatement ::= while LPAREN Expression RPAREN  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1395

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1396

-

-

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1397

-

-

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1398

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1399

-

-

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  539

-Block                                   Gt/Rd  539

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1400

-

-

-EmptyStatement                          Gt/Rd  539

-ExpressionStatement                     Gt/Rd  539

-SwitchStatement                         Gt/Rd  539

-DoStatement                             Gt/Rd  539

-BreakStatement                          Gt/Rd  539

-ContinueStatement                       Gt/Rd  539

-ReturnStatement                         Gt/Rd  539

-SynchronizedStatement                   Gt/Rd  539

-ThrowStatement                          Gt/Rd  539

-TryStatement                            Gt/Rd  539

-TryStatementWithResources               Gt/Rd  539

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1401

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  539

-LabeledStatement                        Gt/Rd  539

-IfThenStatement                         Gt/Rd  539

-IfThenElseStatement                     Gt/Rd  539

-WhileStatement                          Gt/Rd  539

-ForStatement                            Gt/Rd  539

-EnhancedForStatement                    Gt/Rd  539

-Statement                               Gt/Rd  539

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 726 ----------------------------------------------------------------------

-( 519 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1402

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1403

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1404

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1405

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1406

-

-

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1407

-

-

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   847

-Expressionopt                           Goto   847

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 727 ----------------------------------------------------------------------

-( 520 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1408

-

-

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers  .

-                                   JavaIdentifier Dimsopt 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  848

-declare                 Shift  848

-after                   Shift  848

-before                  Shift  848

-pointcut                Shift  848

-privileged              Shift  848

-aspect                  Shift  848

-around                  Shift  848

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   848

-AjSimpleNameNoAround    Goto   848

-JavaIdentifier          Goto   848

-VariableDeclarator      Goto   525

-VariableDeclarators     Goto   525

-

-

-STATE 728 ----------------------------------------------------------------------

-( 521 )

-

-LocalVariableDeclaration ::= Modifiers Type  .PushRealModifiers 

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type  .

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   849

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1409

-

-

-

-

-STATE 729 ----------------------------------------------------------------------

-( 523 982 )

-

-StatementExpressionList ::= StatementExpressionList COMMA  .StatementExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1410

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1411

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1412

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1413

-

-

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-StatementExpression                     Gt/Rd  548

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 730 ----------------------------------------------------------------------

-( 525 582 733 )

-

-VariableDeclarators ::= VariableDeclarators COMMA  .VariableDeclarator 

-

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1414

-

-

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-JavaIdentifier          Goto   526

-AjSimpleNameNoAround    Goto   526

-AjSimpleName            Goto   526

-VariableDeclaratorId    Goto   527

-VariableDeclarator      Gt/Rd  375

-

-

-STATE 731 ----------------------------------------------------------------------

-( 527 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable  .

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= VariableDeclaratorId EnterVariable  .EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-ExitVariableWithoutInitialization ::= . (380)

-

-EQUAL                                Shift  850

-

-ExitVariableWithoutInitialization    Gt/Rd  376

-

-SEMICOLON                            Reduce 380

-COMMA                                Reduce 380

-

-Default reduction to rule  380

-

-

-STATE 732 ----------------------------------------------------------------------

-( 528 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface 

-                                        JavaIdentifier  .TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface 

-                                        JavaIdentifier . (947)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  946

-

-abstract          Reduce 947

-extends           Reduce 947

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1415

-

-

-final             Reduce 947

-implements        Reduce 947

-native            Reduce 947

-private           Reduce 947

-protected         Reduce 947

-public            Reduce 947

-static            Reduce 947

-strictfp          Reduce 947

-synchronized      Reduce 947

-transient         Reduce 947

-volatile          Reduce 947

-LBRACE            Reduce 947

-AT                Reduce 947

-$eof              Reduce 947

-

-Default reduction to rule  947

-

-

-STATE 733 ----------------------------------------------------------------------

-( 531 849 )

-

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers 

-                             VariableDeclarators . (481)

-

-COMMA        Shift  730

-

-SEMICOLON    Reduce 481

-

-Default reduction to rule  481

-

-

-STATE 734 ----------------------------------------------------------------------

-( 532 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface  .JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface  .JavaIdentifier 

-                                        TypeParameters 

-

-Identifier              Shift  851

-declare                 Shift  851

-after                   Shift  851

-before                  Shift  851

-pointcut                Shift  851

-privileged              Shift  851

-aspect                  Shift  851

-around                  Shift  851

-

-AjSimpleNameNoAround    Goto   851

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1416

-

-

-AjSimpleName            Goto   851

-JavaIdentifier          Goto   851

-

-

-STATE 735 ----------------------------------------------------------------------

-( 533 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON  .

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   852

-NonWildTypeArgumentsopt    Goto   852

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 736 ----------------------------------------------------------------------

-( 534 )

-

-ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt  .

-                        IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  602

-

-

-STATE 737 ----------------------------------------------------------------------

-( 535 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1417

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1418

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1419

-

-

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1420

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1421

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1422

-

-

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   853

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1423

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 738 ----------------------------------------------------------------------

-( 536 544 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  854

-

-

-STATE 739 ----------------------------------------------------------------------

-( 536 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  855

-

-

-STATE 740 ----------------------------------------------------------------------

-( 536 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  856

-

-

-STATE 741 ----------------------------------------------------------------------

-( 537 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1424

-

-

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1425

-

-

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1426

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1427

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1428

-

-

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1429

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   857

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1430

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 742 ----------------------------------------------------------------------

-( 542 )

-

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  601

-

-

-STATE 743 ----------------------------------------------------------------------

-( 546 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN  .InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionLL1WithBounds ::= . (702)

-

-InsideCastExpressionLL1WithBounds    Goto   858

-

-Identifier                           Reduce 702

-boolean                              Reduce 702

-byte                                 Reduce 702

-char                                 Reduce 702

-double                               Reduce 702

-false                                Reduce 702

-float                                Reduce 702

-int                                  Reduce 702

-long                                 Reduce 702

-new                                  Reduce 702

-null                                 Reduce 702

-short                                Reduce 702

-super                                Reduce 702

-this                                 Reduce 702

-true                                 Reduce 702

-void                                 Reduce 702

-aspect                               Reduce 702

-pointcut                             Reduce 702

-around                               Reduce 702

-before                               Reduce 702

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1431

-

-

-after                                Reduce 702

-declare                              Reduce 702

-privileged                           Reduce 702

-IntegerLiteral                       Reduce 702

-LongLiteral                          Reduce 702

-FloatingPointLiteral                 Reduce 702

-DoubleLiteral                        Reduce 702

-CharacterLiteral                     Reduce 702

-StringLiteral                        Reduce 702

-NOT                                  Reduce 702

-TWIDDLE                              Reduce 702

-LPAREN                               Reduce 702

-BeginLambda                          Reduce 702

-BeginIntersectionCast                Reduce 702

-AT308                                Reduce 702

-

-Default reduction to rule  702

-

-

-STATE 744 ----------------------------------------------------------------------

-( 547 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   859

-

-

-STATE 745 ----------------------------------------------------------------------

-( 547 551 747 934 )

-

-AdditionalBoundsListOpt ::= AdditionalBoundList . (696)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-

-AdditionalBound ::= .AND ReferenceType 

-

-AND                Shift  450

-

-AdditionalBound    Gt/Rd  865

-

-RPAREN             Reduce 696

-

-Default reduction to rule  696

-

-

-STATE 746 ----------------------------------------------------------------------

-( 549 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1432

-

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT  .

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassOrInterfaceType          Goto   860

-

-

-STATE 747 ----------------------------------------------------------------------

-( 549 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1433

-

-

-                   Dimsopt  .AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   861

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 748 ----------------------------------------------------------------------

-( 550 )

-

-CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1434

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1435

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1436

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1437

-

-

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  692

-UnaryExpressionNotPlusMinus             Gt/Rd  692

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1438

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 749 ----------------------------------------------------------------------

-( 551 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt  .PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   862

-

-

-STATE 750 ----------------------------------------------------------------------

-( 552 )

-

-ArrayType ::= PrimitiveType  .Dims 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1439

-

-

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   296

-

-

-STATE 751 ----------------------------------------------------------------------

-( 567 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression COLON  .

-                          ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1440

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1441

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1442

-

-

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1443

-

-

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1444

-

-

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1445

-

-

-ConditionalExpression                   Gt/Rd  736

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 752 ----------------------------------------------------------------------

-( 571 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers COMMA  .RBRACE 

-VariableInitializers ::= VariableInitializers COMMA  .VariableInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1446

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1447

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1448

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1449

-

-

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACE                                  Sh/Rd  463

-LBRACE                                  Shift  117

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-false                                   Shift  1050

-true                                    Shift  1050

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1450

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1451

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Gt/Rd  465

-ArrayInitializer                        Gt/Rd  465

-VariableInitializer                     Gt/Rd  465

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 753 ----------------------------------------------------------------------

-( 572 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims  .

-                 MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  390

-MethodHeaderThrowsClauseopt    Gt/Rd  390

-

-LBRACE                         Reduce 772

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1452

-

-

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 754 ----------------------------------------------------------------------

-( 573 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims  .

-                        MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  391

-MethodHeaderThrowsClauseopt    Gt/Rd  391

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 755 ----------------------------------------------------------------------

-( 575 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                            Identifier  .LPAREN 

-

-LPAREN    Sh/Rd  394

-

-

-STATE 756 ----------------------------------------------------------------------

-( 576 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON  .PseudoTokens SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1453

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1454

-

-

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1455

-

-

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1456

-

-

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   863

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 757 ----------------------------------------------------------------------

-( 577 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1457

-

-

-AspectHeaderRest ::= AspectHeaderRestStart  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1458

-

-

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1459

-

-

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1460

-

-

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   864

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1461

-

-

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 758 ----------------------------------------------------------------------

-( 579 )

-

-AspectBodyDeclarations ::= AspectBodyDeclarations  .AspectBodyDeclaration 

-AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations . (199)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-AspectBodyDeclaration ::= .ClassBodyDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .ClassMemberDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .StaticInitializer 

-ClassBodyDeclarationNoAroundMethod ::= .ConstructorDeclaration 

-ClassBodyDeclarationNoAroundMethod ::= .Diet NestedMethod CreateInitializer 

-                                       Block 

-ClassMemberDeclarationNoAroundMethod ::= .PointcutDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AspectDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .FieldDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .MethodDeclarationNoAround 

-ClassMemberDeclarationNoAroundMethod ::= .ClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .InterfaceDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1462

-

-

-ClassMemberDeclarationNoAroundMethod ::= .IntertypeClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .EnumDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AnnotationTypeDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .SEMICOLON 

-MethodDeclarationNoAround ::= .AbstractMethodDeclarationNoAround 

-MethodDeclarationNoAround ::= .MethodHeaderNoAround MethodBody 

-AbstractMethodDeclarationNoAround ::= .MethodHeaderNoAround SEMICOLON 

-MethodHeaderNoAround ::= .MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-MethodHeaderNameNoAround ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1463

-

-

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeConstructorDeclaration ::= .InterTypeConstructorHeader MethodBody 

-InterTypeConstructorHeader ::= .InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters GenericType DOT 

-                                   new LPAREN 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassDeclaration ::= .ClassHeader ClassBody 

-IntertypeClassDeclaration ::= .IntertypeClassHeader ClassBody 

-IntertypeClassHeader ::= .IntertypeClassHeaderName ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 TypeParameters 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 

-IntertypeClassHeaderName1 ::= .Modifiersopt class OnType DOT JavaIdentifier 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1464

-

-

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                                Shift  1064

-volatile                                Shift  1064

-transient                               Shift  1064

-synchronized                            Shift  1064

-native                                  Shift  1064

-final                                   Shift  1064

-abstract                                Shift  1064

-static                                  Shift  131

-private                                 Shift  1064

-protected                               Shift  1064

-public                                  Shift  1064

-AT                                      Shift  80

-SEMICOLON                               Sh/Rd  214

-declare                                 Shift  183

-

-ClassMemberDeclarationNoAroundMethod    Goto   1236

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1465

-

-

-StaticInitializer                       Goto   1236

-ConstructorDeclaration                  Goto   1236

-Diet                                    Goto   759

-ConstructorHeaderName                   Goto   134

-Modifiersopt                            Goto   767

-ConstructorHeader                       Goto   132

-StaticOnly                              Goto   130

-PointcutHeader                          Goto   124

-Modifiers                               Goto   126

-SimpleModifier                          Goto   1064

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1064

-AspectHeader                            Goto   129

-AspectHeaderName1                       Goto   128

-AspectHeaderName2                       Goto   127

-AspectHeaderName                        Goto   125

-AbstractMethodDeclarationNoAround       Goto   1236

-MethodHeaderNoAround                    Goto   761

-MethodHeaderNameNoAround                Goto   760

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-IntertypeClassHeader                    Goto   762

-IntertypeClassHeaderName1               Goto   763

-IntertypeClassHeaderName                Goto   764

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-PointcutDeclaration                     Goto   1236

-AspectDeclaration                       Goto   1236

-FieldDeclaration                        Goto   1236

-MethodDeclarationNoAround               Goto   1236

-ClassDeclaration                        Goto   1236

-InterfaceDeclaration                    Goto   1236

-IntertypeClassDeclaration               Goto   1236

-EnumDeclaration                         Goto   1236

-AnnotationTypeDeclaration               Goto   1236

-AroundHeader                            Goto   190

-AroundHeaderName                        Goto   191

-BasicAdviceHeader                       Goto   187

-BeforeAdviceHeaderName                  Goto   188

-AfterAdviceHeaderName                   Goto   189

-BeforeAdviceHeader                      Goto   187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1466

-

-

-AfterAdviceHeader                       Goto   187

-AbstractInterTypeMethodDeclaration      Gt/Rd  197

-InterTypeMethodHeader                   Goto   185

-InterTypeMethodHeaderName               Goto   184

-InterTypeConstructorHeader              Goto   765

-InterTypeConstructorHeaderName          Goto   766

-InterTypeFieldHeader                    Goto   186

-DeclareHeader                           Goto   182

-DeclareAnnotationHeader                 Goto   181

-ClassBodyDeclarationNoAroundMethod      Gt/Rd  200

-AroundDeclaration                       Gt/Rd  197

-BasicAdviceDeclaration                  Gt/Rd  197

-InterTypeMethodDeclaration              Gt/Rd  197

-InterTypeConstructorDeclaration         Gt/Rd  197

-InterTypeFieldDeclaration               Gt/Rd  197

-DeclareDeclaration                      Gt/Rd  197

-AspectBodyDeclaration                   Gt/Rd  197

-

-RBRACE                                  Reduce 199

-Identifier                              Reduce 764

-boolean                                 Reduce 764

-byte                                    Reduce 764

-char                                    Reduce 764

-class                                   Reduce 764

-double                                  Reduce 764

-enum                                    Reduce 764

-float                                   Reduce 764

-int                                     Reduce 764

-interface                               Reduce 764

-long                                    Reduce 764

-short                                   Reduce 764

-void                                    Reduce 764

-aspect                                  Reduce 764

-pointcut                                Reduce 764

-around                                  Reduce 764

-before                                  Reduce 764

-after                                   Reduce 764

-privileged                              Reduce 764

-LESS                                    Reduce 764

-AT308                                   Reduce 764

-LBRACE                                  Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 759 ----------------------------------------------------------------------

-( 579 758 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet  .NestedMethod CreateInitializer 

-                                       Block 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1467

-

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   865

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 760 ----------------------------------------------------------------------

-( 579 758 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1468

-

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   866

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 761 ----------------------------------------------------------------------

-( 579 758 )

-

-MethodDeclarationNoAround ::= MethodHeaderNoAround  .MethodBody 

-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1469

-

-

-SEMICOLON       Sh/Rd  217

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  216

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 762 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassDeclaration ::= IntertypeClassHeader  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  339

-

-

-STATE 763 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassHeaderName ::= IntertypeClassHeaderName1  .TypeParameters 

-IntertypeClassHeaderName ::= IntertypeClassHeaderName1 . (342)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  341

-

-extends           Reduce 342

-implements        Reduce 342

-LBRACE            Reduce 342

-

-Default reduction to rule  342

-

-

-STATE 764 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassHeader ::= IntertypeClassHeaderName  .ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1470

-

-

-

-ClassHeaderExtends       Goto   867

-ClassHeaderExtendsopt    Goto   867

-

-implements               Reduce 755

-LBRACE                   Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 765 ----------------------------------------------------------------------

-( 579 758 )

-

-InterTypeConstructorDeclaration ::= InterTypeConstructorHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  257

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 766 ----------------------------------------------------------------------

-( 579 758 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName  .

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1471

-

-

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   868

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1472

-

-

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 767 ----------------------------------------------------------------------

-( 579 758 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-MethodHeaderNameNoAround ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters GenericType 

-                                   DOT new LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt  .class OnType DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1473

-

-

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-class                             Shift  869

-after                             Shift  425

-before                            Shift  426

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1474

-

-

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-LESS                              Shift  223

-Identifier                        Shift  344

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   870

-GenericType                       Goto   873

-PrimitiveType                     Goto   287

-Name                              Goto   872

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   870

-TypeParameters                    Goto   871

-Type                              Goto   870

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 768 ----------------------------------------------------------------------

-( 580 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  392

-

-

-STATE 769 ----------------------------------------------------------------------

-( 585 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1475

-

-

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt aspect  .Identifier 

-

-Identifier    Sh/Rd  191

-

-

-STATE 770 ----------------------------------------------------------------------

-( 586 646 648 753 754 784 791 794 939 989 )

-

-MethodHeaderThrowsClause ::= throws  .ClassTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ClassTypeList ::= .ClassTypeList COMMA ClassTypeElt 

-ClassTypeElt ::= .ClassType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassType                     Gt/Rd  415

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1476

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   1272

-ClassTypeElt                  Goto   874

-ClassTypeList                 Goto   874

-

-

-STATE 771 ----------------------------------------------------------------------

-( 590 )

-

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                               JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  955

-

-

-STATE 772 ----------------------------------------------------------------------

-( 592 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PackageDeclarationName ::= Modifiers package PushRealModifiers Name  .

-                           RejectTypeAnnotations 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  445

-

-RejectTypeAnnotations    Gt/Rd  141

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 773 ----------------------------------------------------------------------

-( 593 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims  .

-                           AnnotationMethodHeaderDefaultValueopt 

-

-AnnotationMethodHeaderDefaultValueopt ::= . (957)

-AnnotationMethodHeaderDefaultValueopt ::= .DefaultValue 

-DefaultValue ::= .default MemberValue 

-

-default                                  Shift  875

-

-DefaultValue                             Gt/Rd  958

-AnnotationMethodHeaderDefaultValueopt    Gt/Rd  959

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1477

-

-

-SEMICOLON                                Reduce 957

-

-Default reduction to rule  957

-

-

-STATE 774 ----------------------------------------------------------------------

-( 594 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-StaticImportOnDemandDeclarationName ::= import static Name DOT  .

-                                        RejectTypeAnnotations MULTIPLY 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-RejectTypeAnnotations ::= . (104)

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-RejectTypeAnnotations         Goto   876

-

-MULTIPLY                      Reduce 104

-

-Default reduction to rule  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1478

-

-

-

-

-STATE 775 ----------------------------------------------------------------------

-( 595 )

-

-TypeImportOnDemandDeclarationName ::= import Name DOT RejectTypeAnnotations  .

-                                      MULTIPLY 

-

-MULTIPLY    Sh/Rd  151

-

-

-STATE 776 ----------------------------------------------------------------------

-( 596 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA  .RBRACE 

-

-RBRACE    Sh/Rd  983

-

-

-STATE 777 ----------------------------------------------------------------------

-( 596 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .RBRACE 

-MemberValues ::= MemberValues  .COMMA MemberValue 

-

-RBRACE    Sh/Rd  982

-COMMA     Shift  877

-

-

-STATE 778 ----------------------------------------------------------------------

-( 613 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression COLON  .

-                                  ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1479

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1480

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1481

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1482

-

-

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1483

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1484

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-ConditionalExpression                   Gt/Rd  940

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 779 ----------------------------------------------------------------------

-( 629 )

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON  .ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1485

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1486

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1487

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1488

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1489

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1490

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-ConditionalExpression                   Gt/Rd  939

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 780 ----------------------------------------------------------------------

-( 631 )

-

-CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN  .LBRACE 

-

-LBRACE    Sh/Rd  135

-

-

-STATE 781 ----------------------------------------------------------------------

-( 632 )

-

-CatchFormalParameter ::= Modifiersopt CatchType  .VariableDeclaratorId 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1491

-

-

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Gt/Rd  409

-

-

-STATE 782 ----------------------------------------------------------------------

-( 632 )

-

-CatchType ::= UnionType . (410)

-UnionType ::= UnionType  .OR Type 

-

-OR            Shift  878

-

-Identifier    Reduce 410

-aspect        Reduce 410

-pointcut      Reduce 410

-around        Reduce 410

-before        Reduce 410

-after         Reduce 410

-declare       Reduce 410

-privileged    Reduce 410

-

-Default reduction to rule  410

-

-

-STATE 783 ----------------------------------------------------------------------

-( 634 )

-

-Arguments ::= LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  803

-

-

-STATE 784 ----------------------------------------------------------------------

-( 635 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1492

-

-

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         MethodHeaderThrowsClause 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-AnnotationMethodHeaderDefaultValueopt ::= . (957)

-AnnotationMethodHeaderDefaultValueopt ::= .DefaultValue 

-DefaultValue ::= .default MemberValue 

-

-default                                  Shift  875

-throws                                   Shift  770

-

-DefaultValue                             Gt/Rd  958

-AnnotationMethodHeaderDefaultValueopt    Gt/Rd  995

-MethodHeaderThrowsClause                 Gt/Rd  996

-

-abstract                                 Reduce 957

-final                                    Reduce 957

-native                                   Reduce 957

-private                                  Reduce 957

-protected                                Reduce 957

-public                                   Reduce 957

-static                                   Reduce 957

-strictfp                                 Reduce 957

-synchronized                             Reduce 957

-transient                                Reduce 957

-volatile                                 Reduce 957

-AT                                       Reduce 957

-$eof                                     Reduce 957

-

-Default reduction to rule  957

-

-

-STATE 785 ----------------------------------------------------------------------

-( 637 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  993

-

-

-STATE 786 ----------------------------------------------------------------------

-( 639 )

-

-AllocationHeader ::= new ClassType LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  624

-

-

-STATE 787 ----------------------------------------------------------------------

-( 641 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1493

-

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       MINUS  .Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  136

-

-NormalAnnotation          Goto   879

-MarkerAnnotation          Goto   879

-SingleMemberAnnotation    Goto   879

-AnnotationName            Goto   81

-Annotation                Goto   879

-Annotations               Goto   879

-

-

-STATE 788 ----------------------------------------------------------------------

-( 641 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS  .Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  136

-

-NormalAnnotation          Goto   880

-MarkerAnnotation          Goto   880

-SingleMemberAnnotation    Goto   880

-AnnotationName            Goto   81

-Annotation                Goto   880

-Annotations               Goto   880

-

-

-STATE 789 ----------------------------------------------------------------------

-( 641 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1494

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  275

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 790 ----------------------------------------------------------------------

-( 642 )

-

-PseudoToken ::= if LPAREN Expression  .RPAREN 

-

-RPAREN    Sh/Rd  316

-

-

-STATE 791 ----------------------------------------------------------------------

-( 644 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims  .

-                          MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  248

-MethodHeaderThrowsClauseopt    Gt/Rd  248

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 792 ----------------------------------------------------------------------

-( 645 )

-

-InterTypeFieldBody ::= EQUAL ForceNoDiet VariableInitializer  .RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1495

-

-

-RestoreDiet    Gt/Rd  271

-

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 793 ----------------------------------------------------------------------

-( 646 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt  .

-                       COLON PseudoTokens 

-

-COLON    Shift  881

-

-

-STATE 794 ----------------------------------------------------------------------

-( 647 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt  .

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Goto   882

-MethodHeaderThrowsClauseopt    Goto   882

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 795 ----------------------------------------------------------------------

-( 647 )

-

-ExtraParamopt ::= Identifier  .LPAREN FormalParameter RPAREN 

-ExtraParamopt ::= Identifier  .LPAREN RPAREN 

-ExtraParamopt ::= Identifier . (239)

-

-LPAREN    Shift  883

-

-throws    Reduce 239

-COLON     Reduce 239

-

-Default reduction to rule  239

-

-

-STATE 796 ----------------------------------------------------------------------

-( 648 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1496

-

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt  .COLON 

-                 PseudoTokens 

-

-COLON    Shift  884

-

-

-STATE 797 ----------------------------------------------------------------------

-( 649 )

-

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  991

-

-

-STATE 798 ----------------------------------------------------------------------

-( 649 943 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType  .

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

-TypeParametersAsReference ::= .TypeParameters 

-TypeParameters ::= .LESS TypeParameterList1 

-

-DOT                          Shift  886

-LESS                         Shift  223

-

-TypeParameters               Gt/Rd  256

-TypeParametersAsReference    Goto   885

-

-

-STATE 799 ----------------------------------------------------------------------

-( 651 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference  .

-                         DOT JavaIdentifier 

-

-DOT    Shift  887

-

-

-STATE 800 ----------------------------------------------------------------------

-( 651 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1497

-

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS  .DOT JavaIdentifier 

-

-DOT    Shift  888

-

-

-STATE 801 ----------------------------------------------------------------------

-( 651 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT  .JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT  .MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT  .JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT  .MULTIPLY DOT 

-                         JavaIdentifier 

-

-MULTIPLY                Shift  889

-Identifier              Shift  890

-declare                 Shift  890

-after                   Shift  890

-before                  Shift  890

-pointcut                Shift  890

-privileged              Shift  890

-aspect                  Shift  890

-around                  Shift  890

-

-AjSimpleNameNoAround    Goto   890

-AjSimpleName            Goto   890

-JavaIdentifier          Goto   890

-

-

-STATE 802 ----------------------------------------------------------------------

-( 658 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports . (111)

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports  .TypeDeclarations 

-

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1498

-

-

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1499

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassDeclaration                       Goto   891

-InterfaceDeclaration                   Goto   891

-EnumDeclaration                        Goto   891

-AnnotationTypeDeclaration              Goto   891

-AspectDeclaration                      Goto   891

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-TypeDeclaration                        Goto   891

-TypeDeclarations                       Goto   891

-

-$eof                                   Reduce 111

-class                                  Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1500

-

-

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 803 ----------------------------------------------------------------------

-( 660 )

-

-InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-                            TypeDeclarations . (116)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1501

-

-

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1502

-

-

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 116

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 804 ----------------------------------------------------------------------

-( 661 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue  .MemberValue 

-                    ExitMemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1503

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1504

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1505

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1506

-

-

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1507

-

-

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1508

-

-

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1066

-true                                    Shift  1066

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1509

-

-

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Goto   892

-MarkerAnnotation                        Goto   892

-SingleMemberAnnotation                  Goto   892

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Goto   892

-Annotation                              Goto   892

-MemberValueArrayInitializer             Goto   892

-MemberValue                             Goto   892

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 805 ----------------------------------------------------------------------

-( 663 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1510

-

-

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList COMMA  .TypeArgument2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

-AT308                             Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1511

-

-

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   665

-ClassOrInterface                  Goto   664

-TypeAnnotationsopt                Goto   666

-ReferenceType2                    Gt/Rd  831

-Wildcard2                         Gt/Rd  831

-Wildcard                          Gt/Rd  823

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-TypeArgument2                     Gt/Rd  831

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 806 ----------------------------------------------------------------------

-( 664 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-ReferenceType1 ::= ClassOrInterface LESS  .TypeArgumentList2 

-ReferenceType2 ::= ClassOrInterface LESS  .TypeArgumentList3 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1512

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-TypeArgumentList2 ::= .TypeArgumentList COMMA TypeArgument2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-TypeArgumentList3 ::= .TypeArgumentList COMMA TypeArgument3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1513

-

-

-Wildcard3 ::= .TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION WildcardBounds3 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType3                    Gt/Rd  835

-Wildcard3                         Gt/Rd  835

-TypeAnnotationsopt                Goto   895

-ReferenceType                     Goto   894

-TypeArgument3                     Gt/Rd  835

-TypeArgumentList                  Goto   893

-ReferenceType2                    Gt/Rd  829

-Wildcard2                         Gt/Rd  829

-ClassOrInterface                  Goto   664

-TypeArgument2                     Gt/Rd  829

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-TypeArgument                      Goto   893

-Wildcard                          Goto   893

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-TypeArgumentList2                 Gt/Rd  829

-TypeArgumentList3                 Gt/Rd  835

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1514

-

-

-

-Default reduction to rule  92

-

-

-STATE 807 ----------------------------------------------------------------------

-( 666 )

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .WildcardBounds2 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-WildcardBounds2 ::= .extends ReferenceType2 

-WildcardBounds2 ::= .super ReferenceType2 

-

-RIGHT_SHIFT        Sh/Rd  849

-GREATER            Sh/Rd  845

-super              Shift  896

-extends            Shift  897

-

-WildcardBounds     Gt/Rd  842

-WildcardBounds1    Gt/Rd  846

-WildcardBounds2    Gt/Rd  850

-

-COMMA              Reduce 841

-

-Default reduction to rule  841

-

-

-STATE 808 ----------------------------------------------------------------------

-( 667 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-WildcardBounds ::= super ReferenceType . (844)

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 809 ----------------------------------------------------------------------

-( 668 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1515

-

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-WildcardBounds ::= extends ReferenceType . (843)

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 810 ----------------------------------------------------------------------

-( 670 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-ELLIPSIS    Shift  898

-

-

-STATE 811 ----------------------------------------------------------------------

-( 671 )

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS  .

-                    VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  407

-

-

-STATE 812 ----------------------------------------------------------------------

-( 673 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1516

-

-

-UnannotatableName ::= UnannotatableName DOT  .SimpleName 

-VariableDeclaratorIdOrThis ::= UnannotatableName DOT  .this 

-

-this          Sh/Rd  107

-Identifier    Sh/Rd  89

-

-SimpleName    Gt/Rd  89

-

-

-STATE 813 ----------------------------------------------------------------------

-( 677 )

-

-EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  795

-

-

-STATE 814 ----------------------------------------------------------------------

-( 678 )

-

-EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody  .RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Gt/Rd  801

-

-RBRACE         Reduce 382

-SEMICOLON      Reduce 382

-COMMA          Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 815 ----------------------------------------------------------------------

-( 681 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-TypeParameter ::= TypeParameterHeader extends ReferenceType . (862)

-TypeParameter ::= TypeParameterHeader extends ReferenceType  .

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader extends ReferenceType  .

-                   AdditionalBoundList1 

-

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-AdditionalBoundList1 ::= .AdditionalBoundList AdditionalBound1 

-AdditionalBound1 ::= .AND ReferenceType1 

-

-GREATER                 Sh/Rd  828

-AND                     Shift  900

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1517

-

-

-AdditionalBound1        Gt/Rd  871

-AdditionalBoundList     Goto   899

-AdditionalBound         Goto   899

-AdditionalBoundList1    Gt/Rd  871

-

-COMMA                   Reduce 862

-

-Default reduction to rule  862

-

-

-STATE 816 ----------------------------------------------------------------------

-( 690 )

-

-CatchClause ::= catch LPAREN CatchFormalParameter  .RPAREN Block 

-

-RPAREN    Shift  901

-

-

-STATE 817 ----------------------------------------------------------------------

-( 694 )

-

-Resource ::= Modifiers Type PushRealModifiers  .VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Goto   902

-

-

-STATE 818 ----------------------------------------------------------------------

-( 695 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId  .EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1518

-

-

-EnterVariable    Goto   903

-

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 819 ----------------------------------------------------------------------

-( 697 )

-

-DoStatement ::= do Statement while LPAREN Expression  .RPAREN SEMICOLON 

-

-RPAREN    Shift  904

-

-

-STATE 820 ----------------------------------------------------------------------

-( 698 )

-

-SwitchStatement ::= switch LPAREN Expression RPAREN OpenBlock  .SwitchBlock 

-

-SwitchBlock ::= .LBRACE RBRACE 

-SwitchBlock ::= .LBRACE SwitchBlockStatements RBRACE 

-SwitchBlock ::= .LBRACE SwitchLabels RBRACE 

-SwitchBlock ::= .LBRACE SwitchBlockStatements SwitchLabels RBRACE 

-

-LBRACE         Shift  905

-

-SwitchBlock    Gt/Rd  527

-

-

-STATE 821 ----------------------------------------------------------------------

-( 701 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1519

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1520

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1521

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1522

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1523

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1524

-

-

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   906

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 822 ----------------------------------------------------------------------

-( 702 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1525

-

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  663

-

-

-STATE 823 ----------------------------------------------------------------------

-( 703 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1526

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1527

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1528

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1529

-

-

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1530

-

-

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1531

-

-

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   907

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 824 ----------------------------------------------------------------------

-( 704 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  908

-

-

-STATE 825 ----------------------------------------------------------------------

-( 706 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  649

-

-

-STATE 826 ----------------------------------------------------------------------

-( 707 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1532

-

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-RPAREN    Shift  909

-

-

-STATE 827 ----------------------------------------------------------------------

-( 708 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1533

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1534

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1535

-

-

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1536

-

-

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1537

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1538

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   910

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 828 ----------------------------------------------------------------------

-( 709 )

-

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  662

-

-

-STATE 829 ----------------------------------------------------------------------

-( 710 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  911

-

-

-STATE 830 ----------------------------------------------------------------------

-( 711 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1539

-

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   912

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 831 ----------------------------------------------------------------------

-( 712 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

-RPAREN    Shift  913

-

-

-STATE 832 ----------------------------------------------------------------------

-( 713 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1540

-

-

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1541

-

-

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1542

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1543

-

-

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1544

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1545

-

-

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   914

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 833 ----------------------------------------------------------------------

-( 714 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1546

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1547

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1548

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1549

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1550

-

-

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1551

-

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   915

-

-RPAREN                                  Reduce 770

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1552

-

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 834 ----------------------------------------------------------------------

-( 715 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1553

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1554

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1555

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1556

-

-

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1557

-

-

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1558

-

-

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   916

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 835 ----------------------------------------------------------------------

-( 716 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

-RPAREN    Shift  917

-

-

-STATE 836 ----------------------------------------------------------------------

-( 717 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1559

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1560

-

-

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1561

-

-

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1562

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1563

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1564

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   918

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1565

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 837 ----------------------------------------------------------------------

-( 718 )

-

-MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  666

-

-

-STATE 838 ----------------------------------------------------------------------

-( 720 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  425

-

-

-STATE 839 ----------------------------------------------------------------------

-( 721 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  423

-

-

-STATE 840 ----------------------------------------------------------------------

-( 724 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-

-else    Shift  919

-

-

-STATE 841 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-StatementNoShortIf ::= StatementWithoutTrailingSubstatement . (492)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1566

-

-

-

-else                    Reduce 492

-Identifier              Reduce 485

-abstract                Reduce 485

-assert                  Reduce 485

-boolean                 Reduce 485

-break                   Reduce 485

-byte                    Reduce 485

-case                    Reduce 485

-char                    Reduce 485

-class                   Reduce 485

-continue                Reduce 485

-default                 Reduce 485

-do                      Reduce 485

-double                  Reduce 485

-enum                    Reduce 485

-false                   Reduce 485

-final                   Reduce 485

-float                   Reduce 485

-for                     Reduce 485

-if                      Reduce 485

-int                     Reduce 485

-interface               Reduce 485

-long                    Reduce 485

-native                  Reduce 485

-new                     Reduce 485

-null                    Reduce 485

-private                 Reduce 485

-protected               Reduce 485

-public                  Reduce 485

-return                  Reduce 485

-short                   Reduce 485

-static                  Reduce 485

-strictfp                Reduce 485

-super                   Reduce 485

-switch                  Reduce 485

-synchronized            Reduce 485

-this                    Reduce 485

-throw                   Reduce 485

-transient               Reduce 485

-true                    Reduce 485

-try                     Reduce 485

-void                    Reduce 485

-volatile                Reduce 485

-while                   Reduce 485

-aspect                  Reduce 485

-pointcut                Reduce 485

-around                  Reduce 485

-before                  Reduce 485

-after                   Reduce 485

-declare                 Reduce 485

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1567

-

-

-privileged              Reduce 485

-IntegerLiteral          Reduce 485

-LongLiteral             Reduce 485

-FloatingPointLiteral    Reduce 485

-DoubleLiteral           Reduce 485

-CharacterLiteral        Reduce 485

-StringLiteral           Reduce 485

-PLUS_PLUS               Reduce 485

-MINUS_MINUS             Reduce 485

-LESS                    Reduce 485

-LPAREN                  Reduce 485

-LBRACE                  Reduce 485

-RBRACE                  Reduce 485

-SEMICOLON               Reduce 485

-AT                      Reduce 485

-BeginLambda             Reduce 485

-AT308                   Reduce 485

-$eof                    Reduce 485

-

-Default reduction to rule  485

-

-

-STATE 842 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader  .

-                                  StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1568

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1569

-

-

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1570

-

-

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1571

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1572

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1573

-

-

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  810

-IfThenElseStatementNoShortIf            Gt/Rd  810

-WhileStatementNoShortIf                 Gt/Rd  810

-ForStatementNoShortIf                   Gt/Rd  810

-EnhancedForStatementNoShortIf           Gt/Rd  810

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1574

-

-

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  809

-IfThenStatement                         Gt/Rd  809

-IfThenElseStatement                     Gt/Rd  809

-WhileStatement                          Gt/Rd  809

-ForStatement                            Gt/Rd  809

-EnhancedForStatement                    Gt/Rd  809

-Statement                               Gt/Rd  809

-StatementNoShortIf                      Gt/Rd  810

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 843 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-ForStatement ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1575

-

-

-EnhancedForStatementHeaderInit ::= for  .LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-LPAREN    Shift  920

-

-

-STATE 844 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-WhileStatement ::= while  .LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= while  .LPAREN Expression RPAREN StatementNoShortIf 

-

-LPAREN    Shift  921

-

-

-STATE 845 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-IfThenStatement ::= if  .LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= if  .LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if  .LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-LPAREN    Shift  922

-

-

-STATE 846 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-LabeledStatement ::= Label  .COLON Statement 

-LabeledStatementNoShortIf ::= Label  .COLON StatementNoShortIf 

-

-COLON    Shift  923

-

-

-STATE 847 ----------------------------------------------------------------------

-( 726 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-SEMICOLON    Shift  924

-

-

-STATE 848 ----------------------------------------------------------------------

-( 727 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                   JavaIdentifier  .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1576

-

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   925

-Dimsopt                       Goto   925

-

-SEMICOLON                     Reduce 768

-COLON                         Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 849 ----------------------------------------------------------------------

-( 728 )

-

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers  .JavaIdentifier Dimsopt 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1577

-

-

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  926

-declare                 Shift  926

-after                   Shift  926

-before                  Shift  926

-pointcut                Shift  926

-privileged              Shift  926

-aspect                  Shift  926

-around                  Shift  926

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   926

-AjSimpleNameNoAround    Goto   926

-JavaIdentifier          Goto   926

-VariableDeclarator      Goto   733

-VariableDeclarators     Goto   733

-

-

-STATE 850 ----------------------------------------------------------------------

-( 731 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL  .ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   927

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1578

-

-

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 851 ----------------------------------------------------------------------

-( 734 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier . (944)

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier  .

-                                        TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  945

-

-abstract          Reduce 944

-extends           Reduce 944

-final             Reduce 944

-implements        Reduce 944

-native            Reduce 944

-private           Reduce 944

-protected         Reduce 944

-public            Reduce 944

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1579

-

-

-static            Reduce 944

-strictfp          Reduce 944

-synchronized      Reduce 944

-transient         Reduce 944

-volatile          Reduce 944

-LBRACE            Reduce 944

-AT                Reduce 944

-$eof              Reduce 944

-

-Default reduction to rule  944

-

-

-STATE 852 ----------------------------------------------------------------------

-( 735 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  603

-

-

-STATE 853 ----------------------------------------------------------------------

-( 737 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  928

-

-

-STATE 854 ----------------------------------------------------------------------

-( 738 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1580

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1581

-

-

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1582

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1583

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1584

-

-

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1585

-

-

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   929

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1586

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 855 ----------------------------------------------------------------------

-( 739 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1587

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1588

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1589

-

-

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1590

-

-

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1591

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1592

-

-

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   930

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 856 ----------------------------------------------------------------------

-( 740 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1593

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1594

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1595

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1596

-

-

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1597

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1598

-

-

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   931

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 857 ----------------------------------------------------------------------

-( 741 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1599

-

-

-

-RPAREN    Shift  932

-

-

-STATE 858 ----------------------------------------------------------------------

-( 743 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1600

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1601

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1602

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1603

-

-

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  693

-UnaryExpressionNotPlusMinus             Gt/Rd  693

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 859 ----------------------------------------------------------------------

-( 744 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN  .InsideCastExpression UnaryExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1604

-

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   933

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-PLUS_PLUS                Reduce 700

-MINUS_MINUS              Reduce 700

-PLUS                     Reduce 700

-MINUS                    Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

-Default reduction to rule  700

-

-

-STATE 860 ----------------------------------------------------------------------

-( 746 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1605

-

-

-                   ClassOrInterfaceType  .Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   934

-Dimsopt                       Goto   934

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 861 ----------------------------------------------------------------------

-( 747 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt  .PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1606

-

-

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   935

-

-

-STATE 862 ----------------------------------------------------------------------

-( 749 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN  .

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   936

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1607

-

-

-

-Default reduction to rule  700

-

-

-STATE 863 ----------------------------------------------------------------------

-( 756 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens  .SEMICOLON 

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1608

-

-

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1609

-

-

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-SEMICOLON                     Sh/Rd  222

-COLON                         Sh/Rd  287

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1610

-

-

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1611

-

-

-PseudoToken                   Gt/Rd  284

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 864 ----------------------------------------------------------------------

-( 757 )

-

-AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens . (193)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1612

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1613

-

-

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1614

-

-

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1615

-

-

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 193

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 865 ----------------------------------------------------------------------

-( 759 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod  .CreateInitializer 

-                                       Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   937

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 866 ----------------------------------------------------------------------

-( 760 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1616

-

-

-MethodHeaderRightParen    Goto   938

-

-

-STATE 867 ----------------------------------------------------------------------

-( 764 )

-

-IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt  .

-                         ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  340

-ClassHeaderImplementsopt    Gt/Rd  340

-

-LBRACE                      Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 868 ----------------------------------------------------------------------

-( 766 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt  .MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   939

-

-

-STATE 869 ----------------------------------------------------------------------

-( 767 )

-

-IntertypeClassHeaderName1 ::= Modifiersopt class  .OnType DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt class  .JavaIdentifier 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1617

-

-

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-Identifier              Shift  1274

-declare                 Shift  1273

-after                   Shift  1273

-before                  Shift  1273

-pointcut                Shift  1273

-privileged              Shift  1273

-aspect                  Shift  1273

-around                  Shift  1273

-

-AjSimpleName            Goto   1273

-AjSimpleNameNoAround    Goto   1273

-JavaIdentifier          Goto   941

-OnType                  Goto   940

-

-

-STATE 870 ----------------------------------------------------------------------

-( 767 )

-

-MethodHeaderNameNoAround ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1618

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-around                    Shift  652

-declare                   Shift  1231

-after                     Shift  1231

-before                    Shift  1231

-pointcut                  Shift  1231

-privileged                Shift  1231

-aspect                    Shift  1231

-Identifier                Shift  655

-

-VariableDeclaratorId      Goto   527

-JavaIdentifier            Goto   653

-VariableDeclarator        Goto   582

-VariableDeclarators       Goto   582

-AjSimpleName              Goto   1232

-AjSimpleNameNoAround      Goto   654

-OnType                    Goto   651

-JavaIdentifierNoAround    Goto   942

-

-

-STATE 871 ----------------------------------------------------------------------

-( 767 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .GenericType 

-                                   DOT new LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1619

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   943

-GenericType                       Goto   945

-PrimitiveType                     Goto   287

-Name                              Goto   944

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1620

-

-

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   943

-Type                              Goto   943

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 872 ----------------------------------------------------------------------

-( 767 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .PLUS DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-PLUS                          Shift  946

-DOT                           Shift  947

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1621

-

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  63

-

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 873 ----------------------------------------------------------------------

-( 767 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType  .DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  948

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1622

-

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  65

-

-Identifier                    Reduce 53

-aspect                        Reduce 53

-pointcut                      Reduce 53

-around                        Reduce 53

-before                        Reduce 53

-after                         Reduce 53

-declare                       Reduce 53

-privileged                    Reduce 53

-

-Default reduction to rule  56

-

-

-STATE 874 ----------------------------------------------------------------------

-( 770 )

-

-MethodHeaderThrowsClause ::= throws ClassTypeList . (399)

-ClassTypeList ::= ClassTypeList  .COMMA ClassTypeElt 

-

-COMMA           Shift  949

-

-abstract        Reduce 399

-final           Reduce 399

-native          Reduce 399

-private         Reduce 399

-protected       Reduce 399

-public          Reduce 399

-static          Reduce 399

-strictfp        Reduce 399

-synchronized    Reduce 399

-transient       Reduce 399

-volatile        Reduce 399

-LBRACE          Reduce 399

-SEMICOLON       Reduce 399

-COLON           Reduce 399

-AT              Reduce 399

-$eof            Reduce 399

-

-Default reduction to rule  399

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1623

-

-

-

-

-STATE 875 ----------------------------------------------------------------------

-( 773 784 )

-

-DefaultValue ::= default  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1624

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1625

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1626

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1627

-

-

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1628

-

-

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1066

-true                                    Shift  1066

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1629

-

-

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  964

-MarkerAnnotation                        Gt/Rd  964

-SingleMemberAnnotation                  Gt/Rd  964

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  964

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1630

-

-

-Annotation                              Gt/Rd  964

-MemberValueArrayInitializer             Gt/Rd  964

-MemberValue                             Gt/Rd  964

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 876 ----------------------------------------------------------------------

-( 774 )

-

-StaticImportOnDemandDeclarationName ::= import static Name DOT 

-                                        RejectTypeAnnotations  .MULTIPLY 

-

-MULTIPLY    Sh/Rd  817

-

-

-STATE 877 ----------------------------------------------------------------------

-( 777 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA  .RBRACE 

-MemberValues ::= MemberValues COMMA  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1631

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1632

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1633

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1634

-

-

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1635

-

-

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  981

-AT                                      Shift  136

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1636

-

-

-IntegerLiteral                          Shift  1066

-false                                   Shift  1066

-true                                    Shift  1066

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1637

-

-

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  987

-MarkerAnnotation                        Gt/Rd  987

-SingleMemberAnnotation                  Gt/Rd  987

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  987

-Annotation                              Gt/Rd  987

-MemberValueArrayInitializer             Gt/Rd  987

-MemberValue                             Gt/Rd  987

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 878 ----------------------------------------------------------------------

-( 782 )

-

-UnionType ::= UnionType OR  .Type 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1638

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  412

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1639

-

-

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Gt/Rd  412

-Type                              Gt/Rd  412

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 879 ----------------------------------------------------------------------

-( 787 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       MINUS Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  277

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 880 ----------------------------------------------------------------------

-( 788 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1640

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  276

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 881 ----------------------------------------------------------------------

-( 793 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                       COLON  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1641

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1642

-

-

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1643

-

-

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1644

-

-

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   950

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 882 ----------------------------------------------------------------------

-( 794 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt  .COLON PseudoTokens 

-

-COLON    Shift  951

-

-

-STATE 883 ----------------------------------------------------------------------

-( 795 )

-

-ExtraParamopt ::= Identifier LPAREN  .FormalParameter RPAREN 

-ExtraParamopt ::= Identifier LPAREN  .RPAREN 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1645

-

-

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RPAREN                    Sh/Rd  238

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameter           Goto   952

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1646

-

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 884 ----------------------------------------------------------------------

-( 796 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON  .

-                 PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1647

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1648

-

-

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1649

-

-

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1650

-

-

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   953

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 885 ----------------------------------------------------------------------

-( 798 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-

-DOT    Shift  954

-

-

-STATE 886 ----------------------------------------------------------------------

-( 798 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT  .

-                              JavaIdentifier LPAREN 

-

-Identifier              Shift  955

-declare                 Shift  955

-after                   Shift  955

-before                  Shift  955

-pointcut                Shift  955

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1651

-

-

-privileged              Shift  955

-aspect                  Shift  955

-around                  Shift  955

-

-AjSimpleNameNoAround    Goto   955

-AjSimpleName            Goto   955

-JavaIdentifier          Goto   955

-

-

-STATE 887 ----------------------------------------------------------------------

-( 799 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT  .JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT  .JavaIdentifier 

-

-Identifier              Shift  956

-declare                 Shift  956

-after                   Shift  956

-before                  Shift  956

-pointcut                Shift  956

-privileged              Shift  956

-aspect                  Shift  956

-around                  Shift  956

-

-AjSimpleNameNoAround    Goto   956

-AjSimpleName            Goto   956

-JavaIdentifier          Goto   956

-

-

-STATE 888 ----------------------------------------------------------------------

-( 800 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT  .

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT  .JavaIdentifier 

-

-Identifier              Shift  957

-declare                 Shift  957

-after                   Shift  957

-before                  Shift  957

-pointcut                Shift  957

-privileged              Shift  957

-aspect                  Shift  957

-around                  Shift  957

-

-AjSimpleNameNoAround    Goto   957

-AjSimpleName            Goto   957

-JavaIdentifier          Goto   957

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1652

-

-

-

-

-STATE 889 ----------------------------------------------------------------------

-( 801 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY  .DOT 

-                         JavaIdentifier 

-

-DOT    Shift  958

-

-

-STATE 890 ----------------------------------------------------------------------

-( 801 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT JavaIdentifier  .

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT JavaIdentifier . (266)

-

-LPAREN       Sh/Rd  249

-

-SEMICOLON    Reduce 266

-EQUAL        Reduce 266

-PLUS         Reduce 242

-LESS         Reduce 242

-DOT          Reduce 242

-

-Default reduction to rule  242

-

-

-STATE 891 ----------------------------------------------------------------------

-( 802 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports TypeDeclarations . (112)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1653

-

-

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1654

-

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 112

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1655

-

-

-

-

-STATE 892 ----------------------------------------------------------------------

-( 804 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue MemberValue  .

-                    ExitMemberValue 

-

-ExitMemberValue ::= . (976)

-

-ExitMemberValue    Gt/Rd  974

-

-RPAREN             Reduce 976

-COMMA              Reduce 976

-

-Default reduction to rule  976

-

-

-STATE 893 ----------------------------------------------------------------------

-( 806 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-TypeArgumentList3 ::= TypeArgumentList  .COMMA TypeArgument3 

-

-COMMA    Shift  959

-

-

-STATE 894 ----------------------------------------------------------------------

-( 806 959 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 824

-

-Default reduction to rule  824

-

-

-STATE 895 ----------------------------------------------------------------------

-( 806 959 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1656

-

-

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION WildcardBounds3 

-

-QUESTION             Shift  960

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 896 ----------------------------------------------------------------------

-( 807 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-WildcardBounds2 ::= super  .ReferenceType2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1657

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   961

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   961

-ReferenceType1                    Gt/Rd  848

-ReferenceType2                    Gt/Rd  852

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1658

-

-

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 897 ----------------------------------------------------------------------

-( 807 )

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-WildcardBounds2 ::= extends  .ReferenceType2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1659

-

-

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   962

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   962

-ReferenceType1                    Gt/Rd  847

-ReferenceType2                    Gt/Rd  851

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 898 ----------------------------------------------------------------------

-( 810 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations 

-                    ELLIPSIS  .VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1660

-

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  408

-

-

-STATE 899 ----------------------------------------------------------------------

-( 815 )

-

-TypeParameter ::= TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList . (863)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-AdditionalBoundList1 ::= AdditionalBoundList  .AdditionalBound1 

-

-AdditionalBound ::= .AND ReferenceType 

-AdditionalBound1 ::= .AND ReferenceType1 

-

-AND                 Shift  900

-

-AdditionalBound     Gt/Rd  865

-AdditionalBound1    Gt/Rd  873

-

-COMMA               Reduce 863

-

-Default reduction to rule  863

-

-

-STATE 900 ----------------------------------------------------------------------

-( 815 899 )

-

-AdditionalBound ::= AND  .ReferenceType 

-AdditionalBound1 ::= AND  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1661

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   963

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1662

-

-

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   963

-ReferenceType1                    Gt/Rd  874

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 901 ----------------------------------------------------------------------

-( 816 )

-

-CatchClause ::= catch LPAREN CatchFormalParameter RPAREN  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  575

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 902 ----------------------------------------------------------------------

-( 817 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId  .

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-EnterVariable    Goto   964

-

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 903 ----------------------------------------------------------------------

-( 818 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1663

-

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable  .EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EQUAL    Shift  965

-

-

-STATE 904 ----------------------------------------------------------------------

-( 819 )

-

-DoStatement ::= do Statement while LPAREN Expression RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  541

-

-

-STATE 905 ----------------------------------------------------------------------

-( 820 )

-

-SwitchBlock ::= LBRACE  .RBRACE 

-SwitchBlock ::= LBRACE  .SwitchBlockStatements RBRACE 

-SwitchBlock ::= LBRACE  .SwitchLabels RBRACE 

-SwitchBlock ::= LBRACE  .SwitchBlockStatements SwitchLabels RBRACE 

-

-SwitchBlockStatements ::= .SwitchBlockStatements SwitchBlockStatement 

-SwitchBlockStatement ::= .SwitchLabels BlockStatements 

-SwitchLabels ::= .SwitchLabels SwitchLabel 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-

-RBRACE                   Sh/Rd  528

-default                  Shift  967

-case                     Shift  968

-

-SwitchLabels             Goto   969

-SwitchLabel              Goto   969

-SwitchBlockStatement     Goto   966

-SwitchBlockStatements    Goto   966

-

-

-STATE 906 ----------------------------------------------------------------------

-( 821 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  664

-

-

-STATE 907 ----------------------------------------------------------------------

-( 823 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1664

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  970

-

-

-STATE 908 ----------------------------------------------------------------------

-( 824 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  629

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1665

-

-

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 909 ----------------------------------------------------------------------

-( 826 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    UnqualifiedClassBodyopt 

-

-UnqualifiedClassBodyopt ::= . (633)

-UnqualifiedClassBodyopt ::= .UnqualifiedEnterAnonymousClassBody ClassBody 

-UnqualifiedEnterAnonymousClassBody ::= . (635)

-

-UnqualifiedEnterAnonymousClassBody    Goto   972

-UnqualifiedClassBodyopt               Gt/Rd  626

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1666

-

-

-

-abstract                              Reduce 633

-final                                 Reduce 633

-instanceof                            Reduce 633

-native                                Reduce 633

-private                               Reduce 633

-protected                             Reduce 633

-public                                Reduce 633

-static                                Reduce 633

-strictfp                              Reduce 633

-synchronized                          Reduce 633

-transient                             Reduce 633

-volatile                              Reduce 633

-PLUS_PLUS                             Reduce 633

-MINUS_MINUS                           Reduce 633

-EQUAL_EQUAL                           Reduce 633

-LESS_EQUAL                            Reduce 633

-GREATER_EQUAL                         Reduce 633

-NOT_EQUAL                             Reduce 633

-LEFT_SHIFT                            Reduce 633

-RIGHT_SHIFT                           Reduce 633

-UNSIGNED_RIGHT_SHIFT                  Reduce 633

-PLUS_EQUAL                            Reduce 633

-MINUS_EQUAL                           Reduce 633

-MULTIPLY_EQUAL                        Reduce 633

-DIVIDE_EQUAL                          Reduce 633

-AND_EQUAL                             Reduce 633

-OR_EQUAL                              Reduce 633

-XOR_EQUAL                             Reduce 633

-REMAINDER_EQUAL                       Reduce 633

-LEFT_SHIFT_EQUAL                      Reduce 633

-RIGHT_SHIFT_EQUAL                     Reduce 633

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 633

-OR_OR                                 Reduce 633

-AND_AND                               Reduce 633

-PLUS                                  Reduce 633

-MINUS                                 Reduce 633

-REMAINDER                             Reduce 633

-XOR                                   Reduce 633

-AND                                   Reduce 633

-MULTIPLY                              Reduce 633

-OR                                    Reduce 633

-DIVIDE                                Reduce 633

-GREATER                               Reduce 633

-LESS                                  Reduce 633

-RPAREN                                Reduce 633

-RBRACE                                Reduce 633

-LBRACKET                              Reduce 633

-RBRACKET                              Reduce 633

-SEMICOLON                             Reduce 633

-QUESTION                              Reduce 633

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1667

-

-

-COLON                                 Reduce 633

-COMMA                                 Reduce 633

-DOT                                   Reduce 633

-EQUAL                                 Reduce 633

-AT                                    Reduce 633

-COLON_COLON                           Reduce 633

-ElidedSemicolonAndRightBrace          Reduce 633

-$eof                                  Reduce 633

-LBRACE                                Reduce 635

-

-Default reduction to rule  633

-

-

-STATE 910 ----------------------------------------------------------------------

-( 827 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-RPAREN    Shift  973

-

-

-STATE 911 ----------------------------------------------------------------------

-( 829 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1668

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1669

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1670

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1671

-

-

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1672

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1673

-

-

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   974

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 912 ----------------------------------------------------------------------

-( 830 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1674

-

-

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  975

-

-

-STATE 913 ----------------------------------------------------------------------

-( 831 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  430

-

-

-STATE 914 ----------------------------------------------------------------------

-( 832 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  661

-

-

-STATE 915 ----------------------------------------------------------------------

-( 833 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  976

-

-

-STATE 916 ----------------------------------------------------------------------

-( 834 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  977

-

-

-STATE 917 ----------------------------------------------------------------------

-( 835 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  426

-

-

-STATE 918 ----------------------------------------------------------------------

-( 836 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1675

-

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  665

-

-

-STATE 919 ----------------------------------------------------------------------

-( 840 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf else  .

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1676

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1677

-

-

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1678

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1679

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1680

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  525

-Block                                   Gt/Rd  525

-EmptyStatement                          Gt/Rd  525

-ExpressionStatement                     Gt/Rd  525

-SwitchStatement                         Gt/Rd  525

-DoStatement                             Gt/Rd  525

-BreakStatement                          Gt/Rd  525

-ContinueStatement                       Gt/Rd  525

-ReturnStatement                         Gt/Rd  525

-SynchronizedStatement                   Gt/Rd  525

-ThrowStatement                          Gt/Rd  525

-TryStatement                            Gt/Rd  525

-TryStatementWithResources               Gt/Rd  525

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1681

-

-

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  525

-LabeledStatement                        Gt/Rd  525

-IfThenStatement                         Gt/Rd  525

-IfThenElseStatement                     Gt/Rd  525

-WhileStatement                          Gt/Rd  525

-ForStatement                            Gt/Rd  525

-EnhancedForStatement                    Gt/Rd  525

-Statement                               Gt/Rd  525

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 920 ----------------------------------------------------------------------

-( 843 )

-

-ForStatement ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1682

-

-

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1683

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForInit ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1684

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1685

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForInitopt ::= . (781)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1686

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-AT                                      Shift  136

-strictfp                                Shift  521

-volatile                                Shift  521

-transient                               Shift  521

-synchronized                            Shift  521

-native                                  Shift  521

-final                                   Shift  521

-abstract                                Shift  521

-static                                  Shift  521

-private                                 Shift  521

-protected                               Shift  521

-public                                  Shift  521

-

-StatementExpressionList                 Goto   523

-LocalVariableDeclaration                Goto   978

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   520

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-Name                                    Goto   522

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   520

-Modifier                                Goto   521

-Modifiers                               Goto   521

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   521

-Annotation                              Gt/Rd  171

-Type                                    Goto   520

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1687

-

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1131

-ForInit                                 Goto   978

-ForInitopt                              Goto   978

-

-SEMICOLON                               Reduce 781

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 921 ----------------------------------------------------------------------

-( 844 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1688

-

-

-WhileStatement ::= while LPAREN  .Expression RPAREN Statement 

-WhileStatementNoShortIf ::= while LPAREN  .Expression RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1689

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1690

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1691

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1692

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1693

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   979

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1694

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 922 ----------------------------------------------------------------------

-( 845 )

-

-IfThenStatement ::= if LPAREN  .Expression RPAREN Statement 

-IfThenElseStatement ::= if LPAREN  .Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN  .Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1695

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1696

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1697

-

-

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1698

-

-

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1699

-

-

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1700

-

-

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   980

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 923 ----------------------------------------------------------------------

-( 846 )

-

-LabeledStatement ::= Label COLON  .Statement 

-LabeledStatementNoShortIf ::= Label COLON  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1701

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1702

-

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1703

-

-

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1704

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1705

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1706

-

-

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  513

-IfThenElseStatementNoShortIf            Gt/Rd  513

-WhileStatementNoShortIf                 Gt/Rd  513

-ForStatementNoShortIf                   Gt/Rd  513

-EnhancedForStatementNoShortIf           Gt/Rd  513

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1707

-

-

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  512

-IfThenStatement                         Gt/Rd  512

-IfThenElseStatement                     Gt/Rd  512

-WhileStatement                          Gt/Rd  512

-ForStatement                            Gt/Rd  512

-EnhancedForStatement                    Gt/Rd  512

-Statement                               Gt/Rd  512

-StatementNoShortIf                      Gt/Rd  513

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 924 ----------------------------------------------------------------------

-( 847 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON  .

-                 ForUpdateopt RPAREN Statement 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1708

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1709

-

-

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForUpdate ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1710

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1711

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForUpdateopt ::= . (783)

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

-StatementExpressionList                 Goto   982

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1712

-

-

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1275

-ForUpdate                               Goto   981

-ForUpdateopt                            Goto   981

-

-RPAREN                                  Reduce 783

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 925 ----------------------------------------------------------------------

-( 848 )

-

-VariableDeclaratorId ::= JavaIdentifier Dimsopt . (383)

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt . (811)

-

-COLON        Reduce 811

-SEMICOLON    Reduce 383

-COMMA        Reduce 383

-EQUAL        Reduce 383

-

-Default reduction to rule  383

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1713

-

-

-

-

-STATE 926 ----------------------------------------------------------------------

-( 849 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   983

-Dimsopt                       Goto   983

-

-SEMICOLON                     Reduce 768

-COLON                         Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 927 ----------------------------------------------------------------------

-( 850 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1714

-

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet  .

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1715

-

-

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1716

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1717

-

-

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1718

-

-

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1719

-

-

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1720

-

-

-Expression                              Goto   984

-ArrayInitializer                        Goto   984

-VariableInitializer                     Goto   984

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 928 ----------------------------------------------------------------------

-( 853 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  432

-

-

-STATE 929 ----------------------------------------------------------------------

-( 854 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  660

-

-

-STATE 930 ----------------------------------------------------------------------

-( 855 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  985

-

-

-STATE 931 ----------------------------------------------------------------------

-( 856 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  986

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1721

-

-

-

-

-STATE 932 ----------------------------------------------------------------------

-( 857 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  428

-

-

-STATE 933 ----------------------------------------------------------------------

-( 859 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1722

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1723

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1724

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1725

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  689

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  689

-PreDecrementExpression                  Gt/Rd  689

-UnaryExpressionNotPlusMinus             Gt/Rd  689

-UnaryExpression                         Gt/Rd  689

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1726

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 934 ----------------------------------------------------------------------

-( 860 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt  .AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   987

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 935 ----------------------------------------------------------------------

-( 861 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt PushRPAREN  .

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   988

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1727

-

-

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

-Default reduction to rule  700

-

-

-STATE 936 ----------------------------------------------------------------------

-( 862 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression  .UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1728

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1729

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1730

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1731

-

-

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1732

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  694

-UnaryExpressionNotPlusMinus             Gt/Rd  694

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 937 ----------------------------------------------------------------------

-( 865 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod CreateInitializer  .

-                                       Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  204

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 938 ----------------------------------------------------------------------

-( 866 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1733

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   989

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 939 ----------------------------------------------------------------------

-( 868 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen  .

-                               MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1734

-

-

-

-MethodHeaderThrowsClause       Gt/Rd  258

-MethodHeaderThrowsClauseopt    Gt/Rd  258

-

-LBRACE                         Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 940 ----------------------------------------------------------------------

-( 869 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType  .DOT JavaIdentifier 

-

-DOT    Shift  990

-

-

-STATE 941 ----------------------------------------------------------------------

-( 869 )

-

-OnType ::= JavaIdentifier . (241)

-ClassHeaderName1 ::= Modifiersopt class JavaIdentifier . (348)

-

-extends       Reduce 348

-implements    Reduce 348

-LESS          Reduce 348

-LBRACE        Reduce 348

-DOT           Reduce 241

-

-Default reduction to rule  348

-

-

-STATE 942 ----------------------------------------------------------------------

-( 870 )

-

-MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  220

-

-

-STATE 943 ----------------------------------------------------------------------

-( 871 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1735

-

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-around                    Shift  1249

-declare                   Shift  1248

-after                     Shift  1248

-before                    Shift  1248

-pointcut                  Shift  1248

-privileged                Shift  1248

-aspect                    Shift  1248

-Identifier                Shift  655

-

-AjSimpleName              Goto   1249

-AjSimpleNameNoAround      Goto   654

-JavaIdentifier            Gt/Rd  241

-OnType                    Goto   798

-JavaIdentifierNoAround    Goto   991

-

-

-STATE 944 ----------------------------------------------------------------------

-( 871 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name  .DOT new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1736

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  992

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  63

-

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 945 ----------------------------------------------------------------------

-( 871 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType  .

-                                   DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1737

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  993

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  65

-

-Identifier                    Reduce 53

-aspect                        Reduce 53

-pointcut                      Reduce 53

-around                        Reduce 53

-before                        Reduce 53

-after                         Reduce 53

-declare                       Reduce 53

-privileged                    Reduce 53

-

-Default reduction to rule  56

-

-

-STATE 946 ----------------------------------------------------------------------

-( 872 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS  .DOT new LPAREN 

-

-DOT    Shift  994

-

-

-STATE 947 ----------------------------------------------------------------------

-( 872 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1738

-

-

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT  .new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT  .MULTIPLY DOT new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-MULTIPLY                      Shift  995

-new                           Shift  996

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 948 ----------------------------------------------------------------------

-( 873 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT  .new LPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1739

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  997

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 949 ----------------------------------------------------------------------

-( 874 )

-

-ClassTypeList ::= ClassTypeList COMMA  .ClassTypeElt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1740

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ClassTypeElt ::= .ClassType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Goto   1272

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassType                     Gt/Rd  415

-ClassTypeElt                  Gt/Rd  414

-

-

-STATE 950 ----------------------------------------------------------------------

-( 881 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                       COLON PseudoTokens . (233)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1741

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1742

-

-

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1743

-

-

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1744

-

-

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 233

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 951 ----------------------------------------------------------------------

-( 882 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1745

-

-

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1746

-

-

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1747

-

-

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1748

-

-

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   998

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1749

-

-

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 952 ----------------------------------------------------------------------

-( 883 )

-

-ExtraParamopt ::= Identifier LPAREN FormalParameter  .RPAREN 

-

-RPAREN    Sh/Rd  237

-

-

-STATE 953 ----------------------------------------------------------------------

-( 884 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens . (227)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1750

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1751

-

-

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1752

-

-

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1753

-

-

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 227

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 954 ----------------------------------------------------------------------

-( 885 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT  .JavaIdentifier 

-                              LPAREN 

-

-Identifier              Shift  999

-declare                 Shift  999

-after                   Shift  999

-before                  Shift  999

-pointcut                Shift  999

-privileged              Shift  999

-aspect                  Shift  999

-around                  Shift  999

-

-AjSimpleNameNoAround    Goto   999

-AjSimpleName            Goto   999

-JavaIdentifier          Goto   999

-

-

-STATE 955 ----------------------------------------------------------------------

-( 886 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1754

-

-

-                              JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  253

-

-LESS      Reduce 242

-DOT       Reduce 242

-

-Default reduction to rule  242

-

-

-STATE 956 ----------------------------------------------------------------------

-( 887 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier  .

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier . (269)

-

-LPAREN       Sh/Rd  252

-

-SEMICOLON    Reduce 269

-EQUAL        Reduce 269

-

-Default reduction to rule  269

-

-

-STATE 957 ----------------------------------------------------------------------

-( 888 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT 

-                              JavaIdentifier  .LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT JavaIdentifier .

-                          (268)

-

-LPAREN       Sh/Rd  251

-

-SEMICOLON    Reduce 268

-EQUAL        Reduce 268

-

-Default reduction to rule  268

-

-

-STATE 958 ----------------------------------------------------------------------

-( 889 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT  .

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT  .

-                         JavaIdentifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1755

-

-

-Identifier              Shift  1000

-declare                 Shift  1000

-after                   Shift  1000

-before                  Shift  1000

-pointcut                Shift  1000

-privileged              Shift  1000

-aspect                  Shift  1000

-around                  Shift  1000

-

-AjSimpleNameNoAround    Goto   1000

-AjSimpleName            Goto   1000

-JavaIdentifier          Goto   1000

-

-

-STATE 959 ----------------------------------------------------------------------

-( 893 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList COMMA  .TypeArgument2 

-TypeArgumentList3 ::= TypeArgumentList COMMA  .TypeArgument3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1756

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION WildcardBounds3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   894

-TypeAnnotationsopt                Goto   895

-ReferenceType3                    Gt/Rd  837

-Wildcard3                         Gt/Rd  837

-ClassOrInterface                  Goto   664

-ReferenceType2                    Gt/Rd  831

-Wildcard2                         Gt/Rd  831

-Wildcard                          Gt/Rd  823

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1757

-

-

-TypeArgument2                     Gt/Rd  831

-TypeArgument3                     Gt/Rd  837

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 960 ----------------------------------------------------------------------

-( 895 )

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .WildcardBounds2 

-Wildcard3 ::= TypeAnnotationsopt QUESTION  .UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= TypeAnnotationsopt QUESTION  .WildcardBounds3 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-WildcardBounds2 ::= .extends ReferenceType2 

-WildcardBounds2 ::= .super ReferenceType2 

-WildcardBounds3 ::= .extends ReferenceType3 

-WildcardBounds3 ::= .super ReferenceType3 

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  853

-RIGHT_SHIFT             Sh/Rd  849

-GREATER                 Sh/Rd  845

-super                   Shift  1001

-extends                 Shift  1002

-

-WildcardBounds          Gt/Rd  842

-WildcardBounds1         Gt/Rd  846

-WildcardBounds2         Gt/Rd  850

-WildcardBounds3         Gt/Rd  854

-

-COMMA                   Reduce 841

-

-Default reduction to rule  841

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1758

-

-

-

-

-STATE 961 ----------------------------------------------------------------------

-( 896 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-WildcardBounds ::= super ReferenceType . (844)

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 962 ----------------------------------------------------------------------

-( 897 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-WildcardBounds ::= extends ReferenceType . (843)

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 963 ----------------------------------------------------------------------

-( 900 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-AdditionalBound ::= AND ReferenceType . (866)

-

-GREATER    Sh/Rd  828

-

-AND        Reduce 866

-COMMA      Reduce 866

-

-Default reduction to rule  866

-

-

-STATE 964 ----------------------------------------------------------------------

-( 902 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable  .EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1759

-

-

-             ExitVariableWithInitialization 

-

-EQUAL    Shift  1003

-

-

-STATE 965 ----------------------------------------------------------------------

-( 903 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL  .

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   1004

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1760

-

-

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 966 ----------------------------------------------------------------------

-( 905 )

-

-SwitchBlock ::= LBRACE SwitchBlockStatements  .RBRACE 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .SwitchLabels RBRACE 

-SwitchBlockStatements ::= SwitchBlockStatements  .SwitchBlockStatement 

-

-SwitchBlockStatement ::= .SwitchLabels BlockStatements 

-SwitchLabels ::= .SwitchLabels SwitchLabel 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-

-RBRACE                  Sh/Rd  529

-default                 Shift  967

-case                    Shift  968

-

-SwitchLabels            Goto   1005

-SwitchLabel             Goto   1005

-SwitchBlockStatement    Gt/Rd  533

-

-

-STATE 967 ----------------------------------------------------------------------

-( 905 966 969 1005 )

-

-SwitchLabel ::= default  .COLON 

-

-COLON    Sh/Rd  538

-

-

-STATE 968 ----------------------------------------------------------------------

-( 905 966 969 1005 )

-

-SwitchLabel ::= case  .ConstantExpression COLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1761

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1762

-

-

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1763

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1764

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1765

-

-

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1766

-

-

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1006

-ConstantExpression                      Goto   1006

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 969 ----------------------------------------------------------------------

-( 905 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1767

-

-

-SwitchBlock ::= LBRACE SwitchLabels  .RBRACE 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-SwitchLabels ::= SwitchLabels  .SwitchLabel 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1768

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1769

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1770

-

-

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1771

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1772

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1773

-

-

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  530

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1774

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-default                                 Shift  967

-case                                    Shift  968

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1775

-

-

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1776

-

-

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   1007

-SwitchLabel                             Gt/Rd  536

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 970 ----------------------------------------------------------------------

-( 907 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1777

-

-

-QualifiedClassBodyopt               Gt/Rd  630

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1778

-

-

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 971 ----------------------------------------------------------------------

-( 908 970 1008 1025 )

-

-QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  637

-

-

-STATE 972 ----------------------------------------------------------------------

-( 909 973 )

-

-UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  634

-

-

-STATE 973 ----------------------------------------------------------------------

-( 910 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    UnqualifiedClassBodyopt 

-

-UnqualifiedClassBodyopt ::= . (633)

-UnqualifiedClassBodyopt ::= .UnqualifiedEnterAnonymousClassBody ClassBody 

-UnqualifiedEnterAnonymousClassBody ::= . (635)

-

-UnqualifiedEnterAnonymousClassBody    Goto   972

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1779

-

-

-UnqualifiedClassBodyopt               Gt/Rd  625

-

-abstract                              Reduce 633

-final                                 Reduce 633

-instanceof                            Reduce 633

-native                                Reduce 633

-private                               Reduce 633

-protected                             Reduce 633

-public                                Reduce 633

-static                                Reduce 633

-strictfp                              Reduce 633

-synchronized                          Reduce 633

-transient                             Reduce 633

-volatile                              Reduce 633

-PLUS_PLUS                             Reduce 633

-MINUS_MINUS                           Reduce 633

-EQUAL_EQUAL                           Reduce 633

-LESS_EQUAL                            Reduce 633

-GREATER_EQUAL                         Reduce 633

-NOT_EQUAL                             Reduce 633

-LEFT_SHIFT                            Reduce 633

-RIGHT_SHIFT                           Reduce 633

-UNSIGNED_RIGHT_SHIFT                  Reduce 633

-PLUS_EQUAL                            Reduce 633

-MINUS_EQUAL                           Reduce 633

-MULTIPLY_EQUAL                        Reduce 633

-DIVIDE_EQUAL                          Reduce 633

-AND_EQUAL                             Reduce 633

-OR_EQUAL                              Reduce 633

-XOR_EQUAL                             Reduce 633

-REMAINDER_EQUAL                       Reduce 633

-LEFT_SHIFT_EQUAL                      Reduce 633

-RIGHT_SHIFT_EQUAL                     Reduce 633

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 633

-OR_OR                                 Reduce 633

-AND_AND                               Reduce 633

-PLUS                                  Reduce 633

-MINUS                                 Reduce 633

-REMAINDER                             Reduce 633

-XOR                                   Reduce 633

-AND                                   Reduce 633

-MULTIPLY                              Reduce 633

-OR                                    Reduce 633

-DIVIDE                                Reduce 633

-GREATER                               Reduce 633

-LESS                                  Reduce 633

-RPAREN                                Reduce 633

-RBRACE                                Reduce 633

-LBRACKET                              Reduce 633

-RBRACKET                              Reduce 633

-SEMICOLON                             Reduce 633

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1780

-

-

-QUESTION                              Reduce 633

-COLON                                 Reduce 633

-COMMA                                 Reduce 633

-DOT                                   Reduce 633

-EQUAL                                 Reduce 633

-AT                                    Reduce 633

-COLON_COLON                           Reduce 633

-ElidedSemicolonAndRightBrace          Reduce 633

-$eof                                  Reduce 633

-LBRACE                                Reduce 635

-

-Default reduction to rule  633

-

-

-STATE 974 ----------------------------------------------------------------------

-( 911 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  1008

-

-

-STATE 975 ----------------------------------------------------------------------

-( 912 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1781

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1782

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1783

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1784

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1785

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1786

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   1009

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 976 ----------------------------------------------------------------------

-( 915 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1787

-

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  431

-

-

-STATE 977 ----------------------------------------------------------------------

-( 916 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  427

-

-

-STATE 978 ----------------------------------------------------------------------

-( 920 )

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-SEMICOLON    Shift  1010

-

-

-STATE 979 ----------------------------------------------------------------------

-( 921 )

-

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-WhileStatementNoShortIf ::= while LPAREN Expression  .RPAREN StatementNoShortIf 

-

-RPAREN    Shift  1011

-

-

-STATE 980 ----------------------------------------------------------------------

-( 922 )

-

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression  .RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-RPAREN    Shift  1012

-

-

-STATE 981 ----------------------------------------------------------------------

-( 924 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1788

-

-

-                 ForUpdateopt  .RPAREN Statement 

-

-RPAREN    Shift  1013

-

-

-STATE 982 ----------------------------------------------------------------------

-( 924 1032 )

-

-ForUpdate ::= StatementExpressionList . (546)

-StatementExpressionList ::= StatementExpressionList  .COMMA StatementExpression 

-

-COMMA     Shift  729

-

-RPAREN    Reduce 784

-

-Default reduction to rule  546

-

-

-STATE 983 ----------------------------------------------------------------------

-( 926 )

-

-VariableDeclaratorId ::= JavaIdentifier Dimsopt . (383)

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt .

-                                    (812)

-

-COLON        Reduce 812

-SEMICOLON    Reduce 383

-COMMA        Reduce 383

-EQUAL        Reduce 383

-

-Default reduction to rule  383

-

-

-STATE 984 ----------------------------------------------------------------------

-( 927 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer  .RestoreDiet 

-                       ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1014

-

-SEMICOLON      Reduce 382

-COMMA          Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 985 ----------------------------------------------------------------------

-( 930 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1789

-

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  433

-

-

-STATE 986 ----------------------------------------------------------------------

-( 931 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  429

-

-

-STATE 987 ----------------------------------------------------------------------

-( 934 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   1015

-

-

-STATE 988 ----------------------------------------------------------------------

-( 935 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression  .UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1790

-

-

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1791

-

-

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1792

-

-

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1793

-

-

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1794

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  690

-UnaryExpressionNotPlusMinus             Gt/Rd  690

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 989 ----------------------------------------------------------------------

-( 938 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  218

-MethodHeaderThrowsClauseopt    Gt/Rd  218

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 990 ----------------------------------------------------------------------

-( 940 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT  .JavaIdentifier 

-

-Identifier              Shift  1016

-declare                 Shift  1016

-after                   Shift  1016

-before                  Shift  1016

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1795

-

-

-pointcut                Shift  1016

-privileged              Shift  1016

-aspect                  Shift  1016

-around                  Shift  1016

-

-AjSimpleNameNoAround    Goto   1016

-AjSimpleName            Goto   1016

-JavaIdentifier          Goto   1016

-

-

-STATE 991 ----------------------------------------------------------------------

-( 943 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  219

-

-

-STATE 992 ----------------------------------------------------------------------

-( 944 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT  .new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  1017

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1796

-

-

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 993 ----------------------------------------------------------------------

-( 945 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType 

-                                   DOT  .new LPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  1018

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 994 ----------------------------------------------------------------------

-( 946 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1797

-

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT  .new LPAREN 

-

-new    Shift  1019

-

-

-STATE 995 ----------------------------------------------------------------------

-( 947 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY  .DOT new 

-                                   LPAREN 

-

-DOT    Shift  1020

-

-

-STATE 996 ----------------------------------------------------------------------

-( 947 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  259

-

-

-STATE 997 ----------------------------------------------------------------------

-( 948 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  263

-

-

-STATE 998 ----------------------------------------------------------------------

-( 951 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens . (234)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1798

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1799

-

-

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1800

-

-

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1801

-

-

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 234

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 999 ----------------------------------------------------------------------

-( 954 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier  .

-                              LPAREN 

-

-LPAREN    Sh/Rd  254

-

-

-STATE 1000 ---------------------------------------------------------------------

-( 958 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1802

-

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier  .LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier . (267)

-

-LPAREN       Sh/Rd  250

-

-SEMICOLON    Reduce 267

-EQUAL        Reduce 267

-

-Default reduction to rule  267

-

-

-STATE 1001 ---------------------------------------------------------------------

-( 960 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-WildcardBounds2 ::= super  .ReferenceType2 

-WildcardBounds3 ::= super  .ReferenceType3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1803

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   1021

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1021

-ReferenceType1                    Gt/Rd  848

-ReferenceType2                    Gt/Rd  852

-ReferenceType3                    Gt/Rd  856

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1002 ---------------------------------------------------------------------

-( 960 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1804

-

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-WildcardBounds2 ::= extends  .ReferenceType2 

-WildcardBounds3 ::= extends  .ReferenceType3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   1022

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1805

-

-

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1022

-ReferenceType1                    Gt/Rd  847

-ReferenceType2                    Gt/Rd  851

-ReferenceType3                    Gt/Rd  855

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1003 ---------------------------------------------------------------------

-( 964 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL  .ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   1023

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1806

-

-

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 1004 ---------------------------------------------------------------------

-( 965 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet  .VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1807

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1808

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1809

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1810

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1811

-

-

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1812

-

-

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1024

-ArrayInitializer                        Goto   1024

-VariableInitializer                     Goto   1024

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1813

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1005 ---------------------------------------------------------------------

-( 966 )

-

-SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels  .RBRACE 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-SwitchLabels ::= SwitchLabels  .SwitchLabel 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1814

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1815

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1816

-

-

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1817

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1818

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1819

-

-

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  531

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1820

-

-

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-default                                 Shift  967

-case                                    Shift  968

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1821

-

-

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1822

-

-

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   1007

-SwitchLabel                             Gt/Rd  536

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 1006 ---------------------------------------------------------------------

-( 968 )

-

-SwitchLabel ::= case ConstantExpression  .COLON 

-

-COLON    Sh/Rd  537

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1823

-

-

-

-

-STATE 1007 ---------------------------------------------------------------------

-( 969 1005 )

-

-BlockStatements ::= BlockStatements  .BlockStatement 

-SwitchBlockStatement ::= SwitchLabels BlockStatements . (534)

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1824

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1825

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1826

-

-

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1827

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1828

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1829

-

-

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1830

-

-

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1831

-

-

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-case                                    Reduce 534

-default                                 Reduce 534

-RBRACE                                  Reduce 534

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1832

-

-

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1008 ---------------------------------------------------------------------

-( 974 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  628

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1833

-

-

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 1009 ---------------------------------------------------------------------

-( 975 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  1025

-

-

-STATE 1010 ---------------------------------------------------------------------

-( 978 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1834

-

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1835

-

-

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1836

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1837

-

-

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1838

-

-

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1839

-

-

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1026

-Expressionopt                           Goto   1026

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1840

-

-

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1011 ---------------------------------------------------------------------

-( 979 )

-

-WhileStatement ::= while LPAREN Expression RPAREN  .Statement 

-WhileStatementNoShortIf ::= while LPAREN Expression RPAREN  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1841

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1842

-

-

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1843

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1844

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1845

-

-

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  540

-IfThenElseStatementNoShortIf            Gt/Rd  540

-WhileStatementNoShortIf                 Gt/Rd  540

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1846

-

-

-ForStatementNoShortIf                   Gt/Rd  540

-EnhancedForStatementNoShortIf           Gt/Rd  540

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1847

-

-

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  539

-IfThenStatement                         Gt/Rd  539

-IfThenElseStatement                     Gt/Rd  539

-WhileStatement                          Gt/Rd  539

-ForStatement                            Gt/Rd  539

-EnhancedForStatement                    Gt/Rd  539

-Statement                               Gt/Rd  539

-StatementNoShortIf                      Gt/Rd  540

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1012 ---------------------------------------------------------------------

-( 980 )

-

-IfThenStatement ::= if LPAREN Expression RPAREN  .Statement 

-IfThenElseStatement ::= if LPAREN Expression RPAREN  .StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN  .

-                                 StatementNoShortIf else StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1848

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1849

-

-

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1850

-

-

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1851

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1852

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1853

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Goto   1027

-IfThenElseStatementNoShortIf            Goto   1027

-WhileStatementNoShortIf                 Goto   1027

-ForStatementNoShortIf                   Goto   1027

-EnhancedForStatementNoShortIf           Goto   1027

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1854

-

-

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  524

-IfThenStatement                         Gt/Rd  524

-IfThenElseStatement                     Gt/Rd  524

-WhileStatement                          Gt/Rd  524

-ForStatement                            Gt/Rd  524

-EnhancedForStatement                    Gt/Rd  524

-Statement                               Gt/Rd  524

-StatementNoShortIf                      Goto   1027

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1855

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1013 ---------------------------------------------------------------------

-( 981 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1856

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1857

-

-

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1858

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1859

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1860

-

-

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  542

-Block                                   Gt/Rd  542

-EmptyStatement                          Gt/Rd  542

-ExpressionStatement                     Gt/Rd  542

-SwitchStatement                         Gt/Rd  542

-DoStatement                             Gt/Rd  542

-BreakStatement                          Gt/Rd  542

-ContinueStatement                       Gt/Rd  542

-ReturnStatement                         Gt/Rd  542

-SynchronizedStatement                   Gt/Rd  542

-ThrowStatement                          Gt/Rd  542

-TryStatement                            Gt/Rd  542

-TryStatementWithResources               Gt/Rd  542

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1861

-

-

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  542

-LabeledStatement                        Gt/Rd  542

-IfThenStatement                         Gt/Rd  542

-IfThenElseStatement                     Gt/Rd  542

-WhileStatement                          Gt/Rd  542

-ForStatement                            Gt/Rd  542

-EnhancedForStatement                    Gt/Rd  542

-Statement                               Gt/Rd  542

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1014 ---------------------------------------------------------------------

-( 984 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet  .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1862

-

-

-                       ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  377

-

-SEMICOLON                         Reduce 379

-COMMA                             Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1015 ---------------------------------------------------------------------

-( 987 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN  .InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionWithQualifiedGenerics ::= . (703)

-

-InsideCastExpressionWithQualifiedGenerics    Goto   1028

-

-Identifier                                   Reduce 703

-boolean                                      Reduce 703

-byte                                         Reduce 703

-char                                         Reduce 703

-double                                       Reduce 703

-false                                        Reduce 703

-float                                        Reduce 703

-int                                          Reduce 703

-long                                         Reduce 703

-new                                          Reduce 703

-null                                         Reduce 703

-short                                        Reduce 703

-super                                        Reduce 703

-this                                         Reduce 703

-true                                         Reduce 703

-void                                         Reduce 703

-aspect                                       Reduce 703

-pointcut                                     Reduce 703

-around                                       Reduce 703

-before                                       Reduce 703

-after                                        Reduce 703

-declare                                      Reduce 703

-privileged                                   Reduce 703

-IntegerLiteral                               Reduce 703

-LongLiteral                                  Reduce 703

-FloatingPointLiteral                         Reduce 703

-DoubleLiteral                                Reduce 703

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1863

-

-

-CharacterLiteral                             Reduce 703

-StringLiteral                                Reduce 703

-NOT                                          Reduce 703

-TWIDDLE                                      Reduce 703

-LPAREN                                       Reduce 703

-BeginLambda                                  Reduce 703

-BeginIntersectionCast                        Reduce 703

-AT308                                        Reduce 703

-

-Default reduction to rule  703

-

-

-STATE 1016 ---------------------------------------------------------------------

-( 990 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT JavaIdentifier .

-                               (343)

-

-extends       Reduce 343

-implements    Reduce 343

-LESS          Reduce 343

-LBRACE        Reduce 343

-DOT           Reduce 242

-

-Default reduction to rule  343

-

-

-STATE 1017 ---------------------------------------------------------------------

-( 992 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT new  .

-                                   LPAREN 

-

-LPAREN    Sh/Rd  262

-

-

-STATE 1018 ---------------------------------------------------------------------

-( 993 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType 

-                                   DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  264

-

-

-STATE 1019 ---------------------------------------------------------------------

-( 994 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT new  .LPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1864

-

-

-LPAREN    Sh/Rd  261

-

-

-STATE 1020 ---------------------------------------------------------------------

-( 995 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT  .new 

-                                   LPAREN 

-

-new    Shift  1029

-

-

-STATE 1021 ---------------------------------------------------------------------

-( 1001 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-WildcardBounds ::= super ReferenceType . (844)

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 1022 ---------------------------------------------------------------------

-( 1002 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-WildcardBounds ::= extends ReferenceType . (843)

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 1023 ---------------------------------------------------------------------

-( 1003 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet  .VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1865

-

-

-             ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1866

-

-

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1867

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1868

-

-

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1869

-

-

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1870

-

-

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1030

-ArrayInitializer                        Goto   1030

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1871

-

-

-VariableInitializer                     Goto   1030

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1024 ---------------------------------------------------------------------

-( 1004 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer  .RestoreDiet 

-             ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1031

-

-RPAREN         Reduce 382

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 1025 ---------------------------------------------------------------------

-( 1009 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  627

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1872

-

-

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1873

-

-

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 1026 ---------------------------------------------------------------------

-( 1010 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-SEMICOLON    Shift  1032

-

-

-STATE 1027 ---------------------------------------------------------------------

-( 1012 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf  .else StatementNoShortIf 

-

-else    Shift  1033

-

-

-STATE 1028 ---------------------------------------------------------------------

-( 1015 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1874

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1875

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1876

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1877

-

-

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1878

-

-

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  691

-UnaryExpressionNotPlusMinus             Gt/Rd  691

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1029 ---------------------------------------------------------------------

-( 1020 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT new  .

-                                   LPAREN 

-

-LPAREN    Sh/Rd  260

-

-

-STATE 1030 ---------------------------------------------------------------------

-( 1023 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer  .RestoreDiet 

-             ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1034

-

-RPAREN         Reduce 382

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 1031 ---------------------------------------------------------------------

-( 1024 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1879

-

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet  .

-             ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  569

-

-RPAREN                            Reduce 379

-SEMICOLON                         Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1032 ---------------------------------------------------------------------

-( 1026 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON  .

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON  .ForUpdateopt RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1880

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForUpdate ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1881

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1882

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForUpdateopt ::= . (783)

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1883

-

-

-

-StatementExpressionList                 Goto   982

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1275

-ForUpdate                               Goto   1035

-ForUpdateopt                            Goto   1035

-

-RPAREN                                  Reduce 783

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1884

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1033 ---------------------------------------------------------------------

-( 1027 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf else  .

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1885

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1886

-

-

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1887

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1888

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1889

-

-

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  526

-IfThenElseStatementNoShortIf            Gt/Rd  526

-WhileStatementNoShortIf                 Gt/Rd  526

-ForStatementNoShortIf                   Gt/Rd  526

-EnhancedForStatementNoShortIf           Gt/Rd  526

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1890

-

-

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1891

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  525

-IfThenStatement                         Gt/Rd  525

-IfThenElseStatement                     Gt/Rd  525

-WhileStatement                          Gt/Rd  525

-ForStatement                            Gt/Rd  525

-EnhancedForStatement                    Gt/Rd  525

-Statement                               Gt/Rd  525

-StatementNoShortIf                      Gt/Rd  526

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1034 ---------------------------------------------------------------------

-( 1030 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet  .

-             ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  570

-

-RPAREN                            Reduce 379

-SEMICOLON                         Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1035 ---------------------------------------------------------------------

-( 1032 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1892

-

-

-                 ForUpdateopt  .RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt  .RPAREN StatementNoShortIf 

-

-RPAREN    Shift  1036

-

-

-STATE 1036 ---------------------------------------------------------------------

-( 1035 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN  .Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1893

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1894

-

-

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1895

-

-

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1896

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1897

-

-

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  543

-IfThenElseStatementNoShortIf            Gt/Rd  543

-WhileStatementNoShortIf                 Gt/Rd  543

-ForStatementNoShortIf                   Gt/Rd  543

-EnhancedForStatementNoShortIf           Gt/Rd  543

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1898

-

-

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1899

-

-

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  542

-IfThenStatement                         Gt/Rd  542

-IfThenElseStatement                     Gt/Rd  542

-WhileStatement                          Gt/Rd  542

-ForStatement                            Gt/Rd  542

-EnhancedForStatement                    Gt/Rd  542

-Statement                               Gt/Rd  542

-StatementNoShortIf                      Gt/Rd  543

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1037 ---------------------------------------------------------------------

-( 3 7 8 9 14 16 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 102 

-  121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 209 

-  216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 262 

-  263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 300 

-  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 

-  322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 362 

-  363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 

-  382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 

-  401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 494 

-  495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 596 

-  632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 700 

-  702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 751 

-  752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 842 

-  848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 900 

-  911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 951 

-  953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 1012 

-  1013 1023 1028 1032 1033 1036 )

-

-

-TypeAnnotations0 ::= TypeAnnotation . (95)

-

-Identifier    Reduce 94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1900

-

-

-boolean       Reduce 94

-byte          Reduce 94

-char          Reduce 94

-double        Reduce 94

-float         Reduce 94

-int           Reduce 94

-long          Reduce 94

-short         Reduce 94

-void          Reduce 94

-aspect        Reduce 94

-pointcut      Reduce 94

-around        Reduce 94

-before        Reduce 94

-after         Reduce 94

-declare       Reduce 94

-privileged    Reduce 94

-LBRACKET      Reduce 94

-QUESTION      Reduce 94

-ELLIPSIS      Reduce 94

-AT308         Reduce 95

-$eof          Reduce 94

-

-Default reduction to rule  94

-

-

-STATE 1038 ---------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-

-Modifiers ::= Modifier . (157)

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-Modifier ::= SimpleModifier . (170)

-

-Identifier      Reduce 157

-abstract        Reduce 157

-boolean         Reduce 157

-byte            Reduce 157

-char            Reduce 157

-class           Reduce 765

-double          Reduce 157

-enum            Reduce 765

-final           Reduce 157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1901

-

-

-float           Reduce 157

-int             Reduce 157

-interface       Reduce 765

-long            Reduce 157

-native          Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 157

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 157

-volatile        Reduce 157

-AT              Reduce 157

-AT308           Reduce 157

-

-Default reduction to rule  157

-

-

-STATE 1039 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1902

-

-

-LBRACKET                      Reduce 582

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1040 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-PLUS_PLUS                     Reduce 71

-MINUS_MINUS                   Reduce 71

-PLUS_EQUAL                    Reduce 71

-MINUS_EQUAL                   Reduce 71

-MULTIPLY_EQUAL                Reduce 71

-DIVIDE_EQUAL                  Reduce 71

-AND_EQUAL                     Reduce 71

-OR_EQUAL                      Reduce 71

-XOR_EQUAL                     Reduce 71

-REMAINDER_EQUAL               Reduce 71

-LEFT_SHIFT_EQUAL              Reduce 71

-RIGHT_SHIFT_EQUAL             Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 71

-LPAREN                        Reduce 71

-LBRACKET                      Reduce 71

-COLON                         Reduce 514

-DOT                           Reduce 71

-EQUAL                         Reduce 71

-

-Default reduction to rule  71

-

-

-STATE 1041 ---------------------------------------------------------------------

-( 7 )

-

-

-BlockStatementopt0 ::= BlockStatement . (472)

-BlockStatement ::= LocalVariableDeclarationStatement . (473)

-BlockStatement ::= Statement . (474)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1903

-

-

-BlockStatement ::= ClassDeclaration . (475)

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-Statement ::= LabeledStatement . (486)

-Statement ::= IfThenStatement . (487)

-Statement ::= IfThenElseStatement . (488)

-Statement ::= WhileStatement . (489)

-Statement ::= ForStatement . (490)

-Statement ::= EnhancedForStatement . (491)

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-$eof    Reduce 470

-

-Default reduction to rule  470

-

-

-STATE 1042 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 597

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1904

-

-

-

-Default reduction to rule  671

-

-

-STATE 1043 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 596

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1044 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1905

-

-

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 595

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1045 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 587

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1046 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1906

-

-

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-DOT                           Reduce 581

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 581

-

-Default reduction to rule  671

-

-

-STATE 1047 ---------------------------------------------------------------------

-( 7 8 10 11 12 13 15 16 17 18 28 83 93 118 119 120 124 126 134 137 144 145 174 

-  176 178 184 188 189 191 193 197 218 233 273 278 338 342 405 432 433 434 451 

-  452 463 469 472 478 521 579 659 660 677 679 682 686 690 691 758 760 766 802 

-  803 883 891 920 969 1005 1007 )

-

-

-Annotation ::= NormalAnnotation . (965)

-Annotation ::= MarkerAnnotation . (966)

-Annotation ::= SingleMemberAnnotation . (967)

-

-Identifier      Reduce 171

-abstract        Reduce 171

-boolean         Reduce 171

-byte            Reduce 171

-char            Reduce 171

-class           Reduce 171

-default         Reduce 171

-double          Reduce 171

-enum            Reduce 171

-final           Reduce 171

-float           Reduce 171

-int             Reduce 171

-interface       Reduce 171

-long            Reduce 171

-native          Reduce 171

-package         Reduce 171

-private         Reduce 171

-protected       Reduce 171

-public          Reduce 171

-short           Reduce 171

-static          Reduce 171

-strictfp        Reduce 171

-synchronized    Reduce 171

-transient       Reduce 171

-void            Reduce 171

-volatile        Reduce 171

-aspect          Reduce 171

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1907

-

-

-pointcut        Reduce 171

-around          Reduce 171

-before          Reduce 171

-after           Reduce 171

-privileged      Reduce 171

-LESS            Reduce 171

-AT              Reduce 171

-AT308           Reduce 171

-$eof            Reduce 171

-

-Default reduction to rule  171

-

-

-STATE 1048 ---------------------------------------------------------------------

-( 7 8 16 93 174 273 278 432 552 920 969 1005 1007 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier                    Reduce 57

-instanceof                    Reduce 672

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 672

-LESS_EQUAL                    Reduce 672

-GREATER_EQUAL                 Reduce 672

-NOT_EQUAL                     Reduce 672

-LEFT_SHIFT                    Reduce 672

-RIGHT_SHIFT                   Reduce 672

-UNSIGNED_RIGHT_SHIFT          Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 672

-AND_AND                       Reduce 672

-PLUS                          Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1908

-

-

-MINUS                         Reduce 672

-REMAINDER                     Reduce 672

-XOR                           Reduce 672

-AND                           Reduce 672

-MULTIPLY                      Reduce 672

-OR                            Reduce 672

-DIVIDE                        Reduce 672

-GREATER                       Reduce 57

-LESS                          Reduce 57

-LPAREN                        Reduce 68

-RPAREN                        Reduce 672

-LBRACKET                      Reduce 86

-QUESTION                      Reduce 672

-COMMA                         Reduce 57

-DOT                           Reduce 86

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 86

-BeginTypeArguments            Reduce 86

-AT308                         Reduce 86

-

-Default reduction to rule  672

-

-

-STATE 1049 ---------------------------------------------------------------------

-( 8 16 273 432 969 1005 )

-

-

-BlockStatement ::= LocalVariableDeclarationStatement . (473)

-BlockStatement ::= Statement . (474)

-BlockStatement ::= ClassDeclaration . (475)

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-Statement ::= LabeledStatement . (486)

-Statement ::= IfThenStatement . (487)

-Statement ::= IfThenElseStatement . (488)

-Statement ::= WhileStatement . (489)

-Statement ::= ForStatement . (490)

-Statement ::= EnhancedForStatement . (491)

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1909

-

-

-Identifier              Reduce 468

-abstract                Reduce 468

-assert                  Reduce 468

-boolean                 Reduce 468

-break                   Reduce 468

-byte                    Reduce 468

-case                    Reduce 468

-char                    Reduce 468

-class                   Reduce 468

-continue                Reduce 468

-default                 Reduce 468

-do                      Reduce 468

-double                  Reduce 468

-enum                    Reduce 468

-false                   Reduce 468

-final                   Reduce 468

-float                   Reduce 468

-for                     Reduce 468

-if                      Reduce 468

-int                     Reduce 468

-interface               Reduce 468

-long                    Reduce 468

-native                  Reduce 468

-new                     Reduce 468

-null                    Reduce 468

-private                 Reduce 468

-protected               Reduce 468

-public                  Reduce 468

-return                  Reduce 468

-short                   Reduce 468

-static                  Reduce 468

-strictfp                Reduce 468

-super                   Reduce 468

-switch                  Reduce 468

-synchronized            Reduce 468

-this                    Reduce 468

-throw                   Reduce 468

-transient               Reduce 468

-true                    Reduce 468

-try                     Reduce 468

-void                    Reduce 468

-volatile                Reduce 468

-while                   Reduce 468

-aspect                  Reduce 468

-pointcut                Reduce 468

-around                  Reduce 468

-before                  Reduce 468

-after                   Reduce 468

-declare                 Reduce 468

-privileged              Reduce 468

-IntegerLiteral          Reduce 468

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1910

-

-

-LongLiteral             Reduce 468

-FloatingPointLiteral    Reduce 468

-DoubleLiteral           Reduce 468

-CharacterLiteral        Reduce 468

-StringLiteral           Reduce 468

-PLUS_PLUS               Reduce 468

-MINUS_MINUS             Reduce 468

-LESS                    Reduce 468

-LPAREN                  Reduce 468

-LBRACE                  Reduce 468

-RBRACE                  Reduce 468

-SEMICOLON               Reduce 468

-AT                      Reduce 468

-BeginLambda             Reduce 468

-AT308                   Reduce 468

-$eof                    Reduce 468

-

-Default reduction to rule  468

-

-

-STATE 1050 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1911

-

-

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1051 ---------------------------------------------------------------------

-( 9 14 41 43 54 71 80 102 136 235 241 242 243 249 251 262 263 264 269 272 276 

-  277 278 279 286 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 

-  319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 

-  366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 

-  386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 

-  513 516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  729 737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 

-  858 875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 

-  1032 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1912

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-Identifier                      Reduce 71

-abstract                        Reduce 71

-boolean                         Reduce 71

-byte                            Reduce 71

-char                            Reduce 71

-class                           Reduce 71

-default                         Reduce 71

-double                          Reduce 71

-enum                            Reduce 71

-final                           Reduce 71

-float                           Reduce 71

-instanceof                      Reduce 71

-int                             Reduce 71

-interface                       Reduce 71

-long                            Reduce 71

-native                          Reduce 71

-package                         Reduce 71

-private                         Reduce 71

-protected                       Reduce 71

-public                          Reduce 71

-short                           Reduce 71

-static                          Reduce 71

-strictfp                        Reduce 71

-synchronized                    Reduce 71

-transient                       Reduce 71

-void                            Reduce 71

-volatile                        Reduce 71

-aspect                          Reduce 71

-pointcut                        Reduce 71

-around                          Reduce 71

-before                          Reduce 71

-after                           Reduce 71

-privileged                      Reduce 71

-PLUS_PLUS                       Reduce 71

-MINUS_MINUS                     Reduce 71

-EQUAL_EQUAL                     Reduce 71

-LESS_EQUAL                      Reduce 71

-GREATER_EQUAL                   Reduce 71

-NOT_EQUAL                       Reduce 71

-LEFT_SHIFT                      Reduce 71

-RIGHT_SHIFT                     Reduce 71

-UNSIGNED_RIGHT_SHIFT            Reduce 71

-PLUS_EQUAL                      Reduce 71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1913

-

-

-MINUS_EQUAL                     Reduce 71

-MULTIPLY_EQUAL                  Reduce 71

-DIVIDE_EQUAL                    Reduce 71

-AND_EQUAL                       Reduce 71

-OR_EQUAL                        Reduce 71

-XOR_EQUAL                       Reduce 71

-REMAINDER_EQUAL                 Reduce 71

-LEFT_SHIFT_EQUAL                Reduce 71

-RIGHT_SHIFT_EQUAL               Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 71

-OR_OR                           Reduce 71

-AND_AND                         Reduce 71

-PLUS                            Reduce 71

-MINUS                           Reduce 71

-REMAINDER                       Reduce 71

-XOR                             Reduce 71

-AND                             Reduce 71

-MULTIPLY                        Reduce 71

-OR                              Reduce 71

-DIVIDE                          Reduce 71

-GREATER                         Reduce 71

-LESS                            Reduce 71

-LPAREN                          Reduce 71

-RPAREN                          Reduce 71

-RBRACE                          Reduce 71

-LBRACKET                        Reduce 71

-RBRACKET                        Reduce 71

-SEMICOLON                       Reduce 71

-QUESTION                        Reduce 71

-COLON                           Reduce 71

-COMMA                           Reduce 71

-DOT                             Reduce 71

-EQUAL                           Reduce 71

-AT                              Reduce 71

-ElidedSemicolonAndRightBrace    Reduce 71

-AT308                           Reduce 71

-$eof                            Reduce 71

-

-Default reduction to rule  71

-

-

-STATE 1052 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1914

-

-

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  754

-

-

-STATE 1053 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1915

-

-

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 674

-MINUS_EQUAL                     Reduce 674

-MULTIPLY_EQUAL                  Reduce 674

-DIVIDE_EQUAL                    Reduce 674

-AND_EQUAL                       Reduce 674

-OR_EQUAL                        Reduce 674

-XOR_EQUAL                       Reduce 674

-REMAINDER_EQUAL                 Reduce 674

-LEFT_SHIFT_EQUAL                Reduce 674

-RIGHT_SHIFT_EQUAL               Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 674

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-EQUAL                           Reduce 674

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  674

-

-

-STATE 1054 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-instanceof                      Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1916

-

-

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 673

-MINUS_EQUAL                     Reduce 673

-MULTIPLY_EQUAL                  Reduce 673

-DIVIDE_EQUAL                    Reduce 673

-AND_EQUAL                       Reduce 673

-OR_EQUAL                        Reduce 673

-XOR_EQUAL                       Reduce 673

-REMAINDER_EQUAL                 Reduce 673

-LEFT_SHIFT_EQUAL                Reduce 673

-RIGHT_SHIFT_EQUAL               Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 673

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-EQUAL                           Reduce 673

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  673

-

-

-STATE 1055 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1917

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1918

-

-

-

-

-STATE 1056 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1919

-

-

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1057 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1920

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1058 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1921

-

-

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1059 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1922

-

-

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1060 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1923

-

-

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1061 ---------------------------------------------------------------------

-( 9 41 43 46 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 

-  297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 

-  324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 

-  392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1924

-

-

-

-Name ::= QualifiedName . (86)

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-LESS                            Reduce 672

-LPAREN                          Reduce 68

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-LBRACKET                        Reduce 86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1925

-

-

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-DOT                             Reduce 86

-EQUAL                           Reduce 672

-AT                              Reduce 672

-COLON_COLON                     Reduce 86

-BeginTypeArguments              Reduce 86

-ElidedSemicolonAndRightBrace    Reduce 672

-AT308                           Reduce 86

-$eof                            Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 1062 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1926

-

-

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 581

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1063 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-AssignmentExpression ::= ConditionalExpression . (737)

-AssignmentExpression ::= Assignment . (738)

-

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-COLON                           Reduce 754

-COMMA                           Reduce 754

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  754

-

-

-STATE 1064 ---------------------------------------------------------------------

-( 10 11 12 13 15 17 18 28 118 119 120 124 134 145 176 178 184 188 189 191 193 

-  197 218 338 342 405 433 434 451 452 463 469 472 579 659 660 677 679 682 686 

-  690 758 760 766 802 803 883 891 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1927

-

-

-

-Modifiers ::= Modifier . (157)

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= synchronized . (166)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-Modifier ::= SimpleModifier . (170)

-

-Identifier      Reduce 765

-abstract        Reduce 157

-boolean         Reduce 765

-byte            Reduce 765

-char            Reduce 765

-class           Reduce 765

-default         Reduce 765

-double          Reduce 765

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 765

-int             Reduce 765

-interface       Reduce 765

-long            Reduce 765

-native          Reduce 157

-package         Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 765

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 765

-volatile        Reduce 157

-aspect          Reduce 765

-pointcut        Reduce 765

-around          Reduce 765

-before          Reduce 765

-after           Reduce 765

-privileged      Reduce 765

-LESS            Reduce 765

-AT              Reduce 157

-AT308           Reduce 765

-$eof            Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1928

-

-

-

-Default reduction to rule  765

-

-

-STATE 1065 ---------------------------------------------------------------------

-( 10 472 )

-

-

-ClassMemberDeclaration ::= AspectDeclaration . (180)

-ClassMemberDeclaration ::= PointcutDeclaration . (182)

-ClassBodyDeclaration ::= ClassMemberDeclaration . (357)

-ClassBodyDeclaration ::= StaticInitializer . (358)

-ClassBodyDeclaration ::= ConstructorDeclaration . (359)

-ClassMemberDeclaration ::= FieldDeclaration . (364)

-ClassMemberDeclaration ::= MethodDeclaration . (365)

-ClassMemberDeclaration ::= ClassDeclaration . (366)

-ClassMemberDeclaration ::= InterfaceDeclaration . (367)

-ClassMemberDeclaration ::= EnumDeclaration . (368)

-ClassMemberDeclaration ::= AnnotationTypeDeclaration . (369)

-MethodDeclaration ::= AbstractMethodDeclaration . (386)

-

-Identifier      Reduce 355

-abstract        Reduce 355

-boolean         Reduce 355

-byte            Reduce 355

-char            Reduce 355

-class           Reduce 355

-default         Reduce 355

-double          Reduce 355

-enum            Reduce 355

-final           Reduce 355

-float           Reduce 355

-int             Reduce 355

-interface       Reduce 355

-long            Reduce 355

-native          Reduce 355

-private         Reduce 355

-protected       Reduce 355

-public          Reduce 355

-short           Reduce 355

-static          Reduce 355

-strictfp        Reduce 355

-synchronized    Reduce 355

-transient       Reduce 355

-void            Reduce 355

-volatile        Reduce 355

-aspect          Reduce 355

-pointcut        Reduce 355

-privileged      Reduce 355

-LESS            Reduce 355

-LBRACE          Reduce 355

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1929

-

-

-RBRACE          Reduce 355

-SEMICOLON       Reduce 355

-AT              Reduce 355

-AT308           Reduce 355

-$eof            Reduce 355

-

-Default reduction to rule  355

-

-

-STATE 1066 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1930

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 582

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1067 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1931

-

-

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-AT                      Reduce 977

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1068 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1932

-

-

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 581

-AT                      Reduce 977

-COLON_COLON             Reduce 581

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1069 ---------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-

-Name ::= QualifiedName . (86)

-

-abstract                Reduce 978

-final                   Reduce 978

-instanceof              Reduce 68

-native                  Reduce 978

-private                 Reduce 978

-protected               Reduce 978

-public                  Reduce 978

-static                  Reduce 978

-strictfp                Reduce 978

-synchronized            Reduce 978

-transient               Reduce 978

-volatile                Reduce 978

-PLUS_PLUS               Reduce 672

-MINUS_MINUS             Reduce 672

-EQUAL_EQUAL             Reduce 68

-LESS_EQUAL              Reduce 68

-GREATER_EQUAL           Reduce 68

-NOT_EQUAL               Reduce 68

-LEFT_SHIFT              Reduce 68

-RIGHT_SHIFT             Reduce 68

-UNSIGNED_RIGHT_SHIFT    Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1933

-

-

-OR_OR                   Reduce 68

-AND_AND                 Reduce 68

-PLUS                    Reduce 68

-MINUS                   Reduce 68

-REMAINDER               Reduce 68

-XOR                     Reduce 68

-AND                     Reduce 68

-MULTIPLY                Reduce 68

-OR                      Reduce 68

-DIVIDE                  Reduce 68

-GREATER                 Reduce 68

-LESS                    Reduce 86

-LPAREN                  Reduce 68

-RPAREN                  Reduce 978

-RBRACE                  Reduce 978

-LBRACKET                Reduce 86

-SEMICOLON               Reduce 978

-QUESTION                Reduce 68

-COMMA                   Reduce 978

-DOT                     Reduce 86

-AT                      Reduce 978

-COLON_COLON             Reduce 86

-BeginTypeArguments      Reduce 86

-AT308                   Reduce 86

-$eof                    Reduce 978

-

-Default reduction to rule  68

-

-

-STATE 1070 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1934

-

-

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 597

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1071 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1935

-

-

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 596

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1072 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1936

-

-

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 595

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1073 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1937

-

-

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 594

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1074 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1938

-

-

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 587

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1075 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1939

-

-

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 586

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1076 ---------------------------------------------------------------------

-( 25 27 60 61 83 121 149 173 179 180 206 217 220 222 233 254 260 293 294 303 

-  316 331 334 350 355 377 390 409 424 443 444 450 478 494 504 521 592 632 667 

-  668 674 681 691 711 746 770 805 806 878 896 897 900 948 949 959 993 1001 

-  1002 )

-

-

-SimpleName ::= Identifier . (87)

-

-Identifier                      Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1940

-

-

-abstract                        Reduce 84

-final                           Reduce 84

-implements                      Reduce 84

-instanceof                      Reduce 84

-native                          Reduce 84

-private                         Reduce 84

-protected                       Reduce 84

-public                          Reduce 84

-static                          Reduce 84

-strictfp                        Reduce 84

-synchronized                    Reduce 84

-this                            Reduce 84

-transient                       Reduce 84

-volatile                        Reduce 84

-aspect                          Reduce 84

-pointcut                        Reduce 84

-around                          Reduce 84

-before                          Reduce 84

-after                           Reduce 84

-declare                         Reduce 84

-privileged                      Reduce 84

-EQUAL_EQUAL                     Reduce 84

-NOT_EQUAL                       Reduce 84

-RIGHT_SHIFT                     Reduce 84

-UNSIGNED_RIGHT_SHIFT            Reduce 84

-OR_OR                           Reduce 84

-AND_AND                         Reduce 84

-XOR                             Reduce 84

-AND                             Reduce 84

-OR                              Reduce 84

-GREATER                         Reduce 84

-LESS                            Reduce 84

-LPAREN                          Reduce 84

-RPAREN                          Reduce 84

-LBRACE                          Reduce 84

-RBRACE                          Reduce 84

-LBRACKET                        Reduce 84

-RBRACKET                        Reduce 84

-SEMICOLON                       Reduce 84

-QUESTION                        Reduce 84

-COLON                           Reduce 84

-COMMA                           Reduce 84

-DOT                             Reduce 84

-AT                              Reduce 84

-ELLIPSIS                        Reduce 84

-COLON_COLON                     Reduce 84

-ElidedSemicolonAndRightBrace    Reduce 84

-AT308                           Reduce 84

-AT308DOTDOTDOT                  Reduce 84

-$eof                            Reduce 84

-

-Default reduction to rule  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1941

-

-

-

-

-STATE 1077 ---------------------------------------------------------------------

-( 25 60 83 121 133 138 143 173 179 192 194 216 233 294 316 331 334 339 351 377 

-  390 409 424 430 443 444 450 478 521 632 667 668 681 691 767 805 806 871 878 

-  896 897 900 959 1001 1002 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier                      Reduce 57

-abstract                        Reduce 57

-final                           Reduce 57

-instanceof                      Reduce 57

-native                          Reduce 57

-private                         Reduce 57

-protected                       Reduce 57

-public                          Reduce 57

-static                          Reduce 57

-strictfp                        Reduce 57

-synchronized                    Reduce 57

-this                            Reduce 57

-transient                       Reduce 57

-volatile                        Reduce 57

-aspect                          Reduce 57

-pointcut                        Reduce 57

-around                          Reduce 57

-before                          Reduce 57

-after                           Reduce 57

-declare                         Reduce 57

-privileged                      Reduce 57

-EQUAL_EQUAL                     Reduce 57

-NOT_EQUAL                       Reduce 57

-RIGHT_SHIFT                     Reduce 57

-UNSIGNED_RIGHT_SHIFT            Reduce 57

-OR_OR                           Reduce 57

-AND_AND                         Reduce 57

-PLUS                            Reduce 86

-XOR                             Reduce 57

-AND                             Reduce 57

-OR                              Reduce 57

-GREATER                         Reduce 57

-LESS                            Reduce 57

-LPAREN                          Reduce 57

-RPAREN                          Reduce 57

-RBRACE                          Reduce 57

-LBRACKET                        Reduce 86

-RBRACKET                        Reduce 57

-SEMICOLON                       Reduce 57

-QUESTION                        Reduce 57

-COLON                           Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1942

-

-

-COMMA                           Reduce 57

-DOT                             Reduce 86

-AT                              Reduce 57

-ELLIPSIS                        Reduce 57

-ElidedSemicolonAndRightBrace    Reduce 57

-AT308                           Reduce 86

-AT308DOTDOTDOT                  Reduce 57

-$eof                            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 1078 ---------------------------------------------------------------------

-( 25 294 443 444 552 805 806 959 )

-

-

-ReferenceType ::= ArrayType . (54)

-

-RIGHT_SHIFT             Reduce 54

-UNSIGNED_RIGHT_SHIFT    Reduce 54

-GREATER                 Reduce 54

-COMMA                   Reduce 824

-

-Default reduction to rule  54

-

-

-STATE 1079 ---------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 240 245 287 304 305 447 522 526 549 572 573 

-  583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-

-DimsLoop ::= OneDimLoop . (652)

-

-Identifier                      Reduce 651

-abstract                        Reduce 651

-default                         Reduce 651

-final                           Reduce 651

-instanceof                      Reduce 651

-native                          Reduce 651

-private                         Reduce 651

-protected                       Reduce 651

-public                          Reduce 651

-static                          Reduce 651

-strictfp                        Reduce 651

-synchronized                    Reduce 651

-this                            Reduce 651

-throws                          Reduce 651

-transient                       Reduce 651

-volatile                        Reduce 651

-aspect                          Reduce 651

-pointcut                        Reduce 651

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1943

-

-

-around                          Reduce 651

-before                          Reduce 651

-after                           Reduce 651

-declare                         Reduce 651

-privileged                      Reduce 651

-EQUAL_EQUAL                     Reduce 651

-NOT_EQUAL                       Reduce 651

-RIGHT_SHIFT                     Reduce 651

-UNSIGNED_RIGHT_SHIFT            Reduce 651

-OR_OR                           Reduce 651

-AND_AND                         Reduce 651

-XOR                             Reduce 651

-AND                             Reduce 651

-OR                              Reduce 651

-GREATER                         Reduce 651

-RPAREN                          Reduce 651

-LBRACE                          Reduce 651

-RBRACE                          Reduce 651

-LBRACKET                        Reduce 652

-RBRACKET                        Reduce 651

-SEMICOLON                       Reduce 651

-QUESTION                        Reduce 651

-COLON                           Reduce 651

-COMMA                           Reduce 651

-DOT                             Reduce 651

-EQUAL                           Reduce 651

-AT                              Reduce 651

-ELLIPSIS                        Reduce 651

-COLON_COLON                     Reduce 651

-ElidedSemicolonAndRightBrace    Reduce 651

-AT308                           Reduce 652

-AT308DOTDOTDOT                  Reduce 651

-$eof                            Reduce 651

-

-Default reduction to rule  651

-

-

-STATE 1080 ---------------------------------------------------------------------

-( 28 119 120 124 134 145 178 184 188 189 191 760 766 )

-

-

-FormalParameterList ::= FormalParameter . (404)

-

-RPAREN    Reduce 775

-COMMA     Reduce 404

-

-Default reduction to rule  775

-

-

-STATE 1081 ---------------------------------------------------------------------

-( 54 102 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1944

-

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 582

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1945

-

-

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1082 ---------------------------------------------------------------------

-( 54 102 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 943

-QUESTION                Reduce 935

-

-Default reduction to rule  899

-

-

-STATE 1083 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1946

-

-

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 597

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1084 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1947

-

-

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 596

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1085 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1948

-

-

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 595

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1086 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1949

-

-

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 594

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1087 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1950

-

-

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 587

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1088 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1951

-

-

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 586

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1089 ---------------------------------------------------------------------

-( 54 76 102 275 724 725 729 842 919 923 924 1011 1012 1013 1032 1033 1036 )

-

-

-Name ::= QualifiedName . (86)

-

-instanceof                    Reduce 68

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1952

-

-

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-LESS                          Reduce 86

-LPAREN                        Reduce 68

-RPAREN                        Reduce 86

-LBRACKET                      Reduce 86

-QUESTION                      Reduce 68

-DOT                           Reduce 86

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 86

-BeginTypeArguments            Reduce 86

-AT308                         Reduce 86

-

-Default reduction to rule  68

-

-

-STATE 1090 ---------------------------------------------------------------------

-( 54 102 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1953

-

-

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-QUESTION                      Reduce 935

-DOT                           Reduce 581

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 581

-

-Default reduction to rule  671

-

-

-STATE 1091 ---------------------------------------------------------------------

-( 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier      Reduce 57

-abstract        Reduce 57

-final           Reduce 57

-implements      Reduce 57

-native          Reduce 57

-private         Reduce 57

-protected       Reduce 57

-public          Reduce 57

-static          Reduce 57

-strictfp        Reduce 57

-synchronized    Reduce 57

-transient       Reduce 57

-volatile        Reduce 57

-AND             Reduce 57

-LESS            Reduce 57

-LPAREN          Reduce 57

-RPAREN          Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1954

-

-

-LBRACE          Reduce 57

-LBRACKET        Reduce 57

-SEMICOLON       Reduce 57

-COLON           Reduce 57

-COMMA           Reduce 57

-DOT             Reduce 86

-AT              Reduce 57

-COLON_COLON     Reduce 57

-AT308           Reduce 57

-$eof            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 1092 ---------------------------------------------------------------------

-( 80 136 286 )

-

-

-SimpleName ::= Identifier . (87)

-UnannotatableName ::= SimpleName . (88)

-

-Identifier      Reduce 83

-abstract        Reduce 83

-boolean         Reduce 83

-byte            Reduce 83

-char            Reduce 83

-class           Reduce 83

-default         Reduce 83

-double          Reduce 83

-enum            Reduce 83

-final           Reduce 83

-float           Reduce 83

-int             Reduce 83

-interface       Reduce 83

-long            Reduce 83

-native          Reduce 83

-package         Reduce 83

-private         Reduce 83

-protected       Reduce 83

-public          Reduce 83

-short           Reduce 83

-static          Reduce 83

-strictfp        Reduce 83

-synchronized    Reduce 83

-transient       Reduce 83

-void            Reduce 83

-volatile        Reduce 83

-aspect          Reduce 83

-pointcut        Reduce 83

-around          Reduce 83

-before          Reduce 83

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1955

-

-

-after           Reduce 83

-privileged      Reduce 83

-LESS            Reduce 83

-LPAREN          Reduce 83

-RPAREN          Reduce 83

-RBRACE          Reduce 83

-SEMICOLON       Reduce 83

-COMMA           Reduce 83

-DOT             Reduce 88

-AT              Reduce 83

-AT308           Reduce 83

-$eof            Reduce 83

-

-Default reduction to rule  83

-

-

-STATE 1093 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-

-Identifier              Reduce 312

-abstract                Reduce 312

-assert                  Reduce 312

-boolean                 Reduce 312

-break                   Reduce 312

-byte                    Reduce 312

-case                    Reduce 312

-catch                   Reduce 312

-char                    Reduce 312

-class                   Reduce 312

-continue                Reduce 312

-do                      Reduce 312

-double                  Reduce 312

-else                    Reduce 312

-extends                 Reduce 312

-false                   Reduce 312

-final                   Reduce 312

-finally                 Reduce 312

-float                   Reduce 312

-for                     Reduce 312

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1956

-

-

-if                      Reduce 312

-implements              Reduce 312

-import                  Reduce 312

-instanceof              Reduce 312

-int                     Reduce 312

-long                    Reduce 312

-native                  Reduce 312

-new                     Reduce 312

-null                    Reduce 312

-package                 Reduce 312

-private                 Reduce 312

-protected               Reduce 312

-public                  Reduce 312

-return                  Reduce 312

-short                   Reduce 312

-static                  Reduce 312

-strictfp                Reduce 312

-super                   Reduce 312

-switch                  Reduce 312

-synchronized            Reduce 312

-this                    Reduce 312

-throw                   Reduce 312

-throws                  Reduce 312

-transient               Reduce 312

-true                    Reduce 312

-try                     Reduce 312

-void                    Reduce 312

-volatile                Reduce 312

-while                   Reduce 312

-aspect                  Reduce 312

-pointcut                Reduce 312

-around                  Reduce 312

-before                  Reduce 312

-after                   Reduce 312

-declare                 Reduce 312

-privileged              Reduce 312

-IntegerLiteral          Reduce 312

-LongLiteral             Reduce 312

-FloatingPointLiteral    Reduce 312

-DoubleLiteral           Reduce 312

-CharacterLiteral        Reduce 312

-StringLiteral           Reduce 312

-NOT_EQUAL               Reduce 312

-RIGHT_SHIFT             Reduce 312

-UNSIGNED_RIGHT_SHIFT    Reduce 312

-OR_OR                   Reduce 312

-AND_AND                 Reduce 312

-PLUS                    Reduce 312

-NOT                     Reduce 312

-AND                     Reduce 312

-MULTIPLY                Reduce 312

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1957

-

-

-GREATER                 Reduce 312

-LESS                    Reduce 312

-LPAREN                  Reduce 312

-RPAREN                  Reduce 312

-LBRACE                  Reduce 312

-LBRACKET                Reduce 312

-RBRACKET                Reduce 312

-SEMICOLON               Reduce 312

-QUESTION                Reduce 312

-COLON                   Reduce 312

-COMMA                   Reduce 312

-DOT                     Reduce 312

-EQUAL                   Reduce 312

-AT                      Reduce 312

-ELLIPSIS                Reduce 312

-AT308                   Reduce 312

-

-Default reduction to rule  312

-

-

-STATE 1094 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= synchronized . (166)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-

-Identifier              Reduce 311

-abstract                Reduce 311

-assert                  Reduce 311

-boolean                 Reduce 311

-break                   Reduce 311

-byte                    Reduce 311

-case                    Reduce 311

-catch                   Reduce 311

-char                    Reduce 311

-class                   Reduce 311

-continue                Reduce 311

-do                      Reduce 311

-double                  Reduce 311

-else                    Reduce 311

-extends                 Reduce 311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1958

-

-

-false                   Reduce 311

-final                   Reduce 311

-finally                 Reduce 311

-float                   Reduce 311

-for                     Reduce 311

-if                      Reduce 311

-implements              Reduce 311

-import                  Reduce 311

-instanceof              Reduce 311

-int                     Reduce 311

-long                    Reduce 311

-native                  Reduce 311

-new                     Reduce 311

-null                    Reduce 311

-package                 Reduce 311

-private                 Reduce 311

-protected               Reduce 311

-public                  Reduce 311

-return                  Reduce 311

-short                   Reduce 311

-static                  Reduce 311

-strictfp                Reduce 311

-super                   Reduce 311

-switch                  Reduce 311

-synchronized            Reduce 311

-this                    Reduce 311

-throw                   Reduce 311

-throws                  Reduce 311

-transient               Reduce 311

-true                    Reduce 311

-try                     Reduce 311

-void                    Reduce 311

-volatile                Reduce 311

-while                   Reduce 311

-aspect                  Reduce 311

-pointcut                Reduce 311

-around                  Reduce 311

-before                  Reduce 311

-after                   Reduce 311

-declare                 Reduce 311

-privileged              Reduce 311

-IntegerLiteral          Reduce 311

-LongLiteral             Reduce 311

-FloatingPointLiteral    Reduce 311

-DoubleLiteral           Reduce 311

-CharacterLiteral        Reduce 311

-StringLiteral           Reduce 311

-NOT_EQUAL               Reduce 311

-RIGHT_SHIFT             Reduce 311

-UNSIGNED_RIGHT_SHIFT    Reduce 311

-OR_OR                   Reduce 311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1959

-

-

-AND_AND                 Reduce 311

-PLUS                    Reduce 311

-NOT                     Reduce 311

-AND                     Reduce 311

-MULTIPLY                Reduce 311

-GREATER                 Reduce 311

-LESS                    Reduce 311

-LPAREN                  Reduce 311

-RPAREN                  Reduce 311

-LBRACE                  Reduce 311

-LBRACKET                Reduce 311

-RBRACKET                Reduce 311

-SEMICOLON               Reduce 311

-QUESTION                Reduce 311

-COLON                   Reduce 311

-COMMA                   Reduce 311

-DOT                     Reduce 311

-EQUAL                   Reduce 311

-AT                      Reduce 311

-ELLIPSIS                Reduce 311

-AT308                   Reduce 311

-

-Default reduction to rule  311

-

-

-STATE 1095 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-JavaIdentifier ::= Identifier . (35)

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-Identifier              Reduce 288

-abstract                Reduce 288

-assert                  Reduce 288

-boolean                 Reduce 288

-break                   Reduce 288

-byte                    Reduce 288

-case                    Reduce 288

-catch                   Reduce 288

-char                    Reduce 288

-class                   Reduce 288

-continue                Reduce 288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1960

-

-

-do                      Reduce 288

-double                  Reduce 288

-else                    Reduce 288

-extends                 Reduce 288

-false                   Reduce 288

-final                   Reduce 288

-finally                 Reduce 288

-float                   Reduce 288

-for                     Reduce 288

-if                      Reduce 288

-implements              Reduce 288

-import                  Reduce 288

-instanceof              Reduce 288

-int                     Reduce 288

-long                    Reduce 288

-native                  Reduce 288

-new                     Reduce 288

-null                    Reduce 288

-package                 Reduce 288

-private                 Reduce 288

-protected               Reduce 288

-public                  Reduce 288

-return                  Reduce 288

-short                   Reduce 288

-static                  Reduce 288

-strictfp                Reduce 288

-super                   Reduce 288

-switch                  Reduce 288

-synchronized            Reduce 288

-this                    Reduce 288

-throw                   Reduce 288

-throws                  Reduce 288

-transient               Reduce 288

-true                    Reduce 288

-try                     Reduce 288

-void                    Reduce 288

-volatile                Reduce 288

-while                   Reduce 288

-aspect                  Reduce 288

-pointcut                Reduce 288

-around                  Reduce 288

-before                  Reduce 288

-after                   Reduce 288

-declare                 Reduce 288

-privileged              Reduce 288

-IntegerLiteral          Reduce 288

-LongLiteral             Reduce 288

-FloatingPointLiteral    Reduce 288

-DoubleLiteral           Reduce 288

-CharacterLiteral        Reduce 288

-StringLiteral           Reduce 288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1961

-

-

-NOT_EQUAL               Reduce 288

-RIGHT_SHIFT             Reduce 288

-UNSIGNED_RIGHT_SHIFT    Reduce 288

-OR_OR                   Reduce 288

-AND_AND                 Reduce 288

-PLUS                    Reduce 288

-NOT                     Reduce 288

-AND                     Reduce 288

-MULTIPLY                Reduce 288

-GREATER                 Reduce 288

-LESS                    Reduce 288

-LPAREN                  Reduce 288

-RPAREN                  Reduce 288

-LBRACE                  Reduce 288

-LBRACKET                Reduce 288

-RBRACKET                Reduce 288

-SEMICOLON               Reduce 288

-QUESTION                Reduce 288

-COLON                   Reduce 288

-COMMA                   Reduce 288

-DOT                     Reduce 288

-EQUAL                   Reduce 288

-AT                      Reduce 288

-ELLIPSIS                Reduce 288

-AT308                   Reduce 288

-

-Default reduction to rule  288

-

-

-STATE 1096 ---------------------------------------------------------------------

-( 197 )

-

-

-TypeDeclarations ::= TypeDeclaration . (138)

-TypeDeclaration ::= ClassDeclaration . (152)

-TypeDeclaration ::= InterfaceDeclaration . (153)

-TypeDeclaration ::= EnumDeclaration . (155)

-TypeDeclaration ::= AnnotationTypeDeclaration . (156)

-TypeDeclaration ::= AspectDeclaration . (178)

-

-abstract        Reduce 138

-class           Reduce 138

-enum            Reduce 138

-final           Reduce 138

-interface       Reduce 138

-native          Reduce 138

-private         Reduce 138

-protected       Reduce 138

-public          Reduce 138

-static          Reduce 138

-strictfp        Reduce 138

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1962

-

-

-synchronized    Reduce 138

-transient       Reduce 138

-volatile        Reduce 138

-aspect          Reduce 138

-privileged      Reduce 138

-SEMICOLON       Reduce 138

-AT              Reduce 138

-$eof            Reduce 115

-

-Default reduction to rule  138

-

-

-STATE 1097 ---------------------------------------------------------------------

-( 199 284 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1963

-

-

-LBRACKET                Reduce 582

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1098 ---------------------------------------------------------------------

-( 199 284 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-instanceof              Reduce 71

-PLUS_PLUS               Reduce 71

-MINUS_MINUS             Reduce 71

-EQUAL_EQUAL             Reduce 71

-LESS_EQUAL              Reduce 71

-GREATER_EQUAL           Reduce 71

-NOT_EQUAL               Reduce 71

-LEFT_SHIFT              Reduce 71

-RIGHT_SHIFT             Reduce 71

-UNSIGNED_RIGHT_SHIFT    Reduce 71

-OR_OR                   Reduce 71

-AND_AND                 Reduce 71

-PLUS                    Reduce 71

-MINUS                   Reduce 71

-REMAINDER               Reduce 71

-XOR                     Reduce 71

-AND                     Reduce 71

-MULTIPLY                Reduce 71

-OR                      Reduce 71

-DIVIDE                  Reduce 71

-GREATER                 Reduce 71

-LPAREN                  Reduce 71

-RPAREN                  Reduce 71

-LBRACKET                Reduce 71

-QUESTION                Reduce 71

-DOT                     Reduce 71

-EQUAL                   Reduce 69

-

-Default reduction to rule  71

-

-

-STATE 1099 ---------------------------------------------------------------------

-( 199 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1964

-

-

-

-MemberValuePairs ::= MemberValuePair . (972)

-

-RPAREN    Reduce 971

-COMMA     Reduce 972

-

-Default reduction to rule  971

-

-

-STATE 1100 ---------------------------------------------------------------------

-( 199 284 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-QUESTION                Reduce 935

-

-Default reduction to rule  899

-

-

-STATE 1101 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1965

-

-

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 597

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1102 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1966

-

-

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 596

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1103 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 595

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1967

-

-

-

-Default reduction to rule  899

-

-

-STATE 1104 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 594

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1105 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1968

-

-

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 587

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1106 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1969

-

-

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 586

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1107 ---------------------------------------------------------------------

-( 199 284 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-QUESTION                Reduce 935

-DOT                     Reduce 581

-COLON_COLON             Reduce 581

-

-Default reduction to rule  899

-

-

-STATE 1108 ---------------------------------------------------------------------

-( 199 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1970

-

-

-

-Annotation ::= NormalAnnotation . (965)

-Annotation ::= MarkerAnnotation . (966)

-Annotation ::= SingleMemberAnnotation . (967)

-MemberValue ::= ConditionalExpression_NotName . (977)

-MemberValue ::= Annotation . (979)

-MemberValue ::= MemberValueArrayInitializer . (980)

-

-RPAREN    Reduce 989

-

-Default reduction to rule  989

-

-

-STATE 1109 ---------------------------------------------------------------------

-( 231 )

-

-

-Catches ::= CatchClause . (573)

-

-Identifier              Reduce 573

-abstract                Reduce 573

-assert                  Reduce 573

-boolean                 Reduce 573

-break                   Reduce 573

-byte                    Reduce 573

-case                    Reduce 573

-catch                   Reduce 573

-char                    Reduce 573

-class                   Reduce 573

-continue                Reduce 573

-default                 Reduce 573

-do                      Reduce 573

-double                  Reduce 573

-else                    Reduce 573

-enum                    Reduce 573

-false                   Reduce 573

-final                   Reduce 573

-finally                 Reduce 788

-float                   Reduce 573

-for                     Reduce 573

-if                      Reduce 573

-int                     Reduce 573

-interface               Reduce 573

-long                    Reduce 573

-native                  Reduce 573

-new                     Reduce 573

-null                    Reduce 573

-private                 Reduce 573

-protected               Reduce 573

-public                  Reduce 573

-return                  Reduce 573

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1971

-

-

-short                   Reduce 573

-static                  Reduce 573

-strictfp                Reduce 573

-super                   Reduce 573

-switch                  Reduce 573

-synchronized            Reduce 573

-this                    Reduce 573

-throw                   Reduce 573

-transient               Reduce 573

-true                    Reduce 573

-try                     Reduce 573

-void                    Reduce 573

-volatile                Reduce 573

-while                   Reduce 573

-aspect                  Reduce 573

-pointcut                Reduce 573

-around                  Reduce 573

-before                  Reduce 573

-after                   Reduce 573

-declare                 Reduce 573

-privileged              Reduce 573

-IntegerLiteral          Reduce 573

-LongLiteral             Reduce 573

-FloatingPointLiteral    Reduce 573

-DoubleLiteral           Reduce 573

-CharacterLiteral        Reduce 573

-StringLiteral           Reduce 573

-PLUS_PLUS               Reduce 573

-MINUS_MINUS             Reduce 573

-LESS                    Reduce 573

-LPAREN                  Reduce 573

-LBRACE                  Reduce 573

-RBRACE                  Reduce 573

-SEMICOLON               Reduce 573

-AT                      Reduce 573

-BeginLambda             Reduce 573

-AT308                   Reduce 573

-$eof                    Reduce 573

-

-Default reduction to rule  573

-

-

-STATE 1110 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1972

-

-

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1973

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1111 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1974

-

-

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-AT                              Reduce 682

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1112 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1975

-

-

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-AT                              Reduce 682

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1113 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1976

-

-

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1114 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1977

-

-

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1115 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1978

-

-

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1116 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1979

-

-

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1117 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1980

-

-

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1118 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1981

-

-

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1119 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1982

-

-

-  933 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 581

-AT                              Reduce 682

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1983

-

-

-

-

-STATE 1120 ---------------------------------------------------------------------

-( 264 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1984

-

-

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1121 ---------------------------------------------------------------------

-( 264 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1985

-

-

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  737

-

-

-STATE 1122 ---------------------------------------------------------------------

-( 264 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1986

-

-

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 581

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1123 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1987

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1124 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1988

-

-

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1125 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1989

-

-

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1126 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1990

-

-

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1127 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1991

-

-

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1128 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1992

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1129 ---------------------------------------------------------------------

-( 264 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 674

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1993

-

-

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 674

-MINUS_EQUAL                     Reduce 674

-MULTIPLY_EQUAL                  Reduce 674

-DIVIDE_EQUAL                    Reduce 674

-AND_EQUAL                       Reduce 674

-OR_EQUAL                        Reduce 674

-XOR_EQUAL                       Reduce 674

-REMAINDER_EQUAL                 Reduce 674

-LEFT_SHIFT_EQUAL                Reduce 674

-RIGHT_SHIFT_EQUAL               Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 674

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-EQUAL                           Reduce 674

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  674

-

-

-STATE 1130 ---------------------------------------------------------------------

-( 264 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1994

-

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 673

-MINUS_EQUAL                     Reduce 673

-MULTIPLY_EQUAL                  Reduce 673

-DIVIDE_EQUAL                    Reduce 673

-AND_EQUAL                       Reduce 673

-OR_EQUAL                        Reduce 673

-XOR_EQUAL                       Reduce 673

-REMAINDER_EQUAL                 Reduce 673

-LEFT_SHIFT_EQUAL                Reduce 673

-RIGHT_SHIFT_EQUAL               Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 673

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-EQUAL                           Reduce 673

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  673

-

-

-STATE 1131 ---------------------------------------------------------------------

-( 278 920 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1995

-

-

-StatementExpressionList ::= StatementExpression . (547)

-

-SEMICOLON    Reduce 544

-COMMA        Reduce 547

-

-Default reduction to rule  544

-

-

-STATE 1132 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1996

-

-

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1133 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1997

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1134 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1998

-

-

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1135 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1999

-

-

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1136 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2000

-

-

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1137 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2001

-

-

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1138 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2002

-

-

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1139 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2003

-

-

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1140 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2004

-

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2005

-

-

-

-

-STATE 1141 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2006

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1142 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2007

-

-

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 581

-AT                              Reduce 708

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1143 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2008

-

-

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1144 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2009

-

-

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 581

-AT                              Reduce 704

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1145 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2010

-

-

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1146 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2011

-

-

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1147 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2012

-

-

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1148 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2013

-

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1149 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2014

-

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2015

-

-

-

-

-STATE 1150 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2016

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1151 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2017

-

-

-COLON                           Reduce 704

-COMMA                           Reduce 704

-AT                              Reduce 704

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1152 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2018

-

-

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-AT                              Reduce 704

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1153 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2019

-

-

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1154 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2020

-

-

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1155 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2021

-

-

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 581

-AT                              Reduce 711

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1156 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2022

-

-

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1157 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2023

-

-

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1158 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2024

-

-

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1159 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2025

-

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2026

-

-

-

-

-STATE 1160 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2027

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1161 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2028

-

-

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1162 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2029

-

-

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1163 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2030

-

-

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1164 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2031

-

-

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1165 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2032

-

-

-transient                       Reduce 722

-volatile                        Reduce 722

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1166 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2033

-

-

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1167 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2034

-

-

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1168 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2035

-

-

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1169 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2036

-

-

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1170 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2037

-

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2038

-

-

-

-

-STATE 1171 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2039

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1172 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2040

-

-

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1173 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2041

-

-

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1174 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2042

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 581

-AT                              Reduce 722

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1175 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2043

-

-

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1176 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2044

-

-

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1177 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2045

-

-

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 581

-AT                              Reduce 720

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1178 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2046

-

-

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1179 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2047

-

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2048

-

-

-

-

-STATE 1180 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2049

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1181 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2050

-

-

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1182 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2051

-

-

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1183 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2052

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1184 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2053

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1185 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2054

-

-

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1186 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2055

-

-

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1187 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2056

-

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1188 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2057

-

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1189 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2058

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1190 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2059

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2060

-

-

-

-

-STATE 1191 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2061

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1192 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2062

-

-

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1193 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2063

-

-

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1194 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2064

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1195 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2065

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1196 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2066

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 581

-AT                              Reduce 727

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1197 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2067

-

-

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1198 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2068

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1199 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2069

-

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 581

-AT                              Reduce 725

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1200 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2070

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2071

-

-

-

-

-STATE 1201 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2072

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1202 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2073

-

-

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1203 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2074

-

-

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1204 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2075

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1205 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2076

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1206 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2077

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1207 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2078

-

-

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1208 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2079

-

-

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1209 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2080

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1210 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2081

-

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1211 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2082

-

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1212 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2083

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2084

-

-

-

-

-STATE 1213 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2085

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1214 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2086

-

-

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1215 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2087

-

-

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1216 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2088

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1217 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2089

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1218 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2090

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 581

-AT                              Reduce 731

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1219 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2091

-

-

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1220 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2092

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1221 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2093

-

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 581

-AT                              Reduce 729

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1222 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2094

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2095

-

-

-

-

-STATE 1223 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2096

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1224 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2097

-

-

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1225 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2098

-

-

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1226 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2099

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1227 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2100

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1228 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2101

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1229 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2102

-

-

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1230 ---------------------------------------------------------------------

-( 329 )

-

-

-VariableInitializer ::= Expression . (384)

-VariableInitializer ::= ArrayInitializer . (385)

-

-RBRACE    Reduce 464

-COMMA     Reduce 464

-

-Default reduction to rule  464

-

-

-STATE 1231 ---------------------------------------------------------------------

-( 428 870 )

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2103

-

-

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LPAREN       Reduce 38

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-

-Default reduction to rule  36

-

-

-STATE 1232 ---------------------------------------------------------------------

-( 428 870 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-

-Default reduction to rule  36

-

-

-STATE 1233 ---------------------------------------------------------------------

-( 473 )

-

-

-Catches ::= CatchClause . (573)

-

-Identifier              Reduce 788

-abstract                Reduce 788

-assert                  Reduce 788

-boolean                 Reduce 788

-break                   Reduce 788

-byte                    Reduce 788

-case                    Reduce 788

-catch                   Reduce 573

-char                    Reduce 788

-class                   Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2104

-

-

-continue                Reduce 788

-default                 Reduce 788

-do                      Reduce 788

-double                  Reduce 788

-else                    Reduce 788

-enum                    Reduce 788

-false                   Reduce 788

-final                   Reduce 788

-finally                 Reduce 788

-float                   Reduce 788

-for                     Reduce 788

-if                      Reduce 788

-int                     Reduce 788

-interface               Reduce 788

-long                    Reduce 788

-native                  Reduce 788

-new                     Reduce 788

-null                    Reduce 788

-private                 Reduce 788

-protected               Reduce 788

-public                  Reduce 788

-return                  Reduce 788

-short                   Reduce 788

-static                  Reduce 788

-strictfp                Reduce 788

-super                   Reduce 788

-switch                  Reduce 788

-synchronized            Reduce 788

-this                    Reduce 788

-throw                   Reduce 788

-transient               Reduce 788

-true                    Reduce 788

-try                     Reduce 788

-void                    Reduce 788

-volatile                Reduce 788

-while                   Reduce 788

-aspect                  Reduce 788

-pointcut                Reduce 788

-around                  Reduce 788

-before                  Reduce 788

-after                   Reduce 788

-declare                 Reduce 788

-privileged              Reduce 788

-IntegerLiteral          Reduce 788

-LongLiteral             Reduce 788

-FloatingPointLiteral    Reduce 788

-DoubleLiteral           Reduce 788

-CharacterLiteral        Reduce 788

-StringLiteral           Reduce 788

-PLUS_PLUS               Reduce 788

-MINUS_MINUS             Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2105

-

-

-LESS                    Reduce 788

-LPAREN                  Reduce 788

-LBRACE                  Reduce 788

-RBRACE                  Reduce 788

-SEMICOLON               Reduce 788

-AT                      Reduce 788

-BeginLambda             Reduce 788

-AT308                   Reduce 788

-$eof                    Reduce 788

-

-Default reduction to rule  788

-

-

-STATE 1234 ---------------------------------------------------------------------

-( 547 551 747 934 )

-

-

-AdditionalBoundList ::= AdditionalBound . (864)

-

-AND       Reduce 864

-RPAREN    Reduce 696

-

-Default reduction to rule  864

-

-

-STATE 1235 ---------------------------------------------------------------------

-( 572 573 593 635 644 938 )

-

-

-Dimsopt ::= Dims . (769)

-

-abstract        Reduce 398

-default         Reduce 398

-final           Reduce 398

-native          Reduce 398

-private         Reduce 398

-protected       Reduce 398

-public          Reduce 398

-static          Reduce 398

-strictfp        Reduce 398

-synchronized    Reduce 398

-throws          Reduce 398

-transient       Reduce 398

-volatile        Reduce 398

-LBRACE          Reduce 398

-SEMICOLON       Reduce 398

-AT              Reduce 398

-$eof            Reduce 398

-

-Default reduction to rule  398

-

-

-STATE 1236 ---------------------------------------------------------------------

-( 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2106

-

-

-

-ClassBodyDeclarationNoAroundMethod ::= ClassMemberDeclarationNoAroundMethod .

-                                        (201)

-ClassBodyDeclarationNoAroundMethod ::= StaticInitializer . (202)

-ClassBodyDeclarationNoAroundMethod ::= ConstructorDeclaration . (203)

-ClassMemberDeclarationNoAroundMethod ::= PointcutDeclaration . (205)

-ClassMemberDeclarationNoAroundMethod ::= AspectDeclaration . (206)

-ClassMemberDeclarationNoAroundMethod ::= FieldDeclaration . (207)

-ClassMemberDeclarationNoAroundMethod ::= MethodDeclarationNoAround . (208)

-ClassMemberDeclarationNoAroundMethod ::= ClassDeclaration . (209)

-ClassMemberDeclarationNoAroundMethod ::= InterfaceDeclaration . (210)

-ClassMemberDeclarationNoAroundMethod ::= IntertypeClassDeclaration . (211)

-ClassMemberDeclarationNoAroundMethod ::= EnumDeclaration . (212)

-ClassMemberDeclarationNoAroundMethod ::= AnnotationTypeDeclaration . (213)

-MethodDeclarationNoAround ::= AbstractMethodDeclarationNoAround . (215)

-

-Identifier      Reduce 200

-abstract        Reduce 200

-boolean         Reduce 200

-byte            Reduce 200

-char            Reduce 200

-class           Reduce 200

-double          Reduce 200

-enum            Reduce 200

-final           Reduce 200

-float           Reduce 200

-int             Reduce 200

-interface       Reduce 200

-long            Reduce 200

-native          Reduce 200

-private         Reduce 200

-protected       Reduce 200

-public          Reduce 200

-short           Reduce 200

-static          Reduce 200

-strictfp        Reduce 200

-synchronized    Reduce 200

-transient       Reduce 200

-void            Reduce 200

-volatile        Reduce 200

-aspect          Reduce 200

-pointcut        Reduce 200

-around          Reduce 200

-before          Reduce 200

-after           Reduce 200

-declare         Reduce 200

-privileged      Reduce 200

-LESS            Reduce 200

-LBRACE          Reduce 200

-RBRACE          Reduce 200

-SEMICOLON       Reduce 200

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2107

-

-

-AT              Reduce 200

-AT308           Reduce 200

-

-Default reduction to rule  200

-

-

-STATE 1237 ---------------------------------------------------------------------

-( 579 )

-

-

-AspectBodyDeclaration ::= AroundDeclaration . (224)

-AspectBodyDeclaration ::= BasicAdviceDeclaration . (225)

-AspectBodyDeclaration ::= InterTypeMethodDeclaration . (243)

-AspectBodyDeclaration ::= InterTypeConstructorDeclaration . (244)

-AspectBodyDeclaration ::= InterTypeFieldDeclaration . (245)

-InterTypeMethodDeclaration ::= AbstractInterTypeMethodDeclaration . (246)

-AspectBodyDeclaration ::= DeclareDeclaration . (272)

-

-Identifier      Reduce 196

-abstract        Reduce 196

-boolean         Reduce 196

-byte            Reduce 196

-char            Reduce 196

-class           Reduce 196

-double          Reduce 196

-enum            Reduce 196

-final           Reduce 196

-float           Reduce 196

-int             Reduce 196

-interface       Reduce 196

-long            Reduce 196

-native          Reduce 196

-private         Reduce 196

-protected       Reduce 196

-public          Reduce 196

-short           Reduce 196

-static          Reduce 196

-strictfp        Reduce 196

-synchronized    Reduce 196

-transient       Reduce 196

-void            Reduce 196

-volatile        Reduce 196

-aspect          Reduce 196

-pointcut        Reduce 196

-around          Reduce 196

-before          Reduce 196

-after           Reduce 196

-declare         Reduce 196

-privileged      Reduce 196

-LESS            Reduce 196

-LBRACE          Reduce 196

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2108

-

-

-RBRACE          Reduce 196

-SEMICOLON       Reduce 196

-AT              Reduce 196

-AT308           Reduce 196

-

-Default reduction to rule  196

-

-

-STATE 1238 ---------------------------------------------------------------------

-( 596 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 582

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2109

-

-

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1239 ---------------------------------------------------------------------

-( 596 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-

-Default reduction to rule  899

-

-

-STATE 1240 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2110

-

-

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 597

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1241 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2111

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 596

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1242 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 595

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2112

-

-

-

-Default reduction to rule  899

-

-

-STATE 1243 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 594

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1244 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2113

-

-

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 587

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1245 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2114

-

-

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 586

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1246 ---------------------------------------------------------------------

-( 596 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 581

-COLON_COLON             Reduce 581

-

-Default reduction to rule  899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2115

-

-

-

-

-STATE 1247 ---------------------------------------------------------------------

-( 632 )

-

-

-Type ::= ReferenceType . (40)

-ReferenceType ::= ArrayType . (54)

-

-Identifier    Reduce 411

-aspect        Reduce 411

-pointcut      Reduce 411

-around        Reduce 411

-before        Reduce 411

-after         Reduce 411

-declare       Reduce 411

-privileged    Reduce 411

-OR            Reduce 411

-

-Default reduction to rule  411

-

-

-STATE 1248 ---------------------------------------------------------------------

-( 649 943 )

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-LESS      Reduce 241

-LPAREN    Reduce 38

-DOT       Reduce 241

-

-Default reduction to rule  241

-

-

-STATE 1249 ---------------------------------------------------------------------

-( 649 943 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= around . (77)

-

-LESS    Reduce 241

-DOT     Reduce 241

-

-Default reduction to rule  241

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2116

-

-

-

-

-STATE 1250 ---------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-Identifier              Reduce 485

-abstract                Reduce 485

-assert                  Reduce 485

-boolean                 Reduce 485

-break                   Reduce 485

-byte                    Reduce 485

-case                    Reduce 485

-char                    Reduce 485

-class                   Reduce 485

-continue                Reduce 485

-default                 Reduce 485

-do                      Reduce 485

-double                  Reduce 485

-else                    Reduce 492

-enum                    Reduce 485

-false                   Reduce 485

-final                   Reduce 485

-float                   Reduce 485

-for                     Reduce 485

-if                      Reduce 485

-int                     Reduce 485

-interface               Reduce 485

-long                    Reduce 485

-native                  Reduce 485

-new                     Reduce 485

-null                    Reduce 485

-private                 Reduce 485

-protected               Reduce 485

-public                  Reduce 485

-return                  Reduce 485

-short                   Reduce 485

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2117

-

-

-static                  Reduce 485

-strictfp                Reduce 485

-super                   Reduce 485

-switch                  Reduce 485

-synchronized            Reduce 485

-this                    Reduce 485

-throw                   Reduce 485

-transient               Reduce 485

-true                    Reduce 485

-try                     Reduce 485

-void                    Reduce 485

-volatile                Reduce 485

-while                   Reduce 485

-aspect                  Reduce 485

-pointcut                Reduce 485

-around                  Reduce 485

-before                  Reduce 485

-after                   Reduce 485

-declare                 Reduce 485

-privileged              Reduce 485

-IntegerLiteral          Reduce 485

-LongLiteral             Reduce 485

-FloatingPointLiteral    Reduce 485

-DoubleLiteral           Reduce 485

-CharacterLiteral        Reduce 485

-StringLiteral           Reduce 485

-PLUS_PLUS               Reduce 485

-MINUS_MINUS             Reduce 485

-LESS                    Reduce 485

-LPAREN                  Reduce 485

-LBRACE                  Reduce 485

-RBRACE                  Reduce 485

-SEMICOLON               Reduce 485

-AT                      Reduce 485

-BeginLambda             Reduce 485

-AT308                   Reduce 485

-$eof                    Reduce 485

-

-Default reduction to rule  485

-

-

-STATE 1251 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2118

-

-

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2119

-

-

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1252 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2120

-

-

-DOT                             Reduce 581

-AT                              Reduce 685

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1253 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 597

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2121

-

-

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1254 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2122

-

-

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1255 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2123

-

-

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1256 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2124

-

-

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1257 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2125

-

-

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1258 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2126

-

-

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1259 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2127

-

-

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1260 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2128

-

-

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1261 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2129

-

-

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2130

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1262 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2131

-

-

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1263 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2132

-

-

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1264 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2133

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1265 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2134

-

-

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1266 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2135

-

-

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1267 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2136

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1268 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2137

-

-

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1269 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2138

-

-

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1270 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2139

-

-

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1271 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2140

-

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 581

-AT                              Reduce 735

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1272 ---------------------------------------------------------------------

-( 770 949 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2141

-

-

-

-ClassType ::= ClassOrInterfaceType . (66)

-

-abstract        Reduce 415

-final           Reduce 415

-native          Reduce 415

-private         Reduce 415

-protected       Reduce 415

-public          Reduce 415

-static          Reduce 415

-strictfp        Reduce 415

-synchronized    Reduce 415

-transient       Reduce 415

-volatile        Reduce 415

-LBRACE          Reduce 415

-SEMICOLON       Reduce 415

-COLON           Reduce 415

-COMMA           Reduce 415

-AT              Reduce 415

-$eof            Reduce 415

-

-Default reduction to rule  415

-

-

-STATE 1273 ---------------------------------------------------------------------

-( 869 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-extends       Reduce 36

-implements    Reduce 36

-LESS          Reduce 36

-LBRACE        Reduce 36

-DOT           Reduce 241

-

-Default reduction to rule  36

-

-

-STATE 1274 ---------------------------------------------------------------------

-( 869 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2142

-

-

-JavaIdentifier ::= Identifier . (35)

-

-extends       Reduce 35

-implements    Reduce 35

-LESS          Reduce 35

-LBRACE        Reduce 35

-DOT           Reduce 241

-

-Default reduction to rule  35

-

-

-STATE 1275 ---------------------------------------------------------------------

-( 924 1032 )

-

-

-StatementExpressionList ::= StatementExpression . (547)

-

-RPAREN    Reduce 784

-COMMA     Reduce 547

-

-Default reduction to rule  784

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2143

-

-Length of base Action Table: 18573

-Number of entries in base Action Table: 15123

-Percentage of increase: 22.8%

-Storage required for base Tables: 37146 Bytes, 37K

-Storage required for Rules: 2988 Bytes

-Number of unique terminal states: 920

-Number of Shift actions saved by merging: 5177

-Number of Reduce actions saved by merging: 3029

-Number of Reduce saved by default: 12014

-Length of Terminal Check Table: 10551

-Length of Terminal Action Table: 10460

-Number of entries in Terminal Action Table: 8783

-Percentage of increase: 19.0%

-Storage required for Terminal Tables: 31471 Bytes, 31K

-Total storage required for Tables: 68617 Bytes, 68K

-

-

-Actions in Compressed Tables:

-     Number of Shifts: 2885

-     Number of Shift/Reduces: 920

-     Number of Gotos: 10870

-     Number of Goto/Reduces: 2978

-     Number of Reduces: 4058

-     Number of Defaults: 596

-

-Error maps storage:

-    Storage required for ACTION_SYMBOLS_BASE map: 2550 Bytes

-    Storage required for ACTION_SYMBOLS_RANGE map: 2259 Bytes

-    Storage required for NACTION_SYMBOLS_BASE map: 2550 Bytes

-    Storage required for NACTION_SYMBOLS_RANGE map: 1606 Bytes

-    Storage required for TERMINAL_INDEX map: 250 Bytes

-    Storage required for NON_TERMINAL_INDEX map: 848 Bytes

-    Storage required for STRING_BUFFER map: 16986 Bytes

-

-***Warning: Base Check vector contains value > 127. 16-bit words used.

-Escaped symbol $eof is an invalid C variable.

-

-Escaped symbol $error is an invalid C variable.

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2144

-

-

-Mapping of new state numbers into original numbers:

-

-  997  ==>>      7

- 1036  ==>>     24

- 1045  ==>>    250

- 1046  ==>>      1

- 1059  ==>>    966

- 1061  ==>>     20

- 1062  ==>>    586

- 1063  ==>>     31

- 1065  ==>>     22

- 1066  ==>>     34

- 1074  ==>>     29

- 1075  ==>>    446

- 1092  ==>>     55

- 1094  ==>>      2

- 1095  ==>>     90

- 1121  ==>>    638

- 1129  ==>>    908

- 1130  ==>>    661

- 1131  ==>>     23

- 1133  ==>>    245

- 1142  ==>>    209

- 1150  ==>>    248

- 1153  ==>>      8

- 1192  ==>>    577

- 1194  ==>>     37

- 1196  ==>>     42

- 1197  ==>>     44

- 1202  ==>>    807

- 1217  ==>>     45

- 1219  ==>>    474

- 1222  ==>>    449

- 1248  ==>>    255

- 1250  ==>>    789

- 1277  ==>>    101

- 1279  ==>>      5

- 1280  ==>>     27

- 1290  ==>>    820

- 1291  ==>>     47

- 1295  ==>>     50

- 1300  ==>>     51

- 1309  ==>>     32

- 1310  ==>>    223

- 1319  ==>>     52

- 1322  ==>>    278

- 1362  ==>>     21

- 1366  ==>>     53

- 1370  ==>>    226

- 1371  ==>>    784

- 1390  ==>>     56

- 1396  ==>>     84

- 1398  ==>>      3

- 1407  ==>>    211

- 1408  ==>>     61

- 1423  ==>>    130

- 1424  ==>>    406

- 1426  ==>>     16

- 1470  ==>>    456

- 1474  ==>>    227

- 1475  ==>>    459

- 1488  ==>>    205

- 1490  ==>>     57

- 1494  ==>>    213

- 1495  ==>>    909

- 1504  ==>>      6

- 1554  ==>>     35

- 1557  ==>>    640

- 1567  ==>>    337

- 1571  ==>>    547

- 1572  ==>>    680

- 1584  ==>>    973

- 1585  ==>>    273

- 1629  ==>>    666

- 1633  ==>>    228

- 1641  ==>>    773

- 1649  ==>>    477

- 1654  ==>>     30

- 1682  ==>>     48

- 1709  ==>>    303

- 1730  ==>>     88

- 1731  ==>>    129

- 1734  ==>>    651

- 1743  ==>>    322

- 1794  ==>>    687

- 1795  ==>>    432

- 1843  ==>>    341

- 1851  ==>>    895

- 1864  ==>>    408

- 1872  ==>>     64

- 1892  ==>>    879

- 1893  ==>>    116

- 1919  ==>>    219

- 1920  ==>>    225

- 1921  ==>>    336

- 1922  ==>>    587

- 1928  ==>>    149

- 1937  ==>>     58

- 1948  ==>>     86

- 1951  ==>>    323

- 1996  ==>>     33

- 2004  ==>>    224

- 2005  ==>>    969

- 2044  ==>>     39

- 2045  ==>>    221

- 2046  ==>>    117

- 2054  ==>>     36

- 2061  ==>>     49

- 2063  ==>>    212

- 2069  ==>>    970

- 2070  ==>>    905

- 2074  ==>>    285

- 2100  ==>>     59

- 2102  ==>>     38

- 2129  ==>>    698

- 2131  ==>>    258

- 2146  ==>>    247

- 2147  ==>>    230

- 2148  ==>>     79

- 2150  ==>>    180

- 2166  ==>>    656

- 2167  ==>>    127

- 2168  ==>>    135

- 2169  ==>>   1005

- 2212  ==>>     62

- 2233  ==>>     63

- 2235  ==>>    232

- 2237  ==>>   1015

- 2247  ==>>    128

- 2294  ==>>    125

- 2295  ==>>   1008

- 2299  ==>>     65

- 2301  ==>>    261

- 2310  ==>>    689

- 2314  ==>>    949

- 2325  ==>>    122

- 2328  ==>>    356

- 2330  ==>>    470

- 2333  ==>>     93

- 2399  ==>>    798

- 2401  ==>>    662

- 2402  ==>>     98

- 2430  ==>>    641

- 2458  ==>>     66

- 2460  ==>>    231

- 2461  ==>>    527

- 2466  ==>>    229

- 2467  ==>>    186

- 2468  ==>>    458

- 2469  ==>>     26

- 2478  ==>>    880

- 2489  ==>>    174

- 2553  ==>>    123

- 2554  ==>>     94

- 2555  ==>>    732

- 2566  ==>>    357

- 2584  ==>>    215

- 2586  ==>>     95

- 2587  ==>>    202

- 2613  ==>>    410

- 2621  ==>>    899

- 2622  ==>>    103

- 2623  ==>>    104

- 2625  ==>>     87

- 2636  ==>>     67

- 2638  ==>>    647

- 2639  ==>>    646

- 2640  ==>>    152

- 2641  ==>>     68

- 2645  ==>>   1007

- 2686  ==>>    153

- 2707  ==>>    678

- 2710  ==>>    743

- 2713  ==>>    253

- 2722  ==>>    473

- 2769  ==>>    293

- 2778  ==>>    259

- 2784  ==>>    637

- 2785  ==>>    177

- 2786  ==>>     69

- 2796  ==>>   1025

- 2801  ==>>    724

- 2840  ==>>    132

- 2841  ==>>    185

- 2842  ==>>    187

- 2844  ==>>    330

- 2849  ==>>    182

- 2857  ==>>    244

- 2862  ==>>    195

- 2866  ==>>    770

- 2876  ==>>    476

- 2882  ==>>    350

- 2891  ==>>    696

- 2893  ==>>     70

- 2898  ==>>    158

- 2928  ==>>    901

- 2931  ==>>    842

- 2979  ==>>    348

- 2985  ==>>    159

- 2987  ==>>     72

- 2990  ==>>    346

- 2991  ==>>    764

- 2996  ==>>    190

- 2997  ==>>    332

- 3006  ==>>    431

- 3009  ==>>    335

- 3012  ==>>    345

- 3016  ==>>    355

- 3025  ==>>    937

- 3061  ==>>    923

- 3100  ==>>    353

- 3101  ==>>    492

- 3102  ==>>    420

- 3103  ==>>    683

- 3109  ==>>    756

- 3121  ==>>    688

- 3122  ==>>    550

- 3126  ==>>    684

- 3127  ==>>    648

- 3138  ==>>    664

- 3143  ==>>    445

- 3155  ==>>    589

- 3158  ==>>    694

- 3185  ==>>    461

- 3186  ==>>     73

- 3187  ==>>     74

- 3188  ==>>     75

- 3191  ==>>   1011

- 3230  ==>>    479

- 3231  ==>>    498

- 3232  ==>>     80

- 3233  ==>>    763

- 3239  ==>>    354

- 3245  ==>>    436

- 3246  ==>>    520

- 3251  ==>>    745

- 3254  ==>>     77

- 3255  ==>>    407

- 3256  ==>>    685

- 3257  ==>>    418

- 3267  ==>>    731

- 3269  ==>>    421

- 3272  ==>>    412

- 3281  ==>>    594

- 3282  ==>>    710

- 3285  ==>>    762

- 3288  ==>>     78

- 3289  ==>>    265

- 3316  ==>>    728

- 3317  ==>>    759

- 3321  ==>>   1012

- 3360  ==>>    633

- 3361  ==>>    422

- 3364  ==>>    423

- 3369  ==>>    757

- 3386  ==>>    761

- 3387  ==>>     19

- 3402  ==>>    494

- 3445  ==>>    892

- 3446  ==>>    850

- 3447  ==>>    772

- 3451  ==>>   1033

- 3490  ==>>    546

- 3492  ==>>    136

- 3493  ==>>    736

- 3494  ==>>    818

- 3495  ==>>    865

- 3511  ==>>    742

- 3514  ==>>    902

- 3515  ==>>     81

- 3516  ==>>    765

- 3517  ==>>    744

- 3527  ==>>    867

- 3534  ==>>    792

- 3537  ==>>    670

- 3546  ==>>      4

- 3548  ==>>    814

- 3549  ==>>    268

- 3576  ==>>   1014

- 3577  ==>>    830

- 3578  ==>>    859

- 3579  ==>>    852

- 3581  ==>>   1036

- 3621  ==>>    749

- 3622  ==>>     82

- 3625  ==>>    851

- 3629  ==>>    881

- 3637  ==>>    971

- 3641  ==>>    861

- 3642  ==>>    965

- 3662  ==>>    592

- 3671  ==>>    534

- 3672  ==>>    542

- 3705  ==>>     14

- 3748  ==>>     92

- 3750  ==>>     97

- 3752  ==>>    100

- 3753  ==>>    812

- 3755  ==>>    105

- 3762  ==>>    972

- 3766  ==>>    866

- 3768  ==>>    735

- 3769  ==>>   1003

- 3770  ==>>    106

- 3771  ==>>    984

- 3774  ==>>   1024

- 3776  ==>>   1030

- 3785  ==>>    572

- 3793  ==>>    126

- 3798  ==>>    596

- 3838  ==>>    868

- 3839  ==>>    987

- 3854  ==>>    107

- 3857  ==>>    108

- 3859  ==>>    109

- 3867  ==>>    110

- 3884  ==>>    111

- 3886  ==>>    112

- 3891  ==>>    113

- 3898  ==>>    114

- 3899  ==>>    115

- 3900  ==>>    573

- 3913  ==>>     46

- 3952  ==>>   1031

- 3953  ==>>    131

- 3954  ==>>    753

- 3955  ==>>    960

- 3956  ==>>    862

- 3957  ==>>    139

- 3979  ==>>    140

- 3981  ==>>    141

- 3988  ==>>    142

- 3990  ==>>    146

- 3994  ==>>    147

- 3996  ==>>    148

- 3999  ==>>     40

- 4000  ==>>    150

- 4001  ==>>    151

- 4002  ==>>    288

- 4003  ==>>    154

- 4006  ==>>    935

- 4007  ==>>    155

- 4008  ==>>    156

- 4010  ==>>    157

- 4011  ==>>    160

- 4037  ==>>     76

- 4077  ==>>    161

- 4080  ==>>    754

- 4081  ==>>    162

- 4085  ==>>    595

- 4093  ==>>    164

- 4096  ==>>    948

- 4105  ==>>    165

- 4106  ==>>   1034

- 4110  ==>>    166

- 4114  ==>>    167

- 4115  ==>>    168

- 4118  ==>>    169

- 4119  ==>>    170

- 4120  ==>>    171

- 4121  ==>>    172

- 4122  ==>>    175

- 4123  ==>>    183

- 4124  ==>>    593

- 4134  ==>>    196

- 4135  ==>>    198

- 4161  ==>>    275

- 4203  ==>>    200

- 4204  ==>>    201

- 4205  ==>>    207

- 4209  ==>>    208

- 4210  ==>>    210

- 4211  ==>>    214

- 4212  ==>>    791

- 4213  ==>>    234

- 4214  ==>>    794

- 4215  ==>>    236

- 4216  ==>>    939

- 4217  ==>>    237

- 4218  ==>>    238

- 4219  ==>>    239

- 4221  ==>>    246

- 4223  ==>>    256

- 4224  ==>>     85

- 4232  ==>>    257

- 4236  ==>>    579

- 4237  ==>>    270

- 4238  ==>>    252

- 4242  ==>>    271

- 4246  ==>>    274

- 4249  ==>>    774

- 4292  ==>>    989

- 4294  ==>>    281

- 4298  ==>>    282

- 4304  ==>>    266

- 4307  ==>>    283

- 4308  ==>>    289

- 4309  ==>>    292

- 4310  ==>>    295

- 4311  ==>>    296

- 4315  ==>>    299

- 4316  ==>>    301

- 4331  ==>>    333

- 4333  ==>>    343

- 4334  ==>>    344

- 4335  ==>>    347

- 4337  ==>>    349

- 4338  ==>>    411

- 4339  ==>>    414

- 4340  ==>>    416

- 4342  ==>>    417

- 4343  ==>>    181

- 4355  ==>>    419

- 4356  ==>>    425

- 4366  ==>>    426

- 4376  ==>>    427

- 4377  ==>>    429

- 4379  ==>>    437

- 4380  ==>>    438

- 4383  ==>>    439

- 4384  ==>>    440

- 4389  ==>>    441

- 4391  ==>>    442

- 4392  ==>>    448

- 4396  ==>>    454

- 4397  ==>>    455

- 4398  ==>>    251

- 4448  ==>>    457

- 4449  ==>>    460

- 4450  ==>>    462

- 4452  ==>>    464

- 4453  ==>>    465

- 4457  ==>>    467

- 4458  ==>>    468

- 4461  ==>>    471

- 4465  ==>>    475

- 4468  ==>>    480

- 4469  ==>>    481

- 4470  ==>>    482

- 4471  ==>>    483

- 4472  ==>>    485

- 4479  ==>>    486

- 4494  ==>>    487

- 4496  ==>>    317

- 4541  ==>>    489

- 4551  ==>>    490

- 4557  ==>>    725

- 4596  ==>>    787

- 4597  ==>>    466

- 4598  ==>>    491

- 4599  ==>>    488

- 4600  ==>>    493

- 4601  ==>>    496

- 4605  ==>>    497

- 4610  ==>>    500

- 4611  ==>>    501

- 4613  ==>>    993

- 4622  ==>>    502

- 4623  ==>>    503

- 4624  ==>>    505

- 4627  ==>>    507

- 4628  ==>>    509

- 4629  ==>>    510

- 4630  ==>>    511

- 4632  ==>>    514

- 4633  ==>>    515

- 4634  ==>>    517

- 4635  ==>>    518

- 4638  ==>>    519

- 4639  ==>>    523

- 4640  ==>>    524

- 4641  ==>>    525

- 4642  ==>>    529

- 4643  ==>>    530

- 4645  ==>>    532

- 4652  ==>>    533

- 4654  ==>>    535

- 4655  ==>>    537

- 4681  ==>>    919

- 4720  ==>>    551

- 4721  ==>>    539

- 4723  ==>>    540

- 4724  ==>>    541

- 4725  ==>>    543

- 4729  ==>>    884

- 4737  ==>>    548

- 4741  ==>>    553

- 4742  ==>>    554

- 4746  ==>>    555

- 4747  ==>>    556

- 4748  ==>>    557

- 4749  ==>>    558

- 4750  ==>>    559

- 4751  ==>>    560

- 4752  ==>>    561

- 4753  ==>>    562

- 4754  ==>>    563

- 4756  ==>>    564

- 4757  ==>>    565

- 4758  ==>>    566

- 4759  ==>>    567

- 4762  ==>>    568

- 4763  ==>>    569

- 4764  ==>>    570

- 4765  ==>>    571

- 4766  ==>>    574

- 4767  ==>>    575

- 4768  ==>>     99

- 4778  ==>>    576

- 4805  ==>>   1013

- 4847  ==>>    578

- 4848  ==>>    581

- 4849  ==>>    582

- 4853  ==>>    947

- 4861  ==>>    584

- 4865  ==>>    585

- 4867  ==>>    588

- 4868  ==>>    597

- 4869  ==>>    598

- 4870  ==>>    599

- 4871  ==>>    600

- 4873  ==>>    601

- 4874  ==>>    602

- 4876  ==>>    603

- 4877  ==>>    604

- 4878  ==>>    605

- 4880  ==>>    758

- 4881  ==>>    606

- 4883  ==>>    607

- 4886  ==>>    608

- 4887  ==>>    609

- 4888  ==>>    610

- 4889  ==>>    992

- 4897  ==>>    611

- 4902  ==>>    788

- 4903  ==>>    612

- 4929  ==>>    613

- 4937  ==>>    614

- 4939  ==>>    267

- 4941  ==>>    615

- 4942  ==>>    616

- 4944  ==>>    617

- 4945  ==>>    618

- 4946  ==>>    619

- 4951  ==>>    620

- 4952  ==>>    621

- 4958  ==>>    622

- 4959  ==>>    623

- 4960  ==>>    624

- 4975  ==>>    220

- 4984  ==>>    625

- 4989  ==>>    233

- 4998  ==>>    626

- 4999  ==>>    627

- 5009  ==>>    628

- 5010  ==>>    629

- 5011  ==>>    302

- 5012  ==>>    630

- 5015  ==>>    631

- 5017  ==>>     17

- 5019  ==>>    636

- 5022  ==>>    643

- 5023  ==>>     11

- 5024  ==>>    650

- 5027  ==>>    652

- 5028  ==>>    654

- 5032  ==>>    655

- 5033  ==>>    657

- 5037  ==>>    663

- 5045  ==>>    695

- 5046  ==>>    665

- 5047  ==>>    669

- 5051  ==>>    671

- 5053  ==>>    672

- 5057  ==>>    673

- 5059  ==>>    137

- 5063  ==>>    675

- 5065  ==>>    676

- 5066  ==>>    692

- 5079  ==>>    693

- 5081  ==>>    699

- 5082  ==>>    701

- 5083  ==>>    747

- 5088  ==>>    703

- 5089  ==>>    705

- 5091  ==>>    708

- 5094  ==>>    713

- 5095  ==>>    714

- 5096  ==>>    715

- 5097  ==>>    717

- 5108  ==>>    719

- 5115  ==>>    720

- 5116  ==>>    721

- 5137  ==>>    722

- 5138  ==>>    723

- 5139  ==>>    733

- 5140  ==>>    738

- 5146  ==>>    739

- 5147  ==>>    740

- 5148  ==>>    649

- 5149  ==>>    755

- 5150  ==>>    768

- 5152  ==>>    769

- 5153  ==>>    771

- 5154  ==>>    775

- 5155  ==>>    781

- 5156  ==>>    776

- 5160  ==>>    144

- 5167  ==>>    777

- 5169  ==>>    780

- 5170  ==>>    782

- 5171  ==>>    783

- 5172  ==>>    785

- 5174  ==>>    786

- 5176  ==>>    790

- 5177  ==>>    934

- 5179  ==>>    793

- 5180  ==>>    795

- 5182  ==>>    796

- 5183  ==>>    797

- 5185  ==>>    799

- 5203  ==>>    800

- 5224  ==>>    808

- 5225  ==>>    809

- 5226  ==>>     18

- 5227  ==>>    443

- 5236  ==>>    810

- 5237  ==>>    813

- 5242  ==>>    816

- 5243  ==>>    819

- 5244  ==>>    822

- 5247  ==>>    824

- 5249  ==>>    825

- 5250  ==>>    506

- 5251  ==>>    826

- 5274  ==>>    280

- 5275  ==>>    828

- 5282  ==>>    817

- 5290  ==>>    829

- 5295  ==>>    831

- 5302  ==>>    835

- 5303  ==>>    837

- 5304  ==>>    838

- 5306  ==>>    839

- 5322  ==>>    840

- 5323  ==>>    841

- 5324  ==>>    843

- 5325  ==>>    844

- 5327  ==>>    845

- 5328  ==>>    846

- 5330  ==>>    121

- 5340  ==>>    847

- 5345  ==>>    853

- 5346  ==>>    508

- 5347  ==>>    857

- 5349  ==>>    874

- 5359  ==>>    876

- 5361  ==>>    882

- 5363  ==>>    885

- 5365  ==>>    889

- 5366  ==>>    890

- 5367  ==>>    893

- 5368  ==>>    894

- 5369  ==>>    452

- 5373  ==>>    903

- 5374  ==>>    904

- 5378  ==>>    906

- 5379  ==>>    907

- 5381  ==>>    910

- 5382  ==>>    912

- 5383  ==>>    913

- 5384  ==>>    914

- 5385  ==>>    915

- 5392  ==>>    916

- 5394  ==>>    917

- 5396  ==>>    918

- 5397  ==>>    925

- 5398  ==>>    928

- 5399  ==>>    929

- 5400  ==>>    930

- 5411  ==>>    931

- 5425  ==>>    932

- 5427  ==>>    940

- 5428  ==>>    941

- 5429  ==>>    942

- 5433  ==>>    946

- 5435  ==>>    952

- 5437  ==>>    955

- 5438  ==>>    956

- 5440  ==>>    957

- 5441  ==>>    961

- 5443  ==>>    962

- 5444  ==>>    963

- 5445  ==>>    964

- 5446  ==>>    967

- 5447  ==>>     89

- 5456  ==>>    974

- 5457  ==>>    976

- 5458  ==>>    977

- 5460  ==>>    978

- 5468  ==>>    979

- 5469  ==>>    980

- 5483  ==>>    199

- 5530  ==>>    981

- 5531  ==>>    982

- 5532  ==>>    983

- 5533  ==>>    985

- 5539  ==>>    318

- 5584  ==>>    986

- 5586  ==>>    991

- 5587  ==>>    994

- 5589  ==>>    284

- 5629  ==>>     91

- 5637  ==>>    995

- 5638  ==>>    996

- 5639  ==>>    997

- 5645  ==>>     12

- 5661  ==>>    999

- 5662  ==>>   1000

- 5663  ==>>   1006

- 5664  ==>>   1009

- 5665  ==>>   1016

- 5666  ==>>   1017

- 5667  ==>>   1018

- 5669  ==>>    815

- 5670  ==>>   1019

- 5671  ==>>   1020

- 5672  ==>>    951

- 5680  ==>>   1021

- 5684  ==>>   1022

- 5685  ==>>   1026

- 5691  ==>>   1027

- 5692  ==>>   1029

- 5693  ==>>    528

- 5694  ==>>   1035

- 5701  ==>>   1037

- 5704  ==>>   1038

- 5709  ==>>   1039

- 5711  ==>>   1040

- 5713  ==>>   1041

- 5714  ==>>   1042

- 5717  ==>>   1043

- 5718  ==>>   1044

- 5720  ==>>   1045

- 5721  ==>>   1046

- 5723  ==>>   1047

- 5724  ==>>   1048

- 5725  ==>>   1049

- 5741  ==>>   1050

- 5742  ==>>   1051

- 5743  ==>>   1052

- 5744  ==>>   1053

- 5745  ==>>   1054

- 5746  ==>>   1055

- 5747  ==>>   1056

- 5748  ==>>   1057

- 5749  ==>>   1058

- 5750  ==>>   1059

- 5751  ==>>     28

- 5767  ==>>   1060

- 5768  ==>>   1061

- 5775  ==>>   1062

- 5777  ==>>   1063

- 5778  ==>>    869

- 5781  ==>>    536

- 5782  ==>>   1064

- 5783  ==>>    538

- 5784  ==>>   1065

- 5785  ==>>   1066

- 5789  ==>>    544

- 5794  ==>>   1067

- 5797  ==>>   1068

- 5800  ==>>   1069

- 5808  ==>>   1070

- 5809  ==>>   1071

- 5810  ==>>   1072

- 5811  ==>>   1073

- 5812  ==>>   1074

- 5813  ==>>   1075

- 5816  ==>>   1076

- 5817  ==>>   1077

- 5819  ==>>   1078

- 5820  ==>>   1079

- 5823  ==>>   1080

- 5824  ==>>   1081

- 5826  ==>>   1082

- 5827  ==>>   1083

- 5829  ==>>   1084

- 5832  ==>>   1085

- 5833  ==>>   1086

- 5834  ==>>   1087

- 5835  ==>>   1088

- 5837  ==>>   1089

- 5838  ==>>   1090

- 5839  ==>>   1091

- 5840  ==>>   1092

- 5842  ==>>    804

- 5889  ==>>   1093

- 5891  ==>>   1094

- 5892  ==>>   1095

- 5898  ==>>    875

- 5938  ==>>   1096

- 5939  ==>>   1097

- 5940  ==>>   1098

- 5941  ==>>   1099

- 5942  ==>>   1100

- 5943  ==>>   1101

- 5944  ==>>   1102

- 5945  ==>>   1103

- 5946  ==>>   1104

- 5948  ==>>   1105

- 5954  ==>>    375

- 5999  ==>>   1106

- 6001  ==>>   1107

- 6004  ==>>   1108

- 6020  ==>>   1109

- 6021  ==>>   1110

- 6022  ==>>   1111

- 6024  ==>>   1112

- 6025  ==>>   1113

- 6026  ==>>   1114

- 6028  ==>>    173

- 6037  ==>>    545

- 6038  ==>>   1115

- 6043  ==>>    943

- 6044  ==>>   1116

- 6045  ==>>   1117

- 6050  ==>>    580

- 6051  ==>>   1118

- 6054  ==>>   1119

- 6055  ==>>   1120

- 6056  ==>>   1121

- 6057  ==>>   1122

- 6058  ==>>   1123

- 6076  ==>>   1124

- 6077  ==>>   1125

- 6078  ==>>   1126

- 6079  ==>>   1127

- 6080  ==>>   1128

- 6081  ==>>   1129

- 6082  ==>>   1130

- 6086  ==>>   1131

- 6091  ==>>   1132

- 6093  ==>>   1133

- 6094  ==>>   1134

- 6095  ==>>   1135

- 6096  ==>>   1136

- 6098  ==>>   1137

- 6102  ==>>   1138

- 6106  ==>>    877

- 6146  ==>>   1139

- 6147  ==>>   1140

- 6148  ==>>   1141

- 6149  ==>>   1142

- 6150  ==>>   1143

- 6151  ==>>   1144

- 6152  ==>>   1145

- 6154  ==>>   1146

- 6155  ==>>   1147

- 6156  ==>>   1148

- 6162  ==>>    329

- 6209  ==>>   1149

- 6212  ==>>   1150

- 6213  ==>>   1151

- 6214  ==>>   1152

- 6215  ==>>   1153

- 6216  ==>>   1154

- 6217  ==>>   1155

- 6221  ==>>   1156

- 6222  ==>>   1157

- 6223  ==>>   1158

- 6225  ==>>   1159

- 6229  ==>>   1160

- 6232  ==>>   1161

- 6233  ==>>   1162

- 6234  ==>>   1163

- 6235  ==>>    691

- 6244  ==>>   1164

- 6245  ==>>    590

- 6250  ==>>    730

- 6251  ==>>   1165

- 6253  ==>>    734

- 6256  ==>>   1166

- 6257  ==>>    801

- 6258  ==>>   1167

- 6261  ==>>   1168

- 6264  ==>>   1169

- 6268  ==>>   1170

- 6284  ==>>   1171

- 6293  ==>>   1172

- 6299  ==>>   1173

- 6301  ==>>   1174

- 6303  ==>>   1175

- 6305  ==>>   1176

- 6311  ==>>   1177

- 6314  ==>>    920

- 6353  ==>>   1178

- 6354  ==>>   1179

- 6355  ==>>   1180

- 6356  ==>>   1181

- 6357  ==>>   1182

- 6358  ==>>   1183

- 6361  ==>>    886

- 6362  ==>>   1184

- 6363  ==>>   1185

- 6372  ==>>   1186

- 6378  ==>>   1187

- 6379  ==>>   1188

- 6382  ==>>   1189

- 6383  ==>>   1190

- 6384  ==>>   1191

- 6388  ==>>   1192

- 6390  ==>>   1193

- 6391  ==>>   1194

- 6392  ==>>   1195

- 6393  ==>>   1196

- 6394  ==>>    163

- 6403  ==>>   1197

- 6404  ==>>   1198

- 6405  ==>>   1199

- 6406  ==>>   1200

- 6407  ==>>   1201

- 6409  ==>>   1202

- 6411  ==>>    269

- 6461  ==>>   1203

- 6462  ==>>   1204

- 6463  ==>>   1205

- 6464  ==>>   1206

- 6465  ==>>   1207

- 6466  ==>>   1208

- 6474  ==>>   1209

- 6478  ==>>   1210

- 6481  ==>>   1211

- 6482  ==>>   1212

- 6483  ==>>   1213

- 6484  ==>>   1214

- 6485  ==>>   1215

- 6486  ==>>   1216

- 6487  ==>>   1217

- 6488  ==>>   1218

- 6489  ==>>   1219

- 6490  ==>>   1220

- 6491  ==>>   1221

- 6493  ==>>     96

- 6501  ==>>   1222

- 6502  ==>>   1223

- 6503  ==>>   1224

- 6504  ==>>   1225

- 6505  ==>>   1226

- 6507  ==>>   1227

- 6509  ==>>    242

- 6553  ==>>   1228

- 6554  ==>>   1229

- 6555  ==>>   1230

- 6556  ==>>    635

- 6564  ==>>   1231

- 6565  ==>>   1232

- 6566  ==>>   1233

- 6567  ==>>   1234

- 6568  ==>>   1235

- 6573  ==>>   1236

- 6575  ==>>   1237

- 6576  ==>>   1238

- 6577  ==>>   1239

- 6578  ==>>   1240

- 6579  ==>>   1241

- 6580  ==>>   1242

- 6581  ==>>   1243

- 6582  ==>>    272

- 6629  ==>>   1244

- 6635  ==>>   1245

- 6636  ==>>   1246

- 6637  ==>>   1247

- 6641  ==>>   1248

- 6642  ==>>   1249

- 6649  ==>>   1250

- 6652  ==>>   1251

- 6653  ==>>   1252

- 6655  ==>>    644

- 6663  ==>>    203

- 6671  ==>>   1253

- 6672  ==>>   1254

- 6673  ==>>   1255

- 6674  ==>>   1256

- 6675  ==>>   1257

- 6676  ==>>   1258

- 6678  ==>>   1259

- 6680  ==>>    512

- 6727  ==>>   1260

- 6730  ==>>   1261

- 6734  ==>>   1262

- 6735  ==>>   1263

- 6743  ==>>   1264

- 6747  ==>>   1265

- 6750  ==>>   1266

- 6751  ==>>   1267

- 6752  ==>>   1268

- 6754  ==>>    938

- 6762  ==>>   1269

- 6763  ==>>   1270

- 6764  ==>>   1271

- 6765  ==>>   1272

- 6766  ==>>   1273

- 6767  ==>>   1274

- 6769  ==>>   1275

- 6778  ==>>    513

- 6853  ==>>    240

- 6876  ==>>    634

- 6957  ==>>    304

- 6974  ==>>    639

- 7046  ==>>    204

- 7056  ==>>    495

- 7072  ==>>    645

- 7142  ==>>    702

- 7240  ==>>    319

- 7287  ==>>    704

- 7359  ==>>    447

- 7368  ==>>    522

- 7385  ==>>    707

- 7458  ==>>    526

- 7483  ==>>    709

- 7557  ==>>    549

- 7581  ==>>    712

- 7656  ==>>    583

- 7679  ==>>    716

- 7760  ==>>    591

- 7777  ==>>    718

- 7849  ==>>    653

- 7875  ==>>    737

- 7948  ==>>    848

- 7956  ==>>    860

- 7973  ==>>    741

- 8055  ==>>    499

- 8071  ==>>    752

- 8141  ==>>    821

- 8239  ==>>    320

- 8286  ==>>    823

- 8358  ==>>    926

- 8367  ==>>    287

- 8384  ==>>    827

- 8463  ==>>    435

- 8465  ==>>    750

- 8482  ==>>    832

- 8561  ==>>    658

- 8563  ==>>    872

- 8580  ==>>    833

- 8678  ==>>    834

- 8776  ==>>    836

- 8848  ==>>    873

- 8874  ==>>    854

- 8946  ==>>    944

- 8955  ==>>    945

- 8972  ==>>    855

- 9042  ==>>    286

- 9070  ==>>    856

- 9168  ==>>    911

- 9266  ==>>    927

- 9336  ==>>    975

- 9434  ==>>    367

- 9481  ==>>   1004

- 9551  ==>>   1023

- 9635  ==>>      9

- 9705  ==>>     43

- 9783  ==>>     54

- 9830  ==>>    102

- 9877  ==>>    751

- 9922  ==>>    887

- 9927  ==>>    888

-10008  ==>>    726

-10078  ==>>    314

-10125  ==>>    415

-10133  ==>>    954

-10137  ==>>    958

-10186  ==>>    968

-10236  ==>>    990

-10293  ==>>   1010

-10363  ==>>     41

-10433  ==>>     71

-10503  ==>>    235

-10582  ==>>    241

-10652  ==>>    249

-10722  ==>>    262

-10792  ==>>    263

-10862  ==>>    264

-10931  ==>>    276

-11010  ==>>    277

-11080  ==>>    279

-11150  ==>>    291

-11220  ==>>    326

-11290  ==>>    382

-11360  ==>>    402

-11430  ==>>    484

-11500  ==>>    516

-11570  ==>>    552

-11646  ==>>    642

-11753  ==>>    311

-11799  ==>>    697

-11869  ==>>    700

-11939  ==>>    706

-12009  ==>>    921

-12079  ==>>    922

-12149  ==>>    778

-12216  ==>>    779

-12283  ==>>    327

-12348  ==>>    383

-12413  ==>>    403

-12478  ==>>    328

-12541  ==>>    380

-12604  ==>>    384

-12667  ==>>    324

-12726  ==>>    381

-12785  ==>>    385

-12844  ==>>    325

-12902  ==>>    378

-12960  ==>>    386

-13005  ==>>    469

-13024  ==>>    863

-13102  ==>>    864

-13110  ==>>    340

-13122  ==>>     10

-13219  ==>>    950

-13285  ==>>     83

-13302  ==>>    290

-13331  ==>>    119

-13417  ==>>    321

-13474  ==>>    379

-13531  ==>>    387

-13576  ==>>    472

-13588  ==>>    953

-13612  ==>>    254

-13680  ==>>    632

-13695  ==>>    682

-13709  ==>>    352

-13790  ==>>    206

-13800  ==>>    404

-13812  ==>>    118

-13909  ==>>    998

-13975  ==>>    478

-13992  ==>>    300

-14071  ==>>    376

-14121  ==>>    388

-14171  ==>>    389

-14216  ==>>    686

-14221  ==>>    368

-14320  ==>>    133

-14335  ==>>    197

-14401  ==>>     15

-14477  ==>>    243

-14572  ==>>    369

-14629  ==>>    176

-14634  ==>>    370

-14707  ==>>    371

-14752  ==>>    391

-14797  ==>>    392

-14842  ==>>    393

-14887  ==>>    924

-14934  ==>>   1032

-14984  ==>>    312

-15031  ==>>    313

-15075  ==>>    372

-15145  ==>>    193

-15148  ==>>    373

-15220  ==>>    374

-15267  ==>>    394

-15311  ==>>    395

-15355  ==>>    396

-15399  ==>>    315

-15442  ==>>    362

-15485  ==>>    363

-15528  ==>>    397

-15571  ==>>    398

-15614  ==>>    297

-15656  ==>>    298

-15698  ==>>    306

-15740  ==>>    307

-15782  ==>>    308

-15824  ==>>    309

-15866  ==>>    310

-15908  ==>>    358

-15950  ==>>    359

-15992  ==>>    360

-16034  ==>>    361

-16076  ==>>    364

-16118  ==>>    365

-16160  ==>>    366

-16202  ==>>    399

-16244  ==>>    400

-16286  ==>>    401

-16328  ==>>    729

-16367  ==>>     13

-16375  ==>>    933

-16462  ==>>    453

-16473  ==>>    433

-16474  ==>>     25

-16571  ==>>    521

-16629  ==>>    463

-16668  ==>>    305

-16780  ==>>    748

-16838  ==>>    216

-16856  ==>>    858

-16922  ==>>    936

-16963  ==>>    988

-17000  ==>>    679

-17004  ==>>   1028

-17096  ==>>    806

-17111  ==>>    660

-17135  ==>>    811

-17179  ==>>    120

-17211  ==>>    138

-17244  ==>>    802

-17253  ==>>    413

-17310  ==>>    531

-17339  ==>>    434

-17408  ==>>    727

-17434  ==>>    124

-17446  ==>>    444

-17461  ==>>    659

-17529  ==>>    803

-17594  ==>>    849

-17595  ==>>    891

-17690  ==>>    959

-17726  ==>>    805

-17764  ==>>    294

-17803  ==>>   1001

-17839  ==>>   1002

-17865  ==>>    338

-17877  ==>>    143

-17966  ==>>    405

-17971  ==>>    179

-17996  ==>>    192

-18074  ==>>    194

-18091  ==>>    767

-18110  ==>>    896

-18184  ==>>    897

-18199  ==>>    451

-18204  ==>>    331

-18223  ==>>    334

-18299  ==>>    339

-18316  ==>>    351

-18333  ==>>    409

-18409  ==>>    424

-18426  ==>>    430

-18443  ==>>    667

-18512  ==>>    134

-18517  ==>>    668

-18532  ==>>    681

-18547  ==>>    871

-18623  ==>>    878

-18652  ==>>    218

-18653  ==>>    900

-18727  ==>>    316

-18742  ==>>    377

-18757  ==>>    390

-18831  ==>>    450

-18846  ==>>     60

-18861  ==>>    677

-18862  ==>>    217

-18876  ==>>    222

-18941  ==>>    504

-18957  ==>>    260

-18971  ==>>    674

-18999  ==>>    898

-19004  ==>>    145

-19021  ==>>    711

-19035  ==>>    746

-19049  ==>>    178

-19068  ==>>    428

-19107  ==>>    184

-19139  ==>>    188

-19163  ==>>    189

-19203  ==>>    191

-19227  ==>>    870

-19231  ==>>    760

-19259  ==>>    766

-19265  ==>>    690

-19293  ==>>    883

-19299  ==>>    342

diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
index aaefec8..d872e59 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
index b4cb759..c60ecb9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
index 0473b7c..718eafb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
index 8b6114c..cdf0b0e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
index 9bcdfff..742c0e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
index 48f7dfa..707d2ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
index 807f061..9af0998 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
index 4b1d7d0..230b96b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
index 080fdca..61a3533 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
index fc98de2..436d2d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
index a4e71ca..9543d18 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
index 9d168fa..252def8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
index 406185d..ec9629a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
index 8240ef5..d1e1b31 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
index 7833854..69a51bd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
index e91f1c7..8dc3eca 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
index 277878a..e370a12 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
index cecf1aa..42e61e5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
index 417b0b0..318e9d5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
index e6ed9d6..468b020 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
index 99c710d..cece702 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
index c20e8ca..4edafbc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
index 8e849ab..140fc7e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
index bfe83b4..3b77cdb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc
new file mode 100644
index 0000000..b3d548c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc
new file mode 100644
index 0000000..0a96c07
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc
new file mode 100644
index 0000000..c8241e8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc
new file mode 100644
index 0000000..f89f581
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc
new file mode 100644
index 0000000..219835e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc
new file mode 100644
index 0000000..dbfb455
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc
new file mode 100644
index 0000000..f89f581
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc
new file mode 100644
index 0000000..6b106b0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc
new file mode 100644
index 0000000..b472657
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc
new file mode 100644
index 0000000..c8241e8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc
new file mode 100644
index 0000000..d88c8d4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc
new file mode 100644
index 0000000..7b6ff8e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc
new file mode 100644
index 0000000..7ad1dc8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc
new file mode 100644
index 0000000..d88c8d4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.class
index 50cfae8..8dfc167 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.class
index cab6dc8..741138e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.class
index 561f2cf..b3c08dc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.class
index 2c7fe4b..0d28914 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
index d07d1ee..d1220d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2000, 2016 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
-#
+# 
 #
 # Contributors:
 #     IBM Corporation - initial API and implementation
@@ -42,12 +42,14 @@
 #							Bug 439516 - [1.8][null] NonNullByDefault wrongly applied to implicit type bound of binary type
 #							Bug 438467 - [compiler][null] Better error position for "The method _ cannot implement the corresponding method _ due to incompatible nullness constraints"
 #							Bug 458361 - [1.8][null] reconciler throws NPE in ProblemReporter.illegalReturnRedefinition()
+#							Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
 #		Jesper S Moller <jesper@selskabet.org> - Contributions for
 #							bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
 #							bug 384567 - [1.5][compiler] Compiler accepts illegal modifiers on package declaration
 #							Bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
 #							Bug 412151 - [1.8][compiler] Check repeating annotation's collection type
 #							Bug 419209 - [1.8] Repeating container annotations should be rejected in the presence of annotation it contains
+#							Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
 ###############################################################################
 0 = {0}
 1 = super cannot be used in java.lang.Object
@@ -665,6 +667,7 @@
 666 = Syntax error, type annotations are illegal here
 667 = Super method references to interface default methods are allowed only at source level 1.8 or above
 668 = References to interface static methods are allowed only at source level 1.8 or above
+669 = Field {0} must be final
 
 ### NULL ANALYSIS FOR OTHER EXPRESSIONS
 670 = Null comparison always yields false: this expression cannot be null
@@ -812,6 +815,8 @@
 940 = Conflict between inherited null annotations ''@{0}'' declared in {1} versus ''@{2}'' declared in {3} 
 941 = Redundant null check: The field {0} cannot be null at this location (ignoring concurrency)
 942 = Null comparison always yields false: The field {0} cannot be null at this location (ignoring concurrency)
+943 = Nullness default is redundant with a default specified for the enclosing module {0}
+
 
 951 = Potential null pointer access: array element may be null
 952 = Potential null pointer access: this expression has a ''@{0}'' type
@@ -845,6 +850,7 @@
 980 = Unsafe interpretation of method return type as ''@{0}'' based on the receiver type ''{1}''. Type ''{2}'' doesn''t seem to be designed with null type annotations in mind
 981 = Unsafe interpretation of method return type as ''@{0}'' based on substitution ''{1}={2}''. Declaring type ''{3}'' doesn''t seem to be designed with null type annotations in mind
 
+
 # Java 8
 1001 = Syntax error, modifiers and annotations are not allowed for the lambda parameter {0} as its type is elided
 1002 = Syntax error, modifiers are not allowed here
@@ -864,10 +870,102 @@
 1059 = Cannot infer type argument(s) for <{0}> {1}
 1060 = Illegally placed annotation: type annotations must directly precede the simple name of the type they are meant to affect (or the [] for arrays)
 1061 = The nullness annotation ''{0}'' is not applicable at this location, it must be placed directly before the nested type name.
+1062 = Nullness default is redundant with a default specified for the variable {0}
+1063 = Nullness default is redundant with a default specified for the field {0}
+
+1070 = Illegal combination of modifiers for the private interface method {0}; additionally only one of static and strictfp is permitted
+1071 = Illegal modifier for the interface method {0}; only public, private, abstract, default, static and strictfp are permitted
 
 1100 = Problem detected during type inference: {0}
 #1101 is already used up but deprecated
 1102 = At least one of the problems in category ''{0}'' is not analysed due to a compiler option being ignored
+
+# more programming problems:
+1200 = Unlikely argument type {0} for {1} on a {2}
+1201 = Unlikely argument type for equals(): {0} seems to be unrelated to {2}
+
+### Autoclosable try
+1251 = Duplicate resource reference {0}
+
+# Java9 - Module declaration related
+1300 = {0} cannot be resolved to a module
+1301 = Duplicate requires entry: {0}
+1302 = Duplicate exports entry: {0}
+1303 = Duplicate uses entry: {0}
+1304 = Duplicate service entry: {0}
+1305 = Cycle exists in module dependencies, Module {0} requires itself via {1}
+1306 = Invalid service implementation, the type {0} is abstract
+1307 = The service implementation {0} must define a public static provider method or a no-arg constructor
+1308 = The no-arg constructor of service implementation {0} is not public
+1309 = Invalid service implementation, the type {0} is an inner class
+1310 = Service implementation {0} is not defined in the module with the provides directive
+1311 = The package {0} does not exist or is empty
+1312 = Type {0} inferred for {1}, is not valid for an anonymous class with ''<>''
+1313 = Duplicate opens entry: {0}
+1314 = Duplicate module name: {0}
+1315 = opens statement is not allowed, as module {0} is declared open
+1316 = Invalid service interface {0}, must be a class, interface or annotation type
+1317 = Invalid service implementation {0}, must be a public class or interface type
+1318 = Illegal modifier for module {0}; only open is permitted
+
+#### Java 9
+1351 = Variable resource not allowed here for source level below 9
+
+# Java 9 - advanced deprecation
+1400 = The type {0} has been deprecated and marked for removal
+1401 = The method {1}({2}) from the type {0} has been deprecated and marked for removal
+1402 = The constructor {0}({1}) has been deprecated and marked for removal
+1403 = The field {0}.{1} has been deprecated and marked for removal
+1404 = The method {0} overrides a method from {1} that has been deprecated and marked for removal
+
+1405 = The type {0} is deprecated since version {1}
+1406 = The method {1}({2}) from the type {0} is deprecated since version {3}
+1407 = The constructor {0}({1}) is deprecated since version {2}
+1408 = The field {0}.{1} is deprecated since version {2}
+1409 = The method {0} overrides a method from {1} that is deprecated since version {2}
+
+1410 = The type {0} has been deprecated since version {1} and marked for removal
+1411 = The method {1}({2}) from the type {0} has been deprecated since version {3} and marked for removal
+1412 = The constructor {0}({1}) has been deprecated since version {2} and marked for removal
+1413 = The field {0}.{1} has been deprecated since version {2} and marked for removal
+1414 = The method {0} overrides a method from {1} that has been deprecated since version {2} and marked for removal
+
+1425 = The package {0} is deprecated
+1426 = The package {0} is deprecated since version {1}
+1427 = The package {0} has been deprecated and marked for removal
+1428 = The package {0} has been deprecated since version {1} and marked for removal
+1429 = The module {0} is deprecated
+1430 = The module {0} is deprecated since version {1}
+1431 = The module {0} has been deprecated and marked for removal
+1432 = The module {0} has been deprecated since version {1} and marked for removal
+
+1450 = The type {0} is not accessible
+1451 = The field {1}.{0} is not accessible
+1452 = The method {1}({2}) from the type {0} is not accessible
+1453 = The constructor {0}({1}) is not accessible
+1454 = The package {0} is not accessible
+1455 = The package {0} is accessible from more than one module: {1}
+1456 = The package {0} conflicts with a package accessible from another module: {1}
+1457 = The type {0} is not accessible to clients that require this module
+1458 = The type {0} is not exported from this module
+1459 = The type {0} from module {1} may not be accessible to clients due to missing ''requires transitive''
+1460 = Must declare a named package because this compilation unit is associated to the named module ''{0}''
+1461 = Name of automatic module ''{0}'' is unstable, it is derived from the module''s file name.
+
+# Local-Variable Type Inference
+1500 = ''var'' is not allowed in a compound declaration
+1501 = ''var'' is not allowed as an element type of an array
+1502 = Declaration using ''var'' may not contain references to itself
+1503 = Cannot use ''var'' on variable without initializer
+1504 = Cannot infer type for local variable initialized to ''null''
+1505 = Variable initializer is ''void'' -- cannot infer variable type
+1506 = Array initializer needs an explicit target-type
+1507 = Lambda expression needs an explicit target-type
+1508 = Method reference needs an explicit target-type
+1509 = ''var'' is not a valid type name
+1510 = ''var'' should not be used as an type name, since it is a reserved word from source level 10 on
+1511 = ''var'' is not allowed here
+
 ### ELABORATIONS
 ## Access restrictions
 78592 = The type ''{1}'' is not API (restriction on classpath entry ''{0}'')
@@ -881,4 +979,4 @@
 78602 = The constructor ''{1}'' is not API (restriction on required library ''{0}'')
 78604 = The method ''{2}.{1}'' is not API (restriction on classpath entry ''{0}'')
 78606 = The method ''{2}.{1}'' is not API (restriction on required library ''{0}'')
-78605 = The method ''{2}.{1}'' is not API (restriction on required project ''{0}'')
\ No newline at end of file
+78605 = The method ''{2}.{1}'' is not API (restriction on required project ''{0}'')
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.class
index 8cb81bb..135dae7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter$1.class
index 0ac2add..20c43b3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.class
index 8c155ac..6beebe7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.class
index 0e08e99..23ea7b2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.class
index 45c2187..b25011b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.class
index 08c5c00..cba5c80 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.class
new file mode 100644
index 0000000..c095b60
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.class
index 8ccc4b3..a4c5327 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.class
new file mode 100644
index 0000000..f87b007
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.class
index 82f9eb7..a9b2397 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.class
index 29a8a73..c89cbab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.class
index 79fd723..7d74b64 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.class
index 3a5c007..48d5780 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.class
index 118a74f..f85a075 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$AbstractFileVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$AbstractFileVisitor.class
new file mode 100644
index 0000000..fbe1244
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$AbstractFileVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$JrtFileVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$JrtFileVisitor.class
new file mode 100644
index 0000000..a3e55b5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil$JrtFileVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.class
new file mode 100644
index 0000000..7b79077
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$1.class
new file mode 100644
index 0000000..dac6005
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$2.class
new file mode 100644
index 0000000..abdc4d8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem.class
new file mode 100644
index 0000000..c52bc5d
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/JrtFileSystem.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.class
index 21968e9..ccdb576 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages$MessagesProperties.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages$MessagesProperties.class
index abcba22..08e4604 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages$MessagesProperties.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages$MessagesProperties.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.class
index 1396437..ecddd8b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector$1.class
new file mode 100644
index 0000000..2ddc8b0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.class
index 6248c2e..79ed148 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.class
index c87413b..20995b6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.class
index 6a764b5..f7f00e0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.class
index 70c8729..233c480 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.class
index b10df84..a15876d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.class
index ef2695c..bf51680 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$1.class
index 0158017..742e860 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$Displayable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$Displayable.class
index 2dc1329..0ec27a3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$Displayable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util$Displayable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.class
index 0f4ce27..fb0b0a3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile$1.class
new file mode 100644
index 0000000..2fa9f22
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.class
new file mode 100644
index 0000000..eead301
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule$AutoModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule$AutoModule.class
new file mode 100644
index 0000000..7493b0f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule$AutoModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.class
new file mode 100644
index 0000000..161ec83
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.class
index be77de1..5d8739b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Annotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Annotation.class
index 7fb3503..f338067 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Annotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Annotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.class
index b5c1f4e..d33af7e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.class
index dee53ce..d2ce8ef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.class
index 1e8625d..ec73107 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.class
index 729ab48..3bb4f72 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.class
index ec45177..8ebcab0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.class
index 1ad6aa6..492e881 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.class
index baf1b15..abd59b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.class
index 447c1ce..38c6435 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1.class
index 4b101bb..56067c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1ParametersNameCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1ParametersNameCollector.class
index 7bf9235..e801d9a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1ParametersNameCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod$1ParametersNameCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.class
index 6f45d66..28a93b1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.class
new file mode 100644
index 0000000..42e6484
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.class
index 5c07533..ec3fef7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer$1.class
index 6de1f32..471bd60 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer.class
index 0516e3b..d6e5bf3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Buffer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.class
index dd3e743..c44dbbb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.class
index 46a58aa..1e9fbdb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager$1.class
index c9c5968..fb6654d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.class
index d2deed3..a8c1d95 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.class
index ad22c55..7a7d44f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.class
index 815ca62..77c033f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.class
index cf93098..b9e68eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$1.class
index ec2f3c7..129e8f2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$2.class
deleted file mode 100644
index 9c25eee..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile$2.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.class
index 49cbe57..08284b9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$1.class
index dd65e54..dff370d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$2.class
index bd066db..b2dbee3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.class
index 5eb9c6e..6b94cdb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.class
index 085042c..db3180e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.class
index 1a77c9b..d387a41 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.class
index cac5c97..67a622f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.class
index 5c9a785..ba06e46 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$1.class
index f40f2d3..82a9519 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$AssertionFailedException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$AssertionFailedException.class
index 115c3f1..01d0f9a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$AssertionFailedException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$AssertionFailedException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$UnknownXmlElements.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$UnknownXmlElements.class
index bd24b9c..72ed71f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$UnknownXmlElements.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry$UnknownXmlElements.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.class
index 650bfcc..8ee9ca2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.class
index eb7cd3d..d15790e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.class
new file mode 100644
index 0000000..3acac2b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$1.class
index da37b12..996fe71 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$2.class
index 0d9e562..d94a0f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$3.class
index 9a70050..41ed570 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.class
index 16fdfa4..76f198d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder$1.class
index c80db62..3f7a65d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.class
index 669a809..196f4ff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor$1.class
index bbe0f12..fbaf5b6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.class
index 7ee6086..eb9aaf7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.class
index 16cabb0..f5a0dd4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation$1.class
index 86b63cf..45a40ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.class
index 5b86556..0e801f7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.class
index b7c27ff..3167bbc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.class
index 719d133..d86ab1f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.class
index beff5f7..44c53af 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.class
index 2d16c53..8abf636 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.class
index 2046afd..b7b47eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.class
index 911504b..18ebebf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.class
index 161a416..4e61091 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.class
index af9f469..c6c856f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.class
index 8a603ca..f088829 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.class
index e259a53..2dc914f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.class
index 2063cd4..d76d99c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.class
index 99a5414..21f57ff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.class
index 72dfec0..7449d98 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.class
index a0a3caf..0366357 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation$1.class
index f6aa803..31b44b4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.class
index 065cec0..b3cabc4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.class
index 5ca84e1..0ddca23 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$1.class
index 83f1144..3a7a75d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$RootInfos.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$RootInfos.class
new file mode 100644
index 0000000..f2740c5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState$RootInfos.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.class
index dffaa1b..c968d7c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1.class
index 053b407..5045112 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1FoundRelevantDeltaException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1FoundRelevantDeltaException.class
index a1662e4..964799b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1FoundRelevantDeltaException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$1FoundRelevantDeltaException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$2.class
index a128edc..6476b5b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$3.class
index 2d203bb..b32b454 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$4.class
index 7ca70a6..d447a67 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$OutputsInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$OutputsInfo.class
index 6257184..89b5b42 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$OutputsInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$OutputsInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$RootInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$RootInfo.class
index b1afa42..987314a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$RootInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor$RootInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.class
index 47edc04..35b9f5f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.class
index b3e2d86..d1324e5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.class
index 3b4596d..92141b0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.class
new file mode 100644
index 0000000..2aec79f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.class
index 0082ab2..376eae3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.class
index 3372970..2308a6b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.class
index 21ea570..41e225e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager$RefreshJob.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager$RefreshJob.class
index 440dfed..749e081 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager$RefreshJob.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager$RefreshJob.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.class
index ef2fcdf..5650eb1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.class
index 01c37d2..a6e4601 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.class
index 0caad54..f6c1255 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.class
index 8d82972..4dd2d65 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.class
index fe19992..dc47550 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.class
index 7931949..eb1c606 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.class
index 9ebccc4..49bc238 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclarationElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclarationElementInfo.class
index 90183b7..d2a37eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclarationElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclarationElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Initializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Initializer.class
index 598ea17..1d04fa7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Initializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Initializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerElementInfo.class
index cc99785..9e2638a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.class
index e6b84ad..6b6be2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InternalNamingConventions.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InternalNamingConventions.class
index 978f760..e2f7340 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InternalNamingConventions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/InternalNamingConventions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.class
new file mode 100644
index 0000000..fe54d1e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.class
index 807eb11..66db809 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.class
index da510f4..04c2a4b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.class
index 373e106..8b760e1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.class
index 2c49580..b83647a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.class
index dbcff59..5747dd1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.class
index 12afd10..f151a39 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.class
index 8a051c9..a2e6209 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement$1NoResourceSchedulingRule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement$1NoResourceSchedulingRule.class
index 7bb65ca..71e6295 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement$1NoResourceSchedulingRule.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement$1NoResourceSchedulingRule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.class
index a2d2af3..c31593f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta$Key.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta$Key.class
index 567c24f..bf585bb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta$Key.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta$Key.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.class
index d9dfde5..5e7bd2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.class
index e69c5db..ad34f95 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.class
index 91db55d..bc5144b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.class
index cc75fc2..870b896 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.class
index 7ed01e8..6df56d4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.class
index d1ce350..14da951 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.class
index 7c8aef0..a71c20c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$1.class
index a949b3a..1fd6b9c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$10.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$10.class
index 7e1fa71..3684e5e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$10.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$10.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$11.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$11.class
index 388da29..1c01822 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$11.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$11.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$12.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$12.class
index d2aeb90..97e8cef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$12.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$12.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$13.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$13.class
index 6134b1e..8939f16 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$13.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$13.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$14.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$14.class
index 5a4e9aa..9753365 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$14.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$14.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$15.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$15.class
index e99f66e..baff4eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$15.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$15.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$16.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$16.class
index 9be79d2..d64e7f1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$16.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$16.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$17.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$17.class
index 383afd8..7fb7c3a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$17.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$17.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$18.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$18.class
index 03a7e5e..d2fe004 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$18.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$18.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$19.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$19.class
index c7b7d13..0b0669a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$19.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$19.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$2.class
index b77e2ad..2b50cae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20$1.class
index e6aaf6b..58b18e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20.class
index f531079..1667df8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$20.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$3.class
index 7c71b2b..cfac4e5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$4.class
index 1c9dfb3..00b6ce0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$5.class
index f84e4a7..36c74d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$6.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$6.class
index d648727..90fd35e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$6.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$6.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$7.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$7.class
index aeacb59..25bae2b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$7.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$7.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$8.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$8.class
index bcece29..dc71908 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$8.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$8.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$9.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$9.class
index 55e2729..cccbe27 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$9.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$9.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ArchiveValidity.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ArchiveValidity.class
index 1dd60bd..68edccd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ArchiveValidity.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ArchiveValidity.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$1.class
index f75d190..c618b5a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$2.class
index d95423e..d534092 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants.class
index 0604ce0..d101e4b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$CompilationParticipants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$EclipsePreferencesListener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$EclipsePreferencesListener.class
index e86b5e2..0c40b20 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$EclipsePreferencesListener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$EclipsePreferencesListener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$InvalidArchiveInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$InvalidArchiveInfo.class
index b81ebf6..1fdd4c3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$InvalidArchiveInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$InvalidArchiveInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerProjectInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerProjectInfo.class
index 0f56523..c029532 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerProjectInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerProjectInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerWorkingCopyInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerWorkingCopyInfo.class
index 2cc1623..9980235 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerWorkingCopyInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PerWorkingCopyInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PersistedClasspathContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PersistedClasspathContainer.class
index a03715f..e130cb6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PersistedClasspathContainer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$PersistedClasspathContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersLoadHelper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersLoadHelper.class
index 2ae3fbd..3da242e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersLoadHelper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersLoadHelper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersSaveHelper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersSaveHelper.class
index 38a5460..9ab957d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersSaveHelper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$VariablesAndContainersSaveHelper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ZipCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ZipCache.class
index cc03342..dad6d3b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ZipCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager$ZipCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.class
index a93e85c..78869fd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation$IPostAction.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation$IPostAction.class
index 6564524..b9dbf32 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation$IPostAction.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation$IPostAction.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.class
index 0864e51..247405e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.class
index 46abfc1..a7cfa59 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$1.class
index cd612ea..f768694 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$2.class
index b114950..201440e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$3.class
index c0bc3f0..260bab5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$4.class
new file mode 100644
index 0000000..c44ffed
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ClasspathResolutionBreakpointListener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ClasspathResolutionBreakpointListener.class
index ea11a17..e508f7c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ClasspathResolutionBreakpointListener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ClasspathResolutionBreakpointListener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$JImageModuleFragmentBridge.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$JImageModuleFragmentBridge.class
new file mode 100644
index 0000000..c7289a7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$JImageModuleFragmentBridge.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ModuleLookup.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ModuleLookup.class
new file mode 100644
index 0000000..cda869b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ModuleLookup.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ResolvedClasspath.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ResolvedClasspath.class
index 81f4c88..2c9328d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ResolvedClasspath.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject$ResolvedClasspath.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.class
index 89609af..2db76e8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo$ProjectCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo$ProjectCache.class
index 25b1dd2..6d9b2f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo$ProjectCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo$ProjectCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.class
index 00203a0..a17ba62 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.class
index eb5a15a..0ec260c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.class
index 13cb871..e6c3521 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot$1.class
new file mode 100644
index 0000000..52369de
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.class
new file mode 100644
index 0000000..c46b066
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator$LRUEnumeratorElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator$LRUEnumeratorElement.class
index 7741655..07477a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator$LRUEnumeratorElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator$LRUEnumeratorElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.class
index ccb43ab..31b14d2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.class
index f339c92..e517599 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.class
index 66ba6f0..c91ad73 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable$1LocalVarAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable$1LocalVarAnnotation.class
index 5460dda..46f136a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable$1LocalVarAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable$1LocalVarAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.class
index cda208c..e586fe8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Member.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Member.class
index 91cefa2..8a9d5ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Member.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Member.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.class
index 5b2c983..4de9ca5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.class
new file mode 100644
index 0000000..0cf6d34
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ModuleReferenceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ModuleReferenceInfo.class
new file mode 100644
index 0000000..0f1ea53
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ModuleReferenceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$PackageExportInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$PackageExportInfo.class
new file mode 100644
index 0000000..b7064af
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$PackageExportInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ServiceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ServiceInfo.class
new file mode 100644
index 0000000..848fd99
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo$ServiceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.class
new file mode 100644
index 0000000..0a3bd51
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.class
new file mode 100644
index 0000000..3eb2465
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.class
new file mode 100644
index 0000000..5e370e7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager$IPrefixMatcherCharArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager$IPrefixMatcherCharArray.class
new file mode 100644
index 0000000..e1626b6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager$IPrefixMatcherCharArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.class
new file mode 100644
index 0000000..c3d70e6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.class
new file mode 100644
index 0000000..049e8ba
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.class
index 0181a7a..07ee1e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation$1.class
index 86174be..29a5443 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.class
index 3e82364..925cae3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.class
index 36b6165..8b4ac22 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.class
index c6aa251..d69626c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$1.class
new file mode 100644
index 0000000..62d52a9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Answer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Answer.class
index e7d44bd..0f955de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Answer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Answer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$IPrefixMatcherCharArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$IPrefixMatcherCharArray.class
new file mode 100644
index 0000000..409d810
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$IPrefixMatcherCharArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Selector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Selector.class
new file mode 100644
index 0000000..7d15ad0
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup$Selector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.class
index 177a7a3..28a345d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember$1TypeResolveRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember$1TypeResolveRequestor.class
index 40b184f..29097bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember$1TypeResolveRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember$1TypeResolveRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.class
index 36a0961..c1dfc9b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.class
index f76392e..d02f0a5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Openable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Openable.class
index ec990ee..62bd963 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Openable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/Openable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.class
index fb7d427..e79966c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache$1Temp.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache$1Temp.class
index 7459158..509e7de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache$1Temp.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache$1Temp.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.class
index 1ad128d..f0beb3d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.class
index 28a4ad8..fa0fb8c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.class
index db1e211..4b3ef05 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.class
index ad195d9..3a2c54e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.class
index 3ca70a9..deb37e3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.class
index b49ce0b..f8bd6e2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.class
new file mode 100644
index 0000000..16fe558
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange$1.class
deleted file mode 100644
index 72c0886..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange$1.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.class
deleted file mode 100644
index af1b83a..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation$1.class
index 10c74a2..5ddb7f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.class
index 3df27f2..a3300bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.class
index e49b68f..5f9a7b8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.class
index 62d01be..a750d10 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.class
index 51ac45d..78c32c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.class
index f131db6..9e64029 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.class
index e5b5acd..9b28fca 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.class
index 4dca6a1..374b1f2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.class
index 70240e8..60c9a93 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.class
index 751666c..3f3c76f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.class
index 086d88d..8c4c801 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$1.class
index 28791b0..3d9bf5f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$2.class
index 278ab34..a72d839 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$3.class
index 761cfd5..c5b758a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$4.class
index c96c624..013f8df 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$5.class
index ba09e81..7af4daa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$6.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$6.class
index d604eb8..64d431a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$6.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$6.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$7.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$7.class
index 76dcfa5..591c5ec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$7.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment$7.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.class
index 19565ab..ffc5790 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.class
index 70868f2..33393d1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.class
index 79bcd6b..b3ad903 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.class
index f884524..8d042b5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$1.class
index fdbfab7..8782743 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$2.class
index c488120..923af02 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.class
index 6d992cd..c4e8e14 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.class
index 6f04899..8a9df28 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.class
index f147b29..f2a1e50 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.class
index 76e91dd..8cfe1db 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$1.class
index 4bcba8b..996df9e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$2.class
index 0d82d76..2c196a9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.class
index 5f7afa8..ded078a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.class
index b65cb73..e5fb901 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.class
index dab4b47..b65139d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.class
index 8d46d67..cd22a9d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceField.class
index a2a9475..519a42c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.class
index 29905a0..fa22d50 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.class
index 0d1218f..3290b83 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$1.class
index 9cd1d4b..0f9d32f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$JrtPackageNamesAdderVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$JrtPackageNamesAdderVisitor.class
new file mode 100644
index 0000000..6e44546
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$JrtPackageNamesAdderVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$LocalVariableElementKey.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$LocalVariableElementKey.class
index 87e8c53..0d7e30a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$LocalVariableElementKey.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper$LocalVariableElementKey.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.class
index 888c23b..faad1fe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.class
index 9784340..60893be 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.class
index 57df67e..8f6d9ba 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.class
index ce654c1..889e41c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.class
index a934852..fbc13c3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.class
new file mode 100644
index 0000000..c63a1da
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.class
index 7cd0b2d..869e181 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceType.class
index 641ea0a..b89c32e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.class
index 5daad87..c840ce5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.class
index df7ac6c..d360748 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.class
index 00e083e..2407c4e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.class
index 1a3901f..510434b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.class
index 5a8fc3d..3c384b4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.class
index a8b0cd8..7285ca0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.class
index 4158f8b..3813b78 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder$1.class
index e11e931..f7f9fa7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.class
index cd6c58e..049f2fe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$1.class
index 1c862ea..bef15d5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$2.class
index 2e75ad2..274af54 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$3.class
index a59cc40..feba02c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.class
index dc96749..96e1fca 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.class
index fd280aa..07a24a6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.class
new file mode 100644
index 0000000..e89544e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar$PackageCacheEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar$PackageCacheEntry.class
index d0023e7..a22059a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar$PackageCacheEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar$PackageCacheEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.class
index b752eef..6914851 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$1.class
new file mode 100644
index 0000000..7e60c65
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$2.class
new file mode 100644
index 0000000..2108d25
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.class
new file mode 100644
index 0000000..a93b768
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.class
index 9be98b8..6409192 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.class
index e744ce9..6a183c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.class
index 6d4c395..9e1574f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.class
index 91fe923..3d5cdd6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.class
index 90dd0c8..1b70f74 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.class
index 9c5a0f2..5399439 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.class
new file mode 100644
index 0000000..2324c35
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder$BytecodeCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder$BytecodeCollector.class
new file mode 100644
index 0000000..a63f483
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder$BytecodeCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.class
new file mode 100644
index 0000000..48f68c8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry$Multi.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry$Multi.class
new file mode 100644
index 0000000..dba4f22
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry$Multi.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.class
new file mode 100644
index 0000000..23afcd6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.class
index 4a660cd..2ff36ba 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.class
index 9df67fd..d8bde6b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.class
index f89960b..c2c0029 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.class
index 404b3e3..33f640f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.class
index 44bcafa..4f1409f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/State.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/State.class
index fac8324..caf4467 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/State.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/State.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.class
index 167a08b..e729391 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.class
index 1a3a8b7..842e02d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.class
index 37c455c..ee529ae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.class
index 71ee0b0..663ee4b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$IASTRewriteAnalyzerFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$IASTRewriteAnalyzerFactory.class
index 0f04320..234a7ec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$IASTRewriteAnalyzerFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$IASTRewriteAnalyzerFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ListRewriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ListRewriter.class
index 4f2a604..02a2dc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ListRewriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ListRewriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ModifierRewriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ModifierRewriter.class
index c850dc7..a36ce7f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ModifierRewriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ModifierRewriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ParagraphListRewriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ParagraphListRewriter.class
index b932cc1..5ffdc26 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ParagraphListRewriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$ParagraphListRewriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$SwitchListRewriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$SwitchListRewriter.class
index 565b275..a420faf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$SwitchListRewriter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer$SwitchListRewriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.class
index 587332a..bfbed0f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.class
index c4135f4..087faae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$1.class
index e7e98c9..4e6d206 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockContext.class
index 0b752b8..1ca7c0d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefix.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefix.class
index 8228f4a..01a7521 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefix.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefix.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefixSuffix.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefixSuffix.class
index d4dd668..da2dc4e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefixSuffix.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$BlockFormattingPrefixSuffix.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ConstPrefix.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ConstPrefix.class
index 7e843c9..fa8f4f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ConstPrefix.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ConstPrefix.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ExtendedFlattener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ExtendedFlattener.class
index a4b4262..8e86d56 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ExtendedFlattener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$ExtendedFlattener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$FormattingPrefix.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$FormattingPrefix.class
index 0503c12..bb47dfd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$FormattingPrefix.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$FormattingPrefix.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$Prefix.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$Prefix.class
index 80559f5..bedf039 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$Prefix.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter$Prefix.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.class
index 5b0afe2..798f74d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$1.class
index 8337470..2211727 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$2.class
index 3a10358..441a141 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.class
index 9433568..0c29a4f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.class
index 67f0c64..14b8e9f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$CopyPlaceholderData.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$CopyPlaceholderData.class
index f33918e..0a81c69 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$CopyPlaceholderData.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$CopyPlaceholderData.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$StringPlaceholderData.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$StringPlaceholderData.class
index f406a1d..2696575 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$StringPlaceholderData.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore$StringPlaceholderData.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.class
index 8ab47a8..8b239c5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.class
index 0c054b4..d0abdd8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$CopySourceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$CopySourceInfo.class
index a8237ec..d2bc7d8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$CopySourceInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$CopySourceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$EventHolder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$EventHolder.class
index c7c48ff..2e4e273 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$EventHolder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$EventHolder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$INodePropertyMapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$INodePropertyMapper.class
index 5ddbcfc..bc6c7f5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$INodePropertyMapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$INodePropertyMapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$NodeRangeInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$NodeRangeInfo.class
index 30f797a..fae9aa4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$NodeRangeInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$NodeRangeInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$ParentIterator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$ParentIterator.class
index eee0704..3d0741d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$ParentIterator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$ParentIterator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$PropertyLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$PropertyLocation.class
index 303d5f1..d02e5f7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$PropertyLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore$PropertyLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.class
index 9858ff2..feb1435 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.class
index e212648..57657bf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.class
index 7a115f2..15ad25b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer$RewriteResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer$RewriteResult.class
index 20d9e24..6803aec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer$RewriteResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer$RewriteResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.class
index f88154e..97ad2bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper$1.class
index 85f9b58..9c8daa2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.class
index 3c0ff32..597dd33 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.class
index e3f6764..fe50d49 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.class
index f6518f7..3fd8f75 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.class
index f14ef89..a474a6a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.class
index d35d691..9f14b14 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder$1.class
index c37c920..aedc92f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.class
index 1ed878b..a089640 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.class
index b4036c5..b580c2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.class
index c91d509..90c3e05 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1.class
index 1f41dc2..3e5ab87 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1PathCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1PathCollector.class
index fe39185..b69001a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1PathCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$1PathCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$2.class
index 68ceb07..529cd2c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$Queue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$Queue.class
index e2eeea3..9f0f35d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$Queue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder$Queue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.class
index c7179ec..1c62b3c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.class
index ba1f47f..0227195 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.class
index 3d58ac6..48ff9d6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy$1.class
index 87c99f4..18fc6d1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.class
index f134ae7..b28dd3a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex$IntList.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex$IntList.class
index 68ab733..b0200a6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex$IntList.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex$IntList.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.class
index 22688ed..cc8ccef 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.class
index a8c3d3f..a9c8884 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/Index.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/Index.class
index 3db262f..cbe66f5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/Index.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/Index.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.class
index 95e3182..95fdd12 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.class
index 74efa0d..4f313e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.class
index 736dd6a..5674956 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.class
index e7daac0..1384ba5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.class
index ebd4f0e..0815053 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.class
index 1009bd7..125d555 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.class
index 79ccac0..b2704bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.class
index e4c7329..ab3ac34 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.class
index 74be848..c5ed5e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.class
index f0770a6..9ae26f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.class
index d9f6565..c7694e1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.class
index 4973459..e39f33b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.class
index 8c7f3cd..da937f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.class
index 6c9197c..b5da7b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.class
index 9091207..8767c6e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.class
index ec6d91a..58ee830 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.class
index 6a5e1c1..459a6df 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.class
deleted file mode 100644
index 0a1ea7e..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.class
new file mode 100644
index 0000000..b893440
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.class
deleted file mode 100644
index 01d59a6..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.class
new file mode 100644
index 0000000..cb853b8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$1.class
index 655e26e..39166a7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$DebugLockInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$DebugLockInfo.class
index ac6a996..27a7eeb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$DebugLockInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd$DebugLockInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.class
index 1ead000..d02e6b7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$2.class
index 5d98a5a..b66738c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$3.class
index a6ac1a2..2cd4112 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.class
index 0348677..06e6283 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.class
index bd747fb..f9846b5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.class
index fbeb4da..bdeff2b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.class
new file mode 100644
index 0000000..57403b6
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$GrowableBlockHeader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$GrowableBlockHeader.class
index 424908f..6c0fb7b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$GrowableBlockHeader.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$GrowableBlockHeader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$MetaBlockHeader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$MetaBlockHeader.class
new file mode 100644
index 0000000..73fd9c8
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray$MetaBlockHeader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.class
index 1e74bae..9259fd0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTNode.class
index dc5e25a..602f91a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTreeKeyNotFoundException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTreeKeyNotFoundException.class
index 72138d4..d641a3f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTreeKeyNotFoundException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$BTreeKeyNotFoundException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$IBTreeVisitor2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$IBTreeVisitor2.class
index a996864..43033fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$IBTreeVisitor2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$IBTreeVisitor2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$InvariantsChecker.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$InvariantsChecker.class
index ce95acd..6b7c8b4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$InvariantsChecker.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree$InvariantsChecker.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.class
index 62ef2ce..39e173a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.class
index cb2898d..da96e66 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.class
index 870c83b..2be11e0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$SleepCallback.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$SleepCallback.class
new file mode 100644
index 0000000..7c6fb30
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$SleepCallback.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$WriteCallback.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$WriteCallback.class
new file mode 100644
index 0000000..67f8599
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter$WriteCallback.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.class
new file mode 100644
index 0000000..619075e
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$ChunkStats.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$ChunkStats.class
new file mode 100644
index 0000000..f12155c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$ChunkStats.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$IORunnable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$IORunnable.class
index 3ee1b34..a26a74b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$IORunnable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database$IORunnable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.class
index b3f974f..6584e63 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.class
index d7b6f84..5403896 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats$1.class
index 12a7ac5..5f5379f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.class
index 47055ca..e23d1c3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryAccessLog.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryAccessLog.class
new file mode 100644
index 0000000..6c6fceb
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryAccessLog.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryOperation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryOperation.class
new file mode 100644
index 0000000..28ffa57
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$MemoryOperation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$Tag.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$Tag.class
new file mode 100644
index 0000000..b41cb38
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog$Tag.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.class
new file mode 100644
index 0000000..3d23167
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.class
index b1f0a04..d9d51bb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.class
new file mode 100644
index 0000000..8c1986a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.class
new file mode 100644
index 0000000..7438de1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.class
index b755c41..a54e9c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.class
index f3305b8..b44bcc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.class
index 1b61c98..a312896 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.class
index 8dfbe2b..1243276 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.class
index 05b3016..f25eff8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.class
index 2486e7f..ae119dd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList$BlockHeader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList$BlockHeader.class
new file mode 100644
index 0000000..5576c09
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList$BlockHeader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.class
new file mode 100644
index 0000000..433cea5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.class
index 5bebc2f..8fb02ba 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.class
index fd0ef82..505109e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$1.class
index 7c469d4..29e6101 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$Visitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$Visitor.class
index 20f0df9..7ef726a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$Visitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany$Visitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.class
index 5e387c9..828f437 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.class
index 9941dd6..c2275b5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.class
index 07d7bac..81f70e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$1.class
index f9aeacd..3f495a2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$2.class
index f7d9f60..8645000 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$3.class
index 58ec45b..0a70d82 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$4.class
index 0c16312..1e095a0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$5.class
index 764d7ed..e4e8e43 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$6.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$6.class
index ab19349..9795987 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$6.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$6.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$7.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$7.class
new file mode 100644
index 0000000..1cedba2
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$7.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$IResultRank.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$IResultRank.class
index 7184b82..f288b36 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$IResultRank.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$IResultRank.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteria.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteria.class
index eb8465a..1b324f6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteria.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteria.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteriaToBtreeVisitorAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteriaToBtreeVisitorAdapter.class
index 6ceb313..473fee2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteriaToBtreeVisitorAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$SearchCriteriaToBtreeVisitorAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$Visitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$Visitor.class
index 5c28a3d..6df4701 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$Visitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$Visitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.class
index 0c88578..4d9f11c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.class
index 980d40f..3c09b0e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.class
index f6bd936..27f3127 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.class
index 905425c..0f61436 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.class
index 1b02713..bbae76e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$1.class
index aba7b51..6a558fb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$DeletionSemantics.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$DeletionSemantics.class
index 3f7ce28..6788814 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$DeletionSemantics.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef$DeletionSemantics.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.class
index 058630a..dfb6877 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.class
deleted file mode 100644
index 6b0cd5a..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter$TypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter$TypeParameter.class
new file mode 100644
index 0000000..de5f4ef
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter$TypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.class
index a883e51..000dd7b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.class
new file mode 100644
index 0000000..55d1016
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.class
index ae1022e..62e393d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$1.class
new file mode 100644
index 0000000..e77c807
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$Listener.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$Listener.class
index d9aac76..da4dfec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$Listener.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer$Listener.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.class
index b410a4b..147670d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.class
new file mode 100644
index 0000000..7e5a2b3
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$1.class
index d92b70d..a106062 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$BestResourceFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$BestResourceFile.class
index bf81904..41309d1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$BestResourceFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex$BestResourceFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.class
index 7d02057..8e5dd18 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.class
index e19a708..b7d12c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.class
index 0c81c16..411923e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.class
deleted file mode 100644
index 9173dfd..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.class
deleted file mode 100644
index 104b277..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.class
deleted file mode 100644
index b21c965..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.class
deleted file mode 100644
index 3b74929..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.class
deleted file mode 100644
index 78cb9da..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.class
index ffc6595..35c05fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.class
index b488251..70b3361 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.class
index 442877e..900a903 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.class
index 95ed5ab..bac7146 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.class
index 0a53795..80054f8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantClass.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantClass.class
index 46e81f5..031050e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantClass.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantClass.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantEnum.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantEnum.class
index 554adcc..229aee4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantEnum.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantEnum.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.class
index 0021475..a6fa36b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.class
new file mode 100644
index 0000000..0ef95f9
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.class
index c4f8961..65fd012 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.class
deleted file mode 100644
index b157c60..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.class
index 37cec42..eaff7b3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$1.class
index 9895604..dba297b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$2.class
index af47303..9e80bd9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.class
index 21c975b..3586ce3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.class
deleted file mode 100644
index 43dad90..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.class
index 1fdbe9a..f6613b3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.class
index 56f3762..cd53368 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.class
deleted file mode 100644
index effa627..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.class
deleted file mode 100644
index b1f2140..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.class
deleted file mode 100644
index 9bc6a91..0000000
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeArgument.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeArgument.class
index cce7f5e..1dfa843 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeArgument.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeArgument.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.class
index d2fd0e8..5e6e8c8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.class
index 9320702..5aad13a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeInterface.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeInterface.class
index e76d85a..6b3ff68 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeInterface.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeInterface.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.class
index ba7c193..366bbaf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.class
index 4ec18f9..a2f58a4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.class
index 9aca360..7b8083c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.class
index fc2df37..a2ffce6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.class
new file mode 100644
index 0000000..372c72a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader$FixedSizeTagHandler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader$FixedSizeTagHandler.class
index dc201d0..a74bebe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader$FixedSizeTagHandler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader$FixedSizeTagHandler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.class
index d007adc..7392591 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.class
new file mode 100644
index 0000000..7cbc657
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.class
new file mode 100644
index 0000000..646ebcf
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.class
index 63ef978..a3c0635 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory$NotInIndexException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory$NotInIndexException.class
index 3e8ca26..ee25317 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory$NotInIndexException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory$NotInIndexException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.class
index 037fa4a..261d6c5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType$1.class
index 18b1f68..05b7e93 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.class
index 389108b..ec18239 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.class
new file mode 100644
index 0000000..5720439
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$DeviceNode.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$DeviceNode.class
index aec39e1..2016b52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$DeviceNode.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$DeviceNode.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$Node.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$Node.class
index fd2041f..c5806d0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$Node.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap$Node.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.class
index f5f485e..b8da257 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.class
index dfa80bd..e6b31a1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1.class
index 959e7af..d7c38e9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllConstructorDeclarationsVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllConstructorDeclarationsVisitor.class
index c36e3f5..81e6a4c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllConstructorDeclarationsVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllConstructorDeclarationsVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor$TypeInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor$TypeInfo.class
index 68c889c..00b934e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor$TypeInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor$TypeInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor.class
index d9d268d..5e9b55b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllMethodDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllTypeDeclarationsVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllTypeDeclarationsVisitor.class
index 557cda5..34ef7a5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllTypeDeclarationsVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$1AllTypeDeclarationsVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2.class
index 88b9209..9974697 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor$TypeInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor$TypeInfo.class
index 8984fa0..28f19ba 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor$TypeInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor$TypeInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor.class
index 096f2e4..dbbf2ac 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllMethodDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllTypeDeclarationsVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllTypeDeclarationsVisitor.class
index 4495768..b2f4636 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllTypeDeclarationsVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$2AllTypeDeclarationsVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$3.class
index 74386cf..f8e9acf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$4.class
index 962d24f..1f792e0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$5.class
index 611320b..1a64ed4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$6.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$6.class
index 8f54e79..d6041fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$6.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine$6.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.class
index 558f02f..467cea1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.class
index a03948a..f5308ad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.class
index 44b7428..ed38dc2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.class
index 7677a9a..3c2d63a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.class
index 88de69a..d89f11f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.class
index 31e7545..a160024 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.class
index ec12f72..7869294 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.class
index 83451d9..cc14cdd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.class
index 8988de3..b852138 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.class
index fea24c9..e7f3906 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.class
index 8f589b0..cff7990 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.class
index a1bdf1f..56910ea 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.class
index 7a3749b..6c5cff2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.class
index 02519c3..74f1f7d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.class
index d958204..7694d1a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.class
index b2947fb..633c902 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$1.class
index 23a703c..7966da0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$2.class
index b03a546..0fd4293 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.class
index 1caf07e..c4101f9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.class
index a472fc9..9c447eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$FILE_INDEX_STATE.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$FILE_INDEX_STATE.class
new file mode 100644
index 0000000..7f3f132
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$FILE_INDEX_STATE.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtIndexer.class
new file mode 100644
index 0000000..1e8df5a
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtTraverser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtTraverser.class
new file mode 100644
index 0000000..5a59419
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex$JrtTraverser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.class
new file mode 100644
index 0000000..2fe963b
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.class
new file mode 100644
index 0000000..ad0aca5
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.class
index 918c102..c07b18c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.class
index 02c2417..68685c6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$1.class
index f7a4fa9..0cbcba5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$2.class
index b657fa4..165ccc3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.class
index 4f7f932..5443b7d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$1.class
index 87adaef..dd38f2d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$2.class
index 901ffb6..ff2539a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.class
index f43d4ee..5717f72 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager$1.class
index 3ce436b..908d3c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.class
index c96daee..4f03719 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.class
new file mode 100644
index 0000000..6423680
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.class
index 39acd5f..6ebeaab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.class
index 1596135..05e62c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.class
new file mode 100644
index 0000000..92b1f74
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.class
index 62dafa3..3ce846f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.class
index db43f56..7d29ea1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.class
index 43439b2..18b63eb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.class
index dfa1d29..f41a8fc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.class
index e60bb1c..a9b7acc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.class
index 6adb162..32a79c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.class
index c2d6a80..eaeb3f0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.class
index 78077ae..2ff123f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.class
index a3e839d..0b6ac8d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.class
index e988c89..7842de1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.class
index 6fae7c2..0f97d14 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.class
index dd31609..fa390d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.class
index a9eb658..06bf620 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.class
index e1f5e7b..af05a0f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.class
index 78524bb..c341094 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.class
index 7b87a84..3a000bc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment$1.class
index 840a04c..9b423c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.class
index 3d944b5..0966234 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.class
index 09e71f2..9b7daa0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.class
index 26d07dd..3898d0b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.class
index 0fdf640..46ad09e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.class
index a34a97d..4feb2f7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.class
index 6333213..962672d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$1.class
index 5df1621..1eb2096 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WorkingCopyDocument.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WorkingCopyDocument.class
index a8e57ac..72ca2f2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WorkingCopyDocument.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WorkingCopyDocument.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WrappedCoreException.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WrappedCoreException.class
index 708cdda..4b68787 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WrappedCoreException.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator$WrappedCoreException.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.class
index 750f1b1..3798bb7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassAndMethodDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassAndMethodDeclarationVisitor.class
index b1d66a7..9525088 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassAndMethodDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassAndMethodDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassButNoMethodDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassButNoMethodDeclarationVisitor.class
index 739affc..66b94f1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassButNoMethodDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$ClassButNoMethodDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$MethodButNoClassDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$MethodButNoClassDeclarationVisitor.class
index cf2ab7e..f10c7e2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$MethodButNoClassDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$MethodButNoClassDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$NoClassNoMethodDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$NoClassNoMethodDeclarationVisitor.class
index 97a27e0..cd9e8fe 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$NoClassNoMethodDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser$NoClassNoMethodDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.class
index 9df2250..96a3e4c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet$1.class
index 6fd99d4..44af177 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.class
index dc2eecd..81cb5d7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.class
index cfda832..472305a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.class
index 392228f..3fbefa6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.class
index 42b79e4..ee9f8b5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.class
index ca0d805..a4e4b52 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.class
new file mode 100644
index 0000000..db67227
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.class
new file mode 100644
index 0000000..0fec36f
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.class
new file mode 100644
index 0000000..0352c59
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.class
index bf5f2f2..4f49415 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.class
index fa45bb3..be04c73 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.class
index 16a1266..b5fe456 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.class
index 74f69b5..b502094 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.class
index 7164ca7..d839031 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.class
index d37aea7..6b0c2ae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.class
index 89fdb32..aa53718 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.class
index 1ff857e..bc1269e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.class
index 122407e..7da5b9d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.class
index 714c188..09331e3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.class
index 4ca3399..9ad6c90 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.class
index fe25d8c..4169f08 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$1.class
index 1f0035c..0034028 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$TypeDeclarationVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$TypeDeclarationVisitor.class
index 68c4669..0c86a99 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$TypeDeclarationVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector$TypeDeclarationVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.class
index cc2020c..c6d179c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.class
index 046bbb5..3abd502 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.class
index 760b844..3484bc4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$1.class
new file mode 100644
index 0000000..ece2c5c
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$2.class
new file mode 100644
index 0000000..fdd0618
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.class
index 9fac65b..653db11 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern$PackageNameSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern$PackageNameSet.class
index b85ff89..b2b0fe4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern$PackageNameSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern$PackageNameSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.class
index 637260f..6b9d09f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.class
index 15f3cba..ce63eab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.class
index ec122e5..c635eb1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.class
index 732f488..90fadd9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.class
index b05f342..1e0420b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.class
index 5a2b74b..4d4b124 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.class
index 4e27e3d..234787d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager$1ProgressJob.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager$1ProgressJob.class
index e1efab3..a56c64f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager$1ProgressJob.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager$1ProgressJob.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.class
index b6c1b6b..fbc36d3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder$1Visitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder$1Visitor.class
index 44c4907..4a68a03 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder$1Visitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder$1Visitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.class
index 0993536..c7a21af 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.class
index 8dcf461..6332145 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.class
index c508ecf..798e5ec 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.class
index f74f2bd..e54e50f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.class
index 24651be..90bc795 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser$Scanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser$Scanner.class
index c370c60..72d5141 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser$Scanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser$Scanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.class
index 647b2ca..5f151de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$1CaptureFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$1CaptureFinder.class
index aef8e8e..5643509 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$1CaptureFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$1CaptureFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$SyntheticLocalVariableBinding.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$SyntheticLocalVariableBinding.class
index a60e036..f33bcb5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$SyntheticLocalVariableBinding.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver$SyntheticLocalVariableBinding.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.class
index fbbcc00..2387af4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.class
index bc87bd2..f929b50 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.class
index 3fa4c9d..decd1fa 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.class
index 204ca18..1752c0c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.class
index b3f5a15..42b4316 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.class
index 8f092ff..ae4824c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.class
index 9690d7b..99efe21 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.class
index 1d8c230..df93999 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.class
index e944a0f..0f29333 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.class
index e8b9d9c..c51c461 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.class
index 538195a..536481c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.class
index ce1a73e..53518cd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.class
index 740a93d..7d4384e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.class
index fc1fe3b..8a08e94 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.class
index 37fd109..6c00b25 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.class
index cafedd2..ae657cf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.class
index 9846a38..d790346 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.class
index 4323a05..a8e1bcf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.class
index 6a74cc2..d360738 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.class
index 1f009be..f3c1e18 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.class
index 65267d0..4319e22 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.class
index 0bd5956..4eae8b2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.class
index e4aa41c..f17f165 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.class
index 60045c2..299e099 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.class
index 35cb3f4..2ae5b45 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.class
index 738fdf7..cd88319 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.class
index 42fe433..23cfd12 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.class
index a551687..eb56cad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.class
index 651cdb4..235bef1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.class
index d268165..c427763 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.class
index e6aae57..af490ad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$1.class
index 4766cb1..58f7ae6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry.class
index ebe306b..bf591c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$LRUCacheEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$Stats.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$Stats.class
index a37bd31..f484ea5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$Stats.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache$Stats.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.class
index 142b69b..ba3090a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.class
index 128b6cd..195bfc0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.class
index 2463732..1b902f1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.class
index b5e35ef..01ce5ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.class
index 3647e4a..705d055 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.class
index 09b653c..e79f6d0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.class
index 896d91b..08cbbf5 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.class
index 1e77cf8..5a3c193 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.class
index 3975af6..0d4b66b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.class
index 2460dc8..8573af7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.class
index 0bb175a..d7321d8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.class
new file mode 100644
index 0000000..982c4b7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.class
new file mode 100644
index 0000000..a3465ba
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.class
new file mode 100644
index 0000000..b7e1ec7
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$1.class
new file mode 100644
index 0000000..32ece01
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$2.class
new file mode 100644
index 0000000..e5928b4
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$ModuleAccumulatorEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$ModuleAccumulatorEnvironment.class
new file mode 100644
index 0000000..5b61827
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil$ModuleAccumulatorEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.class
new file mode 100644
index 0000000..a389c39
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.class
new file mode 100644
index 0000000..2b728e1
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.class
index 67c2b47..99ed83b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.class
new file mode 100644
index 0000000..7b44aca
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.class
index 591acd9..d3b8a41 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.class
new file mode 100644
index 0000000..977a4f2
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.class
index 1eac24b..1878d73 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.class
index a333e39..7d84756 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.class
index 8f70ffc..147e0b3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.class
index 907dc5f..b5d76de 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.class
index 4eee6cb..b707606 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.class
index ec0e334..48c247f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.class
index 76c8da5..e825607 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.class
index d1c0a5b..dc6f7ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.class
index b40e8ae..37b02c9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.class
index 6838e3c..2b465c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.class
index 9d9ea2d..22f6604 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.class
index 66b4ea4..066f204 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.class
index a7904ec..2b2c2a1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter$Pair.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter$Pair.class
new file mode 100644
index 0000000..ab9c265
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter$Pair.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.class
index b7a9422..84a54d1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$1.class
index 7ec7fcd..8c3c31b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$BindingsToNodesMap.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$BindingsToNodesMap.class
index 7ae26cb..dbcb9b3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$BindingsToNodesMap.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$BindingsToNodesMap.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparable.class
index 32c7565..1f94e2a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparer.class
index 7169c70..7139b33 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util$Comparer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util.class
index 2e82191..4f99087 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/Util.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.class
index 310f223..3debc17 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet$HashableWeakReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet$HashableWeakReference.class
index 888ec93..caed153 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet$HashableWeakReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet$HashableWeakReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.class
index eb217b8..906823f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray$HashableWeakReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray$HashableWeakReference.class
index cee67e5..b1b503b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray$HashableWeakReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray$HashableWeakReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.class
index 7dbdc14..215a6cf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
index 724696c..7cf3f28 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2015 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -32,6 +32,7 @@
 element_nullName = Name cannot be null
 element_nullType = Type cannot be null
 element_illegalParent = Illegal parent argument
+element_moduleInfoNotSupported=module-info.class is not supported by method IPackageFragment.getClassFile(String).
 
 ### java model operations
 operation_needElements = Operation requires one or more elements
@@ -182,6 +183,8 @@
 classpath_duplicateEntryExtraAttribute = Duplicate extra attribute: ''{0}'' in classpath entry ''{1}'' for project ''{2}''
 classpath_deprecated_variable = Classpath variable ''{0}'' in project ''{1}'' is deprecated: {2}
 classpath_invalidExternalAnnotationPath = Invalid external annotation path: ''{0}'' in project ''{1}'', for classpath entry ''{2}''
+classpath_testSourceRequiresSeparateOutputFolder=Test source folder ''{0}'' in project ''{1}'' must have a separate output folder
+classpath_testOutputFolderMustBeSeparateFromMainOutputFolders=Test source folder ''{0}'' in project ''{1}'' must have an output folder that is not also used for main sources
 
 ### miscellaneous
 buffer_closed=Buffer is closed
@@ -193,6 +196,7 @@
 savedState_jobName = Processing Java changes since last activation
 refreshing_external_folders = Refreshing external folders
 synchronizing_projects_job = Synchronizing projects
+internal_error=Unexpected internal error
 
 ## java model initialization
 javamodel_initialization = Initializing Java tooling
@@ -224,6 +228,13 @@
 convention_package_nameWithBlanks = A package name must not start or end with a blank
 convention_package_consecutiveDotsName = A package name must not contain two consecutive dots
 convention_package_uppercaseName = By convention, package names usually start with a lowercase letter
+convention_module_nullName = A module name must not be null
+convention_module_emptyName = A module name must not be empty
+convention_module_dotName = A module name cannot start or end with a dot
+convention_module_nameWithBlanks = A module name must not start or end with a blank
+convention_module_consecutiveDotsName = A module name must not contain consecutive dots
+convention_module_uppercaseName = By convention, module names usually start with a lowercase letter
+convention_module_javaName = 'java' is reserved for system modules
 
 ### DOM
 dom_cannotDetail = Unable to generate detailed source indexes
@@ -378,6 +389,10 @@
 disassembler_extendedannotation_typepath_innertype=INNER_TYPE
 disassembler_extendedannotation_typepath_wildcard=WILDCARD
 disassembler_extendedannotation_typepath_typeargument=TYPE_ARGUMENT({0})
+disassembler_module_version=// Version: {0}
+disassembler_module_version_none=<none>
+disassembler_modulepackagesattributeheader = Module packages:
+disassembler_modulemainclassattributeheader=Module main class:
 
 ### classfileformat decoding
 classfileformat_versiondetails =\ (version {0} : {1}.{2}, {3})
@@ -431,4 +446,3 @@
 
 ### Eclipse Java Core completion messages.
 engine_completing = Computing proposals...
-code_assist_internal_error=Code assist internal error
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.class
index 1999cc2..2aee6d0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.class
index 9de5e03..40da8ae 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.class
index d889f9a..84b5d93 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.class
index 7683dab..e14b353 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.class
index 0bb3d7b..3982f28 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.class
index cabe599..c66e8da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.class
index 05dbfc4..69afe37 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.class
index 2da969e..19ca21f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.class
index 2564b70..ecbfecb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.class
index 40a737c..60dc8f8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.class
index e4ccf82..e94aacb 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.class
index ee63178..e6a51f3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton$BinaryMethodSkeleton.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton$BinaryMethodSkeleton.class
index e30df08..50156ab 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton$BinaryMethodSkeleton.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton$BinaryMethodSkeleton.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.class
index ae407f2..6bb26e6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.class
index 203c3df..bbc47da 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.class
index 2ebd06d..020e13e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$1.class
index ceed3eb..494ade3 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$2.class
index 9279b04..3e5c78b 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.class
index b1022eb..f8405e7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.class
index 4399a4e..c20d929 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1.class
index dd5c710..1cfb20d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1ForwardingRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1ForwardingRequestor.class
index d868bfc..fa424b8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1ForwardingRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$1ForwardingRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$2.class
index b1aa65c..3ff6929 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$3.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$3.class
index 3d674ab..514bcc7 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$3.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$3.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$4.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$4.class
index e232c81..a3d0d2f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$4.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$4.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$5.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$5.class
index c83b5f3..39d5342 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$5.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext$5.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.class
index 8a2f352..5e0b37c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.class
index b7f1971..ebe605e 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1.class
index ad51eb7..39acc43 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1CompilerRequestor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1CompilerRequestor.class
index 14c6910..69de707 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1CompilerRequestor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator$1CompilerRequestor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.class
index d784d3c..3c73b24 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.class
index c20cb4d..b52d3d9 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.class
index f1dc554..842e4a1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.class
index 317ee94..37d64c0 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$1.class
new file mode 100644
index 0000000..e516a50
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$2.class
new file mode 100644
index 0000000..eb44010
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.class
index b0c82af..546ad73 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.class
index 79b4ebf..3ef8255 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.class
index 64a3160..5aa463d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator$1.class
index 8c2f05a..dde930f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.class
index 2e8eb63..cf3cad6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.class
index 9f84c89..9ffec49 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token$WrapPolicy.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token$WrapPolicy.class
index 5d407da..f41a604 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token$WrapPolicy.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token$WrapPolicy.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token.class
index 63d1290..875db80 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/Token.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager$1.class
index 20040c3..16a1e39 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.class
index 8a9e963..76d87bf 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.class
index 6365818..d0f5da6 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.class
index 542e9ed..a44a79d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$LineAnalyzer.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$LineAnalyzer.class
index 66ea0b6..8ebb601 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$LineAnalyzer.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$LineAnalyzer.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$NLSTagHandler.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$NLSTagHandler.class
index c55600f..628a3e8 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$NLSTagHandler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$NLSTagHandler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapInfo.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapInfo.class
index 6fc682b..6668cbc 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapInfo.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapInfo.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapResult.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapResult.class
index 185cab1..4128f87 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapResult.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapResult.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapsApplier.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapsApplier.class
index f927e5c..c6a5146 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapsApplier.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor$WrapsApplier.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.class
index 68819ff..f903c98 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$1.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$1.class
index c5bc69e..7866e32 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$2.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$2.class
index 609f238..9cbeb34 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$FieldAccessAdapter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$FieldAccessAdapter.class
index 7e203ed..8501f18 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$FieldAccessAdapter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator$FieldAccessAdapter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.class
index 3f59d94..d90d6fd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.class b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.class
index ebbd897..a4ad139 100644
--- a/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$CommandController.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$CommandController.class
index ba0437a..32d4554 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$CommandController.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$CommandController.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$LogModeMessagePrinter.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$LogModeMessagePrinter.class
index 3a6eacc..8cd052f 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$LogModeMessagePrinter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$LogModeMessagePrinter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$MessagePrinter.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$MessagePrinter.class
index 5daa984..5bb90d2 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$MessagePrinter.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajc/Main$MessagePrinter.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/HtmlDecorator.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/HtmlDecorator.class
index ee10840..f61176a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/HtmlDecorator.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/HtmlDecorator.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/JavadocRunner.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/JavadocRunner.class
index a8abf42..b4c38d4 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/JavadocRunner.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/JavadocRunner.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$1.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$1.class
index 9fbe293..dd31047 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$2.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$2.class
index c3c4bd5..4d2782c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main.class
index 07a2c45..5636d8d 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/Main.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/StructureUtil.class b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/StructureUtil.class
index c273586..6eea8ad 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/StructureUtil.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ajdoc/StructureUtil.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/Ajc10.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/Ajc10.class
index 6633ed0..ffef0c1 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/Ajc10.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/Ajc10.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1.class
index e06c83b..aa6c88a 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1Args.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1Args.class
index eac35af..310a5bd 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1Args.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$1Args.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$2.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$2.class
index e5f4578..608a64c 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$2.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$2.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$AntMessageHandler.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$AntMessageHandler.class
index d5bac58..a717350 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$AntMessageHandler.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$AntMessageHandler.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$CompilerArg.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$CompilerArg.class
new file mode 100644
index 0000000..c575b26
--- /dev/null
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$CompilerArg.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$GuardedCommand.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$GuardedCommand.class
index aeb0a67..c601624 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$GuardedCommand.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask$GuardedCommand.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask.class
index a90627a..7fb00ff 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/AjcTask.class
Binary files differ
diff --git a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/compilers/Ajc.class b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/compilers/Ajc.class
index 28ef827..39c47f70 100644
--- a/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/compilers/Ajc.class
+++ b/org.aspectj.ajde/classes/org/aspectj/tools/ant/taskdefs/compilers/Ajc.class
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/ajde/core/ICompilerConfiguration.java b/org.aspectj.ajde/source/org/aspectj/ajde/core/ICompilerConfiguration.java
index ef3a56e..8f83517 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajde/core/ICompilerConfiguration.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajde/core/ICompilerConfiguration.java
@@ -61,10 +61,11 @@
 	 */
 	public List<File> getProjectSourceFilesChanged();
 
-	/**
-	 * @return the classpath to use
-	 */
 	public String getClasspath();
+	
+	public String getModulepath();
+	
+	public String getModuleSourcepath();
 
 	/**
 	 * @return the IOutputLocationManager associated with this compiler configuration
diff --git a/org.aspectj.ajde/source/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.java b/org.aspectj.ajde/source/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.java
index 4ab05c9..5577a01 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajde/core/internal/AjdeCoreBuildManager.java
@@ -37,6 +37,7 @@
 import org.aspectj.bridge.Message;
 import org.aspectj.bridge.SourceLocation;
 import org.aspectj.bridge.context.CompilationAndWeavingContext;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.util.LangUtil;
 
@@ -277,6 +278,14 @@
 				both.addAll(configClasspath);
 				both.addAll(toAdd);
 				config.setClasspath(both);
+				Classpath[] checkedClasspaths = config.getCheckedClasspaths();
+				ArrayList<Classpath> cps = parser.handleClasspath(toAdd, compilerConfig.getProjectEncoding());
+				Classpath[] newCheckedClasspaths = new Classpath[checkedClasspaths.length+cps.size()];
+				System.arraycopy(checkedClasspaths, 0, newCheckedClasspaths, 0, checkedClasspaths.length);
+				for (int i=0;i<cps.size();i++) {
+					newCheckedClasspaths[checkedClasspaths.length+i] = cps.get(i);
+				}
+				config.setCheckedClasspaths(newCheckedClasspaths);
 			}
 		}
 
@@ -295,18 +304,18 @@
 		}
 
 		// Process the INPATH
-		mergeInto(config.getInpath(), compilerConfig.getInpath());
+		config.addToInpath(compilerConfig.getInpath());
 		// bug 168840 - calling 'setInPath(..)' creates BinarySourceFiles which
 		// are used to see if there have been changes in classes on the inpath
 		if (config.getInpath() != null) {
-			config.setInPath(config.getInpath());
+			config.processInPath();
 		}
 
 		// Process the SOURCE PATH RESOURCES
 		config.setSourcePathResources(compilerConfig.getSourcePathResources());
 
 		// Process the ASPECTPATH
-		mergeInto(config.getAspectpath(), compilerConfig.getAspectPath());
+		config.addToAspectpath(compilerConfig.getAspectPath());
 
 		// Process the JAVA OPTIONS MAP
 		Map<String,String> jom = compilerConfig.getJavaOptionsMap();
@@ -347,17 +356,6 @@
 		return config;
 	}
 
-	private <T> void mergeInto(Collection<T> target, Collection<T> source) {
-		if ((null == target) || (null == source)) {
-			return;
-		}
-		for (T next : source) {
-			if (!target.contains(next)) {
-				target.add(next);
-			}
-		}
-	}
-
 	/**
 	 * Helper method for configure build options. This reads all command-line options specified in the non-standard options text
 	 * entry and sets any corresponding unset values in config.
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/BuildArgParser.java b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/BuildArgParser.java
index f6316cd..448618c 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/BuildArgParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/BuildArgParser.java
@@ -12,26 +12,43 @@
 
 package org.aspectj.ajdt.ajc;
 
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.StringTokenizer;
+
 import org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceLocation;
 import org.aspectj.ajdt.internal.core.builder.AjBuildConfig;
-import org.aspectj.bridge.*;
+import org.aspectj.bridge.CountingMessageHandler;
+import org.aspectj.bridge.IMessage;
+import org.aspectj.bridge.IMessageHandler;
+import org.aspectj.bridge.ISourceLocation;
+import org.aspectj.bridge.Message;
+import org.aspectj.bridge.MessageUtil;
+import org.aspectj.bridge.SourceLocation;
+import org.aspectj.bridge.Version;
 import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
 import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.AptProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.util.FileUtil;
 import org.aspectj.util.LangUtil;
 import org.aspectj.weaver.Constants;
 import org.aspectj.weaver.Dump;
 import org.aspectj.weaver.WeaverMessages;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.*;
-
 @SuppressWarnings("unchecked")
 public class BuildArgParser extends Main {
 
@@ -157,11 +174,16 @@
 			// TODO fix org.eclipse.jdt.internal.compiler.batch.Main so this hack isn't needed
 			javaArgList.add("-classpath");
 			javaArgList.add(parser.classpath == null ? System.getProperty("user.dir") : parser.classpath);
-			javaArgList.add("-bootclasspath");
-			javaArgList.add(parser.bootclasspath == null ? System.getProperty("user.dir") : parser.bootclasspath);
+//			javaArgList.add("-bootclasspath");
+//			javaArgList.add(parser.bootclasspath == null ? System.getProperty("user.dir") : parser.bootclasspath);
 			javaArgList.addAll(parser.getUnparsedArgs());
 			super.configure(javaArgList.toArray(new String[javaArgList.size()]));
 
+			if (parser.getModuleInfoArgument() != null) {
+				IModule moduleDesc = super.getModuleDesc(parser.getModuleInfoArgument());
+				buildConfig.setModuleDesc(moduleDesc);
+			}
+
 			if (!proceed) {
 				buildConfig.doNotProceed();
 				return buildConfig;
@@ -181,8 +203,20 @@
 			}
 
 			if (setClasspath) {
+				// This computed classpaths will be missing aspectpaths, inpaths, add those first
 				buildConfig.setClasspath(getClasspath(parser));
+				// Implicit inclusion of jmods on module path
+				if (checkVMVersion(ClassFileConstants.JDK9)) {
+					// Add the default jmods path? javac seems to do this
+					File jmods = new File(getJavaHome(),"jmods");
+					parser.modulepath = (parser.modulepath == null)?jmods.getAbsolutePath():parser.modulepath+File.pathSeparator+jmods.getAbsolutePath();
+				}
+				buildConfig.setModulepath(getModulepath(parser));
+				buildConfig.setModulepathClasspathEntries(handleModulepath(parser.modulepath));
+				buildConfig.setModulesourcepath(getModulesourcepath(parser));
+				buildConfig.setModulesourcepathClasspathEntries(handleModuleSourcepath(parser.modulesourcepath));
 				buildConfig.setBootclasspath(getBootclasspath(parser));
+				// TODO other paths (module/module source)
 			}
 
 			if (incrementalMode && (0 == buildConfig.getSourceRoots().size())) {
@@ -195,28 +229,22 @@
 			File outjar = buildConfig.getOutputJar();
 			if (outjar != null) {
 
-				/* Search injars */
-				for (Iterator i = buildConfig.getInJars().iterator(); i.hasNext();) {
-					File injar = (File) i.next();
+				for (File injar: buildConfig.getInJars()) {
 					if (injar.equals(outjar)) {
 						String message = WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
 						MessageUtil.error(handler, message);
 					}
 				}
 
-				/* Search inpath */
-				for (Iterator i = buildConfig.getInpath().iterator(); i.hasNext();) {
-					File inPathElement = (File) i.next();
+				for (File inPathElement: buildConfig.getInpath()) {
 					if (!inPathElement.isDirectory() && inPathElement.equals(outjar)) {
 						String message = WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
 						MessageUtil.error(handler, message);
 					}
 				}
 
-				/* Search aspectpath */
-				for (Iterator i = buildConfig.getAspectpath().iterator(); i.hasNext();) {
-					File pathElement = (File) i.next();
-					if (!pathElement.isDirectory() && pathElement.equals(outjar)) {
+				for (File aspectPathElement: buildConfig.getAspectpath()) {
+					if (!aspectPathElement.isDirectory() && aspectPathElement.equals(outjar)) {
 						String message = WeaverMessages.format(WeaverMessages.OUTJAR_IN_INPUT_PATH);
 						MessageUtil.error(handler, message);
 					}
@@ -237,6 +265,29 @@
 		return buildConfig;
 	}
 
+	private void augmentCheckedClasspaths(List<File> extraPathEntries, String encoding) {
+		if (extraPathEntries.size() == 0) {
+			return;
+		}
+		ArrayList<String> asList = toArrayList(extraPathEntries);
+		List<FileSystem.Classpath> newClasspathEntries = handleClasspath(asList, encoding);
+		FileSystem.Classpath[] newCheckedClasspaths = new FileSystem.Classpath[checkedClasspaths.length + newClasspathEntries.size()];
+		System.arraycopy(checkedClasspaths, 0, newCheckedClasspaths, 0, checkedClasspaths.length);
+		for (int i = 0; i < newClasspathEntries.size();i++) {
+			newCheckedClasspaths[i + checkedClasspaths.length] = newClasspathEntries.get(i);
+		}
+		checkedClasspaths = newCheckedClasspaths;
+	}
+
+	private ArrayList<String> toArrayList(java.util.List<File> files) {
+		ArrayList<String> arrayList = new ArrayList<String>();
+		for (File file: files) {
+			arrayList.add(file.getAbsolutePath());
+		}
+		return arrayList;
+	}
+
+	@Override
 	public void printVersion() {
 		final String version = bind("misc.version", //$NON-NLS-1$
 				new String[] { bind("compiler.name"), //$NON-NLS-1$
@@ -315,13 +366,34 @@
 		List<String> ret = new ArrayList<String>();
 
 		if (parser.bootclasspath == null) {
-			addClasspath(System.getProperty("sun.boot.class.path", ""), ret);
+			if (LangUtil.is19VMOrGreater()) {
+				addClasspath(LangUtil.getJrtFsFilePath(),ret);
+			} else {
+				addClasspath(System.getProperty("sun.boot.class.path", ""), ret);
+			}
 		} else {
 			addClasspath(parser.bootclasspath, ret);
 		}
 		return ret;
 	}
+	
+	public List<String> getModulepath(AjcConfigParser parser) {
+		List<String> ret = new ArrayList<String>();
+		addClasspath(parser.modulepath, ret);
+		return ret;
+	}
 
+	public List<String> getModulesourcepath(AjcConfigParser parser) {
+		List<String> ret = new ArrayList<String>();
+		addClasspath(parser.modulesourcepath, ret);
+		return ret;
+	}
+
+	@Override
+	public ArrayList<FileSystem.Classpath> handleClasspath(ArrayList<String> classpaths, String customEncoding) {
+		return super.handleClasspath(classpaths, customEncoding);
+	}
+	
 	/**
 	 * If the classpath is not set, we use the environment's java.class.path, but remove the aspectjtools.jar entry from that list
 	 * in order to prevent wierd bootstrap issues (refer to bug#39959).
@@ -376,6 +448,9 @@
 	}
 
 	private void addClasspath(String classpath, List<String> classpathCollector) {
+		if (classpath == null) {
+			return;
+		}
 		StringTokenizer tokenizer = new StringTokenizer(classpath, File.pathSeparator);
 		while (tokenizer.hasMoreTokens()) {
 			classpathCollector.add(tokenizer.nextToken());
@@ -385,10 +460,13 @@
 	private class AjcConfigParser extends ConfigParser {
 		private String bootclasspath = null;
 		private String classpath = null;
+		private String modulepath = null;
+		private String modulesourcepath = null;
 		private String extdirs = null;
 		private List unparsedArgs = new ArrayList();
 		private AjBuildConfig buildConfig;
 		private IMessageHandler handler;
+		private String moduleInfoArgument;
 
 		public AjcConfigParser(AjBuildConfig buildConfig, IMessageHandler handler) {
 			this.buildConfig = buildConfig;
@@ -398,45 +476,56 @@
 		public List getUnparsedArgs() {
 			return unparsedArgs;
 		}
+		
+		public String getModuleInfoArgument() {
+			return this.moduleInfoArgument;
+		}
 
 		/**
 		 * Extract AspectJ-specific options (except for argfiles). Caller should warn when sourceroots is empty but in incremental
 		 * mode. Signals warnings or errors through handler set in constructor.
 		 */
-		public void parseOption(String arg, LinkedList args) { // XXX use ListIterator.remove()
+		@Override
+		public void parseOption(String arg, LinkedList<Arg> args) { // XXX use ListIterator.remove()
 			int nextArgIndex = args.indexOf(arg) + 1; // XXX assumes unique
 			// trim arg?
 			buildConfig.setXlazyTjp(true); // now default - MINOR could be pushed down and made default at a lower level
 			if (LangUtil.isEmpty(arg)) {
 				showWarning("empty arg found");
+			} else if (arg.endsWith("module-info.java")) {
+				moduleInfoArgument = arg;
 			} else if (arg.equals("-inpath")) {
 				if (args.size() > nextArgIndex) {
 					// buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_Inpath, CompilerOptions.PRESERVE);
 
-					List<File> inPath = buildConfig.getInpath();
-					StringTokenizer st = new StringTokenizer(((ConfigParser.Arg) args.get(nextArgIndex)).getValue(),
+					StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(),
 							File.pathSeparator);
+					boolean inpathChange = false;
 					while (st.hasMoreTokens()) {
 						String filename = st.nextToken();
 						File file = makeFile(filename);
 						if (FileUtil.isZipFile(file)) {
-							inPath.add(file);
+							buildConfig.addToInpath(file);
+							inpathChange = true;
 						} else {
 							if (file.isDirectory()) {
-								inPath.add(file);
+								buildConfig.addToInpath(file);
+								inpathChange = true;
 							} else {
 								showWarning("skipping missing, empty or corrupt inpath entry: " + filename);
 							}
 						}
 					}
-					buildConfig.setInPath(inPath);
+					if (inpathChange) {
+						buildConfig.processInPath();
+					}
 					args.remove(args.get(nextArgIndex));
 				}
 			} else if (arg.equals("-injars")) {
 				if (args.size() > nextArgIndex) {
 					// buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_InJARs, CompilerOptions.PRESERVE);
 
-					StringTokenizer st = new StringTokenizer(((ConfigParser.Arg) args.get(nextArgIndex)).getValue(),
+					StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(),
 							File.pathSeparator);
 					while (st.hasMoreTokens()) {
 						String filename = st.nextToken();
@@ -457,13 +546,14 @@
 				}
 			} else if (arg.equals("-aspectpath")) {
 				if (args.size() > nextArgIndex) {
-					StringTokenizer st = new StringTokenizer(((ConfigParser.Arg) args.get(nextArgIndex)).getValue(),
+					StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(),
 							File.pathSeparator);
 					while (st.hasMoreTokens()) {
 						String filename = st.nextToken();
 						File jarFile = makeFile(filename);
 						if (FileUtil.isZipFile(jarFile) || jarFile.isDirectory()) {
-							buildConfig.getAspectpath().add(jarFile);
+//							buildConfig.getAspectpath().add(jarFile);
+							buildConfig.addToAspectpath(jarFile);
 						} else {
 							showWarning("skipping missing, empty or corrupt aspectpath entry: " + filename);
 						}
@@ -476,7 +566,7 @@
 			} else if (arg.equals("-sourceroots")) {
 				if (args.size() > nextArgIndex) {
 					List<File> sourceRoots = new ArrayList<File>();
-					StringTokenizer st = new StringTokenizer(((ConfigParser.Arg) args.get(nextArgIndex)).getValue(),
+					StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(),
 							File.pathSeparator);
 					while (st.hasMoreTokens()) {
 						File f = makeFile(st.nextToken());
@@ -496,7 +586,7 @@
 			} else if (arg.equals("-outjar")) {
 				if (args.size() > nextArgIndex) {
 					// buildConfig.getAjOptions().put(AjCompilerOptions.OPTION_OutJAR, CompilerOptions.GENERATE);
-					File jarFile = makeFile(((ConfigParser.Arg) args.get(nextArgIndex)).getValue());
+					File jarFile = makeFile(args.get(nextArgIndex).getValue());
 					if (!jarFile.isDirectory()) {
 						try {
 							if (!jarFile.exists()) {
@@ -517,7 +607,7 @@
 				buildConfig.setOutxmlName(org.aspectj.bridge.Constants.AOP_AJC_XML);
 			} else if (arg.equals("-outxmlfile")) {
 				if (args.size() > nextArgIndex) {
-					String name = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
+					String name = args.get(nextArgIndex).getValue();
 					buildConfig.setOutxmlName(name);
 					args.remove(args.get(nextArgIndex));
 				} else {
@@ -533,7 +623,7 @@
 				buildConfig.setIncrementalMode(true);
 			} else if (arg.equals("-XincrementalFile")) {
 				if (args.size() > nextArgIndex) {
-					File file = makeFile(((ConfigParser.Arg) args.get(nextArgIndex)).getValue());
+					File file = makeFile(args.get(nextArgIndex).getValue());
 					buildConfig.setIncrementalFile(file);
 					if (!file.canRead()) {
 						showError("bad -XincrementalFile : " + file);
@@ -604,7 +694,7 @@
 				buildConfig.setShowWeavingInformation(true);
 			} else if (arg.equals("-Xlintfile")) {
 				if (args.size() > nextArgIndex) {
-					File lintSpecFile = makeFile(((ConfigParser.Arg) args.get(nextArgIndex)).getValue());
+					File lintSpecFile = makeFile(args.get(nextArgIndex).getValue());
 					// XXX relax restriction on props file suffix?
 					if (lintSpecFile.canRead() && lintSpecFile.getName().endsWith(".properties")) {
 						buildConfig.setLintSpecFile(lintSpecFile);
@@ -629,7 +719,7 @@
 				}
 			} else if (arg.equals("-bootclasspath")) {
 				if (args.size() > nextArgIndex) {
-					String bcpArg = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
+					String bcpArg = args.get(nextArgIndex).getValue();
 					StringBuffer bcp = new StringBuffer();
 					StringTokenizer strTok = new StringTokenizer(bcpArg, File.pathSeparator);
 					while (strTok.hasMoreTokens()) {
@@ -645,7 +735,7 @@
 				}
 			} else if (arg.equals("-classpath") || arg.equals("-cp")) {
 				if (args.size() > nextArgIndex) {
-					String cpArg = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
+					String cpArg = args.get(nextArgIndex).getValue();
 					StringBuffer cp = new StringBuffer();
 					StringTokenizer strTok = new StringTokenizer(cpArg, File.pathSeparator);
 					while (strTok.hasMoreTokens()) {
@@ -659,9 +749,25 @@
 				} else {
 					showError("-classpath requires classpath entries");
 				}
+			} else if (arg.equals("--module-path") || arg.equals("-p")) {
+				if (args.size() > nextArgIndex) {
+					String mpArg = args.get(nextArgIndex).getValue();
+					modulepath = mpArg;
+					args.remove(args.get(nextArgIndex));
+				} else {
+					showError("--module-path requires modulepath entries");
+				}
+			} else if (arg.equals("--module-source-path") || arg.equals("-p")) {
+				if (args.size() > nextArgIndex) {
+					String mspArg = args.get(nextArgIndex).getValue();
+					modulesourcepath = mspArg;
+					args.remove(args.get(nextArgIndex));
+				} else {
+					showError("--module-source-path requires modulepath entries");
+				}
 			} else if (arg.equals("-extdirs")) {
 				if (args.size() > nextArgIndex) {
-					String extdirsArg = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
+					String extdirsArg = args.get(nextArgIndex).getValue();
 					StringBuffer ed = new StringBuffer();
 					StringTokenizer strTok = new StringTokenizer(extdirsArg, File.pathSeparator);
 					while (strTok.hasMoreTokens()) {
@@ -701,8 +807,10 @@
 					buildConfig.setTargetAspectjRuntimeLevel(Constants.RUNTIME_LEVEL_12);
 				} else if (arg.endsWith(":1.5")) {
 					buildConfig.setTargetAspectjRuntimeLevel(Constants.RUNTIME_LEVEL_15);
+				} else if (arg.endsWith(":1.9")) {
+					buildConfig.setTargetAspectjRuntimeLevel(Constants.RUNTIME_LEVEL_19);
 				} else {
-					showError("-Xajruntimetarget:<level> only supports a target level of 1.2 or 1.5");
+					showError("-Xajruntimetarget:<level> supports a target level of 1.2, 1.5, 1.9");
 				}
 			} else if (arg.equals("-timers")) {
 				buildConfig.setTiming(true);
@@ -721,11 +829,18 @@
 			} else if (arg.equals("-1.8")) {
 				buildConfig.setBehaveInJava5Way(true);
 				unparsedArgs.add("-1.8");
+			} else if (arg.equals("-1.9")) {
+				buildConfig.setBehaveInJava5Way(true);
+				unparsedArgs.add("-1.9");
+			} else if (arg.equals("-10")) {
+				buildConfig.setBehaveInJava5Way(true);
+				unparsedArgs.add("-10");
 			} else if (arg.equals("-source")) {
 				if (args.size() > nextArgIndex) {
-					String level = ((ConfigParser.Arg) args.get(nextArgIndex)).getValue();
+					String level = args.get(nextArgIndex).getValue();
 					if (level.equals("1.5") || level.equals("5") || level.equals("1.6") || level.equals("6") || level.equals("1.7")
-							|| level.equals("7") || level.equals("8") || level.equals("1.8")) {
+							|| level.equals("7") || level.equals("8") || level.equals("1.8")
+							|| level.equals("9") || level.equals("1.9") || level.equals("10")) {
 						buildConfig.setBehaveInJava5Way(true);
 					}
 					unparsedArgs.add("-source");
@@ -759,6 +874,7 @@
 			}
 		}
 
+		@Override
 		public void showError(String message) {
 			ISourceLocation location = null;
 			if (buildConfig.getConfigFile() != null) {
@@ -769,6 +885,7 @@
 			// MessageUtil.error(handler, CONFIG_MSG + message);
 		}
 
+		@Override
 		protected void showWarning(String message) {
 			ISourceLocation location = null;
 			if (buildConfig.getConfigFile() != null) {
@@ -815,4 +932,15 @@
 		}
 
 	}
+	
+	@Override
+	public boolean checkVMVersion(long minimalSupportedVersion) {
+		return super.checkVMVersion(minimalSupportedVersion);
+	}
+	
+	@Override
+	public void initRootModules(LookupEnvironment environment, FileSystem fileSystem) {
+		super.initRootModules(environment, fileSystem);
+	}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/ConfigParser.java b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/ConfigParser.java
index afa936d..1bbd332 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/ConfigParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/ConfigParser.java
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.StringTokenizer;
 
 public class ConfigParser {
 	Location location;
@@ -44,6 +45,21 @@
 		for (int i = 0; i < argsArray.length; i++) {
 			args.add(new Arg(argsArray[i], location));
 		}
+		String aspectjOptions = null;
+		try {
+			aspectjOptions = System.getenv("ASPECTJ_OPTS");
+			if (aspectjOptions == null) {
+				aspectjOptions = System.getProperty("ASPECTJ_OPTS");
+			}
+		} catch (Throwable t) {
+			aspectjOptions = null;
+		}
+		if (aspectjOptions != null) {
+			StringTokenizer st = new StringTokenizer(aspectjOptions);
+			while (st.hasMoreElements()) {
+				args.add(new Arg(st.nextToken(),location));
+			}
+		}
 		parseArgs(args);
 	}
 
@@ -138,12 +154,14 @@
 		if (sourceFile.getName().charAt(0) == '*') {
 			if (sourceFile.getName().equals("*.java")) {
 				addFiles(sourceFile.getParentFile(), new FileFilter() {
+					@Override
 					public boolean accept(File f) {
 						return f != null && f.getName().endsWith(".java");
 					}
 				});
 			} else if (sourceFile.getName().equals("*.aj")) {
 				addFiles(sourceFile.getParentFile(), new FileFilter() {
+					@Override
 					public boolean accept(File f) {
 						return f != null && f.getName().endsWith(".aj");
 					}
@@ -176,7 +194,7 @@
 		}
 	}
 
-	protected void parseOption(String arg, LinkedList args) {
+	protected void parseOption(String arg, LinkedList<Arg> args) {
 		showWarning("unrecognized option: " + arg);
 	}
 
@@ -191,22 +209,22 @@
 		throw new ParseException(CONFIG_MSG + message, location);
 	}
 
-	void parseArgs(LinkedList args) {
+	void parseArgs(LinkedList<Arg> args) {
 		while (args.size() > 0) {
 			parseOneArg(args);
 		}
 	}
 
-	protected Arg removeArg(LinkedList args) {
+	protected Arg removeArg(LinkedList<Arg> args) {
 		if (args.size() == 0) {
 			showError("value missing");
 			return null;
 		} else {
-			return (Arg) args.removeFirst();
+			return args.removeFirst();
 		}
 	}
 
-	protected String removeStringArg(LinkedList args) {
+	protected String removeStringArg(LinkedList<Arg> args) {
 		Arg arg = removeArg(args);
 		if (arg == null) {
 			return null;
@@ -235,7 +253,7 @@
 		return false;
 	}
 
-	void parseOneArg(LinkedList args) {
+	void parseOneArg(LinkedList<Arg> args) {
 		Arg arg = removeArg(args);
 		String v = arg.getValue();
 		location = arg.getLocation();
@@ -245,6 +263,9 @@
 			parseConfigFileHelper(makeFile(removeArg(args).getValue()));
 		} else if (isSourceFileName(v)) {
 			addFileOrPattern(makeFile(v));
+			if (v.endsWith("module-info.java")) {
+				parseOption(arg.getValue(), args);				
+			}
 		} else if (isXml(v)) {
 			addXmlFile(makeFile(v));
 		} else {
@@ -284,6 +305,11 @@
 		private Location location;
 		private String value;
 
+		@Override
+		public String toString() {
+			return "Arg[location="+location+" value="+value+"]";
+		}
+		
 		public Arg(String value, Location location) {
 			this.value = value;
 			this.location = location;
@@ -313,6 +339,7 @@
 
 		public abstract int getLine();
 
+		@Override
 		public abstract String toString();
 	}
 
@@ -325,36 +352,44 @@
 			this.file = file;
 		}
 
+		@Override
 		public File getFile() {
 			return file;
 		}
 
+		@Override
 		public File getDirectory() {
 			return file.getParentFile();
 		}
 
+		@Override
 		public int getLine() {
 			return line;
 		}
 
+		@Override
 		public String toString() {
 			return file.getPath() + ":" + line;
 		}
 	}
 
 	static class CommandLineLocation extends Location {
+		@Override
 		public File getFile() {
 			return new File(System.getProperty("user.dir"));
 		}
 
+		@Override
 		public File getDirectory() {
 			return new File(System.getProperty("user.dir"));
 		}
 
+		@Override
 		public int getLine() {
 			return -1;
 		}
 
+		@Override
 		public String toString() {
 			return "command-line";
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/messages.properties b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/messages.properties
index e0c9429..516af38 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/messages.properties
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/ajc/messages.properties
@@ -4,15 +4,143 @@
      The -Xlintfile:lint.properties allows fine-grained control. In tools.jar, see
      org/aspectj/weaver/XlintDefault.properties for the default behavior and a template to copy. 
 ### AspectJ-specific messages 
-compiler.name = AspectJ Compiler 1.8.12
-compiler.version = Eclipse Compiler Neon.2 #75dbfad0, 3.12
+compiler.name = AspectJ Compiler 1.9.1
+compiler.version = Eclipse Compiler #abe06abe4ce1(Apr2018), 3.14
 compiler.copyright = 
 
+
 ## this next one superceded by above...
 ## configure.version = AspectJ Compiler 1.1 
 
 configure.directoryNotExist = invalid option: {0}
-## 3456789012345678901234567890123456789012345678901234567890123456789012345
+
+### compile
+compile.repetition = [repetition {0}/{1}]
+compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
+compile.detailedTime = [parse: {0} ms ({1}%), resolve: {2} ms ({3}%), analyze: {4} ms ({5}%), generate: {6} ms ({7}%) ]
+compile.ioTime = [i/o: read: {0} ms ({1}%), write: {2} ms ({3}%)]
+compile.averageTime = [average, excluding min-max {0} lines in {1} ms: {2} lines/s]
+compile.totalTime = [total compilation time: {0}]
+compile.oneProblem = 1 problem ({0})
+compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
+compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
+compile.severalProblems = {0} problems ({1}, {2}, {3})
+compile.oneError = 1 error
+compile.severalErrors = {0} errors
+compile.oneWarning = 1 warning
+compile.severalWarnings = {0} warnings
+compile.oneInfo = 1 info
+compile.severalInfos = {0} info
+compile.oneClassFileGenerated = [1 .class file generated]
+compile.severalClassFilesGenerated = [{0} .class files generated]
+
+### configure
+configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
+configure.duplicateLog = duplicate log specification: {0}
+configure.duplicateRepeat = duplicate repeat specification: {0}
+configure.duplicateMaxProblems = duplicate max problems specification: {0}
+configure.duplicateCompliance = duplicate compliance setting specification: {0}
+configure.duplicateSource = duplicate source compliance setting specification: {0}
+configure.duplicateTarget = duplicate target compliance setting specification: {0}
+configure.source = source level should be comprised in between ''1.3'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0''): {0}
+configure.invalidSystem = invalid location for system libraries
+configure.unsupportedOption = option {0} not supported at compliance level 9 and above
+configure.duplicateOutputPath = duplicate output path specification: {0}
+configure.duplicateModulePath = duplicate module path specification: {0}
+configure.duplicateModuleSourcepath = duplicate source module path specification: {0}
+configure.invalidModuleDescriptor = cannot open the module descriptor from {0}
+configure.invalidModuleOption = incorrectly formatted option: {0}
+configure.duplicateExport = can specify a package in a module only once with --add-export
+configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
+configure.duplicateExtDirs = duplicate extdirs specification: {0}
+configure.duplicateSourcepath = duplicate sourcepath specification: {0}
+configure.invalidDebugOption = invalid debug option: {0}
+configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
+configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
+configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
+configure.targetJDK = target JDK should be comprised in between ''1.1'' and ''1.4'': {0}
+configure.incompatibleTargetForSource14 = ''1.4'' source mode requires ''-target 1.4'' : {0}
+configure.incompatibleComplianceForSource14 = ''1.4'' source mode requires ''-1.4'' compliance mode: {0}
+configure.incompatibleComplianceForTarget14 = ''1.4'' target mode requires ''-1.4'' compliance mode: {0}
+configure.incompatibleComplianceForTarget11 = ''1.1'' target mode requires ''-1.3'' compliance mode: {0}
+configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
+configure.repetition = repetition must be a positive integer: {0}
+configure.maxProblems = max problems must be a positive integer: {0}
+configure.invalidNowarnOption = invalid syntax for nowarn option: {0}
+
+configure.invalidErrorConfiguration = invalid error configuration: ''{0}''
+configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
+configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token
+
+configure.invalidInfoConfiguration = invalid info configuration: ''{0}''
+configure.invalidInfo = invalid info token: ''{0}''. Ignoring this info token and compiling
+configure.invalidInfoOption = invalid info option: ''{0}''. Must specify an info token
+
+configure.directoryNotExist = directory does not exist: {0}
+configure.IOError = i/o error : unable to retrieve .JAVA files in directory: {0}
+configure.unrecognizedOption = Unrecognized option : {0}
+configure.noClasspath = no classpath defined, using default directory instead
+configure.incorrectClasspath = incorrect classpath: {0}
+configure.invalidexpansionargumentname = expansion argument file {0} does not exist or cannot be read
+configure.cannotOpenLog = cannot open .log file: {0}
+configure.cannotOpenLogInvalidEncoding = cannot open .log file: {0}; because UTF-8 is not supported
+configure.unexpectedCustomEncoding = unexpected custom encoding specification: {0}[{1}]
+configure.unsupportedEncoding = unsupported encoding format: {0}
+configure.duplicateDefaultEncoding = duplicate default encoding format specification: {0}
+configure.invalidTaskTag ={0} is an invalid task tag
+configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
+configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
+configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
+configure.missingDestinationPath = destination path must be provided with module source path
+configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
+configure.unexpectedBracket = unexpected bracket: {0}
+configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
+configure.unexpectedDestinationPathEntryFile = unexpected destination path entry for file: {0}
+configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
+configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
+configure.invalidClassName = invalid class name: {0}
+configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath.
+configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
+configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
+configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required
+configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
+configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0}
+configure.missingwarningspropertiesfile=properties file {0} does not exist
+configure.ioexceptionwarningspropertiesfile=An IOException occurred while reading the properties file {0}
+configure.multipleencodings=Multiple encoding specified: {1}. The default encoding has been set to {0}
+configure.differentencodings=Found encoding {0}. Different encodings were specified: {1}
+configure.differentencoding=Found encoding {0}. A different encoding was specified: {1}
+
+configure.invalidModuleName = invalid module name: {0}
+### null annotations
+configure.invalidNullAnnot = Token {0} is not in the expected format "nullAnnot(<non null annotation name> | <nullable annotation name> | <non-null by default annotation name>)"
+configure.missingAnnotationPath = Missing argument to -annotationpath at ''{0}''
+
+### requestor
+requestor.error = {0}. ERROR in {1}
+requestor.warning = {0}. WARNING in {1}
+requestor.info = {0}. INFO in {1}
+requestor.extraerror = {0}. ERROR:
+requestor.extrawarning = {0}. WARNING:
+requestor.extrainfo = {0}. INFO:
+requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
+requestor.noFileNameSpecified = (original file name is not available)
+
+### EMACS STYLE
+output.emacs.error=error
+output.emacs.warning=warning
+output.emacs.info=info
+
+### unit
+unit.more = File {0} is specified more than once
+unit.missing = File {0} is missing
+
+### output
+output.noClassFileCreated = No .class file created for file {1} in {0} because of an IOException: {2}
+
+### miscellaneous
+misc.version = {0} {1}, {2}
+
 ### miscellaneous
 misc.usage = {0}\n\
 \n\
@@ -48,7 +176,7 @@
 \ Options enabled by default are prefixed with ''+''\n\
 \ \n\
 \ Classpath options:\n\
-\    -cp -classpath <directories and zip/jar files separated by ;>\n\
+\    -cp -classpath <directories and ZIP archives separated by ;>\n\
 \                       specify location for application classes and sources\n\
 \    -bootclasspath <directories and zip/jar files separated by ;>\n\
 \                       specify location for system classes\n\
@@ -58,17 +186,21 @@
 \                       when suffixed with ''[''<enc>'']'' (e.g. X.java[utf8])\n\
 \ \n\
 \ Compliance options:\n\
-\    -1.3               use 1.3 compliance level (implicit -source 1.3 -target 1.1)\n\
-\    -1.4             + use 1.4 compliance level\n\
+\    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
+\    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
 \    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)\n\
 \    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
 \    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
 \    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
-\    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
-\    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
+\    -1.9 -9 -9.0       use 1.9 compliance (-source 1.9 -target 1.9)\n\
+\    -source <version>  set source level: 1.3 to 1.9 (or 6, 6.0, etc)\n\
+\    -target <version>  set classfile target: 1.1 to 1.9 (or 6, 6.0, etc)\n\
+\                       cldc1.1 can also be used to generate the StackMap\n\
+\                       attribute\n\
 \ \n\
 \ Warning options:\n\
-\    -deprecation         + deprecation outside deprecated code\n\
+\    -deprecation     + deprecation outside deprecated code (equivalent to\n\
+\                       -warn:+deprecation)\n\
 \    -nowarn -warn:none disable all warnings\n\
 \    -warn:<warnings separated by ,>    enable exactly the listed warnings\n\
 \    -warn:+<warnings separated by ,>   enable additional warnings\n\
@@ -91,6 +223,8 @@
 \      emptyBlock           undocumented empty block\n\
 \      enumIdentifier       ''enum'' used as identifier\n\
 \      enumSwitch           incomplete enum switch\n\
+\      enumSwitchPedantic + report missing enum switch cases even\n\
+\                           in the presence of a default case\n\
 \      fallthrough          possible fall-through case\n\
 \      fieldHiding          field hiding another variable\n\
 \      finalBound           type parameter with final bound\n\
@@ -102,20 +236,53 @@
 \      includeAssertNull    raise null warnings for variables\n\
 \                           that got tainted in an assert expression\n\
 \      indirectStatic       indirect reference to static member\n\
+\      inheritNullAnnot     inherit null annotations\n\
 \      intfAnnotation     + annotation type used as super interface\n\
 \      intfNonInherited   + interface non-inherited method compatibility\n\
 \      intfRedundant        find redundant superinterfaces\n\
+\      invalidJavadoc       all warnings for malformed javadoc tags\n\
+\      invalidJavadocTag    validate javadoc tag arguments\n\
+\      invalidJavadocTagDep validate deprecated references in javadoc tag args\n\
+\      invalidJavadocTagNotVisible  validate non-visible references in javadoc\n\
+\							tag args\n\
+\      invalidJavadocVisibility(<visibility>)  specify visibility modifier\n\
+\							for malformed javadoc tag warnings\n\
 \      javadoc              invalid javadoc\n\
 \      localHiding          local variable hiding another variable\n\
 \      maskedCatchBlock   + hidden catch block\n\
+\      missingJavadocTags   missing Javadoc tags\n\
+\      missingJavadocTagsOverriding missing Javadoc tags in overriding methods\n\
+\      missingJavadocTagsMethod missing Javadoc tags for method type parameter\n\
+\      missingJavadocTagsVisibility(<visibility>)  specify visibility modifier\n\
+\							for missing javadoc tags warnings\n\
+\      missingJavadocComments   missing Javadoc comments\n\
+\      missingJavadocCommentsOverriding   missing Javadoc tags in overriding\n\
+\							methods\n\
+\      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
+\							modifier for missing javadoc comments warnings\n\
 \      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
 \      noEffectAssign     + assignment without effect\n\
 \      null                 potential missing or redundant null check\n\
+\      nullAnnot(<annot. names separated by |>)   annotation based null analysis,\n\
+\                           nullable|nonnull|nonnullbydefault annotation types\n\
+\                           optionally specified using fully qualified names.\n\
+\							Enabling this option enables all null-annotation\n\
+\							related sub-options. These can be individually\n\
+\							controlled using options listed below.\n\
+\      nullAnnotConflict    conflict between null annotation specified\n\
+\							and nullness inferred. Is effective only with\n\
+\							nullAnnot option enabled.\n\
+\      nullAnnotRedundant   redundant specification of null annotation. Is\n\
+\							effective only with nullAnnot option enabled.\n\
 \      nullDereference    + missing null check\n\
+\	   nullUncheckedConversion unchecked conversion from non-annotated type\n\
+\							to @NonNull type. Is effective only with\n\
+\							nullAnnot option enabled.\n\
 \      over-ann             missing @Override annotation (superclass)\n\
 \      paramAssign          assignment to a parameter\n\
 \      pkgDefaultMethod   + attempt to override package-default method\n\
 \      raw                + usage of raw type\n\
+\      resource           + (pot.) unsafe usage of resource of type Closeable\n\
 \      semicolon            unnecessary semicolon, empty statement\n\
 \      serial             + missing serialVersionUID\n\
 \      specialParamHiding   constructor or setter parameter hiding a field\n\
@@ -124,27 +291,45 @@
 \      staticReceiver     + non-static reference to static member\n\
 \      super                overriding a method without making a super invocation\n\
 \      suppress           + enable @SuppressWarnings\n\
-\                           When used with -err:, it can also silent optional\n\
+\                           When used with -err:, it can also silence optional\n\
 \                           errors and warnings\n\
+\      switchDefault        switch statement lacking a default case\n\
 \      syncOverride         missing synchronized in synchr. method override\n\
+\      syntacticAnalysis    perform syntax-based null analysis for fields\n\
 \      syntheticAccess      synthetic access for innerclass\n\
 \      tasks(<tags separated by |>) tasks identified by tags inside comments\n\
 \      typeHiding         + type parameter hiding another type\n\
 \      unavoidableGenericProblems + ignore unavoidable type safety problems\n\
 \                                   due to raw APIs\n\
 \      unchecked          + unchecked type operation\n\
+\      unlikelyCollectionMethodArgumentType\n\
+\                         + unlikely argument type for collection method\n\
+\                           declaring an Object parameter\n\
+\      unlikelyEqualsArgumentType unlikely argument type for method equals()\n\
 \      unnecessaryElse      unnecessary else clause\n\
 \      unqualifiedField     unqualified reference to field\n\
 \      unused               macro for unusedAllocation, unusedArgument,\n\
 \                               unusedImport, unusedLabel, unusedLocal,\n\
-\                               unusedPrivate, unusedThrown, and unusedTypeArgs\n\
+\                               unusedPrivate, unusedThrown, and unusedTypeArgs,\n\
+\								unusedExceptionParam\n\
 \      unusedAllocation     allocating an object that is not used\n\
 \      unusedArgument       unread method parameter\n\
+\      unusedExceptionParam unread exception parameter\n\
 \      unusedImport       + unused import declaration\n\
 \      unusedLabel        + unused label\n\
 \      unusedLocal        + unread local variable\n\
+\      unusedParam		    unused parameter\n\
+\      unusedParamOverriding unused parameter for overriding method\n\
+\      unusedParamImplementing unused parameter for implementing method\n\
+\      unusedParamIncludeDoc unused parameter documented in comment tag\n\
 \      unusedPrivate      + unused private member declaration\n\
 \      unusedThrown         unused declared thrown exception\n\
+\      unusedThrownWhenOverriding unused declared thrown exception in \n\
+\							overriding method\n\
+\      unusedThrownIncludeDocComment     unused declared thrown exception,\n\
+\							documented in a comment tag\n\
+\      unusedThrownExemptExceptionThrowable  unused declared thrown exception,\n\
+\							exempt Exception and Throwable\n\
 \      unusedTypeArgs     + unused type arguments for method and constructor\n\
 \      uselessTypeCheck     unnecessary cast/instanceof operation\n\
 \      varargsCast        + varargs argument need explicit cast\n\
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/CompilerAdapter.aj b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/CompilerAdapter.aj
index 0d09a49..23b61b3 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/CompilerAdapter.aj
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/CompilerAdapter.aj
@@ -30,6 +30,7 @@
 	 */
 	private static ICompilerAdapterFactory adapterFactory =
 		new ICompilerAdapterFactory() {
+				@Override
 				public ICompilerAdapter getAdapter(Compiler forCompiler) {
 					return new DefaultCompilerAdapter(forCompiler);
 				}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.java
index 400a0b9..74754d2 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/DefaultCompilerAdapter.java
@@ -29,27 +29,32 @@
 	/* (non-Javadoc)
 	 * @see org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerAdapter#beforeCompiling(org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit[])
 	 */
+	@Override
 	public void beforeCompiling(ICompilationUnit[] sourceUnits) {}
 
 	/* (non-Javadoc)
 	 * @see org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerAdapter#afterCompiling()
 	 */
+	@Override
 	public void afterCompiling(CompilationUnitDeclaration[] units) {}
 	
 	/* (non-Javadoc)
 	 * @see org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerAdapter#beforeProcessing(org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration)
 	 */
+	@Override
 	public void beforeProcessing(CompilationUnitDeclaration unit) {}
 	
 	/* (non-Javadoc)
 	 * @see org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerAdapter#afterProcessing(org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration)
 	 */
+	@Override
 	public void afterProcessing(CompilationUnitDeclaration unit, int unitIndex) {
 		unit.cleanUp();
 		compiler.requestor.acceptResult(unit.compilationResult.tagAsAccepted());
 		compiler.unitsToProcess[unitIndex] = null;
 	}
 	
+	@Override
 	public void beforeAnalysing(CompilationUnitDeclaration unit) {
 		// no-op
 	}
@@ -73,31 +78,37 @@
 		compiler.requestor.acceptResult(unit.compilationResult.tagAsAccepted());
 	}
 
+	@Override
 	public void beforeResolving(CompilationUnitDeclaration unit) {
 		// TODO Auto-generated method stub
 		
 	}
 
+	@Override
 	public void afterResolving(CompilationUnitDeclaration unit) {
 		// TODO Auto-generated method stub
 		
 	}
 
+	@Override
 	public void afterAnalysing(CompilationUnitDeclaration unit) {
 		// TODO Auto-generated method stub
 		
 	}
 
+	@Override
 	public void beforeGenerating(CompilationUnitDeclaration unit) {
 		// TODO Auto-generated method stub
 		
 	}
 
+	@Override
 	public void afterGenerating(CompilationUnitDeclaration unit) {
 		// TODO Auto-generated method stub
 		
 	}
 
+	@Override
 	public void afterDietParsing(CompilationUnitDeclaration[] units) {
 		// TODO Auto-generated method stub
 		
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
index ad50e43..5bf9946 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
@@ -23,6 +23,7 @@
 import org.aspectj.ajdt.internal.compiler.lookup.InterTypeMethodBinding;
 import org.aspectj.ajdt.internal.compiler.lookup.PrivilegedFieldBinding;
 import org.aspectj.ajdt.internal.compiler.lookup.PrivilegedHandler;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AssertStatement;
@@ -44,6 +45,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemFieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding;
 import org.aspectj.weaver.AjcMemberMaker;
 import org.aspectj.weaver.ResolvedMember;
@@ -123,11 +125,16 @@
 			// send.arguments = AstUtil.insert(new ThisReference(send.sourceStart, send.sourceEnd), send.arguments);
 			MethodBinding superAccessBinding = getSuperAccessMethod(send.binding);
 			AstUtil.replaceMethodBinding(send, superAccessBinding);
-		} else if (!isPublic(send.binding)) {
+		} else if (!isPublic(send.binding) && !isCloneMethod(send.binding)) {
 			send.syntheticAccessor = getAccessibleMethod(send.binding, send.actualReceiverType);
 		}
 
 	}
+	
+	private boolean isCloneMethod(MethodBinding binding) {
+		return (CharOperation.equals(binding.selector, TypeConstants.CLONE)) &&
+				(CharOperation.equals(binding.declaringClass.compoundName, TypeConstants.JAVA_LANG_OBJECT));
+	}
 
 	public void endVisit(AllocationExpression send, BlockScope scope) {
 		if (send.binding == null || !send.binding.isValidBinding())
@@ -181,7 +188,6 @@
 		}
 		FieldBinding ret = new InlineAccessFieldBinding(inAspect, binding, m);
 		inAspect.accessForInline.put(m, ret);
-		System.out.println(">>"+m);
 		return ret;
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
index f833c00..8db8e60 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
@@ -80,10 +80,9 @@
 
 	// override
 	protected int generateInfoAttributes(ClassFile classFile) {
-		List l = new ArrayList(1);
+		List<EclipseAttributeAdapter> l = new ArrayList<EclipseAttributeAdapter>(1);
 		l.add(new EclipseAttributeAdapter(makeAttribute()));
 		addDeclarationStartLineAttribute(l, classFile);
-
 		return classFile.generateMethodInfoAttributes(binding, l);
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.java
index 0590df7..f2a938c 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/AjMethodDeclaration.java
@@ -56,9 +56,10 @@
 		return classFile.generateMethodInfoAttributes(binding,extras);
 	}
 	
+	@Override
 	protected int generateInfoAttributes(ClassFile classFile) {
 	    return generateInfoAttributes(classFile,false);
-	}
+	} 
 	
 	protected void addDeclarationStartLineAttribute(List extraAttributeList, ClassFile classFile) {
 		if ((classFile.codeStream.generateAttributes & ClassFileConstants.ATTR_LINES)==0) return;
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.java
index e17aa5d..89d2482 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeDeclaration.java
@@ -63,7 +63,7 @@
 	 *  them.  This is a list of strings representing the alternative names - the position in the list is used to
 	 *  match it to the real type variable in the target generic type.
 	 */
-	protected List typeVariableAliases; 
+	protected List<String> typeVariableAliases; 
 	
 	protected InterTypeScope interTypeScope;
 	
@@ -140,6 +140,7 @@
 		return false;
 	}
 	
+	@Override
 	public void resolve(ClassScope upperScope) {
 		if (ignoreFurtherInvestigation) return;
 		
@@ -264,7 +265,7 @@
 		// check if they used stupid names for type variables
 		if (aliasCount>0) {
 			for (int i = 0; i < aliasCount; i++) {
-				String array_element = (String)typeVariableAliases.get(i);
+				String array_element = typeVariableAliases.get(i);
 				SingleTypeReference str = new SingleTypeReference(array_element.toCharArray(),0);
 				TypeBinding tb = str.getTypeBindingPublic(classScope);
 				if (tb!=null && !(tb instanceof ProblemReferenceBinding)) {// && !(tb instanceof TypeVariableBinding)) {
@@ -314,6 +315,7 @@
 		this.munger = munger;
 	}
 	
+	@Override
 	protected int generateInfoAttributes(ClassFile classFile) {
 		List l;
 		Shadow.Kind kind = getShadowKindForBody();
@@ -378,6 +380,7 @@
 	 * by the ITD can be resolved.  For example, if type variables are referred to in the ontype for the ITD,
 	 * they have to be resolved against the ontype, not the aspect containing the ITD.
 	 */
+	@Override
 	public void ensureScopeSetup() {
 		if (scopeSetup) return; // don't do it again
 		MethodScope scope = this.scope;
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
index 3355c94..fc0d421 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
@@ -22,14 +22,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.Opcodes;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo;
-import org.aspectj.org.eclipse.jdt.internal.compiler.flow.InitializationFlowContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding;
@@ -59,9 +57,10 @@
  */
 public class InterTypeMethodDeclaration extends InterTypeDeclaration {
 	public InterTypeMethodDeclaration(CompilationResult result, TypeReference onType) {
-		super(result, onType);
+		super(result, onType); 
 	}
 
+	@Override
 	public void parseStatements(Parser parser, CompilationUnitDeclaration unit) {
 		if (ignoreFurtherInvestigation)
 			return;
@@ -70,6 +69,7 @@
 		}
 	}
 
+	@Override
 	protected char[] getPrefix() {
 		return (NameMangler.ITD_PREFIX + "interMethod$").toCharArray();
 	}
@@ -91,6 +91,7 @@
 		super.analyseCode(classScope, flowContext, flowInfo);
 	}
 
+	@Override
 	public void resolve(ClassScope upperScope) {
 		if (munger == null)
 			ignoreFurtherInvestigation = true;
@@ -119,6 +120,7 @@
 		super.resolve(upperScope);
 	}
 
+	@Override
 	public void resolveStatements() {
 		checkAndSetModifiersForMethod();
 		if ((modifiers & ExtraCompilerModifiers.AccSemicolonBody) != 0) {
@@ -196,6 +198,7 @@
 		}
 	}
 
+	@Override
 	public EclipseTypeMunger build(ClassScope classScope) {
 		EclipseFactory factory = EclipseFactory.fromScopeLookupEnvironment(classScope);
 
@@ -241,6 +244,7 @@
 		return new AjAttribute.TypeMunger(munger);
 	}
 
+	@Override
 	public void generateCode(ClassScope classScope, ClassFile classFile) {
 		if (ignoreFurtherInvestigation) {
 			// System.err.println("no code for " + this);
@@ -339,6 +343,7 @@
 		classFile.completeMethodInfo(binding,methodAttributeOffset, attributeNumber);
 	}
 
+	@Override
 	protected Shadow.Kind getShadowKindForBody() {
 		return Shadow.MethodExecution;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/Proceed.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/Proceed.java
index 364bbe3..bd8e4db 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/Proceed.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/Proceed.java
@@ -157,13 +157,15 @@
 
 
 	//	checkInvocationArguments(scope, this.receiver, this.actualReceiverType, this.binding, this.arguments, argumentTypes, argsContainCast, this);
-		for (int i=0, len=arguments.length; i < len; i++) {
+		int len = arguments.length;
+		this.argumentTypes = (len == 0? TypeBinding.NO_TYPES:new TypeBinding[len]);
+		for (int i=0; i < len; i++) {
 			Expression arg = arguments[i];
-			TypeBinding argType = arg.resolveType(scope);
-			if (argType != null) {
+			argumentTypes[i] = arg.resolveType(scope);
+			if (argumentTypes[i] != null) {
 				TypeBinding paramType = binding.parameters[i];
-				if (!argType.isCompatibleWith(paramType)) {
-					scope.problemReporter().typeMismatchError(argType, paramType, arg,null);
+				if (!argumentTypes[i].isCompatibleWith(paramType)) {
+					scope.problemReporter().typeMismatchError(argumentTypes[i], paramType, arg, null);
 				}
 			}
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
index fa63a33..90ca34c 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/ast/ValidateAtAspectJAnnotationsVisitor.java
@@ -476,7 +476,7 @@
 			} else if (sma.memberValue instanceof NameReference
 					&& (((NameReference) sma.memberValue).binding instanceof FieldBinding)) {
 				Binding b = ((NameReference) sma.memberValue).binding;
-				Constant c = ((FieldBinding) b).constant;
+				Constant c = ((FieldBinding) b).constant();
 				return c.stringValue();
 			}
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java
index 52ad76f..efd1a2b 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java
@@ -27,17 +27,38 @@
 import org.aspectj.ajdt.internal.compiler.ast.PointcutDeclaration;
 import org.aspectj.asm.AsmManager;
 import org.aspectj.bridge.IMessage;
-import org.aspectj.bridge.WeaveMessage;
 import org.aspectj.bridge.context.CompilationAndWeavingContext;
 import org.aspectj.bridge.context.ContextToken;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ITypeRequestor;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MissingTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeCollisionException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.weaver.AnnotationAJ;
 import org.aspectj.weaver.ConcreteTypeMunger;
@@ -107,8 +128,13 @@
 			INameEnvironment nameEnvironment) {
 		super(typeRequestor, options, problemReporter, nameEnvironment);
 	}
+	
+	public AjLookupEnvironment(LookupEnvironment env, ModuleBinding moduleBinding) {
+		super(env, moduleBinding);
+	}
 
 	// ??? duplicates some of super's code
+	@Override
 	public void completeTypeBindings() {
 		AsmManager.setCompletingTypeBindings(true);
 		ContextToken completeTypeBindingsToken = CompilationAndWeavingContext.enteringPhase(
@@ -1385,7 +1411,7 @@
 			ReferenceTypeDelegate rtd = rt.getDelegate();
 			if (rtd instanceof BcelObjectType) {
 				if (rt.isRawType()) {
-					rt = (ReferenceType)rt.getGenericType();
+					rt = rt.getGenericType();
 				}
 				rt.addParent(parent);
 				// ((BcelObjectType) rtd).addParent(parent);
@@ -1408,6 +1434,7 @@
 	boolean inBinaryTypeCreationAndWeaving = false;
 	boolean processingTheQueue = false;
 
+	@Override
 	public BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType, PackageBinding packageBinding,
 			boolean needFieldsAndMethods, AccessRestriction accessRestriction) {
 
@@ -1448,6 +1475,7 @@
 	 *
 	 * @param aBinding
 	 */
+	@Override
 	public void anonymousTypeBindingCreated(LocalTypeBinding aBinding) {
 		factory.addSourceTypeBinding(aBinding, null);
 	}
@@ -1474,6 +1502,13 @@
     this.factory.cleanup();
     super.reset();
   }
+  
+  @Override
+public LookupEnvironment wrapInModuleEnvironment(ModuleBinding moduleBinding) {
+	  AjLookupEnvironment newAjLookupEnvironment = new AjLookupEnvironment(this, moduleBinding);
+	  newAjLookupEnvironment.factory = this.factory;
+	  return newAjLookupEnvironment;
+  }
 }
 
 // commented out, supplied as info on how to manipulate annotations in an
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
index db77600..062f04f 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
@@ -17,7 +17,6 @@
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -96,8 +95,8 @@
 
 	// We can get clashes if we don't treat raw types differently - we end up looking
 	// up a raw and getting the generic type (pr115788)
-	private final Map/* UnresolvedType, TypeBinding */typexToBinding = new HashMap();
-	private final Map/* UnresolvedType, TypeBinding */rawTypeXToBinding = new HashMap();
+	private final Map<UnresolvedType, TypeBinding> typexToBinding = new HashMap<UnresolvedType, TypeBinding>();
+	private final Map<UnresolvedType, TypeBinding> rawTypeXToBinding = new HashMap<UnresolvedType, TypeBinding>();
 
 	// XXX currently unused
 	// private Map/*TypeBinding, ResolvedType*/ bindingToResolvedTypeX = new HashMap();
@@ -143,7 +142,7 @@
 		if (binding == null) {
 			return ResolvedType.MISSING;
 		}
-		// ??? this seems terribly inefficient
+		// ??? this seems terribly inefficient 
 		// System.err.println("resolving: " + binding.getClass() + ", name = " + getName(binding));
 		ResolvedType ret = getWorld().resolve(fromBinding(binding));
 		// System.err.println("      got: " + ret);
@@ -362,7 +361,7 @@
 	/**
 	 * Some type variables refer to themselves recursively, this enables us to avoid recursion problems.
 	 */
-	private static Map typeVariableBindingsInProgress = new HashMap();
+	private static Map<TypeVariableBinding,UnresolvedType> typeVariableBindingsInProgress = new HashMap<TypeVariableBinding,UnresolvedType>();
 
 	/**
 	 * Convert from the eclipse form of type variable (TypeVariableBinding) to the AspectJ form (TypeVariable).
@@ -370,12 +369,12 @@
 	private UnresolvedType fromTypeVariableBinding(TypeVariableBinding aTypeVariableBinding) {
 		// first, check for recursive call to this method for the same tvBinding
 		if (typeVariableBindingsInProgress.containsKey(aTypeVariableBinding)) {
-			return (UnresolvedType) typeVariableBindingsInProgress.get(aTypeVariableBinding);
+			return typeVariableBindingsInProgress.get(aTypeVariableBinding);
 		}
 
 		// Check if its a type variable binding that we need to recover to an alias...
 		if (typeVariablesForAliasRecovery != null) {
-			String aliasname = (String) typeVariablesForAliasRecovery.get(aTypeVariableBinding);
+			String aliasname = typeVariablesForAliasRecovery.get(aTypeVariableBinding);
 			if (aliasname != null) {
 				UnresolvedTypeVariableReferenceType ret = new UnresolvedTypeVariableReferenceType();
 				ret.setTypeVariable(new TypeVariable(aliasname));
@@ -384,7 +383,7 @@
 		}
 
 		if (typeVariablesForThisMember.containsKey(new String(aTypeVariableBinding.sourceName))) {
-			return (UnresolvedType) typeVariablesForThisMember.get(new String(aTypeVariableBinding.sourceName));
+			return typeVariablesForThisMember.get(new String(aTypeVariableBinding.sourceName));
 		}
 
 		// Create the UnresolvedTypeVariableReferenceType for the type variable
@@ -534,24 +533,21 @@
 	 * Before converting the parts of a methodbinding (params, return type) we store the type variables in this structure, then
 	 * should any component of the method binding refer to them, we grab them from the map.
 	 */
-	private final Map typeVariablesForThisMember = new HashMap();
+	private final Map<String,UnresolvedType> typeVariablesForThisMember = new HashMap<String, UnresolvedType>();
 
 	/**
 	 * This is a map from typevariablebindings (eclipsey things) to the names the user originally specified in their ITD. For
 	 * example if the target is 'interface I<N extends Number> {}' and the ITD was 'public void I<X>.m(List<X> lxs) {}' then this
 	 * map would contain a pointer from the eclipse type 'N extends Number' to the letter 'X'.
 	 */
-	private Map typeVariablesForAliasRecovery;
+	private Map<TypeVariableBinding, String> typeVariablesForAliasRecovery;
 
 	/**
 	 * Construct a resolvedmember from a methodbinding. The supplied map tells us about any typevariablebindings that replaced
 	 * typevariables whilst the compiler was resolving types - this only happens if it is a generic itd that shares type variables
 	 * with its target type.
 	 */
-	public ResolvedMemberImpl makeResolvedMemberForITD(MethodBinding binding, TypeBinding declaringType, Map /*
-																											 * TypeVariableBinding >
-																											 * original alias name
-																											 */recoveryAliases) {
+	public ResolvedMemberImpl makeResolvedMemberForITD(MethodBinding binding, TypeBinding declaringType, Map<TypeVariableBinding,String> recoveryAliases) {
 		ResolvedMemberImpl result = null;
 		try {
 			typeVariablesForAliasRecovery = recoveryAliases;
@@ -630,9 +626,9 @@
 		// looking up type variables can get us into trouble
 		if (!typeX.isTypeVariableReference() && !isParameterizedWithTypeVariables(typeX)) {
 			if (typeX.isRawType()) {
-				ret = (TypeBinding) rawTypeXToBinding.get(typeX);
+				ret = rawTypeXToBinding.get(typeX);
 			} else {
-				ret = (TypeBinding) typexToBinding.get(typeX);
+				ret = typexToBinding.get(typeX);
 			}
 		}
 
@@ -818,7 +814,7 @@
 	/**
 	 * Convert a resolvedmember into an eclipse field binding
 	 */
-	public FieldBinding makeFieldBinding(ResolvedMember member, List aliases) {
+	public FieldBinding makeFieldBinding(ResolvedMember member, List<String> aliases) {
 		return internalMakeFieldBinding(member, aliases);
 	}
 
@@ -849,7 +845,7 @@
 	 * to being a generic itd. Any aliases are put into the typeVariableToBinding map so that they will be substituted as
 	 * appropriate in the returned fieldbinding.
 	 */
-	public FieldBinding internalMakeFieldBinding(ResolvedMember member, List aliases) {
+	public FieldBinding internalMakeFieldBinding(ResolvedMember member, List<String> aliases) {
 		typeVariableToTypeBinding.clear();
 
 		ReferenceBinding declaringType = (ReferenceBinding) makeTypeBinding(member.getDeclaringType());
@@ -858,8 +854,9 @@
 		if (aliases != null && aliases.size() > 0 && declaringType.typeVariables() != null
 				&& declaringType.typeVariables().length != 0) {
 			int i = 0;
-			for (Iterator iter = aliases.iterator(); iter.hasNext();) {
-				String element = (String) iter.next();
+			for (String element: aliases) {
+//			for (Iterator iter = aliases.iterator(); iter.hasNext();) {
+//				String element = (String) iter.next();
 				typeVariableToTypeBinding.put(element, declaringType.typeVariables()[i++]);
 			}
 		}
@@ -894,7 +891,7 @@
 	/**
 	 * Convert a resolvedmember into an eclipse method binding.
 	 */
-	public MethodBinding makeMethodBinding(ResolvedMember member, List aliases) {
+	public MethodBinding makeMethodBinding(ResolvedMember member, List<String> aliases) {
 		return internalMakeMethodBinding(member, aliases);
 	}
 
@@ -913,7 +910,7 @@
 		return internalMakeMethodBinding(member, null); // there are no aliases
 	}
 
-	public MethodBinding internalMakeMethodBinding(ResolvedMember member, List aliases) {
+	public MethodBinding internalMakeMethodBinding(ResolvedMember member, List<String> aliases) {
 		return internalMakeMethodBinding(member, aliases, member.getDeclaringType());
 	}
 
@@ -938,8 +935,21 @@
 		ReferenceBinding declaringType = (ReferenceBinding) makeTypeBinding(member.getDeclaringType());
 
 		// If there are aliases, place them in the map
-		if (aliases != null && aliases.size() != 0 && declaringType.typeVariables() != null
-				&& declaringType.typeVariables().length != 0) {
+		if (aliases != null && aliases.size() != 0
+				
+				// Not sure what this check is trying to check for?
+				// In latest JDT (2-Feb-2018) there seem to be some code (in LookupEnvironment ~860 and
+				// TypeSystem ~340) related to avoiding raw'ifying the enclosing type if the type to
+				// be rawed is static.  These changes cause these checks to fail and the sophisticated
+				// test variant V fails.  It checks declaring type typevariables and then
+				// uses aliasTargetType ... I'm switching it to check aliasTargetType
+				
+//				&& declaringType.typeVariables() != null
+//				&& declaringType.typeVariables().length != 0
+				&& aliasTargetType != null
+				&& aliasTargetType.getTypeVariables() != null
+				&& aliasTargetType.getTypeVariables().length!=0
+				) {
 			int i = 0;
 			ReferenceBinding aliasTarget = (ReferenceBinding) makeTypeBinding(aliasTargetType);
 			if (aliasTarget.isRawType()) {
@@ -952,7 +962,8 @@
 
 		currentType = declaringType;
 		MethodBinding mb = new MethodBinding(member.getModifiers(), member.getName().toCharArray(),
-				makeTypeBinding(member.getReturnType()), makeTypeBindings(member.getParameterTypes()),
+				makeTypeBinding(member.getReturnType()),
+				makeTypeBindings(member.getParameterTypes()),
 				makeReferenceBindings(member.getExceptions()), declaringType);
 
 		if (tvbs != null) {
@@ -992,7 +1003,7 @@
 	// map back to the same type binding - this is important later when Eclipse code is processing
 	// a methodbinding trying to come up with possible bindings for the type variables.
 	// key is currently the name of the type variable...is that ok?
-	private final Map typeVariableToTypeBinding = new HashMap();
+	private final Map<String,TypeVariableBinding> typeVariableToTypeBinding = new HashMap<String,TypeVariableBinding>();
 
 	// /**
 	// * Converts from an TypeVariableReference to a TypeVariableBinding. A TypeVariableReference
@@ -1035,7 +1046,7 @@
 	// }
 
 	private TypeVariableBinding makeTypeVariableBindingFromAJTypeVariable(TypeVariable tv) {
-		TypeVariableBinding tvBinding = (TypeVariableBinding) typeVariableToTypeBinding.get(tv.getName());
+		TypeVariableBinding tvBinding = typeVariableToTypeBinding.get(tv.getName());
 		if (currentType != null) {
 			TypeVariableBinding tvb = currentType.getTypeVariable(tv.getName().toCharArray());
 			if (tvb != null) {
@@ -1142,7 +1153,7 @@
 			ReferenceType complexName = null;
 			if (!resolvedGenericType.isMissing()) {
 				complexName = (ReferenceType) resolvedGenericType;
-				complexName = (ReferenceType) complexName.getGenericType();
+				complexName = complexName.getGenericType();
 				if (complexName == null) {
 					complexName = new ReferenceType(unresolvedGenericType, world);
 				}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java
index af1ad67..2b3467e 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseScope.java
@@ -61,6 +61,7 @@
 		enclosingType = world.fromEclipse(scope.enclosingSourceType());
 	}
 
+	@Override
 	public UnresolvedType lookupType(String name, IHasPosition location) {
 		char[][] splitName = WildTypePattern.splitNames(name, true);
 		TypeBinding b = scope.getType(splitName, splitName.length);
@@ -156,8 +157,8 @@
 		if (importedNames != null)
 			return;
 
-		List importedNamesList = new ArrayList();
-		List importedPrefixesList = new ArrayList();
+		List<String> importedNamesList = new ArrayList<String>();
+		List<String> importedPrefixesList = new ArrayList<String>();
 
 		Scope currentScope = scope;
 		// add any enclosing types to this list
@@ -197,12 +198,12 @@
 			importedNamesList.add(world.fromBinding(topTypes[i]).getName());
 		}
 
-		importedNames = (String[]) importedNamesList.toArray(new String[importedNamesList.size()]);
+		importedNames = importedNamesList.toArray(new String[importedNamesList.size()]);
 
-		importedPrefixes = (String[]) importedPrefixesList.toArray(new String[importedPrefixesList.size()]);
+		importedPrefixes = importedPrefixesList.toArray(new String[importedPrefixesList.size()]);
 	}
 
-	private void addClassAndParentsToPrefixes(ReferenceBinding binding, List importedPrefixesList) {
+	private void addClassAndParentsToPrefixes(ReferenceBinding binding, List<String> importedPrefixesList) {
 		if (binding == null)
 			return;
 		importedPrefixesList.add(world.fromBinding(binding).getName() + "$");
@@ -216,11 +217,13 @@
 		}
 	}
 
+	@Override
 	public String[] getImportedNames() {
 		computeImports();
 		return importedNames;
 	}
 
+	@Override
 	public String[] getImportedPrefixes() {
 		computeImports();
 		// System.err.println("prefixes: " + Arrays.asList(importedPrefixes));
@@ -228,6 +231,7 @@
 	}
 
 	// XXX add good errors when would bind to extra parameters
+	@Override
 	public FormalBinding lookupFormal(String name) {
 		for (int i = 0, len = bindings.length; i < len; i++) {
 			if (bindings[i].getName().equals(name))
@@ -236,10 +240,12 @@
 		return null;
 	}
 
+	@Override
 	public FormalBinding getFormal(int i) {
 		return bindings[i];
 	}
 
+	@Override
 	public int getFormalCount() {
 		return bindings.length;
 	}
@@ -249,15 +255,18 @@
 				location.getEnd());
 	}
 
+	@Override
 	public IMessageHandler getMessageHandler() {
 		return world.getWorld().getMessageHandler();
 	}
 
+	@Override
 	public void message(IMessage.Kind kind, IHasPosition location1, IHasPosition location2, String message) {
 		message(kind, location1, message);
 		message(kind, location2, message);
 	}
 
+	@Override
 	public void message(IMessage.Kind kind, IHasPosition location, String message) {
 		// System.out.println("message: " + message + " loc: " +
 		// makeSourceLocation(location));
@@ -265,14 +274,17 @@
 
 	}
 
+	@Override
 	public void message(IMessage aMessage) {
 		getMessageHandler().handleMessage(aMessage);
 	}
 
+	@Override
 	public World getWorld() {
 		return world.getWorld();
 	}
 
+	@Override
 	public ResolvedType getEnclosingType() {
 		return enclosingType;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
index 174f272..5d7d337 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java
@@ -204,7 +204,7 @@
 					return new String(sLit.source());
 				} else if (expr instanceof NameReference && (((NameReference) expr).binding instanceof FieldBinding)) {
 					Binding b = ((NameReference) expr).binding;
-					Constant c = ((FieldBinding) b).constant;
+					Constant c = ((FieldBinding) b).constant();
 					return c.stringValue();
 				} else {
 					throw new BCException("Do not know how to recover pointcut definition from " + expr + " (type "
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java
index f1dea73..4fbdfa8 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/EclipseTypeMunger.java
@@ -35,6 +35,7 @@
 import org.aspectj.weaver.ResolvedMember;
 import org.aspectj.weaver.ResolvedType;
 import org.aspectj.weaver.ResolvedTypeMunger;
+import org.aspectj.weaver.UnresolvedType;
 import org.aspectj.weaver.World;
 
 public class EclipseTypeMunger extends ConcreteTypeMunger {
@@ -77,6 +78,7 @@
 				|| kind == ResolvedTypeMunger.InnerClass;
 	}
 
+	@Override
 	public String toString() {
 		return "(EclipseTypeMunger " + getMunger() + ")";
 	}
@@ -275,6 +277,7 @@
 		return finder;
 	}
 
+	@Override
 	public ISourceLocation getSourceLocation() {
 		return sourceLocation;
 	}
@@ -290,11 +293,12 @@
 		return sourceMethod;
 	}
 
+	@Override
 	public ConcreteTypeMunger parameterizedFor(ResolvedType target) {
 		return new EclipseTypeMunger(world, munger.parameterizedFor(target), aspectType, sourceMethod);
 	}
 
-	public ConcreteTypeMunger parameterizeWith(Map m, World w) {
+	public ConcreteTypeMunger parameterizeWith(Map<String,UnresolvedType> m, World w) {
 		return new EclipseTypeMunger(world, munger.parameterizeWith(m, w), aspectType, sourceMethod);
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.java
index c71d8e8..b47978f 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeFieldBinding.java
@@ -41,7 +41,7 @@
 		// We called the super() with null, we must now do the last step that will have been skipped because of this, see the
 		// supers() final line:
 		// OPTIMIZE dont makeFieldBinding twice, HORRIBLE
-		setAnnotations(world.makeFieldBinding(munger.getSignature(), munger.getTypeVariableAliases()).getAnnotations());
+		setAnnotations(world.makeFieldBinding(munger.getSignature(), munger.getTypeVariableAliases()).getAnnotations(), false);
 
 		reader = new SimpleSyntheticAccessMethodBinding(world.makeMethodBinding(AjcMemberMaker.interFieldGetDispatcher(munger
 				.getSignature(), withinType)));
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.java
index 9784710..8b4a917 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMemberFinder.java
@@ -17,7 +17,6 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -40,11 +39,12 @@
  * The member finder looks after intertype declared members on a type, there is one member finder per type that was hit by an ITD.
  */
 public class InterTypeMemberFinder implements IMemberFinder {
-	private List interTypeFields = new ArrayList();
-	private List interTypeMethods = new ArrayList();
+	private List<FieldBinding> interTypeFields = new ArrayList<FieldBinding>();
+	private List<MethodBinding> interTypeMethods = new ArrayList<MethodBinding>();
 
 	public SourceTypeBinding sourceTypeBinding;
 
+	@Override
 	public FieldBinding getField(SourceTypeBinding sourceTypeBinding, char[] fieldName, InvocationSite site, Scope scope) {
 		FieldBinding retField = sourceTypeBinding.getFieldBase(fieldName, true); // XXX may need to get the correct value for second
 		// parameter in the future (see #55341)
@@ -54,7 +54,7 @@
 		int fieldLength = fieldName.length;
 
 		for (int i = 0, len = interTypeFields.size(); i < len; i++) {
-			FieldBinding field = (FieldBinding) interTypeFields.get(i);
+			FieldBinding field = interTypeFields.get(i);
 			if (field.name.length == fieldLength && CharOperation.prefixEquals(field.name, fieldName)) {
 				retField = resolveConflicts(sourceTypeBinding, retField, field, site, scope);
 			}
@@ -250,13 +250,14 @@
 
 	// find all of my methods, including ITDs
 	// PLUS: any public ITDs made on interfaces that I implement
+	@Override
 	public MethodBinding[] methods(SourceTypeBinding sourceTypeBinding) {
 		MethodBinding[] orig = sourceTypeBinding.methodsBase();
 		// if (interTypeMethods.isEmpty()) return orig;
 
-		List ret = new ArrayList(Arrays.asList(orig));
+		List<MethodBinding> ret = new ArrayList<MethodBinding>(Arrays.asList(orig));
 		for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
-			MethodBinding method = (MethodBinding) interTypeMethods.get(i);
+			MethodBinding method = interTypeMethods.get(i);
 			ret.add(method);
 		}
 
@@ -271,26 +272,26 @@
 		if (ret.isEmpty()) {
 			return Binding.NO_METHODS;
 		}
-		return (MethodBinding[]) ret.toArray(new MethodBinding[ret.size()]);
+		return ret.toArray(new MethodBinding[ret.size()]);
 	}
 
-	private void addPublicITDSFrom(SourceTypeBinding anInterface, List toAList) {
+	private void addPublicITDSFrom(SourceTypeBinding anInterface, List<MethodBinding> accumulator) {
 		if (anInterface.memberFinder != null) {
 			InterTypeMemberFinder finder = (InterTypeMemberFinder) anInterface.memberFinder;
-			for (Iterator iter = finder.interTypeMethods.iterator(); iter.hasNext();) {
-				MethodBinding aBinding = (MethodBinding) iter.next();
+			for (MethodBinding aBinding: finder.interTypeMethods) {
 				if (Modifier.isPublic(aBinding.modifiers)) {
-					toAList.add(aBinding);
+					accumulator.add(aBinding);
 				}
 			}
 		}
 		ReferenceBinding superType = anInterface.superclass;
 		if (superType instanceof SourceTypeBinding && superType.isInterface()) {
-			addPublicITDSFrom((SourceTypeBinding) superType, toAList);
+			addPublicITDSFrom((SourceTypeBinding) superType, accumulator);
 		}
 	}
 
 	// XXX conflicts
+	@Override
 	public MethodBinding[] getMethods(SourceTypeBinding sourceTypeBinding, char[] selector) {
 		// System.err.println("getMethods: " + new String(sourceTypeBinding.signature()) +
 		// ", " + new String(selector));
@@ -304,7 +305,7 @@
 		// System.err.println("declared method: " + ret + " inters = " + interTypeMethods);
 
 		for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
-			MethodBinding method = (MethodBinding) interTypeMethods.get(i);
+			MethodBinding method = interTypeMethods.get(i);
 
 			if (CharOperation.equals(selector, method.selector)) {
 				ret.add(method);
@@ -331,16 +332,17 @@
 
 		// System.err.println("got methods: " + ret + " on " + sourceTypeBinding);
 
-		return (MethodBinding[]) ret.toArray(new MethodBinding[ret.size()]);
+		return ret.toArray(new MethodBinding[ret.size()]);
 	}
 
+	@Override
 	public MethodBinding getExactMethod(SourceTypeBinding sourceTypeBinding, char[] selector, TypeBinding[] argumentTypes,
 			CompilationUnitScope refScope) {
 		MethodBinding ret = sourceTypeBinding.getExactMethodBase(selector, argumentTypes, refScope);
 
 		// An intertype declaration may override an inherited member (Bug#50776)
 		for (int i = 0, len = interTypeMethods.size(); i < len; i++) {
-			MethodBinding im = (MethodBinding) interTypeMethods.get(i);
+			MethodBinding im = interTypeMethods.get(i);
 			if (matches(im, selector, argumentTypes)) {
 				return im;
 			}
@@ -512,11 +514,11 @@
 	 * @return true if already know about an intertype field declaration for that field
 	 */
 	public boolean definesField(String name) {
-		List l = interTypeFields;
+		List<FieldBinding> l = interTypeFields;
 		if (l.size() > 0) {
 			char[] nameChars = name.toCharArray();
 			for (int i = 0; i < l.size(); i++) {
-				FieldBinding fieldBinding = (FieldBinding) interTypeFields.get(i);
+				FieldBinding fieldBinding = interTypeFields.get(i);
 				if (CharOperation.equals(fieldBinding.name, nameChars)) {
 					return true;
 				}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
index 953e7d9..10e93ae 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeMethodBinding.java
@@ -14,7 +14,6 @@
 
 import org.aspectj.ajdt.internal.compiler.ast.InterTypeMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.IPrivilegedHandler;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -88,6 +87,7 @@
 	}
 
 	// XXX this is identical to InterTypeFieldBinding
+	@Override
 	public boolean canBeSeenBy(TypeBinding receiverType, InvocationSite invocationSite, Scope scope) {
 		scope.compilationUnitScope().recordTypeReference(declaringClass);
 
@@ -155,12 +155,14 @@
 		return false;
 	}
 
+	@Override
 	public boolean isFinal() {
 		if (sourceMethod == null || !(sourceMethod instanceof InterTypeMethodDeclaration))
 			return super.isFinal();
 		return ((InterTypeMethodDeclaration) sourceMethod).isFinal();
 	}
 
+	@Override
 	public MethodBinding getAccessMethod(boolean staticReference) {
 		if (staticReference)
 			return postDispatchMethod;
@@ -168,10 +170,12 @@
 			return syntheticMethod;
 	}
 
+	@Override
 	public boolean alwaysNeedsAccessMethod() {
 		return true;
 	}
 
+	@Override
 	public AbstractMethodDeclaration sourceMethod() {
 		return sourceMethod;
 	}
@@ -181,10 +185,12 @@
 	}
 
 	// override method in MethodBinding to ensure correct behaviour in some of JDTs generics checks.
+	@Override
 	public ReferenceBinding getOwningClass() {
 		return targetType;
 	}
 
+	@Override
 	public String toString() {
 		return "InterTypeMethodBinding(" + super.toString() + ", " + getTargetType() + ")";
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.java
index 11dbebe..bcb2a4c 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.java
@@ -113,4 +113,8 @@
 		return usedAliases;
 	}
 
+	@Override
+	public boolean isInterTypeScope() {
+		return true;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
index 9179e28..c4c7e1f 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
@@ -45,6 +45,7 @@
 		this.inAspect = inAspect;
 	}
 
+	@Override
 	public boolean definesPrivilegedAccessToField(FieldBinding field) {
 		if (field instanceof ParameterizedFieldBinding) {
 			field = ((ParameterizedFieldBinding) field).originalField;
@@ -53,6 +54,7 @@
 		return (accessors.containsKey(key));
 	}
 
+	@Override
 	public FieldBinding getPrivilegedAccessField(FieldBinding baseField, ASTNode location) {
 		if (baseField instanceof ParameterizedFieldBinding) {
 			baseField = ((ParameterizedFieldBinding) baseField).originalField;
@@ -76,6 +78,7 @@
 		return ret;
 	}
 
+	@Override
 	public MethodBinding getPrivilegedAccessMethod(MethodBinding baseMethod, ASTNode location) {
 		if (baseMethod.alwaysNeedsAccessMethod())
 			return baseMethod;
@@ -113,6 +116,7 @@
 		return ret;
 	}
 
+	@Override
 	public void notePrivilegedTypeAccess(ReferenceBinding type, ASTNode location) {
 		ResolvedMember key = new ResolvedMemberImpl(Member.STATIC_INITIALIZATION, inAspect.factory.fromEclipse(type), 0,
 				UnresolvedType.VOID, "", UnresolvedType.NONE);
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.java
index c37269e..ce61a47 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBatchImageBuilder.java
@@ -11,6 +11,7 @@
 package org.aspectj.ajdt.internal.core.builder;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.BatchImageBuilder;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.SourceFile;
 
@@ -22,12 +23,10 @@
 public class AjBatchImageBuilder extends BatchImageBuilder {
 	
 	public AjBatchImageBuilder(AspectJBuilder builder) {
-		super(builder,true);
+		super(builder, true, CompilationGroup.MAIN);
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.eclipse.jdt.internal.compiler.ICompilerRequestor#acceptResult(org.eclipse.jdt.internal.compiler.CompilationResult)
-	 */
+	@Override
 	public void acceptResult(CompilationResult result) {
 		if ((result.getCompilationUnit() != null) && (result.getCompilationUnit() instanceof SourceFile)) {
 			super.acceptResult(result);
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.java
index 98bd048..11a0b3e 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildConfig.java
@@ -1,5 +1,5 @@
 /* *******************************************************************
- * Copyright (c) 2002 - 2014 Contributors
+ * Copyright (c) 2002 - 2018 Contributors
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
@@ -20,14 +20,20 @@
 import java.io.FileFilter;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 
 import org.aspectj.ajdt.ajc.BuildArgParser;
 import org.aspectj.ajdt.internal.compiler.CompilationResultDestinationManager;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.ClasspathLocation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.util.FileUtil;
 
 /**
@@ -35,7 +41,9 @@
  * an AjCompilerOptions instance
  */
 public class AjBuildConfig implements CompilerConfigurationChangeFlags {
-
+	
+	public static final Classpath[] NO_CHECKED_CLASSPATHS = new Classpath[0];
+	
 	private boolean shouldProceed = true;
 
 	public static final String AJLINT_IGNORE = "ignore";
@@ -59,8 +67,16 @@
 	private Map<String, File> sourcePathResources = new HashMap<String, File>();
 	private List<File> aspectpath = new ArrayList<File>();
 	private List<String> classpath = new ArrayList<String>();
+	private List<String> modulepath = new ArrayList<String>();
+	// Expensive to compute (searching modules, parsing module-info)
+	private ArrayList<Classpath> modulepathClasspathEntries = null;
+	private List<String> modulesourcepath = new ArrayList<String>();
+	// Expensive to compute (searching modules, parsing module-info)
+	private ArrayList<Classpath> modulesourcepathClasspathEntries = null;
+	private Classpath[] checkedClasspaths = null;
 	private List<String> bootclasspath = new ArrayList<String>();
 	private List<String> cpElementsWithModifiedContents = new ArrayList<String>();
+	private IModule moduleDesc;
 
 	private File configFile;
 	private String lintMode = AJLINT_DEFAULT;
@@ -77,6 +93,7 @@
 	private boolean incrementalMode;
 	private File incrementalFile;
 
+	@Override
 	public String toString() {
 		StringBuffer sb = new StringBuffer();
 		sb.append("BuildConfig[" + (configFile == null ? "null" : configFile.getAbsoluteFile().toString()) + "] #Files="
@@ -93,6 +110,7 @@
 		public File fromInPathDirectory;
 		public File binSrc;
 
+		@Override
 		public boolean equals(Object obj) {
 			if (obj != null && (obj instanceof BinarySourceFile)) {
 				BinarySourceFile other = (BinarySourceFile) obj;
@@ -101,6 +119,7 @@
 			return false;
 		}
 
+		@Override
 		public int hashCode() {
 			return binSrc != null ? binSrc.hashCode() : 0;
 		}
@@ -205,6 +224,53 @@
 
 	public void setClasspath(List<String> classpath) {
 		this.classpath = classpath;
+		checkedClasspaths = null;
+	}
+
+	public List<String> getModulepath() {
+		return modulepath;
+	}
+	
+	public List<String> getModulesourcepath() {
+		return modulesourcepath;
+	}
+
+	public void setModulepath(List<String> modulepath) {
+		this.modulepath = modulepath;
+		checkedClasspaths = null;
+	}
+
+	public void setModulesourcepath(List<String> modulesourcepath) {
+		this.modulesourcepath = modulesourcepath;
+		checkedClasspaths = null;
+	}
+
+	public void setCheckedClasspaths(Classpath[] checkedClasspaths) {
+		this.checkedClasspaths = checkedClasspaths;	
+		checkedClasspaths = null;
+	}
+	
+	private List<Classpath> processFilePath(List<File> path, java.lang.String encoding) {
+		List<Classpath> entries = new ArrayList<Classpath>();
+		for (File file: path) {
+			entries.add(FileSystem.getClasspath(file.getAbsolutePath(), encoding, null, ClasspathLocation.BINARY));
+		}
+		return entries;
+	}
+
+	private List<Classpath> processStringPath(List<String> path, java.lang.String encoding) {
+		List<Classpath> entries = new ArrayList<Classpath>();
+		for (String file: path) {
+			entries.add(FileSystem.getClasspath(file, encoding, null, ClasspathLocation.BINARY));
+		}
+		return entries;
+	}
+
+	public Classpath[] getCheckedClasspaths() {
+		if (checkedClasspaths == null) {
+			computeCheckedClasspath();
+		}
+		return checkedClasspaths;
 	}
 
 	public List<String> getBootclasspath() {
@@ -225,7 +291,7 @@
 
 	public List<File> getInpath() {
 		// Elements of the list are either archives (jars/zips) or directories
-		return inPath;
+		return Collections.unmodifiableList(inPath);
 	}
 
 	public List<File> getInJars() {
@@ -246,19 +312,19 @@
 
 	public void setInJars(List<File> sourceJars) {
 		this.inJars = sourceJars;
+		checkedClasspaths = null;
 	}
 
-	public void setInPath(List<File> dirsOrJars) {
-		inPath = dirsOrJars;
-
+	public void processInPath() {
 		// remember all the class files in directories on the inpath
 		binaryFiles = new ArrayList<BinarySourceFile>();
 		FileFilter filter = new FileFilter() {
+			@Override
 			public boolean accept(File pathname) {
 				return pathname.getPath().endsWith(".class");
 			}
 		};
-		for (Iterator<File> iter = dirsOrJars.iterator(); iter.hasNext();) {
+		for (Iterator<File> iter = inPath.iterator(); iter.hasNext();) {
 			File inpathElement = iter.next();
 			if (inpathElement.isDirectory()) {
 				File[] files = FileUtil.listFiles(inpathElement, filter);
@@ -269,6 +335,12 @@
 		}
 	}
 
+	public void setInPath(List<File> dirsOrJars) {
+		inPath = dirsOrJars;
+		checkedClasspaths = null;
+		processInPath();
+	}
+
 	public List<File> getSourceRoots() {
 		return sourceRoots;
 	}
@@ -308,16 +380,18 @@
 	public List<String> getFullClasspath() {
 		List<String> full = new ArrayList<String>();
 		full.addAll(getBootclasspath()); // XXX Is it OK that boot classpath overrides inpath/injars/aspectpath?
-		for (Iterator<File> i = inJars.iterator(); i.hasNext();) {
-			full.add((i.next()).getAbsolutePath());
+		for (File file: inJars) {
+			full.add(file.getAbsolutePath());
 		}
-		for (Iterator<File> i = inPath.iterator(); i.hasNext();) {
-			full.add((i.next()).getAbsolutePath());
+		for (File file: inPath) {
+			full.add(file.getAbsolutePath());
 		}
-		for (Iterator<File> i = aspectpath.iterator(); i.hasNext();) {
-			full.add((i.next()).getAbsolutePath());
+		for (File file: aspectpath) {
+			full.add(file.getAbsolutePath());
 		}
 		full.addAll(getClasspath());
+//		full.addAll(getModulepath());
+//		full.addAll(getModulesourcepath());
 		// if (null != outputDir) {
 		// full.add(outputDir.getAbsolutePath());
 		// } else if (null != outputJar) {
@@ -335,11 +409,22 @@
 	}
 
 	public List<File> getAspectpath() {
-		return aspectpath;
+		return Collections.unmodifiableList(aspectpath);
 	}
 
 	public void setAspectpath(List<File> aspectpath) {
 		this.aspectpath = aspectpath;
+		checkedClasspaths = null;
+	}
+	
+	public void addToAspectpath(File file) {
+		this.aspectpath.add(file);
+		checkedClasspaths = null;
+	}
+
+	public void addToInjars(File file) {
+		this.inJars.add(file);
+		checkedClasspaths = null;
 	}
 
 	/** @return true if any config file, sourceroots, sourcefiles, injars or inpath */
@@ -765,4 +850,116 @@
 	public void setProjectEncoding(String projectEncoding) {
 		options.defaultEncoding = projectEncoding;
 	}
+	
+	public String getProjectEncoding() {
+		return options.defaultEncoding;
+	}
+
+	public void setModuleDesc(IModule moduleDesc) {
+		this.moduleDesc = moduleDesc;
+	}
+
+	public IModule getModuleDesc() {
+		return moduleDesc;
+	}
+
+	public void addToInpath(Set<File> newInpathEntries) {
+		if (newInpathEntries != null && newInpathEntries.size() != 0) {
+			for (File newInpathEntry: newInpathEntries) {
+				if (!inPath.contains(newInpathEntry)) {
+					inPath.add(newInpathEntry);
+				}
+			}
+			checkedClasspaths = null;
+		}
+	}
+
+	public void addToInpath(File newInpathEntry) {
+//		if (!inPath.contains(newInpathEntry)) {
+			inPath.add(newInpathEntry);
+//		}
+		checkedClasspaths = null;
+	}
+
+	public void addToAspectpath(Set<File> newAspectpathEntries) {
+		if (newAspectpathEntries != null && newAspectpathEntries.size() != 0) {
+			for (File newAspectpathEntry: newAspectpathEntries) {
+				if (!aspectpath.contains(newAspectpathEntry)) {
+					aspectpath.add(newAspectpathEntry);
+				}
+			}
+			checkedClasspaths = null;
+		}
+	}
+
+	public void setModulepathClasspathEntries(ArrayList<Classpath> modulepathClasspathEntries) {
+		this.modulepathClasspathEntries = modulepathClasspathEntries;
+	}
+
+	public void setModulesourcepathClasspathEntries(ArrayList<Classpath> modulesourcepathClasspathEntries) {
+		this.modulesourcepathClasspathEntries = modulesourcepathClasspathEntries;
+	}
+
+	public File removeAspectPathEntry(int i) {
+		checkedClasspaths = null;
+		return aspectpath.remove(i);
+	}
+
+	public String removeClasspathEntry(int i) {
+		checkedClasspaths = null;
+		return classpath.remove(i);
+	}
+
+	public File removeInpathEntry(int i) {
+		checkedClasspaths = null;
+		return inPath.remove(i);
+	}
+
+	public File removeInjarsEntry(int i) {
+		checkedClasspaths = null;
+		return inJars.remove(0);
+	}
+
+
+	// This is similar to the calculation done in Main.setPaths() but it isn't as sophisticated
+	// as that one (doesn't need to be) and it also considers the additional paths for an
+	// AspectJ project (aspectpath/inpath/injars)
+	private void computeCheckedClasspath() {		
+		// Follow what we do in getFullClasspath():
+		// bootclasspath, injars, inpath, aspectpath, classpath, modulepath
+
+		String encoding = getProjectEncoding();
+		// What to do about bootclasspath on java 9?
+		
+		// ArrayList<Classpath> allPaths = handleBootclasspath(bootclasspaths, customEncoding);
+		ArrayList<FileSystem.Classpath> allPaths = new ArrayList<FileSystem.Classpath>(); 
+	 	allPaths.addAll(processStringPath(bootclasspath, encoding));
+		allPaths.addAll(processFilePath(inJars, encoding));
+	 	allPaths.addAll(processFilePath(inPath, encoding)); 
+	 	allPaths.addAll(processFilePath(aspectpath, encoding)); 
+	 	if (modulepathClasspathEntries != null) {
+	 		allPaths.addAll(modulepathClasspathEntries);
+	 	}
+	 	if (modulesourcepathClasspathEntries != null) {
+	 		allPaths.addAll(modulesourcepathClasspathEntries);
+	 	}
+	 	// The classpath is done after modules to give precedence to modules that share the
+	 	// same paths as classpath elements (the upcoming normalize will remove later dups)
+	 	allPaths.addAll(processStringPath(classpath, encoding));
+	 	for (Iterator<FileSystem.Classpath> iter = allPaths.iterator();iter.hasNext();) {
+	 		Classpath next = iter.next();
+	 		if (next == null) {
+	 			iter.remove();
+	 		}
+	 	}
+		allPaths = FileSystem.ClasspathNormalizer.normalize(allPaths);
+		this.checkedClasspaths = new FileSystem.Classpath[allPaths.size()];
+		allPaths.toArray(this.checkedClasspaths);
+		for (int i=0;i<checkedClasspaths.length;i++) {
+			if (checkedClasspaths[i] == null) {
+				throw new IllegalStateException();
+			}
+		}
+	}
+	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
index 164af66..c9ce44a 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java
@@ -61,6 +61,7 @@
 import org.aspectj.bridge.IMessage;
 import org.aspectj.bridge.IMessageHandler;
 import org.aspectj.bridge.IProgressListener;
+import org.aspectj.bridge.ISourceLocation;
 import org.aspectj.bridge.Message;
 import org.aspectj.bridge.MessageUtil;
 import org.aspectj.bridge.SourceLocation;
@@ -78,7 +79,9 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.ClasspathLocation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.CompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
@@ -106,6 +109,7 @@
 	static final boolean FAIL_IF_RUNTIME_NOT_FOUND = false;
 
 	private static final FileFilter binarySourceFilter = new FileFilter() {
+		@Override
 		public boolean accept(File f) {
 			return f.getName().endsWith(".class");
 		}
@@ -508,6 +512,7 @@
 		}
 		// Get a list of all files (i.e. everything that isnt a directory)
 		File[] files = FileUtil.listFiles(dir, new FileFilter() {
+			@Override
 			public boolean accept(File f) {
 				boolean accept = !(f.isDirectory() || f.getName().endsWith(".class"));
 				return accept;
@@ -865,8 +870,7 @@
 			bcelWorld.getLint().setFromProperties(buildConfig.getLintSpecFile());
 		}
 
-		for (Iterator i = buildConfig.getAspectpath().iterator(); i.hasNext();) {
-			File f = (File) i.next();
+		for (File f: buildConfig.getAspectpath()) {
 			if (!f.exists()) {
 				IMessage message = new Message("invalid aspectpath entry: " + f.getName(), null, true);
 				handler.handleMessage(message);
@@ -943,7 +947,19 @@
 		// a classpathDirectory object that will attempt to look for source when it can't find binary.
 		// int[] classpathModes = new int[classpaths.length];
 		// for (int i =0 ;i<classpaths.length;i++) classpathModes[i]=ClasspathDirectory.BINARY;
-		return new FileSystem(classpaths, filenames, defaultEncoding, ClasspathLocation.BINARY);
+		
+		FileSystem nameEnvironment = null;
+		// TODO J9 The compiler likes to work in terms of checked classpath objects - these will be different
+		// depending on where the code came from (classpath, modulepath). If working with just the raw
+		// 'classpaths' object it isn't recording where the code came from. This will be an issue later for
+		// weaving, the distinction will need to be maintained for proper 'module aware/respecting' weaving.
+		if (buildConfig.getCheckedClasspaths() == null) {
+			nameEnvironment = new FileSystem(classpaths, filenames, defaultEncoding, ClasspathLocation.BINARY);
+		} else {
+			nameEnvironment = new FileSystem(buildConfig.getCheckedClasspaths(), filenames, false, null);
+		}
+		nameEnvironment.module = buildConfig.getModuleDesc();
+		return nameEnvironment;
 	}
 
 	public IProblemFactory getProblemFactory() {
@@ -962,9 +978,35 @@
 		if ("".equals(defaultEncoding)) {//$NON-NLS-1$
 			defaultEncoding = null;
 		}
-
+		CompilationUnit moduleCU = null;
+		
+		// TODO building with multiple module-infos?
+		int moduleIndex = -1;
+		IModule moduleDesc = buildConfig.getModuleDesc();
+		String moduleName = moduleDesc == null? null: new String(moduleDesc.name());
+		for (int i=0;i<fileCount;i++) {
+			if (filenames[i].endsWith("module-info.java")) {
+				moduleIndex = i;
+				moduleCU = new CompilationUnit(null, filenames[i], defaultEncoding, null, false, moduleName);
+			}
+		}
+		
 		for (int i = 0; i < fileCount; i++) {
-			units[i] = new CompilationUnit(null, filenames[i], defaultEncoding);
+//			units[i] = new CompilationUnit(null, filenames[i], defaultEncoding);
+			if (i == moduleIndex) {
+				units[i] = moduleCU;
+			} else {
+				units[i] = new CompilationUnit(null, filenames[i], defaultEncoding, null, false, moduleName);
+				// With Java 10 changes the modulebinding is fetched from the rootenvironment 
+				// this.moduleBinding = rootEnvironment.getModule(this.module);
+				// rather than using the moduleCU:
+				// if (this.modCU != null)
+				// 	return this.moduleBinding = this.modCU.module(rootEnvironment);
+//				units[i].setModule(moduleCU);
+			}
+//			new CompilationUnit(null, fileName, encoding, this.destinationPaths[i],
+//					shouldIgnoreOptionalProblems(this.ignoreOptionalProblemsFromFolders, fileName.toCharArray()), 
+//					this.modNames[i]);
 		}
 		return units;
 	}
@@ -1013,7 +1055,9 @@
 			for (int i = 0; i < cps.size(); i++) {
 				classpaths[i] = cps.get(i);
 			}
-			environment = new StatefulNameEnvironment(getLibraryAccess(classpaths, filenames), state.getClassNameToFileMap(), state);
+			FileSystem fileSystem = getLibraryAccess(classpaths, filenames);
+			environment = new StatefulNameEnvironment(fileSystem, state.getClassNameToFileMap(), state);
+			state.setFileSystem(fileSystem);
 			state.setNameEnvironment(environment);
 		} else {
 			((StatefulNameEnvironment) environment).update(state.getClassNameToFileMap(), state.deltaAddedClasses);
@@ -1031,6 +1075,33 @@
 		bMain.batchCompiler = compiler;
 		bMain.initializeAnnotationProcessorManager();
 		compiler.options.produceReferenceInfo = true; // TODO turn off when not needed
+		
+
+		if (bMain.compilerOptions.complianceLevel >= ClassFileConstants.JDK1_6
+				&& bMain.compilerOptions.processAnnotations) {
+			// need this too?
+//			if (bMain.checkVMVersion(ClassFileConstants.JDK1_6)) {
+//				initializeAnnotationProcessorManager();
+//				if (this.classNames != null) {
+//					this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment));
+//				}
+//			} else {
+//				// report a warning
+//				this.logger.logIncorrectVMVersionForAnnotationProcessing();
+//			}
+			if (bMain.checkVMVersion(ClassFileConstants.JDK9)) {
+				try {
+					bMain.initRootModules(bMain.batchCompiler.lookupEnvironment, state.getFileSystem());
+				} catch (IllegalArgumentException iae) {
+					ISourceLocation location = null;
+					if (buildConfig.getConfigFile() != null) {
+						location = new SourceLocation(buildConfig.getConfigFile(), 0);
+					}
+					IMessage m = new Message(iae.getMessage(), IMessage.ERROR, null, location);
+					handler.handleMessage(m);
+				}
+			}
+		}
 
 		try {
 			compiler.compile(getCompilationUnits(filenames));
@@ -1057,6 +1128,7 @@
 	 */
 	public IIntermediateResultsRequestor getInterimResultRequestor() {
 		return new IIntermediateResultsRequestor() {
+			@Override
 			public void acceptResult(InterimCompilationResult result) {
 				if (progressListener != null) {
 					compiledCount++;
@@ -1074,6 +1146,7 @@
 
 	public ICompilerRequestor getBatchRequestor() {
 		return new ICompilerRequestor() {
+			@Override
 			public void acceptResult(CompilationResult unitResult) {
 				// end of compile, must now write the results to the output destination
 				// this is either a jar file or a file in a directory
@@ -1318,6 +1391,7 @@
 		return "couldn't find aspectjrt.jar on classpath, checked: " + makeClasspathString(buildConfig);
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer();
 		buf.append("AjBuildManager(");
@@ -1350,6 +1424,7 @@
 	 *
 	 * @see org.aspectj.ajdt.internal.compiler.AjCompiler.IOutputClassFileNameProvider#getOutputClassFileName(char[])
 	 */
+	@Override
 	public String getOutputClassFileName(char[] eclipseClassFileName, CompilationResult result) {
 		String filename = new String(eclipseClassFileName);
 		filename = filename.replace('/', File.separatorChar) + ".class";
@@ -1373,6 +1448,7 @@
 	 *
 	 * @see org.eclipse.jdt.internal.compiler.ICompilerAdapterFactory#getAdapter(org.eclipse.jdt.internal.compiler.Compiler)
 	 */
+	@Override
 	public ICompilerAdapter getAdapter(org.aspectj.org.eclipse.jdt.internal.compiler.Compiler forCompiler) {
 		// complete compiler config and return a suitable adapter...
 		populateCompilerOptionsFromLintSettings(forCompiler);
@@ -1427,6 +1503,7 @@
 	 *
 	 * @see org.aspectj.ajdt.internal.compiler.IBinarySourceProvider#getBinarySourcesForThisWeave()
 	 */
+	@Override
 	public Map<String, List<UnwovenClassFile>> getBinarySourcesForThisWeave() {
 		return binarySourcesForTheNextCompile;
 	}
@@ -1452,6 +1529,7 @@
 
 	private static class AjBuildContexFormatter implements ContextFormatter {
 
+		@Override
 		public String formatEntry(int phaseId, Object data) {
 			StringBuffer sb = new StringBuffer();
 			if (phaseId == CompilationAndWeavingContext.BATCH_BUILD) {
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
index ffe2f47..a7be9ec 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjCompilerOptions.java
@@ -9,7 +9,6 @@
  * Contributors: 
  *     PARC     initial implementation 
  * ******************************************************************/
-
 package org.aspectj.ajdt.internal.core.builder;
 
 import java.util.Map;
@@ -52,15 +51,15 @@
 
 
 	// constants for irritant levels
-	public static final int InvalidAbsoluteTypeName = IrritantSet.GROUP2 | ASTNode.Bit20;
-	public static final int InvalidWildCardTypeName = IrritantSet.GROUP2 | ASTNode.Bit21;
-	public static final int UnresolvableMember = IrritantSet.GROUP2 | ASTNode.Bit22;
-	public static final int TypeNotExposedToWeaver = IrritantSet.GROUP2 | ASTNode.Bit23;
-	public static final int ShadowNotInStructure = IrritantSet.GROUP2 | ASTNode.Bit24;
-	public static final int UnmatchedSuperTypeInCall = IrritantSet.GROUP2 | ASTNode.Bit25;
-	public static final int CannotImplementLazyTJP = IrritantSet.GROUP2 | ASTNode.Bit26;
-	public static final int NeedSerialVersionUIDField = IrritantSet.GROUP2 | ASTNode.Bit27;
-	public static final int IncompatibleSerialVersion = IrritantSet.GROUP2 | ASTNode.Bit28;
+	public static final int InvalidAbsoluteTypeName = IrritantSet.GROUP3 | ASTNode.Bit1;
+	public static final int InvalidWildCardTypeName = IrritantSet.GROUP3 | ASTNode.Bit2;
+	public static final int UnresolvableMember = IrritantSet.GROUP3 | ASTNode.Bit3;
+	public static final int TypeNotExposedToWeaver = IrritantSet.GROUP3 | ASTNode.Bit4;
+	public static final int ShadowNotInStructure = IrritantSet.GROUP3 | ASTNode.Bit5;
+	public static final int UnmatchedSuperTypeInCall = IrritantSet.GROUP3 | ASTNode.Bit6;
+	public static final int CannotImplementLazyTJP = IrritantSet.GROUP3 | ASTNode.Bit7;
+	public static final int NeedSerialVersionUIDField = IrritantSet.GROUP3 | ASTNode.Bit8;
+	public static final int IncompatibleSerialVersion = IrritantSet.GROUP3 | ASTNode.Bit9;
 
 	public boolean terminateAfterCompilation = false;
 	public boolean xSerializableAspects = false;
@@ -110,12 +109,7 @@
 		setAspectJWarningDefaults();
 	}
 
-	/**
-	 * Initializing the compiler options with external settings
-	 * 
-	 * @param settings
-	 */
-	public AjCompilerOptions(Map settings) {
+	public AjCompilerOptions(Map<String,String> settings) {
 		setAspectJWarningDefaults();
 		if (settings == null) {
 			return;
@@ -123,11 +117,6 @@
 		set(settings);
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jdt.internal.compiler.impl.CompilerOptions#getMap()
-	 */
 	public Map<String,String> getMap() {
 		Map<String,String> map = super.getMap();
 		// now add AspectJ additional options		
@@ -159,12 +148,7 @@
 		return map;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jdt.internal.compiler.impl.CompilerOptions#set(java.util.Map)
-	 */
-	public void set(Map optionsMap) {
+	public void set(Map<String,String> optionsMap) {
 		super.set(optionsMap);
 		Object optionValue;
 		if ((optionValue = optionsMap.get(OPTION_ReportUnusedPrivateMember)) != null) {
@@ -294,14 +278,10 @@
 	private void setAspectJWarningDefaults() {
 		super.warningThreshold = new IrritantSet(super.warningThreshold);
 		super.warningThreshold.set(InvalidAbsoluteTypeName | UnresolvableMember | TypeNotExposedToWeaver
-				| UnmatchedSuperTypeInCall | CannotImplementLazyTJP | CompilerOptions.SwallowedExceptionInCatchBlock);
+				| UnmatchedSuperTypeInCall | CannotImplementLazyTJP);
+		super.warningThreshold.set(CompilerOptions.SwallowedExceptionInCatchBlock);
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
 	public String toString() {
 		StringBuffer buf = new StringBuffer(super.toString());
 		// now add AspectJ additional options
@@ -327,8 +307,7 @@
 		buf.append("\n\t- cannot implement lazy thisJoinPoint (XLint): ").append(getSeverityString(CannotImplementLazyTJP)); //$NON-NLS-1$
 		buf.append("\n\t- need serialVersionUID field (XLint): ").append(getSeverityString(NeedSerialVersionUIDField)); //$NON-NLS-1$
 		buf.append("\n\t- incompatible serial version (XLint): ").append(getSeverityString(IncompatibleSerialVersion)); //$NON-NLS-1$
-		buf
-				.append("\n\t- swallowed exception in catch block (XLint): ").append(getSeverityString(CompilerOptions.SwallowedExceptionInCatchBlock)); //$NON-NLS-1$
+		buf.append("\n\t- swallowed exception in catch block (XLint): ").append(getSeverityString(CompilerOptions.SwallowedExceptionInCatchBlock)); //$NON-NLS-1$
 
 		return buf.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjState.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjState.java
index 965e877..30bc116 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjState.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/AjState.java
@@ -35,7 +35,6 @@
 
 import org.aspectj.ajdt.internal.compiler.CompilationResultDestinationManager;
 import org.aspectj.ajdt.internal.compiler.InterimCompilationResult;
-import org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment;
 import org.aspectj.ajdt.internal.core.builder.AjBuildConfig.BinarySourceFile;
 import org.aspectj.apache.bcel.classfile.ClassParser;
 import org.aspectj.asm.AsmManager;
@@ -44,6 +43,7 @@
 import org.aspectj.bridge.SourceLocation;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
@@ -117,6 +117,7 @@
 
 	private final AjBuildManager buildManager;
 	private INameEnvironment nameEnvironment;
+	private FileSystem fileSystem;
 
 	// now follows normal state that must be written out
 
@@ -663,6 +664,7 @@
 			}
 		}
 
+		@Override
 		public Object get(Object key) {
 			SoftReferenceKnownKey value = (SoftReferenceKnownKey) map.get(key);
 			if (value == null) {
@@ -677,25 +679,30 @@
 			}
 		}
 
+		@Override
 		public Object put(Object k, Object v) {
 			processQueue();
 			return map.put(k, new SoftReferenceKnownKey(k, v));
 		}
 
+		@Override
 		public Set entrySet() {
 			return map.entrySet();
 		}
 
+		@Override
 		public void clear() {
 			processQueue();
 			map.clear();
 		}
 
+		@Override
 		public int size() {
 			processQueue();
 			return map.size();
 		}
 
+		@Override
 		public Object remove(Object k) {
 			processQueue();
 			SoftReferenceKnownKey value = (SoftReferenceKnownKey) map.remove(k);
@@ -797,6 +804,7 @@
 	// return null;
 	// }
 
+	@Override
 	public String toString() {
 		StringBuffer sb = new StringBuffer();
 		// null config means failed build i think as it is only set on successful full build?
@@ -2219,7 +2227,7 @@
 		if (qualifiedNames.length < qualifiedStrings.elementSize) {
 			qualifiedNames = null;
 		}
-		char[][] simpleNames = ReferenceCollection.internSimpleNames(simpleStrings);
+		char[][] simpleNames = ReferenceCollection.internSimpleNames(simpleStrings, true);
 		// if a well known name was found then we can skip over these
 		if (simpleNames.length < simpleStrings.elementSize) {
 			simpleNames = null;
@@ -2445,6 +2453,7 @@
 			this.locationOnDisk = location;
 		}
 
+		@Override
 		public String toString() {
 			StringBuilder s = new StringBuilder();
 			s.append("ClassFile(type=").append(fullyQualifiedTypeName).append(",location=").append(locationOnDisk).append(")");
@@ -2458,6 +2467,7 @@
 			File dir = locationOnDisk.getParentFile();
 			if (dir != null) {
 				File[] weaverGenerated = dir.listFiles(new FilenameFilter() {
+					@Override
 					public boolean accept(File dir, String name) {
 						return name.startsWith(targetPrefix);
 					}
@@ -2518,6 +2528,14 @@
 		this.nameEnvironment = nameEnvironment;
 	}
 
+	public FileSystem getFileSystem() {
+		return this.fileSystem;
+	}
+
+	public void setFileSystem(FileSystem fileSystem) {
+		this.fileSystem = fileSystem;
+	}
+	
 	/**
 	 * Record an aspect that came in on the aspect path. When a .class file changes on the aspect path we can then recognize it as
 	 * an aspect and know to do more than just a tiny incremental build. <br>
@@ -2540,6 +2558,7 @@
 	/**
 	 * See if we can create a delegate from a CompactTypeStructure - TODO better comment
 	 */
+	@Override
 	public ReferenceTypeDelegate getDelegate(ReferenceType referenceType) {
 		File f = classesFromName.get(referenceType.getName());
 		if (f == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
index e9d367a..e48c6cd 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/CompactTypeStructureRepresentation.java
@@ -190,7 +190,13 @@
 		return walker;
 	}
 
+	public char[] getModule() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 	public ExternalAnnotationStatus getExternalAnnotationStatus() {
 		return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
 	}
+
 }
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
index 4ffb009..fa7e531 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/EclipseClassPathManager.java
@@ -61,6 +61,7 @@
 			name = name.substring(0,name.length() - ".class".length());
 		}
 		char[][] cname = CharOperation.splitOn('.',name.toCharArray());
+		// TODO [j9] passing null client/module here...
 		NameEnvironmentAnswer answer = nameEnv.findType(cname);
 		if (answer == null || !answer.isBinaryType()) {
 			return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
index 6167e7a..b3cb0e2 100644
--- a/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java
@@ -1,5 +1,5 @@
 /* *******************************************************************
- * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
+ * Copyright (c) 2002 IBM and other contributors
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
@@ -7,18 +7,17 @@
  * http://www.eclipse.org/legal/epl-v10.html 
  *  
  * Contributors: 
- *     PARC     initial implementation 
+ *     Palo Alto Research Center, Incorporated (PARC)
+ *     Andy Clement
  * ******************************************************************/
 
 package org.aspectj.ajdt.internal.core.builder;
 
-//import java.util.HashMap;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -26,29 +25,27 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
 import org.aspectj.util.FileUtil;
 
-public class StatefulNameEnvironment implements INameEnvironment {
-	private Map classesFromName;
-	private Map inflatedClassFilesCache;
-	private Set packageNames;
+public class StatefulNameEnvironment implements IModuleAwareNameEnvironment {
+	private Map<String,File> classesFromName;
+	private Map<String,NameEnvironmentAnswer> inflatedClassFilesCache;
+	private Set<String> packageNames;
 	private AjState state;
-	private INameEnvironment baseEnvironment;
+	private IModuleAwareNameEnvironment baseEnvironment;
 
-	public StatefulNameEnvironment(INameEnvironment baseEnvironment, Map classesFromName, AjState state) {
+	public StatefulNameEnvironment(IModuleAwareNameEnvironment baseEnvironment, Map<String,File> classesFromName, AjState state) {
 		this.classesFromName = classesFromName;
-		this.inflatedClassFilesCache = new HashMap();
+		this.inflatedClassFilesCache = new HashMap<String,NameEnvironmentAnswer>();
 		this.baseEnvironment = baseEnvironment;
 		this.state = state;
-
-		packageNames = new HashSet();
-		for (Iterator i = classesFromName.keySet().iterator(); i.hasNext();) {
-			String className = (String) i.next();
+		packageNames = new HashSet<String>();
+		for (String className: classesFromName.keySet()) {
 			addAllPackageNames(className);
 		}
-		// System.err.println(packageNames);
 	}
 
 	private void addAllPackageNames(String className) {
@@ -59,12 +56,6 @@
 		}
 	}
 
-	public void cleanup() {
-		baseEnvironment.cleanup();
-		this.classesFromName = Collections.EMPTY_MAP;
-		this.packageNames.clear();// = Collections.EMPTY_SET;
-	}
-
 	private NameEnvironmentAnswer findType(String name) {
 		// pr133532 - ask the state for the type first
 		IBinaryType seenOnPreviousBuild = state.checkPreviousBuild(name);
@@ -76,10 +67,9 @@
 		} else {
 			File fileOnDisk = (File) classesFromName.get(name);
 			// System.err.println("find: " + name + " found: " + cf);
-
-			if (fileOnDisk == null)
+			if (fileOnDisk == null) {
 				return null;
-
+			}
 			try {
 				// System.out.println("from cache: " + name);
 				byte[] bytes = FileUtil.readAsByteArray(fileOnDisk);
@@ -95,24 +85,36 @@
 		}
 	}
 
+	@Override
+	public void cleanup() {
+		baseEnvironment.cleanup();
+		this.classesFromName = Collections.emptyMap();
+		this.packageNames.clear();
+	}
+	
+	@Override
 	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
 		NameEnvironmentAnswer ret = findType(new String(CharOperation.concatWith(packageName, typeName, '.')));
-		if (ret != null)
+		if (ret != null) {
 			return ret;
+		}
 		return baseEnvironment.findType(typeName, packageName);
 	}
 
+	@Override
 	public NameEnvironmentAnswer findType(char[][] compoundName) {
 		NameEnvironmentAnswer ret = findType(new String(CharOperation.concatWith(compoundName, '.')));
-		if (ret != null)
+		if (ret != null) {
 			return ret;
+		}
 		return baseEnvironment.findType(compoundName);
 	}
 
+	@Override
 	public boolean isPackage(char[][] parentPackageName, char[] packageName) {
-		if (baseEnvironment.isPackage(parentPackageName, packageName))
+		if (baseEnvironment.isPackage(parentPackageName, packageName)) {
 			return true;
-
+		}
 		String fullPackageName = new String(CharOperation.concatWith(parentPackageName, packageName, '.'));
 		return packageNames.contains(fullPackageName);
 	}
@@ -121,12 +123,41 @@
 	 * Needs to be told about changes. The 'added' set is a subset of classNameToFileMap consisting of just those names added during
 	 * this build - to reduce any impact on incremental compilation times.
 	 */
-	public void update(Map classNameToFileMap, Set added) {
-		for (Iterator i = added.iterator(); i.hasNext();) {
-			String className = (String) i.next();
+	public void update(Map<String,File> classNameToFileMap, Set<String> added) {
+		for (String className: added) {
 			addAllPackageNames(className);
 		}
 		this.classesFromName = classNameToFileMap;
 	}
 
+	@Override
+	public NameEnvironmentAnswer findType(char[][] compoundName, char[] moduleName) {
+		return baseEnvironment.findType(compoundName, moduleName);
+	}
+
+	@Override
+	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
+		return baseEnvironment.findType(typeName, packageName, moduleName);
+	}
+
+	@Override
+	public char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] name, char[] moduleName) {
+		return baseEnvironment.getModulesDeclaringPackage(parentPackageName, name, moduleName);
+	}
+
+	@Override
+	public boolean hasCompilationUnit(char[][] qualifiedPackageName, char[] moduleName, boolean checkCUs) {
+		return baseEnvironment.hasCompilationUnit(qualifiedPackageName, moduleName, checkCUs);
+	}
+
+	@Override
+	public IModule getModule(char[] moduleName) {
+		return baseEnvironment.getModule(moduleName);
+	}
+
+	@Override
+	public char[][] getAllAutomaticModules() {
+		return baseEnvironment.getAllAutomaticModules();
+	}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BindingKey.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BindingKey.java
index 46842e8..b6443db 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BindingKey.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BindingKey.java
@@ -335,9 +335,7 @@
 		return keyToSignature.signature.toString();
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		return this.key;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BuildJarIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BuildJarIndex.java
index 3c51208..a9d98b8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BuildJarIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/BuildJarIndex.java
@@ -37,6 +37,7 @@
 	private String jarPath;
 	private String indexPath;
 
+	@Override
 	public void execute() throws BuildException {
 		if (this.jarPath == null) {
 			throw new BuildException(AntAdapterMessages.getString("buildJarIndex.jarFile.cannot.be.null")); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CheckDebugAttributes.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CheckDebugAttributes.java
index 922f6f1..c07fa21 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CheckDebugAttributes.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CheckDebugAttributes.java
@@ -43,6 +43,7 @@
 	private String file;
 	private String property;
 
+	@Override
 	public void execute() throws BuildException {
 		if (this.file == null) {
 			throw new BuildException(AntAdapterMessages.getString("checkDebugAttributes.file.argument.cannot.be.null")); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.java
index a53078e..bf5926b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ClasspathContainerInitializer.java
@@ -212,18 +212,23 @@
     	final String description = getDescription(containerPath, project);
     	return
     		new IClasspathContainer() {
+				@Override
 				public IClasspathEntry[] getClasspathEntries() {
 					return new IClasspathEntry[0];
 				}
+				@Override
 				public String getDescription() {
 					return description;
 				}
+				@Override
 				public int getKind() {
 					return 0;
 				}
+				@Override
 				public IPath getPath() {
 					return containerPath;
 				}
+				@Override
 				public String toString() {
 					return getDescription();
 				}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionProposal.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionProposal.java
index a1713fd..0c60bdc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionProposal.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -872,6 +872,30 @@
 	public static final int ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION = 27;
 
 	/**
+	 * Completion is a declaration of a module.
+	 * This kind of completion might occur in a module-info.java file
+	 * after the keyword <code> "module" </code> as shown below:
+	 * <code>"module co^"</code> and complete it to
+	 * <code>"module com.greetings"</code>.
+	 *
+	 * @see #getKind()
+	 * @since 3.14
+	 */
+	public static final int MODULE_DECLARATION = 28;
+
+	/**
+	/**
+	 * Completion is a reference to a module.
+	 * This kind of completion might occur in a context like
+	 * <code>"requires com.g^"</code> and complete it to
+	 * <code>"requires com.greetings"</code> or in
+	 * <code> "to com.g^"</code> to <code>"to com.greetings</code>
+	 *
+	 * @see #getKind()
+	 * @since 3.14
+	 */
+	public static final int MODULE_REF = 29;
+	/**
 	 * First valid completion kind.
 	 *
 	 * @since 3.1
@@ -883,7 +907,7 @@
 	 *
 	 * @since 3.1
 	 */
-	protected static final int LAST_KIND = ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION;
+	protected static final int LAST_KIND = MODULE_REF;
 
 	/**
 	 * Creates a basic completion proposal. All instance
@@ -1155,7 +1179,7 @@
 	}
 
 	/**
-	 * Returns the type signature or package name of the relevant
+	 * Returns the type signature or package name or module name (9) of the relevant
 	 * declaration in the context, or <code>null</code> if none.
 	 * <p>
 	 * This field is available for the following kinds of
@@ -1180,6 +1204,10 @@
 	 * 	<li><code>METHOD_DECLARATION</code> - type signature
 	 * of the type that declares the method that is being
 	 * implemented or overridden</li>
+	 * 	<li><code>MODULE_DECLARATION</code> - 
+	 * possible name of the module that is being declared</li>
+	 * 	<li><code>MODULE_REF</code> - 
+	 * name of the module that is referenced</li>
 	 * 	<li><code>PACKAGE_REF</code> - dot-based package
 	 * name of the package that is referenced</li>
 	 * 	<li><code>TYPE_IMPORT</code> - dot-based package
@@ -1194,7 +1222,7 @@
 	 * returned.
 	 * </p>
 	 *
-	 * @return a type signature or a package name (depending
+	 * @return a type signature or a package name or module name (9) (depending
 	 * on the kind of completion), or <code>null</code> if none
 	 * @see Signature
 	 */
@@ -1230,7 +1258,7 @@
 	}
 
 	/**
-	 * Sets the type or package signature of the relevant
+	 * Sets the type or package signature or module name (9) of the relevant
 	 * declaration in the context, or <code>null</code> if none.
 	 * <p>
 	 * If not set, defaults to none.
@@ -1240,7 +1268,7 @@
 	 * its properties; this method is not intended to be used by other clients.
 	 * </p>
 	 *
-	 * @param signature the type or package signature, or
+	 * @param signature the type or package signature or module name(9) , or
 	 * <code>null</code> if none
 	 */
 	public void setDeclarationSignature(char[] signature) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.java
index 639a22d..ded3fbd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestor.java
@@ -355,4 +355,15 @@
 	public void setRequireExtendedContext(boolean require) {
 		this.requireExtendedContext = require;
 	}
+
+	/**
+	 * If this returns true, exclude test sources and dependencies.
+	 * 
+	 * @return <code>true</code> if this requestor does not want to get any completions from test code.
+	 * @see IClasspathAttribute#TEST
+	 * @since 3.14
+	 */
+	public boolean isTestCodeExcluded() {
+		return false;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.java
index f6946d5..5232089 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CompletionRequestorAdapter.java
@@ -24,9 +24,7 @@
  */
 public class CompletionRequestorAdapter implements ICompletionRequestor {
 
-	/*
-	 * @see ICompletionRequestor#acceptAnonymousType(char[], char[], char[][], char[][], char[][], char[], int, int, int)
-	 */
+	@Override
 	public void acceptAnonymousType(
 		char[] superTypePackageName,
 		char[] superTypeName,
@@ -41,9 +39,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptClass(char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptClass(
 		char[] packageName,
 		char[] className,
@@ -55,16 +51,12 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptError(IProblem)
-	 */
+	@Override
 	public void acceptError(IProblem error) {
 		// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptField(char[], char[], char[], char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptField(
 		char[] declaringTypePackageName,
 		char[] declaringTypeName,
@@ -79,9 +71,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptInterface(char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptInterface(
 		char[] packageName,
 		char[] interfaceName,
@@ -93,9 +83,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptKeyword(char[], int, int)
-	 */
+	@Override
 	public void acceptKeyword(
 		char[] keywordName,
 		int completionStart,
@@ -104,9 +92,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptLabel(char[], int, int)
-	 */
+	@Override
 	public void acceptLabel(
 		char[] labelName,
 		int completionStart,
@@ -115,9 +101,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptLocalVariable(char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptLocalVariable(
 		char[] name,
 		char[] typePackageName,
@@ -129,9 +113,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptMethod(char[], char[], char[], char[][], char[][], char[][], char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptMethod(
 		char[] declaringTypePackageName,
 		char[] declaringTypeName,
@@ -149,9 +131,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptMethodDeclaration(char[], char[], char[], char[][], char[][], char[][], char[], char[], char[], int, int, int)
-	 */
+	@Override
 	public void acceptMethodDeclaration(
 		char[] declaringTypePackageName,
 		char[] declaringTypeName,
@@ -169,9 +149,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptModifier(char[], int, int)
-	 */
+	@Override
 	public void acceptModifier(
 		char[] modifierName,
 		int completionStart,
@@ -180,9 +158,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptPackage(char[], char[], int, int)
-	 */
+	@Override
 	public void acceptPackage(
 		char[] packageName,
 		char[] completionName,
@@ -192,9 +168,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptType(char[], char[], char[], int, int)
-	 */
+	@Override
 	public void acceptType(
 		char[] packageName,
 		char[] typeName,
@@ -205,9 +179,7 @@
 			// default behavior is to ignore
 	}
 
-	/*
-	 * @see ICompletionRequestor#acceptVariableName(char[], char[], char[], char[], int, int)
-	 */
+	@Override
 	public void acceptVariableName(
 		char[] typePackageName,
 		char[] typeName,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.java
index 3c5496c..b78a66b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/CorrectionEngine.java
@@ -313,6 +313,7 @@
 	 * This field is not intended to be used by client.
 	 */
 	protected CompletionRequestor completionRequestor = new CompletionRequestor() {
+		@Override
 		public void accept(CompletionProposal proposal) {
 			switch (proposal.getKind()) {
 				case CompletionProposal.TYPE_REF:
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Flags.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Flags.java
index 2584604..5fedc01 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Flags.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Flags.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -173,6 +173,14 @@
 	public static final int AccAnnotationDefault = ClassFileConstants.AccAnnotationDefault;
 	
 	/**
+	 * Module declaration property flag.
+	 * Used to flag a compilation unit or a class file that contains a module declaration.
+	 * 
+	 * @since 3.14
+	 */
+	public static final int AccModule = ClassFileConstants.AccModule;
+	
+	/**
 	 * Not instantiable.
 	 */
 	private Flags() {
@@ -407,6 +415,18 @@
 	}
 	
 	/**
+	 * Returns whether the given integer has the <code>AccModule</code>
+	 * bit set.
+	 *
+	 * @return <code>true</code> if the <code>AccModule</code> flag is included
+	 * @see #AccModule
+	 * @since 3.14
+	 */	
+	public static boolean isModule(int flags) {
+		return (flags & AccModule) != 0;
+	}
+
+	/**
 	 * Returns a standard string describing the given modifier flags.
 	 * Only modifier flags are included in the output; deprecated,
 	 * synthetic, bridge, etc. flags are ignored.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IAnnotation.java
index 29a258d..8dd0b8b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IAnnotation.java
@@ -39,6 +39,7 @@
 	 *
 	 * @return the name of this annotation
 	 */
+	@Override
 	String getElementName();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClassFile.java
index 3118076..f0a068c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClassFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClassFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,8 +13,12 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 
 /**
- * Represents an entire binary type (single <code>.class</code> file).
- * A class file has a single child of type <code>IType</code>.
+ * Represents a single <code>.class</code> file, holding the binary form
+ * of either a type or a module:
+ * <ul>
+ * <li>A class file of type {@link IOrdinaryClassFile} has a single child of type <code>IType</code>,</li>
+ * <li>a class file of type {@link IModularClassFile} has a single child of type <code>IModuleDescription</code>.</li>
+ * </ul>
  * Class file elements need to be opened before they can be navigated.
  * If a class file cannot be parsed, its structure remains unknown. Use
  * <code>IJavaElement.isStructureKnown</code> to determine whether this is the
@@ -94,7 +98,10 @@
  * This is a handle-only method. The type may or may not exist.
  *
  * @return the type contained in this class file
+ * @throws UnsupportedOperationException when invoked on an instance representing a modular class file.
+ * @deprecated should only be used as {@link IOrdinaryClassFile#getType()}.
  */
+@Deprecated
 IType getType();
 /**
  * Returns a working copy on the source associated with this class file using the given
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.java
index a6863f5..c8ba9c9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathAttribute.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
@@ -115,6 +115,89 @@
 	String OPTIONAL = "optional"; //$NON-NLS-1$
 
 	/**
+	 * Constant for the name of the module attribute. The possible values
+	 * for this attribute are <code>"true"</code> or <code>"false"</code>.
+	 * When not present, <code>"false"</code> is assumed.
+	 * If the value of this attribute is <code>"true"</code>, the classpath
+	 * entry is considered to be on the module path and will be treated as a
+	 * regular named module or as an automatic module.
+	 *
+	 * @since 3.14
+	 */
+	String MODULE = "module"; //$NON-NLS-1$
+
+	/**
+	 * Constant for the name of the add-exports attribute.
+	 * 
+	 * <p>The value of this attribute must adhere to the syntax of <code>javac's</code>
+	 * {@code --add-exports} command line option: {@code <source-module>/<package>=<target-module>(,<target-module>)*}.
+	 * Multiple such options are packed as a ':' separated list into a single classpath attribute.
+	 * The given exports will be added at compile time.</p>
+	 * <p>Classpath entries with this attribute should also have a {@link #MODULE} attribute
+	 * with value <code>"true"</code>.</p>
+	 * 
+	 * @since 3.14
+	 */
+	String ADD_EXPORTS = "add-exports"; //$NON-NLS-1$
+
+	/**
+	 * Constant for the name of the add-reads attribute.
+	 * 
+	 * <p>The value of this attribute must adhere to the syntax of <code>javac's</code>
+	 * {@code --add-reads} command line option: {@code <source-module>=<target-module>}.
+	 * The given reads edge will be added at compile time.</p>
+	 * 
+	 * @since 3.14
+	 */
+	String ADD_READS = "add-reads"; //$NON-NLS-1$
+
+	/**
+	 * Constant for the name of the patch-module attribute.
+	 * 
+	 * <p>The value of this attribute must be the name of a module defined in the
+	 * classpath entry, to which this attribute is attached.</p>
+	 * 
+	 * <p>This attribute is supported for classpath entries of kind
+	 * {@link IClasspathEntry#CPE_CONTAINER}, {@link IClasspathEntry#CPE_LIBRARY}
+	 * and {@link IClasspathEntry#CPE_PROJECT}.
+	 * A classpath entry having this attribute must also have the
+	 * {@link #MODULE} attribute with value <code>"true"</code>.</p>
+	 *
+	 * @since 3.14
+	 */
+	String PATCH_MODULE = "patch-module"; //$NON-NLS-1$
+
+	/**
+	 * Constant for the name of the limit-modules attribute.
+	 * 
+	 * <p>The value of this attribute must be a comma-separated list of names of modules
+	 * defined in the classpath entry, to which this attribute is attached.
+	 * The set of modules observable through this entry will be limited to
+	 * the transitive closure of modules in this list.</p>
+	 * 
+	 * <p>This attribute is supported for classpath entries of kind
+	 * {@link IClasspathEntry#CPE_CONTAINER}.
+	 * A classpath entry having this attribute must also have the
+	 * {@link #MODULE} attribute with value <code>"true"</code>.</p>
+	 *
+	 * @since 3.14
+	 */
+	String LIMIT_MODULES = "limit-modules"; //$NON-NLS-1$
+
+	/**
+	 * Constant of the name of the module-main-class attribute.
+	 * The classpath entry holding this attribute must refer to a source folder
+	 * containing the implementation of a module.
+	 * 
+	 * <p>The value of this attribute must be the name of a class defined in this module.
+	 * It will be used for generating the <code>ModuleMainClass</code> attribute
+	 * in <code>module-info.class</code>.</p>
+	 * 
+	 * @since 3.14
+	 */
+	String MODULE_MAIN_CLASS = "module-main-class"; //$NON-NLS-1$
+
+	/**
 	 * Constant for the name of the external annotation path attribute. 
 	 * 
 	 * <p>The value for this attribute has to be the string representation of a path.
@@ -126,6 +209,37 @@
 	String EXTERNAL_ANNOTATION_PATH = "annotationpath"; //$NON-NLS-1$
 
 	/**
+	 * Constant for the name of the test attribute.
+	 * 
+	 * <p>
+	 * The possible values for this attribute are <code>"true"</code> or <code>"false"</code>. When not present,
+	 * <code>"false"</code> is assumed. If the value of this attribute is <code>"true"</code>, and the classpath entry
+	 * is a source folder, it is assumed to contain test sources, otherwise main sources.
+	 * </p>
+	 * </p>
+	 * During the compilation of main sources, only code is visible, that is reachable via classpath entries which do
+	 * not have the test attribute set to to "true". During the compilation of test sources, all code is visible as if
+	 * this attribute didn't exist at all.
+	 * </p>
+	 * 
+	 * @since 3.14
+	 */
+	String TEST = "test"; //$NON-NLS-1$
+
+	/**
+	 * Constant for the name of the without_test_code attribute.
+	 * 
+	 * <p>
+	 * The possible values for this attribute are <code>"true"</code> or <code>"false"</code>. When not present,
+	 * <code>"false"</code> is assumed. If the value of this attribute is <code>"true"</code>, and the classpath entry
+	 * is a project, any test code reachable via that classpath entry will not be visible even to test sources.
+	 * </p>
+	 * 
+	 * @since 3.14
+	 */
+	String WITHOUT_TEST_CODE = "without_test_code"; //$NON-NLS-1$
+
+	/**
 	 * Returns the name of this classpath attribute.
 	 *
 	 * @return the name of this classpath attribute.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.java
index 89ceb0a..e42111c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IClasspathEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -472,4 +472,40 @@
 	 * @deprecated Use {@link JavaCore#getResolvedClasspathEntry(IClasspathEntry)} instead
 	 */
 	IClasspathEntry getResolvedEntry();
+
+	/**
+	 * This is a convience method, that returns <code>true</code> if the extra attributes contain an attribute whose name
+	 * is {@link IClasspathAttribute#TEST} and whose value is 'true'.
+	 * 
+	 * @see #getExtraAttributes()
+	 * @see IClasspathAttribute#TEST
+	 * @return <code>true</code>, if if the extra attributes contain a attribute whose name is
+	 *         {@link IClasspathAttribute#TEST} and whose value is 'true'.
+	 * @since 3.14
+	 */
+	default public boolean isTest() {
+		for (IClasspathAttribute attribute : getExtraAttributes()) {
+			if (IClasspathAttribute.TEST.equals(attribute.getName()) && "true".equals(attribute.getValue())) //$NON-NLS-1$
+				return true;
+		}
+		return false;
+	}
+
+	/**
+	 * This is a convience method, that returns <code>true</code> if the extra attributes contain an attribute whose name
+	 * is {@link IClasspathAttribute#WITHOUT_TEST_CODE} and whose value is 'true'.
+	 * 
+	 * @see #getExtraAttributes()
+	 * @see IClasspathAttribute#WITHOUT_TEST_CODE
+	 * @return <code>true</code>, if if the extra attributes contain a attribute whose name is
+	 *         {@link IClasspathAttribute#WITHOUT_TEST_CODE} and whose value is 'true'.
+	 * @since 3.14
+	 */
+	default public boolean isWithoutTestCode() {
+		for (IClasspathAttribute attribute : getExtraAttributes()) {
+			if (IClasspathAttribute.WITHOUT_TEST_CODE.equals(attribute.getName()) && "true".equals(attribute.getValue())) //$NON-NLS-1$
+				return true;
+		}
+		return false;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.java
index 81099b2..2faa16d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ICompilationUnit.java
@@ -344,6 +344,7 @@
  * @return the found elements in this compilation unit that correspond to the given element
  * @since 3.0
  */
+@Override
 IJavaElement[] findElements(IJavaElement element);
 /**
  * Finds the working copy for this compilation unit, given a {@link WorkingCopyOwner}.
@@ -550,6 +551,7 @@
  * @return true if this element is a working copy, false otherwise
  * @since 3.0
  */
+@Override
 boolean isWorkingCopy();
 
 /**
@@ -785,5 +787,6 @@
  * </ul>
  * @since 3.0
  */
+@Override
 void restore() throws JavaModelException;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IField.java
index 5c5ea3a..767ee7f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IField.java
@@ -39,6 +39,7 @@
  * Returns the simple name of this field.
  * @return the simple name of this field.
  */
+@Override
 String getElementName();
 /**
  * Returns the binding key for this field only if the given field is {@link #isResolved() resolved}.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.java
index d2aa398..197089e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IImportDeclaration.java
@@ -27,6 +27,7 @@
  *
  * @return the name that has been imported
  */
+@Override
 String getElementName();
 /**
  * Returns the modifier flags for this import. The flags can be examined using class
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.java
index 1b921a3..ef1aef0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJarEntryResource.java
@@ -48,6 +48,7 @@
 	 *
 	 * @return the absolute path of this jar entry resource
 	 */
+	@Override
 	IPath getFullPath();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaElement.java
index f20b447..7cd39bc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -132,6 +132,14 @@
 	int ANNOTATION = 16;
 
 	/**
+	 * Constant represents a module descriptor.
+	 * A Java element with this type can be safely cast to {@link IModuleDescription}.
+	 *
+	 * @since 3.14
+	 */
+	int JAVA_MODULE = 17;
+
+	/**
 	 * Returns whether this Java element exists in the model.
 	 * <p>
 	 * Java elements are handle objects that may or may not be backed by an
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.java
index 22cc3e7..5359a67 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaModelStatusConstants.java
@@ -356,4 +356,20 @@
 	 * @see org.aspectj.org.eclipse.jdt.core.IClasspathAttribute#EXTERNAL_ANNOTATION_PATH
 	 */
 	public static final int CP_INVALID_EXTERNAL_ANNOTATION_PATH = 1014;
+	
+	/**
+	 * Status constant indicating that a source folder marked to contain test sources has no separate output location, but the project also contains main sources. 
+	 * preference settings.
+	 * @see IClasspathAttribute#TEST
+	 * @since 3.14
+	 */
+	public static final int TEST_SOURCE_REQUIRES_SEPARATE_OUTPUT_LOCATION = 1015;
+
+	/**
+	 * Status constant indicating that the output folder of a source folder marked to contain test sources is not separate from the output folders of main sources.
+	 * @see IClasspathAttribute#TEST
+	 * @since 3.14
+	 */
+	public static final int TEST_OUTPUT_FOLDER_MUST_BE_SEPARATE_FROM_MAIN_OUTPUT_FOLDERS = 1016;
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaProject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaProject.java
index ace6472..9be4cbb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaProject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IJavaProject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 package org.aspectj.org.eclipse.jdt.core;
 
 import java.util.Map;
+import java.util.Set;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -239,6 +240,23 @@
 	 * @since 2.1
 	 */
 	IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry);
+
+	/**
+	 * In a Java 9 project, a classpath entry can be filtered using a {@link IClasspathAttribute#LIMIT_MODULES} attribute,
+	 * otherwise for an unnamed module a default set of roots is used as defined in JEP 261.
+	 * In both cases {@link IJavaProject#findPackageFragmentRoots(IClasspathEntry)} will not contain all roots physically
+	 * present in the container.
+	 * <p>
+	 * This API can be used to bypass any filter and get really all roots to which the given entry is resolved.
+	 * </p>
+	 * 
+	 * @param entry a classpath entry of this Java project
+	 * @return the unfiltered array of package fragment roots to which the classpath entry resolves
+	 * @see #findPackageFragmentRoots(IClasspathEntry)
+	 * @since 3.14
+	 */
+	IPackageFragmentRoot[] findUnfilteredPackageFragmentRoots(IClasspathEntry entry);
+
 	/**
 	 * Returns the first type (excluding secondary types) found following this project's
 	 * classpath with the given fully qualified name or <code>null</code> if none is found.
@@ -407,6 +425,20 @@
 	IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException;
 
 	/**
+	 * Finds the first module with the given name found following this project's module path.
+	 * If the returned module descriptor is part of a compilation unit, its owner is the given owner.
+	 * @param moduleName the given module name
+	 * @param owner the owner of the returned module descriptor's compilation unit
+	 * 
+	 * @exception JavaModelException if this project does not exist or if an
+	 *		exception occurs while accessing its corresponding resource
+	 * @return the first module found following this project's module path
+	 * with the given name or <code>null</code> if none is found
+	 * @since 3.14
+	 */
+	IModuleDescription findModule(String moduleName, WorkingCopyOwner owner) throws JavaModelException;
+
+	/**
 	 * Returns all of the existing package fragment roots that exist
 	 * on the classpath, in the order they are defined by the classpath.
 	 *
@@ -576,6 +608,23 @@
 	IProject getProject();
 
 	/**
+	 * Returns the <code>IModuleDescription</code> this project represents or 
+	 * null if the Java project doesn't represent any named module. A Java 
+	 * project is said to represent a module if any of its source package 
+	 * fragment roots (see {@link IPackageFragmentRoot#K_SOURCE}) contains a 
+	 * valid Java module descriptor, or if one of its classpath entries
+	 * has a valid {@link IClasspathAttribute#PATCH_MODULE} attribute.
+	 * In the latter case the corresponding module description of the
+	 * location referenced by that classpath entry is returned.
+	 * 
+	 * @return the <code>IModule</code> this project represents.
+	 * @exception JavaModelException if this element does not exist or if an
+	 *		exception occurs while accessing its corresponding resource
+	 * @since 3.14
+	 */
+	IModuleDescription getModuleDescription() throws JavaModelException;
+
+	/**
 	 * Returns the raw classpath for the project, as a list of classpath
 	 * entries. This corresponds to the exact set of entries which were assigned
 	 * using <code>setRawClasspath</code>, in particular such a classpath may
@@ -1159,4 +1208,30 @@
 	 */
 	void setRawClasspath(IClasspathEntry[] entries, IPath outputLocation, IProgressMonitor monitor)
 		throws JavaModelException;
+
+	/**
+	 * Returns the classpath entry that refers to the given path or <code>null</code> if there is no reference to the
+	 * path.
+	 * 
+	 * @param path
+	 *            IPath
+	 * @return the classpath entry or <code>null</null>.
+	 * @throws JavaModelException
+	 * @since 3.14
+	 */
+	IClasspathEntry getClasspathEntryFor(IPath path) throws JavaModelException;
+
+	/**
+	 * When compiling test code in a modular project that has non-source classpath entries which don't have the
+	 * {@link IClasspathAttribute#MODULE} set, the module is assumed to read the unnamed module (which is useful for
+	 * test-only dependencies that should not be mentioned in the module-info.java). When executing test code that was
+	 * compiled like this, corresponding "--add-reads" options need to be passed to the java runtime. This method
+	 * returns the list of modules on the project's classpath for which this is the case.
+	 * 
+	 * @return the set of module names
+	 * @throws JavaModelException
+	 *             when access to the classpath or module description of the given project fails.
+	 * @since 3.14
+	 */
+	Set<String> determineModulesOfProjectsWithNonEmptyClasspath() throws JavaModelException;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ILocalVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ILocalVariable.java
index 69c4413..385bdef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ILocalVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ILocalVariable.java
@@ -31,6 +31,7 @@
 	 *
 	 * @return the name of this local variable.
 	 */
+	@Override
 	String getElementName();
 
 	/**
@@ -38,6 +39,7 @@
 	 *
 	 * @return the source range of this local variable's name
 	 */
+	@Override
 	ISourceRange getNameRange();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMember.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMember.java
index cac7ab8..2416394 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMember.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMember.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,8 +12,8 @@
 
 /**
  * Common protocol for Java elements that can be members of types.
- * This set consists of <code>IType</code>, <code>IMethod</code>,
- * <code>IField</code>, and <code>IInitializer</code>.
+ * This set consists of {@link IType}, {@link IMethod},
+ * {@link IField}, {@link IInitializer} and {@link IModuleDescription}.
  * <p>
  * The children are listed in the order in which they appear in the source or class file.
  * </p>
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMethod.java
index 6863199..449e27d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IMethod.java
@@ -42,6 +42,7 @@
  * This is a handle-only method.
  * @return the simple name of this method
  */
+@Override
 String getElementName();
 /**
  * Returns the type signatures of the exceptions this method throws,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModularClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModularClassFile.java
new file mode 100644
index 0000000..74622fd
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModularClassFile.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core;
+
+/**
+ * Represents the class file of a module description ("module-info.class").
+ *
+ * @since 3.14
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IModularClassFile extends IClassFile {
+	/**
+	 * Returns the module description contained in this type root.
+	 * An error-free {@link IModularClassFile} should always have a module.
+	 *
+	 * @throws JavaModelException 
+	 * @return the module description contained in the type root.
+	 */
+	@Override
+	IModuleDescription getModule() throws JavaModelException;
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModuleDescription.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModuleDescription.java
new file mode 100644
index 0000000..8df8a1b
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IModuleDescription.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core;
+
+/**
+ * Represents a Java module descriptor. The module description could either come from source or binary.
+ * A simple module looks like the following:
+ * <pre>
+ * module my.module {
+ * 		exports my.pack1;
+ * 		exports my.pack2;
+ * 		requires java.sql;
+ * }
+ * </pre>
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 3.14
+ */
+public interface IModuleDescription extends IMember, IAnnotatable {
+
+	/**
+	 * Answer the names of all modules directly required from this module.
+	 *
+	 * @return a non-null array of module names
+	 * @since 3.14
+	 */
+	String[] getRequiredModuleNames() throws JavaModelException;
+	
+	/**
+	 * 
+	 * @return true if automatic module, else false
+	 * @since 3.14
+	 */
+	default boolean isAutoModule() {
+		return false;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.java
new file mode 100644
index 0000000..194f65c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IOrdinaryClassFile.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core;
+
+/**
+ * Ordinary form of a {@link IClassFile} which holds exactly one <code>IType</code>.
+ * 
+ * @since 3.14
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IOrdinaryClassFile extends IClassFile {
+	/**
+	 * Returns the type contained in this class file.
+	 * This is a handle-only method. The type may or may not exist.
+	 *
+	 * <p>This method supersedes the corresponding super method.
+	 * This method will never throw {@link UnsupportedOperationException}.</p>
+	 *
+	 * @return the type contained in this class file
+	 */
+	@Override
+	IType getType();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.java
index bc1c20c..2667a90 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageDeclaration.java
@@ -23,5 +23,6 @@
  *
  * @return the name of the package the statement
  */
+@Override
 String getElementName();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragment.java
index fcde33c..de03096 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -75,23 +75,90 @@
 	 * in this package (for example, <code>"Object.class"</code>).
 	 * The ".class" suffix is required.
 	 * This is a handle-only method.  The class file may or may not be present.
+	 * <p>
+	 * This method can handle ordinary class files or modular class files
+	 * denoted by the name <code>"module-info.class"</code>.
+	 * </p>
 	 * @param name the given name
 	 * @return the class file with the specified name in this package
 	 */
 	IClassFile getClassFile(String name);
 	/**
+	 * Returns the class file with the specified name
+	 * in this package (for example, <code>"Object.class"</code>).
+	 * The ".class" suffix is required.
+	 * This is a handle-only method.  The class file may or may not be present.
+	 * <p>
+	 * This method is not applicable to the files <code>"module-info.class"</code>
+	 * as introduced in Java 9. For those please use {@link #getModularClassFile()}.
+	 * </p>
+	 * @param name the given name
+	 * @return the class file with the specified name in this package
+	 * @since 3.14
+	 */
+	IOrdinaryClassFile getOrdinaryClassFile(String name);
+
+	/**
+	 * Returns the class file for <code>"module-info.class"</code> in this package.
+	 * This is a handle-only method.  The class file may or may not be present.
+	 * If the class file is present, then it is guaranteed to contain an {@link IModuleDescription}.
+	 * 
+	 * @since 3.14
+	 * @return the class file representing "module-info.class" in this package.
+	 */
+	IModularClassFile getModularClassFile();
+
+	/**
 	 * Returns all of the class files in this package fragment.
 	 *
 	 * <p>Note: it is possible that a package fragment contains only
 	 * compilation units (in other words, its kind is <code>K_SOURCE</code>), in
-	 * which case this method returns an empty collection.
+	 * which case this method returns an empty collection.</p>
+	 * 
+	 * <p>Note: the returned list may contain ordinary class files as well as
+	 * a modular class file (for "module-info.class").</p>
 	 *
 	 * @exception JavaModelException if this element does not exist or if an
 	 *		exception occurs while accessing its corresponding resource.
 	 * @return all of the class files in this package fragment
+	 * @since 3.14
 	 */
+	IClassFile[] getAllClassFiles() throws JavaModelException;
+	
+	/**
+	 * Returns all of the ordinary class files in this package fragment.
+	 * 
+	 * <p>Note: this list never includes a modular class file 
+	 * (see {@link #getModularClassFile()}).</p>
+	 *
+	 * <p>Note: it is possible that a package fragment contains only
+	 * compilation units (in other words, its kind is <code>K_SOURCE</code>), in
+	 * which case this method returns an empty collection.</p>
+	 *
+	 * @exception JavaModelException if this element does not exist or if an
+	 *		exception occurs while accessing its corresponding resource.
+	 * @return all of the ordinary class files in this package fragment
+	 * @deprecated Clients are advised to specifically use either {@link #getOrdinaryClassFiles()}
+	 * 		or {@link #getAllClassFiles()} to express their intent.
+	 */
+	@Deprecated
 	IClassFile[] getClassFiles() throws JavaModelException;
 	/**
+	 * Returns all of the ordinary class files in this package fragment,
+	 * i.e., not including the modular class file "module-info.class".
+	 *
+	 * <p>Note: it is possible that a package fragment contains only
+	 * compilation units (in other words, its kind is <code>K_SOURCE</code>), in
+	 * which case this method returns an empty collection.</p>
+	 * 
+	 * @exception JavaModelException if this element does not exist or if an
+	 *		exception occurs while accessing its corresponding resource.
+	 * @return all of the ordinary class files in this package fragment
+	 * @since 3.14
+	 */
+	IOrdinaryClassFile[] getOrdinaryClassFiles() throws JavaModelException;
+
+	/**
 	 * Returns the compilation unit with the specified name
 	 * in this package (for example, <code>"Object.java"</code>).
 	 * The name has to be a valid compilation unit name.
@@ -141,6 +208,7 @@
 	 *
 	 * @return the dot-separated package name of this fragment
 	 */
+	@Override
 	String getElementName();
 	/**
 	 * Returns this package fragment's root kind encoded as an integer.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.java
index 9c620aa..95907ae 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IPackageFragmentRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -446,4 +446,17 @@
 	 * @since 2.1
 	 */
 	void move(IPath destination, int updateResourceFlags, int updateModelFlags, IClasspathEntry sibling, IProgressMonitor monitor) throws JavaModelException;
+
+	/**
+	 * Returns the <code>IModuleDescription</code> that this package fragment root contains 
+	 * or <code>null</code> if the root doesn't contain any named module. If present the module
+	 * descriptor is found as a child of the package fragment representing the default package. 
+	 * 
+	 * Note that only one of the source package fragment roots in a Java Project can legally
+	 * contain a module descriptor.
+	 *
+	 * @return the <code>IModuleDescription</code> this root contains.
+	 * @since 3.14
+	 */
+	public IModuleDescription getModuleDescription();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IType.java
index af13a83..b6809d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/IType.java
@@ -501,6 +501,7 @@
 	 *
 	 * @return the simple name of this type
 	 */
+	@Override
 	String getElementName();
 
 	/**
@@ -1227,4 +1228,12 @@
 	 * @since 3.10
 	 */
 	public boolean isLambda();
+
+	/**
+	 * Strengthen the contract of the inherited method to signal that the returned class file
+	 * is always an {@link IOrdinaryClassFile}.
+	 * @since 3.14
+	 */
+	@Override
+	IOrdinaryClassFile getClassFile();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ITypeRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ITypeRoot.java
index 0d58bfa..12b7503 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ITypeRoot.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ITypeRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,7 +33,18 @@
  * @return the found primary type of this Java type root, or <code>null</code> if no such a type exists
  */
 IType findPrimaryType();
-
+/**
+ * Returns the module description contained in this type root or null if there is no module
+ * in this type root.
+ * <p>Only subtype {@link IModularClassFile} promises to return non-null.</p>
+ *
+ * @throws JavaModelException 
+ * @since 3.14
+ * @return the module description contained in the type root or null.
+ */
+default IModuleDescription getModule() throws JavaModelException {
+	return null;
+}
 /**
  * Returns the smallest element within this Java type root that
  * includes the given source position (that is, a method, field, etc.), or
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JDTCompilerAdapter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JDTCompilerAdapter.java
index 734cac7..bbda004 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JDTCompilerAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JDTCompilerAdapter.java
@@ -68,6 +68,7 @@
 	 * @throws BuildException if anything wrong happen during the compilation
 	 * @return boolean true if the compilation is ok, false otherwise
 	 */
+	@Override
 	public boolean execute() throws BuildException {
 		this.attributes.log(AntAdapterMessages.getString("ant.jdtadapter.info.usingJDTCompiler"), Project.MSG_VERBOSE); //$NON-NLS-1$
 		Commandline cmd = setupJavacCommand();
@@ -91,6 +92,7 @@
 	}
 
 
+	@Override
 	protected Commandline setupJavacCommand() throws BuildException {
 		Commandline cmd = new Commandline();
 		this.customDefaultOptions = new CompilerOptions().getMap();
@@ -510,6 +512,7 @@
 	 *
 	 * @param cmd the given command line
 	 */
+	@Override
 	protected void logAndAddFilesToCompile(Commandline cmd) {
 		this.attributes.log("Compilation " + cmd.describeArguments(), //$NON-NLS-1$
 				Project.MSG_VERBOSE);
@@ -535,6 +538,7 @@
 			//we need the directories sorted, longest first,since sub directories can
 			//override encodings for their parent directories
 			Comparator comparator = new Comparator() {
+				@Override
 				public int compare(Object o1, Object o2) {
 					return ((String) o2).length() - ((String) o1).length();
 				}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaConventions.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaConventions.java
index ad129fb..1c56f06 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaConventions.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaConventions.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
 package org.aspectj.org.eclipse.jdt.core;
 
 import java.util.StringTokenizer;
+import java.util.regex.Pattern;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
@@ -38,7 +39,8 @@
 public final class JavaConventions {
 
 	private static final char DOT= '.';
-	private static final String PACKAGE_INFO = new String(TypeConstants.PACKAGE_INFO_NAME);
+    private static final Pattern DOT_DOT = Pattern.compile("(\\.)(\\1)+"); //$NON-NLS-1$
+    private static final Pattern PREFIX_JAVA = Pattern.compile("java$"); //$NON-NLS-1$
 	private static final Scanner SCANNER = new Scanner(false /*comment*/, true /*whitespace*/, false /*nls*/, ClassFileConstants.JDK1_3 /*sourceLevel*/, null/*taskTag*/, null/*taskPriorities*/, true /*taskCaseSensitive*/);
 
 	private JavaConventions() {
@@ -157,7 +159,8 @@
 		// JSR-175 metadata strongly recommends "package-info.java" as the
 		// file in which to store package annotations and
 		// the package-level spec (replaces package.html)
-		if (!identifier.equals(PACKAGE_INFO)) {
+		if (!CharOperation.equals(identifier.toCharArray(), TypeConstants.PACKAGE_INFO_NAME)
+				&& !CharOperation.equals(identifier.toCharArray(), TypeConstants.MODULE_INFO_NAME)) {
 			IStatus status = validateIdentifier(identifier, sourceLevel, complianceLevel);
 			if (!status.isOK()) {
 				return status;
@@ -229,7 +232,8 @@
 		// JSR-175 metadata strongly recommends "package-info.java" as the
 		// file in which to store package annotations and
 		// the package-level spec (replaces package.html)
-		if (!identifier.equals(PACKAGE_INFO)) {
+		if (!CharOperation.equals(identifier.toCharArray(), TypeConstants.PACKAGE_INFO_NAME)
+				&& !CharOperation.equals(identifier.toCharArray(), TypeConstants.MODULE_INFO_NAME)) {
 			IStatus status = validateIdentifier(identifier, sourceLevel, complianceLevel);
 			if (!status.isOK()) {
 				return status;
@@ -408,6 +412,7 @@
 	 * @see JavaCore#VERSION_1_6
 	 * @see JavaCore#VERSION_1_7
 	 * @see JavaCore#VERSION_1_8
+	 * @see JavaCore#VERSION_9
 	 */
 	public static IStatus validateJavaTypeName(String name, String sourceLevel, String complianceLevel) {
 		if (name == null) {
@@ -541,11 +546,8 @@
 		if (CharOperation.isWhitespace(name.charAt(0)) || CharOperation.isWhitespace(name.charAt(name.length() - 1))) {
 			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_package_nameWithBlanks, null);
 		}
-		int dot = 0;
-		while (dot != -1 && dot < length-1) {
-			if ((dot = name.indexOf(DOT, dot+1)) != -1 && dot < length-1 && name.charAt(dot+1) == DOT) {
-				return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_package_consecutiveDotsName, null);
-				}
+		if (DOT_DOT.matcher(name).find()) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_package_consecutiveDotsName, null);
 		}
 		IWorkspace workspace = ResourcesPlugin.getWorkspace();
 		StringTokenizer st = new StringTokenizer(name, "."); //$NON-NLS-1$
@@ -576,6 +578,73 @@
 	}
 
 	/**
+	 * Validate the given module name for the given source and compliance levels.
+	 * <p>
+	 * The syntax of a module name corresponds to ModuleName as
+	 * defined by ModuleDeclaration (JLS 7.6). For example, <code>"java.base"</code>.
+	 * <p>
+	 * Note that the given name must not be empty. Also each segment of the module
+	 * name (separated by ".") must be a valid Java identifier as per JLS 3.8.
+	 *
+	 * @param name name of a module
+	 * @param sourceLevel the source level
+	 * @param complianceLevel the compliance level
+	 * @return a status object with code <code>IStatus.OK</code> if
+	 *		the given name is valid as a module name, otherwise a status
+	 *		object indicating what is wrong with the name
+	 * @since 3.14
+	 */
+	public static IStatus validateModuleName(String name, String sourceLevel, String complianceLevel) {
+
+		if (name == null) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_module_nullName, null);
+		}
+		int length;
+		if ((length = name.length()) == 0) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_module_emptyName, null);
+		}
+
+		if (name.charAt(0) == DOT || name.charAt(length-1) == DOT) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_module_dotName, null);
+		}
+		if (CharOperation.isWhitespace(name.charAt(0)) || CharOperation.isWhitespace(name.charAt(name.length() - 1))) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_module_nameWithBlanks, null);
+		}
+		if (DOT_DOT.matcher(name).find()) {
+			return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.convention_module_consecutiveDotsName, null);
+		}
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		StringTokenizer st = new StringTokenizer(name, "."); //$NON-NLS-1$
+		boolean firstToken = true;
+		IStatus warningStatus = null;
+		while (st.hasMoreTokens()) {
+			String segment = st.nextToken();
+			segment = segment.trim(); // grammar allows spaces
+			char[] scannedID = scannedIdentifier(segment, sourceLevel, complianceLevel);
+			if (scannedID == null) {
+				return new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1, Messages.bind(Messages.convention_illegalIdentifier, segment), null);
+			}
+			if (firstToken && PREFIX_JAVA.matcher(segment).find()) {
+				warningStatus = new Status(IStatus.WARNING, JavaCore.PLUGIN_ID, -1, Messages.bind(Messages.convention_module_javaName), null);
+			}
+			IStatus status = workspace.validateName(new String(scannedID), IResource.FOLDER);
+			if (!status.isOK()) {
+				return status;
+			}
+			if (firstToken && scannedID.length > 0 && ScannerHelper.isUpperCase(scannedID[0])) {
+				if (warningStatus == null) {
+					warningStatus = new Status(IStatus.WARNING, JavaCore.PLUGIN_ID, -1, Messages.convention_module_uppercaseName, null);
+				}
+			}
+			firstToken = false;
+		}
+		if (warningStatus != null) {
+			return warningStatus;
+		}
+		return JavaModelStatus.VERIFIED_OK;
+	}
+
+	/**
 	 * Validate a given classpath and output location for a project, using the following rules:
 	 * <ul>
 	 *   <li> Classpath entries cannot collide with each other; that is, all entry paths must be unique.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaCore.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaCore.java
index d86bd60..529a3ca 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaCore.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaCore.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -98,21 +99,34 @@
  *									COMPILER_INHERIT_NULL_ANNOTATIONS
  *									COMPILER_PB_NONNULL_PARAMETER_ANNOTATION_DROPPED
  *									COMPILER_PB_SYNTACTIC_NULL_ANALYSIS_FOR_FIELDS
+ *									COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE
+ *									COMPILER_PB_UNLIKELY_EQUALS_ARGUMENT_TYPE
  *     Jesper S Moller   - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
  *                       - added the following constants:
  *									COMPILER_CODEGEN_METHOD_PARAMETERS_ATTR
  *     Harry Terkelsen (het@google.com) - Bug 449262 - Allow the use of third-party Java formatters
  *     Gábor Kövesdán - Contribution for Bug 350000 - [content assist] Include non-prefix matches in auto-complete suggestions
+ *     Karsten Thoms - Bug 532505 - Reduce memory footprint of ClasspathAccessRule
  *     
  *******************************************************************************/
 
 package org.aspectj.org.eclipse.jdt.core;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.zip.ZipFile;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -147,12 +161,17 @@
 import org.aspectj.org.eclipse.jdt.core.search.SearchEngine;
 import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
 import org.aspectj.org.eclipse.jdt.core.search.TypeNameRequestor;
+import org.aspectj.org.eclipse.jdt.core.util.IAttributeNamesConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AutomaticModuleNaming;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.core.BatchOperation;
 import org.aspectj.org.eclipse.jdt.internal.core.BufferManager;
-import org.aspectj.org.eclipse.jdt.internal.core.ClasspathAccessRule;
 import org.aspectj.org.eclipse.jdt.internal.core.ClasspathAttribute;
 import org.aspectj.org.eclipse.jdt.internal.core.ClasspathEntry;
 import org.aspectj.org.eclipse.jdt.internal.core.ClasspathValidation;
@@ -163,15 +182,18 @@
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModel;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
+import org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.Region;
 import org.aspectj.org.eclipse.jdt.internal.core.SetContainerOperation;
 import org.aspectj.org.eclipse.jdt.internal.core.SetVariablesOperation;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.JavaBuilder;
+import org.aspectj.org.eclipse.jdt.internal.core.builder.ModuleInfoBuilder;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.State;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.Indexer;
 import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.IndexManager;
 import org.aspectj.org.eclipse.jdt.internal.core.util.MementoTokenizer;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
+import org.aspectj.org.eclipse.jdt.internal.core.util.ModuleUtil;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 import org.osgi.framework.BundleContext;
 
@@ -238,6 +260,11 @@
 	 */
 	public static final String USER_LIBRARY_CONTAINER_ID= "org.aspectj.org.eclipse.jdt.USER_LIBRARY"; //$NON-NLS-1$
 
+	/**
+	 * @since 3.14
+	 */
+	public static final String MODULE_PATH_CONTAINER_ID = "org.aspectj.org.eclipse.jdt.MODULE_PATH"; //$NON-NLS-1$
+
 	// Begin configurable option IDs {
 
 	/**
@@ -311,7 +338,7 @@
 	 * <p><code>"cldc1.1"</code> requires the source version to be <code>"1.3"</code> and the compliance version to be <code>"1.4"</code> or lower.</p>
 	 * <dl>
 	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.codegen.targetPlatform"</code></dd>
-	 * <dt>Possible values:</dt><dd><code>{ "1.1", "cldc1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" }</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "1.1", "cldc1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "9", "10" }</code></dd>
 	 * <dt>Default:</dt><dd><code>"1.2"</code></dd>
 	 * </dl>
 	 * @category CompilerOptionID
@@ -404,6 +431,19 @@
 	 */
 	public static final String COMPILER_PB_DEPRECATION = PLUGIN_ID + ".compiler.problem.deprecation"; //$NON-NLS-1$
 	/**
+	 * Compiler option ID: Reporting Terminal Deprecation.
+	 * <p>When enabled, the compiler will signal use of terminally deprecated API either as an
+	 *    error or a warning.</p>
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.terminalDeprecation"</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "error", "warning", "info", "ignore" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"warning"</code></dd>
+	 * </dl>
+	 * @since 3.14
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_TERMINAL_DEPRECATION = PLUGIN_ID + ".compiler.problem.terminalDeprecation"; //$NON-NLS-1$
+	/**
 	 * Compiler option ID: Reporting Deprecation Inside Deprecated Code.
 	 * <p>When enabled, the compiler will signal use of deprecated API inside deprecated code.</p>
 	 * <p>The severity of the problem is controlled with option {@link #COMPILER_PB_DEPRECATION}.</p>
@@ -1514,6 +1554,105 @@
 	 * @category CompilerOptionID
 	 */
 	public static final String COMPILER_PB_EXPLICITLY_CLOSED_AUTOCLOSEABLE = PLUGIN_ID + ".compiler.problem.explicitlyClosedAutoCloseable"; //$NON-NLS-1$
+
+	/**
+	 * Compiler option ID: Reporting a method invocation providing an argument of an unlikely type.
+	 * <p>When enabled, the compiler will issue an error or warning when certain well-known Collection methods
+	 *    that take an 'Object', like e.g. {@link Map#get(Object)}, are used with an argument type
+	 *    that seems to be not related to the corresponding type argument of the Collection.</p>
+	 * <p>By default, this analysis will apply some heuristics to determine whether or not two
+	 *    types may or may not be related, which can be changed via option
+	 *    {@link #COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE_STRICT}.</p>
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType"</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "error", "warning", "info", "ignore" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"warning"</code></dd>
+	 * </dl>
+	 * @since 3.13
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE = PLUGIN_ID + ".compiler.problem.unlikelyCollectionMethodArgumentType"; //$NON-NLS-1$
+
+	/**
+	 * Compiler option ID: Perform strict analysis against the expected type of collection methods.
+	 * <p>This is a sub-option of {@link #COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE},
+	 *    which will replace the heuristics with strict compatibility checks,
+	 *    i.e., each argument that is not strictly compatible with the expected type will trigger an error or warning.</p>
+	 * <p>This option has no effect if {@link #COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE} is set to <code>"ignore"</code>.</p>
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict"</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "enabled", "disabled" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"disabled"</code></dd>
+	 * </dl>
+	 * @since 3.13
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_UNLIKELY_COLLECTION_METHOD_ARGUMENT_TYPE_STRICT = PLUGIN_ID + ".compiler.problem.unlikelyCollectionMethodArgumentTypeStrict"; //$NON-NLS-1$
+
+	/**
+	 * Compiler option ID: Reporting a method invocation providing an argument of an unlikely type to method 'equals'.
+	 * <p>
+	 * When enabled, the compiler will issue an error or warning when {@link java.lang.Object#equals(Object)} is used with an argument type 
+	 * that seems to be not related to the receiver's type, or correspondingly when the arguments of {@link java.util.Objects#equals(Object, Object)}
+	 * have types that seem to be not related to each other.
+	 * </p>
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType"</code></dd>
+	 * <dt>Possible values:</dt>
+	 * <dd><code>{ "error", "warning", "info", "ignore" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"info"</code></dd>
+	 * </dl>
+	 * 
+	 * @since 3.13
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_UNLIKELY_EQUALS_ARGUMENT_TYPE = PLUGIN_ID + ".compiler.problem.unlikelyEqualsArgumentType"; //$NON-NLS-1$
+
+	/**
+	 * Compiler option ID: Reporting when public API uses a non-API type.
+	 * <p>
+	 * This option is relevant only when compiling code in a named module (at compliance 9 or greater).
+	 * <p>
+	 * When enabled, the compiler will issue an error or warning when public API mentions a type that is not
+	 * accessible to clients. Here, public API refers to signatures of public fields and methods declared
+	 * by a public type in an exported package.
+	 * In these positions types are complained against that are either not public or not in an exported package.
+	 * Export qualification is not taken into account.
+	 * If a type in one of these positions is declared in another module that is required by the current module,
+	 * but without the {@code transitive} modifier, this is reported as a problem, too.
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.APILeak"</code></dd>
+	 * <dt>Possible values:</dt>
+	 * <dd><code>{ "error", "warning", "info", "ignore" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"warning"</code></dd>
+	 * </dl>
+	 * 
+	 * @since 3.14
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_API_LEAKS = PLUGIN_ID + ".compiler.problem.APILeak"; //$NON-NLS-1$
+	
+	/**
+	 * Compiler option ID: Reporting when a module requires an auto module with an unstable name.
+	 * <p>
+	 * The name of an auto module name is considered unstable when it is derived from a file name rather than
+	 * being declared in the module's MANIFEST.MF.
+	 * <p>
+	 * When enabled, the compiler will issue an error or warning when a module references an auto module
+	 * with an unstable name in its 'requires' clause.
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName"</code></dd>
+	 * <dt>Possible values:</dt>
+	 * <dd><code>{ "error", "warning", "info", "ignore" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"warning"</code></dd>
+	 * </dl>
+	 * 
+	 * @since 3.14
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_PB_UNSTABLE_AUTO_MODULE_NAME = PLUGIN_ID + ".compiler.problem.unstableAutoModuleName"; //$NON-NLS-1$
+
+	
 	/**
 	 * Compiler option ID: Annotation-based Null Analysis.
 	 * <p>This option controls whether the compiler will use null annotations for
@@ -1919,7 +2058,7 @@
 	 *    set to the same version as the source level.</p>
 	 * <dl>
 	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.source"</code></dd>
-	 * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" }</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "10" }</code></dd>
 	 * <dt>Default:</dt><dd><code>"1.3"</code></dd>
 	 * </dl>
 	 * @since 2.0
@@ -1937,7 +2076,7 @@
 	 *    should match the compliance setting.</p>
 	 * <dl>
 	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.compliance"</code></dd>
-	 * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" }</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "9", "10" }</code></dd>
 	 * <dt>Default:</dt><dd><code>"1.4"</code></dd>
 	 * </dl>
 	 * @since 2.0
@@ -1948,6 +2087,22 @@
 	 */
 	public static final String COMPILER_COMPLIANCE = PLUGIN_ID + ".compiler.compliance"; //$NON-NLS-1$
 	/**
+	 * Compiler option ID: Use system libraries from release.
+	 * <p>When enabled, the compiler will compile against the system libraries from release
+	 * of the specified compliance level</p>
+	 * <p>Setting this option sets the {@link #COMPILER_CODEGEN_TARGET_PLATFORM}) and {@link #COMPILER_SOURCE} to
+	 * the same level as the compiler compliance. This option is available to a project only when a supporting 
+	 * JDK is found in the project's build path</p>
+	 * <dl>
+	 * <dt>Option id:</dt><dd><code>"org.aspectj.org.eclipse.jdt.core.compiler.release"</code></dd>
+	 * <dt>Possible values:</dt><dd><code>{ "enabled", "disabled" }</code></dd>
+	 * <dt>Default:</dt><dd><code>"disabled"</code></dd>
+	 * </dl>
+	 * @since 3.14
+	 * @category CompilerOptionID
+	 */
+	public static final String COMPILER_RELEASE = PLUGIN_ID + ".compiler.release"; //$NON-NLS-1$
+	/**
 	 * Compiler option ID: Defining the Automatic Task Priorities.
 	 * <p>In parallel with the Automatic Task Tags, this list defines the priorities (high, normal or low)
 	 *    of the task markers issued by the compiler.
@@ -2838,10 +2993,34 @@
 	public static final String VERSION_1_8 = "1.8"; //$NON-NLS-1$
 	/**
 	 * Configurable option value: {@value}.
+	 * @since 3.14
+	 * @category OptionValue
+	 */
+	public static final String VERSION_9 = "9"; //$NON-NLS-1$
+	/**
+	 * Configurable option value: {@value}.
+	 * @since 3.14
+	 * @category OptionValue
+	 */
+	public static final String VERSION_10 = "10"; //$NON-NLS-1$
+	/**
+	 * Configurable option value: {@value}.
 	 * @since 3.4
 	 * @category OptionValue
 	 */
 	public static final String VERSION_CLDC_1_1 = "cldc1.1"; //$NON-NLS-1$
+
+	/**
+	 * Returns all {@link JavaCore}{@code #VERSION_*} levels.
+	 * 
+	 * @return all available versions
+	 * @since 3.14
+	 */
+	public static List<String> getAllVersions() {
+		return Arrays.asList(VERSION_CLDC_1_1, VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4, VERSION_1_5,
+				VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10);
+	}
+
 	/**
 	 * Configurable option value: {@value}.
 	 * @since 2.0
@@ -3627,7 +3806,7 @@
 	    JavaModelManager manager = JavaModelManager.getJavaModelManager();
 
 		// Returns the stored deprecation message
-		String message = (String) manager.deprecatedVariables.get(variableName);
+		String message = manager.deprecatedVariables.get(variableName);
 		if (message != null) {
 		    return message;
 		}
@@ -4300,6 +4479,7 @@
 			if (JavaBuilder.DEBUG)
 				System.out.println("Build state version number has changed"); //$NON-NLS-1$
 			IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+				@Override
 				public void run(IProgressMonitor progressMonitor2) throws CoreException {
 					for (int i = 0, length = projects.length; i < length; i++) {
 						IJavaProject project = projects[i];
@@ -4340,6 +4520,7 @@
 				IJavaSearchConstants.CLASS,
 				scope,
 				new TypeNameRequestor() {
+					@Override
 					public void acceptType(
 						int modifiers,
 						char[] packageName,
@@ -4417,8 +4598,8 @@
 			if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
 
 			// cycle through enclosing types in case marker is associated with a classfile (15568)
-			if (markerElement instanceof IClassFile){
-				IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
+			if (markerElement instanceof IOrdinaryClassFile){
+				IType enclosingType = ((IOrdinaryClassFile)markerElement).getType().getDeclaringType();
 				if (enclosingType != null){
 					markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
 					continue;
@@ -4460,8 +4641,8 @@
 			if (element.equals(markerElement)) return true; // external elements may still be equal with different handleIDs.
 
 			// cycle through enclosing types in case marker is associated with a classfile (15568)
-			if (markerElement instanceof IClassFile){
-				IType enclosingType = ((IClassFile)markerElement).getType().getDeclaringType();
+			if (markerElement instanceof IOrdinaryClassFile){
+				IType enclosingType = ((IOrdinaryClassFile)markerElement).getType().getDeclaringType();
 				if (enclosingType != null){
 					markerElement = enclosingType.getClassFile(); // retry with immediate enclosing classfile
 					continue;
@@ -4490,7 +4671,7 @@
 	 * @see IClasspathEntry#getExclusionPatterns()
 	 */
 	public static IAccessRule newAccessRule(IPath filePattern, int kind) {
-		return new ClasspathAccessRule(filePattern, kind);
+		return JavaModelManager.getJavaModelManager().getAccessRule(filePattern, kind);
 	}
 
 	/**
@@ -4635,10 +4816,10 @@
 		} else if (containerPath.segmentCount() < 1) {
 			throw new ClasspathEntry.AssertionFailedException("Illegal classpath container path: \'" + containerPath.makeRelative().toString() + "\', must have at least one segment (containerID+hints)"); //$NON-NLS-1$//$NON-NLS-2$
 		}
-		if (accessRules == null) {
+		if (accessRules == null || accessRules.length == 0) {
 			accessRules = ClasspathEntry.NO_ACCESS_RULES;
 		}
-		if (extraAttributes == null) {
+		if (extraAttributes == null || extraAttributes.length == 0) {
 			extraAttributes = ClasspathEntry.NO_EXTRA_ATTRIBUTES;
 		}
 		return new ClasspathEntry(
@@ -4834,10 +5015,10 @@
 			boolean isExported) {
 
 		if (path == null) throw new ClasspathEntry.AssertionFailedException("Library path cannot be null"); //$NON-NLS-1$
-		if (accessRules == null) {
+		if (accessRules == null || accessRules.length==0) {
 			accessRules = ClasspathEntry.NO_ACCESS_RULES;
 		}
-		if (extraAttributes == null) {
+		if (extraAttributes == null || extraAttributes.length==0) {
 			extraAttributes = ClasspathEntry.NO_EXTRA_ATTRIBUTES;
 		}
 		boolean hasDotDot = ClasspathEntry.hasDotDot(path);
@@ -4965,10 +5146,10 @@
 			boolean isExported) {
 
 		if (!path.isAbsolute()) throw new ClasspathEntry.AssertionFailedException("Path for IClasspathEntry must be absolute"); //$NON-NLS-1$
-		if (accessRules == null) {
+		if (accessRules == null || accessRules.length == 0) {
 			accessRules = ClasspathEntry.NO_ACCESS_RULES;
 		}
-		if (extraAttributes == null) {
+		if (extraAttributes == null || extraAttributes.length == 0) {
 			extraAttributes = ClasspathEntry.NO_EXTRA_ATTRIBUTES;
 		}
 		return new ClasspathEntry(
@@ -5329,10 +5510,10 @@
 		if (variablePath.segmentCount() < 1) {
 			throw new ClasspathEntry.AssertionFailedException("Illegal classpath variable path: \'" + variablePath.makeRelative().toString() + "\', must have at least one segment"); //$NON-NLS-1$//$NON-NLS-2$
 		}
-		if (accessRules == null) {
+		if (accessRules == null || accessRules.length == 0) {
 			accessRules = ClasspathEntry.NO_ACCESS_RULES;
 		}
-		if (extraAttributes == null) {
+		if (extraAttributes == null || extraAttributes.length == 0) {
 			extraAttributes = ClasspathEntry.NO_EXTRA_ATTRIBUTES;
 		}
 
@@ -5461,7 +5642,8 @@
 	}
 
 	/**
-	 * Deletes and rebuilds the java index.
+	 * Deletes the index, then rebuilds any portions of the index that are
+	 * currently needed by the workspace.
 	 * 
 	 * @param monitor a progress monitor, or <code>null</code> if progress
 	 *    reporting and cancellation are not desired
@@ -5469,15 +5651,14 @@
 	 * @since 3.13
 	 */
 	public static void rebuildIndex(IProgressMonitor monitor) throws CoreException {
-		SubMonitor subMonitor = SubMonitor.convert(monitor, 10);
+		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
 		IndexManager manager = JavaModelManager.getIndexManager();
 		manager.deleteIndexFiles(subMonitor.split(1));
 		manager.reset();
-		Indexer.getInstance().rebuildIndex(subMonitor.split(7));
-		updateLegacyIndex(subMonitor.split(2));
+		Indexer.getInstance().rebuildIndex(subMonitor.split(95));
+		updateLegacyIndex(subMonitor.split(4));
 	}
 
-
 	/**
 	 * Runs the given action as an atomic Java model operation.
 	 * <p>
@@ -5790,6 +5971,24 @@
 				options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, JavaCore.ERROR);
 				options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE, JavaCore.ENABLED);
 				break;
+			case ClassFileConstants.MAJOR_VERSION_9:
+				options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_9);
+				options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_9);
+				options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_9);
+				options.put(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, JavaCore.ERROR);
+				options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, JavaCore.ERROR);
+				options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE, JavaCore.ENABLED);
+				options.put(JavaCore.COMPILER_RELEASE, JavaCore.ENABLED);
+				break;
+			case ClassFileConstants.MAJOR_VERSION_10:
+				options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_10);
+				options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_10);
+				options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_10);
+				options.put(JavaCore.COMPILER_PB_ASSERT_IDENTIFIER, JavaCore.ERROR);
+				options.put(JavaCore.COMPILER_PB_ENUM_IDENTIFIER, JavaCore.ERROR);
+				options.put(JavaCore.COMPILER_CODEGEN_INLINE_JSR_BYTECODE, JavaCore.ENABLED);
+				options.put(JavaCore.COMPILER_RELEASE, JavaCore.ENABLED);
+				break;
 		}
 	}
 
@@ -5832,6 +6031,163 @@
 	public static int compareJavaVersions(String first, String second) {
 		return Long.compare(CompilerOptions.versionToJdkLevel(first), CompilerOptions.versionToJdkLevel(second));
 	}
+	/**
+	 * Returns an array of module names referenced by this project indirectly. 
+	 * This is a helper method that can be used to construct a Java module 
+	 * description of an existing project. The referenced modules can either be 
+	 * system modules or user modules found in project build path in the form of 
+	 * libraries.
+	 * The prerequisites for this to be effective are:
+	 * <ul>
+	 * <li>the project is already in compliance level 9 or above.
+	 * <li>the system library on the build path of the project is a modularized Java Runtime.
+	 * </ul>
+	 *
+	 * @param project
+	 *            the project whose referenced modules to be computed
+	 * @return an array of String containing module names
+	 * @throws CoreException
+	 * @since 3.14
+	 */
+	public static String[] getReferencedModules(IJavaProject project) throws CoreException {
+		return ModuleUtil.getReferencedModules(project);
+	}
+
+	/**
+	 * Returns the <code>IModuleDescription</code> that the given java element contains 
+	 * when regarded as an automatic module. The element must be an <code>IPackageFragmentRoot</code>
+	 * or an <code>IJavaProject</code>.
+	 * 
+	 * <p>The returned module descriptor has a name (<code>getElementName()</code>) following
+	 * the specification of <code>java.lang.module.ModuleFinder.of(Path...)</code>, but it
+	 * contains no other useful information.</p>
+	 * 
+	 * @return the <code>IModuleDescription</code> representing this java element as an automatic module,
+	 * 		never <code>null</code>.
+	 * @throws JavaModelException
+	 * @throws IllegalArgumentException if the provided element is neither <code>IPackageFragmentRoot</code>
+	 * 	nor <code>IJavaProject</code>
+	 * @since 3.14
+	 */
+	public static IModuleDescription getAutomaticModuleDescription(IJavaElement element) throws JavaModelException, IllegalArgumentException {
+		switch (element.getElementType()) {
+			case IJavaElement.JAVA_PROJECT:
+				return ((JavaProject) element).getAutomaticModuleDescription();
+			case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+				return ((PackageFragmentRoot) element).getAutomaticModuleDescription();
+			default:
+				throw new IllegalArgumentException("Illegal kind of java element: "+element.getElementType()); //$NON-NLS-1$
+		}
+	}
+
+	/**
+	 * Filter the given set of system roots by the rules for root modules from JEP 261.
+	 * @param allSystemRoots all physically available system modules, represented by their package fragment roots
+	 * @return the list of names of default root modules
+	 * @since 3.14
+	 */
+	public static List<String> defaultRootModules(Iterable<IPackageFragmentRoot> allSystemRoots) {
+		return JavaProject.defaultRootModules(allSystemRoots);
+	}
+
+	/**
+	 * Compile the given module description in the context of its enclosing Java project
+	 * and add class file attributes using the given map of attribute values.
+	 * <p>In this map, the following keys are supported</p>
+	 * <dl>
+	 * <dt>{@link IAttributeNamesConstants#MODULE_MAIN_CLASS}</dt>
+	 * <dd>The associated value will be used for the <code>ModuleMainClass</code> attribute.</dd>
+	 * <dt>{@link IAttributeNamesConstants#MODULE_PACKAGES}</dt>
+	 * <dd>If the associated value is an empty string, then the compiler will generate a
+	 * <code>ModulePackages</code> attribute with a list of packages that is computed from
+	 * <ul>
+	 * <li>all <code>exports</code> directives
+	 * <li>all <code>opens</code> directives
+	 * <li>the implementation classes of all <code>provides</code> directives.
+	 * </ul>
+	 * If the associated value is not empty, it must be a comma-separated list of package names,
+	 * which will be added to the computed list.
+	 * </dl>
+	 * <p>No other keys are supported in this version, but more keys may be added in the future.</p>
+	 *
+	 * @param module handle for the <code>module-info.java</code> file to be compiled.
+	 * @param classFileAttributes map of attribute names and values to be used during class file generation
+	 * @return the compiled byte code
+	 * 
+	 * @throws JavaModelException
+	 * @throws IllegalArgumentException if the map of classFileAttributes contains an unsupported key.
+	 * @since 3.14
+	 */
+	public static byte[] compileWithAttributes(IModuleDescription module, Map<String,String> classFileAttributes)
+			throws JavaModelException, IllegalArgumentException
+	{
+		return new ModuleInfoBuilder().compileWithAttributes(module, classFileAttributes);
+	}
+
+	/**
+	 * Returns the module name computed for a jar. If the file is a jar and contains a module-info.class, the name
+	 * specified in it is used, otherwise, the algorithm for automatic module naming is used, which first looks for a
+	 * module name in the Manifest.MF and as last resort computes it from the file name.
+	 * 
+	 * @param file the jar to examine
+	 * @return null if file is not a file, otherwise the module name.
+	 * @since 3.14
+	 */
+	public static String getModuleNameFromJar(File file) {
+		if (!file.isFile()) {
+			return null;
+		}
+
+		char[] moduleName = null;
+		try (ZipFile zipFile = new ZipFile(file)) {
+			IModule module = null;
+			ClassFileReader reader = ClassFileReader.read(zipFile, IModule.MODULE_INFO_CLASS);
+			if (reader != null) {
+				module = reader.getModuleDeclaration();
+				if (module != null) {
+					moduleName = module.name();
+				}
+			}
+		} catch (ClassFormatException | IOException ex) {
+			Util.log(ex);
+		}
+		if (moduleName == null) {
+			moduleName = AutomaticModuleNaming.determineAutomaticModuleName(file.getAbsolutePath());
+		}
+		return new String(moduleName);
+	}
+	
+	/**
+	 * Returns the names of the modules required by the module-info.class in the jar. If the file is not jar or a jar
+	 * that has no module-info.class is present, the empty set is returned.
+	 * 
+	 * @param file the jar to examine
+	 * @return set of module names.
+	 * @since 3.14
+	 */
+	public static Set<String> getRequiredModulesFromJar(File file) {
+		if (!file.isFile()) {
+			return Collections.emptySet();
+		}
+		try (ZipFile zipFile = new ZipFile(file)) {
+			IModule module = null;
+			ClassFileReader reader = ClassFileReader.read(zipFile, IModule.MODULE_INFO_CLASS);
+			if (reader != null) {
+				module = reader.getModuleDeclaration();
+				if (module != null) {
+					IModuleReference[] moduleRefs = module.requires();
+					if (moduleRefs != null) {
+						return Stream.of(moduleRefs).map(m -> new String(m.name()))
+								.collect(Collectors.toCollection(LinkedHashSet::new));
+					}
+				}
+			}
+		} catch (ClassFormatException | IOException ex) {
+			Util.log(ex);
+		}
+		return Collections.emptySet();
+	}
+
 
 	/* (non-Javadoc)
 	 * Shutdown the JavaCore plug-in.
@@ -5840,6 +6196,7 @@
 	 * </p>
 	 * @see org.eclipse.core.runtime.Plugin#stop(BundleContext)
 	 */
+	@Override
 	public void stop(BundleContext context) throws Exception {
 		try {
 			JavaModelManager.unregisterDebugOptionsListener();
@@ -5859,6 +6216,7 @@
 	 * @throws Exception
 	 * @see org.eclipse.core.runtime.Plugin#start(BundleContext)
 	 */
+	@Override
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		JavaModelManager.registerDebugOptionsListener(context);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaModelException.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaModelException.java
index 4b4110f..49f9483 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaModelException.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/JavaModelException.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -71,6 +71,15 @@
 public JavaModelException(IJavaModelStatus status) {
 	super(status);
 }
+
+/**
+ * Creates a Java model exception for the given status object.
+ *
+ * @since 3.14
+ */
+public JavaModelException(IStatus status) {
+	super(status);
+}
 /**
  * Returns the underlying <code>Throwable</code> that caused the failure.
  *
@@ -124,6 +133,7 @@
  * @param output the print stream
  * @since 3.0
  */
+@Override
 public void printStackTrace(PrintStream output) {
 	synchronized(output) {
 		super.printStackTrace(output);
@@ -141,6 +151,7 @@
  * @param output the print writer
  * @since 3.0
  */
+@Override
 public void printStackTrace(PrintWriter output) {
 	synchronized(output) {
 		super.printStackTrace(output);
@@ -155,6 +166,7 @@
  * Returns a printable representation of this exception suitable for debugging
  * purposes only.
  */
+@Override
 public String toString() {
 	StringBuffer buffer= new StringBuffer();
 	buffer.append("Java Model Exception: "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/NamingConventions.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/NamingConventions.java
index 5cc75bf..7fa561b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/NamingConventions.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/NamingConventions.java
@@ -82,6 +82,7 @@
 		// for acceptNameWithoutPrefixAndSuffix
 		private char[][] otherResults = new char[SIZE][];
 		private int otherResultsCount = 0;
+		@Override
 		public void acceptNameWithoutPrefixAndSuffix(char[] name, int reusedCharacters) {
 			int length = this.otherResults.length;
 			if(length == this.otherResultsCount) {
@@ -95,6 +96,7 @@
 			this.otherResults[this.otherResultsCount++] = name;
 		}
 
+		@Override
 		public void acceptNameWithPrefix(char[] name, boolean isFirstPrefix, int reusedCharacters) {
 			if(isFirstPrefix) {
 				int length = this.firstPrefixResults.length;
@@ -121,6 +123,7 @@
 			}
 		}
 
+		@Override
 		public void acceptNameWithPrefixAndSuffix(char[] name, boolean isFirstPrefix, boolean isFirstSuffix, int reusedCharacters) {
 			if(isFirstPrefix && isFirstSuffix) {
 				int length = this.firstPrefixAndFirstSuffixResults.length;
@@ -169,6 +172,7 @@
 			}
 		}
 
+		@Override
 		public void acceptNameWithSuffix(char[] name, boolean isFirstSuffix, int reusedCharacters) {
 			if(isFirstSuffix) {
 				int length = this.firstSuffixResults.length;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Signature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Signature.java
index b925af2..f50b680 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Signature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/Signature.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,10 +39,14 @@
  * with J2SE 1.4 or earlier, involved only <i>simple</i> signatures.
  * </p>
  * <p>
- * Note that the "Q", "!" and "|" formats are specific to Eclipse; the remainder
+ * Note that the "Q", "!", "|" and "&" formats are specific to Eclipse; the remainder
  * are specified in the JVM spec.
  * </p>
  * <p>
+ * Due to historical reasons Eclipse uses "|" format for Intersection and "&" for Union
+ * which is opposite to their usage in source code.
+ * </p>
+ * <p>
  * The syntax for a type signature is:
  * <pre>
  * TypeSignature ::=
@@ -271,6 +275,14 @@
 	public static final char C_INTERSECTION = '|';
 
 	/**
+	 * Character constant indicating a union type in a
+	 * signature. Value is <code>'&'</code>.
+	 *
+	 * @since 3.14
+	 */
+	public static final char C_UNION = '&';
+
+	/**
 	 * Character constant indicating the primitive type long in a signature.
 	 * Value is <code>'J'</code>.
 	 */
@@ -380,6 +392,12 @@
 	 * @since 3.7.1
 	 */
 	public static final int INTERSECTION_TYPE_SIGNATURE = 7;
+	/**
+	 * Kind constant for the union type signature.
+	 * @see #getTypeSignatureKind(String)
+	 * @since 3.14
+	 */
+	public static final int UNION_TYPE_SIGNATURE = 8;
 
 	private static final char[] LONG = "long".toCharArray(); //$NON-NLS-1$
 
@@ -1102,6 +1120,26 @@
 	}
 	return String.valueOf(buffer);
 }
+/**
+ * Creates a new union type signature from the given type signatures.
+ * 
+ * <p>The encoded type signature is dot-based.</p>
+ *
+ * @param typeSignatures the given type signatures
+ * @return the encoded type signature
+ * @since 3.7.1
+ */
+private static String createUnionTypeSignature(char[][] typeSignatures) {
+	StringBuffer buffer = new StringBuffer();
+	buffer.append(Signature.C_UNION);
+	for (int i = 0, max = typeSignatures.length; i < max; i++) {
+		if (i > 0) {
+			buffer.append(Signature.C_COLON);
+		}
+		buffer.append(typeSignatures[i]);
+	}
+	return String.valueOf(buffer);
+}
 
 /**
  * Creates a new intersection type signature from the given type signatures.
@@ -1121,6 +1159,23 @@
 	return createIntersectionTypeSignature(signatures);
 }
 /**
+ * Creates a new union type signature from the given type signatures.
+ * 
+ * <p>The encoded type signature is dot-based.</p>
+ *
+ * @param typeSignatures the given type signatures
+ * @return the encoded type signature
+ * @since 3.14
+ */
+public static String createUnionTypeSignature(String[] typeSignatures) {
+	int typeSignaturesLenth = typeSignatures.length;
+	char[][] signatures = new char[typeSignaturesLenth][];
+	for (int i = 0; i < typeSignaturesLenth; i++) {
+		signatures[i] = typeSignatures[i].toCharArray();
+	}
+	return createUnionTypeSignature(signatures);
+}
+/**
  * Creates a method signature from the given parameter and return type
  * signatures. The encoded method signature is dot-based.
  *
@@ -1581,6 +1636,30 @@
 		i = e + 2; // add one to skip C_COLON
 	}
 }
+private static char[][] getUnionTypeBounds(char[] unionTypeSignature) throws IllegalArgumentException {
+	if (getTypeSignatureKind(unionTypeSignature) != UNION_TYPE_SIGNATURE) {
+		return CharOperation.NO_CHAR_CHAR;
+	}
+	ArrayList args = new ArrayList();
+	int i = 1; // skip the '|'
+	int length = unionTypeSignature.length;
+	for (;;) {
+		int e = Util.scanClassTypeSignature(unionTypeSignature, i);
+		if (e < 0) {
+			throw new IllegalArgumentException("Invalid format"); //$NON-NLS-1$
+		}
+		args.add(CharOperation.subarray(unionTypeSignature, i, e + 1));
+		if (e == length - 1) {
+			int size = args.size();
+			char[][] result = new char[size][];
+			args.toArray(result);
+			return result;
+		} else if (unionTypeSignature[e + 1] != C_COLON) {
+			throw new IllegalArgumentException("Invalid format"); //$NON-NLS-1$
+		}
+		i = e + 2; // add one to skip C_COLON
+	}
+}
 /**
  * Extracts the type bounds' signatures from the given intersection type signature.
  * Returns an empty array if the type signature is not an intersection type signature.
@@ -1596,6 +1675,20 @@
 	return CharOperation.toStrings(args);
 }
 /**
+ * Extracts the type bounds' signatures from the given union type signature.
+ * Returns an empty array if the type signature is not an union type signature.
+ *
+ * @param unionSignature the union type signature
+ * @return the signatures of the type bounds
+ * @exception IllegalArgumentException if the signature is syntactically incorrect
+ *
+ * @since 3.14
+ */
+public static String[] getUnionTypeBounds(String unionSignature) throws IllegalArgumentException {
+	char[][] args = getUnionTypeBounds(unionSignature.toCharArray());
+	return CharOperation.toStrings(args);
+}
+/**
  * Returns the number of parameter types in the given method signature.
  *
  * @param methodSignature the method signature
@@ -2512,6 +2605,8 @@
 			return CAPTURE_TYPE_SIGNATURE;
 		case C_INTERSECTION :
 			return INTERSECTION_TYPE_SIGNATURE;
+		case C_UNION :
+			return UNION_TYPE_SIGNATURE;
 		default :
 			throw new IllegalArgumentException();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/SourceRange.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/SourceRange.java
index 7df7f95..239f3f5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/SourceRange.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/SourceRange.java
@@ -47,9 +47,8 @@
 		this.offset = offset;
 		this.length = length;
 	}
-	/*
-	 * @see Object#equals(Object)
-	 */
+
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof ISourceRange))
 			return false;
@@ -59,23 +58,24 @@
 	/**
 	 * @see ISourceRange
 	 */
+	@Override
 	public int getLength() {
 		return this.length;
 	}
 	/**
 	 * @see ISourceRange
 	 */
+	@Override
 	public int getOffset() {
 		return this.offset;
 	}
 
-	/*
-	 * @see Object#hashCode()
-	 */
+	@Override
 	public int hashCode() {
 		return this.length ^ this.offset;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("[offset="); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ToolFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ToolFactory.java
index 9cff5e4..3dcaaaf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ToolFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/ToolFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -438,6 +438,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.core.compiler.IScanner
 	 * @see #createScanner(boolean, boolean, boolean, String, String)
 	 */
+	@SuppressWarnings("javadoc") // references deprecated TokenNameIdentifier
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean assertMode, boolean recordLineSeparator){
 		// use default workspace compliance
 		long complianceLevelValue = CompilerOptions.versionToJdkLevel(JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE));
@@ -492,6 +493,7 @@
 	 * @see #createScanner(boolean, boolean, boolean, String, String)
 	 * @since 3.0
 	 */
+	@SuppressWarnings("javadoc") // references deprecated TokenNameIdentifier
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel) {
 		// use default workspace compliance
 		long complianceLevelValue = CompilerOptions.versionToJdkLevel(JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE));
@@ -546,6 +548,7 @@
 	 *
 	 * @since 3.1
 	 */
+	@SuppressWarnings("javadoc") // references deprecated TokenNameIdentifier
 	public static IScanner createScanner(boolean tokenizeComments, boolean tokenizeWhiteSpace, boolean recordLineSeparator, String sourceLevel, String complianceLevel) {
 		PublicScanner scanner = null;
 		long sourceLevelValue = CompilerOptions.versionToJdkLevel(sourceLevel);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.java
index 7d8be17..c003cad 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/BuildContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -92,4 +92,10 @@
 	// default overridden by concrete implementation
 }
 
+/**
+ * @since 3.14
+ */
+public boolean isTestCode() {
+	return false; // default overridden by concrete implementation
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.java
index 904f17b..3ccb9a1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CategorizedProblem.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -95,6 +95,11 @@
 	public static final int CAT_NLS = 140;
 	/** Category for optional problems related to access restrictions */
 	public static final int CAT_RESTRICTION = 150;
+	/**
+	 * Category for fatal problems relating to modules
+	 * @since 3.14
+	 */
+	public static final int CAT_MODULE = 160;
 
 /**
  * Returns an integer identifying the category of this problem. Categories, like problem IDs are
@@ -157,6 +162,7 @@
  *
  * @since 3.12
  */
+@Override
 public boolean isInfo() {
 	return false;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.java
index f15868a..d4c795a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/CharOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,7 @@
 package org.aspectj.org.eclipse.jdt.core.compiler;
 
 import java.util.Arrays;
+import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
 
@@ -41,6 +42,18 @@
 	 */
 	public static final String[] NO_STRINGS = new String[0];
 
+	/**
+	 * Constant for all Prefix
+	 * @since 3.14
+	 */
+	public static final char[] ALL_PREFIX = new char[] {'*'};
+
+	/**
+	 * Constant for comma
+	 * @since 3.14
+	 */
+	public static final char[] COMMA_SEPARATOR = new char[] {','};
+
 /**
  * Answers a new array with appending the suffix character at the end of the array.
  * <br>
@@ -166,6 +179,39 @@
 }
 
 /**
+ * Answers a new array with prepending the prefix character at the start of the array.
+ * <br>
+ * <br>
+ * For example:<br>
+ * <ol>
+ * <li><pre>
+ *    prefix = 'c'
+ *    array = { 'a', 'b' }
+ *    => result = { 'c' , 'a', 'b' }
+ * </pre>
+ * </li>
+ * <li><pre>
+ *    prefix = 'c'
+ *    array = null
+ *    => result = { 'c' }
+ * </pre></li>
+ * </ol>
+ *
+ * @param array the array that is concatenated with the prefix character
+ * @param prefix the prefix character
+ * @return the new array
+ * @since 3.14
+ */
+public static final char[] prepend(char prefix, char[] array) {
+	if (array == null)
+		return new char[] { prefix };
+	int length = array.length;
+	System.arraycopy(array, 0, array = new char[length + 1], 1, length);
+	array[0] = prefix;
+	return array;
+}
+
+/**
  * Answers the concatenation of the two arrays. It answers null if the two arrays are null.
  * If the first array is null, then the second array is returned.
  * If the second array is null, then the first array is returned.
@@ -817,6 +863,22 @@
 }
 
 /**
+ * Converts the given list of strings to an array of equal size,
+ * containing the individual strings converted to char[] each.
+ * 
+ * @param stringList
+ * @return an array of char[], representing the elements in the input list, or {@code null} if the list was {@code null}.
+ * @since 3.14
+ */
+public static char[][] toCharArrays(List<String> stringList) {
+	if (stringList == null)
+		return null;
+	char[][] result = new char[stringList.size()][];
+	for (int i = 0; i < result.length; i++)
+		result[i] = stringList.get(i).toCharArray();
+	return result;
+}
+/**
  * Answers a new array adding the second array at the end of first array.
  * It answers null if the first and second are null.
  * If the first array is null, then a new array char[][] is created with second.
@@ -1165,6 +1227,77 @@
 }
 
 /**
+ * Answers the concatenation of the two arrays inserting the separator character between the two arrays. Differs from
+ * {@link CharOperation#contains(char, char[])} in case second array is a zero length array.
+ * It answers null if the two arrays are null.
+ * If the first array is null, then the second array is returned.
+ * If the second array is null, then the first array is returned.
+ * if the second array is zero length array, the separator is appended.
+ * <br>
+ * <br>
+ * For example:
+ * <ol>
+ * <li><pre>
+ *    first = null
+ *    second = { 'a' }
+ *    separator = '/'
+ *    => result = { ' a' }
+ * </pre>
+ * </li>
+ * <li><pre>
+ *    first = { ' a' }
+ *    second = null
+ *    separator = '/'
+ *    => result = { ' a' }
+ * </pre>
+ * </li>
+ * <li><pre>
+ *    first = { ' a' }
+ *    second = { ' b' }
+ *    separator = '/'
+ *    => result = { ' a' , '/', 'b' }
+ * </pre>
+ * </li>
+ * <li><pre>
+ *    first = { ' a' }
+ *    second = { '' }
+ *    separator = '.'
+ *    => result = { ' a' , '.', }
+ * </pre>
+ * </li>
+ * </ol>
+ *
+ * @param first the first array to concatenate
+ * @param second the second array to concatenate
+ * @param separator the character to insert
+ * @return the concatenation of the two arrays inserting the separator character
+ * between the two arrays , or null if the two arrays are null. If second array
+ * is of zero length, the separator is appended to the first array and returned.
+ * @since 3.14
+ */
+public static final char[] concatAll(
+	char[] first,
+	char[] second,
+	char separator) {
+	if (first == null)
+		return second;
+	if (second == null)
+		return first;
+
+	int length1 = first.length;
+	if (length1 == 0)
+		return second;
+	int length2 = second.length;
+
+	char[] result = new char[length1 + length2 + 1];
+	System.arraycopy(first, 0, result, 0, length1);
+	result[length1] = separator;
+	if (length2 > 0)
+		System.arraycopy(second, 0, result, length1 + 1, length2);
+	return result;
+}
+
+/**
  * Answers the concatenation of the three arrays inserting the sep1 character between the
  * first two arrays and sep2 between the last two.
  * It answers null if the three arrays are null.
@@ -1781,6 +1914,21 @@
 }
 
 /**
+ * Does the given array contain a char sequence that is equal to the give sequence?
+ * @param array
+ * @param sequence
+ * @return true if sequence is equal to an element in array
+ * @since 3.14
+ */
+public static boolean containsEqual(char[][] array, char[] sequence) {
+	for (int i = 0; i < array.length; i++) {
+		if (equals(array[i], sequence))
+			return true;
+	}
+	return false;
+}
+
+/**
  * Answers a deep copy of the toCopy array.
  *
  * @param toCopy the array to copy
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.java
index 0a018dc..a247f92 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IProblem.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -196,6 +197,8 @@
  *									IllegalParameterNullityRedefinition
  *									ContradictoryNullAnnotationsInferredFunctionType
  *									IllegalReturnNullityRedefinitionFreeTypeVariable
+ *									UnlikelyCollectionMethodArgumentType
+ *									UnlikelyEqualsArgumentType
  *      Jesper S Moller  - added the following constants
  *									TargetTypeNotAFunctionalInterface
  *									OuterLocalMustBeEffectivelyFinal
@@ -212,7 +215,18 @@
  *									RepeatableAnnotationIsDocumented
  *									RepeatableAnnotationIsInherited
  *									RepeatableAnnotationWithRepeatingContainerAnnotation
-*******************************************************************************/
+ *									VarLocalMultipleDeclarators
+ *									VarLocalCannotBeArray
+ *									VarLocalReferencesItself
+ *									VarLocalWithoutInitizalier
+ *									VarLocalInitializedToNull
+ *									VarLocalCannotBeArrayInitalizers
+ *									VarLocalCannotBeLambda 
+ *									VarLocalCannotBeMethodReference
+ *									VarIsReserved
+ *									VarIsReservedInFuture
+ *									VarIsNotAllowedHere
+******************************************************************************/
 package org.aspectj.org.eclipse.jdt.core.compiler;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
@@ -374,15 +388,22 @@
 	int Syntax = 0x40000000;
 	/** @since 3.0 */
 	int Javadoc = 0x80000000;
+	/** @since 3.14 */
+	int ModuleRelated = 0x00800000;
 
 	/**
 	 * Mask to use in order to filter out the category portion of the problem ID.
 	 */
-	int IgnoreCategoriesMask = 0xFFFFFF;
+	int IgnoreCategoriesMask = 0x7FFFFF;
 
-	/**
+	/*
 	 * Below are listed all available problem IDs. Note that this list could be augmented in the future,
 	 * as new features are added to the Java core implementation.
+	 *
+	 * Problem IDs must be kept unique even when their mask is stripped, since
+	 * the bare integer literal is used for message lookup in
+	 * /org.aspectj.org.eclipse.jdt.core/compiler/org.aspectj.org.eclipse.jdt/internal/compiler/problem/messages.properties.
+	 * Use this regex to find duplicates: (?s)(\+ \d+)\b.*\1\b
 	 */
 
 	/**
@@ -1500,6 +1521,8 @@
     int InterfaceSuperInvocationNotBelow18 = Internal + Syntax + 667;
     /** @since 3.13*/
     int InterfaceStaticMethodInvocationNotBelow18 = Internal + Syntax + 668;
+	/** @since 3.14 */
+	int FieldMustBeFinal = Internal + 669;
 
 
 	/**
@@ -1697,6 +1720,8 @@
 	/** @since 3.10 */
 	int RepeatedAnnotationWithContainerAnnotation = TypeRelated + 899;
 	
+	/** @since 3.14 */
+	int AutoManagedVariableResourceNotBelow9 = Syntax + Internal + 1351;
 	/**
 	 * External problems -- These are problems defined by other plugins
 	 */
@@ -1795,7 +1820,9 @@
 	int RedundantNullCheckOnField = Internal + 941;
 	/** @since 3.10 */
 	int FieldComparisonYieldsFalse = Internal + 942;
-	
+	/** @since 3.14 */
+	int RedundantNullDefaultAnnotationModule = Internal + 943;
+
 	/** @since 3.10 */
 	int ArrayReferencePotentialNullReference = Internal + 951;
 	/** @since 3.10 */
@@ -1895,12 +1922,142 @@
 	/** @since 3.13 */
 	int CannotInferInvocationType = TypeRelated + 1059;
 	
+	
 	/** @since 3.13 */
 	int TypeAnnotationAtQualifiedName = Internal + Syntax + 1060;
 
 	/** @since 3.13 */
 	int NullAnnotationAtQualifyingType = Internal + Syntax + 1061;
+	
+	/** @since 3.14*/
+	int IllegalModifierForInterfaceMethod9 = MethodRelated + 1071;
+	/** @since 3.14*/
+	int IllegalModifierCombinationForPrivateInterfaceMethod9 = MethodRelated + 1070;
+	/** @since 3.14 */
+	int UndefinedModule = ModuleRelated + 1300;
+	/** @since 3.14 */
+	int DuplicateRequires = ModuleRelated + 1301;
+	/** @since 3.14 */
+	int DuplicateExports = ModuleRelated + 1302;
+	/** @since 3.14 */
+	int DuplicateUses = ModuleRelated + 1303;
+	/** @since 3.14 */
+	int DuplicateServices = ModuleRelated + 1304;
+	/** @since 3.14 */
+	int CyclicModuleDependency = ModuleRelated + 1305;
+	/** @since 3.14 */
+	int AbstractServiceImplementation = TypeRelated + 1306;
+	/** @since 3.14 */
+	int ProviderMethodOrConstructorRequiredForServiceImpl = TypeRelated + 1307;
+	/** @since 3.14 */
+	int ServiceImplDefaultConstructorNotPublic = TypeRelated + 1308;
+	/** @since 3.14 */
+	int NestedServiceImpl = TypeRelated + 1309;
+	/** @since 3.14 */
+	int ServiceImplNotDefinedByModule = TypeRelated + 1310;
+	/** @since 3.14 */
+	int PackageDoesNotExistOrIsEmpty = ModuleRelated + 1311;
+	/** @since 3.14 */
+	int NonDenotableTypeArgumentForAnonymousDiamond = TypeRelated + 1312;
+	/** @since 3.14 */
+	int DuplicateOpens = ModuleRelated + 1313;
+	/** @since 3.14 */
+	int DuplicateModuleRef = ModuleRelated + 1314;
+	/** @since 3.14 */
+	int InvalidOpensStatement = ModuleRelated + 1315;
+	/** @since 3.14 */
+	int InvalidServiceIntfType = ModuleRelated + 1316;
+	/** @since 3.14 */
+	int InvalidServiceImplType = ModuleRelated + 1317;
+	/** @since 3.14 */
+	int IllegalModifierForModule = ModuleRelated + 1318;
 
+	/** @since 3.14 */
+	int DuplicateResource = Internal + 1251;
+
+	// terminally
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedType = TypeRelated + 1400;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedMethod = MethodRelated + 1401;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedConstructor = MethodRelated + 1402;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedField = FieldRelated + 1403;
+	/** @since 3.14 */
+	int OverridingTerminallyDeprecatedMethod = MethodRelated + 1404;
+	// with since
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionType = TypeRelated + 1405;
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionMethod = MethodRelated + 1406;
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionConstructor = MethodRelated + 1407;
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionField = FieldRelated + 1408;
+	/** @since 3.14 */
+	int OverridingDeprecatedSinceVersionMethod = MethodRelated + 1409;
+	// terminally with since
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionType = TypeRelated + 1410;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionMethod = MethodRelated + 1411;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionConstructor = MethodRelated + 1412;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionField = FieldRelated + 1413;
+	/** @since 3.14 */
+	int OverridingTerminallyDeprecatedSinceVersionMethod = MethodRelated + 1414;
+
+	// deprecation of package / module:
+	/** @since 3.14 */
+	int UsingDeprecatedPackage = ModuleRelated + 1425;
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionPackage = ModuleRelated + 1426;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedPackage = ModuleRelated + 1427;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionPackage = ModuleRelated + 1428;
+	/** @since 3.14 */
+	int UsingDeprecatedModule = ModuleRelated + 1429;
+	/** @since 3.14 */
+	int UsingDeprecatedSinceVersionModule = ModuleRelated + 1430;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedModule = ModuleRelated + 1431;
+	/** @since 3.14 */
+	int UsingTerminallyDeprecatedSinceVersionModule = ModuleRelated + 1432;
+	
+	/** @since 3.14 */
+	int NotAccessibleType = TypeRelated + 1450;
+	/** @since 3.14 */
+	int NotAccessibleField = FieldRelated + 1451;
+	/** @since 3.14 */
+	int NotAccessibleMethod = MethodRelated + 1452;
+	/** @since 3.14 */
+	int NotAccessibleConstructor = MethodRelated + 1453;
+	/** @since 3.14 */
+	int NotAccessiblePackage = ImportRelated + 1454;
+	/** @since 3.14 */
+	int ConflictingPackageFromModules = ModuleRelated + 1455;
+	/** @since 3.14 */
+	int ConflictingPackageFromOtherModules = ModuleRelated + 1456;
+	/** @since 3.14 */
+	int NonPublicTypeInAPI = ModuleRelated + 1457;
+	/** @since 3.14 */
+	int NotExportedTypeInAPI = ModuleRelated + 1458;
+	/** @since 3.14 */
+	int MissingRequiresTransitiveForTypeInAPI = ModuleRelated + 1459;
+	/** @since  3.14 */
+	int UnnamedPackageInNamedModule = ModuleRelated + 1460;
+	/** @since  3.14 */
+	int UnstableAutoModuleName = ModuleRelated + 1461;
+
+	/** @since 3.13 */
+	int RedundantNullDefaultAnnotationLocal = Internal + 1062;
+	
+	/** @since 3.13 */
+	int RedundantNullDefaultAnnotationField = Internal + 1063;
+	
 	/** @since 3.10 */
 	int GenericInferenceError = 1100; 	// FIXME: This is just a stop-gap measure, be more specific via https://bugs.eclipse.org/404675
 	
@@ -1909,4 +2066,36 @@
 	int LambdaShapeComputationError = 1101;
 	/** @since 3.13 */
 	int ProblemNotAnalysed = 1102;
+	
+	/** @since 3.13 */
+	int UnlikelyCollectionMethodArgumentType = 1200;
+	/** @since 3.13 */
+	int UnlikelyEqualsArgumentType = 1201;
+
+	/* Local-Variable Type Inference */
+	/** @since 3.14 */
+	int VarLocalMultipleDeclarators = Syntax + 1500; // ''var'' is not allowed in a compound declaration
+	/** @since 3.14 */
+	int VarLocalCannotBeArray = Syntax + 1501; // ''var'' is not allowed as an element type of an array
+	/** @since 3.14 */
+	int VarLocalReferencesItself = Syntax + 1502; // Declaration using ''var'' may not contin references to itself
+	/** @since 3.14 */
+	int VarLocalWithoutInitizalier = Syntax + 1503; // Cannot use ''var'' on variable without initializer
+	/** @since 3.14 */
+	int VarLocalInitializedToNull = TypeRelated + 1504; // Variable initialized to ''null'' needs an explicit target-type
+	/** @since 3.14 */
+	int VarLocalInitializedToVoid = TypeRelated + 1505; // Variable initializer is ''void'' -- cannot infer variable type 
+	/** @since 3.14 */
+	int VarLocalCannotBeArrayInitalizers = TypeRelated + 1506; // Array initializer needs an explicit target-type
+	/** @since 3.14 */
+	int VarLocalCannotBeLambda = TypeRelated + 1507; // Lambda expression needs an explicit target-type 
+	/** @since 3.14 */
+	int VarLocalCannotBeMethodReference = TypeRelated + 1508; // Method reference needs an explicit target-type
+	/** @since 3.14 */
+	int VarIsReserved = Syntax + 1509; // ''var'' is not a valid type name
+	/** @since 3.14 */
+	int VarIsReservedInFuture = Syntax + 1510; // ''var'' should not be used as an type name, since it is a reserved word from source level 10 on
+	/** @since 3.14 */
+	int VarIsNotAllowedHere = Syntax + 1511; // ''var'' is not allowed here
+	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.java
index 4c9041d..28e0b50 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/IScanner.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,14 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
 
  /**
+  * <p>
+  * <strong>Caveat:</strong> With the introduction of "restricted keywords" in Java 9
+  * it is impossible to classify a token without the help of a parser.
+  * For that reason, this interface is not suitable for scanning a modular compilation unit
+  * ("module-info.java").
+  * It is the client's responsibility to pass only source from ordinary compilation units.
+  * For lack of a file name the scanner cannot check this.
+  * </p>
   * Definition of a Java scanner, as returned by the <code>ToolFactory</code>.
   * The scanner is responsible for tokenizing a given source, providing information about
   * the nature of the token read, its positions and source equivalent.
@@ -22,7 +30,7 @@
   * ITerminalSymbols#TokenNameEOF</code>.
   * </p><p>
   * When encountering lexical errors, an <code>InvalidInputException</code> is thrown.
- * </p>
+  * </p>
   *
   * @see org.aspectj.org.eclipse.jdt.core.ToolFactory
   * @see ITerminalSymbols
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
index 52070e9..f1548b3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ITerminalSymbols.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,15 @@
 	int TokenNameCOMMENT_BLOCK = 1002;
 	int TokenNameCOMMENT_JAVADOC = 1003;
 
+	/**
+	 * @deprecated With the introduction of "restricted keywords" in Java 9, classification of tokens 
+	 * 	 by a scanner is inherently unreliable. Any token classified as an identifier could still
+	 *   be a "restricted keyword". Future versions of Java will introduce more words that have
+	 *   special syntactical meaning in specific contexts.
+	 *   For reliably detecting an identifier the only real solution is to use a parser instead 
+	 *   (see also the caveat at the top of the	interface documentation of {@link IScanner}).
+	 */
+	@Deprecated
 	int TokenNameIdentifier = 5;
 	int TokenNameabstract = 98;
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.java
index 3ff41dd..384b285 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/compiler/ReconcileContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2013 IBM Corporation and others.
+ * Copyright (c) 2005, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -88,20 +88,9 @@
  * with JLS4 level.
  */
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit getAST3() throws JavaModelException {
-	if (this.operation.astLevel != AST.JLS3 || !this.operation.resolveBindings) {
-		// create AST (optionally resolving bindings)
-		ASTParser parser = ASTParser.newParser(AST.JLS3);
-		parser.setCompilerOptions(this.workingCopy.getJavaProject().getOptions(true));
-		if (JavaProject.hasJavaNature(this.workingCopy.getJavaProject().getProject()))
-			parser.setResolveBindings(true);
-		parser.setStatementsRecovery((this.operation.reconcileFlags & ICompilationUnit.ENABLE_STATEMENTS_RECOVERY) != 0);
-		parser.setBindingsRecovery((this.operation.reconcileFlags & ICompilationUnit.ENABLE_BINDINGS_RECOVERY) != 0);
-		parser.setSource(this.workingCopy);
-		parser.setIgnoreMethodBodies((this.operation.reconcileFlags & ICompilationUnit.IGNORE_METHOD_BODIES) != 0);
-		return (org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit) parser.createAST(this.operation.progressMonitor);
-	}
-	return this.operation.makeConsistent(this.workingCopy);
+	return getAST(AST.JLS3);
 }
+
 /**
  * Returns a resolved AST with {@link AST#JLS4 JLS4} level.
  * It is created from the current state of the working copy.
@@ -128,20 +117,9 @@
  * @since 3.7.1
  */
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit getAST4() throws JavaModelException {
-	if (this.operation.astLevel != AST.JLS4 || !this.operation.resolveBindings) {
-		// create AST (optionally resolving bindings)
-		ASTParser parser = ASTParser.newParser(AST.JLS4);
-		parser.setCompilerOptions(this.workingCopy.getJavaProject().getOptions(true));
-		if (JavaProject.hasJavaNature(this.workingCopy.getJavaProject().getProject()))
-			parser.setResolveBindings(true);
-		parser.setStatementsRecovery((this.operation.reconcileFlags & ICompilationUnit.ENABLE_STATEMENTS_RECOVERY) != 0);
-		parser.setBindingsRecovery((this.operation.reconcileFlags & ICompilationUnit.ENABLE_BINDINGS_RECOVERY) != 0);
-		parser.setSource(this.workingCopy);
-		parser.setIgnoreMethodBodies((this.operation.reconcileFlags & ICompilationUnit.IGNORE_METHOD_BODIES) != 0);
-		return (org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit) parser.createAST(this.operation.progressMonitor);
-	}
-	return this.operation.makeConsistent(this.workingCopy);
+	return getAST(AST.JLS4);
 }
+
 /**
  * Returns a resolved AST with {@link AST#JLS8 JLS8} level.
  * It is created from the current state of the working copy.
@@ -163,12 +141,43 @@
  * <ul>
  * <li> The working copy does not exist (ELEMENT_DOES_NOT_EXIST)</li>
  * </ul>
+ * @deprecated JLS8 has been deprecated. This method has been replaced by {@link #getAST(int)} which returns an AST
+ * with the given level.
  * @since 3.10
  */
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit getAST8() throws JavaModelException {
-	if (this.operation.astLevel != AST.JLS8 || !this.operation.resolveBindings) {
+	return getAST(AST.JLS8);
+}
+
+/**
+ * Returns a resolved AST with the given AST level.
+ * It is created from the current state of the working copy.
+ * Creates one if none exists yet.
+ * Returns <code>null</code> if the current state of the working copy
+ * doesn't allow the AST to be created (e.g. if the working copy's content
+ * cannot be parsed).
+ * <p>
+ * If the AST level requested during reconciling is not the latest available AST level
+ * or if binding resolutions was not requested, then a different AST is created.
+ * Note that this AST does not become the current AST and it is only valid for
+ * the requestor.
+ * </p>
+ *
+ * @param level the API level; one of the <code>.JLS*</code> level constants
+ * declared on {@link AST}
+ * @return the AST created from the current state of the working copy,
+ *   or <code>null</code> if none could be created
+ * @exception JavaModelException  if the contents of the working copy
+ *		cannot be accessed. Reasons include:
+ * <ul>
+ * <li> The working copy does not exist (ELEMENT_DOES_NOT_EXIST)</li>
+ * </ul>
+ * @since 3.14
+ */
+public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit getAST(int level) throws JavaModelException {
+	if (this.operation.astLevel != level || !this.operation.resolveBindings) {
 		// create AST (optionally resolving bindings)
-		ASTParser parser = ASTParser.newParser(AST.JLS8);
+		ASTParser parser = ASTParser.newParser(level);
 		parser.setCompilerOptions(this.workingCopy.getJavaProject().getOptions(true));
 		if (JavaProject.hasJavaNature(this.workingCopy.getJavaProject().getProject()))
 			parser.setResolveBindings(true);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AST.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AST.java
index 9ae1066..414aeba 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AST.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AST.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -114,7 +115,7 @@
      * </p>
      *
 	 * @since 3.0
-	 * @deprecated Clients should use the {@link #JLS8} AST API instead.
+	 * @deprecated Clients should use the {@link #JLS10} AST API instead.
 	 */
 	public static final int JLS2 = 2;
 
@@ -138,7 +139,7 @@
      * </p>
      *
 	 * @since 3.1
-	 * @deprecated Clients should use the {@link #JLS8} AST API instead.
+	 * @deprecated Clients should use the {@link #JLS10} AST API instead.
 	 */
 	public static final int JLS3 = 3;
 	
@@ -162,7 +163,7 @@
 	 * </p>
 	 *
 	 * @since 3.7.1
-	 * @deprecated Clients should use the {@link #JLS8} AST API instead.
+	 * @deprecated Clients should use the {@link #JLS10} AST API instead.
 	 */
 	public static final int JLS4 = 4;
 	
@@ -186,9 +187,64 @@
 	 * </p>
 	 *
 	 * @since 3.10
+	 * @deprecated Clients should use the {@link #JLS10} AST API instead.
 	 */
 	public static final int JLS8 = 8;
 
+	/**
+	 * Internal synonym for {@link #JLS8}. Use to alleviate
+	 * deprecation warnings.
+	 * @since 3.14
+	 */
+	/*package*/ static final int JLS8_INTERNAL = JLS8;
+	
+	/**
+	 * Constant for indicating the AST API that handles JLS9.
+	 * <p>
+	 * This API is capable of handling all constructs in the
+	 * Java language as described in the Java Language
+	 * Specification, Java SE 9 Edition (JLS9).
+	 * JLS9 is a superset of all earlier versions of the
+	 * Java language, and the JLS9 API can be used to manipulate
+	 * programs written in all versions of the Java language
+	 * up to and including Java SE 9 (aka JDK 9).
+	 * </p>
+	 *
+	 * @since 3.14
+	 * @deprecated Clients should use the {@link #JLS10} AST API instead.
+	 */
+	public static final int JLS9 = 9;
+
+	/**
+	 * Internal synonym for {@link #JLS9}. Use to alleviate
+	 * deprecation warnings once JLS9 is deprecated
+	 * @since 3.14
+	 */
+	/*package*/ static final int JLS9_INTERNAL = JLS9;
+	
+	/**
+	 * Constant for indicating the AST API that handles JLS10.
+	 * <p>
+	 * This API is capable of handling all constructs in the
+	 * Java language as described in the Java Language
+	 * Specification, Java SE 10 Edition (JLS10).
+	 * JLS10 is a superset of all earlier versions of the
+	 * Java language, and the JLS10 API can be used to manipulate
+	 * programs written in all versions of the Java language
+	 * up to and including Java SE 10 (aka JDK 10).
+	 * </p>
+	 *
+	 * @since 3.14
+	 */
+	public static final int JLS10 = 10;
+
+	/**
+	 * Internal synonym for {@link #JLS10}. Use to alleviate
+	 * deprecation warnings once JLS10 is deprecated
+	 * @since 3.14
+	 */
+	/*package*/ static final int JLS10_INTERNAL = JLS10;
+
 	/*
 	 * Must not collide with a value for ICompilationUnit constants
 	 */
@@ -284,7 +340,7 @@
 	 * Creates a new Java abstract syntax tree
      * (AST) following the specified set of API rules.
      * <p>
-     * Clients should use this method specifying {@link #JLS8} as the
+     * Clients should use this method specifying {@link #JLS10} as the
      * AST level in all cases, even when dealing with source of earlier JDK versions like 1.3 or 1.4.
      * </p>
      *
@@ -664,8 +720,8 @@
 	 * Creates a new, empty abstract syntax tree using default options.
 	 *
 	 * @see JavaCore#getDefaultOptions()
-	 * @deprecated Clients should port their code to use the new JLS4 AST API and call
-	 *    {@link #newAST(int) AST.newAST(AST.JLS4)} instead of using this constructor.
+	 * @deprecated Clients should port their code to use the latest JLS* AST API and call
+	 *    {@link #newAST(int) AST.newAST(AST.JLS9)} instead of using this constructor.
 	 */
 	public AST() {
 		this(JavaCore.getDefaultOptions());
@@ -707,7 +763,7 @@
 						null/*taskPriorities*/,
 						true/*taskCaseSensitive*/);
 				break;
-			case JLS8 :
+			case JLS8_INTERNAL :
 				this.apiLevel = level;
 				// initialize a scanner
 				this.scanner = new Scanner(
@@ -720,6 +776,32 @@
 						null/*taskPriorities*/,
 						true/*taskCaseSensitive*/);
 				break;	
+			case JLS9_INTERNAL :
+				this.apiLevel = level;
+				// initialize a scanner
+				this.scanner = new Scanner(
+						true /*comment*/,
+						true /*whitespace*/,
+						false /*nls*/,
+						ClassFileConstants.JDK9   /*sourceLevel*/,
+						ClassFileConstants.JDK9 /*complianceLevel*/,
+						null/*taskTag*/,
+						null/*taskPriorities*/,
+						true/*taskCaseSensitive*/);
+				break;	
+			case JLS10_INTERNAL :
+				this.apiLevel = level;
+				// initialize a scanner
+				this.scanner = new Scanner(
+						true /*comment*/,
+						true /*whitespace*/,
+						false /*nls*/,
+						ClassFileConstants.JDK10   /*sourceLevel*/,
+						ClassFileConstants.JDK10 /*complianceLevel*/,
+						null/*taskTag*/,
+						null/*taskPriorities*/,
+						true/*taskCaseSensitive*/);
+				break;	
 			default:
 				throw new IllegalArgumentException("Unsupported JLS level"); //$NON-NLS-1$
 		}
@@ -746,8 +828,8 @@
 	 * @param options the table of options (key type: <code>String</code>;
 	 *    value type: <code>String</code>)
 	 * @see JavaCore#getDefaultOptions()
-	 * @deprecated Clients should port their code to use the new JLS4 AST API and call
-	 *    {@link #newAST(int) AST.newAST(AST.JLS4)} instead of using this constructor.
+	 * @deprecated Clients should port their code to use the latest JLS* AST API and call
+	 *    {@link #newAST(int) AST.newAST(AST.JLS9)} instead of using this constructor.
 	 */
 	public AST(Map options) {
 		this(JLS2);
@@ -1135,7 +1217,7 @@
 	 */
 	public ArrayType newArrayType(Type elementType) {
 		ArrayType result;
-		if (this.apiLevel < AST.JLS8) {
+		if (this.apiLevel < JLS8_INTERNAL) {
 			result = new ArrayType(this);
 			setArrayComponentType(result, elementType);
 			return result;
@@ -1179,7 +1261,7 @@
 			throw new IllegalArgumentException();
 		}
 		ArrayType result;
-		if (this.apiLevel < AST.JLS8) {
+		if (this.apiLevel < JLS8_INTERNAL) {
 			if (dimensions < 1) {
 				throw new IllegalArgumentException();
 			}
@@ -1467,10 +1549,23 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented exports directive
+	 * node for an unspecified, but legal, name; no target modules
+	 *
+	 * @return a new unparented exports directive node
+	 * @exception UnsupportedOperationException if this operation is used in an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public ExportsDirective newExportsStatement() {
+		ExportsDirective result = new ExportsDirective(this);
+		return result;
+	}
+
+	/**
 	 * Creates an unparented expression method reference node owned by this AST.
 	 * By default, the expression and method name are unspecified (but legal),
 	 * and there are no type arguments.
-	 * 
+	 *
 	 * @return a new unparented expression method reference expression node
 	 * @exception UnsupportedOperationException if this operation is used in a JLS2, JLS3 or JLS4 AST
 	 * @since 3.10
@@ -1826,6 +1921,23 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented module modifier node for the given
+	 * module modifier.
+	 *
+	 * @param keyword one of the module modifier keyword constants
+	 * @return a new unparented module modifier node
+	 * @exception IllegalArgumentException if the primitive type code is invalid
+	 * @exception UnsupportedOperationException if this operation is used in
+	 * an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public ModuleModifier newModuleModifier(ModuleModifier.ModuleModifierKeyword keyword) {
+		ModuleModifier result = new ModuleModifier(this);
+		result.setKeyword(keyword);
+		return result;
+	}
+
+	/**
 	 * Creates and returns a list of new unparented modifier nodes
 	 * for the given modifier flags. When multiple modifiers are
 	 * requested, the modifier nodes will appear in the following order:
@@ -1887,6 +1999,20 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented module declaration
+	 * node for an unspecified, but legal, name; no modifiers; no javadoc;
+	 * and an empty list of statements.
+	 *
+	 * @return a new unparented module declaration node
+	 * @exception UnsupportedOperationException if this operation is used in an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public ModuleDeclaration newModuleDeclaration() {
+		ModuleDeclaration result = new ModuleDeclaration(this);
+		return result;
+	}
+
+	/**
 	 * Creates and returns a new unparented name node for the given name.
 	 * The name string must consist of 1 or more name segments separated
 	 * by single dots '.'. Returns a {@link QualifiedName} if the name has
@@ -2050,6 +2176,19 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented opens directive
+	 * node for an unspecified, but legal, name; no target modules
+	 *
+	 * @return a new unparented opens directive node
+	 * @exception UnsupportedOperationException if this operation is used in an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public OpensDirective newOpensDirective() {
+		OpensDirective result = new OpensDirective(this);
+		return result;
+	}
+
+	/**
 	 * Creates an unparented package declaration node owned by this AST.
 	 * The package declaration initially declares a package with an
 	 * unspecified name.
@@ -2133,6 +2272,19 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented provides directive
+	 * node for an unspecified, but legal, type; no target types
+	 *
+	 * @return a new unparented provides directive node
+	 * @exception UnsupportedOperationException if this operation is used in an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public ProvidesDirective newProvidesDirective() {
+		ProvidesDirective result = new ProvidesDirective(this);
+		return result;
+	}
+
+	/**
 	 * Creates and returns a new unparented qualified name node for the given
 	 * qualifier and simple name child node.
 	 *
@@ -2179,6 +2331,19 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented requires directive
+	 * node for an unspecified, but legal, name;
+	 *
+	 * @return a new unparented requires directive node
+	 * @exception UnsupportedOperationException if this operation is used in an AST with level less than JLS9
+	 * @since 3.14
+	 */
+	public RequiresDirective newRequiresDirective() {
+		RequiresDirective result = new RequiresDirective(this);
+		return result;
+	}
+
+	/**
 	 * Creates a new unparented return statement node owned by this AST.
 	 * By default, the return statement has no expression.
 	 *
@@ -2551,6 +2716,19 @@
 	}
 
 	/**
+	 * Creates and returns a new unparented uses directive
+	 * node for an unspecified, but legal, name;
+	 *
+	 * @return a new unparented uses directive node
+	 * @exception UnsupportedOperationException if this operation is used in level less than JLS9
+	 * @since 3.14
+	 */
+	public UsesDirective newUsesDirective() {
+		UsesDirective result = new UsesDirective(this);
+		return result;
+	}
+
+	/**
 	 * Creates a new unparented intersection type node owned by this AST.
 	 * By default, the intersection type has no types.
 	 *
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.java
index 4accfce..542c76b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTConverter.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,11 +14,14 @@
 
 package org.aspectj.org.eclipse.jdt.core.dom;
 
+import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.TreeSet;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -27,9 +31,11 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
 import org.aspectj.org.eclipse.jdt.core.dom.Modifier.ModifierKeyword;
+import org.aspectj.org.eclipse.jdt.core.dom.ModuleModifier.ModuleModifierKeyword;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ForeachStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.IntersectionCastTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.JavadocArgumentExpression;
@@ -37,6 +43,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.JavadocMessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
@@ -114,7 +121,7 @@
 	// AspectJ Extension - raised to protected
 	protected DefaultCommentMapper commentMapper;
 
-	public ASTConverter(Map<String,String> options, boolean resolveBindings, IProgressMonitor monitor) {
+	public ASTConverter(Map<String, String> options, boolean resolveBindings, IProgressMonitor monitor) {
 		this.resolveBindings = resolveBindings;
 		this.referenceContext = null;
 		String sourceModeSetting = options.get(JavaCore.COMPILER_SOURCE);
@@ -501,7 +508,7 @@
 	protected void completeRecord(ArrayType arrayType, org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode astNode) {
 		ArrayType array = arrayType;
 		this.recordNodes(arrayType, astNode);
-		if (this.ast.apiLevel() >= AST.JLS8) {
+		if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 			this.recordNodes(arrayType.getElementType(), astNode);
 			return;
 		}
@@ -545,7 +552,7 @@
 		int methodHeaderEnd = methodDeclaration.sourceEnd;
 		int thrownExceptionsLength = thrownExceptions == null ? 0 : thrownExceptions.length;
 		if (thrownExceptionsLength > 0) {
-			if (this.ast.apiLevel() < AST.JLS8) {
+			if (this.ast.apiLevel() < AST.JLS8_INTERNAL) {
 				Name thrownException;
 				int i = 0;
 				do {
@@ -569,7 +576,7 @@
 		}
 
 		if (methodDeclaration.receiver != null) {
-			if(this.ast.apiLevel >= AST.JLS8) {
+			if(this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				convertAndSetReceiver(methodDeclaration, methodDecl);
 			} else {
 				methodDecl.setFlags(methodDecl.getFlags() | ASTNode.MALFORMED);
@@ -615,7 +622,7 @@
 				// get the positions of the right parenthesis
 				int rightParenthesisPosition = retrieveEndOfRightParenthesisPosition(end, method.bodyEnd);
 				int extraDimensions = typeReference.extraDimensions();
-				if (this.ast.apiLevel >= AST.JLS8) {
+				if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 					setExtraAnnotatedDimensions(rightParenthesisPosition, method.bodyEnd, typeReference,
 												methodDecl.extraDimensions(), extraDimensions);
 				} else {
@@ -675,8 +682,9 @@
 			}
 			if (block != null) {
 				if ((methodDeclaration.modifiers & (ClassFileConstants.AccAbstract | ClassFileConstants.AccNative)) != 0
-						|| (isInterface && (this.ast.apiLevel < AST.JLS8 ||
-							(methodDeclaration.modifiers & (ClassFileConstants.AccStatic | ExtraCompilerModifiers.AccDefaultMethod)) == 0))) {
+						|| (isInterface && (this.ast.apiLevel < AST.JLS8_INTERNAL ||
+							(methodDeclaration.modifiers & (ClassFileConstants.AccStatic | ExtraCompilerModifiers.AccDefaultMethod |
+									(this.ast.apiLevel > AST.JLS8_INTERNAL ? ClassFileConstants.AccPrivate : 0))) == 0))) {
 					methodDecl.setFlags(methodDecl.getFlags() | ASTNode.MALFORMED);
 				}
 			}
@@ -939,7 +947,7 @@
 		final int typeSourceEnd = argument.type.sourceEnd;
 		TypeReference typeReference = argument.type;
 		final int extraDimensions = typeReference.extraDimensions();
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			setExtraAnnotatedDimensions(nameEnd + 1, typeSourceEnd, typeReference,
 										variableDecl.extraDimensions(), extraDimensions);
 		} else {
@@ -959,7 +967,7 @@
 		 */
 		if (isVarArgs) {
 			Dimension lastDimension = null;
-			if (this.ast.apiLevel() >= AST.JLS8) {
+			if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 				if (type.isArrayType()) { // should always be true
 					List dimensions = ((ArrayType) type).dimensions();
 					if (!dimensions.isEmpty()) {
@@ -969,7 +977,7 @@
 			}
 			setTypeForSingleVariableDeclaration(variableDecl, type, extraDimensions + 1);
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=391898
-			if (this.ast.apiLevel() >= AST.JLS8) {
+			if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 				if (lastDimension != null) { // should always be true
 					List annotations = lastDimension.annotations();
 					Iterator iter = annotations.iterator();
@@ -1042,7 +1050,7 @@
 		if (type.isArrayType()) {
 			arrayType = (ArrayType) type;
 			if (expression.annotationsOnDimensions != null) {
-				if (this.ast.apiLevel() < AST.JLS8) {
+				if (this.ast.apiLevel() < AST.JLS8_INTERNAL) {
 					arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED);
 				} else {
 					setTypeAnnotationsAndSourceRangeOnArray(arrayType, expression.annotationsOnDimensions);
@@ -1399,24 +1407,37 @@
 				}
 			}
 	
-			org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration[] types = unit.types;
-			if (types != null) {
-				int typesLength = types.length;
-				for (int i = 0; i < typesLength; i++) {
-					org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration declaration = types[i];
-					if (CharOperation.equals(declaration.name, TypeConstants.PACKAGE_INFO_NAME)) {
-						continue;
-					}
-					ASTNode type = convert(declaration);
-					if (type == null) {
-						compilationUnit.setFlags(compilationUnit.getFlags() | ASTNode.MALFORMED);
-					} else {
-						compilationUnit.types().add(type);
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration mod = unit.moduleDeclaration;
+			if (mod != null) {
+				ASTNode declaration = convertToModuleDeclaration(mod);
+				if (declaration == null) {
+					compilationUnit.setFlags(compilationUnit.getFlags() | ASTNode.MALFORMED);
+				} else {
+					compilationUnit.setModule((ModuleDeclaration) declaration);
+				}
+			} else {
+				org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration[] types = unit.types;
+				if (types != null) {
+					int typesLength = types.length;
+					for (int i = 0; i < typesLength; i++) {
+						org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration declaration = types[i];
+						if (CharOperation.equals(declaration.name, TypeConstants.PACKAGE_INFO_NAME)) {
+							continue;
+						}
+						ASTNode type = convert(declaration);
+						if (type == null) {
+							compilationUnit.setFlags(compilationUnit.getFlags() | ASTNode.MALFORMED);
+						} else {
+							if (type instanceof ModuleDeclaration)
+								compilationUnit.setModule((ModuleDeclaration) type);
+							else
+								compilationUnit.types().add(type);
+						}
 					}
 				}
 			}
 			compilationUnit.setSourceRange(unit.sourceStart, unit.sourceEnd - unit.sourceStart  + 1);
-	
+
 			int problemLength = unit.compilationResult.problemCount;
 			if (problemLength != 0) {
 				CategorizedProblem[] resizedProblems = null;
@@ -1715,6 +1736,33 @@
 		return newStatement;
 	}
 
+	private ModulePackageAccess getPackageVisibilityStatement(
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.PackageVisibilityStatement pvsStmt, ModulePackageAccess stmt) {
+		int sourceEnd = pvsStmt.declarationSourceEnd;
+		if (pvsStmt.declarationEnd > sourceEnd) sourceEnd = pvsStmt.declarationEnd; // TODO: working around a compiler issue
+		Name name = getImportName(pvsStmt.pkgRef);
+		stmt.setName(name);
+		if (this.resolveBindings) {
+			recordNodes(name, pvsStmt.pkgRef);
+		}
+		int tmp = sourceEnd;
+		if (pvsStmt.targets != null && pvsStmt.targets.length > 0) {
+			List<Name> modules = stmt.modules();
+			for (ModuleReference moduleRef : pvsStmt.getTargetedModules()) {
+				Name target = getName(moduleRef, CharOperation.splitOn('.', moduleRef.moduleName), moduleRef.sourcePositions);
+				modules.add(target);
+				if (tmp < moduleRef.sourceEnd) tmp = moduleRef.sourceEnd;
+				if (this.resolveBindings) {
+					this.recordNodes(target, moduleRef);
+				}
+
+			}
+		}
+		if (tmp > sourceEnd) sourceEnd = tmp;
+		stmt.setSourceRange(pvsStmt.declarationSourceStart, sourceEnd - pvsStmt.declarationSourceStart + 1);
+		return stmt;
+	}
+
 	public Expression convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression expression) {
 		if ((expression.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.ParenthesizedMASK) != 0) {
 			return convertToParenthesizedExpression(expression);
@@ -2036,54 +2084,50 @@
 		return literal;
 	}
 
-	public void convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, BodyDeclaration bodyDeclaration) {
-		if (bodyDeclaration.getJavadoc() == null) {
-			if (javadoc != null) {
-				if (this.commentMapper == null || !this.commentMapper.hasSameTable(this.commentsTable)) {
-					this.commentMapper = new DefaultCommentMapper(this.commentsTable);
-				}
-				Comment comment = this.commentMapper.getComment(javadoc.sourceStart);
-				if (comment != null && comment.isDocComment() && comment.getParent() == null) {
-					Javadoc docComment = (Javadoc) comment;
-					if (this.resolveBindings) {
-						recordNodes(docComment, javadoc);
-						// resolve member and method references binding
-						Iterator tags = docComment.tags().listIterator();
-						while (tags.hasNext()) {
-							recordNodes(javadoc, (TagElement) tags.next());
-						}
+	interface IGetJavaDoc {
+		Javadoc getJavaDoc();
+	}
+	interface ISetJavaDoc {
+		void setJavadoc(Javadoc javadoc);
+	}
+	public void convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, IGetJavaDoc getJ, ISetJavaDoc setJ) {
+		if (getJ.getJavaDoc() == null) {
+			Javadoc docComment = convert(javadoc);
+			if (docComment != null) 
+				setJ.setJavadoc(docComment);
+		}
+	}
+	private Javadoc convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc) {
+		Javadoc docComment = null;
+		if (javadoc != null) {
+			if (this.commentMapper == null || !this.commentMapper.hasSameTable(this.commentsTable)) {
+				this.commentMapper = new DefaultCommentMapper(this.commentsTable);
+			}
+			Comment comment = this.commentMapper.getComment(javadoc.sourceStart);
+			if (comment != null && comment.isDocComment() && comment.getParent() == null) {
+				docComment = (Javadoc) comment;
+				if (this.resolveBindings) {
+					recordNodes(docComment, javadoc);
+					// resolve member and method references binding
+					Iterator tags = docComment.tags().listIterator();
+					while (tags.hasNext()) {
+						recordNodes(javadoc, (TagElement) tags.next());
 					}
-					bodyDeclaration.setJavadoc(docComment);
 				}
 			}
 		}
+		return docComment;
+	}
+	public void convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, BodyDeclaration bodyDeclaration) {
+		convert(javadoc, bodyDeclaration::getJavadoc, bodyDeclaration::setJavadoc);
+	}
+	public void convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, ModuleDeclaration moduleDeclaration) {
+		convert(javadoc, moduleDeclaration::getJavadoc, moduleDeclaration::setJavadoc);
 	}
 
 	public void convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc javadoc, PackageDeclaration packageDeclaration) {
-		switch(this.ast.apiLevel) {
-			case AST.JLS2_INTERNAL :
-				return;
-		}
-		if (packageDeclaration.getJavadoc() == null) {
-			if (javadoc != null) {
-				if (this.commentMapper == null || !this.commentMapper.hasSameTable(this.commentsTable)) {
-					this.commentMapper = new DefaultCommentMapper(this.commentsTable);
-				}
-				Comment comment = this.commentMapper.getComment(javadoc.sourceStart);
-				if (comment != null && comment.isDocComment() && comment.getParent() == null) {
-					Javadoc docComment = (Javadoc) comment;
-					if (this.resolveBindings) {
-						recordNodes(docComment, javadoc);
-						// resolve member and method references binding
-						Iterator tags = docComment.tags().listIterator();
-						while (tags.hasNext()) {
-							recordNodes(javadoc, (TagElement) tags.next());
-						}
-					}
-					packageDeclaration.setJavadoc(docComment);
-				}
-			}
-		}
+		if (this.ast.apiLevel == AST.JLS2_INTERNAL) return;
+		convert(javadoc, packageDeclaration::getJavadoc, packageDeclaration::setJavadoc);
 	}
 
 	public LabeledStatement convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.LabeledStatement statement) {
@@ -2246,7 +2290,7 @@
 	}
 
 	public Expression convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression lambda) {
-		if (this.ast.apiLevel < AST.JLS8) {
+		if (this.ast.apiLevel < AST.JLS8_INTERNAL) {
 			return createFakeNullLiteral(lambda);		
 		}
 		final LambdaExpression	lambdaExpression = new LambdaExpression(this.ast);
@@ -2604,7 +2648,7 @@
 	}
 
 	public Expression convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression reference) {
-		if (this.ast.apiLevel < AST.JLS8) {
+		if (this.ast.apiLevel < AST.JLS8_INTERNAL) {
 			return createFakeNullLiteral(reference);
 		}
 		Expression result = null;
@@ -2885,8 +2929,7 @@
 	public TryStatement convert(org.aspectj.org.eclipse.jdt.internal.compiler.ast.TryStatement statement) {
 		final TryStatement tryStatement = new TryStatement(this.ast);
 		tryStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
-		LocalDeclaration[] localDeclarations = statement.resources;
-		int resourcesLength = localDeclarations.length;
+		int resourcesLength = statement.resources.length;
 		if (resourcesLength > 0) {
 			switch(this.ast.apiLevel) {
 				case AST.JLS2_INTERNAL :
@@ -2894,15 +2937,41 @@
 					// convert it to a simple try statement tagged as MALFORMED
 					tryStatement.setFlags(tryStatement.getFlags() | ASTNode.MALFORMED);
 					break;
-				default:
+				case AST.JLS4_INTERNAL:
+				case AST.JLS8_INTERNAL:
 					for (int i = 0; i < resourcesLength; i++) {
-						LocalDeclaration localDeclaration = localDeclarations[i];
+						if (!(statement.resources[i] instanceof LocalDeclaration)) {
+							tryStatement.setFlags(tryStatement.getFlags() | ASTNode.MALFORMED);
+							break;
+						}
+						LocalDeclaration localDeclaration = (LocalDeclaration)statement.resources[i];
 						VariableDeclarationExpression variableDeclarationExpression = convertToVariableDeclarationExpression(localDeclaration);
 						int start = variableDeclarationExpression.getStartPosition();
 						int end = localDeclaration.declarationEnd;
 						variableDeclarationExpression.setSourceRange(start, end - start + 1);
 						tryStatement.resources().add(variableDeclarationExpression);
 					}
+					break;
+				default:
+					for (int i = 0; i < resourcesLength; i++) {
+						org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement resource = statement.resources[i];
+						if (resource instanceof LocalDeclaration) {
+							LocalDeclaration localDeclaration = (LocalDeclaration)resource;
+							VariableDeclarationExpression variableDeclarationExpression = convertToVariableDeclarationExpression(localDeclaration);
+							int start = variableDeclarationExpression.getStartPosition();
+							int end = localDeclaration.declarationEnd;
+							variableDeclarationExpression.setSourceRange(start, end - start + 1);
+							tryStatement.resources().add(variableDeclarationExpression);
+						} else if (resource instanceof NameReference) {
+							tryStatement.resources().add(convert((NameReference) resource));
+						} else if (resource instanceof FieldReference) {
+							tryStatement.resources().add(convert((FieldReference) resource));
+						} else {
+							tryStatement.setFlags(tryStatement.getFlags() | ASTNode.MALFORMED);
+							break;
+						}
+					}
+					break;
 			}
 		}
 		tryStatement.setBody(convert(statement.tryBlock));
@@ -3110,24 +3179,9 @@
 
 	public ImportDeclaration convertImport(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference importReference) {
 		final ImportDeclaration importDeclaration = new ImportDeclaration(this.ast);
+		Name name = getImportName(importReference);
+		importDeclaration.setName(name);
 		final boolean onDemand = (importReference.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.OnDemand) != 0;
-		final char[][] tokens = importReference.tokens;
-		int length = importReference.tokens.length;
-		final long[] positions = importReference.sourcePositions;
-		if (length > 1) {
-			importDeclaration.setName(setQualifiedNameNameAndSourceRanges(tokens, positions, importReference));
-		} else {
-			final SimpleName name = new SimpleName(this.ast);
-			name.internalSetIdentifier(new String(tokens[0]));
-			final int start = (int)(positions[0]>>>32);
-			final int end = (int)(positions[0] & 0xFFFFFFFF);
-			name.setSourceRange(start, end - start + 1);
-			name.index = 1;
-			importDeclaration.setName(name);
-			if (this.resolveBindings) {
-				recordNodes(name, importReference);
-			}
-		}
 		importDeclaration.setSourceRange(importReference.declarationSourceStart, importReference.declarationEnd - importReference.declarationSourceStart + 1);
 		importDeclaration.setOnDemand(onDemand);
 		int modifiers = importReference.modifiers;
@@ -3150,6 +3204,30 @@
 		return importDeclaration;
 	}
 
+	public Name getImportName(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference importReference) {
+		return getName(importReference, importReference.tokens, importReference.sourcePositions);
+	}
+
+	private Name getName(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node, final char[][] tokens,
+			final long[] positions) {
+		Name name;
+		int length = tokens != null ? tokens.length : 0;
+		if (length > 1) {
+			name = setQualifiedNameNameAndSourceRanges(tokens, positions, node);
+		} else {
+			name = new SimpleName(this.ast);
+			((SimpleName)name).internalSetIdentifier(new String(tokens[0]));
+			final int start = (int)(positions[0]>>>32);
+			final int end = (int)(positions[0] & 0xFFFFFFFF);
+			name.setSourceRange(start, end - start + 1);
+			name.index = 1;
+			if (this.resolveBindings) {
+				recordNodes(name, node);
+			}
+		}
+		return name;
+	}
+
 	public PackageDeclaration convertPackage(org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration compilationUnitDeclaration) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference importReference = compilationUnitDeclaration.currentPackage;
 		final PackageDeclaration packageDeclaration = new PackageDeclaration(this.ast);
@@ -3194,7 +3272,7 @@
 	private ArrayType convertToArray(Type elementType, int sourceStart, int length, int dimensions, org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation[][] annotationsOnDimensions) {
 		ArrayType arrayType = this.ast.newArrayType(elementType, dimensions);
 		if (length > 0) arrayType.setSourceRange(sourceStart, length);
-		if (this.ast.apiLevel() < AST.JLS8) {
+		if (this.ast.apiLevel() < AST.JLS8_INTERNAL) {
 			if (annotationsOnDimensions != null) {
 				arrayType.setFlags(arrayType.getFlags() | ASTNode.MALFORMED);
 			}
@@ -3265,6 +3343,120 @@
 		return fieldDeclaration;
 	}
 
+	/**
+	 * If there is a parsing error causing a recovered module the source positions may be updated only partially. 
+	 * See bug 518843 for a case where this issue occurred. This method provide a safety net with 
+	 * source positions updated even in case of a recovery - if there is no recovery, the source positions will 
+	 * be retained in-tact identical to the compile time ast module node.
+	 */
+	private int getKnownEnd(ModuleDeclaration md, int sourceEnd, int declSourceEnd) {
+		int end =  retrieveRightBrace(md.getStartPosition() + 1, this.compilationUnitSourceLength);
+		end = end > sourceEnd ? end : sourceEnd;
+		end = end > declSourceEnd ? end : declSourceEnd;
+		return end;
+	}
+	public ModuleDeclaration convertToModuleDeclaration(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration moduleDeclaration) {
+		checkCanceled();
+		if (this.scanner.sourceLevel < ClassFileConstants.JDK9
+				|| this.ast.apiLevel < AST.JLS9_INTERNAL) return null;
+		ModuleDeclaration moduleDecl = this.ast.newModuleDeclaration();
+		// TODO
+		//convert(moduleDeclaration.javadoc, moduleDecl);
+		setAnnotations(moduleDecl, moduleDeclaration); // only annotations
+		moduleDecl.setOpen(moduleDeclaration.isOpen());
+		Name moduleName = getName(moduleDeclaration, CharOperation.splitOn('.', moduleDeclaration.moduleName), moduleDeclaration.sourcePositions);
+		moduleDecl.setName(moduleName);
+
+		List<ModuleDirective> stmts = moduleDecl.moduleStatements();
+		TreeSet<ModuleDirective> tSet = new TreeSet<> (new Comparator() {
+			@Override
+			public int compare(Object o1, Object o2) {
+				int p1 = ((ModuleDirective) o1).getStartPosition();
+				int p2 = ((ModuleDirective) o2).getStartPosition();
+				return p1 < p2 ? -1 : p1 == p2 ? 0 : 1;
+			}
+		});
+		for (int i = 0; i < moduleDeclaration.exportsCount; ++i) {
+			tSet.add(getPackageVisibilityStatement(moduleDeclaration.exports[i], new ExportsDirective(this.ast)));
+		}
+		for (int i = 0; i < moduleDeclaration.opensCount; ++i) {
+			tSet.add(getPackageVisibilityStatement(moduleDeclaration.opens[i], new OpensDirective(this.ast)));
+		}
+		for (int i = 0; i < moduleDeclaration.requiresCount; ++i) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement req = moduleDeclaration.requires[i];
+			ModuleReference moduleRef = req.module;
+			RequiresDirective stmt = new RequiresDirective(this.ast);
+			Name name = getName(moduleRef, CharOperation.splitOn('.', moduleRef.moduleName), moduleRef.sourcePositions);
+			stmt.setName(name);
+			if (this.resolveBindings) {
+				recordNodes(name, moduleRef);
+			}
+
+			setModuleModifiers(req, stmt);
+			stmt.setSourceRange(req.declarationSourceStart, req.declarationEnd - req.declarationSourceStart + 1);
+			tSet.add(stmt);
+		}
+		for (int i = 0; i < moduleDeclaration.usesCount; ++i) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement usesStatement = moduleDeclaration.uses[i];
+			UsesDirective stmt = new UsesDirective(this.ast);
+			TypeReference usesRef = usesStatement.serviceInterface;
+			Name name = convert(usesRef);
+			stmt.setName(name);
+			stmt.setSourceRange(usesStatement.declarationSourceStart, usesStatement.declarationSourceEnd - usesStatement.declarationSourceStart + 1);			
+			tSet.add(stmt);
+		}
+		for (int i = 0; i < moduleDeclaration.servicesCount; ++i) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement pStmt = moduleDeclaration.services[i];
+			ProvidesDirective stmt = new ProvidesDirective(this.ast);
+			stmt.setName(convert(pStmt.serviceInterface));
+			TypeReference[] impls = pStmt.implementations;
+			for (TypeReference impl : impls) {
+				stmt.implementations().add(convert(impl));
+			}
+			stmt.setSourceRange(pStmt.declarationSourceStart, pStmt.declarationSourceEnd - pStmt.declarationSourceStart + 1);
+			tSet.add(stmt);
+		}
+		// The javadoc comment is now got from 	list store in compilation unit declaration
+		if (this.resolveBindings) {
+			recordNodes(moduleDecl, moduleDeclaration);
+			recordNodes(moduleName, moduleDeclaration);
+			moduleDecl.resolveBinding();
+		}
+		stmts.addAll(tSet);
+		int end = getKnownEnd(moduleDecl, moduleDeclaration.sourceEnd, moduleDeclaration.declarationSourceEnd);
+		moduleDecl.setSourceRange(moduleDeclaration.declarationSourceStart, end  - moduleDeclaration.declarationSourceStart + 1);
+		return moduleDecl;
+	}
+
+	private void setModuleModifiers(org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement req,	RequiresDirective stmt) {
+		boolean fakeInModule = this.scanner.fakeInModule;
+		this.scanner.fakeInModule = true;
+		this.scanner.resetTo(req.declarationSourceStart, req.sourceEnd);
+		try {
+			int token;
+			ModuleModifier modifier;
+			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
+				switch(token) {
+					case TerminalTokens.TokenNamestatic:
+						modifier = createModuleModifier(ModuleModifier.ModuleModifierKeyword.STATIC_KEYWORD);
+						break;
+					case TerminalTokens.TokenNametransitive:
+						modifier = createModuleModifier(ModuleModifier.ModuleModifierKeyword.TRANSITIVE_KEYWORD);
+						break;
+					default :
+						continue;
+				}
+				if (modifier != null) {
+					stmt.modifiers().add(modifier);
+				}
+			}
+		} catch(InvalidInputException e) {
+			// ignore
+		} finally {
+			this.scanner.fakeInModule = fakeInModule;
+		}
+	}
+
 	public ParenthesizedExpression convertToParenthesizedExpression(org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression expression) {
 		final ParenthesizedExpression parenthesizedExpression = new ParenthesizedExpression(this.ast);
 		if (this.resolveBindings) {
@@ -3308,7 +3500,7 @@
 		variableDecl.setName(name);
 		TypeReference typeReference = localDeclaration.type;
 		final int extraDimensions = typeReference.extraDimensions();
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			setExtraAnnotatedDimensions(nameEnd + 1, localDeclaration.declarationSourceEnd, typeReference,
 					variableDecl.extraDimensions(), extraDimensions);
 		} else {
@@ -3356,7 +3548,7 @@
 		int end = start;
 		TypeReference typeReference = fieldDeclaration.type;
 		int extraDimensions = typeReference.extraDimensions();
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			setExtraAnnotatedDimensions(fieldDeclaration.sourceEnd + 1, fieldDeclaration.declarationSourceEnd,
 					typeReference, variableDeclarationFragment.extraDimensions(), extraDimensions);
 		} else {
@@ -3400,7 +3592,7 @@
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression initialization = localDeclaration.initialization;
 		TypeReference typeReference = localDeclaration.type;
 		int extraDimension = typeReference.extraDimensions();
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			setExtraAnnotatedDimensions(localDeclaration.sourceEnd + 1, this.compilationUnitSourceLength,
 					typeReference, variableDeclarationFragment.extraDimensions(), extraDimension);
 		} else {
@@ -3493,12 +3685,17 @@
 		final VariableDeclarationFragment variableDeclarationFragment = convertToVariableDeclarationFragment(localDeclaration);
 		final VariableDeclarationStatement variableDeclarationStatement = new VariableDeclarationStatement(this.ast);
 		variableDeclarationStatement.fragments().add(variableDeclarationFragment);
-		if (this.resolveBindings) {
-			recordNodes(variableDeclarationFragment, localDeclaration);
-		}
 		variableDeclarationStatement.setSourceRange(localDeclaration.declarationSourceStart, localDeclaration.declarationSourceEnd - localDeclaration.declarationSourceStart + 1);
 		Type type = convertType(localDeclaration.type);
 		setTypeForVariableDeclarationStatement(variableDeclarationStatement, type, variableDeclarationFragment.getExtraDimensions());
+		if (this.resolveBindings) {
+			recordNodes(variableDeclarationFragment, localDeclaration);
+			if (this.ast.apiLevel() >= AST.JLS10_INTERNAL && type.isVar()) {
+				SimpleName varName = (SimpleName) ((SimpleType) type).getName();
+				varName.setVar(true);
+				recordNodes(varName, localDeclaration);				
+			}
+		}
 		if (localDeclaration.modifiersSourceStart != -1) {
 			setModifiers(variableDeclarationStatement, localDeclaration);
 		}
@@ -3678,6 +3875,9 @@
 				type = simpleType;
 				type.setSourceRange(sourceStart, end - sourceStart + 1);
 				type = simpleType;
+				if (this.ast.apiLevel() >= AST.JLS10_INTERNAL && type.isVar()) {
+					simpleName.setVar(true);
+				}
 				if (this.resolveBindings) {
 					this.recordNodes(simpleName, typeReference);
 				}
@@ -3946,7 +4146,7 @@
 			}
 
 			boolean createNameQualifiedType = typeAnnotations != null && typeAnnotations[firstTypeIndex] != null;
-			if (createNameQualifiedType && this.ast.apiLevel >= AST.JLS8) {
+			if (createNameQualifiedType && this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				NameQualifiedType nameQualifiedType = new NameQualifiedType(this.ast);
 				nameQualifiedType.setQualifier(name);
 				nameQualifiedType.setName(createSimpleName(typeReference, positions, tokens, firstTypeIndex));
@@ -4088,6 +4288,18 @@
 		return modifier;
 	}
 
+	/**
+	 * @return a new module modifier
+	 */
+	private ModuleModifier createModuleModifier(ModuleModifierKeyword keyword) {
+		final ModuleModifier modifier = new ModuleModifier(this.ast);
+		modifier.setKeyword(keyword);
+		int start = this.scanner.getCurrentTokenStartPosition();
+		int end = this.scanner.getCurrentTokenEndPosition();
+		modifier.setSourceRange(start, end - start + 1);
+		return modifier;
+	}
+
 	protected InfixExpression.Operator getOperatorFor(int operatorID) {
 		switch (operatorID) {
 			case org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds.EQUAL_EQUAL :
@@ -4284,7 +4496,6 @@
 		}
 		return false;
 	}
-
 	private void lookupForScopes() {
 		if (this.pendingNameScopeResolution != null) {
 			for (Iterator iterator = this.pendingNameScopeResolution.iterator(); iterator.hasNext(); ) {
@@ -4660,34 +4871,6 @@
 		return -1;
 
 	}
-	
-	// Aspectj keeping this for now, we use it.
-	/**
-	 * This method is used to retrieve the end position of the block.
-	 * @return int the dimension found, -1 if none
-	 */
-	protected int retrieveEndBlockPosition(int start, int end) {
-		this.scanner.resetTo(start, end);
-		int count = 0;
-		try {
-			int token;
-			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
-				switch(token) {
-					case TerminalTokens.TokenNameLBRACE://110
-						count++;
-						break;
-					case TerminalTokens.TokenNameRBRACE://95
-						count--;
-						if (count == 0) {
-							return this.scanner.currentPosition - 1;
-						}
-				}
-			}
-		} catch(InvalidInputException e) {
-			// ignore
-		}
-		return -1;
-	}
 
 	protected int retrieveSemiColonPosition(Expression node) {
 		int start = node.getStartPosition();
@@ -4958,7 +5141,7 @@
 		}
 		return -1;
 	}
-
+	
 	protected int retrieveProperRightBracketPosition(int bracketNumber, int start) {
 		return retrieveProperRightBracketPosition(bracketNumber, start, this.compilationUnitSourceLength);
 	}
@@ -5025,6 +5208,35 @@
 		return -1;
 	}
 
+	// AspectJ - keep for now
+	/**
+	 * This method is used to retrieve the end position of the block.
+	 * @return int the dimension found, -1 if none
+	 */
+	protected int retrieveEndBlockPosition(int start, int end) {
+		this.scanner.resetTo(start, end);
+		int count = 0;
+		try {
+			int token;
+			while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
+				switch(token) {
+					case TerminalTokens.TokenNameLBRACE://110
+						count++;
+						break;
+					case TerminalTokens.TokenNameRBRACE://95
+						count--;
+						if (count == 0) {
+							return this.scanner.currentPosition - 1;
+						}
+				}
+			}
+		} catch(InvalidInputException e) {
+			// ignore
+		}
+		return -1;
+	}
+	// End AspectJ
+
 	/**
 	 * This method is used to retrieve the starting position of the catch keyword.
 	 * @return int the dimension found, -1 if none
@@ -5064,6 +5276,9 @@
 	 * @param bodyDeclaration
 	 */
 	protected void setModifiers(BodyDeclaration bodyDeclaration, org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation[] annotations, int modifiersEnd) {
+		setModifiers(bodyDeclaration.modifiers(), annotations, modifiersEnd);
+	}
+	protected void setModifiers(List modifiers, org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation[] annotations, int modifiersEnd) {
 		this.scanner.tokenizeWhiteSpace = false;
 		try {
 			int token;
@@ -5124,7 +5339,7 @@
 						break;
 				}
 				if (modifier != null) {
-					bodyDeclaration.modifiers().add(modifier);
+					modifiers.add(modifier);
 				}
 			}
 		} catch(InvalidInputException e) {
@@ -5204,6 +5419,17 @@
 		}
 	}
 
+	protected void setAnnotations(ModuleDeclaration moduleDecl, org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration moduleDeclaration) {
+		this.scanner.resetTo(moduleDeclaration.declarationSourceStart, moduleDeclaration.sourceStart);
+		List<IExtendedModifier> modifiers = new ArrayList<>();
+		this.setModifiers(modifiers, moduleDeclaration.annotations, moduleDeclaration.sourceStart);
+		for (IExtendedModifier ie : modifiers) {
+			if (!ie.isAnnotation()) {
+				continue; // not setting to malformed.
+			}
+			moduleDecl.annotations().add(ie);
+		}
+	}
 	/**
 	 * @param variableDecl
 	 * @param argument
@@ -5699,7 +5925,7 @@
 				fieldDeclaration.setType(type);
 			}
 		} else {
-			if (type.isArrayType() && (this.ast.apiLevel() < AST.JLS8)) {
+			if (type.isArrayType() && (this.ast.apiLevel() < AST.JLS8_INTERNAL)) {
 				// update positions of the component types of the array type
 				int dimensions = ((ArrayType) type).getDimensions();
 				updateInnerPositions(type, dimensions);
@@ -5717,7 +5943,7 @@
 	private ArrayType extractSubArrayType(ArrayType arrayType, int remainingDimensions, int dimensionsToRemove) {
 		ArrayType subArrayType = arrayType;
 		int start = subArrayType.getStartPosition();
-		if (this.ast.apiLevel() < AST.JLS8) {
+		if (this.ast.apiLevel() < AST.JLS8_INTERNAL) {
 			while (dimensionsToRemove > 0 ) {
 				subArrayType = (ArrayType) componentType(subArrayType);
 				dimensionsToRemove--;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.java
index 5c7fda9..5507868 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTMatcher.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -335,7 +335,7 @@
 		}
 		ArrayType o = (ArrayType) other;
 		int level = node.getAST().apiLevel;
-		if (level < AST.JLS8) {
+		if (level < AST.JLS8_INTERNAL) {
 			return safeSubtreeMatch(componentType(node), componentType(o));
 		}
 		return safeSubtreeMatch(node.getElementType(), o.getElementType())
@@ -615,7 +615,8 @@
 		}
 		CompilationUnit o = (CompilationUnit) other;
 		return (
-			safeSubtreeMatch(node.getPackage(), o.getPackage())
+			(node.getAST().apiLevel >= AST.JLS9_INTERNAL ? safeSubtreeMatch(node.getModule(), o.getModule()) : true)
+				&& safeSubtreeMatch(node.getPackage(), o.getPackage())
 				&& safeSubtreeListMatch(node.imports(), o.imports())
 				&& safeSubtreeListMatch(node.types(), o.types()));
 	}
@@ -887,6 +888,31 @@
 	 * @return <code>true</code> if the subtree matches, or
 	 *   <code>false</code> if they do not match or the other object has a
 	 *   different node type or is <code>null</code>
+	 * @since 3.14
+	 */
+	public boolean match(ExportsDirective node, Object other) {
+		if (!(other instanceof ExportsDirective)) {
+			return false;
+		}
+		ExportsDirective o = (ExportsDirective) other;
+		return (
+			safeSubtreeMatch(node.getName(), o.getName())
+				&& safeSubtreeListMatch(node.modules(), o.modules()));
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
 	 * @since 3.10
 	 */
 	public boolean match(ExpressionMethodReference node, Object other) {
@@ -1474,12 +1500,12 @@
 								// n.b. compare return type even for constructors
 								&& safeSubtreeMatch(node.internalGetReturnType(), o.internalGetReturnType()))
 				&& safeSubtreeMatch(node.getName(), o.getName())
-				&& (level >= AST.JLS8
+				&& (level >= AST.JLS8_INTERNAL
 						? safeSubtreeMatch(node.getReceiverType(), o.getReceiverType())
 								&& safeSubtreeMatch(node.getReceiverQualifier(), o.getReceiverQualifier())
 						: true)
 				&& safeSubtreeListMatch(node.parameters(), o.parameters())
-				&& (level >= AST.JLS8
+				&& (level >= AST.JLS8_INTERNAL
 						? safeSubtreeListMatch(node.extraDimensions(), o.extraDimensions())
 								&& safeSubtreeListMatch(node.thrownExceptionTypes(), o.thrownExceptionTypes())
 						: node.getExtraDimensions() == o.getExtraDimensions()
@@ -1553,6 +1579,56 @@
 	 * @return <code>true</code> if the subtree matches, or
 	 *   <code>false</code> if they do not match or the other object has a
 	 *   different node type or is <code>null</code>
+	 * @since 3.14
+	 */
+	public boolean match(ModuleDeclaration node, Object other) {
+		if (!(other instanceof ModuleDeclaration)) {
+			return false;
+		}
+		ModuleDeclaration o = (ModuleDeclaration) other;
+		return (safeSubtreeMatch(node.getJavadoc(), o.getJavadoc())
+				&& safeSubtreeListMatch(node.annotations(), o.annotations())
+				&& node.isOpen() == o.isOpen()
+				&& safeSubtreeMatch(node.getName(), o.getName())
+				&& safeSubtreeListMatch(node.moduleStatements(), o.moduleStatements()));
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
+	 * @since 3.14
+	 */
+	public boolean match(ModuleModifier node, Object other) {
+		if (!(other instanceof ModuleModifier)) {
+			return false;
+		}
+		ModuleModifier o = (ModuleModifier) other;
+		return (node.getKeyword() == o.getKeyword());
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
 	 * @since 3.10
 	 */
 	public boolean match(NameQualifiedType node, Object other) {
@@ -1645,6 +1721,31 @@
 	 * @return <code>true</code> if the subtree matches, or
 	 *   <code>false</code> if they do not match or the other object has a
 	 *   different node type or is <code>null</code>
+	 * @since 3.14
+	 */
+	public boolean match(OpensDirective node, Object other) {
+		if (!(other instanceof OpensDirective)) {
+			return false;
+		}
+		OpensDirective o = (OpensDirective) other;
+		return (
+			safeSubtreeMatch(node.getName(), o.getName())
+				&& safeSubtreeListMatch(node.modules(), o.modules()));
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
 	 */
 	public boolean match(PackageDeclaration node, Object other) {
 		if (!(other instanceof PackageDeclaration)) {
@@ -1776,7 +1877,7 @@
 		}
 		PrimitiveType o = (PrimitiveType) other;
 		int level = node.getAST().apiLevel;
-		return (level >= AST.JLS8 ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
+		return (level >= AST.JLS8_INTERNAL ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
 				&& node.getPrimitiveTypeCode() == o.getPrimitiveTypeCode();
 	}
 
@@ -1793,6 +1894,32 @@
 	 * @return <code>true</code> if the subtree matches, or
 	 *   <code>false</code> if they do not match or the other object has a
 	 *   different node type or is <code>null</code>
+	 * @since 3.14
+
+	 */
+	public boolean match(ProvidesDirective node, Object other) {
+		if (!(other instanceof ProvidesDirective)) {
+			return false;
+		}
+		ProvidesDirective o = (ProvidesDirective) other;
+		return (
+				safeSubtreeMatch(node.getName(), o.getName())
+				&& safeSubtreeListMatch(node.implementations(), o.implementations()));
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
 	 */
 	public boolean match(QualifiedName node, Object other) {
 		if (!(other instanceof QualifiedName)) {
@@ -1825,7 +1952,32 @@
 		QualifiedType o = (QualifiedType) other;
 		int level = node.getAST().apiLevel;
 		return safeSubtreeMatch(node.getQualifier(), o.getQualifier())
-				&& (level >= AST.JLS8 ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
+				&& (level >= AST.JLS8_INTERNAL ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
+				&& safeSubtreeMatch(node.getName(), o.getName());
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
+	 *
+	 *   @since 3.14
+	 */
+	public boolean match(RequiresDirective node, Object other) {
+		if (!(other instanceof RequiresDirective)) {
+			return false;
+		}
+		RequiresDirective o = (RequiresDirective) other;
+		return safeSubtreeListMatch(node.modifiers(), o.modifiers())
 				&& safeSubtreeMatch(node.getName(), o.getName());
 	}
 
@@ -1893,7 +2045,7 @@
 		}
 		SimpleType o = (SimpleType) other;
 		int level = node.getAST().apiLevel;
-		return (level >= AST.JLS8 ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
+		return (level >= AST.JLS8_INTERNAL ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
 				&& safeSubtreeMatch(node.getName(), o.getName());
 	}
 
@@ -1949,14 +2101,14 @@
 						? safeSubtreeListMatch(node.modifiers(), o.modifiers())
 						: node.getModifiers() == o.getModifiers())
 				&& safeSubtreeMatch(node.getType(), o.getType())
-				&& (level >= AST.JLS8 && node.isVarargs()
+				&& (level >= AST.JLS8_INTERNAL && node.isVarargs()
 						? safeSubtreeListMatch(node.varargsAnnotations(), o.varargsAnnotations())
 						: true)
 				&& (level >= AST.JLS3_INTERNAL
 						? node.isVarargs() == o.isVarargs()
 						: true)
 				&& safeSubtreeMatch(node.getName(), o.getName())
-				&& ((level >= AST.JLS8)
+				&& ((level >= AST.JLS8_INTERNAL)
 						? safeSubtreeListMatch(node.extraDimensions(), o.extraDimensions())
 						: node.getExtraDimensions() == o.getExtraDimensions())
 				&& safeSubtreeMatch(node.getInitializer(), o.getInitializer());
@@ -2424,7 +2576,7 @@
 		}
 		TypeParameter o = (TypeParameter) other;
 		int level = node.getAST().apiLevel;
-		return (level >= AST.JLS8 ? safeSubtreeListMatch(node.modifiers(), o.modifiers()) : true)
+		return (level >= AST.JLS8_INTERNAL ? safeSubtreeListMatch(node.modifiers(), o.modifiers()) : true)
 				&& safeSubtreeMatch(node.getName(), o.getName())
 				&& safeSubtreeListMatch(node.typeBounds(), o.typeBounds());
 	}
@@ -2465,6 +2617,29 @@
 	 * @return <code>true</code> if the subtree matches, or
 	 *   <code>false</code> if they do not match or the other object has a
 	 *   different node type or is <code>null</code>
+	 * @since 3.14
+	 */
+	public boolean match(UsesDirective node, Object other) {
+		if (!(other instanceof UsesDirective)) {
+			return false;
+		}
+		UsesDirective o = (UsesDirective) other;
+		return safeSubtreeMatch(node.getName(), o.getName());
+	}
+
+	/**
+	 * Returns whether the given node and the other object match.
+	 * <p>
+	 * The default implementation provided by this class tests whether the
+	 * other object is a node of the same type with structurally isomorphic
+	 * child subtrees. Subclasses may override this method as needed.
+	 * </p>
+	 *
+	 * @param node the node
+	 * @param other the other object, or <code>null</code>
+	 * @return <code>true</code> if the subtree matches, or
+	 *   <code>false</code> if they do not match or the other object has a
+	 *   different node type or is <code>null</code>
 	 */
 	public boolean match(VariableDeclarationExpression node, Object other) {
 		if (!(other instanceof VariableDeclarationExpression)) {
@@ -2511,7 +2686,7 @@
 		VariableDeclarationFragment o = (VariableDeclarationFragment) other;
 		int level = node.getAST().apiLevel;
 		return safeSubtreeMatch(node.getName(), o.getName())
-				&& (level >= AST.JLS8
+				&& (level >= AST.JLS8_INTERNAL
 						? safeSubtreeListMatch(node.extraDimensions(), o.extraDimensions())
 						: node.getExtraDimensions() == o.getExtraDimensions())
 				&& safeSubtreeMatch(node.getInitializer(), o.getInitializer());
@@ -2596,7 +2771,7 @@
 		}
 		WildcardType o = (WildcardType) other;
 		int level = node.getAST().apiLevel;
-		return (level >= AST.JLS8 ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
+		return (level >= AST.JLS8_INTERNAL ? safeSubtreeListMatch(node.annotations(), o.annotations()) : true)
 				&& node.isUpperBound() == o.isUpperBound()
 				&& safeSubtreeMatch(node.getBound(), o.getBound());
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.java
index 9cce7a9..0f48d40 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTNode.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -897,6 +897,62 @@
 	public static final int TYPE_METHOD_REFERENCE = 92;
 
 	/**
+	 * Node type constant indicating a node of type
+	 * <code>ModuleDeclaration</code>.
+	 * @see ModuleDeclaration
+	 * @since 3.14
+	 */
+	public static final int MODULE_DECLARATION = 93;
+
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>RequiresDirective</code>.
+	 * @see RequiresDirective
+	 * @since 3.14
+	 */
+	public static final int REQUIRES_DIRECTIVE = 94;
+	
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>ExportsDirective</code>.
+	 * @see ExportsDirective
+	 * @since 3.14
+	 */
+	public static final int EXPORTS_DIRECTIVE = 95;
+
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>OpensDirective</code>.
+	 * @see OpensDirective
+	 * @since 3.14
+	 */
+	public static final int OPENS_DIRECTIVE = 96;
+	
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>UsesDirective</code>.
+	 * @see UsesDirective
+	 * @since 3.14
+	 */
+	public static final int USES_DIRECTIVE = 97;
+
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>ProvidesDirective</code>.
+	 * @see ProvidesDirective
+	 * @since 3.14
+	 */
+	public static final int PROVIDES_DIRECTIVE = 98;
+
+	/**
+	 * Node type constant indicating a node of type
+	 * <code>ModuleModifier</code>.
+	 * @see ModuleModifier
+	 * @since 3.14
+	 */
+	public static final int MODULE_MODIFIER = 99;
+
+	/**
 	 * Returns the node class for the corresponding node type.
 	 *
 	 * @param nodeType AST node type
@@ -964,6 +1020,8 @@
 				return EnumConstantDeclaration.class;
 			case ENUM_DECLARATION :
 				return EnumDeclaration.class;
+			case EXPORTS_DIRECTIVE :
+				return ExportsDirective.class;
 			case EXPRESSION_METHOD_REFERENCE :
 				return ExpressionMethodReference.class;
 			case EXPRESSION_STATEMENT :
@@ -1010,6 +1068,10 @@
 				return MethodRefParameter.class;
 			case MODIFIER :
 				return Modifier.class;
+			case MODULE_DECLARATION :
+				return ModuleDeclaration.class;
+			case MODULE_MODIFIER :
+				return ModuleModifier.class;
 			case NAME_QUALIFIED_TYPE :
 				return NameQualifiedType.class;
 			case NORMAL_ANNOTATION :
@@ -1018,6 +1080,8 @@
 				return NullLiteral.class;
 			case NUMBER_LITERAL :
 				return NumberLiteral.class;
+			case OPENS_DIRECTIVE :
+				return OpensDirective.class;
 			case PACKAGE_DECLARATION :
 				return PackageDeclaration.class;
 			case PARAMETERIZED_TYPE :
@@ -1030,10 +1094,14 @@
 				return PrefixExpression.class;
 			case PRIMITIVE_TYPE :
 				return PrimitiveType.class;
+			case PROVIDES_DIRECTIVE :
+				return ProvidesDirective.class;
 			case QUALIFIED_NAME :
 				return QualifiedName.class;
 			case QUALIFIED_TYPE :
 				return QualifiedType.class;
+			case REQUIRES_DIRECTIVE :
+				return RequiresDirective.class;
 			case RETURN_STATEMENT :
 				return ReturnStatement.class;
 			case SIMPLE_NAME :
@@ -1082,6 +1150,8 @@
 				return TypeParameter.class;
 			case UNION_TYPE :
 				return UnionType.class;
+			case USES_DIRECTIVE :
+				return UsesDirective.class;
 			case VARIABLE_DECLARATION_EXPRESSION :
 				return VariableDeclarationExpression.class;
 			case VARIABLE_DECLARATION_FRAGMENT :
@@ -1288,25 +1358,19 @@
 			 */
 			private int position = 0;
 
-			/* (non-Javadoc)
-			 * Method declared on <code>Iterator</code>.
-			 */
+			@Override
 			public boolean hasNext() {
 				return this.position < NodeList.this.store.size();
 			}
 
-			/* (non-Javadoc)
-			 * Method declared on <code>Iterator</code>.
-			 */
+			@Override
 			public Object next() {
 				Object result = NodeList.this.store.get(this.position);
 				this.position++;
 				return result;
 		    }
 
-			/* (non-Javadoc)
-			 * Method declared on <code>Iterator</code>.
-			 */
+			@Override
 			public void remove() {
 				throw new UnsupportedOperationException();
 			}
@@ -1355,23 +1419,17 @@
 			this.propertyDescriptor = property;
 		}
 
-		/* (non-javadoc)
-		 * @see java.util.AbstractCollection#size()
-		 */
+		@Override
 		public int size() {
 			return this.store.size();
 		}
 
-		/* (non-javadoc)
-		 * @see AbstractList#get(int)
-		 */
+		@Override
 		public Object get(int index) {
 			return this.store.get(index);
 		}
 
-		/* (non-javadoc)
-		 * @see List#set(int, java.lang.Object)
-		 */
+		@Override
 		public Object set(int index, Object element) {
 		    if (element == null) {
 		        throw new IllegalArgumentException();
@@ -1401,9 +1459,7 @@
 			return result;
 		}
 
-		/* (non-javadoc)
-		 * @see List#add(int, java.lang.Object)
-		 */
+		@Override
 		public void add(int index, Object element) {
 		    if (element == null) {
 		        throw new IllegalArgumentException();
@@ -1425,9 +1481,7 @@
 			ASTNode.this.ast.postAddChildEvent(ASTNode.this, newChild, this.propertyDescriptor);
 		}
 
-		/* (non-javadoc)
-		 * @see List#remove(int)
-		 */
+		@Override
 		public Object remove(int index) {
 			if ((ASTNode.this.typeAndFlags & PROTECT) != 0) {
 				// this node is protected => cannot gain or lose children
@@ -1964,18 +2018,48 @@
 	 * @since 3.10
 	 */
 	final void unsupportedIn2_3_4() {
-		if (this.ast.apiLevel < AST.JLS8) {
+		if (this.ast.apiLevel < AST.JLS8_INTERNAL) {
 			throw new UnsupportedOperationException("Operation only supported in JLS8 and later AST"); //$NON-NLS-1$
 		}
 	}
-	
+
+	/**
+     * Checks that this AST operation is not used when
+     * building JLS2, JLS3, JLS4 or JLS8 level ASTs.
+     * <p>
+     * Use this method to prevent access to new properties that have been added in JLS9.
+     * </p>
+     *
+	 * @exception UnsupportedOperationException if this operation is used below JLS9
+	 * @since 3.14
+	 */
+	final void unsupportedBelow9() {
+		if (this.ast.apiLevel < AST.JLS9_INTERNAL) {
+			throw new UnsupportedOperationException("Operation only supported in JLS9 and later AST"); //$NON-NLS-1$
+		}
+	}
+	/**
+     * Checks that this AST operation is not used when
+     * building JLS2, JLS3, JLS4, JLS8 or JLS9 level ASTs.
+     * <p>
+     * Use this method to prevent access to new properties that have been added in JLS10
+     * </p>
+     *
+	 * @exception UnsupportedOperationException if this operation is used below JLS10
+	 * @since 3.14
+	 */
+	final void unsupportedBelow10() {
+		if (this.ast.apiLevel < AST.JLS10_INTERNAL) {
+			throw new UnsupportedOperationException("Operation only supported in ASTs with level JLS10 and above"); //$NON-NLS-1$
+		}
+	}
 	/**
      * Checks that this AST operation is only used when
      * building JLS2 level ASTs.
      * <p>
      * Use this method to prevent access to deprecated properties (deprecated in JLS3).
      * </p>
-     * 
+     *
 	 * @exception UnsupportedOperationException if this operation is used in an AST later than JLS2
 	 * @since 3.0
      */
@@ -1998,7 +2082,7 @@
      */
 	// In API Javadocs, add: * @deprecated In the JLS8 API, this method is replaced by {@link #replacement()}.
 	final void supportedOnlyIn2_3_4() {
-	  if (this.ast.apiLevel >= AST.JLS8) {
+	  if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 	  	throw new UnsupportedOperationException("Operation only supported in JLS2, JLS3 and JLS4 ASTs"); //$NON-NLS-1$
 	  }
 	}
@@ -2093,7 +2177,7 @@
 		Class childClass = newChild.getClass();
 		if (nodeType != null && !nodeType.isAssignableFrom(childClass)) {
 			// new child is not of the right type
-			throw new ClassCastException();
+			throw new ClassCastException(childClass + " is not an instance of " + nodeType); //$NON-NLS-1$
 		}
 		if ((newChild.typeAndFlags & PROTECT) != 0) {
 			// new child node is protected => cannot be parented
@@ -2535,6 +2619,7 @@
 	 * @return {@inheritDoc}
 	 * @see #subtreeMatch(ASTMatcher matcher, Object other)
 	 */
+	@Override
 	public final boolean equals(Object obj) {
 		return this == obj; // equivalent to Object.equals
 	}
@@ -2544,6 +2629,7 @@
 	 * This makes it consistent with the fact that a equals methods has been provided.
 	 * @see java.lang.Object#hashCode()
 	 */
+	@Override
 	public final int hashCode() {
 		return super.hashCode();
 	}
@@ -2860,6 +2946,7 @@
 	 *
 	 * @return a debug string
 	 */
+	@Override
 	public final String toString() {
 		StringBuffer buffer = new StringBuffer();
 		int p = buffer.length();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.java
index 8453f12..44e5bea 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTParser.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2004, 2016 IBM Corporation and others.
+ * Copyright (c) 2004, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,6 +36,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveryScanner;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveryScannerData;
@@ -263,7 +265,9 @@
 			case AST.JLS2_INTERNAL:
 			case AST.JLS3_INTERNAL:
 			case AST.JLS4_INTERNAL:
-			case AST.JLS8:
+			case AST.JLS8_INTERNAL:
+			case AST.JLS9_INTERNAL:
+			case AST.JLS10_INTERNAL:
 				break;
 			default:
 				throw new IllegalArgumentException();
@@ -272,9 +276,9 @@
 		initializeDefaults();
 	}
 
-	private List getClasspath() throws IllegalStateException {
+	private List<Classpath> getClasspath() throws IllegalStateException {
 		Main main = new Main(new PrintWriter(System.out), new PrintWriter(System.err), false/*systemExit*/, null/*options*/, null/*progress*/);
-		ArrayList allClasspaths = new ArrayList();
+		ArrayList<Classpath> allClasspaths = new ArrayList<Classpath>();
 		try {
 			if ((this.bits & CompilationUnitResolver.INCLUDE_RUNNING_VM_BOOTCLASSPATH) != 0) {
 				org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.collectRunningVMBootclasspath(allClasspaths);
@@ -784,6 +788,10 @@
 	 * {@link JavaCore#getJavaLikeExtensions() Java-like extensions}
 	 * and match the name of the main (public) class or interface declared in the source.</p>
 	 *
+	 * <p>
+	 * For compilation of a module-info.java file (since Java 9), the name of the compilation unit must be supplied.
+	 * Otherwise, module-info.java will be compiled as an ordinary Java file resulting in compilation errors.</p>
+	 *
 	 * <p>This name must represent the full path of the unit inside the given project. For example, if the source
 	 * declares a public class named "Foo" in a project "P" where the source folder is the project itself, the name
 	 * of the compilation unit must be "/P/Foo.java".
@@ -835,6 +843,9 @@
 	 * A successful call to this method returns all settings to their
 	 * default values so the object is ready to be reused.
 	 * </p>
+	 * <p>For identifying a module-info.java file as a special file instead of an ordinary 
+	 * Java file (Since Java 9), a call to this should be preceded by a call to 
+	 * {@link #setUnitName(String)} that sets the unit name as module-info.java</p>
 	 *
 	 * @param monitor the progress monitor used to report progress and request cancellation,
 	 *   or <code>null</code> if none
@@ -1173,19 +1184,27 @@
 							}
 							PackageFragment packageFragment = (PackageFragment) this.typeRoot.getParent();
 							BinaryType type = (BinaryType) this.typeRoot.findPrimaryType();
-							IBinaryType binaryType = (IBinaryType) type.getElementInfo();
-							// file name is used to recreate the Java element, so it has to be the toplevel .class file name
-							char[] fileName = binaryType.getFileName();
-							int firstDollar = CharOperation.indexOf('$', fileName);
-							if (firstDollar != -1) {
-								char[] suffix = SuffixConstants.SUFFIX_class;
-								int suffixLength = suffix.length;
-								char[] newFileName = new char[firstDollar + suffixLength];
-								System.arraycopy(fileName, 0, newFileName, 0, firstDollar);
-								System.arraycopy(suffix, 0, newFileName, firstDollar, suffixLength);
-								fileName = newFileName;
+							String fileNameString = null;
+							if (type != null) {
+								IBinaryType binaryType = (IBinaryType) type.getElementInfo();
+								// file name is used to recreate the Java element, so it has to be the toplevel .class file name
+								char[] fileName = binaryType.getFileName();
+
+								int firstDollar = CharOperation.indexOf('$', fileName);
+								if (firstDollar != -1) {
+									char[] suffix = SuffixConstants.SUFFIX_class;
+									int suffixLength = suffix.length;
+									char[] newFileName = new char[firstDollar + suffixLength];
+									System.arraycopy(fileName, 0, newFileName, 0, firstDollar);
+									System.arraycopy(suffix, 0, newFileName, firstDollar, suffixLength);
+									fileName = newFileName;
+								}
+								fileNameString = new String(fileName);
+							} else {
+								// assumed to be "module-info.class" (which has no type):
+								fileNameString = this.typeRoot.getElementName();
 							}
-							sourceUnit = new BasicCompilationUnit(sourceString.toCharArray(), Util.toCharArrays(packageFragment.names), new String(fileName), this.project);
+							sourceUnit = new BasicCompilationUnit(sourceString.toCharArray(), Util.toCharArrays(packageFragment.names), fileNameString, this.typeRoot);
 						} catch(JavaModelException e) {
 							// an error occured accessing the java element
 							StringWriter stringWriter = new StringWriter();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java
index 32d8a34..cc30b14 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTRecoveryPropagator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2014 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -51,6 +51,8 @@
 		this.endingTokens.put(Initializer.class, new int[]{TerminalTokens.TokenNameRBRACE});
 		this.endingTokens.put(MethodDeclaration.class, new int[]{NOTHING, TerminalTokens.TokenNameSEMICOLON});
 		this.endingTokens.put(MethodInvocation.class, new int[]{TerminalTokens.TokenNameRPAREN});
+		this.endingTokens.put(ModuleDeclaration.class, new int[]{TerminalTokens.TokenNameRBRACE});
+		this.endingTokens.put(ModuleDirective.class, new int[]{TerminalTokens.TokenNameSEMICOLON});
 		this.endingTokens.put(NullLiteral.class, new int[]{TerminalTokens.TokenNamenull});
 		this.endingTokens.put(NumberLiteral.class, new int[]{TerminalTokens.TokenNameIntegerLiteral, TerminalTokens.TokenNameLongLiteral, TerminalTokens.TokenNameFloatingPointLiteral, TerminalTokens.TokenNameDoubleLiteral});
 		this.endingTokens.put(PackageDeclaration.class, new int[]{TerminalTokens.TokenNameSEMICOLON});
@@ -123,6 +125,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(Block node) {
 		this.blockDepth--;
 		if(this.blockDepth <= 0) {
@@ -133,12 +136,14 @@
 
 
 
+	@Override
 	public boolean visit(Block node) {
 		boolean visitChildren = super.visit(node);
 		this.blockDepth++;
 		return visitChildren;
 	}
 
+	@Override
 	protected boolean visitNode(ASTNode node) {
 		if(this.blockDepth > 0) {
 			int start = node.getStartPosition();
@@ -178,6 +183,7 @@
 		return true;
 	}
 
+	@Override
 	protected void endVisitNode(ASTNode node) {
 		int start = node.getStartPosition();
 		int end = start + node.getLength() - 1;
@@ -192,6 +198,7 @@
 				case ASTNode.IMPORT_DECLARATION:
 				case ASTNode.INITIALIZER:
 				case ASTNode.METHOD_DECLARATION:
+				case ASTNode.MODULE_DECLARATION:
 				case ASTNode.PACKAGE_DECLARATION:
 				case ASTNode.TYPE_DECLARATION:
 				case ASTNode.MARKER_ANNOTATION:
@@ -356,6 +363,7 @@
 		return foundProblems;
 	}
 
+	@Override
 	public void endVisit(ExpressionStatement node) {
 		endVisitNode(node);
 		if ((node.getFlags() & ASTNode.RECOVERED) == 0) return;
@@ -376,6 +384,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(ForStatement node) {
 		endVisitNode(node);
 		List initializers = node.initializers();
@@ -396,6 +405,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(VariableDeclarationStatement node) {
 		endVisitNode(node);
 		List fragments = node.fragments();
@@ -414,6 +424,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(NormalAnnotation node) {
 		endVisitNode(node);
 		// is inside diet part of the ast
@@ -432,6 +443,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(SingleMemberAnnotation node) {
 		endVisitNode(node);
 		// is inside diet part of the ast
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.java
index 7af8e5b..ff80ae2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTSyntaxErrorPropagator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -82,65 +82,52 @@
 		return tagWithErrors;
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(FieldDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		return checkAndTagAsMalformed(node);
+	}
+
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(CompilationUnit node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		return checkAndTagAsMalformed(node);
 	}
 
-	/*
-	 * Method declared on ASTVisitor.
-	 */
+	@Override
 	public boolean visit(Initializer node) {
 		return checkAndTagAsMalformed(node);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.java
index 88faf78..cb31d6d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ASTVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -655,6 +655,23 @@
 	 * @return <code>true</code> if the children of this node should be
 	 * visited, and <code>false</code> if the children of this node should
 	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(ExportsDirective node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
+	 * Subclasses may re-implement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
 	 * @since 3.10
 	 */
 	public boolean visit(ExpressionMethodReference node) {
@@ -1052,6 +1069,40 @@
 	 * @return <code>true</code> if the children of this node should be
 	 * visited, and <code>false</code> if the children of this node should
 	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(ModuleDeclaration node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
+	 * Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(ModuleModifier node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
+	 * Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
 	 * @since 3.10
 	 */
 	public boolean visit(NameQualifiedType node) {
@@ -1111,6 +1162,23 @@
 	 * Visits the given type-specific AST node.
 	 * <p>
 	 * The default implementation does nothing and return true.
+	 * Subclasses may re-implement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(OpensDirective node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
 	 * Subclasses may reimplement.
 	 * </p>
 	 *
@@ -1192,6 +1260,23 @@
 	 * Visits the given type-specific AST node.
 	 * <p>
 	 * The default implementation does nothing and return true.
+	 * Subclasses may re-implement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(ProvidesDirective node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
 	 * Subclasses may reimplement.
 	 * </p>
 	 *
@@ -1241,6 +1326,23 @@
 	 * Visits the given type-specific AST node.
 	 * <p>
 	 * The default implementation does nothing and return true.
+	 * Subclasses may re-implement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(RequiresDirective node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
 	 * Subclasses may reimplement.
 	 * </p>
 	 *
@@ -1637,6 +1739,23 @@
 	 * Visits the given type-specific AST node.
 	 * <p>
 	 * The default implementation does nothing and return true.
+	 * Subclasses may re-implement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @return <code>true</code> if the children of this node should be
+	 * visited, and <code>false</code> if the children of this node should
+	 * be skipped
+	 * @since 3.14
+	 */
+	public boolean visit(UsesDirective node) {
+		return true;
+	}
+
+	/**
+	 * Visits the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing and return true.
 	 * Subclasses may reimplement.
 	 * </p>
 	 *
@@ -2057,6 +2176,19 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(ExportsDirective node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 * @since 3.10
 	 */
 	public void endVisit(ExpressionMethodReference node) {
@@ -2348,6 +2480,32 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(ModuleDeclaration node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(ModuleModifier node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 * @since 3.10
 	 */
 	public void endVisit(NameQualifiedType node) {
@@ -2398,6 +2556,19 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(OpensDirective node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 */
 	public void endVisit(PackageDeclaration node) {
 		// default implementation: do nothing
@@ -2471,6 +2642,19 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(ProvidesDirective node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 */
 	public void endVisit(QualifiedName node) {
 		// default implementation: do nothing
@@ -2496,6 +2680,19 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(RequiresDirective node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 */
 	public void endVisit(ReturnStatement node) {
 		// default implementation: do nothing
@@ -2791,6 +2988,19 @@
 	 * </p>
 	 *
 	 * @param node the node to visit
+	 * @since 3.14
+	 */
+	public void endVisit(UsesDirective node) {
+		// default implementation: do nothing
+	}
+
+	/**
+	 * End of visit the given type-specific AST node.
+	 * <p>
+	 * The default implementation does nothing. Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param node the node to visit
 	 * @since 3.10
 	 */
 	public void endVisit(IntersectionType node) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.java
index 4c476cc..4041b8a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AbstractTypeDeclaration.java
@@ -247,9 +247,7 @@
 	 */
 	abstract ITypeBinding internalResolveBinding();
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.java
index b164e8f..1adb58a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotatableType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -75,7 +75,7 @@
 	 */
 	AnnotatableType(AST ast) {
 		super(ast);
-		if (ast.apiLevel >= AST.JLS8) {
+		if (ast.apiLevel >= AST.JLS8_INTERNAL) {
 			this.annotations = new ASTNode.NodeList(getAnnotationsProperty());
 		}
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Annotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Annotation.java
index 63f6801..bab5699 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Annotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Annotation.java
@@ -75,6 +75,7 @@
 	/**
 	 * @see IExtendedModifier#isModifier()
 	 */
+	@Override
 	public boolean isModifier() {
 		return false;
 	}
@@ -82,6 +83,7 @@
 	/**
 	 * @see IExtendedModifier#isAnnotation()
 	 */
+	@Override
 	public boolean isAnnotation() {
 		return true;
 	}
@@ -159,9 +161,7 @@
 		return (this instanceof SingleMemberAnnotation);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.java
index 053d818..741c9e4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 BEA Systems, Inc.
+ * Copyright (c) 2005, 2017 BEA Systems, Inc, IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,10 +39,12 @@
 		this.bindingResolver = resolver;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		return NoAnnotations;
 	}
 
+	@Override
 	public ITypeBinding getAnnotationType() {
 		ITypeBinding typeBinding = this.bindingResolver.getTypeBinding(this.binding.getAnnotationType());
 		if (typeBinding == null)
@@ -50,6 +52,7 @@
 		return typeBinding;
 	}
 
+	@Override
 	public IMemberValuePairBinding[] getDeclaredMemberValuePairs() {
 		ReferenceBinding typeBinding = this.binding.getAnnotationType();
 		if (typeBinding == null || ((typeBinding.tagBits & TagBits.HasMissingType) != 0)) {
@@ -72,6 +75,7 @@
 		return pairs;
 	}
 
+	@Override
 	public IMemberValuePairBinding[] getAllMemberValuePairs() {
 		IMemberValuePairBinding[] pairs = getDeclaredMemberValuePairs();
 		ReferenceBinding typeBinding = this.binding.getAnnotationType();
@@ -100,6 +104,7 @@
 		return allPairs;
 	}
 
+	@Override
 	public IJavaElement getJavaElement() {
 		if (!(this.bindingResolver instanceof DefaultBindingResolver)) return null;
 		ASTNode node = (ASTNode) ((DefaultBindingResolver) this.bindingResolver).bindingsToAstNodes.get(this);
@@ -132,6 +137,11 @@
 				if (methodBinding == null) return null;
 				parentElement = methodBinding.getJavaElement();
 			break;
+		case ASTNode.MODULE_DECLARATION:
+			IModuleBinding moduleBinding = ((ModuleDeclaration) parent).resolveBinding();
+			if (moduleBinding == null) return null;
+			parentElement = moduleBinding.getJavaElement();
+		break;
 		case ASTNode.VARIABLE_DECLARATION_STATEMENT:
 			fragment = (VariableDeclarationFragment) ((VariableDeclarationStatement) parent).fragments().get(0);
 			variableBinding = fragment.resolveBinding();
@@ -150,6 +160,7 @@
 		return ((IAnnotatable) parentElement).getAnnotation(getName());
 	}
 
+	@Override
 	public String getKey() {
 		if (this.key == null) {
 			String recipientKey = getRecipientKey();
@@ -178,6 +189,8 @@
 			return fragment.resolveBinding().getKey();
 		case ASTNode.METHOD_DECLARATION:
 			return ((MethodDeclaration) recipient).resolveBinding().getKey();
+		case ASTNode.MODULE_DECLARATION:
+			return ((ModuleDeclaration) recipient).resolveBinding().getKey();
 		case ASTNode.VARIABLE_DECLARATION_STATEMENT:
 			fragment = (VariableDeclarationFragment) ((VariableDeclarationStatement) recipient).fragments().get(0);
 			return fragment.resolveBinding().getKey();
@@ -186,14 +199,17 @@
 		}
 	}
 
+	@Override
 	public int getKind() {
 		return IBinding.ANNOTATION;
 	}
 
+	@Override
 	public int getModifiers() {
 		return Modifier.NONE;
 	}
 
+	@Override
 	public String getName() {
 		ITypeBinding annotationType = getAnnotationType();
 		if (annotationType == null) {
@@ -203,12 +219,14 @@
 		}
 	}
 
+	@Override
 	public boolean isDeprecated() {
 		ReferenceBinding typeBinding = this.binding.getAnnotationType();
 		if (typeBinding == null) return false;
 		return typeBinding.isDeprecated();
 	}
 
+	@Override
 	public boolean isEqualTo(IBinding otherBinding) {
 		if (this == otherBinding)
 			return true;
@@ -228,18 +246,17 @@
 		return true;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isRecovered()
-	 */
+	@Override
 	public boolean isRecovered() {
         ReferenceBinding annotationType = this.binding.getAnnotationType();
         return annotationType == null || (annotationType.tagBits & TagBits.HasMissingType) != 0;	}
 
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
 
+	@Override
 	public String toString() {
 		ITypeBinding type = getAnnotationType();
 		final StringBuffer buffer = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.java
index 601c68c..ab2e996 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeDeclaration.java
@@ -119,16 +119,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -150,9 +146,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -164,52 +158,38 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		// this property will not be asked for (node type did not exist in JLS2)
 		return null;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalNameProperty() {
 		return NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalBodyDeclarationsProperty() {
 		return BODY_DECLARATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ANNOTATION_TYPE_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		AnnotationTypeDeclaration result = new AnnotationTypeDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -221,17 +201,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -244,23 +220,17 @@
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AsbtractTypeDeclaration.
-	 */
+	@Override
 	ITypeBinding internalResolveBinding() {
 		return this.ast.getBindingResolver().resolveType(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.java
index 5689f16..04905fb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnnotationTypeMemberDeclaration.java
@@ -135,16 +135,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -182,9 +178,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -193,38 +187,28 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		// this property will not be asked for (node type did not exist in JLS2)
 		return null;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ANNOTATION_TYPE_MEMBER_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		AnnotationTypeMemberDeclaration result = new AnnotationTypeMemberDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -237,17 +221,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -387,16 +367,12 @@
 		return this.ast.getBindingResolver().resolveMember(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.java
index b091241..890ef82 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AnonymousClassDeclaration.java
@@ -90,16 +90,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == BODY_DECLARATIONS_PROPERTY) {
 			return bodyDeclarations();
@@ -108,16 +104,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ANONYMOUS_CLASS_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		AnonymousClassDeclaration result = new AnonymousClassDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -126,17 +118,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -172,17 +160,13 @@
 		return this.ast.getBindingResolver().resolveType(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.java
index 851bb88..a861dd5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayAccess.java
@@ -98,16 +98,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == ARRAY_PROPERTY) {
 			if (get) {
@@ -129,16 +125,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ARRAY_ACCESS;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ArrayAccess result = new ArrayAccess(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -147,17 +139,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -252,16 +240,12 @@
 		postReplaceChild(oldChild, expression, INDEX_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.java
index b70501c..a3f73ab 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayCreation.java
@@ -123,16 +123,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == INITIALIZER_PROPERTY) {
 			if (get) {
@@ -154,9 +150,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == DIMENSIONS_PROPERTY) {
 			return dimensions();
@@ -165,16 +159,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ARRAY_CREATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ArrayCreation result = new ArrayCreation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -185,17 +175,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -291,16 +277,12 @@
 		postReplaceChild(oldChild, initializer, INITIALIZER_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		int size = memSize()
 			+ (this.arrayType == null ? 0 : getType().treeSize())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.java
index dd81caf..177b3a0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayInitializer.java
@@ -81,16 +81,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == EXPRESSIONS_PROPERTY) {
 			return expressions();
@@ -99,16 +95,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ARRAY_INITIALIZER;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ArrayInitializer result = new ArrayInitializer(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -116,17 +108,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -145,16 +133,12 @@
 		return this.expressions;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize() + this.expressions.listSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.java
index 94fc4f7..f6a5aa1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ArrayType.java
@@ -144,7 +144,7 @@
 	 */
 	ArrayType(AST ast) {
 		super(ast);
-		if (ast.apiLevel >= AST.JLS8) {
+		if (ast.apiLevel >= AST.JLS8_INTERNAL) {
 			this.dimensions = new ASTNode.NodeList(DIMENSIONS_PROPERTY);
 			// single dimension array is the default
 			this.dimensions().add(this.ast.newDimension());
@@ -171,16 +171,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == DIMENSIONS_PROPERTY) {
 			return dimensions();
@@ -188,10 +184,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == COMPONENT_TYPE_PROPERTY) {
 			if (get) {
@@ -212,19 +206,15 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ARRAY_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ArrayType result;
-		if (this.ast.apiLevel < AST.JLS8) {
+		if (this.ast.apiLevel < AST.JLS8_INTERNAL) {
 			result = new ArrayType(target);
 			result.setComponentType((Type) getComponentType().clone(target));			
 		} else {
@@ -237,22 +227,18 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
-			if (this.ast.apiLevel < AST.JLS8) {
+			if (this.ast.apiLevel < AST.JLS8_INTERNAL) {
 				acceptChild(visitor, getComponentType());				
 			} else {
 				acceptChild(visitor, getElementType());
@@ -332,7 +318,7 @@
 	 * @return the element type node
 	 */
 	public Type getElementType() {
-		if (this.ast.apiLevel() < AST.JLS8) {
+		if (this.ast.apiLevel() < AST.JLS8_INTERNAL) {
 			Type t = getComponentType();
 			while (t.isArrayType()) {
 				t = ((ArrayType) t).getComponentType();
@@ -376,7 +362,7 @@
 	 * @return the number of dimensions (always positive)
 	 */
 	public int getDimensions() {
-		if (this.ast.apiLevel() >= AST.JLS8) {
+		if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 			return dimensions().size();
 		}
 		Type t = getComponentType();
@@ -406,20 +392,16 @@
 		return this.dimensions;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
-			+ (this.type == null ? 0 : (this.ast.apiLevel() < AST.JLS8 ? getComponentType().treeSize() : getElementType().treeSize())
+			+ (this.type == null ? 0 : (this.ast.apiLevel() < AST.JLS8_INTERNAL ? getComponentType().treeSize() : getElementType().treeSize())
 			+ (this.dimensions == null ? 0 : this.dimensions.listSize()));
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.java
index e46c160..1a55a94 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/AssertStatement.java
@@ -97,16 +97,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -128,16 +124,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ASSERT_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		AssertStatement result = new AssertStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -149,17 +141,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -242,16 +230,12 @@
 		postReplaceChild(oldChild, expression, MESSAGE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Assignment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Assignment.java
index b6df623..a843bb0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Assignment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Assignment.java
@@ -73,6 +73,7 @@
 		 *
 		 * @return the character sequence for the operator
 		 */
+		@Override
 		public String toString() {
 			return this.op;
 		}
@@ -228,16 +229,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == OPERATOR_PROPERTY) {
 			if (get) {
@@ -251,9 +248,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LEFT_HAND_SIDE_PROPERTY) {
 			if (get) {
@@ -275,16 +270,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ASSIGNMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Assignment result = new Assignment(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -294,17 +285,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -421,17 +408,13 @@
 		postReplaceChild(oldChild, expression, RIGHT_HAND_SIDE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.java
index 26cab40..e2918ed 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingComparator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2013 IBM Corporation and others.
+ * Copyright (c) 2004, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -101,6 +101,13 @@
 			return importBinding.isStatic() == importBinding2.isStatic()
 				&& importBinding.onDemand == importBinding2.onDemand
 				&& CharOperation.equals(importBinding.compoundName, importBinding2.compoundName);
+		} else if (declaringElement instanceof org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding) {
+			if (!(declaringElement2 instanceof org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding)) {
+				return false;
+			}
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding = (org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding) declaringElement;
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding2 = (org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding) declaringElement2;
+			return isEqual(moduleBinding, moduleBinding2);
 		}
 		return false;
 	}
@@ -125,6 +132,18 @@
 				&& isEqual(methodBinding.parameters, methodBinding2.parameters, visitedTypes);
 	}
 
+	/*
+	 * Assumption here is that there is only one module with the same name.
+	 */
+	static boolean isEqual(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding,
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding2) {
+		if (moduleBinding == null)
+			return moduleBinding2 == null;
+		if (moduleBinding2 == null)
+			return false;
+		return CharOperation.equals(moduleBinding.moduleName, moduleBinding2.moduleName); 
+	}
+
 	static boolean isEqual(VariableBinding variableBinding, VariableBinding variableBinding2) {
 		return (variableBinding.modifiers & ExtraCompilerModifiers.AccJustFlag) == (variableBinding2.modifiers & ExtraCompilerModifiers.AccJustFlag)
 				&& CharOperation.equals(variableBinding.name, variableBinding2.name)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.java
index 796aa38..793be65 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BindingResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -154,6 +154,21 @@
 	}
 
 	/**
+	 * Returns the new module binding corresponding to the given old module binding.
+	 * <p>
+	 * The default implementation of this method returns <code>null</code>.
+	 * Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param moduleBinding the old module binding
+	 * @return the new module binding
+	 *
+	 */
+	IModuleBinding getModuleBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding) {
+		return null;
+	}
+
+	/**
 	 * Returns the new package binding corresponding to the given old package binding.
 	 * <p>
 	 * The default implementation of this method returns <code>null</code>.
@@ -662,6 +677,29 @@
 	}
 
 	/**
+	 * Resolves the given module declaration and returns the binding for it.
+	 * <p>
+	 * The implementation of <code>ModuleDeclaration.resolveBinding</code>
+	 * forwards to this method. How the method resolves is often a function of
+	 * the context in which the method declaration node is embedded as well as
+	 * the method declaration subtree itself.
+	 * </p>
+	 * <p>
+	 * The default implementation of this method returns <code>null</code>.
+	 * Subclasses may reimplement.
+	 * </p>
+	 *
+	 * @param module declaration of interest
+	 * @return the binding for the given module declaration, or
+	 *    <code>null</code> if no binding is available
+	 *    
+	 * @since 3.14
+	 */
+	IModuleBinding resolveModule(ModuleDeclaration module) {
+		return null;
+	}
+
+	/**
 	 * Resolves the given name and returns the type binding for it.
 	 * <p>
 	 * The implementation of <code>Name.resolveBinding</code> forwards to
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Block.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Block.java
index 8f1e411..76e53c2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Block.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Block.java
@@ -83,16 +83,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == STATEMENTS_PROPERTY) {
 			return statements();
@@ -101,16 +97,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return BLOCK;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Block result = new Block(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -120,17 +112,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -153,16 +141,12 @@
 		return this.statements;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize() + this.statements.listSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.java
index aaae9a9..f709fb3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BlockComment.java
@@ -76,55 +76,41 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return BLOCK_COMMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		BlockComment result = new BlockComment(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.java
index 6557d80..11424e6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BodyDeclaration.java
@@ -263,9 +263,7 @@
 		return this.modifiers;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.java
index 7f4d40d..1f62672 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BooleanLiteral.java
@@ -82,16 +82,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean newValue) {
 		if (property == BOOLEAN_VALUE_PROPERTY) {
 			if (get) {
@@ -105,16 +101,12 @@
 		return super.internalGetSetBooleanProperty(property, get, newValue);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return BOOLEAN_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		BooleanLiteral result = new BooleanLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -122,17 +114,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -162,16 +150,12 @@
 		postValueChange(BOOLEAN_VALUE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.java
index ead8c9a..aaeab38 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/BreakStatement.java
@@ -82,16 +82,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LABEL_PROPERTY) {
 			if (get) {
@@ -105,16 +101,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return BREAK_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		BreakStatement result = new BreakStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +115,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -170,16 +158,12 @@
 		postReplaceChild(oldChild, label, LABEL_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.java
index 66e2db4..4c36944 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CastExpression.java
@@ -96,16 +96,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -127,16 +123,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CAST_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		CastExpression result = new CastExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -145,17 +137,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -245,17 +233,13 @@
 		postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.java
index 6b814c6..8b56b61 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CatchClause.java
@@ -98,16 +98,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXCEPTION_PROPERTY) {
 			if (get) {
@@ -129,16 +125,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CATCH_CLAUSE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		CatchClause result = new CatchClause(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -148,17 +140,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -249,17 +237,13 @@
 		postReplaceChild(oldChild, body, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.java
index c09fc1f..dd9d370 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CharacterLiteral.java
@@ -84,16 +84,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == ESCAPED_VALUE_PROPERTY) {
 			if (get) {
@@ -107,16 +103,12 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CHARACTER_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		CharacterLiteral result = new CharacterLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -124,17 +116,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -322,17 +310,13 @@
 		setEscapedValue(b.toString());
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 1 * 4 + stringSize(this.escapedValue);
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
index 78364a2..4f85c4c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ClassInstanceCreation.java
@@ -199,14 +199,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -244,9 +242,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ARGUMENTS_PROPERTY) {
 			return arguments();
@@ -258,16 +254,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CLASS_INSTANCE_CREATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ClassInstanceCreation result = new ClassInstanceCreation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -287,17 +279,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -549,18 +537,14 @@
 	public boolean isResolvedTypeInferredFromExpectedType() {
 		return this.ast.getBindingResolver().isResolvedTypeInferredFromExpectedType(this);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 6 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		// n.b. type == null for ast.API_LEVEL == JLS2
 		// n.b. typeArguments == null for ast.API_LEVEL == JLS2
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Comment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Comment.java
index 8d20f8d..65917ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Comment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Comment.java
@@ -120,9 +120,7 @@
 		this.alternateRoot = root;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.java
index 2fdff24..e9b9928 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,19 +28,29 @@
 
 /**
  * Java compilation unit AST node type. This is the type of the root of an AST.
+ * In JLS9 and later, this node can also contain a ModuleDeclaration (with a completely different grammar).
  * <p>
  * The source range for this type of node is ordinarily the entire source file,
  * including leading and trailing whitespace and comments.
  * </p>
  * <pre>
  * CompilationUnit:
- *    [ PackageDeclaration ]
- *        { ImportDeclaration }
- *        { TypeDeclaration | EnumDeclaration | AnnotationTypeDeclaration | <b>;</b> }
+ *     OrdinaryCompilationUnit
+ *     ModularCompilationUnit
+ *     
+ * OrdinaryCompilationUnit:
+ *     [ PackageDeclaration ]
+ *         { ImportDeclaration }
+ *         { TypeDeclaration | EnumDeclaration | AnnotationTypeDeclaration | <b>;</b> }
+ * 
+ * ModularCompilationUnit:
+ *     {ImportDeclaration}
+ *         ModuleDeclaration
  * </pre>
  *
  * @since 2.0
  * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
  */
 @SuppressWarnings({ "rawtypes", "unchecked" })
 public class CompilationUnit extends ASTNode {
@@ -72,6 +82,14 @@
 		new ChildPropertyDescriptor(CompilationUnit.class, "package", PackageDeclaration.class, OPTIONAL, NO_CYCLE_RISK); //$NON-NLS-1$
 
 	/**
+	 * The "module" structural property of this node type (child type: {@link ModuleDeclaration}) (added in JLS9 API).
+	 *
+	 * @since 3.14
+	 */
+	public static final ChildPropertyDescriptor MODULE_PROPERTY =
+		new ChildPropertyDescriptor(CompilationUnit.class, "module", ModuleDeclaration.class, OPTIONAL, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
 	 * A list of property descriptors (element type:
 	 * {@link StructuralPropertyDescriptor}),
 	 * or null if uninitialized.
@@ -80,6 +98,14 @@
 	private static final List PROPERTY_DESCRIPTORS;
 
 	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 * @since 3.14
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	/**
 	 * The "types" structural property of this node type (element type: {@link AbstractTypeDeclaration}).
 	 *
 	 * @since 3.0
@@ -94,6 +120,14 @@
 		addProperty(IMPORTS_PROPERTY, properyList);
 		addProperty(TYPES_PROPERTY, properyList);
 		PROPERTY_DESCRIPTORS = reapPropertyList(properyList);
+
+		properyList = new ArrayList(5);
+		createPropertyList(CompilationUnit.class, properyList);
+		addProperty(PACKAGE_PROPERTY, properyList);
+		addProperty(IMPORTS_PROPERTY, properyList);
+		addProperty(TYPES_PROPERTY, properyList);
+		addProperty(MODULE_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
 	}
 
 	/**
@@ -108,7 +142,10 @@
 	 * @since 3.0
 	 */
 	public static List propertyDescriptors(int apiLevel) {
-		return PROPERTY_DESCRIPTORS;
+		if (apiLevel < AST.JLS9_INTERNAL)
+			return PROPERTY_DESCRIPTORS;
+		else
+			return PROPERTY_DESCRIPTORS_9_0;
 	}
 
 	/**
@@ -168,10 +205,15 @@
 	private PackageDeclaration optionalPackageDeclaration = null;
 
 	/**
+	 * The module declaration, or <code>null</code> if none; initially
+	 * <code>null</code>.
+	 */
+	private ModuleDeclaration module = null;
+	/**
 	 * Problems reported by the compiler during parsing or name resolution.
 	 */
 	private IProblem[] problems = EMPTY_PROBLEMS;
-	
+
 	/**
 	 * Internal data used to perform statements recovery.
 	 */
@@ -200,13 +242,14 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
+			if (this.ast.apiLevel >= AST.JLS9_INTERNAL) {
+				acceptChild(visitor, getModule());
+			}
 			acceptChild(visitor, getPackage());
 			acceptChildren(visitor, this.imports);
 			acceptChildren(visitor, this.types);
@@ -214,13 +257,14 @@
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		CompilationUnit result = new CompilationUnit(target);
 		// n.b do not copy line number table or messages
 		result.setSourceRange(getStartPosition(), getLength());
+		if (this.ast.apiLevel >= AST.JLS9_INTERNAL) {
+			result.setModule((ModuleDeclaration) ASTNode.copySubtree(target, getModule()));
+		}
 		result.setPackage(
 			(PackageDeclaration) ASTNode.copySubtree(target, getPackage()));
 		result.imports().addAll(ASTNode.copySubtrees(target, imports()));
@@ -529,14 +573,25 @@
 		return this.messages;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return COMPILATION_UNIT;
 	}
 
 	/**
+	 * Returns the node for the module declaration of this compilation
+	 * unit, or <code>null</code> if this compilation unit is not a module info.
+	 *
+	 * @return the module declaration node, or <code>null</code> if none
+	 * @exception UnsupportedOperationException if this operation is used below JLS9
+	 * @since 3.14
+	 */
+	public ModuleDeclaration getModule() {
+		unsupportedBelow9();
+		return this.module;
+	}
+
+	/**
 	 * Returns the node for the package declaration of this compilation
 	 * unit, or <code>null</code> if this compilation unit is in the
 	 * default package.
@@ -698,9 +753,7 @@
 		this.commentMapper.initialize(this, scanner);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == IMPORTS_PROPERTY) {
 			return imports();
@@ -712,10 +765,16 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == MODULE_PROPERTY) {
+			if (get) {
+				return getModule();
+			} else {
+				setModule((ModuleDeclaration) child);
+				return null;
+			}
+		}
 		if (property == PACKAGE_PROPERTY) {
 			if (get) {
 				return getPackage();
@@ -728,10 +787,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
@@ -843,9 +899,7 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 8 * 4;
 		if (this.lineEndTable != null) {
@@ -1000,6 +1054,28 @@
 	}
 
 	/**
+	 * Sets or clears the module declaration of this compilation unit
+	 * node to the given module declaration node.
+	 *
+	 * @param module the new module declaration node, or
+	 *   <code>null</code> if this compilation unit does not have a module
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 * @exception UnsupportedOperationException if this operation is used below JLS9
+	 * @since 3.14
+	 */
+	public void setModule(ModuleDeclaration module) {
+		unsupportedBelow9();
+		ASTNode oldChild = this.module;
+		preReplaceChild(oldChild, module, MODULE_PROPERTY);
+		this.module = module;
+		postReplaceChild(oldChild, module, MODULE_PROPERTY);
+	}
+
+	/**
 	 * Sets or clears the package declaration of this compilation unit
 	 * node to the given package declaration node.
 	 *
@@ -1045,19 +1121,18 @@
 		this.statementsRecoveryData = data;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		int size = memSize();
+		if (this.module != null) {
+			size += getModule().treeSize();
+		}
 		if (this.optionalPackageDeclaration != null) {
 			size += getPackage().treeSize();
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
index e108245..f23445d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CompilationUnitResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -57,6 +57,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryMember;
+import org.aspectj.org.eclipse.jdt.internal.core.BinaryModule;
 import org.aspectj.org.eclipse.jdt.internal.core.CancelableNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.core.CancelableProblemFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.INameEnvironmentWithProgress;
@@ -167,6 +168,7 @@
 	/*
 	 * Add additional source types
 	 */
+	@Override
 	public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		// Need to reparse the entire source of the compilation unit so as to get source positions
 		// (case of processing a source that was not known by beginToCompile (e.g. when asking to createBinding))
@@ -174,6 +176,7 @@
 		accept((org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit) sourceType.getHandle().getCompilationUnit(), accessRestriction);
 	}
 	
+	@Override
 	public synchronized void accept(org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 		super.accept(sourceUnit, accessRestriction);
 	}
@@ -207,6 +210,9 @@
 							new String(sourceUnit.getFileName())
 						}));
 				}
+				if (this.parser instanceof CommentRecorderParser) {
+					((CommentRecorderParser) this.parser).resetComments();
+				}
 				// diet parsing for large collection of units
 				if (this.totalUnits < this.parseThreshold) {
 					parsedUnit = this.parser.parse(sourceUnit, unitResult);
@@ -248,6 +254,8 @@
 			} else {
 				char[] key = resolver.hasTypeName()
 					? resolver.getKey().toCharArray() // binary binding
+					: resolver.hasModuleName()
+					    ? resolver.moduleName()
 					: CharOperation.concatWith(resolver.compoundName(), '.'); // package binding or base type binding
 				this.requestedKeys.put(key, resolver);
 			}
@@ -326,12 +334,15 @@
 
 		// passes the initial set of files to the batch oracle (to avoid finding more than once the same units when case insensitive match)
 		return new IErrorHandlingPolicy() {
+			@Override
 			public boolean stopOnFirstError() {
 				return false;
 			}
+			@Override
 			public boolean proceedOnErrors() {
 				return false; // stop if there are some errors
 			}
+			@Override
 			public boolean ignoreAllErrors() {
 				return false;
 			}
@@ -343,18 +354,18 @@
 	 */
 	protected static ICompilerRequestor getRequestor() {
 		return new ICompilerRequestor() {
+			@Override
 			public void acceptResult(CompilationResult compilationResult) {
 				// do nothing
 			}
 		};
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.Compiler#initializeParser()
-	 */
+	@Override
 	public void initializeParser() {
 		this.parser = new CommentRecorderParser(this.problemReporter, false);
 	}
+	@Override
 	public void process(CompilationUnitDeclaration unit, int i) {
 		// don't resolve a second time the same unit (this would create the same binding twice)
 		char[] fileName = unit.compilationResult.getFileName();
@@ -364,6 +375,7 @@
 	/*
 	 * Compiler crash recovery in case of unexpected runtime exceptions
 	 */
+	@Override
 	protected void handleInternalException(
 			Throwable internalException,
 			CompilationUnitDeclaration unit,
@@ -377,6 +389,7 @@
 	/*
 	 * Compiler recovery in case of internal AbortCompilation event
 	 */
+	@Override
 	protected void handleInternalException(
 			AbortCompilation abortException,
 			CompilationUnitDeclaration unit) {
@@ -429,8 +442,8 @@
 
 				// accept AST
 				astRequestor.acceptAST(compilationUnits[i], node);
-			}
 		}
+	}
 	public static void parse(
 			String[] sourceUnits,
 			String[] encodings,
@@ -765,6 +778,8 @@
 						key = ((LocalVariable) element).getKey(true/*open to get resolved info*/);
 					else if (element instanceof org.aspectj.org.eclipse.jdt.internal.core.TypeParameter)
 						key = ((org.aspectj.org.eclipse.jdt.internal.core.TypeParameter) element).getKey(true/*open to get resolved info*/);
+					else if (element instanceof BinaryModule)
+						key = ((BinaryModule) element).getKey(true);
 					else
 						throw new IllegalArgumentException(element + " has an unexpected type"); //$NON-NLS-1$
 					binaryElementPositions.put(key, i);
@@ -782,6 +797,7 @@
 
 		class Requestor extends ASTRequestor {
 			IBinding[] bindings = new IBinding[length];
+			@Override
 			public void acceptAST(ICompilationUnit source, CompilationUnit ast) {
 				// TODO (jerome) optimize to visit the AST only once
 				IntArrayList intList = (IntArrayList) sourceElementPositions.get(source);
@@ -797,6 +813,7 @@
 					this.bindings[index] = finder.foundBinding;
 				}
 			}
+			@Override
 			public void acceptBinding(String bindingKey, IBinding binding) {
 				int index = binaryElementPositions.get(bindingKey);
 				this.bindings[index] = binding;
@@ -1264,6 +1281,7 @@
 	/*
 	 * Internal API used to resolve a given compilation unit. Can run a subset of the compilation process
 	 */
+	@Override
 	public CompilationUnitDeclaration resolve(
 			org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceUnit,
 			boolean verifyMethods,
@@ -1295,6 +1313,7 @@
 	/*
 	 * Internal API used to resolve a given compilation unit. Can run a subset of the compilation process
 	 */
+	@Override
 	public CompilationUnitDeclaration resolve(
 			CompilationUnitDeclaration unit,
 			org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceUnit,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.java
index 124702f..a8185f3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConditionalExpression.java
@@ -112,16 +112,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -151,16 +147,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CONDITIONAL_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ConditionalExpression result = new ConditionalExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -172,17 +164,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -314,17 +302,13 @@
 		postReplaceChild(oldChild, expression, ELSE_EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.java
index 3427bd4..c649cc0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ConstructorInvocation.java
@@ -118,16 +118,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ARGUMENTS_PROPERTY) {
 			return arguments();
@@ -139,16 +135,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CONSTRUCTOR_INVOCATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ConstructorInvocation result = new ConstructorInvocation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -160,17 +152,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -226,17 +214,13 @@
 		return this.ast.getBindingResolver().resolveConstructor(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.java
index 048c50f..2d6e999 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ContinueStatement.java
@@ -82,16 +82,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LABEL_PROPERTY) {
 			if (get) {
@@ -105,16 +101,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CONTINUE_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ContinueStatement result = new ContinueStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +115,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -170,16 +158,12 @@
 		postReplaceChild(oldChild, label, LABEL_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.java
index 4a6004b..2a7731d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/CreationReference.java
@@ -89,23 +89,17 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on MethodReference.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalTypeArgumentsProperty() {
 		return TYPE_ARGUMENTS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -119,9 +113,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPE_ARGUMENTS_PROPERTY) {
 			return typeArguments();
@@ -130,16 +122,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return CREATION_REFERENCE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		CreationReference result = new CreationReference(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -148,17 +136,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -214,21 +198,18 @@
 	 * @return the live list of type arguments
 	 *    (element type: {@link Type})
 	 */
+	@Override
 	public List typeArguments() {
 		return this.typeArguments;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.java
index a9cf08b..3da82db 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultASTVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,411 +26,550 @@
 		super(visitDocTags);
 	}
 
+	@Override
 	public void endVisit(AnnotationTypeDeclaration node) {
 		endVisitNode(node);
 	}
 
+	@Override
 	public void endVisit(AnnotationTypeMemberDeclaration node) {
 		endVisitNode(node);
 	}
 
+	@Override
 	public void endVisit(AnonymousClassDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ArrayAccess node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ArrayCreation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ArrayInitializer node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ArrayType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(AssertStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Assignment node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Block node) {
 		endVisitNode(node);
 	}
 	/* since 3.0 */
+	@Override
 	public void endVisit(BlockComment node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(BooleanLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(BreakStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(CastExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(CatchClause node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(CharacterLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ClassInstanceCreation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(CompilationUnit node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ConditionalExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ConstructorInvocation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ContinueStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(CreationReference node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Dimension node) {
 		endVisitNode(node);
 	}
 
+	@Override
 	public void endVisit(DoStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(EmptyStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(EnhancedForStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(EnumConstantDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(EnumDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ExpressionMethodReference node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ExpressionStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(FieldAccess node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(FieldDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ForStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(IfStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ImportDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(InfixExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Initializer node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(InstanceofExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(IntersectionType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Javadoc node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(LabeledStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(LambdaExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(LineComment node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MarkerAnnotation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MemberRef node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MemberValuePair node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MethodDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MethodInvocation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MethodRef node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(MethodRefParameter node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(Modifier node) {
 		endVisitNode(node);
 	}
+	@Override
+	public void endVisit(ModuleDeclaration node) {
+		endVisitNode(node);
+	}
+	public void endVisit(ModuleDirective node) {
+		endVisitNode(node);
+	}
+	@Override
 	public void endVisit(NameQualifiedType node) {
 		endVisitNode(node);
 	}
 
+	@Override
 	public void endVisit(NormalAnnotation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(NullLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(NumberLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(PackageDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ParameterizedType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ParenthesizedExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(PostfixExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(PrefixExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(PrimitiveType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(QualifiedName node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(QualifiedType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ReturnStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SimpleName node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SimpleType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SingleMemberAnnotation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SingleVariableDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(StringLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SuperConstructorInvocation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SuperFieldAccess node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SuperMethodInvocation node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SuperMethodReference node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SwitchCase node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SwitchStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(SynchronizedStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TagElement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TextElement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ThisExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(ThrowStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TryStatement node) {
 		endVisitNode(node);
 	}
 
+	@Override
 	public void endVisit(TypeDeclaration node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TypeDeclarationStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TypeLiteral node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TypeMethodReference node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(TypeParameter node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(UnionType node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(VariableDeclarationExpression node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(VariableDeclarationFragment node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(VariableDeclarationStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(WhileStatement node) {
 		endVisitNode(node);
 	}
+	@Override
 	public void endVisit(WildcardType node) {
 		endVisitNode(node);
 	}
 	protected void endVisitNode(ASTNode node) {
 		// do nothing
 	}
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(AnnotationTypeMemberDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(AnonymousClassDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ArrayAccess node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ArrayCreation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ArrayInitializer node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ArrayType node) {
 		visitNode(node);
 		return false;
 	}
+	@Override
 	public boolean visit(AssertStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Assignment node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Block node) {
 		return visitNode(node);
 	}
 	/* since 3.0 */
+	@Override
 	public boolean visit(BlockComment node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(BooleanLiteral node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(BreakStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(CastExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(CatchClause node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(CharacterLiteral node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ClassInstanceCreation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(CompilationUnit node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ConditionalExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ConstructorInvocation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ContinueStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(CreationReference node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Dimension node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(DoStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(EmptyStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(EnhancedForStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(EnumConstantDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ExpressionMethodReference node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ExpressionStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(FieldAccess node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(FieldDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ForStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(IfStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(InfixExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Initializer node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(InstanceofExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(IntersectionType node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Javadoc node) {
 		//	do not visit Javadoc tags by default. Use constructor with boolean to enable.
 		if (super.visit(node)) {
@@ -438,185 +577,244 @@
 		}
 		return false;
 	}
+	@Override
 	public boolean visit(LabeledStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(LambdaExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(LineComment node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MarkerAnnotation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MemberRef node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MemberValuePair node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MethodInvocation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(MethodRef node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(Modifier node) {
 		return visitNode(node);
 	}
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		return visitNode(node);
+	}
+	public boolean visit(ModuleDirective node) {
+		return visitNode(node);
+	}
+	@Override
 	public boolean visit(MethodRefParameter node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(NameQualifiedType node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(NormalAnnotation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(NullLiteral node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(NumberLiteral node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ParameterizedType node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ParenthesizedExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(PostfixExpression node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(PrefixExpression node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(PrimitiveType node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(QualifiedName node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(QualifiedType node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(ReturnStatement node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(SimpleName node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(SimpleType node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(SingleMemberAnnotation node) {
 		return visitNode(node);
 	}
+	@Override
 	public boolean visit(SingleVariableDeclaration node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(StringLiteral node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SuperConstructorInvocation node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SuperFieldAccess node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SuperMethodInvocation node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SuperMethodReference node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SwitchCase node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SwitchStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(SynchronizedStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TagElement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TextElement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(ThisExpression node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(ThrowStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TryStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TypeDeclarationStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TypeLiteral node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TypeMethodReference node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(TypeParameter node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(UnionType node) {
 		return visitNode(node);
 	}
 	
+	@Override
 	public boolean visit(VariableDeclarationExpression node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(VariableDeclarationFragment node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(VariableDeclarationStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(WhileStatement node) {
 		return visitNode(node);
 	}
 
+	@Override
 	public boolean visit(WildcardType node) {
 		return visitNode(node);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.java
index 3b1d137..64f4edf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultBindingResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,6 +39,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedSuperReference;
@@ -60,6 +61,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemFieldBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemPackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -184,9 +186,7 @@
 		this.fromJavaProject = fromJavaProject;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ASTNode findDeclaringNode(IBinding binding) {
 		if (binding == null) {
 			return null;
@@ -204,6 +204,7 @@
 		return (ASTNode) this.bindingsToAstNodes.get(binding);
 	}
 
+	@Override
 	synchronized ASTNode findDeclaringNode(String bindingKey) {
 		if (bindingKey == null) {
 			return null;
@@ -229,6 +230,8 @@
 				return new TypeBinding(this, (org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding) binding);
 			case Binding.METHOD:
 				return getMethodBinding((org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding) binding);
+			case Binding.MODULE:
+				return getModuleBinding((org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding) binding);
 			case Binding.FIELD:
 			case Binding.LOCAL:
 				return getVariableBinding((org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding) binding);
@@ -238,6 +241,7 @@
 
 	Util.BindingsToNodesMap getBindingsToNodesMap() {
 		return new Util.BindingsToNodesMap() {
+			@Override
 			public org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode get(Binding binding) {
 				return (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode)
 					DefaultBindingResolver.this.newAstToOldAst.get(DefaultBindingResolver.this.bindingsToAstNodes.get(binding));
@@ -245,13 +249,12 @@
 		};
 	}
 
+	@Override
 	synchronized org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode getCorrespondingNode(ASTNode currentNode) {
 		return (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(currentNode);
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized IMethodBinding getMethodBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding methodBinding) {
 		return getMethodOrLambdaBinding(methodBinding, null, null);
 	}
@@ -285,6 +288,7 @@
 		return null;
 	}
 
+	@Override
 	synchronized IMemberValuePairBinding getMemberValuePairBinding(ElementValuePair valuePair) {
 		if (valuePair == null || valuePair.binding == null) return null;
 		IMemberValuePairBinding binding =
@@ -296,18 +300,33 @@
 		return binding;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
+	/**
+	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#getModuleBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding)
 	 */
+	@Override
+	synchronized IModuleBinding getModuleBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding moduleBinding) {
+		if (moduleBinding != null) {
+			IModuleBinding binding = (IModuleBinding) this.bindingTables.compilerBindingsToASTBindings.get(moduleBinding);
+			if (binding == null) {
+				binding = new ModuleBinding(this, moduleBinding);
+				this.bindingTables.compilerBindingsToASTBindings.put(moduleBinding, binding);
+			}
+			return binding;
+		}
+		return null;
+	}
+
+	@Override
 	synchronized IPackageBinding getPackageBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding packageBinding) {
-		if (packageBinding == null) {
+		if (packageBinding == null || packageBinding instanceof ProblemPackageBinding) {
 			return null;
 		}
 		IPackageBinding binding = (IPackageBinding) this.bindingTables.compilerBindingsToASTBindings.get(packageBinding);
 		if (binding != null) {
 			return binding;
 		}
-		binding = new PackageBinding(packageBinding, this);
+		binding = packageBinding instanceof ProblemPackageBinding ? new RecoveredPackageBinding(packageBinding, this) :
+				new PackageBinding(packageBinding, this);
 		this.bindingTables.compilerBindingsToASTBindings.put(packageBinding, binding);
 		return binding;
 	}
@@ -325,17 +344,7 @@
 		return value;
 	}
 
-	/**
-	 * Returns the new type binding corresponding to the given variable declaration.
-	 * This is used for recovered binding only.
-	 * <p>
-	 * The default implementation of this method returns <code>null</code>.
-	 * Subclasses may reimplement.
-	 * </p>
-	 *
-	 * @param variableDeclaration the given variable declaration
-	 * @return the new type binding
-	 */
+	@Override
 	synchronized ITypeBinding getTypeBinding(VariableDeclaration variableDeclaration) {
 		ITypeBinding binding = (ITypeBinding) this.bindingTables.compilerBindingsToASTBindings.get(variableDeclaration);
 		if (binding != null) {
@@ -346,17 +355,7 @@
 		return binding;
 	}
 
-	/**
-	 * Returns the new type binding corresponding to the given type.
-	 * This is used for recovered binding only.
-	 * <p>
-	 * The default implementation of this method returns <code>null</code>.
-	 * Subclasses may reimplement.
-	 * </p>
-	 *
-	 * @param type the given type
-	 * @return the new type binding
-	 */
+	@Override
 	synchronized ITypeBinding getTypeBinding(Type type) {
 		ITypeBinding binding = (ITypeBinding) this.bindingTables.compilerBindingsToASTBindings.get(type);
 		if (binding != null) {
@@ -367,9 +366,7 @@
 		return binding;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ITypeBinding getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding referenceBinding) {
 		return internalGetTypeBinding(referenceBinding, null);
 	}
@@ -425,9 +422,7 @@
 		}
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ITypeBinding getTypeBinding(RecoveredTypeBinding recoveredTypeBinding, int dimensions) {
 		if (recoveredTypeBinding== null) {
 			return null;
@@ -481,13 +476,12 @@
 		return this.getVariableBinding(variableBinding);
 	}
 
+	@Override
 	public WorkingCopyOwner getWorkingCopyOwner() {
 		return this.workingCopyOwner;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized IVariableBinding getVariableBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding variableBinding) {
 		if (variableBinding != null) {
 			if (variableBinding.isValidBinding()) {
@@ -548,6 +542,7 @@
 		}
 	}
 
+	@Override
 	synchronized IAnnotationBinding getAnnotationInstance(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding internalInstance) {
 		if (internalInstance == null) return null;
 		ReferenceBinding annotationType = internalInstance.getAnnotationType();
@@ -562,6 +557,7 @@
 		return domInstance != null ? domInstance : newDomInstance;
 	}
 
+	@Override
 	boolean isResolvedTypeInferredFromExpectedType(MethodInvocation methodInvocation) {
 		Object oldNode = this.newAstToOldAst.get(methodInvocation);
 		if (oldNode instanceof MessageSend) {
@@ -575,6 +571,7 @@
 		return false;
 	}
 
+	@Override
 	boolean isResolvedTypeInferredFromExpectedType(SuperMethodInvocation superMethodInvocation) {
 		Object oldNode = this.newAstToOldAst.get(superMethodInvocation);
 		if (oldNode instanceof MessageSend) {
@@ -588,6 +585,7 @@
 		return false;
 	}
 
+	@Override
 	boolean isResolvedTypeInferredFromExpectedType(ClassInstanceCreation classInstanceCreation) {
 		Object oldNode = this.newAstToOldAst.get(classInstanceCreation);
 		if (oldNode instanceof AllocationExpression) {
@@ -597,9 +595,7 @@
 		return false;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	LookupEnvironment lookupEnvironment() {
 		return this.scope.environment();
 	}
@@ -607,13 +603,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#recordScope(ASTNode, BlockScope)
 	 */
+	@Override
 	synchronized void recordScope(ASTNode astNode, BlockScope blockScope) {
 		this.astNodesToBlockScope.put(astNode, blockScope);
 	}
 
-	/*
-	 * @see BindingResolver#resolveBoxing(Expression)
-	 */
+	@Override
 	boolean resolveBoxing(Expression expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression) {
@@ -623,9 +618,7 @@
 		return false;
 	}
 
-	/*
-	 * @see BindingResolver#resolveUnboxing(Expression)
-	 */
+	@Override
 	boolean resolveUnboxing(Expression expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression) {
@@ -635,9 +628,7 @@
 		return false;
 	}
 
-	/*
-	 * @see BindingResolver#resolveConstantExpressionValue(Expression)
-	 */
+	@Override
 	Object resolveConstantExpressionValue(Expression expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression) {
@@ -661,9 +652,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveConstructor(ClassInstanceCreation)
-	 */
+	@Override
 	synchronized IMethodBinding resolveConstructor(ClassInstanceCreation expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node != null && (node.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.IsAnonymousType) != 0) {
@@ -675,9 +664,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveConstructor(ConstructorInvocation)
-	 */
+	@Override
 	synchronized IMethodBinding resolveConstructor(ConstructorInvocation expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node instanceof ExplicitConstructorCall) {
@@ -687,9 +674,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#resolveConstructor(org.aspectj.org.eclipse.jdt.core.dom.EnumConstantDeclaration)
-	 */
+	@Override
 	IMethodBinding resolveConstructor(EnumConstantDeclaration enumConstantDeclaration) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(enumConstantDeclaration);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration) {
@@ -702,9 +687,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveConstructor(SuperConstructorInvocation)
-	 */
+	@Override
 	synchronized IMethodBinding resolveConstructor(SuperConstructorInvocation expression) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(expression);
 		if (node instanceof ExplicitConstructorCall) {
@@ -713,9 +696,8 @@
 		}
 		return null;
 	}
-	/*
-	 * Method declared on BindingResolver.
-	 */
+
+	@Override
 	synchronized ITypeBinding resolveExpressionType(Expression expression) {
 		try {
 			switch(expression.getNodeType()) {
@@ -803,9 +785,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveField(FieldAccess)
-	 */
+	@Override
 	synchronized IVariableBinding resolveField(FieldAccess fieldAccess) {
 		Object oldNode = this.newAstToOldAst.get(fieldAccess);
 		if (oldNode instanceof FieldReference) {
@@ -815,9 +795,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveField(SuperFieldAccess)
-	 */
+	@Override
 	synchronized IVariableBinding resolveField(SuperFieldAccess fieldAccess) {
 		Object oldNode = this.newAstToOldAst.get(fieldAccess);
 		if (oldNode instanceof FieldReference) {
@@ -827,9 +805,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolveImport(ImportDeclaration)
-	 */
+	@Override
 	synchronized IBinding resolveImport(ImportDeclaration importDeclaration) {
 		if (this.scope == null) return null;
 		try {
@@ -893,9 +869,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#resolveMember(org.aspectj.org.eclipse.jdt.core.dom.AnnotationTypeMemberDeclaration)
-	 */
+	@Override
 	IMethodBinding resolveMember(AnnotationTypeMemberDeclaration declaration) {
 		Object oldNode = this.newAstToOldAst.get(declaration);
 		if (oldNode instanceof AbstractMethodDeclaration) {
@@ -914,9 +888,7 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized IMethodBinding resolveMethod(LambdaExpression lambda) {
 		Object oldNode = this.newAstToOldAst.get(lambda);
 		if (oldNode instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression) {
@@ -981,9 +953,7 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized IMethodBinding resolveMethod(MethodDeclaration method) {
 		Object oldNode = this.newAstToOldAst.get(method);
 		if (oldNode instanceof AbstractMethodDeclaration) {
@@ -1001,9 +971,8 @@
 		}
 		return null;
 	}
-/*
-	 * Method declared on BindingResolver.
-	 */
+
+	@Override
 	synchronized IMethodBinding resolveMethod(MethodInvocation method) {
 		Object oldNode = this.newAstToOldAst.get(method);
 		if (oldNode instanceof MessageSend) {
@@ -1012,9 +981,8 @@
 		}
 		return null;
 	}
-	/*
-	 * Method declared on BindingResolver.
-	 */
+
+	@Override
 	synchronized IMethodBinding resolveMethod(MethodReference methodReference) {
 		Object oldNode = this.newAstToOldAst.get(methodReference);
 		if (oldNode instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression) {
@@ -1029,9 +997,8 @@
 		}
 		return null;
 	}
-	/*
-	 * Method declared on BindingResolver.
-	 */
+
+	@Override
 	synchronized IMethodBinding resolveMethod(SuperMethodInvocation method) {
 		Object oldNode = this.newAstToOldAst.get(method);
 		if (oldNode instanceof MessageSend) {
@@ -1155,6 +1122,8 @@
 				}
 			}
 		} else if (node instanceof ImportReference) {
+			if ((node.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.inModule) != 0)
+				return null;
 			ImportReference importReference = (ImportReference) node;
 			int importReferenceLength = importReference.tokens.length;
 			if (index >= 0) {
@@ -1258,9 +1227,7 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized IBinding resolveName(Name name) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(name);
 		int index = name.index;
@@ -1373,10 +1340,11 @@
 		} else if (node instanceof ImportReference) {
 			ImportReference importReference = (ImportReference) node;
 			int importReferenceLength = importReference.tokens.length;
+			boolean inModule = (importReference.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.inModule) != 0;
 			if (index >= 0) {
 				Binding binding = null;
 				if (this.scope == null) return null;
-				if (importReferenceLength == index) {
+				if (importReferenceLength == index && !inModule) {
 					try {
 						binding = this.scope.getImport(CharOperation.subarray(importReference.tokens, 0, index), (importReference.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.OnDemand) != 0, importReference.isStatic());
 					} catch (AbortCompilation e) {
@@ -1384,7 +1352,7 @@
 					}
 				} else {
 					try {
-						binding = this.scope.getImport(CharOperation.subarray(importReference.tokens, 0, index), true, importReference.isStatic());
+						binding = this.scope.getImport(inModule ? importReference.tokens : CharOperation.subarray(importReference.tokens, 0, index), true, importReference.isStatic());
 					} catch (AbortCompilation e) {
 						// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=53357
 					}
@@ -1425,6 +1393,18 @@
 			if (methodBinding != null) {
 				return methodBinding;
 			}
+		} else if (node instanceof ModuleReference) {
+			ModuleReference moduleReference = (ModuleReference) node;
+			IModuleBinding moduleBinding = getModuleBinding(moduleReference.binding);
+			if (moduleBinding != null) {
+				return moduleBinding;
+			}
+		} else if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration moduleDeclaration = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration) node;
+			IModuleBinding moduleBinding = getModuleBinding(moduleDeclaration.binding);
+			if (moduleBinding != null) {
+				return moduleBinding;
+			}
 		} else if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration) {
 			org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration typeDeclaration = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration) node;
 			ITypeBinding typeBinding = this.getTypeBinding(typeDeclaration.binding);
@@ -1474,7 +1454,9 @@
 			QualifiedSuperReference qualifiedSuperReference = (QualifiedSuperReference) node;
 			return this.getTypeBinding(qualifiedSuperReference.qualification.resolvedType);
 		} else if (node instanceof LocalDeclaration) {
-			return this.getVariableBinding(((LocalDeclaration)node).binding);
+			return name.getAST().apiLevel() >= AST.JLS10_INTERNAL && name instanceof SimpleName && ((SimpleName) name).isVar()  ? 
+					resolveTypeBindingForName(name) :
+					this.getVariableBinding(((LocalDeclaration)node).binding);
 		} else if (node instanceof JavadocFieldReference) {
 			JavadocFieldReference fieldRef = (JavadocFieldReference) node;
 			if (fieldRef.methodBinding != null) {
@@ -1521,9 +1503,7 @@
 		return null;
 	}
 
-	/*
-	 * @see BindingResolver#resolvePackage(PackageDeclaration)
-	 */
+	@Override
 	synchronized IPackageBinding resolvePackage(PackageDeclaration pkg) {
 		if (this.scope == null) return null;
 		try {
@@ -1559,10 +1539,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see BindingResolver#resolveReference(MemberRef)
-     * @since 3.0
-	 */
+	@Override
 	synchronized IBinding resolveReference(MemberRef ref) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression expression = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression) this.newAstToOldAst.get(ref);
 		if (expression instanceof TypeReference) {
@@ -1577,10 +1554,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see BindingResolver#resolveMemberValuePair(MemberValuePair)
-     * @since 3.2
-	 */
+	@Override
 	synchronized IMemberValuePairBinding resolveMemberValuePair(org.aspectj.org.eclipse.jdt.core.dom.MemberValuePair memberValuePair) {
 		MemberValuePair valuePair = (MemberValuePair) this.newAstToOldAst.get(memberValuePair);
 		if (valuePair != null) {
@@ -1589,10 +1563,31 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see BindingResolver#resolveReference(MethodRef)
-     * @since 3.0
+	/**
+	 * @see BindingResolver#resolveModule(ModuleDeclaration)
+	 * @since 3.14	
 	 */
+	@Override
+	IModuleBinding resolveModule(ModuleDeclaration module) {
+		Object oldNode = this.newAstToOldAst.get(module);
+		if (oldNode instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration moduleDeclaration = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration) oldNode;
+			IModuleBinding moduleBinding = getModuleBinding(moduleDeclaration.binding);
+			if (moduleBinding == null) {
+				return null;
+			}
+			this.bindingsToAstNodes.put(moduleBinding, module);
+			String key = moduleBinding.getKey();
+			if (key != null) {
+				this.bindingTables.bindingKeysToBindings.put(key, moduleBinding);
+			}
+			return moduleBinding;
+		}
+
+		return null;
+	}
+
+	@Override
 	synchronized IBinding resolveReference(MethodRef ref) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression expression = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression) this.newAstToOldAst.get(ref);
 		if (expression instanceof JavadocMessageSend) {
@@ -1604,9 +1599,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#resolveType(org.aspectj.org.eclipse.jdt.core.dom.AnnotationTypeDeclaration)
-	 */
+	@Override
 	ITypeBinding resolveType(AnnotationTypeDeclaration type) {
 		final Object node = this.newAstToOldAst.get(type);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration) {
@@ -1624,9 +1617,8 @@
 		}
 		return null;
 	}
-	/*
-	 * @see BindingResolver#resolveType(AnonymousClassDeclaration)
-	 */
+
+	@Override
 	synchronized ITypeBinding resolveType(AnonymousClassDeclaration type) {
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(type);
 		if (node != null && (node.bits & org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode.IsAnonymousType) != 0) {
@@ -1646,9 +1638,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#resolveType(org.aspectj.org.eclipse.jdt.core.dom.EnumDeclaration)
-	 */
+	@Override
 	ITypeBinding resolveType(EnumDeclaration type) {
 		final Object node = this.newAstToOldAst.get(type);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration) {
@@ -1667,13 +1657,14 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ITypeBinding resolveType(Type type) {
 		// retrieve the old ast node
 		org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(type);
 		org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding binding = null;
+		if (type.getAST().apiLevel() >= AST.JLS10_INTERNAL && type.isVar()) {
+			return resolveTypeBindingForName(((SimpleType) type).getName());
+		}
 		if (node != null) {
 			if (node instanceof Receiver) {
 				node = ((Receiver) node).type;
@@ -1786,9 +1777,7 @@
 		return newbies;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ITypeBinding resolveType(TypeDeclaration type) {
 		final Object node = this.newAstToOldAst.get(type);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration) {
@@ -1808,6 +1797,7 @@
 		return null;
 	}
 
+	@Override
 	synchronized ITypeBinding resolveTypeParameter(TypeParameter typeParameter) {
 		final Object node = this.newAstToOldAst.get(typeParameter);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter) {
@@ -1826,9 +1816,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.BindingResolver#resolveVariable(org.aspectj.org.eclipse.jdt.core.dom.EnumConstantDeclaration)
-	 */
+	@Override
 	synchronized IVariableBinding resolveVariable(EnumConstantDeclaration enumConstant) {
 		final Object node = this.newAstToOldAst.get(enumConstant);
 		if (node instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration) {
@@ -1846,9 +1834,8 @@
 		}
 		return null;
 	}
-	/*
-	 * Method declared on BindingResolver.
-	 */
+
+	@Override
 	synchronized IVariableBinding resolveVariable(VariableDeclaration variable) {
 		final Object node = this.newAstToOldAst.get(variable);
 		if (node instanceof AbstractVariableDeclaration) {
@@ -1873,9 +1860,7 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized ITypeBinding resolveWellKnownType(String name) {
 		if (this.scope == null) return null;
 		ITypeBinding typeBinding = null;
@@ -1940,6 +1925,7 @@
 		return null;
 	}
 
+	@Override
 	synchronized IAnnotationBinding resolveAnnotation(final Annotation domASTNode) {
 		Object oldNode = this.newAstToOldAst.get(domASTNode);
 		if (oldNode instanceof org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation) {
@@ -1955,23 +1941,17 @@
 		return null;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	public CompilationUnitScope scope() {
 		return this.scope;
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized void store(ASTNode node, org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode oldASTNode) {
 		this.newAstToOldAst.put(node, oldASTNode);
 	}
 
-	/*
-	 * Method declared on BindingResolver.
-	 */
+	@Override
 	synchronized void updateKey(ASTNode node, ASTNode newNode) {
 		Object astNode = this.newAstToOldAst.remove(node);
 		if (astNode != null) {
@@ -1979,25 +1959,7 @@
 		}
 	}
 
-	/**
-	 * Answer an array type binding with the given type binding and the given
-	 * dimensions.
-	 *
-	 * <p>If the given type binding is an array binding, then the resulting dimensions is the given dimensions
-	 * plus the existing dimensions of the array binding. Otherwise the resulting dimensions is the given
-	 * dimensions.</p>
-	 *
-	 * <p>
-	 * The default implementation of this method returns <code>null</code>.
-	 * Subclasses may reimplement.
-	 * </p>
-	 *
-	 * @param typeBinding the given type binding
-	 * @param dimensions the given dimensions
-	 * @return an array type binding with the given type binding and the given
-	 * dimensions
-	 * @throws IllegalArgumentException if the type binding represents the <code>void</code> type binding
-	 */
+	@Override
 	ITypeBinding resolveArrayType(ITypeBinding typeBinding, int dimensions) {
 		if (typeBinding instanceof RecoveredTypeBinding) throw new IllegalArgumentException("Cannot be called on a recovered type binding"); //$NON-NLS-1$
 		ITypeBinding leafComponentType = typeBinding;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper.java
index 98f1c22..6424afe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultCommentMapper.java
@@ -558,6 +558,7 @@
 		int[][] parentLineRange = new int[10][];
 		int siblingPtr = -1;
 
+		@Override
 		protected boolean visitNode(ASTNode node) {
 
 			// Get default previous end
@@ -617,6 +618,7 @@
 			return true;
 		}
 
+		@Override
 		protected void endVisitNode(ASTNode node) {
 
 			// Look if a child node is waiting for trailing comments computing
@@ -636,10 +638,12 @@
 			}
 		}
 
+		@Override
 		public boolean visit (Modifier modifier) {
 			// we don't want to map comment to the modifier
 			return false;
 		}
+		@Override
 		public boolean visit ( CompilationUnit node) {
 			// do nothing special, just go down in sub-levels
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.java
index dfdb859..73620c8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DefaultValuePairBinding.java
@@ -37,22 +37,27 @@
 		}
 	}
 
+	@Override
 	public IMethodBinding getMethodBinding() {
 		return this.bindingResolver.getMethodBinding(this.method);
 	}
 
+	@Override
 	public String getName() {
 		return new String(this.method.selector);
 	}
 
+	@Override
 	public Object getValue() {
 		return this.value;
 	}
 
+	@Override
 	public boolean isDefault() {
 		return true;
 	}
 
+	@Override
 	public boolean isDeprecated() {
 		return this.method.isDeprecated();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Dimension.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Dimension.java
index 5605784..5b65ed9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Dimension.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Dimension.java
@@ -89,16 +89,12 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -107,16 +103,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return DIMENSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Dimension result = new Dimension(target);
 		result.annotations().addAll(
@@ -124,17 +116,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -153,10 +141,12 @@
 		return this.annotations;
 	}
 
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.java
index 5635df9..b47122f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DoStatement.java
@@ -97,16 +97,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == BODY_PROPERTY) {
 			if (get) {
@@ -128,16 +124,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return DO_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		DoStatement result = new DoStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -147,17 +139,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -256,16 +244,12 @@
         postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
     }
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.java
index 375d377..2ffd735 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/DocCommentParser.java
@@ -91,6 +91,7 @@
 		this.docComment.setComment(new String(this.source, start, length));
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("javadoc: ").append(this.docComment).append("\n");	//$NON-NLS-1$ //$NON-NLS-2$
@@ -98,9 +99,7 @@
 		return buffer.toString();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createArgumentReference(char[], java.lang.Object, int)
-	 */
+	@Override
 	protected Object createArgumentReference(char[] name, int dim, boolean isVarargs, Object typeRef, long[] dimPositions, long argNamePos) throws InvalidInputException {
 		try {
 			MethodRefParameter argument = this.ast.newMethodRefParameter();
@@ -144,7 +143,7 @@
 				}
 			}
 			argument.setType(argType);
-			if (this.ast.apiLevel > AST.JLS8) {
+			if (this.ast.apiLevel > AST.JLS8_INTERNAL) {
 				argument.setVarargs(isVarargs);
 			}
 			argument.setSourceRange(argStart, argEnd - argStart + 1);
@@ -154,9 +153,8 @@
 				throw new InvalidInputException();
 		}
 	}
-/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createFieldReference()
-	 */
+
+	@Override
 	protected Object createFieldReference(Object receiver) throws InvalidInputException {
 		try {
 			MemberRef fieldRef = this.ast.newMemberRef();
@@ -182,9 +180,8 @@
 				throw new InvalidInputException();
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createMethodReference(java.lang.Object[])
-	 */
+
+	@Override
 	protected Object createMethodReference(Object receiver, List arguments) throws InvalidInputException {
 		try {
 			// Create method ref
@@ -221,9 +218,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createTag()
-	 */
+	@Override
 	protected void createTag() {
 		TagElement tagElement = this.ast.newTagElement();
 		int position = this.scanner.currentPosition;
@@ -256,9 +251,7 @@
 		this.scanner.resetTo(position, this.javadocEnd);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createTypeReference()
-	 */
+	@Override
 	protected Object createTypeReference(int primitiveToken) {
 		int size = this.identifierLengthStack[this.identifierLengthPtr];
 		String[] identifiers = new String[size];
@@ -331,9 +324,7 @@
 		return typeRef;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseIdentifierTag(boolean)
-	 */
+	@Override
 	protected boolean parseIdentifierTag(boolean report) {
 		if (super.parseIdentifierTag(report)) {
 			createTag();
@@ -352,9 +343,7 @@
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseTag(int)
-	 */
+	@Override
 	protected boolean parseTag(int previousPosition) throws InvalidInputException {
 
 		// Read tag name
@@ -595,9 +584,7 @@
 		return valid;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushParamName(java.lang.Object)
-	 */
+	@Override
 	protected boolean pushParamName(boolean isTypeParam) {
 		int idIndex = isTypeParam ? 1 : 0;
 		final SimpleName name = new SimpleName(this.ast);
@@ -633,9 +620,8 @@
 		pushOnAstStack(paramTag, true);
 		return true;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushSeeRef(java.lang.Object)
-	 */
+
+	@Override
 	protected boolean pushSeeRef(Object statement) {
 		TagElement seeTag = this.ast.newTagElement();
 		ASTNode node = (ASTNode) statement;
@@ -672,9 +658,8 @@
 		}
 		return true;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushText(int, int)
-	 */
+
+	@Override
 	protected void pushText(int start, int end) {
 
 		// Create text element
@@ -719,9 +704,7 @@
 		this.textStart = -1;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushThrowName(java.lang.Object)
-	 */
+	@Override
 	protected boolean pushThrowName(Object typeRef) {
 		TagElement throwsTag = this.ast.newTagElement();
 		switch (this.tagValue) {
@@ -738,9 +721,7 @@
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#refreshInlineTagPosition(int)
-	 */
+	@Override
 	protected void refreshInlineTagPosition(int previousPosition) {
 		if (this.astPtr != -1) {
 			TagElement previousTag = (TagElement) this.astStack[this.astPtr];
@@ -761,6 +742,7 @@
 	/*
 	 * Add stored tag elements to associated comment.
 	 */
+	@Override
 	protected void updateDocComment() {
 		for (int idx = 0; idx <= this.astPtr; idx++) {
 			this.docComment.tags().add(this.astStack[idx]);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.java
index b159add..6e244c4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EmptyStatement.java
@@ -68,23 +68,17 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return EMPTY_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		EmptyStatement result = new EmptyStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -92,25 +86,19 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.java
index 3eed817..fe02c79 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnhancedForStatement.java
@@ -110,16 +110,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == PARAMETER_PROPERTY) {
 			if (get) {
@@ -149,16 +145,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ENHANCED_FOR_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		EnhancedForStatement result = new EnhancedForStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -170,17 +162,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -311,16 +299,12 @@
 		postReplaceChild(oldChild, statement, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.java
index 3c80247..27c5a30 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumConstantDeclaration.java
@@ -141,16 +141,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -180,9 +176,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -194,38 +188,28 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		// this property will not be asked for (node type did not exist in JLS2)
 		return null;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ENUM_CONSTANT_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		EnumConstantDeclaration result = new EnumConstantDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -239,17 +223,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -368,16 +348,12 @@
 		return this.ast.getBindingResolver().resolveVariable(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.java
index 876c179..24d1136 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/EnumDeclaration.java
@@ -146,16 +146,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -177,9 +173,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -197,52 +191,38 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		// this property will not be asked for (node type did not exist in JLS2)
 		return null;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalNameProperty() {
 		return NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalBodyDeclarationsProperty() {
 		return BODY_DECLARATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return ENUM_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		EnumDeclaration result = new EnumDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -259,17 +239,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -306,23 +282,17 @@
 		return this.enumConstants;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AsbtractTypeDeclaration.
-	 */
+	@Override
 	ITypeBinding internalResolveBinding() {
 		return this.ast.getBindingResolver().resolveType(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize()
 			+ (this.optionalDocComment == null ? 0 : getJavadoc().treeSize())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.java
new file mode 100644
index 0000000..1354c5d
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExportsDirective.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Exports directive AST node type (added in JLS9 API).
+ * <pre>
+ * ExportsDirective:
+ *     <b>exports</b> PackageName [ <b>to</b>  ModuleName {<b>,</b> ModuleName } ] <b>;</b>
+ * </pre>
+ *
+ * @since 3.14
+ * 
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings({"rawtypes"})
+public class ExportsDirective extends ModulePackageAccess {
+
+	/**
+	 * The "name" structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+			internalNamePropertyFactory(ExportsDirective.class);
+
+	/**
+	 * The "modules" structural property of this node type (element type: {@link Name}).
+	 */
+	public static final ChildListPropertyDescriptor MODULES_PROPERTY =
+			internalModulesPropertyFactory(ExportsDirective.class);
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List properyList = new ArrayList(3);
+		createPropertyList(ExportsDirective.class, properyList);
+		addProperty(NAME_PROPERTY, properyList);
+		addProperty(MODULES_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * Creates a new AST node for an export directive owned by the
+	 * given AST. The export directive initially is a regular (non-targetted)
+	 * single package export for an unspecified, but legal, Java package name.
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	ExportsDirective(AST ast) {
+		super(ast);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final ChildPropertyDescriptor internalNameProperty() {
+		return NAME_PROPERTY;
+	}
+
+	@Override
+	final ChildListPropertyDescriptor internalModulesProperty() {
+		return MODULES_PROPERTY;
+	}
+
+	@Override
+	final int getNodeType0() {
+		return EXPORTS_DIRECTIVE;
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		return cloneHelper(target, new ExportsDirective(target));
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		acceptVisitChildren(visitChildren, visitor);
+		visitor.endVisit(this);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.java
index 8178d18..97d3d02 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionMethodReference.java
@@ -102,23 +102,17 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on MethodReference.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalTypeArgumentsProperty() {
 		return TYPE_ARGUMENTS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -140,9 +134,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPE_ARGUMENTS_PROPERTY) {
 			return typeArguments();
@@ -151,16 +143,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return EXPRESSION_METHOD_REFERENCE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ExpressionMethodReference result = new ExpressionMethodReference(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -171,17 +159,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -239,6 +223,7 @@
 	 * @return the live list of type arguments
 	 *    (element type: {@link Type})
 	 */
+	@Override
 	public List typeArguments() {
 		return this.typeArguments;
 	}
@@ -283,17 +268,13 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.java
index a0d8916..2d880c0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ExpressionStatement.java
@@ -87,16 +87,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -110,16 +106,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return EXPRESSION_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ExpressionStatement result = new ExpressionStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -128,17 +120,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -187,16 +175,12 @@
 		postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.java
index 44417c2..5ec69c1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldAccess.java
@@ -128,16 +128,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -159,16 +155,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return FIELD_ACCESS;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		FieldAccess result = new FieldAccess(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -177,17 +169,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -277,9 +265,7 @@
 		postReplaceChild(oldChild, fieldName, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
@@ -301,9 +287,7 @@
 		return this.ast.getBindingResolver().resolveField(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.java
index 3f5130a..d1eecae 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/FieldDeclaration.java
@@ -161,13 +161,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -181,9 +180,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -205,9 +202,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -219,37 +214,27 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		return MODIFIERS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return FIELD_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		FieldDeclaration result = new FieldDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -267,17 +252,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -350,16 +331,12 @@
 		return this.variableDeclarationFragments;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.java
index 35bacb7..fbda27a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ForStatement.java
@@ -140,17 +140,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -172,9 +167,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == INITIALIZERS_PROPERTY) {
 			return initializers();
@@ -186,16 +179,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return FOR_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ForStatement result = new ForStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -209,17 +198,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -341,16 +326,12 @@
 		postReplaceChild(oldChild, statement, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.java
index cd068a5..f3f2b1d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IAnnotationBinding.java
@@ -59,6 +59,7 @@
 	 *
 	 * @return the name of the annotation type
 	 */
+	@Override
 	public String getName();
 
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IBinding.java
index fe0ee8b..8f290a3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -89,6 +89,16 @@
 	public static final int MEMBER_VALUE_PAIR = 6;
 
 	/**
+	 * Kind constant (value 7) indicating a module binding (added in JLS9 API).
+	 * Bindings of this kind can be safely cast to <code>IModuleBinding</code>.
+	 *
+	 * @see #getKind()
+	 * @see IModuleBinding
+	 * @since 3.14
+	 */
+	public static final int MODULE = 7;
+
+	/**
 	 * Returns the resolved declaration annotations associated with this binding.
 	 * <ul>
 	 * <li>Package bindings - these are annotations on a package declaration.
@@ -123,7 +133,8 @@
 	 * 	<code>VARIABLE</code>,
 	 * 	<code>METHOD</code>,
 	 * 	<code>ANNOTATION</code>,
-	 * or <code>MEMBER_VALUE_PAIR</code>.
+	 *  <code>MEMBER_VALUE_PAIR</code>, or
+	 * <code>MODULE</code>.
 	 * <p>
 	 * Note that additional kinds might be added in the
 	 * future, so clients should not assume this list is exhaustive and
@@ -214,6 +225,7 @@
 	 * <li>the constructor of an anonymous class</li>
 	 * <li>member value pairs</li>
 	 * <li>synthetic bindings</li>
+	 * <li>problem package bindings (since Java 9)</li>
 	 * </ul>
 	 * For all other kind of type, method, variable, annotation and package bindings,
 	 * this method returns non-<code>null</code>.
@@ -315,6 +327,7 @@
 	 * @return {@inheritDoc}
 	 * @see ITypeBinding#getTypeDeclaration()
 	 */
+	@Override
 	public boolean equals(Object obj);
 
 	/**
@@ -350,5 +363,6 @@
 	 *
 	 * @return a debug string
 	 */
+	@Override
 	public String toString();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.java
index 712cc72..f79a002 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMemberValuePairBinding.java
@@ -26,6 +26,7 @@
  *
  * @return the name of the member
  */
+@Override
 public String getName();
 
 /**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.java
index 1092c89..810c14f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IMethodBinding.java
@@ -76,6 +76,7 @@
 	 * @return the name of this method, or the declared name of this
 	 *   constructor's declaring class
 	 */
+	@Override
 	public String getName();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.java
new file mode 100644
index 0000000..2ad4e0f
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IModuleBinding.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+/**
+ * A module binding represents a module (added in JLS9 API).
+ *
+ * @since 3.14
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface IModuleBinding extends IBinding {
+
+	@Override
+	public default int getKind() {
+		return IBinding.MODULE;
+	}
+
+	/**
+	 * Returns whether this module is open or not.
+	 *
+	 * @return <code>true</code> if open, <code>false</code> otherwise
+	 */
+	public abstract boolean isOpen();
+
+	/**
+	 * Returns all required modules.
+	 * <p>The resulting bindings are in no particular order.</p>
+	 * 
+	 * @return all required modules
+	 */
+	public abstract IModuleBinding[] getRequiredModules();
+
+	/**
+	 * Returns all exported packages.
+	 * <p>The resulting bindings are in no particular order.</p>
+	 *
+	 * @return array of exported package bindings
+	 */
+	public abstract IPackageBinding[] getExportedPackages();
+
+	/**
+	 * If this module exports the given package to specific modules, returns the array of names of 
+	 * modules, otherwise returns an empty array.
+	 * 
+	 * @param packageBinding a package binding for which targeted modules are declared
+	 * @return array of names of targeted modules
+	 */
+	public abstract String[] getExportedTo(IPackageBinding packageBinding);
+
+	/**
+	 * Returns all opened packages.
+	 * <p>The resulting bindings are in no particular order.</p>
+	 *
+	 * @return array of package bindings
+	 */
+	public abstract IPackageBinding[] getOpenedPackages();
+
+	/**
+	 * If this module opens the given package to specific modules, returns the array of names of
+	 * modules, otherwise returns an empty array.
+	 * <p>The resulting bindings are in no particular order.</p>
+	 *
+	 * @param packageBinding a package binding for which targeted modules are declared
+	 * @return array of names of targeted modules
+	 */
+	public abstract String[] getOpenedTo(IPackageBinding packageBinding);
+
+	/**
+	 * Returns the services used by this module.
+	 * <p>The resulting bindings are in no particular order.</p>
+	 * 
+	 * @return array of type bindings
+	 */
+	public abstract ITypeBinding[] getUses();
+
+	/**
+	 * Returns the services provided by this module.
+	 * <p>The resulting services are in no particular order.</p>
+	 *
+	 * @return array of services
+	 */
+	public abstract ITypeBinding[] getServices();
+
+	/**
+	 * Returns the implementations that implement the given service in this module.
+	 *
+	 * @return array of implementation type bindings, in declaration order
+	 */
+	public abstract ITypeBinding[] getImplementations(ITypeBinding service);
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.java
index 2dbcd68..d5d0faa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IPackageBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,7 @@
 	 * @return the name of the package represented by this binding, or
 	 *    an empty string for an unnamed package
 	 */
+	@Override
 	public String getName();
 
 	/**
@@ -49,6 +50,16 @@
 	 */
 	public String[] getNameComponents();
 
+	/**
+	 * Returns the binding of the module associated with this package binding.
+	 * @return the binding of the module associated with this package, or
+	 * <code>null</code> if none
+	 * 
+	 * @since 3.14
+	 */
+	public default IModuleBinding getModule() {
+		return null;
+	}
 //	/**
 //	 * Finds and returns the binding for the class or interface with the given
 //	 * name declared in this package.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.java
index 649da54..fcd9099 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ITypeBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@
 package org.aspectj.org.eclipse.jdt.core.dom;
 
 /**
- * A type binding represents fully-resolved type. There are a number of
+ * A type binding represents a fully-resolved type. There are a number of
  * different kinds of type bindings:
  * <ul>
  * <li>a class - represents the class declaration;
@@ -277,6 +277,27 @@
 	public IBinding getDeclaringMember();
 
 	/**
+	 * Returns the binding of the module associated with the package in which
+	 * this type is declared.
+	 *
+	 * <p>The module of a recovered type reference binding is the module
+	 * associated with the package returned by {@link #getPackage()} ie either
+	 * the module associated with the package of the enclosing type, or, 
+	 * if the type name is the name of a {@linkplain AST#resolveWellKnownType(String) 
+	 * well-known type},  the module associated with the package of the matching 
+	 * well-known type.</p>
+	 *
+	 * @return the binding of the module associated with the package
+	 * in which this class, interface, enum, or annotation type is declared, 
+	 * or <code>null</code> if this type binding represents a primitive type, an array type, 
+	 * the null type, a type variable, a wildcard type or a capture binding.
+	 *
+	 * @since 3.14
+	 */
+	public default IModuleBinding getModule() {
+		return null;
+	}
+	/**
 	 * Returns the dimensionality of this array type, or <code>0</code> if this
 	 * is not an array type binding.
 	 *
@@ -388,6 +409,7 @@
 	 * if this type does not represent a class, an interface, an enum, an annotation
 	 * type or a recovered type.
 	 */
+	@Override
 	public int getModifiers();
 
 	/**
@@ -435,6 +457,7 @@
 	 * or the empty string if it has none
 	 * @see #getQualifiedName()
 	 */
+	@Override
 	public String getName();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.java
index 7eec980..d35a728 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IVariableBinding.java
@@ -59,6 +59,7 @@
 	 *
 	 * @return the name of this field or local variable
 	 */
+	@Override
 	public String getName();
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.java
index 6b7b734..7560b59 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IfStatement.java
@@ -111,16 +111,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -150,16 +146,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return IF_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		IfStatement result = new IfStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -172,17 +164,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -328,16 +316,12 @@
 		postReplaceChild(oldChild, statement, ELSE_STATEMENT_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.java
index 45dcb59..ff1429c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ImportDeclaration.java
@@ -132,16 +132,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == ON_DEMAND_PROPERTY) {
 			if (get) {
@@ -163,9 +159,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -179,16 +173,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return IMPORT_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ImportDeclaration result = new ImportDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -200,17 +190,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -354,16 +340,12 @@
 		return this.ast.getBindingResolver().resolveImport(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.java
index e65a716..9d03678 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InfixExpression.java
@@ -79,6 +79,7 @@
 		 *
 		 * @return the character sequence for the operator
 		 */
+		@Override
 		public String toString() {
 			return this.token;
 		}
@@ -268,16 +269,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == OPERATOR_PROPERTY) {
 			if (get) {
@@ -291,9 +288,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LEFT_OPERAND_PROPERTY) {
 			if (get) {
@@ -315,9 +310,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == EXTENDED_OPERANDS_PROPERTY) {
 			return extendedOperands();
@@ -326,16 +319,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return INFIX_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		InfixExpression result = new InfixExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -350,17 +339,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -518,17 +503,13 @@
 		return this.extendedOperands;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Initializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Initializer.java
index 0eaf604..5825ff8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Initializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Initializer.java
@@ -130,13 +130,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -150,9 +149,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -174,9 +171,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -185,37 +180,27 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		return MODIFIERS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return INITIALIZER;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Initializer result = new Initializer(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -231,17 +216,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -294,16 +275,12 @@
 		postReplaceChild(oldChild, body, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.java
index 6f2cbe5..a7d42e5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InstanceofExpression.java
@@ -94,16 +94,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LEFT_OPERAND_PROPERTY) {
 			if (get) {
@@ -125,16 +121,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return INSTANCEOF_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		InstanceofExpression result = new InstanceofExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -143,17 +135,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -244,17 +232,13 @@
 		postReplaceChild(oldChild, referenceType, RIGHT_OPERAND_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.java
index 81c328c..ecc109a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/InternalASTRewrite.java
@@ -85,6 +85,7 @@
 				 * original AST has been modified from its original form. This means that
 				 * one cannot trust that the root of the given node is the compilation unit.
 				 */
+				@Override
 				public SourceRange computeSourceRange(ASTNode node) {
 					int extendedStartPosition = rootNode.getExtendedStartPosition(node);
 					int extendedLength = rootNode.getExtendedLength(node);
@@ -175,6 +176,7 @@
 		return this.root;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer();
 		buf.append("Events:\n"); //$NON-NLS-1$
@@ -182,16 +184,19 @@
 		return buf.toString();
 	}
 
+	@Override
 	void preValueChangeEvent(ASTNode node, SimplePropertyDescriptor property) {
 		// force event creation
 		getNodeEvent(node, property);
 	}
 
+	@Override
 	void postValueChangeEvent(ASTNode node, SimplePropertyDescriptor property) {
 		NodeRewriteEvent event = getNodeEvent(node, property);
 		event.setNewValue(node.getStructuralProperty(property));
 	}
 
+	@Override
 	void preAddChildEvent(ASTNode node, ASTNode child,	StructuralPropertyDescriptor property) {
 		if(property.isChildProperty()) {
 			NodeRewriteEvent event = getNodeEvent(node, property);
@@ -205,6 +210,7 @@
 		}
 	}
 
+	@Override
 	void postAddChildEvent(ASTNode node, ASTNode child,	StructuralPropertyDescriptor property) {
 		if(property.isChildListProperty()) {
 
@@ -226,6 +232,7 @@
 		}
 	}
 
+	@Override
 	void preRemoveChildEvent(ASTNode node, ASTNode child, StructuralPropertyDescriptor property) {
 		if(property.isChildProperty()) {
 			NodeRewriteEvent event = getNodeEvent(node, property);
@@ -242,6 +249,7 @@
 		}
 	}
 
+	@Override
 	void preReplaceChildEvent(ASTNode node, ASTNode child, ASTNode newChild, StructuralPropertyDescriptor property) {
 		if(property.isChildProperty()) {
 			NodeRewriteEvent event = getNodeEvent(node, property);
@@ -261,11 +269,13 @@
 	}
 
 
+	@Override
 	void preCloneNodeEvent(ASTNode node) {
 		this.cloneDepth++;
 	}
 
 
+	@Override
 	void postCloneNodeEvent(ASTNode node, ASTNode clone) {
 		if(node.ast == this.root.ast && clone.ast == this.root.ast) {
 			if((node.getFlags() & ASTNode.ORIGINAL) != 0) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.java
index 0ee2dc5..33ebc67 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/IntersectionType.java
@@ -82,16 +82,12 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPES_PROPERTY) {
 			return types();
@@ -100,16 +96,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return INTERSECTION_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		IntersectionType result = new IntersectionType(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -118,17 +110,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -151,16 +139,12 @@
 		return this.types;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.java
index ffeb5be..467ef23 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Javadoc.java
@@ -133,16 +133,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == COMMENT_PROPERTY) {
 			if (get) {
@@ -156,9 +152,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TAGS_PROPERTY) {
 			return tags();
@@ -167,16 +161,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return JAVADOC;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Javadoc result = new Javadoc(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -187,17 +177,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -300,9 +286,7 @@
 		return this.tags;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = super.memSize() + 2 * 4;
 		if (this.comment != MINIMAL_DOC_COMMENT) {
@@ -312,9 +296,7 @@
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize() + this.tags.listSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.java
index 9cd7b8f..b087806 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LabeledStatement.java
@@ -98,16 +98,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == LABEL_PROPERTY) {
 			if (get) {
@@ -129,16 +125,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return LABELED_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		LabeledStatement result = new LabeledStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -149,17 +141,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -257,16 +245,12 @@
 		postReplaceChild(oldChild, statement, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.java
index 97ab36c..3ea873f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LambdaExpression.java
@@ -124,16 +124,12 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == PARENTHESES_PROPERTY) {
 			if (get) {
@@ -147,9 +143,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == PARAMETERS_PROPERTY) {
 			return parameters();
@@ -157,10 +151,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == BODY_PROPERTY) {
 			if (get) {
@@ -174,16 +166,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return LAMBDA_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		LambdaExpression result = new LambdaExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -193,17 +181,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -316,16 +300,12 @@
 		return this.ast.getBindingResolver().resolveMethod(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LineComment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LineComment.java
index 7f00cb7..8d29eca 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LineComment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/LineComment.java
@@ -73,55 +73,41 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return LINE_COMMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		LineComment result = new LineComment(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.java
index 3c61490..1686f71 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MarkerAnnotation.java
@@ -76,16 +76,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_NAME_PROPERTY) {
 			if (get) {
@@ -99,23 +95,17 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalTypeNameProperty() {
 		return TYPE_NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return MARKER_ANNOTATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MarkerAnnotation result = new MarkerAnnotation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +113,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -143,16 +129,12 @@
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.java
index cab5c9a..95dd3b2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberRef.java
@@ -100,16 +100,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -131,16 +127,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return MEMBER_REF;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MemberRef result = new MemberRef(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -149,17 +141,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -253,16 +241,12 @@
 		return this.ast.getBindingResolver().resolveReference(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.java
index e9e33a3..dcac201 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePair.java
@@ -98,16 +98,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -129,16 +125,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return MEMBER_VALUE_PAIR;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MemberValuePair result = new MemberValuePair(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -147,17 +139,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -262,16 +250,12 @@
 		postReplaceChild(oldChild, value, VALUE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.java
index b617f5e..30ea0b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MemberValuePairBinding.java
@@ -99,31 +99,38 @@
 		this.bindingResolver = resolver;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		return AnnotationBinding.NoAnnotations;
 	}
 
+	@Override
 	public IJavaElement getJavaElement() {
 		return null;
 	}
 
+	@Override
 	public String getKey() {
 		// TODO when implementing, update spec in IBinding
 		return null;
 	}
 
+	@Override
 	public int getKind() {
 		return IBinding.MEMBER_VALUE_PAIR;
 	}
 
+	@Override
 	public IMethodBinding getMethodBinding() {
 		return this.bindingResolver.getMethodBinding(this.internalPair.getMethodBinding());
 	}
 
+	@Override
 	public int getModifiers() {
 		return Modifier.NONE;
 	}
 
+	@Override
 	public String getName() {
 		if (this.internalPair == null)
 			return null;
@@ -131,6 +138,7 @@
 		return membername == null ? null : new String(membername);
 	}
 
+	@Override
 	public Object getValue() {
 		if (this.value == null)
 			init();
@@ -151,6 +159,7 @@
 		return this.internalPair == null ? null : this.internalPair.getName();
 	}
 
+	@Override
 	public boolean isDefault() {
 		Object value2 = getValue();
 		Object defaultValue = getMethodBinding().getDefaultValue();
@@ -164,11 +173,13 @@
 		return defaultValue.equals(value2);
 	}
 
+	@Override
 	public boolean isDeprecated() {
 		MethodBinding methodBinding = this.internalPair.getMethodBinding();
 		return methodBinding == null ? false : methodBinding.isDeprecated();
 	}
 
+	@Override
 	public boolean isEqualTo(IBinding binding) {
 		if (this == binding)
 			return true;
@@ -219,18 +230,17 @@
 		}
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isRecovered()
-	 */
+	@Override
 	public boolean isRecovered() {
 		return false;
 	}
 
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append(getName());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.java
index 61e37f0..6f61a55 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodBinding.java
@@ -55,6 +55,7 @@
 		this.binding = binding;
 	}
 
+	@Override
 	public boolean isAnnotationMember() {
 		return getDeclaringClass().isAnnotation();
 	}
@@ -62,6 +63,7 @@
 	/**
 	 * @see IMethodBinding#isConstructor()
 	 */
+	@Override
 	public boolean isConstructor() {
 		return this.binding.isConstructor();
 	}
@@ -70,6 +72,7 @@
 	 * @see IMethodBinding#isDefaultConstructor()
 	 * @since 3.0
 	 */
+	@Override
 	public boolean isDefaultConstructor() {
 		final ReferenceBinding declaringClassBinding = this.binding.declaringClass;
 		if (declaringClassBinding.isRawType()) {
@@ -88,6 +91,7 @@
 	/**
 	 * @see IBinding#getName()
 	 */
+	@Override
 	public String getName() {
 		if (this.name == null) {
 			if (this.binding.isConstructor()) {
@@ -99,6 +103,7 @@
 		return this.name;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		if (this.annotations != null) {
 			return this.annotations;
@@ -110,6 +115,7 @@
 	/**
 	 * @see IMethodBinding#getDeclaringClass()
 	 */
+	@Override
 	public ITypeBinding getDeclaringClass() {
 		if (this.declaringClass == null) {
 			this.declaringClass = this.resolver.getTypeBinding(this.binding.declaringClass);
@@ -122,6 +128,7 @@
 		return null;
 	}
 
+	@Override
 	public IAnnotationBinding[] getParameterAnnotations(int index) {
 		if (getParameterTypes() == NO_TYPE_BINDINGS) {
 			return AnnotationBinding.NoAnnotations;
@@ -155,6 +162,7 @@
 	/**
 	 * @see IMethodBinding#getParameterTypes()
 	 */
+	@Override
 	public ITypeBinding[] getParameterTypes() {
 		if (this.parameterTypes != null) {
 			return this.parameterTypes;
@@ -189,12 +197,14 @@
 	/**
 	 * @see IMethodBinding#getDeclaredReceiverType()
 	 */
+	@Override
 	public ITypeBinding getDeclaredReceiverType() {
 		return this.resolver.getTypeBinding(this.binding.receiver);
 	}
 	/**
 	 * @see IMethodBinding#getReturnType()
 	 */
+	@Override
 	public ITypeBinding getReturnType() {
 		if (this.returnType == null) {
 			this.returnType = this.resolver.getTypeBinding(this.binding.returnType);
@@ -234,6 +244,7 @@
 		return AnnotationBinding.NoAnnotations;
 	}
 
+	@Override
 	public Object getDefaultValue() {
 		if (isAnnotationMember())
 			return MemberValuePairBinding.buildDOMValue(this.binding.getDefaultValue(), this.resolver);
@@ -243,6 +254,7 @@
 	/**
 	 * @see IMethodBinding#getExceptionTypes()
 	 */
+	@Override
 	public ITypeBinding[] getExceptionTypes() {
 		if (this.exceptionTypes != null) {
 			return this.exceptionTypes;
@@ -263,6 +275,7 @@
 		return this.exceptionTypes = exTypes;
 	}
 
+	@Override
 	public IJavaElement getJavaElement() {
 		JavaElement element = getUnresolvedJavaElement();
 		if (element == null)
@@ -287,6 +300,7 @@
 	/**
 	 * @see IBinding#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return IBinding.METHOD;
 	}
@@ -294,6 +308,7 @@
 	/**
 	 * @see IBinding#getModifiers()
 	 */
+	@Override
 	public int getModifiers() {
 		return this.binding.getAccessFlags() & VALID_MODIFIERS;
 	}
@@ -301,6 +316,7 @@
 	/**
 	 * @see IBinding#isDeprecated()
 	 */
+	@Override
 	public boolean isDeprecated() {
 		return this.binding.isDeprecated();
 	}
@@ -308,6 +324,7 @@
 	/**
 	 * @see IBinding#isRecovered()
 	 */
+	@Override
 	public boolean isRecovered() {
 		return false;
 	}
@@ -315,6 +332,7 @@
 	/**
 	 * @see IBinding#isSynthetic()
 	 */
+	@Override
 	public boolean isSynthetic() {
 		return this.binding.isSynthetic();
 	}
@@ -323,6 +341,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#isVarargs()
 	 * @since 3.1
 	 */
+	@Override
 	public boolean isVarargs() {
 		return this.binding.isVarargs();
 	}
@@ -330,6 +349,7 @@
 	/**
 	 * @see IBinding#getKey()
 	 */
+	@Override
 	public String getKey() {
 		if (this.key == null) {
 			this.key = new String(this.binding.computeUniqueKey());
@@ -341,6 +361,7 @@
 	 * @see IBinding#isEqualTo(IBinding)
 	 * @since 3.1
 	 */
+	@Override
 	public boolean isEqualTo(IBinding other) {
 		if (other == this) {
 			// identical binding - equal (key or no key)
@@ -360,6 +381,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#getTypeParameters()
 	 */
+	@Override
 	public ITypeBinding[] getTypeParameters() {
 		if (this.typeParameters != null) {
 			return this.typeParameters;
@@ -384,6 +406,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#isGenericMethod()
 	 * @since 3.1
 	 */
+	@Override
 	public boolean isGenericMethod() {
 		// equivalent to return getTypeParameters().length > 0;
 		if (this.typeParameters != null) {
@@ -396,6 +419,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#getTypeArguments()
 	 */
+	@Override
 	public ITypeBinding[] getTypeArguments() {
 		if (this.typeArguments != null) {
 			return this.typeArguments;
@@ -423,6 +447,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#isParameterizedMethod()
 	 */
+	@Override
 	public boolean isParameterizedMethod() {
 		return (this.binding instanceof ParameterizedGenericMethodBinding)
 			&& !((ParameterizedGenericMethodBinding) this.binding).isRaw;
@@ -431,11 +456,13 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#isRawMethod()
 	 */
+	@Override
 	public boolean isRawMethod() {
 		return (this.binding instanceof ParameterizedGenericMethodBinding)
 			&& ((ParameterizedGenericMethodBinding) this.binding).isRaw;
 	}
 
+	@Override
 	public boolean isSubsignature(IMethodBinding otherMethod) {
 		try {
 			LookupEnvironment lookupEnvironment = this.resolver.lookupEnvironment();
@@ -451,6 +478,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding#getMethodDeclaration()
 	 */
+	@Override
 	public IMethodBinding getMethodDeclaration() {
 		return this.resolver.getMethodBinding(this.binding.original());
 	}
@@ -458,6 +486,7 @@
 	/**
 	 * @see IMethodBinding#overrides(IMethodBinding)
 	 */
+	@Override
 	public boolean overrides(IMethodBinding otherMethod) {
 			LookupEnvironment lookupEnvironment = this.resolver.lookupEnvironment();
 			return lookupEnvironment != null
@@ -468,6 +497,7 @@
 	 * For debugging purpose only.
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		return this.binding.toString();
 	}
@@ -496,6 +526,7 @@
 		/**
 		 * @see IBinding#getModifiers()
 		 */
+		@Override
 		public int getModifiers() {
 			return super.getModifiers() & ~ClassFileConstants.AccAbstract;
 		}
@@ -503,6 +534,7 @@
 		/**
 		 * @see IBinding#getKey()
 		 */
+		@Override
 		public String getKey() {
 			return this.implementation.getKey();
 		}
@@ -517,6 +549,7 @@
 			return this.implementation.getParameterAnnotations(paramIndex);
 		}
 
+		@Override
 		public IAnnotationBinding[] getAnnotations() {
 			return this.implementation.getAnnotations();
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.java
index cf5fc73..0bf4739 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodDeclaration.java
@@ -254,7 +254,7 @@
 	public static List propertyDescriptors(int apiLevel) {
 		if (apiLevel == AST.JLS2_INTERNAL) {
 			return PROPERTY_DESCRIPTORS_2_0;
-		} else if (apiLevel < AST.JLS8) {
+		} else if (apiLevel < AST.JLS8_INTERNAL) {
 			return PROPERTY_DESCRIPTORS_3_0;
 		} else {
 			return PROPERTY_DESCRIPTORS_8_0;
@@ -380,7 +380,7 @@
 		if (ast.apiLevel >= AST.JLS3_INTERNAL) {
 			this.typeParameters = new ASTNode.NodeList(TYPE_PARAMETERS_PROPERTY);
 		}
-		if (ast.apiLevel < AST.JLS8) {
+		if (ast.apiLevel < AST.JLS8_INTERNAL) {
 			this.thrownExceptions = new ASTNode.NodeList(THROWN_EXCEPTIONS_PROPERTY);
 		} else {
 			this.extraDimensions = new ASTNode.NodeList(EXTRA_DIMENSIONS2_PROPERTY);
@@ -392,13 +392,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -420,9 +419,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == CONSTRUCTOR_PROPERTY) {
 			if (get) {
@@ -436,9 +433,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -500,9 +495,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -526,37 +519,27 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		return MODIFIERS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return METHOD_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MethodDeclaration result = new MethodDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -576,18 +559,18 @@
 		}
 		result.setConstructor(isConstructor());
 		result.setName((SimpleName) getName().clone(target));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.setReceiverType((Type) ASTNode.copySubtree(target, getReceiverType()));
 			result.setReceiverQualifier((SimpleName) ASTNode.copySubtree(target, getReceiverQualifier()));
 		}
 		result.parameters().addAll(
 			ASTNode.copySubtrees(target, parameters()));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.extraDimensions().addAll(ASTNode.copySubtrees(target, extraDimensions()));
 		} else {
 			result.setExtraDimensions(getExtraDimensions());
 		}
-		if (this.ast.apiLevel() >= AST.JLS8) {
+		if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 			result.thrownExceptionTypes().addAll(ASTNode.copySubtrees(target, thrownExceptionTypes()));
 		} else {
 			result.thrownExceptions().addAll(ASTNode.copySubtrees(target, thrownExceptions()));			
@@ -597,17 +580,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -622,12 +601,12 @@
 			}
 			// n.b. visit return type even for constructors
 			acceptChild(visitor, getName());
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChild(visitor, this.optionalReceiverType);
 				acceptChild(visitor, this.optionalReceiverQualifier);
 			}
 			acceptChildren(visitor, this.parameters);
-			if (this.ast.apiLevel() >= AST.JLS8) {
+			if (this.ast.apiLevel() >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.extraDimensions);
 				acceptChildren(visitor, this.thrownExceptionTypes);				
 			} else {
@@ -1149,16 +1128,12 @@
 		return this.ast.getBindingResolver().resolveMethod(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 13 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
@@ -1170,7 +1145,7 @@
 			+ (this.optionalReceiverQualifier == null ? 0 : this.optionalReceiverQualifier.treeSize())
 			+ (this.returnType == null ? 0 : this.returnType.treeSize())
 			+ this.parameters.listSize()
-			+ (this.ast.apiLevel < AST.JLS8
+			+ (this.ast.apiLevel < AST.JLS8_INTERNAL
 					? this.thrownExceptions.listSize()
 					: this.extraDimensions.listSize() + this.thrownExceptionTypes.listSize())
 			+ (this.optionalBody == null ? 0 : getBody().treeSize());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.java
index f16d43b..22988ad 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodInvocation.java
@@ -148,16 +148,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -179,9 +175,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ARGUMENTS_PROPERTY) {
 			return arguments();
@@ -193,16 +187,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return METHOD_INVOCATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MethodInvocation result = new MethodInvocation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -216,17 +206,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -370,17 +356,13 @@
 		return this.ast.getBindingResolver().resolveMethod(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.java
index 0d6d704..46b3f60 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRef.java
@@ -118,16 +118,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -149,9 +145,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == PARAMETERS_PROPERTY) {
 			return parameters();
@@ -160,16 +154,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return METHOD_REF;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MethodRef result = new MethodRef(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -180,17 +170,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -297,16 +283,12 @@
 		return this.ast.getBindingResolver().resolveReference(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.java
index d50f830..263e6e7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/MethodRefParameter.java
@@ -139,16 +139,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -170,9 +166,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == VARARGS_PROPERTY) {
 			if (get) {
@@ -186,16 +180,12 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return METHOD_REF_PARAMETER;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		MethodRefParameter result = new MethodRefParameter(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -207,17 +197,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -334,16 +320,12 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 2 * 5;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Modifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Modifier.java
index dcdd041..6c0d4f4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Modifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Modifier.java
@@ -205,6 +205,7 @@
 		 * @return the keyword for the modifier
 		 * @see #toKeyword(String)
 		 */
+		@Override
 		public String toString() {
 			return this.keyword;
 		}
@@ -517,19 +518,13 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		Modifier result = new Modifier(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -547,17 +542,12 @@
 		return this.modifierKeyword;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	final int getNodeType0() {
 		return MODIFIER;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == KEYWORD_PROPERTY) {
 			if (get) {
@@ -571,9 +561,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
@@ -591,6 +579,7 @@
 	/**
 	 * @see IExtendedModifier#isAnnotation()
 	 */
+	@Override
 	public boolean isAnnotation() {
 		return false;
 	}
@@ -608,6 +597,7 @@
 	/**
 	 * @see IExtendedModifier#isModifier()
 	 */
+	@Override
 	public boolean isModifier() {
 		return true;
 	}
@@ -711,10 +701,7 @@
 		return this.modifierKeyword == ModifierKeyword.DEFAULT_KEYWORD;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	int memSize() {
 		// treat ModifierKeyword as free
 		return BASE_NODE_SIZE + 1 * 4;
@@ -736,19 +723,13 @@
 		postValueChange(KEYWORD_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 * @since 3.0
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.java
new file mode 100644
index 0000000..f246976
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleBinding.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.Arrays;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+import org.aspectj.org.eclipse.jdt.internal.core.NameLookup;
+import org.aspectj.org.eclipse.jdt.internal.core.NameLookup.Answer;
+import org.aspectj.org.eclipse.jdt.internal.core.SearchableEnvironment;
+
+/**
+ * Internal implementation of module bindings.
+ * @since 3.14
+ */
+class ModuleBinding implements IModuleBinding {
+
+	protected static final ITypeBinding[] NO_TYPE_BINDINGS = new ITypeBinding[0];
+	private String name = null;
+	private volatile String key;
+	private boolean isOpen = false;
+
+	private org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding binding;
+	protected BindingResolver resolver;
+
+	private IAnnotationBinding[] annotations;
+	private IModuleBinding[] requiredModules;
+	private IPackageBinding[] exports; // cached
+	private IPackageBinding[] opens; // cached
+	private ITypeBinding[] uses; // cached
+	private ITypeBinding[] services; // cached
+
+	ModuleBinding(BindingResolver resolver, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding binding) {
+		this.resolver = resolver;
+		this.binding = binding;
+		this.isOpen = binding.isOpen();
+	}
+
+	@Override
+	public IAnnotationBinding[] getAnnotations() {
+		if (this.annotations == null) {
+			this.annotations = resolveAnnotationBindings(this.binding.getAnnotations());
+		}
+		return this.annotations;
+	}
+
+	private IAnnotationBinding[] resolveAnnotationBindings(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding[] internalAnnotations) {
+		int length = internalAnnotations == null ? 0 : internalAnnotations.length;
+		if (length != 0) {
+			IAnnotationBinding[] tempAnnotations = new IAnnotationBinding[length];
+			int convertedAnnotationCount = 0;
+			for (int i = 0; i < length; i++) {
+				org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding internalAnnotation = internalAnnotations[i];
+				if (internalAnnotation == null)
+					break;
+				IAnnotationBinding annotationInstance = this.resolver.getAnnotationInstance(internalAnnotation);
+				if (annotationInstance == null)
+					continue;
+				tempAnnotations[convertedAnnotationCount++] = annotationInstance;
+			}
+			if (convertedAnnotationCount != length) {
+				if (convertedAnnotationCount == 0) {
+					return this.annotations = AnnotationBinding.NoAnnotations;
+				}
+				System.arraycopy(tempAnnotations, 0, (tempAnnotations = new IAnnotationBinding[convertedAnnotationCount]), 0, convertedAnnotationCount);
+			}
+			return tempAnnotations;
+		}
+		return AnnotationBinding.NoAnnotations;
+	}
+
+	@Override
+	public String getName() {
+		if (this.name == null) {
+			char[] tmp = this.binding.moduleName;	
+			return tmp != null && tmp.length != 0 ? new String(tmp) : Util.EMPTY_STRING;
+		}
+		return this.name;
+	}
+
+	@Override
+	public int getModifiers() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	@Override
+	public boolean isDeprecated() {
+		return false;
+	}
+
+	@Override
+	public boolean isRecovered() {
+		return false;
+	}
+
+	@Override
+	public boolean isSynthetic() {
+		// TODO Auto-generated method stub
+		// TODO Java 9 no reference seen in jvms draft - only in sotm
+		// check on version change and after compiler ast implements isSynthetic return this.binding.isSynthetic();
+		
+		return false;
+	}
+
+	@Override
+	public IJavaElement getJavaElement() {
+		INameEnvironment nameEnvironment = this.binding.environment.nameEnvironment;
+		if (!(nameEnvironment instanceof SearchableEnvironment)) return null;
+		NameLookup nameLookup = ((SearchableEnvironment) nameEnvironment).nameLookup;
+		if (nameLookup == null) return null;
+		Answer answer = nameLookup.findModule(this.getName().toCharArray());
+		if (answer == null) return null;
+		return answer.module;
+	}
+
+	@Override
+	public String getKey() {
+		if (this.key == null) {
+			char[] k = this.binding.computeUniqueKey();
+			this.key = k == null || k == CharOperation.NO_CHAR ? Util.EMPTY_STRING : new String(k);
+		}
+		return this.key;
+	}
+
+	@Override
+	public boolean isEqualTo(IBinding other) {
+		if (other == this) // identical binding - equal (key or no key)
+			return true;
+		if (other == null) // other binding missing
+			return false;
+
+		if (!(other instanceof ModuleBinding))
+			return false;
+
+		org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding otherBinding = ((ModuleBinding) other).binding;
+		return BindingComparator.isEqual(this.binding, otherBinding);
+	}
+
+	@Override
+	public boolean isOpen() {
+		return this.isOpen;
+	}
+	@Override
+	public IModuleBinding[] getRequiredModules() {
+		if (this.requiredModules != null)
+			return this.requiredModules;
+
+		org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding[] reqs = this.binding.getRequires();
+		IModuleBinding[] result = new IModuleBinding[reqs != null ? reqs.length : 0];
+		for (int i = 0, l = result.length; i < l; ++i) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding req = reqs[i];
+			result[i] = req != null ? this.resolver.getModuleBinding(req) : null;
+		}
+		return this.requiredModules = result;
+	}
+
+	@Override
+	public IPackageBinding[] getExportedPackages() {
+		if (this.exports == null) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding[] compilerExports = this.binding.getExports();
+			this.exports = Arrays.stream(compilerExports)
+					.map(e -> this.resolver.getPackageBinding(e))
+					.toArray(IPackageBinding[]::new);
+		}
+		return this.exports;
+	}
+
+	@Override
+	public String[] getExportedTo(IPackageBinding packageBinding) {
+		return this.binding.getExportRestrictions(((PackageBinding) packageBinding).getCompilerBinding());
+	}
+
+	@Override
+	public IPackageBinding[] getOpenedPackages() {
+		if (this.opens == null) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding[] compilerOpens = this.binding.getOpens();
+			this.opens = Arrays.stream(compilerOpens)
+					.map(o -> this.resolver.getPackageBinding(o))
+					.toArray(IPackageBinding[]::new);
+		}
+		return this.opens;
+	}
+
+	@Override
+	public String[] getOpenedTo(IPackageBinding packageBinding) {
+		return this.binding.getOpenRestrictions(((PackageBinding) packageBinding).getCompilerBinding());
+	}
+
+	/*
+	 * helper method
+	 */
+	private ITypeBinding[] getTypes(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding[] types) {
+		int length = types == null ? 0 : types.length;
+		TypeBinding[] result = new TypeBinding[length];
+		for (int i = 0; i < length; ++i) {
+			result[i] = (TypeBinding) this.resolver.getTypeBinding(types[i]);
+		}
+		return result;
+	}
+
+	@Override
+	public ITypeBinding[] getUses() {
+		if (this.uses == null)
+			this.uses = getTypes(this.binding.getUses());
+		return this.uses;
+	}
+
+	@Override
+	public ITypeBinding[] getServices() {
+		if (this.services == null)
+			this.services = getTypes(this.binding.getServices());
+		return this.services;
+	}
+	@Override
+	public ITypeBinding[] getImplementations(ITypeBinding service) {
+		return getTypes(this.binding.getImplementations(((TypeBinding) service).binding));
+	}
+	/**
+	 * For debugging purpose only.
+	 * @see java.lang.Object#toString()
+	 */
+	@Override
+	public String toString() {
+		return this.binding.toString();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.java
new file mode 100644
index 0000000..e7b2c09
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDeclaration.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Module declaration AST node type representing the module descriptor file (added in JLS9 API).
+ *
+ * <pre>
+ * ModuleDeclaration:
+ *  [ Javadoc ] { Annotation } [ <b>open</b> ] <b>module</b> Name <b>{</b>
+ *        { RequiresDirective | ExportsDirective | OpensDirective | UsesDirective | ProvidesDirective }
+ *  <b>}</b>
+ * </pre>
+ * <p>
+ * </p>
+ *
+ * @since 3.14
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings("rawtypes")
+public class ModuleDeclaration extends ASTNode {
+
+	/**
+	 * The "javadoc" structural property of this node type (child type: {@link Javadoc}).
+	 */
+	public static final ChildPropertyDescriptor JAVADOC_PROPERTY =
+			new ChildPropertyDescriptor(ModuleDeclaration.class, "javadoc", Javadoc.class, OPTIONAL, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * The "annotations" structural property of this node type (element type: {@link Annotation}).
+	 */
+	public static final ChildListPropertyDescriptor ANNOTATIONS_PROPERTY =
+			new ChildListPropertyDescriptor(ModuleDeclaration.class, "annotations", Annotation.class, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * The "open" structural property of this node type (type: {@link Boolean}).
+	 */
+	public static final SimplePropertyDescriptor OPEN_PROPERTY =
+			new SimplePropertyDescriptor(ModuleDeclaration.class, "open", boolean.class, MANDATORY); //$NON-NLS-1$
+
+	/**
+	 * The "name" structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+			new ChildPropertyDescriptor(ModuleDeclaration.class, "name", Name.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * The "moduleDirectives" structural property of this node type (element type: {@link ModuleDirective}).
+	 */
+	public static final ChildListPropertyDescriptor MODULE_DIRECTIVES_PROPERTY =
+			new ChildListPropertyDescriptor(ModuleDeclaration.class, "moduleDirectives", ModuleDirective.class, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List properyList = new ArrayList(6);
+		createPropertyList(ModuleDeclaration.class, properyList);
+		addProperty(JAVADOC_PROPERTY, properyList);
+		addProperty(ANNOTATIONS_PROPERTY, properyList);
+		addProperty(OPEN_PROPERTY, properyList);
+		addProperty(NAME_PROPERTY, properyList);
+		addProperty(MODULE_DIRECTIVES_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * The doc comment, or <code>null</code> if none.
+	 * Defaults to none.
+	 */
+	private Javadoc optionalDocComment = null;
+
+	/**
+	 * The annotations (element type: {@link Annotation}).
+	 * Defaults to an empty list.
+	 *
+	 */
+	private ASTNode.NodeList annotations = new ASTNode.NodeList(ANNOTATIONS_PROPERTY);
+
+	/**
+	 * open versus normal; defaults to normal module.
+	 */
+	private boolean isOpen = false;
+
+	/**
+	 * The referenced module name; lazily initialized; defaults to a unspecified,
+	 * legal Java identifier.
+	 */
+	private Name name = null;
+
+	/**
+	 * The list of statements (element type: {@link ModuleDirective}).
+	 * Defaults to an empty list.
+	 */
+	private ASTNode.NodeList moduleStatements = new ASTNode.NodeList(MODULE_DIRECTIVES_PROPERTY);
+
+	ModuleDeclaration(AST ast) {
+		super(ast);
+		unsupportedBelow9();
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
+		if (property == OPEN_PROPERTY) {
+			if (get) {
+				return isOpen();
+			} else {
+				setOpen(value);
+				return false;
+			}
+		}
+		// allow default implementation to flag the error
+		return super.internalGetSetBooleanProperty(property, get, value);
+	}
+
+	@Override
+	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == JAVADOC_PROPERTY) {
+			if (get) {
+				return getJavadoc();
+			} else {
+				setJavadoc((Javadoc) child);
+				return null;
+			}
+		}
+		if (property == NAME_PROPERTY) {
+			if (get) {
+				return getName();
+			} else {
+				setName((Name) child);
+				return null;
+			}
+		}
+		// allow default implementation to flag the error
+		return super.internalGetSetChildProperty(property, get, child);
+	}
+
+	@Override
+	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
+		if (property == ANNOTATIONS_PROPERTY) {
+			return annotations();
+		}
+		if (property == MODULE_DIRECTIVES_PROPERTY) {
+			return moduleStatements();
+		}
+		// allow default implementation to flag the error
+		return super.internalGetChildListProperty(property);
+	}
+
+	@Override
+	int getNodeType0() {
+		return MODULE_DECLARATION;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	ASTNode clone0(AST target) {
+		ModuleDeclaration result = new ModuleDeclaration(target);
+		result.setSourceRange(getStartPosition(), getLength());
+		result.setJavadoc((Javadoc) ASTNode.copySubtree(target, getJavadoc()));
+		result.setOpen(isOpen());
+		result.annotations().addAll(ASTNode.copySubtrees(target, annotations()));
+		result.setName((SimpleName) getName().clone(target));
+		result.moduleStatements().addAll(ASTNode.copySubtrees(target, moduleStatements()));
+		return result;
+	}
+
+	@Override
+	boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		if (visitChildren) {
+			// visit children in normal left to right reading order
+			acceptChild(visitor, getJavadoc());
+			acceptChildren(visitor, this.annotations);
+			acceptChild(visitor, getName());
+			acceptChildren(visitor, this.moduleStatements);
+		}
+		visitor.endVisit(this);
+
+	}
+	/**
+	 * Returns the doc comment node.
+	 *
+	 * @return the doc comment node, or <code>null</code> if none
+	 */
+	public Javadoc getJavadoc() {
+		return this.optionalDocComment;
+	}
+
+	/**
+	 * Sets or clears the doc comment node.
+	 *
+	 * @param docComment the doc comment node, or <code>null</code> if none
+	 * @exception IllegalArgumentException if the doc comment string is invalid
+	 */
+	public void setJavadoc(Javadoc docComment) {
+		ChildPropertyDescriptor p = JAVADOC_PROPERTY;
+		ASTNode oldChild = this.optionalDocComment;
+		preReplaceChild(oldChild, docComment, p);
+		this.optionalDocComment = docComment;
+		postReplaceChild(oldChild, docComment, p);
+	}
+
+	/**
+	 * Returns the live ordered list of annotations
+	 * of this declaration.
+	 *
+	 * @return the live list of annotations
+	 *    (element type: {@link Annotation})
+	 */
+	public List annotations() {
+		return this.annotations;
+	}
+
+	/**
+	 * Returns whether this module declaration is open or not.
+	 *
+	 * @return <code>true</code> if this is open, else
+	 *    <code>false</code>
+	 */
+	public boolean isOpen() {
+		return this.isOpen;
+	}
+
+	/**
+	 * Sets whether this module declaration is open or not.
+	 *
+	 * @param isOpen <code>true</code> if this is an open module,
+	 *    and <code>false</code> if not
+	 */
+	public void setOpen(boolean isOpen) {
+		preValueChange(OPEN_PROPERTY);
+		this.isOpen = isOpen;
+		postValueChange(OPEN_PROPERTY);
+	}
+
+	/**
+	 * Returns the name of this module declaration.
+	 *
+	 * @return the module name
+	 */
+	public Name getName()  {
+		if (this.name == null) {
+			// lazy init must be thread-safe for readers
+			synchronized (this) {
+				if (this.name == null) {
+					preLazyInit();
+					this.name =this.ast.newQualifiedName(
+							new SimpleName(this.ast), new SimpleName(this.ast));
+					postLazyInit(this.name, NAME_PROPERTY);
+				}
+			}
+		}
+		return this.name;
+	}
+
+	/**
+	 * Sets the module name in to the given name.
+	 *
+	 * @param name the new module name
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 */
+	public void setName(Name name) {
+		if (name == null) {
+			throw new IllegalArgumentException();
+		}
+		ASTNode oldChild = this.name;
+		preReplaceChild(oldChild, name, NAME_PROPERTY);
+		this.name = name;
+		postReplaceChild(oldChild, name, NAME_PROPERTY);
+	}
+
+	/**
+	 * Returns the live list of statements in this module. Adding and
+	 * removing nodes from this list affects this node dynamically.
+	 * All nodes in this list must be <code>ModuleDirective</code>s;
+	 * attempts to add any other type of node will trigger an
+	 * exception.
+	 *
+	 * @return the live list of statements in this module declaration
+	 *    (element type: {@link ModuleDirective})
+	 */
+	public List moduleStatements() {
+		return this.moduleStatements;
+	}
+
+	/**
+	 * Resolves and returns the binding for the module.
+	 * <p>
+	 * Note that bindings are generally unavailable unless requested when the
+	 * AST is being built.
+	 * </p>
+	 *
+	 * @return the binding, or <code>null</code> if the binding cannot be
+	 *    resolved
+	 */
+	public IModuleBinding resolveBinding() {
+		return this.ast.getBindingResolver().resolveModule(this);
+	}
+
+	@Override
+	int memSize() {
+		return BASE_NODE_SIZE + 5 * 4;
+	}
+
+	@Override
+	int treeSize() {
+		return	memSize()
+			+ (this.optionalDocComment == null ? 0 : getJavadoc().treeSize())
+			+ this.annotations.listSize()
+			+ (this.name == null ? 0 : getName().treeSize())
+			+ this.moduleStatements.listSize();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.java
new file mode 100644
index 0000000..5d258b9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleDirective.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+/**
+ * Abstract base class of AST nodes that represent module directives (added in JLS9 API).
+ *
+ * <pre>
+ * ModuleDirective:
+ *    {@link RequiresDirective}
+ *    {@link ExportsDirective}
+ *    {@link OpensDirective}
+ *    {@link UsesDirective}
+ *    {@link ProvidesDirective}
+ * </pre>
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @since 3.14
+ */
+public abstract class ModuleDirective extends ASTNode {
+
+	ModuleDirective(AST ast) {
+		super(ast);
+		unsupportedBelow9();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.java
new file mode 100644
index 0000000..8e5bb73
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModuleModifier.java
@@ -0,0 +1,345 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Module Modifier node - represents the modifiers for the requires directive in module declaration (added in JLS9 API).
+ * <pre>
+ * ModuleModifier:
+ *    <b>static</b>
+ *    <b>transitive</b>
+ * </pre>
+ * <p>
+ * The numeric values of these flags match the ones for class
+ * files as described in the Java Virtual Machine Specification.
+ * Note that the value of <b>static</b> does <b>not</b> correspond to the value of {@link Modifier#STATIC}!
+ * </p>
+ *
+ * @since 3.14
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings({"rawtypes", "unchecked"})
+public final class ModuleModifier extends ASTNode {
+
+	/**
+ 	 * Module Modifier keywords (typesafe enumeration).
+	 */
+	public static class ModuleModifierKeyword {
+
+		/** "static" modifier with flag value {@link ModuleModifier#STATIC_PHASE}. */
+		public static final ModuleModifierKeyword STATIC_KEYWORD = new ModuleModifierKeyword("static", STATIC_PHASE);//$NON-NLS-1$
+
+		/** "transitive" modifier with flag value {@link ModuleModifier#TRANSITIVE}. */
+		public static final ModuleModifierKeyword TRANSITIVE_KEYWORD = new ModuleModifierKeyword("transitive", TRANSITIVE);//$NON-NLS-1$
+
+
+		/**
+		 * Map from token to operator (key type: <code>String</code>;
+		 * value type: <code>Operator</code>).
+		 */
+		private static final Map KEYWORDS;
+
+		static {
+			KEYWORDS = new HashMap(2);
+			ModuleModifierKeyword[] ops = {
+					STATIC_KEYWORD,
+					TRANSITIVE_KEYWORD,
+				};
+			for (int i = 0; i < ops.length; i++) {
+				KEYWORDS.put(ops[i].toString(), ops[i]);
+			}
+		}
+
+		/**
+		 * Returns the module modifier corresponding to the given single-bit flag value,
+		 * or <code>null</code> if none or if more than one bit is set.
+		 * <p>
+		 * <code>fromFlagValue</code> is the converse of <code>toFlagValue</code>:
+		 * that is, <code>ModuleModifierKind.fromFlagValue(k.toFlagValue()) == k</code> for
+		 * all module modifier keywords <code>k</code>.
+		 * </p>
+		 *
+		 * @param flagValue the single-bit flag value for the module modifier
+		 * @return the module modifier keyword, or <code>null</code> if none
+		 * @see #toFlagValue()
+		 */
+		public static ModuleModifierKeyword fromFlagValue(int flagValue) {
+			for (Iterator it = KEYWORDS.values().iterator(); it.hasNext(); ) {
+				ModuleModifierKeyword k = (ModuleModifierKeyword) it.next();
+				if (k.toFlagValue() == flagValue) {
+					return k;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * Returns the module modifier corresponding to the given string,
+		 * or <code>null</code> if none.
+		 * <p>
+		 * <code>toKeyword</code> is the converse of <code>toString</code>:
+		 * that is, <code>ModuleModifierKind.toKeyword(k.toString()) == k</code> for
+		 * all module modifier keywords <code>k</code>.
+		 * </p>
+		 *
+		 * @param keyword the lowercase string name for the module modifier
+		 * @return the module modifier keyword, or <code>null</code> if none
+		 * @see #toString()
+		 */
+		public static ModuleModifierKeyword toKeyword(String keyword) {
+			return (ModuleModifierKeyword) KEYWORDS.get(keyword);
+		}
+
+		/**
+		 * The flag value for the module modifier.
+		 */
+		private int flagValue;
+
+		/**
+		 * The keyword module modifier string.
+		 */
+		private String keyword;
+
+		/**
+		 * Creates a new module modifier with the given keyword.
+		 * <p>
+		 * Note: this constructor is private. The only instances
+		 * ever created are the ones for the standard modifiers.
+		 * </p>
+		 *
+		 * @param keyword the character sequence for the module modifier
+		 * @param flagValue flag value as described in the Java Virtual Machine Specification
+		 */
+		private ModuleModifierKeyword(String keyword, int flagValue) {
+			this.keyword = keyword;
+			this.flagValue = flagValue;
+		}
+
+		/**
+		 * Returns the module modifier flag value corresponding to this module modifier keyword.
+		 * These flag values are as described in the Java Virtual Machine Specification.
+		 *
+		 * @return one of the <code>ModuleModifier</code> constants
+		 * @see #fromFlagValue(int)
+		 */
+		public int toFlagValue() {
+			return this.flagValue;
+		}
+
+		/**
+		 * Returns the keyword for the module modifier.
+		 *
+		 * @return the keyword for the module modifier
+		 * @see #toKeyword(String)
+		 */
+		@Override
+		public String toString() {
+			return this.keyword;
+		}
+	}
+
+	/**
+	 * The "keyword" structural property of this node type (type: {@link ModuleModifier.ModuleModifierKeyword}).
+	 */
+	public static final SimplePropertyDescriptor KEYWORD_PROPERTY =
+		new SimplePropertyDescriptor(ModuleModifier.class, "keyword", ModuleModifier.ModuleModifierKeyword.class, MANDATORY); //$NON-NLS-1$
+
+	/**
+	 * Module Modifier constant (bit mask, value 0) indicating no module modifiers.
+	 */
+	public static final int NONE = 0x0000;
+
+	/**
+	 * "static" module modifier constant (bit mask).
+	 * Applicable to requires directive.
+	 * <p>
+	 * Note that the value of <b>static</b> does <b>not</b> correspond to the value of {@link Modifier#STATIC}!
+	 * </p>
+	 */
+	public static final int STATIC_PHASE = 0x0040;
+
+	/**
+	 * "transitive" module modifier constant (bit mask).
+	 * Applicable only to requires directive.
+	 */
+	public static final int TRANSITIVE = 0x0080;
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS;
+
+	static {
+		List properyList = new ArrayList(2);
+		createPropertyList(ModuleModifier.class, properyList);
+		addProperty(KEYWORD_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns whether the given flags includes the "transitive" module modifier.
+	 *
+	 * @param flags the module modifier flags
+	 * @return <code>true</code> if the <code>TRANSITIVE</code> bit is
+	 *   set, and <code>false</code> otherwise
+	 */
+	public static boolean isTransitive(int flags) {
+		return (flags & TRANSITIVE) != 0;
+	}
+
+	/**
+	 * Returns whether the given flags includes the "static" module modifier.
+	 *
+	 * @param flags the module modifier flags
+	 * @return <code>true</code> if the <code>STATIC</code> bit is
+	 *   set, and <code>false</code> otherwise
+	 */
+	public static boolean isStatic(int flags) {
+		return (flags & STATIC_PHASE) != 0;
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS;
+	}
+
+	/**
+	 * The modifier keyword; defaults to an unspecified modifier.
+	 */
+	private ModuleModifierKeyword modifierKeyword = ModuleModifierKeyword.STATIC_KEYWORD;
+
+	/**
+	 * Creates a new unparented MODULE modifier node owned by the given AST.
+	 * By default, the node has unspecified (but legal) modifier.
+	 * <p>
+	 * N.B. This constructor is package-private.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	ModuleModifier(AST ast) {
+		super(ast);
+	    unsupportedBelow9();
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		visitor.visit(this);
+		visitor.endVisit(this);
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		ModuleModifier result = new ModuleModifier(target);
+		result.setSourceRange(getStartPosition(), getLength());
+		result.setKeyword(getKeyword());
+		return result;
+	}
+
+	/**
+	 * Returns the modifier keyword of this modifier node.
+	 *
+	 * @return the modifier keyword
+	 */
+	public ModuleModifierKeyword getKeyword() {
+		return this.modifierKeyword;
+	}
+
+	/**
+	 * Sets the module modifier keyword of this module modifier node.
+	 *
+	 * @param modifierKeyord the module modifier keyword
+	 * @exception IllegalArgumentException if the argument is <code>null</code>
+	 */
+	public void setKeyword(ModuleModifierKeyword modifierKeyord) {
+		if (modifierKeyord == null) {
+			throw new IllegalArgumentException();
+		}
+		preValueChange(KEYWORD_PROPERTY);
+		this.modifierKeyword = modifierKeyord;
+		postValueChange(KEYWORD_PROPERTY);
+	}
+
+	@Override
+	final int getNodeType0() {
+		return MODULE_MODIFIER;
+	}
+
+	@Override
+	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
+		if (property == KEYWORD_PROPERTY) {
+			if (get) {
+				return getKeyword();
+			} else {
+				setKeyword((ModuleModifierKeyword) value);
+				return null;
+			}
+		}
+		// allow default implementation to flag the error
+		return super.internalGetSetObjectProperty(property, get, value);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	/**
+	 * Answer true if the receiver is the static module modifier, false otherwise.
+	 *
+	 * @return true if the receiver is the static module modifier, false otherwise
+	 */
+	public boolean isStatic() {
+		return this.modifierKeyword == ModuleModifierKeyword.STATIC_KEYWORD;
+	}
+
+	/**
+	 * Answer true if the receiver is the transitive module modifier, false otherwise.
+	 *
+	 * @return true if the receiver is the transitive module modifier, false otherwise
+	 */
+	public boolean isTransitive() {
+		return this.modifierKeyword == ModuleModifierKeyword.TRANSITIVE_KEYWORD;
+	}
+
+	@Override
+	int memSize() {
+		// treat ModifierKeyword as free
+		return BASE_NODE_SIZE + 1 * 4;
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	int treeSize() {
+		return memSize();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.java
new file mode 100644
index 0000000..307dfd0
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ModulePackageAccess.java
@@ -0,0 +1,204 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.List;
+
+/**
+ * Abstract base class of AST nodes that represent exports and opens directives (added in JLS9 API).
+ *
+ * <pre>
+ * ModulePackageAccess:
+ *    {@link ExportsDirective}
+ *    {@link OpensDirective}
+ * </pre>
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @since 3.14
+ */
+@SuppressWarnings({"rawtypes", "unchecked"})
+public abstract class ModulePackageAccess extends ModuleDirective {
+
+	/**
+	 * The package name; lazily initialized; defaults to a unspecified,
+	 * legal Java identifier.
+	 */
+	protected Name name = null;
+
+	/**
+	 * The target modules
+	 * (element type: {@link Name}).
+	 * Defaults to an empty list. (see constructor)
+	 */
+	protected ASTNode.NodeList modules = null;
+
+	/**
+	 * Returns structural property descriptor for the "modules" property
+	 * of this node (element type: {@link Name}).
+	 *
+	 * @return the property descriptor
+	 */
+	abstract ChildListPropertyDescriptor internalModulesProperty();
+
+	/**
+	 * Returns structural property descriptor for the "name" property
+	 * of this node (child type: {@link Name}).
+	 *
+	 * @return the property descriptor
+	 */
+	abstract ChildPropertyDescriptor internalNameProperty();
+
+	/**
+	 * Returns structural property descriptor for the "name" property
+	 * of this node (child type: {@link Name}).
+	 *
+	 * @return the property descriptor
+	 */
+	public final ChildPropertyDescriptor getNameProperty() {
+		return internalNameProperty();
+	}
+
+	/**
+	 * Creates and returns a structural property descriptor for the
+	 * "name" property declared on the given concrete node type (child type: {@link Name}).
+	 *
+	 * @return the property descriptor
+	 */
+	static final ChildPropertyDescriptor internalNamePropertyFactory(Class nodeClass) {
+		return new ChildPropertyDescriptor(nodeClass, "name", Name.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
+	}
+
+	/**
+	 * Creates and returns a structural property descriptor for the
+	 * "modules" property declared on the given concrete node type (element type: {@link Name}).
+	 *
+	 * @return the property descriptor
+	 */
+	static final ChildListPropertyDescriptor internalModulesPropertyFactory(Class nodeClass) {
+		return new ChildListPropertyDescriptor(nodeClass, "modules", Name.class, NO_CYCLE_RISK); //$NON-NLS-1$
+	}
+
+	/**
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	ModulePackageAccess(AST ast) {
+		super(ast);
+		this.modules = new ASTNode.NodeList(internalModulesProperty());
+	}
+
+	@Override
+	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == internalNameProperty()) {
+			if (get) {
+				return getName();
+			} else {
+				setName((Name) child);
+				return null;
+			}
+		}
+		// allow default implementation to flag the error
+		return super.internalGetSetChildProperty(property, get, child);
+	}
+
+	@Override
+	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
+		if (property == internalModulesProperty()) {
+			return modules();
+		}
+		// allow default implementation to flag the error
+		return super.internalGetChildListProperty(property);
+	}
+
+	/**
+	 * Returns the name of the package.
+	 *
+	 * @return the package name node
+	 */
+	public Name getName()  {
+		if (this.name == null) {
+			// lazy init must be thread-safe for readers
+			synchronized (this) {
+				if (this.name == null) {
+					preLazyInit();
+					this.name =this.ast.newQualifiedName(
+							new SimpleName(this.ast), new SimpleName(this.ast));
+					ChildPropertyDescriptor p = internalNameProperty();
+					postLazyInit(this.name, p);
+				}
+			}
+		}
+		return this.name;
+	}
+
+	/**
+	 * Sets the name of the package to the given name.
+	 *
+	 * @param name the new  package name
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 */
+	public void setName(Name name) {
+		if (name == null) {
+			throw new IllegalArgumentException();
+		}
+		ASTNode oldChild = this.name;
+		ChildPropertyDescriptor p = internalNameProperty();
+		preReplaceChild(oldChild, name, p);
+		this.name = name;
+		postReplaceChild(oldChild, name, p);
+	}
+
+	/**
+	 * Returns the live ordered list of target modules for this
+	 * directive.
+	 *
+	 * @return the live list of target modules
+	 *    (element type: {@link Name})
+	 */
+	public List modules() {
+		return this.modules;
+	}
+
+	protected ASTNode cloneHelper(AST target, ModulePackageAccess result) {
+		result.setSourceRange(getStartPosition(), getLength());
+		result.setName((Name) getName().clone(target));
+		result.modules().addAll(ASTNode.copySubtrees(target, modules()));
+		return result;
+	}
+
+	protected void acceptVisitChildren(boolean visitChildren, ASTVisitor visitor) {
+		if (visitChildren) {
+			acceptChild(visitor, getName());
+			acceptChildren(visitor, this.modules);
+		}
+	}
+
+	@Override
+	int memSize() {
+		return BASE_NODE_SIZE + 2 * 4;
+	}
+
+	@Override
+	int treeSize() {
+		return
+			memSize()
+			+ (this.name == null ? 0 : getName().treeSize())
+			+ this.modules.listSize();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.java
index cc0f637..55c758d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameEnvironmentWithProgress.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2010, 2016 IBM Corporation and others.
+ * Copyright (c) 2010, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,14 +41,14 @@
 			throw new AbortCompilation(true/*silent*/, new OperationCanceledException());
 		}
 	}
-
-	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
-		return findType(typeName, packageName, true);
+	@Override
+	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
+		return findType(typeName, packageName, true, moduleName);
 	}
-
-	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes) {
+	@Override
+	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes, char[] moduleName) {
 		checkCanceled();
-		NameEnvironmentAnswer answer = super.findType(typeName, packageName);
+		NameEnvironmentAnswer answer = super.findType(typeName, packageName, moduleName);
 		if (answer == null && searchWithSecondaryTypes) {
 			NameEnvironmentAnswer suggestedAnswer = null;
 			String qualifiedPackageName = new String(CharOperation.concatWith(packageName, '/'));
@@ -57,6 +57,12 @@
 			for (int i = 0, length = this.classpaths.length; i < length; i++) {
 				if (!(this.classpaths[i] instanceof ClasspathDirectory)) continue;
 				ClasspathDirectory classpathDirectory = (ClasspathDirectory) this.classpaths[i];
+				LookupStrategy strategy = LookupStrategy.get(moduleName);
+				if (!strategy.matchesWithName(classpathDirectory,
+						loc -> loc.getModule() != null,
+						loc -> loc.servesModule(moduleName))) {
+					continue;
+				}
 				answer = classpathDirectory.findSecondaryInClass(typeName, qualifiedPackageName, qualifiedBinaryFileName);
 				if (answer != null) {
 					if (!answer.ignoreIfBetter()) {
@@ -71,15 +77,18 @@
 		return answer;
 	}
 
+	@Override
 	public NameEnvironmentAnswer findType(char[][] compoundName) {
 		checkCanceled();
 		return super.findType(compoundName);
 	}
+	@Override
 	public boolean isPackage(char[][] compoundName, char[] packageName) {
 		checkCanceled();
 		return super.isPackage(compoundName, packageName);
 	}
 	
+	@Override
 	public void setMonitor(IProgressMonitor monitor) {
 		this.monitor = monitor;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.java
index e00647d..2d1a2d0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NameQualifiedType.java
@@ -113,23 +113,17 @@
 	    unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AnnotatableType.
-	 */
+	@Override
 	ChildListPropertyDescriptor internalAnnotationsProperty() {
 		return ANNOTATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -137,10 +131,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -162,15 +154,18 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
+	@Override
 	final int getNodeType0() {
 		return NAME_QUALIFIED_TYPE;
 	}
 
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
+	@Override
 	ASTNode clone0(AST target) {
 		NameQualifiedType result = new NameQualifiedType(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -180,9 +175,7 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -272,17 +265,13 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.java
index 7d4f214..fa2edf3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeFinder.java
@@ -40,6 +40,7 @@
 			this.fEnd= offset + length;
 		}
 
+		@Override
 		public boolean preVisit2(ASTNode node) {
 			int nodeStart= node.getStartPosition();
 			int nodeEnd= nodeStart + node.getLength();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.java
index 356188f..e393d3e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NodeSearcher.java
@@ -29,6 +29,7 @@
 		this.position = position;
 	}
 
+	@Override
 	public boolean visit(
 		ConstructorDeclaration constructorDeclaration,
 		ClassScope scope) {
@@ -41,6 +42,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(
 		FieldDeclaration fieldDeclaration,
 		MethodScope scope) {
@@ -52,6 +54,7 @@
 			return true;
 	}
 
+	@Override
 	public boolean visit(Initializer initializer, MethodScope scope) {
 		if (initializer.declarationSourceStart <= this.position
 			&& this.position <= initializer.declarationSourceEnd) {
@@ -61,6 +64,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(
 		TypeDeclaration memberTypeDeclaration,
 		ClassScope scope) {
@@ -73,6 +77,7 @@
 			return false;
 	}
 
+	@Override
 	public boolean visit(
 		MethodDeclaration methodDeclaration,
 		ClassScope scope) {
@@ -85,6 +90,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(
 		TypeDeclaration typeDeclaration,
 		CompilationUnitScope scope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.java
index 7468a17..ec4ea79 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NormalAnnotation.java
@@ -90,16 +90,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_NAME_PROPERTY) {
 			if (get) {
@@ -113,9 +109,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == VALUES_PROPERTY) {
 			return values();
@@ -124,23 +118,17 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalTypeNameProperty() {
 		return TYPE_NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return NORMAL_ANNOTATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		NormalAnnotation result = new NormalAnnotation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -149,17 +137,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -184,16 +168,12 @@
 		return this.values;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.java
index c45c811..9adb6dc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NullLiteral.java
@@ -63,55 +63,41 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return NULL_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		NullLiteral result = new NullLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.java
index 5882dcd..112db13 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/NumberLiteral.java
@@ -81,16 +81,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == TOKEN_PROPERTY) {
 			if (get) {
@@ -104,16 +100,12 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return NUMBER_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		NumberLiteral result = new NumberLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -121,17 +113,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -207,17 +195,14 @@
 		this.tokenValue = token;
 		postValueChange(TOKEN_PROPERTY);
 	}
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 1 * 4 + stringSize(this.tokenValue);
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.java
new file mode 100644
index 0000000..b4f0f12
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/OpensDirective.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Opens directive AST node type (added in JLS9 API).
+ * <pre>
+ * OpensDirective:
+ *     <b>opens</b> PackageName [ <b>to</b>  ModuleName {<b>,</b> ModuleName } ] <b>;</b>
+ * </pre>
+ *
+ * @since 3.14
+ * 
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings({"rawtypes"})
+public class OpensDirective extends ModulePackageAccess {
+
+	/**
+	 * The "name" structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+		internalNamePropertyFactory(OpensDirective.class);
+	/**
+	 * The "modules" structural property of this node type (element type: {@link Name}).
+	 */
+	public static final ChildListPropertyDescriptor MODULES_PROPERTY =
+			internalModulesPropertyFactory(OpensDirective.class);
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List properyList = new ArrayList(3);
+		createPropertyList(OpensDirective.class, properyList);
+		addProperty(NAME_PROPERTY, properyList);
+		addProperty(MODULES_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * Creates a new AST node for an opens directive owned by the
+	 * given AST. The open directive initially is a regular (non-targetted)
+	 * single package open for an unspecified, but legal, Java package name.
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	OpensDirective(AST ast) {
+		super(ast);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final ChildPropertyDescriptor internalNameProperty() {
+		return NAME_PROPERTY;
+	}
+
+	@Override
+	final ChildListPropertyDescriptor internalModulesProperty() {
+		return MODULES_PROPERTY;
+	}
+
+	@Override
+	final int getNodeType0() {
+		return OPENS_DIRECTIVE;
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		return cloneHelper(target, new OpensDirective(target));
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		acceptVisitChildren(visitChildren, visitor);
+		visitor.endVisit(this);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.java
index 970d457..2480b24 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,6 +29,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.NameLookup;
@@ -54,6 +55,7 @@
 		this.resolver = resolver;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		try {
 			INameEnvironment nameEnvironment = this.binding.environment.nameEnvironment;
@@ -128,9 +130,13 @@
 		return AnnotationBinding.NoAnnotations;
 	}
 
-	/*
-	 * @see IBinding#getName()
-	 */
+	@Override
+	public IModuleBinding getModule() {
+		ModuleBinding moduleBinding = this.binding.enclosingModule;
+		return moduleBinding != null ? this.resolver.getModuleBinding(moduleBinding) : null;
+	}
+
+	@Override
 	public String getName() {
 		if (this.name == null) {
 			computeNameAndComponents();
@@ -138,16 +144,12 @@
 		return this.name;
 	}
 
-	/*
-	 * @see IPackageBinding#isUnnamed()
-	 */
+	@Override
 	public boolean isUnnamed() {
 		return getName().equals(UNNAMED);
 	}
 
-	/*
-	 * @see IPackageBinding#getNameComponents()
-	 */
+	@Override
 	public String[] getNameComponents() {
 		if (this.components == null) {
 			computeNameAndComponents();
@@ -155,23 +157,17 @@
 		return this.components;
 	}
 
-	/*
-	 * @see IBinding#getKind()
-	 */
+	@Override
 	public int getKind() {
 		return IBinding.PACKAGE;
 	}
 
-	/*
-	 * @see IBinding#getModifiers()
-	 */
+	@Override
 	public int getModifiers() {
 		return Modifier.NONE;
 	}
 
-	/*
-	 * @see IBinding#isDeprecated()
-	 */
+	@Override
 	public boolean isDeprecated() {
 		return false;
 	}
@@ -179,6 +175,7 @@
 	/**
 	 * @see IBinding#isRecovered()
 	 */
+	@Override
 	public boolean isRecovered() {
 		return false;
 	}
@@ -186,13 +183,12 @@
 	/**
 	 * @see IBinding#isSynthetic()
 	 */
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
 
-	/*
-	 * @see IBinding#getJavaElement()
-	 */
+	@Override
 	public IJavaElement getJavaElement() {
 		INameEnvironment nameEnvironment = this.binding.environment.nameEnvironment; // a package binding always has a LooupEnvironment set
 		if (!(nameEnvironment instanceof SearchableEnvironment)) return null;
@@ -213,17 +209,12 @@
 		return pkgs[0];
 	}
 
-	/*
-	 * @see IBinding#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return new String(this.binding.computeUniqueKey());
 	}
 
-	/*
-	 * @see IBinding#isEqualTo(Binding)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isEqualTo(IBinding other) {
 		if (other == this) {
 			// identical binding - equal (key or no key)
@@ -259,10 +250,15 @@
 		}
 	}
 
+	org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding getCompilerBinding() {
+		return this.binding;
+	}
+
 	/*
 	 * For debugging purpose only.
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		return this.binding.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.java
index 70dc123..757f040 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PackageDeclaration.java
@@ -141,16 +141,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
 			if (get) {
@@ -172,9 +168,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -183,16 +177,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return PACKAGE_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		PackageDeclaration result = new PackageDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -204,17 +194,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -335,16 +321,12 @@
 		return this.ast.getBindingResolver().resolvePackage(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.java
index ea360b1..1eea787 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParameterizedType.java
@@ -104,16 +104,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -127,9 +123,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPE_ARGUMENTS_PROPERTY) {
 			return typeArguments();
@@ -138,16 +132,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return PARAMETERIZED_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ParameterizedType result = new ParameterizedType(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -157,17 +147,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -233,17 +219,13 @@
 		return this.typeArguments;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.java
index 4faecb3..33792b7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ParenthesizedExpression.java
@@ -83,16 +83,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -106,16 +102,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return PARENTHESIZED_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ParenthesizedExpression result = new ParenthesizedExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +115,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -182,16 +170,12 @@
 		postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.java
index c326bbc..2958a29 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PostfixExpression.java
@@ -63,6 +63,7 @@
 		 *
 		 * @return the character sequence for the operator
 		 */
+		@Override
 		public String toString() {
 			return this.token;
 		}
@@ -172,16 +173,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == OPERATOR_PROPERTY) {
 			if (get) {
@@ -195,9 +192,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == OPERAND_PROPERTY) {
 			if (get) {
@@ -211,16 +206,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return POSTFIX_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		PostfixExpression result = new PostfixExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -229,17 +220,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -312,17 +299,13 @@
 		postReplaceChild(oldChild, expression, OPERAND_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.java
index 5991f23..30853f7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrefixExpression.java
@@ -67,6 +67,7 @@
 		 *
 		 * @return the character sequence for the operator
 		 */
+		@Override
 		public String toString() {
 			return this.token;
 		}
@@ -188,16 +189,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == OPERATOR_PROPERTY) {
 			if (get) {
@@ -211,9 +208,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == OPERAND_PROPERTY) {
 			if (get) {
@@ -227,16 +222,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return PREFIX_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		PrefixExpression result = new PrefixExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -245,17 +236,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -329,17 +316,13 @@
 		postReplaceChild(oldChild, expression, OPERAND_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.java
index 6aba9e2..15651de 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/PrimitiveType.java
@@ -81,6 +81,7 @@
 		 *
 		 * @return the standard name of the primitive type
 		 */
+		@Override
 		public String toString() {
 			return this.name;
 		}
@@ -230,24 +231,17 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AnnotatableType.
-	 * @since 3.10
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalAnnotationsProperty() {
 		return ANNOTATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -256,9 +250,7 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == PRIMITIVE_TYPE_CODE_PROPERTY) {
 			if (get) {
@@ -272,20 +264,16 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return PRIMITIVE_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		PrimitiveType result = new PrimitiveType(target);
 		result.setSourceRange(getStartPosition(), getLength());
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.annotations().addAll(
 					ASTNode.copySubtrees(target, annotations()));
 		}
@@ -293,22 +281,18 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.annotations);
 			}
 		}
@@ -341,17 +325,13 @@
 		postValueChange(PRIMITIVE_TYPE_CODE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize()
 				+ (this.annotations == null ? 0 : this.annotations.listSize());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.java
new file mode 100644
index 0000000..1326145
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ProvidesDirective.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Provides directive AST node type (added in JLS9 API).
+ * <pre>
+ * ProvidesDirective:
+ *     <b>provides</b> Name <b>with</b> Name {<b>,</b> Name } <b>;</b>
+ * </pre>
+ *
+ * @since 3.14
+ * 
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class ProvidesDirective extends ModuleDirective {
+
+	/**
+	 * The "name" structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+		new ChildPropertyDescriptor(ProvidesDirective.class, "name", Name.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * The "implementations" structural property of this node type (element type: {@link Name}).
+	 */
+	public static final ChildListPropertyDescriptor IMPLEMENTATIONS_PROPERTY =
+			new ChildListPropertyDescriptor(ProvidesDirective.class, "implementations", Name.class, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List properyList = new ArrayList(3);
+		createPropertyList(ProvidesDirective.class, properyList);
+		addProperty(NAME_PROPERTY, properyList);
+		addProperty(IMPLEMENTATIONS_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * The interface name; lazily initialized; defaults to a unspecified,
+	 * legal Java identifier.
+	 */
+	private Name name = null;
+
+	/**
+	 * The implementations names
+	 * (element type: {@link Name}).
+	 * Defaults to an empty list.
+	 */
+	private ASTNode.NodeList implementations =
+		new ASTNode.NodeList(IMPLEMENTATIONS_PROPERTY);
+
+	/**
+	 * Creates a new AST node for an provides directive owned by the
+	 * given AST. The provides directive initially is
+	 * for an unspecified, but legal, Java type name.
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	ProvidesDirective(AST ast) {
+		super(ast);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == NAME_PROPERTY) {
+			if (get) {
+				return getName();
+			} else {
+				setName((Name) child);
+				return null;
+			}
+		}
+
+		// allow default implementation to flag the error
+		return super.internalGetSetChildProperty(property, get, child);
+	}
+
+	@Override
+	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
+		if (property == IMPLEMENTATIONS_PROPERTY) {
+			return implementations();
+		}
+		// allow default implementation to flag the error
+		return super.internalGetChildListProperty(property);
+	}
+
+	@Override
+	final int getNodeType0() {
+		return PROVIDES_DIRECTIVE;
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		ProvidesDirective result = new ProvidesDirective(target);
+		result.setSourceRange(getStartPosition(), getLength());
+		result.setName((Name) getName().clone(target));
+		result.implementations().addAll(ASTNode.copySubtrees(target, implementations()));
+		return result;
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		if (visitChildren) {
+			acceptChild(visitor, getName());
+			acceptChildren(visitor, this.implementations);
+		}
+		visitor.endVisit(this);
+	}
+
+
+	/**
+	 * Returns the name of the service in this directive.
+	 *
+	 * @return the services name
+	 */
+	public Name getName()  {
+		if (this.name == null) {
+			// lazy init must be thread-safe for readers
+			synchronized (this) {
+				if (this.name == null) {
+					preLazyInit();
+					this.name = this.ast.newQualifiedName(
+							new SimpleName(this.ast), new SimpleName(this.ast));
+					postLazyInit(this.name, NAME_PROPERTY);
+				}
+			}
+		}
+		return this.name;
+	}
+
+	/**
+	 * Sets the name of the service.
+	 *
+	 * @param name the new service name
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 */
+	public void setName(Name name) {
+		if (name == null) {
+			throw new IllegalArgumentException();
+		}
+		ASTNode oldChild = this.name;
+		preReplaceChild(oldChild, name, NAME_PROPERTY);
+		this.name = name;
+		postReplaceChild(oldChild, name, NAME_PROPERTY);
+	}
+
+	/**
+	 * Returns the live ordered list of implementations for the interface in this provides directive.
+	 *
+	 * @return the live list of implementations for the interface
+	 *    (element type: {@link Name})
+	 */
+	public List implementations() {
+		return this.implementations;
+	}
+
+	@Override
+	int memSize() {
+		return BASE_NODE_SIZE + 2 * 4;
+	}
+
+	@Override
+	int treeSize() {
+		return
+			memSize()
+			+ (this.name == null ? 0 : getName().treeSize())
+			+ this.implementations.listSize();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.java
index 908c744..448148d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedName.java
@@ -104,16 +104,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -135,16 +131,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return QUALIFIED_NAME;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		QualifiedName result = new QualifiedName(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -153,17 +145,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -253,25 +241,19 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on Name.
-	 */
+	@Override
 	void appendName(StringBuffer buffer) {
 		getQualifier().appendName(buffer);
 		buffer.append('.');
 		getName().appendName(buffer);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NAME_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.java
index 017b39a..0b74eff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/QualifiedType.java
@@ -171,20 +171,17 @@
 	 * Method declared on AnnotatableType.
 	 * @since 3.10
 	 */
+	@Override
 	final ChildListPropertyDescriptor internalAnnotationsProperty() {
 		return ANNOTATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -192,10 +189,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -217,21 +212,17 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return QUALIFIED_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		QualifiedType result = new QualifiedType(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		result.setQualifier((Type) ((ASTNode) getQualifier()).clone(target));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.annotations().addAll(
 					ASTNode.copySubtrees(target, annotations()));
 		}
@@ -239,23 +230,19 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
 			acceptChild(visitor, getQualifier());
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.annotations);
 			}
 			acceptChild(visitor, getName());
@@ -341,17 +328,13 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.java
new file mode 100644
index 0000000..8e58c12
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredPackageBinding.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+
+/**
+ * This class represents the recovered binding for a package
+ */
+class RecoveredPackageBinding implements IPackageBinding {
+
+	private static final String[] NO_NAME_COMPONENTS = CharOperation.NO_STRINGS;
+	private static final String UNNAMED = Util.EMPTY_STRING;
+	private static final char PACKAGE_NAME_SEPARATOR = '.';
+
+	private PackageBinding binding;
+	private BindingResolver resolver;
+	private String name = null;
+	private String[] components = null;
+
+	RecoveredPackageBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding binding, BindingResolver resolver) {
+		this.binding = binding;
+		this.resolver = resolver;
+	}
+	
+	@Override
+	public IAnnotationBinding[] getAnnotations() {
+		return AnnotationBinding.NoAnnotations;
+	}
+
+	@Override
+	public int getKind() {
+		return IBinding.PACKAGE;
+	}
+
+	@Override
+	public int getModifiers() {
+		return Modifier.NONE;
+	}
+
+	@Override
+	public boolean isDeprecated() {
+		return false;
+	}
+
+	@Override
+	public boolean isRecovered() {
+		return true;
+	}
+
+	@Override
+	public boolean isSynthetic() {
+		return false;
+	}
+
+	@Override
+	public IJavaElement getJavaElement() {
+		return null;
+	}
+
+	@Override
+	public String getKey() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append("Recovered#"); //$NON-NLS-1$
+		buffer.append(this.binding.computeUniqueKey());
+		return buffer.toString();
+	}
+
+	@Override
+	public boolean isEqualTo(IBinding other) {
+		if (!other.isRecovered() || other.getKind() != IBinding.PACKAGE) return false;
+		return getKey().equals(other.getKey());
+	}
+
+	@Override
+	public String getName() {
+		if (this.name == null) {
+			computeNameAndComponents();
+		}
+		return this.name;
+	}
+
+	@Override
+	public boolean isUnnamed() {
+		return false;
+	}
+
+	@Override
+	public String[] getNameComponents() {
+		if (this.components == null) {
+			computeNameAndComponents();
+		}
+		return this.components;
+	}
+	@Override
+	public IModuleBinding getModule() {
+		ModuleBinding moduleBinding = this.binding.enclosingModule;
+		return moduleBinding != null ? this.resolver.getModuleBinding(moduleBinding) : null;
+	}
+	private void computeNameAndComponents() {
+		char[][] compoundName = this.binding.compoundName;
+		if (compoundName == CharOperation.NO_CHAR_CHAR || compoundName == null) {
+			this.name = UNNAMED;
+			this.components = NO_NAME_COMPONENTS;
+		} else {
+			int length = compoundName.length;
+			this.components = new String[length];
+			StringBuffer buffer = new StringBuffer();
+			for (int i = 0; i < length - 1; i++) {
+				this.components[i] = new String(compoundName[i]);
+				buffer.append(compoundName[i]).append(PACKAGE_NAME_SEPARATOR);
+			}
+			this.components[length - 1] = new String(compoundName[length - 1]);
+			buffer.append(compoundName[length - 1]);
+			this.name = buffer.toString();
+		}
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.java
index 1467939..cb8217a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredTypeBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation and others.
+ * Copyright (c) 2007, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +20,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
@@ -70,59 +71,43 @@
 		this.resolver = resolver;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#createArrayType(int)
-	 */
+	@Override
 	public ITypeBinding createArrayType(int dims) {
 		return this.resolver.getTypeBinding(this, dims);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getBinaryName()
-	 */
+	@Override
 	public String getBinaryName() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getBound()
-	 */
+	@Override
 	public ITypeBinding getBound() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getGenericTypeOfWildcardType()
-	 */
+	@Override
 	public ITypeBinding getGenericTypeOfWildcardType() {
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getRank()
-	 */
+	@Override
 	public int getRank() {
 		return -1;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getComponentType()
-	 */
+	@Override
 	public ITypeBinding getComponentType() {
 		if (this.dimensions == 0) return null;
 		return this.resolver.getTypeBinding(this, -1);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredFields()
-	 */
+	@Override
 	public IVariableBinding[] getDeclaredFields() {
 		return TypeBinding.NO_VARIABLE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredMethods()
-	 */
+	@Override
 	public IMethodBinding[] getDeclaredMethods() {
 		return TypeBinding.NO_METHOD_BINDINGS;
 	}
@@ -131,49 +116,37 @@
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredModifiers()
 	 * @deprecated Use ITypeBinding#getModifiers() instead
 	 */
+	@Override
 	public int getDeclaredModifiers() {
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaredTypes()
-	 */
+	@Override
 	public ITypeBinding[] getDeclaredTypes() {
 		return TypeBinding.NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringClass()
-	 */
+	@Override
 	public ITypeBinding getDeclaringClass() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringMethod()
-	 */
+	@Override
 	public IMethodBinding getDeclaringMethod() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDeclaringMember()
-	 */
 	@Override
 	public IBinding getDeclaringMember() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getDimensions()
-	 */
+	@Override
 	public int getDimensions() {
 		return this.dimensions;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getElementType()
-	 */
+	@Override
 	public ITypeBinding getElementType() {
 		if (this.binding != null) {
 			if (this.binding.isArrayType()) {
@@ -195,38 +168,27 @@
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getErasure()
-	 */
+	@Override
 	public ITypeBinding getErasure() {
 		return this;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getFunctionalInterfaceMethod
-	 */
 	@Override
 	public IMethodBinding getFunctionalInterfaceMethod() {
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getInterfaces()
-	 */
+	@Override
 	public ITypeBinding[] getInterfaces() {
 		return TypeBinding.NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getModifiers()
-	 */
+	@Override
 	public int getModifiers() {
 		return Modifier.NONE;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getName()
-	 */
+	@Override
 	public String getName() {
 		char[] brackets = new char[this.dimensions * 2];
 		for (int i = this.dimensions * 2 - 1; i >= 0; i -= 2) {
@@ -249,9 +211,29 @@
 		return getTypeNameFrom(getType());
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getPackage()
-	 */
+	@Override
+	public IModuleBinding getModule() {
+		if (this.binding != null) {
+			switch (this.binding.kind()) {
+				case Binding.BASE_TYPE :
+				case Binding.ARRAY_TYPE :
+				case Binding.TYPE_PARAMETER : // includes capture scenario
+				case Binding.WILDCARD_TYPE :
+				case Binding.INTERSECTION_TYPE:
+					return null;
+			}
+			return getModule(this.binding.getPackage());
+		}
+		CompilationUnitScope scope = this.resolver.scope();
+		return scope != null ? getModule(scope.getCurrentPackage()) : null;
+	}
+
+	private IModuleBinding getModule(PackageBinding pBinding) {
+		IPackageBinding packageBinding = this.resolver.getPackageBinding(pBinding);
+		return packageBinding != null ? packageBinding.getModule() : null;
+	}
+
+	@Override
 	public IPackageBinding getPackage() {
 		if (this.binding != null) {
 			switch (this.binding.kind()) {
@@ -275,9 +257,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getQualifiedName()
-	 */
+	@Override
 	public String getQualifiedName() {
 		ReferenceBinding referenceBinding = getReferenceBinding();
 		if (referenceBinding != null) {
@@ -311,9 +291,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getSuperclass()
-	 */
+	@Override
 	public ITypeBinding getSuperclass() {
 		if (getQualifiedName().equals("java.lang.Object")) {	//$NON-NLS-1$
 			return null;
@@ -321,9 +299,7 @@
 		return this.resolver.resolveWellKnownType("java.lang.Object"); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeArguments()
-	 */
+	@Override
 	public ITypeBinding[] getTypeArguments() {
 		if (this.binding != null) {
 			return this.typeArguments = TypeBinding.NO_TYPE_BINDINGS;
@@ -353,58 +329,42 @@
 		return this.typeArguments = TypeBinding.NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeBounds()
-	 */
+	@Override
 	public ITypeBinding[] getTypeBounds() {
 		return TypeBinding.NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeDeclaration()
-	 */
+	@Override
 	public ITypeBinding getTypeDeclaration() {
 		return this;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeParameters()
-	 */
+	@Override
 	public ITypeBinding[] getTypeParameters() {
 		return TypeBinding.NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getWildcard()
-	 */
+	@Override
 	public ITypeBinding getWildcard() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isAnnotation()
-	 */
+	@Override
 	public boolean isAnnotation() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isAnonymous()
-	 */
+	@Override
 	public boolean isAnonymous() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isArray()
-	 */
+	@Override
 	public boolean isArray() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isAssignmentCompatible(org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding)
-	 */
+	@Override
 	public boolean isAssignmentCompatible(ITypeBinding typeBinding) {
 		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
 			return true;
@@ -413,16 +373,12 @@
 		return isEqualTo(typeBinding);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isCapture()
-	 */
+	@Override
 	public boolean isCapture() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isCastCompatible(org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding)
-	 */
+	@Override
 	public boolean isCastCompatible(ITypeBinding typeBinding) {
 		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
 			return true;
@@ -431,79 +387,57 @@
 		return isEqualTo(typeBinding);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isClass()
-	 */
+	@Override
 	public boolean isClass() {
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isEnum()
-	 */
+	@Override
 	public boolean isEnum() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isFromSource()
-	 */
+	@Override
 	public boolean isFromSource() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isGenericType()
-	 */
+	@Override
 	public boolean isGenericType() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isInterface()
-	 */
+	@Override
 	public boolean isInterface() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isIntersectionType18()
-	 */
+	@Override
 	public boolean isIntersectionType() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isLocal()
-	 */
+	@Override
 	public boolean isLocal() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isMember()
-	 */
+	@Override
 	public boolean isMember() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isNested()
-	 */
+	@Override
 	public boolean isNested() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isNullType()
-	 */
+	@Override
 	public boolean isNullType() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isParameterizedType()
-	 */
+	@Override
 	public boolean isParameterizedType() {
 		if (this.innerTypeBinding != null) {
 			return this.innerTypeBinding.isParameterizedType();
@@ -514,23 +448,17 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isPrimitive()
-	 */
+	@Override
 	public boolean isPrimitive() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isRawType()
-	 */
+	@Override
 	public boolean isRawType() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isSubTypeCompatible(org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding)
-	 */
+	@Override
 	public boolean isSubTypeCompatible(ITypeBinding typeBinding) {
 		if ("java.lang.Object".equals(typeBinding.getQualifiedName())) { //$NON-NLS-1$
 			return true;
@@ -539,44 +467,32 @@
 		return isEqualTo(typeBinding);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isTopLevel()
-	 */
+	@Override
 	public boolean isTopLevel() {
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isTypeVariable()
-	 */
+	@Override
 	public boolean isTypeVariable() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isUpperbound()
-	 */
+	@Override
 	public boolean isUpperbound() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isWildcardType()
-	 */
+	@Override
 	public boolean isWildcardType() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#getAnnotations()
-	 */
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		return AnnotationBinding.NoAnnotations;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#getJavaElement()
-	 */
+	@Override
 	public IJavaElement getJavaElement() {
 		IPackageBinding packageBinding = getPackage();
 		if (packageBinding != null) {
@@ -589,9 +505,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#getKey()
-	 */
+	@Override
 	public String getKey() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("Recovered#"); //$NON-NLS-1$
@@ -625,38 +539,28 @@
 		return String.valueOf(buffer);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#getKind()
-	 */
+	@Override
 	public int getKind() {
 		return IBinding.TYPE;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isDeprecated()
-	 */
+	@Override
 	public boolean isDeprecated() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isEqualTo(org.aspectj.org.eclipse.jdt.core.dom.IBinding)
-	 */
+	@Override
 	public boolean isEqualTo(IBinding other) {
 		if (!other.isRecovered() || other.getKind() != IBinding.TYPE) return false;
 		return getKey().equals(other.getKey());
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isRecovered()
-	 */
+	@Override
 	public boolean isRecovered() {
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isSynthetic()
-	 */
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
@@ -732,6 +636,7 @@
 		return null; // should not happen
 	}
 
+	@Override
 	public IAnnotationBinding[] getTypeAnnotations() {
 		return AnnotationBinding.NoAnnotations;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.java
index 986c74a..d6bc647 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RecoveredVariableBinding.java
@@ -24,10 +24,12 @@
 		this.resolver = resolver;
 		this.variableDeclaration = variableDeclaration;
 	}
+	@Override
 	public Object getConstantValue() {
 		return null;
 	}
 
+	@Override
 	public ITypeBinding getDeclaringClass() {
 		ASTNode parent = this.variableDeclaration.getParent();
 		while (parent != null && parent.getNodeType() != ASTNode.TYPE_DECLARATION) {
@@ -39,6 +41,7 @@
 		return null;
 	}
 
+	@Override
 	public IMethodBinding getDeclaringMethod() {
 		ASTNode parent = this.variableDeclaration.getParent();
 		while (parent != null && parent.getNodeType() != ASTNode.METHOD_DECLARATION) {
@@ -50,42 +53,52 @@
 		return null;
 	}
 
+	@Override
 	public String getName() {
 		return this.variableDeclaration.getName().getIdentifier();
 	}
 
+	@Override
 	public ITypeBinding getType() {
 		return this.resolver.getTypeBinding(this.variableDeclaration);
 	}
 
+	@Override
 	public IVariableBinding getVariableDeclaration() {
 		return this;
 	}
 
+	@Override
 	public int getVariableId() {
 		return 0;
 	}
 
+	@Override
 	public boolean isEnumConstant() {
 		return false;
 	}
 
+	@Override
 	public boolean isField() {
 		return this.variableDeclaration.getParent() instanceof FieldDeclaration;
 	}
 
+	@Override
 	public boolean isParameter() {
 		return this.variableDeclaration instanceof SingleVariableDeclaration;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		return AnnotationBinding.NoAnnotations;
 	}
 
+	@Override
 	public IJavaElement getJavaElement() {
 		return null;
 	}
 
+	@Override
 	public String getKey() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("Recovered#"); //$NON-NLS-1$
@@ -99,18 +112,22 @@
 		return String.valueOf(buffer);
 	}
 
+	@Override
 	public int getKind() {
 		return IBinding.VARIABLE;
 	}
 
+	@Override
 	public int getModifiers() {
 		return 0;
 	}
 
+	@Override
 	public boolean isDeprecated() {
 		return false;
 	}
 
+	@Override
 	public boolean isEqualTo(IBinding binding) {
 		if (binding.isRecovered() && binding.getKind() == IBinding.VARIABLE) {
 			return getKey().equals(binding.getKey());
@@ -118,13 +135,16 @@
 		return false;
 	}
 
+	@Override
 	public boolean isRecovered() {
 		return true;
 	}
 
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
+	@Override
 	public boolean isEffectivelyFinal() {
 		return false;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.java
new file mode 100644
index 0000000..91138fb
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/RequiresDirective.java
@@ -0,0 +1,248 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Requires directive AST node type (added in JLS9 API).
+ * <pre>
+ * RequiresDirective:
+ *     <b>requires</b> { ModuleModifier } Name <b>;</b>
+ * </pre>
+ *
+ * @since 3.14
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
+ */
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class RequiresDirective extends ModuleDirective {
+
+	/**
+	 * The "modifiers" structural property of this node type (element type: {@link ModuleModifier}).
+	 */
+	public static final ChildListPropertyDescriptor MODIFIERS_PROPERTY =
+		new ChildListPropertyDescriptor(RequiresDirective.class, "modifiers", ModuleModifier.class, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * The module structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+		new ChildPropertyDescriptor(RequiresDirective.class, "name", Name.class, OPTIONAL, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List propertyList = new ArrayList(3);
+		createPropertyList(RequiresDirective.class, propertyList);
+		addProperty(MODIFIERS_PROPERTY, propertyList);
+		addProperty(NAME_PROPERTY, propertyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(propertyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * The extended modifiers (element type: {@link ModuleModifier}).
+	 * defaults to an empty list
+	 */
+	private ASTNode.NodeList modifiers = new ASTNode.NodeList(MODIFIERS_PROPERTY);
+
+	/**
+	 * The referenced module name; lazily initialized; defaults to a unspecified,
+	 * legal Java identifier.
+	 */
+	private Name name = null;
+
+	/**
+	 * Creates a new AST node for an requires directive owned by the
+	 * given AST. The requires directive initially is a regular (no modifiers)
+	 * requires for an unspecified, but legal, Java module name.
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	RequiresDirective(AST ast) {
+		super(ast);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == NAME_PROPERTY) {
+			if (get) {
+				return getName();
+			} else {
+				setName((Name) child);
+				return null;
+			}
+		}
+
+		// allow default implementation to flag the error
+		return super.internalGetSetChildProperty(property, get, child);
+	}
+
+	@Override
+	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
+		if (property == MODIFIERS_PROPERTY) {
+			return modifiers();
+		}
+
+		// allow default implementation to flag the error
+		return super.internalGetChildListProperty(property);
+	}
+
+	@Override
+	final int getNodeType0() {
+		return REQUIRES_DIRECTIVE;
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		RequiresDirective result = new RequiresDirective(target);
+		result.modifiers().addAll(ASTNode.copySubtrees(target, modifiers()));
+		result.setName((Name) getName().clone(target));
+		return result;
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		if (visitChildren) {
+			acceptChildren(visitor, this.modifiers);
+			acceptChild(visitor, getName());
+		}
+		visitor.endVisit(this);
+	}
+
+	/**
+	 * Returns the live ordered list of modifiers
+	 * of this declaration.
+	 * <p>
+	 * Note that the not all modifiers are legal.
+	 * </p>
+	 *
+	 * @return the live list of module modifiers
+	 *    (element type: {@link ModuleModifier})
+	 */
+	public List modifiers() {
+		return this.modifiers;
+	}
+
+	/**
+	 * Returns the module modifiers explicitly specified on this declaration.
+	 * <p>
+	 * This method is a convenience method that
+	 * computes these flags from <code>modifiers()</code>.
+	 * </p>
+	 *
+	 * @return the bit-wise or of <code>ModuleModifier</code> constants
+	 * @see ModuleModifier
+	 */
+	public int getModifiers() {
+		// do not cache - performance could be improved by caching computed flags
+		// but this would require tracking changes to this.modifiers
+		int computedModifierFlags = ModuleModifier.NONE;
+		for (Iterator it = modifiers().iterator(); it.hasNext(); ) {
+			Object x = it.next();
+			if (x instanceof ModuleModifier) {
+				computedModifierFlags |= ((ModuleModifier) x).getKeyword().toFlagValue();
+			}
+		}
+		return computedModifierFlags;
+	}
+
+	/**
+	 * Returns the module name referenced by this declaration.
+	 *
+	 * @return the module referenced
+	 */
+	public Name getName()  {
+		if (this.name == null) {
+			// lazy init must be thread-safe for readers
+			synchronized (this) {
+				if (this.name == null) {
+					preLazyInit();
+					this.name =this.ast.newQualifiedName(
+							new SimpleName(this.ast), new SimpleName(this.ast));
+					postLazyInit(this.name, NAME_PROPERTY);
+				}
+			}
+		}
+		return this.name;
+	}
+
+	/**
+	 * Sets the module name in requires directive to the given name.
+	 *
+	 * @param name the new module name
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 */
+	public void setName(Name name) {
+		if (name == null) {
+			throw new IllegalArgumentException();
+		}
+		ASTNode oldChild = this.name;
+		preReplaceChild(oldChild, name, NAME_PROPERTY);
+		this.name = name;
+		postReplaceChild(oldChild, name, NAME_PROPERTY);
+	}
+
+	@Override
+	int memSize() {
+		return BASE_NODE_SIZE + 2 * 4;
+	}
+
+	@Override
+	int treeSize() {
+		return
+			memSize()
+			+ (this.modifiers == null ? 0 : this.modifiers.listSize())
+			+ (this.name == null ? 0 : getName().treeSize());
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.java
index f191f83..09a388e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ReturnStatement.java
@@ -78,16 +78,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -101,16 +97,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return RETURN_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ReturnStatement result = new ReturnStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -120,17 +112,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -168,16 +156,12 @@
 		postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.java
index 4b64819..0742506 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleName.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,13 @@
 		new SimplePropertyDescriptor(SimpleName.class, "identifier", String.class, MANDATORY); //$NON-NLS-1$
 
 	/**
+	 * The "var"  property of this node name (type: {@link Boolean}) (added in JLS10 API).
+	 * @since 3.14
+	 */
+	public static final SimplePropertyDescriptor VAR_PROPERTY =
+		new SimplePropertyDescriptor(SimpleName.class, "var", boolean.class, MANDATORY); //$NON-NLS-1$
+
+	/**
 	 * A list of property descriptors (element type:
 	 * {@link StructuralPropertyDescriptor}),
 	 * or null if uninitialized.
@@ -49,12 +56,26 @@
 	 */
 	private static final List PROPERTY_DESCRIPTORS;
 
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 * @since 3.14
+	 */
+	private static final List PROPERTY_DESCRIPTORS_10_0;
+
 	static {
 		List propertyList = new ArrayList(2);
 		createPropertyList(SimpleName.class, propertyList);
 		addProperty(IDENTIFIER_PROPERTY, propertyList);
 		PROPERTY_DESCRIPTORS = reapPropertyList(propertyList);
-	}
+
+		propertyList = new ArrayList(3);
+		createPropertyList(SimpleName.class, propertyList);
+		addProperty(IDENTIFIER_PROPERTY, propertyList);
+		addProperty(VAR_PROPERTY, propertyList);
+		PROPERTY_DESCRIPTORS_10_0 = reapPropertyList(propertyList);
+}
 
 	/**
 	 * Returns a list of structural property descriptors for this node type.
@@ -66,7 +87,11 @@
 	 * @since 3.0
 	 */
 	public static List propertyDescriptors(int apiLevel) {
-		return PROPERTY_DESCRIPTORS;
+		if (apiLevel < AST.JLS10_INTERNAL) {
+			return PROPERTY_DESCRIPTORS;
+		} else {
+			return PROPERTY_DESCRIPTORS_10_0;
+		}
 	}
 
 	/**
@@ -80,6 +105,14 @@
 	private String identifier = MISSING_IDENTIFIER;
 
 	/**
+	 * Indicates the whether this represents a var;
+	 * defaults to false.
+	 *
+	 * @since 3.14
+	 */
+	private boolean isVarType = false;
+
+	/**
 	 * Creates a new AST node for a simple name owned by the given AST.
 	 * The new node has an unspecified, legal Java identifier.
 	 * <p>
@@ -98,13 +131,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == IDENTIFIER_PROPERTY) {
 			if (get) {
@@ -118,34 +150,43 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
+	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
+		if (property == VAR_PROPERTY) {
+			if (get) {
+				return isVar();
+			} else {
+				setVar(value);
+				return false;
+			}
+		}
+		// allow default implementation to flag the error
+		return super.internalGetSetBooleanProperty(property, get, value);
+	}
+
+	@Override
 	final int getNodeType0() {
 		return SIMPLE_NAME;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SimpleName result = new SimpleName(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		result.setIdentifier(getIdentifier());
+		if (this.ast.apiLevel >= AST.JLS10_INTERNAL) {
+			result.setVar(isVar());
+		}
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -210,6 +251,27 @@
 		postValueChange(IDENTIFIER_PROPERTY);
 	}
 
+	/**
+	 * Returns whether this represents a "var"  type or not (added in JLS10 API).
+	 *
+	 * @return <code>true</code> if this is a var  type
+	 *    and <code>false</code> otherwise
+	 * @exception UnsupportedOperationException if this operation is used in
+	 * an AST below JLS10
+	 * @since 3.14
+	 */
+	public boolean isVar() {
+		unsupportedBelow10();
+		return this.isVarType;
+	}
+
+	/* package */ void setVar(boolean isVar) {
+		unsupportedBelow10();
+		preValueChange(VAR_PROPERTY);
+		this.isVarType = isVar;
+		postValueChange(VAR_PROPERTY);
+	}
+
 	/* (omit javadoc for this method)
 	 * This method is a copy of setIdentifier(String) that doesn't do any validation.
 	 */
@@ -287,18 +349,14 @@
 		return false;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on Name.
-	 */
+	@Override
 	void appendName(StringBuffer buffer) {
 		buffer.append(getIdentifier());
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
-		int size = BASE_NAME_NODE_SIZE + 2 * 4;
+		int size = BASE_NAME_NODE_SIZE + 3 * 4;
 		if (this.identifier != MISSING_IDENTIFIER) {
 			// everything but our missing id costs
 			size += stringSize(this.identifier);
@@ -306,9 +364,7 @@
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.java
index 1c9c56d..0e50faa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SimpleType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -123,20 +123,17 @@
 	 * Method declared on AnnotatableType.
 	 * @since 3.10
 	 */
+	@Override
 	final ChildListPropertyDescriptor internalAnnotationsProperty() {
 		return ANNOTATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -144,10 +141,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -161,20 +156,16 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SIMPLE_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SimpleType result = new SimpleType(target);
 		result.setSourceRange(getStartPosition(), getLength());
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.annotations().addAll(
 					ASTNode.copySubtrees(target, annotations()));
 		}
@@ -182,22 +173,18 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.annotations);
 			}
 			acceptChild(visitor, getName());
@@ -244,17 +231,27 @@
 		postReplaceChild(oldChild, typeName, NAME_PROPERTY);
 	}
 
+	/**
+	 * @exception UnsupportedOperationException if this operation is used below JLS10
+	 * @since 3.14
+	 */
+	@Override
+	public boolean isVar() {
+		unsupportedBelow10();
+		if (this.typeName == null) getName();
+		String qName = this.typeName.getFullyQualifiedName();
+		return qName != null && qName.equals("var"); //$NON-NLS-1$
+	}
 	/* (omit javadoc for this method)
 	 * Method declared on ASTNode.
 	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.java
index df3b8a5..70ef82b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleMemberAnnotation.java
@@ -91,16 +91,12 @@
 	    unsupportedIn2();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_NAME_PROPERTY) {
 			if (get) {
@@ -122,23 +118,17 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalTypeNameProperty() {
 		return TYPE_NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SINGLE_MEMBER_ANNOTATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SingleMemberAnnotation result = new SingleMemberAnnotation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -147,17 +137,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -208,16 +194,12 @@
 		postReplaceChild(oldChild, value, VALUE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
index e0d3bec..bb0cc99 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SingleVariableDeclaration.java
@@ -171,7 +171,7 @@
 	public static List propertyDescriptors(int apiLevel) {
 		if (apiLevel == AST.JLS2_INTERNAL) {
 			return PROPERTY_DESCRIPTORS_2_0;
-		} else if (apiLevel < AST.JLS8) {
+		} else if (apiLevel < AST.JLS8_INTERNAL) {
 			return PROPERTY_DESCRIPTORS_3_0;
 		} else {
 			return PROPERTY_DESCRIPTORS_8_0;
@@ -231,54 +231,38 @@
 		super(ast);
 		if (ast.apiLevel >= AST.JLS3_INTERNAL) {
 			this.modifiers = new ASTNode.NodeList(MODIFIERS2_PROPERTY);
-			if (ast.apiLevel >= AST.JLS8) {
+			if (ast.apiLevel >= AST.JLS8_INTERNAL) {
 				this.varargsAnnotations = new ASTNode.NodeList(VARARGS_ANNOTATIONS_PROPERTY);
 			}
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final ChildPropertyDescriptor internalNameProperty() {
 		return NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final SimplePropertyDescriptor internalExtraDimensionsProperty() {
 		return EXTRA_DIMENSIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.10
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalExtraDimensions2Property() {
 		return EXTRA_DIMENSIONS2_PROPERTY;
 	}
 	
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final ChildPropertyDescriptor internalInitializerProperty() {
 		return INITIALIZER_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -300,9 +284,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == VARARGS_PROPERTY) {
 			if (get) {
@@ -316,9 +298,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -348,9 +328,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -365,16 +343,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SINGLE_VARIABLE_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SingleVariableDeclaration result = new SingleVariableDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -385,12 +359,12 @@
 			result.setVarargs(isVarargs());
 		}
 		result.setType((Type) getType().clone(target));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.varargsAnnotations().addAll(
 					ASTNode.copySubtrees(target, varargsAnnotations()));
 		}
 		result.setName((SimpleName) getName().clone(target));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.extraDimensions().addAll(
 					ASTNode.copySubtrees(target, this.extraDimensions()));
 		} else {
@@ -401,17 +375,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -420,11 +390,11 @@
 				acceptChildren(visitor, this.modifiers);
 			}
 			acceptChild(visitor, getType());
-			if (this.ast.apiLevel >= AST.JLS8 && isVarargs()) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL && isVarargs()) {
 				acceptChildren(visitor, this.varargsAnnotations);
 			}
 			acceptChild(visitor, getName());
-			if (this.ast.apiLevel >= AST.JLS8){
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL){
 				acceptChildren(visitor, this.extraDimensions);
 			}
 			acceptChild(visitor, getInitializer());
@@ -634,18 +604,14 @@
 		}
 		return this.varargsAnnotations;
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 9 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Statement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Statement.java
index 4cf8a98..0bdc9e9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Statement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Statement.java
@@ -174,9 +174,7 @@
 		setLeadingComment(source.getLeadingComment());
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 1 * 4 + stringSize(getLeadingComment());
 		return size;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.java
index e516ba2..11453c9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StringLiteral.java
@@ -83,16 +83,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == ESCAPED_VALUE_PROPERTY) {
 			if (get) {
@@ -106,16 +102,12 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return STRING_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		StringLiteral result = new StringLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +115,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -279,17 +267,14 @@
 		b.append("\""); // closing delimiter //$NON-NLS-1$
 		setEscapedValue(b.toString());
 	}
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 1 * 4 + stringSize(this.escapedValue);
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.java
index bb40441..80ce598 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/StructuralPropertyDescriptor.java
@@ -119,6 +119,7 @@
 	 * Returns a string suitable for debug purposes.
 	 * @return {@inheritDoc}
 	 */
+	@Override
 	public String toString() {
 		StringBuffer b = new StringBuffer();
 		if (isChildListProperty()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.java
index 56dcf13..67016a3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperConstructorInvocation.java
@@ -134,16 +134,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -157,9 +153,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ARGUMENTS_PROPERTY) {
 			return arguments();
@@ -171,16 +165,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SUPER_CONSTRUCTOR_INVOCATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SuperConstructorInvocation result = new SuperConstructorInvocation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -194,17 +184,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -292,17 +278,13 @@
 		return this.ast.getBindingResolver().resolveConstructor(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize()
 		+ (this.optionalExpression == null ? 0 : getExpression().treeSize())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.java
index cc2e822..b425cff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperFieldAccess.java
@@ -102,16 +102,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -133,16 +129,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SUPER_FIELD_ACCESS;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SuperFieldAccess result = new SuperFieldAccess(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -151,17 +143,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -257,17 +245,13 @@
 		postReplaceChild(oldChild, fieldName, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.java
index 0091e7a..08aa68d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodInvocation.java
@@ -149,16 +149,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -180,9 +176,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ARGUMENTS_PROPERTY) {
 			return arguments();
@@ -194,16 +188,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SUPER_METHOD_INVOCATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SuperMethodInvocation result = new SuperMethodInvocation(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -216,17 +206,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -368,17 +354,13 @@
 		return this.ast.getBindingResolver().resolveMethod(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.java
index 9b3a3db..4e819e8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SuperMethodReference.java
@@ -102,23 +102,17 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on MethodReference.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalTypeArgumentsProperty() {
 		return TYPE_ARGUMENTS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -140,9 +134,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPE_ARGUMENTS_PROPERTY) {
 			return typeArguments();
@@ -151,16 +143,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SUPER_METHOD_REFERENCE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SuperMethodReference result = new SuperMethodReference(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -170,17 +158,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -226,6 +210,7 @@
 	 * @return the live list of type arguments
 	 *    (element type: {@link Type})
 	 */
+	@Override
 	public List typeArguments() {
 		return this.typeArguments;
 	}
@@ -270,17 +255,13 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.java
index 6956d7f..42da861 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchCase.java
@@ -88,16 +88,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -111,16 +107,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SWITCH_CASE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SwitchCase result = new SwitchCase(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -130,17 +122,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -205,16 +193,12 @@
 		return getExpression() == null;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.java
index 67de874..cc92763 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SwitchStatement.java
@@ -106,16 +106,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -129,9 +125,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == STATEMENTS_PROPERTY) {
 			return statements();
@@ -140,16 +134,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SWITCH_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SwitchStatement result = new SwitchStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -159,17 +149,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -232,16 +218,12 @@
 		return this.statements;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.java
index 69e147a..705311d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/SynchronizedStatement.java
@@ -97,16 +97,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -128,16 +124,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return SYNCHRONIZED_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		SynchronizedStatement result = new SynchronizedStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -147,17 +139,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -248,16 +236,12 @@
 		postReplaceChild(oldChild, block, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TagElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TagElement.java
index 39fbefd..54a31ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TagElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TagElement.java
@@ -211,16 +211,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == TAG_NAME_PROPERTY) {
 			if (get) {
@@ -234,9 +230,7 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == FRAGMENTS_PROPERTY) {
 			return fragments();
@@ -245,16 +239,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TAG_ELEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TagElement result = new TagElement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -263,17 +253,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -384,17 +370,13 @@
 		return (getParent() instanceof TagElement);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 2 * 4 + stringSize(this.optionalTagName);
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize() + this.fragments.listSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TextElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TextElement.java
index 5dfeae3..898847a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TextElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TextElement.java
@@ -87,16 +87,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) {
 		if (property == TEXT_PROPERTY) {
 			if (get) {
@@ -110,16 +106,12 @@
 		return super.internalGetSetObjectProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TEXT_ELEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TextElement result = new TextElement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -127,17 +119,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		visitor.visit(this);
 		visitor.endVisit(this);
@@ -177,9 +165,7 @@
 		postValueChange(TEXT_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		int size = BASE_NODE_SIZE + 1 * 4;
 		if (this.text != Util.EMPTY_STRING) {
@@ -189,9 +175,7 @@
 		return size;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.java
index 743ca5f..1f65b1d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThisExpression.java
@@ -83,16 +83,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == QUALIFIER_PROPERTY) {
 			if (get) {
@@ -106,16 +102,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return THIS_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ThisExpression result = new ThisExpression(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -123,17 +115,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -170,17 +158,13 @@
 		postReplaceChild(oldChild, name, QUALIFIER_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.java
index 9440462..1a76724 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/ThrowStatement.java
@@ -84,16 +84,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -107,16 +103,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return THROW_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		ThrowStatement result = new ThrowStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -125,17 +117,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -184,16 +172,12 @@
 		postReplaceChild(oldChild, expression, EXPRESSION_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.java
index e5bfa5a..771beab 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TryStatement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,20 +28,32 @@
  * Not all node arrangements will represent legal Java constructs. In particular,
  * at least one resource, catch clause, or finally block must be present.</p>
  * 
+ * <p>A resource is either a {@link VariableDeclarationExpression} or (since JLS9) a {@link Name}.</p>
+ * 
  * @since 2.0
  * @noinstantiate This class is not intended to be instantiated by clients.
+ * @noextend This class is not intended to be subclassed by clients.
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class TryStatement extends Statement {
 
+	
 	/**
 	 * The "resources" structural property of this node type (element type: {@link VariableDeclarationExpression}) (added in JLS4 API).
+	 * @deprecated In the JLS9 API, this property is replaced by {@link #RESOURCES2_PROPERTY}.
 	 * @since 3.7.1
 	 */
 	public static final ChildListPropertyDescriptor RESOURCES_PROPERTY =
 		new ChildListPropertyDescriptor(TryStatement.class, "resources", VariableDeclarationExpression.class, CYCLE_RISK); //$NON-NLS-1$
 
 	/**
+	 * The "resources" structural property of this node type (element type: {@link Expression}) (added in JLS9 API).
+	 * @since 3.14
+	 */
+	public static final ChildListPropertyDescriptor RESOURCES2_PROPERTY =
+		new ChildListPropertyDescriptor(TryStatement.class, "resources", Expression.class, CYCLE_RISK); //$NON-NLS-1$
+
+	/**
 	 * The "body" structural property of this node type (child type: {@link Block}).
 	 * @since 3.0
 	 */
@@ -77,6 +89,14 @@
 	 */
 	private static final List PROPERTY_DESCRIPTORS_4_0;
 
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 * @since 3.14
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
 	static {
 		List propertyList = new ArrayList(4);
 		createPropertyList(TryStatement.class, propertyList);
@@ -92,6 +112,14 @@
 		addProperty(CATCH_CLAUSES_PROPERTY, propertyList);
 		addProperty(FINALLY_PROPERTY, propertyList);
 		PROPERTY_DESCRIPTORS_4_0 = reapPropertyList(propertyList);
+
+		propertyList = new ArrayList(5);
+		createPropertyList(TryStatement.class, propertyList);
+		addProperty(RESOURCES2_PROPERTY, propertyList);
+		addProperty(BODY_PROPERTY, propertyList);
+		addProperty(CATCH_CLAUSES_PROPERTY, propertyList);
+		addProperty(FINALLY_PROPERTY, propertyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(propertyList);
 	}
 
 	/**
@@ -109,15 +137,20 @@
 			case AST.JLS2_INTERNAL :
 			case AST.JLS3_INTERNAL :
 				return PROPERTY_DESCRIPTORS;
-			default :
+			case AST.JLS4_INTERNAL :
+			case AST.JLS8_INTERNAL :
 				return PROPERTY_DESCRIPTORS_4_0;
+			default :
+				return PROPERTY_DESCRIPTORS_9_0;
 		}
 	}
 
 	/**
-	 * The resource expressions (element type: {@link VariableDeclarationExpression}).
-	 * Null in JLS2 and JLS3. Added in JLS4; defaults to an empty list
-	 * (see constructor).
+	 * The resource expressions (element type: {@link Expression}).
+	 * Null in JLS2 and JLS3. Added in JLS4.
+	 * In the deprecated JLS4 and JLS8 APIs, this used to be
+	 * (element type: {@link VariableDeclarationExpression}).
+	 * Defaults to an empty list (see constructor).
 	 * @since 3.7
 	 */
 	private ASTNode.NodeList resources = null;
@@ -153,21 +186,19 @@
 	 */
 	TryStatement(AST ast) {
 		super(ast);
-		if (ast.apiLevel >= AST.JLS4_INTERNAL) {
+		if (ast.apiLevel >= AST.JLS9_INTERNAL) {
+			this.resources = new ASTNode.NodeList(RESOURCES2_PROPERTY);
+		} else if (ast.apiLevel >= AST.JLS4_INTERNAL) {
 			this.resources = new ASTNode.NodeList(RESOURCES_PROPERTY);
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == BODY_PROPERTY) {
 			if (get) {
@@ -189,11 +220,9 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
-		if (property == RESOURCES_PROPERTY) {
+		if (property == RESOURCES_PROPERTY || property == RESOURCES2_PROPERTY) {
 			return resources();
 		}
 		if (property == CATCH_CLAUSES_PROPERTY) {
@@ -203,16 +232,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TRY_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TryStatement result = new TryStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -229,17 +254,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -336,9 +357,12 @@
 
 	/**
 	 * Returns the live ordered list of resources for this try statement (added in JLS4 API).
+	 * 
+	 * <p>A resource is either a {@link VariableDeclarationExpression} or (since JLS9) a {@link Name}.</p>
 	 *
-	 * @return the live list of resources
-	 *    (element type: {@link VariableDeclarationExpression})
+	 * @return the live list of resources (element type: {@link Expression}).
+	 *    In the deprecated JLS4 and JLS8 APIs, this used to be
+	 *    (element type: {@link VariableDeclarationExpression}).
 	 * @exception UnsupportedOperationException if this operation is used
 	 *            in a JLS2 or JLS3 AST
 	 * @since 3.7.1
@@ -351,16 +375,12 @@
 		return this.resources;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Type.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Type.java
index 2f2f76a..c6d88fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Type.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/Type.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -178,6 +178,20 @@
 	}
 
 	/**
+	 * Returns whether this type is a var. The convenience method checks
+	 * whether the type is so named.
+	 *
+	 * @return <code>true</code> if this is a var, and
+	 *    <code>false</code> otherwise
+	 * @exception UnsupportedOperationException if this operation is used in
+	 * an AST of level less than JLS10
+	 * @since 3.14
+	 */
+	public boolean isVar() {
+		return false;
+	}
+
+	/**
 	 * Returns whether this type is an intersection type
 	 * ({@link IntersectionType}).
 	 *
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.java
index fbe1438..187570e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -90,6 +90,7 @@
 		this.prototype = (TypeBinding) (compilerPrototype == null || compilerPrototype == binding ? null : resolver.getTypeBinding(compilerPrototype)); //$IDENTITY-COMPARISON$
 	}
 
+	@Override
 	public ITypeBinding createArrayType(int dimension) {
 		int realDimensions = dimension;
 		realDimensions += getDimensions();
@@ -99,6 +100,7 @@
 		return this.resolver.resolveArrayType(this, dimension);
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		if (this.prototype != null) {
 			return this.prototype.getAnnotations();
@@ -144,10 +146,7 @@
 		return AnnotationBinding.NoAnnotations;
 	}
 
-	/*
-	 * @see ITypeBinding#getBinaryName()
-	 * @since 3.0
-	 */
+	@Override
 	public String getBinaryName() {
 		if (this.binding.isCapture()) {
 			return null; // no binary name for capture binding
@@ -184,9 +183,7 @@
 		return new String(dotSeparated);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getBound()
-	 */
+	@Override
 	public ITypeBinding getBound() {
 		switch (this.binding.kind()) {
 			case Binding.WILDCARD_TYPE :
@@ -200,9 +197,7 @@
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getGenericTypeOfWildcardType()
-	 */
+	@Override
 	public ITypeBinding getGenericTypeOfWildcardType() {
 		switch (this.binding.kind()) {
 			case Binding.WILDCARD_TYPE :
@@ -215,9 +210,7 @@
 		return null;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getRank()
-	 */
+	@Override
 	public int getRank() {
 		switch (this.binding.kind()) {
 			case Binding.WILDCARD_TYPE :
@@ -229,9 +222,7 @@
 		}
 	}
 	
-	/*
-	 * @see ITypeBinding#getComponentType()
-	 */
+	@Override
 	public ITypeBinding getComponentType() {
 		if (!isArray()) {
 			return null;
@@ -240,9 +231,7 @@
 		return this.resolver.getTypeBinding(arrayBinding.elementsType());
 	}
 
-	/*
-	 * @see ITypeBinding#getDeclaredFields()
-	 */
+	@Override
 	public synchronized IVariableBinding[] getDeclaredFields() {
 		if (this.prototype != null) {
 			return this.prototype.getDeclaredFields();
@@ -286,9 +275,7 @@
 		return this.fields = NO_VARIABLE_BINDINGS;
 	}
 
-	/*
-	 * @see ITypeBinding#getDeclaredMethods()
-	 */
+	@Override
 	public synchronized IMethodBinding[] getDeclaredMethods() {
 		if (this.prototype != null) {
 			return this.prototype.getDeclaredMethods();
@@ -338,13 +325,12 @@
 	 * @see ITypeBinding#getDeclaredModifiers()
 	 * @deprecated Use ITypeBinding#getModifiers() instead
 	 */
+	@Override
 	public int getDeclaredModifiers() {
 		return getModifiers();
 	}
 
-	/*
-	 * @see ITypeBinding#getDeclaredTypes()
-	 */
+	@Override
 	public synchronized ITypeBinding[] getDeclaredTypes() { // should not deflect to prototype.
 		if (this.members != null) {
 			return this.members;
@@ -377,9 +363,7 @@
 		return this.members = NO_TYPE_BINDINGS;
 	}
 
-	/*
-	 * @see ITypeBinding#getDeclaringMethod()
-	 */
+	@Override
 	public synchronized IMethodBinding getDeclaringMethod() {
 		if (this.binding instanceof org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding) {
 			org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding localTypeBinding = (org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding) this.binding;
@@ -415,9 +399,7 @@
 		return null;
 	}
 
-	/*
-	 * @see ITypeBinding#getDeclaringClass()
-	 */
+	@Override
 	public synchronized ITypeBinding getDeclaringClass() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -451,15 +433,20 @@
 		}
 		return null;
 	}
-
+	@Override
+	public IModuleBinding getModule() {
+		if (this.binding instanceof ReferenceBinding && !this.binding.isTypeVariable()) {
+			IPackageBinding packageBinding = this.resolver.getPackageBinding(((ReferenceBinding) this.binding).getPackage());
+			return packageBinding != null ? packageBinding.getModule() : null;
+		}
+		return null;
+	}
 	@Override
 	public IBinding getDeclaringMember() {
 		return null;
 	}
 
-	/*
-	 * @see ITypeBinding#getDimensions()
-	 */
+	@Override
 	public int getDimensions() {
 		if (!isArray()) {
 			return 0;
@@ -468,9 +455,7 @@
 		return arrayBinding.dimensions;
 	}
 
-	/*
-	 * @see ITypeBinding#getElementType()
-	 */
+	@Override
 	public ITypeBinding getElementType() {
 		if (!isArray()) {
 			return null;
@@ -479,25 +464,18 @@
 		return this.resolver.getTypeBinding(arrayBinding.leafComponentType);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeDeclaration()
-	 */
+	@Override
 	public ITypeBinding getTypeDeclaration() {
 		if (this.binding instanceof ParameterizedTypeBinding)
 			return this.resolver.getTypeBinding(((ParameterizedTypeBinding)this.binding).genericType());
 		return this.resolver.getTypeBinding(this.binding.unannotated());
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getErasure()
-	 */
+	@Override
 	public ITypeBinding getErasure() {
 		return this.resolver.getTypeBinding(this.binding.erasure());
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getFunctionalInterfaceMethod
-	 */
 	@Override
 	public IMethodBinding getFunctionalInterfaceMethod() {
 		Scope scope = this.resolver.scope();
@@ -509,6 +487,7 @@
 		return this.resolver.getMethodBinding(sam);
 	}
 
+	@Override
 	public synchronized ITypeBinding[] getInterfaces() {
 		if (this.prototype != null) {
 			return this.prototype.getInterfaces();
@@ -567,6 +546,7 @@
 		return intersectionBindings;
 	}
 
+	@Override
 	public IJavaElement getJavaElement() {
 		JavaElement element = getUnresolvedJavaElement();
 		if (element != null)
@@ -603,9 +583,7 @@
 		return null;
 	}
 
-	/*
-	 * @see IBinding#getKey()
-	 */
+	@Override
 	public String getKey() {
 		if (this.key == null) {
 			this.key = new String(this.binding.computeUniqueKey());
@@ -613,16 +591,12 @@
 		return this.key;
 	}
 
-	/*
-	 * @see IBinding#getKind()
-	 */
+	@Override
 	public int getKind() {
 		return IBinding.TYPE;
 	}
 
-	/*
-	 * @see IBinding#getModifiers()
-	 */
+	@Override
 	public int getModifiers() {
 		if (isClass()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -651,6 +625,7 @@
 		}
 	}
 
+	@Override
 	public String getName() {
 		StringBuffer buffer;
 		switch (this.binding.kind()) {
@@ -731,9 +706,7 @@
 		}
 	}
 
-	/*
-	 * @see ITypeBinding#getPackage()
-	 */
+	@Override
 	public IPackageBinding getPackage() {
 		switch (this.binding.kind()) {
 			case Binding.BASE_TYPE :
@@ -751,6 +724,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getQualifiedName()
 	 */
+	@Override
 	public String getQualifiedName() {
 		StringBuffer buffer;
 		switch (this.binding.kind()) {
@@ -863,9 +837,7 @@
 		}
 	}
 
-	/*
-	 * @see ITypeBinding#getSuperclass()
-	 */
+	@Override
 	public synchronized ITypeBinding getSuperclass() {
 		if (this.binding == null)
 			return null;
@@ -896,9 +868,7 @@
 		return this.resolver.getTypeBinding(superclass);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeArguments()
-	 */
+	@Override
 	public ITypeBinding[] getTypeArguments() {
 		if (this.prototype != null) {
 			return this.prototype.getTypeArguments();
@@ -923,9 +893,7 @@
 		return this.typeArguments = NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeBounds()
-	 */
+	@Override
 	public ITypeBinding[] getTypeBounds() {
 		if (this.prototype != null) {
 			return this.prototype.getTypeBounds();
@@ -991,9 +959,7 @@
 		return this.bounds = NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getTypeParameters()
-	 */
+	@Override
 	public ITypeBinding[] getTypeParameters() {
 		if (this.prototype != null) {
 			return this.prototype.getTypeParameters();
@@ -1022,10 +988,7 @@
 		return this.typeParameters = NO_TYPE_BINDINGS;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#getWildcard()
-	 * @since 3.1
-	 */
+	@Override
 	public ITypeBinding getWildcard() {
 		if (this.binding instanceof CaptureBinding) {
 			CaptureBinding captureBinding = (CaptureBinding) this.binding;
@@ -1034,10 +997,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isGenericType()
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isGenericType() {
 		// equivalent to return getTypeParameters().length > 0;
 		if (isRawType()) {
@@ -1047,16 +1007,12 @@
 		return (typeVariableBindings != null && typeVariableBindings.length > 0);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isAnnotation()
-	 */
+	@Override
 	public boolean isAnnotation() {
 		return this.binding.isAnnotationType();
 	}
 
-	/*
-	 * @see ITypeBinding#isAnonymous()
-	 */
+	@Override
 	public boolean isAnonymous() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1065,16 +1021,12 @@
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isArray()
-	 */
+	@Override
 	public boolean isArray() {
 		return this.binding.isArrayType();
 	}
 
-	/* (non-Javadoc)
-	 * @see ITypeBinding#isAssignmentCompatible(ITypeBinding)
-	 */
+	@Override
 	public boolean isAssignmentCompatible(ITypeBinding type) {
 		try {
 			if (this == type) return true; //$IDENTITY-COMPARISON$
@@ -1090,16 +1042,12 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see ITypeBinding#isCapture()
-	 */
+	@Override
 	public boolean isCapture() {
 		return this.binding.isCapture();
 	}
 
-	/* (non-Javadoc)
-	 * @see ITypeBinding#isCastCompatible(ITypeBinding)
-	 */
+	@Override
 	public boolean isCastCompatible(ITypeBinding type) {
 		try {
 			Scope scope = this.resolver.scope();
@@ -1116,9 +1064,7 @@
 		}
 	}
 
-	/*
-	 * @see ITypeBinding#isClass()
-	 */
+	@Override
 	public boolean isClass() {
 		switch (this.binding.kind()) {
 			case Binding.TYPE_PARAMETER :
@@ -1129,9 +1075,7 @@
 		return this.binding.isClass();
 	}
 
-	/*
-	 * @see IBinding#isDeprecated()
-	 */
+	@Override
 	public boolean isDeprecated() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1140,17 +1084,12 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see ITypeBinding#isEnum()
-	 */
+	@Override
 	public boolean isEnum() {
 		return this.binding.isEnum();
 	}
 
-	/*
-	 * @see IBinding#isEqualTo(Binding)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isEqualTo(IBinding other) {
 		if (other == this) {
 			// identical binding - equal (key or no key)
@@ -1171,9 +1110,7 @@
 		return BindingComparator.isEqual(this.binding, otherBinding);
 	}
 
-	/*
-	 * @see ITypeBinding#isFromSource()
-	 */
+	@Override
 	public boolean isFromSource() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1215,9 +1152,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isInterface()
-	 */
+	@Override
 	public boolean isInterface() {
 		switch (this.binding.kind()) {
 			case Binding.TYPE_PARAMETER :
@@ -1228,17 +1163,13 @@
 		return this.binding.isInterface();
 	}
 
-	/*
-	 * @see ITypeBinding#isIntersectionType18
-	 */
+	@Override
 	public boolean isIntersectionType() {
 		int kind = this.binding.kind();
 		return kind == Binding.INTERSECTION_TYPE18 || kind == Binding.INTERSECTION_TYPE;
 	}
 
-	/*
-	 * @see ITypeBinding#isLocal()
-	 */
+	@Override
 	public boolean isLocal() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1247,9 +1178,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isMember()
-	 */
+	@Override
 	public boolean isMember() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1258,9 +1187,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isNested()
-	 */
+	@Override
 	public boolean isNested() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1272,41 +1199,32 @@
 	/**
 	 * @see ITypeBinding#isNullType()
 	 */
+	@Override
 	public boolean isNullType() {
 		return this.binding == org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding.NULL;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isParameterizedType()
-	 */
+	@Override
 	public boolean isParameterizedType() {
 		return this.binding.isParameterizedTypeWithActualArguments();
 	}
 
-	/*
-	 * @see ITypeBinding#isPrimitive()
-	 */
+	@Override
 	public boolean isPrimitive() {
 		return !isNullType() && this.binding.isBaseType();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isRawType()
-	 */
+	@Override
 	public boolean isRawType() {
 		return this.binding.isRawType();
 	}
 
-	/* (non-Javadoc)
-	 * @see IBinding#isRecovered()
-	 */
+	@Override
 	public boolean isRecovered() {
 		return (this.binding.tagBits & TagBits.HasMissingType) != 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see ITypeBinding#isSubTypeCompatible(ITypeBinding)
-	 */
+	@Override
 	public boolean isSubTypeCompatible(ITypeBinding type) {
 		try {
 			if (this == type) return true; //$IDENTITY-COMPARISON$
@@ -1325,13 +1243,12 @@
 	/**
 	 * @see IBinding#isSynthetic()
 	 */
+	@Override
 	public boolean isSynthetic() {
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isTopLevel()
-	 */
+	@Override
 	public boolean isTopLevel() {
 		if (isClass() || isInterface() || isEnum()) {
 			ReferenceBinding referenceBinding = (ReferenceBinding) this.binding;
@@ -1340,16 +1257,12 @@
 		return false;
 	}
 
-	/*
-	 * @see ITypeBinding#isTypeVariable()
-	 */
+	@Override
 	public boolean isTypeVariable() {
 		return this.binding.isTypeVariable() && !this.binding.isCapture();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isUpperbound()
-	 */
+	@Override
 	public boolean isUpperbound() {
 		switch (this.binding.kind()) {
 			case Binding.WILDCARD_TYPE :
@@ -1360,9 +1273,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding#isWildcardType()
-	 */
+	@Override
 	public boolean isWildcardType() {
 		return this.binding.isWildcard();
 	}
@@ -1371,13 +1282,12 @@
 	 * For debugging purpose only.
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		return this.binding.toString();
 	}
 
-	/*
-	 * @see ITypeBinding#getTypeUseAnnotations()
-	 */
+	@Override
 	public IAnnotationBinding[] getTypeAnnotations() {
 		if (this.typeAnnotations != null) {
 			return this.typeAnnotations;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.java
index ea86c90..acfc0aa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclaration.java
@@ -304,13 +304,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -324,9 +323,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	// AspectJ extension, made non final so it can be overridden
 	/*final*/ boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == INTERFACE_PROPERTY) {
@@ -341,9 +338,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	// AspectJ extension, made non final so it can be overridden
 	/*final*/ ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == JAVADOC_PROPERTY) {
@@ -382,9 +377,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -405,52 +398,37 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalJavadocProperty() {
 		return JAVADOC_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalModifiers2Property() {
 		return MODIFIERS2_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on BodyDeclaration.
-	 */
+	@Override
 	final SimplePropertyDescriptor internalModifiersProperty() {
 		return MODIFIERS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildPropertyDescriptor internalNameProperty() {
 		return NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AbstractTypeDeclaration.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalBodyDeclarationsProperty() {
 		return BODY_DECLARATIONS_PROPERTY;
 	}
 
-
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TYPE_DECLARATION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TypeDeclaration result = new TypeDeclaration(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -479,17 +457,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -818,23 +792,17 @@
 		return memberTypes;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on AsbtractTypeDeclaration.
-	 */
+	@Override
 	ITypeBinding internalResolveBinding() {
 		return this.ast.getBindingResolver().resolveType(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 6 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return memSize()
 			+ (this.optionalDocComment == null ? 0 : getJavadoc().treeSize())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
index d11034d..3cccd66 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeDeclarationStatement.java
@@ -140,13 +140,12 @@
 	 * Method declared on ASTNode.
 	 * @since 3.0
 	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_DECLARATION_PROPERTY) {
 			if (get) {
@@ -168,16 +167,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TYPE_DECLARATION_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TypeDeclarationStatement result =
 			new TypeDeclarationStatement(target);
@@ -188,17 +183,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -338,16 +329,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.java
index 6b89d11..39aab2d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeLiteral.java
@@ -82,16 +82,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -105,16 +101,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TYPE_LITERAL;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TypeLiteral result = new TypeLiteral(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -122,17 +114,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -180,17 +168,13 @@
 		postReplaceChild(oldChild, type, TYPE_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.java
index 19859ae..5572bc0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeMethodReference.java
@@ -101,23 +101,17 @@
 		unsupportedIn2_3_4();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on MethodReference.
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalTypeArgumentsProperty() {
 		return TYPE_ARGUMENTS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -139,9 +133,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPE_ARGUMENTS_PROPERTY) {
 			return typeArguments();
@@ -150,16 +142,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TYPE_METHOD_REFERENCE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TypeMethodReference result = new TypeMethodReference(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -169,17 +157,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -236,6 +220,7 @@
 	 * @return the live list of type arguments
 	 *    (element type: {@link Type})
 	 */
+	@Override
 	public List typeArguments() {
 		return this.typeArguments;
 	}
@@ -280,17 +265,13 @@
 		postReplaceChild(oldChild, name, NAME_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.java
index 033d1f2..77c2d17 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/TypeParameter.java
@@ -130,21 +130,17 @@
 	TypeParameter(AST ast) {
 		super(ast);
 	    unsupportedIn2();
-	    if (ast.apiLevel >= AST.JLS8) {
+	    if (ast.apiLevel >= AST.JLS8_INTERNAL) {
 			this.modifiers = new ASTNode.NodeList(MODIFIERS_PROPERTY);
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -158,9 +154,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS_PROPERTY) {
 			return modifiers();
@@ -172,20 +166,16 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return TYPE_PARAMETER;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		TypeParameter result = new TypeParameter(target);
 		result.setSourceRange(getStartPosition(), getLength());
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.modifiers().addAll(
 					ASTNode.copySubtrees(target, modifiers()));
 		}
@@ -195,22 +185,18 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.modifiers);
 			}
 			acceptChild(visitor, getName());
@@ -303,17 +289,13 @@
 		return this.modifiers;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Code as free
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UnionType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UnionType.java
index e3a23cb..9d5a76c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UnionType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UnionType.java
@@ -82,16 +82,12 @@
 		unsupportedIn2_3();
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == TYPES_PROPERTY) {
 			return types();
@@ -100,16 +96,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return UNION_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		UnionType result = new UnionType(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -118,17 +110,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -151,16 +139,12 @@
 		return this.types;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 1 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.java
new file mode 100644
index 0000000..61edd46
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/UsesDirective.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.dom;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Uses directive AST node type (added in JLS9 API).
+ * <pre>
+ * UsesDirective:
+ *     <b>uses</b> Name <b>;</b>
+ * </pre>
+ *
+ * @since 3.14
+ *
+ * @noextend This class is not intended to be subclassed by clients.
+ * @noinstantiate This class is not intended to be instantiated by clients.
+ */
+@SuppressWarnings("rawtypes")
+public class UsesDirective extends ModuleDirective {
+
+	/**
+	 * The "name" structural property of this node type (child type: {@link Name}).
+	 */
+	public static final ChildPropertyDescriptor NAME_PROPERTY =
+		new ChildPropertyDescriptor(UsesDirective.class, "name", Name.class, MANDATORY, NO_CYCLE_RISK); //$NON-NLS-1$
+
+	/**
+	 * A list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor}),
+	 * or null if uninitialized.
+	 */
+	private static final List PROPERTY_DESCRIPTORS_9_0;
+
+	static {
+		List properyList = new ArrayList(2);
+		createPropertyList(UsesDirective.class, properyList);
+		addProperty(NAME_PROPERTY, properyList);
+		PROPERTY_DESCRIPTORS_9_0 = reapPropertyList(properyList);
+	}
+
+	/**
+	 * Returns a list of structural property descriptors for this node type.
+	 * Clients must not modify the result.
+	 *
+	 * @param apiLevel the API level; one of the
+	 * <code>AST.JLS*</code> constants
+
+	 * @return a list of property descriptors (element type:
+	 * {@link StructuralPropertyDescriptor})
+	 */
+	public static List propertyDescriptors(int apiLevel) {
+		return PROPERTY_DESCRIPTORS_9_0;
+	}
+
+	/**
+	 * The module name; lazily initialized; defaults to a unspecified,
+	 * legal Java identifier.
+	 */
+	private Name name = null;
+
+	/**
+	 * Creates a new AST node for an uses directive owned by the
+	 * given AST. The uses directive initially is
+	 * for an unspecified, but legal, Java type name.
+	 * <p>
+	 * N.B. This constructor is package-private; all subclasses must be
+	 * declared in the same package; clients are unable to declare
+	 * additional subclasses.
+	 * </p>
+	 *
+	 * @param ast the AST that is to own this node
+	 */
+	UsesDirective(AST ast) {
+		super(ast);
+	}
+
+	@Override
+	final List internalStructuralPropertiesForType(int apiLevel) {
+		return propertyDescriptors(apiLevel);
+	}
+
+	@Override
+	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
+		if (property == NAME_PROPERTY) {
+			if (get) {
+				return getName();
+			} else {
+				setName((Name) child);
+				return null;
+			}
+		}
+
+		// allow default implementation to flag the error
+		return super.internalGetSetChildProperty(property, get, child);
+	}
+
+	@Override
+	final int getNodeType0() {
+		return USES_DIRECTIVE;
+	}
+
+	@Override
+	ASTNode clone0(AST target) {
+		UsesDirective result = new UsesDirective(target);
+		result.setSourceRange(getStartPosition(), getLength());
+		result.setName((Name) getName().clone(target));
+		return result;
+	}
+
+	@Override
+	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
+		// dispatch to correct overloaded match method
+		return matcher.match(this, other);
+	}
+
+	@Override
+	void accept0(ASTVisitor visitor) {
+		boolean visitChildren = visitor.visit(this);
+		if (visitChildren) {
+			acceptChild(visitor, getName());
+		}
+		visitor.endVisit(this);
+	}
+
+
+	/**
+	 * Returns the name of the service in this directive.
+	 *
+	 * @return the name of the service
+	 */
+	public Name getName()  {
+		if (this.name == null) {
+			// lazy init must be thread-safe for readers
+			synchronized (this) {
+				if (this.name == null) {
+					preLazyInit();
+					this.name = this.ast.newQualifiedName(
+							new SimpleName(this.ast), new SimpleName(this.ast));
+					postLazyInit(this.name, NAME_PROPERTY);
+				}
+			}
+		}
+		return this.name;
+	}
+
+	/**
+	 * Sets the name of the service in this directive.
+	 *
+	 * @param name the new name of the service
+	 * @exception IllegalArgumentException if:
+	 * <ul>
+	 * <li>the node belongs to a different AST</li>
+	 * <li>the node already has a parent</li>
+	 * </ul>
+	 */
+	public void setName(Name name) {
+		if (name == null) {
+			throw new IllegalArgumentException();
+		}
+		ASTNode oldChild = this.name;
+		preReplaceChild(oldChild, name, NAME_PROPERTY);
+		this.name = name;
+		postReplaceChild(oldChild, name, NAME_PROPERTY);
+	}
+
+	@Override
+	int memSize() {
+		return BASE_NODE_SIZE + 1 * 4;
+	}
+
+	@Override
+	int treeSize() {
+		return
+			memSize()
+			+ (this.name == null ? 0 : getName().treeSize());
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.java
index edbe3f9..39183bc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableBinding.java
@@ -50,6 +50,7 @@
 		this.binding = binding;
 	}
 
+	@Override
 	public IAnnotationBinding[] getAnnotations() {
 		if (this.annotations != null) {
 			return this.annotations;
@@ -78,10 +79,7 @@
 		return this.annotations = AnnotationBinding.NoAnnotations;
 	}
 
-	/* (non-Javadoc)
-	 * @see IVariableBinding#getConstantValue()
-	 * @since 3.0
-	 */
+	@Override
 	public Object getConstantValue() {
 		Constant c = this.binding.constant();
 		if (c == null || c == Constant.NotAConstant) return null;
@@ -108,9 +106,7 @@
 		return null;
 	}
 
-	/*
-	 * @see IVariableBinding#getDeclaringClass()
-	 */
+	@Override
 	public ITypeBinding getDeclaringClass() {
 		if (isField()) {
 			if (this.declaringClass == null) {
@@ -123,9 +119,7 @@
 		}
 	}
 
-	/*
-	 * @see IVariableBinding#getDeclaringMethod()
-	 */
+	@Override
 	public IMethodBinding getDeclaringMethod() {
 		if (!isField()) {
 			ASTNode node = this.resolver.findDeclaringNode(this);
@@ -156,9 +150,7 @@
 		return null;
 	}
 
-	/*
-	 * @see IBinding#getJavaElement()
-	 */
+	@Override
 	public IJavaElement getJavaElement() {
 		JavaElement element = getUnresolvedJavaElement();
 		if (element == null)
@@ -166,9 +158,7 @@
 		return element.resolved(this.binding);
 	}
 
-	/*
-	 * @see IBinding#getKey()
-	 */
+	@Override
 	public String getKey() {
 		if (this.key == null) {
 			this.key = new String(this.binding.computeUniqueKey());
@@ -176,16 +166,12 @@
 		return this.key;
 	}
 
-	/*
-	 * @see IBinding#getKind()
-	 */
+	@Override
 	public int getKind() {
 		return IBinding.VARIABLE;
 	}
 
-	/*
-	 * @see IBinding#getModifiers()
-	 */
+	@Override
 	public int getModifiers() {
 		if (isField()) {
 			return ((FieldBinding) this.binding).getAccessFlags() & VALID_MODIFIERS;
@@ -196,9 +182,7 @@
 		return Modifier.NONE;
 	}
 
-	/*
-	 * @see IBinding#getName()
-	 */
+	@Override
 	public String getName() {
 		if (this.name == null) {
 			this.name = new String(this.binding.name);
@@ -206,9 +190,7 @@
 		return this.name;
 	}
 
-	/*
-	 * @see IVariableBinding#getType()
-	 */
+	@Override
 	public ITypeBinding getType() {
 		if (this.type == null) {
 			this.type = this.resolver.getTypeBinding(this.binding.type);
@@ -305,10 +287,7 @@
 				(localVariableBinding.tagBits & TagBits.IsArgument) != 0);
 	}
 
-	/*
-	 * @see IVariableBinding#getVariableDeclaration()
-	 * @since 3.1
-	 */
+	@Override
 	public IVariableBinding getVariableDeclaration() {
 		if (isField()) {
 			FieldBinding fieldBinding = (FieldBinding) this.binding;
@@ -317,22 +296,17 @@
 		return this;
 	}
 
-	/*
-	 * @see IVariableBinding#getVariableId()
-	 */
+	@Override
 	public int getVariableId() {
 		return this.binding.id;
 	}
 
-	/*
-	 * @see IVariableBinding#isParameter()
-	 */
+	@Override
 	public boolean isParameter() {
 		return (this.binding.tagBits & TagBits.IsArgument) != 0;
 	}
-	/*
-	 * @see IBinding#isDeprecated()
-	 */
+
+	@Override
 	public boolean isDeprecated() {
 		if (isField()) {
 			return ((FieldBinding) this.binding).isDeprecated();
@@ -340,18 +314,12 @@
 		return false;
 	}
 
-	/*
-	 * @see IVariableBinding#isEnumConstant()
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isEnumConstant() {
 		return (this.binding.modifiers & ClassFileConstants.AccEnum) != 0;
 	}
 
-	/*
-	 * @see IBinding#isEqualTo(Binding)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isEqualTo(IBinding other) {
 		if (other == this) {
 			// identical binding - equal (key or no key)
@@ -387,16 +355,12 @@
 		}
 	}
 
-	/*
-	 * @see IVariableBinding#isField()
-	 */
+	@Override
 	public boolean isField() {
 		return this.binding instanceof FieldBinding;
 	}
 
-	/*
-	 * @see IBinding#isSynthetic()
-	 */
+	@Override
 	public boolean isSynthetic() {
 		if (isField()) {
 			return ((FieldBinding) this.binding).isSynthetic();
@@ -404,18 +368,12 @@
 		return false;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IBinding#isRecovered()
-	 */
+	@Override
 	public boolean isRecovered() {
 		return false;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.IVariableBinding.isEffectivelyFinal()
-	 */
+	@Override
 	public boolean isEffectivelyFinal() {
 		return (!this.binding.isFinal() && this.binding.isEffectivelyFinal());
 	}
@@ -424,6 +382,7 @@
 	 * For debugging purpose only.
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		return this.binding.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.java
index ee942d2..8d566b5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclaration.java
@@ -196,7 +196,7 @@
 	 */
 	VariableDeclaration(AST ast) {
 		super(ast);
-		if (ast.apiLevel >= AST.JLS8) {
+		if (ast.apiLevel >= AST.JLS8_INTERNAL) {
 			this.extraDimensions = new ASTNode.NodeList(getExtraDimensions2Property());
 		}
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
index e65fee2..bad72f3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationExpression.java
@@ -162,16 +162,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -185,9 +181,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -201,9 +195,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -215,16 +207,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return VARIABLE_DECLARATION_EXPRESSION;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		VariableDeclarationExpression result =
 			new VariableDeclarationExpression(target);
@@ -242,17 +230,13 @@
 
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -407,17 +391,13 @@
 		return this.variableDeclarationFragments;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.java
index ccd4c4c..8b3f723 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationFragment.java
@@ -105,7 +105,7 @@
 	 * @since 3.0
 	 */
 	public static List propertyDescriptors(int apiLevel) {
-		if (apiLevel >= AST.JLS8) {
+		if (apiLevel >= AST.JLS8_INTERNAL) {
 			return PROPERTY_DESCRIPTORS_8_0;
 		} else {
 			return PROPERTY_DESCRIPTORS;
@@ -126,48 +126,32 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final ChildPropertyDescriptor internalNameProperty() {
 		return NAME_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final SimplePropertyDescriptor internalExtraDimensionsProperty() {
 		return EXTRA_DIMENSIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.10
-	 */
+	@Override
 	final ChildListPropertyDescriptor internalExtraDimensions2Property() {
 		return EXTRA_DIMENSIONS2_PROPERTY;
 	}
 	
-	/* (omit javadoc for this method)
-	 * Method declared on VariableDeclaration.
-	 * @since 3.1
-	 */
+	@Override
 	final ChildPropertyDescriptor internalInitializerProperty() {
 		return INITIALIZER_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == EXTRA_DIMENSIONS_PROPERTY) {
 			if (get) {
@@ -181,9 +165,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == NAME_PROPERTY) {
 			if (get) {
@@ -205,9 +187,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == EXTRA_DIMENSIONS2_PROPERTY) {
 			return extraDimensions();
@@ -216,21 +196,17 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return VARIABLE_DECLARATION_FRAGMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		VariableDeclarationFragment result = new VariableDeclarationFragment(target);
 		result.setSourceRange(getStartPosition(), getLength());
 		result.setName((SimpleName) getName().clone(target));
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.extraDimensions().addAll(
 					ASTNode.copySubtrees(target, extraDimensions()));
 		} else {
@@ -241,23 +217,19 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
 			acceptChild(visitor, getName());
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.extraDimensions);
 			}
 			acceptChild(visitor, getInitializer());
@@ -265,17 +237,13 @@
 		visitor.endVisit(this);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		// treat Operator as free
 		return BASE_NODE_SIZE + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
index 9a1e9f8..cfa88ad 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/VariableDeclarationStatement.java
@@ -165,16 +165,12 @@
 		}
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int internalGetSetIntProperty(SimplePropertyDescriptor property, boolean get, int value) {
 		if (property == MODIFIERS_PROPERTY) {
 			if (get) {
@@ -188,9 +184,7 @@
 		return super.internalGetSetIntProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == TYPE_PROPERTY) {
 			if (get) {
@@ -204,9 +198,7 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == MODIFIERS2_PROPERTY) {
 			return modifiers();
@@ -218,16 +210,12 @@
 		return super.internalGetChildListProperty(property);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return VARIABLE_DECLARATION_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		VariableDeclarationStatement result =
 			new VariableDeclarationStatement(target);
@@ -245,17 +233,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -410,16 +394,12 @@
 		return this.variableDeclarationFragments;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 4 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.java
index 650d93c..633d774 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WhileStatement.java
@@ -98,16 +98,12 @@
 		super(ast);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == EXPRESSION_PROPERTY) {
 			if (get) {
@@ -129,16 +125,12 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return WHILE_STATEMENT;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		WhileStatement result = new WhileStatement(target);
 		result.setSourceRange(getStartPosition(), getLength());
@@ -148,17 +140,13 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
@@ -257,16 +245,12 @@
 		postReplaceChild(oldChild, statement, BODY_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return super.memSize() + 2 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 			memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.java
index 5872e96..ce18b6a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/WildcardType.java
@@ -132,20 +132,17 @@
 	 * Method declared on AnnotatableType.
 	 * @since 3.10
 	 */
+	@Override
 	final ChildListPropertyDescriptor internalAnnotationsProperty() {
 		return ANNOTATIONS_PROPERTY;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalStructuralPropertiesForType(int apiLevel) {
 		return propertyDescriptors(apiLevel);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean internalGetSetBooleanProperty(SimplePropertyDescriptor property, boolean get, boolean value) {
 		if (property == UPPER_BOUND_PROPERTY) {
 			if (get) {
@@ -159,9 +156,7 @@
 		return super.internalGetSetBooleanProperty(property, get, value);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final List internalGetChildListProperty(ChildListPropertyDescriptor property) {
 		if (property == ANNOTATIONS_PROPERTY) {
 			return annotations();
@@ -169,10 +164,8 @@
 		// allow default implementation to flag the error
 		return super.internalGetChildListProperty(property);
 	}
-	
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+
+	@Override
 	final ASTNode internalGetSetChildProperty(ChildPropertyDescriptor property, boolean get, ASTNode child) {
 		if (property == BOUND_PROPERTY) {
 			if (get) {
@@ -186,20 +179,16 @@
 		return super.internalGetSetChildProperty(property, get, child);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final int getNodeType0() {
 		return WILDCARD_TYPE;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	ASTNode clone0(AST target) {
 		WildcardType result = new WildcardType(target);
 		result.setSourceRange(getStartPosition(), getLength());
-		if (this.ast.apiLevel >= AST.JLS8) {
+		if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 			result.annotations().addAll(
 					ASTNode.copySubtrees(target, annotations()));
 		}
@@ -207,22 +196,18 @@
 		return result;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	final boolean subtreeMatch0(ASTMatcher matcher, Object other) {
 		// dispatch to correct overloaded match method
 		return matcher.match(this, other);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	void accept0(ASTVisitor visitor) {
 		boolean visitChildren = visitor.visit(this);
 		if (visitChildren) {
 			// visit children in normal left to right reading order
-			if (this.ast.apiLevel >= AST.JLS8) {
+			if (this.ast.apiLevel >= AST.JLS8_INTERNAL) {
 				acceptChildren(visitor, this.annotations);
 			}
 			acceptChild(visitor, getBound());
@@ -315,16 +300,12 @@
 		postValueChange(UPPER_BOUND_PROPERTY);
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int memSize() {
 		return BASE_NODE_SIZE + 3 * 4;
 	}
 
-	/* (omit javadoc for this method)
-	 * Method declared on ASTNode.
-	 */
+	@Override
 	int treeSize() {
 		return
 		memSize()
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.java
index 38b71f0..90912e4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ASTRewrite.java
@@ -873,6 +873,7 @@
 	 *
 	 * @return a debug string
 	 */
+	@Override
 	public String toString() {
 		StringBuffer buf= new StringBuffer();
 		buf.append("Events:\n"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
index a3767d7..5928268 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/dom/rewrite/ImportRewrite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -101,6 +101,134 @@
  */
 @SuppressWarnings({ "rawtypes", "unchecked" })
 public final class ImportRewrite {
+	/**
+	 * Used to determine how a type will be used, so that unwanted annotations can be filtered,
+	 * which is in particular relevant for avoiding redundant null annotations in the scope of {@code @NonNullByDefault}. 
+	 * This enum is a superset of org.aspectj.org.eclipse.jdt.annotation.DefaultLocation, and roughly corresponds
+	 * to the classification of type locations as introduced by JSR 308.
+	 *
+	 * @since 3.13
+	 */
+	public enum TypeLocation {
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.PARAMETER
+		 * 
+		 * @since 3.13
+		 */
+		PARAMETER,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.RETURN_TYPE
+		 * 
+		 * @since 3.13
+		 */
+		RETURN_TYPE,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.FIELD
+		 * 
+		 * @since 3.13
+		 */
+		FIELD,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.TYPE_PARAMETER
+		 * 
+		 * @since 3.13
+		 */
+		TYPE_PARAMETER,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.TYPE_BOUND
+		 * 
+		 * @since 3.13
+		 */
+		TYPE_BOUND,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.TYPE_ARGUMENT
+		 * 
+		 * @since 3.13
+		 */
+		TYPE_ARGUMENT,
+
+		/**
+		 * see org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.ARRAY_CONTENTS
+		 * 
+		 * @since 3.13
+		 */
+		ARRAY_CONTENTS,
+
+		/**
+		 * The special value {@link #LOCAL_VARIABLE} is used for local variables: their nullness is determines by flow analysis,
+		 * so top level nullness annotations are usually not needed for local variables (unless their type is a free
+		 * type variable). Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		LOCAL_VARIABLE,
+
+		/**
+		 * The special value {@link #CAST} is used for casts.
+		 * Casts are never affected by {@code @NonNullByDefault}
+		 * Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		CAST,
+		
+		/**
+		 * The special value {@link #INSTANCEOF} is used for {@code instanceof} expressions.
+		 * Null annotations are not supported in this location.
+		 * Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		INSTANCEOF,
+
+		/**
+		 * The special value {@link #NEW} is used for {@code new} expressions (object allocations). 
+		 * Null annotations are not supported in this location.
+		 * Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		NEW,
+
+		/**
+		 * The special value {@link #RECEIVER} is used for the receiver type in a method declaration or method reference.
+		 * Null annotations are not supported in this location.
+		 * Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		RECEIVER,
+
+		/**
+		 * The special value {@link #EXCEPTION} is used for exception types in catch and throws declarations, which are
+		 * implicitly non-null. Does not correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		EXCEPTION,
+
+		/**
+		 * The special value {@link #OTHER} is used for locations where type annotations are illegal, like type literals
+		 * (X.class), annotations, or as scope for static field accesses. Does not correspond to a value in
+		 * org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		OTHER,
+
+		/**
+		 * The special value {@link #UNKNOWN} is used for invocations that don't specify the intended type usage. Does not
+		 * correspond to a value in org.aspectj.org.eclipse.jdt.annotation.DefaultLocation.
+		 * 
+		 * @since 3.13
+		 */
+		UNKNOWN,
+	}
 
 	/**
 	 * A {@link ImportRewrite.ImportRewriteContext} can optionally be used in e.g. {@link ImportRewrite#addImport(String, ImportRewrite.ImportRewriteContext)} to
@@ -167,11 +295,26 @@
 		 * {@link #RES_NAME_CONFLICT}, or {@link #RES_NAME_UNKNOWN_NEEDS_EXPLICIT_IMPORT}.
 		 */
 		public abstract int findInContext(String qualifier, String name, int kind);
+
+		/**
+		 * This method can be overridden in subclasses to remove annotations that are redundant, e.g. because of NonNullByDefault.
+		 * @param annotations The array of type annotations to be filtered.
+		 * @param location Specifies how the type being annotated will be used.
+		 * @param type the type being annotated
+		 * @return Returns the annotations that should be added to the type.
+		 * @since 3.13
+		 */
+		public IAnnotationBinding[] removeRedundantTypeAnnotations(IAnnotationBinding[] annotations, TypeLocation location, ITypeBinding type) {
+			return annotations;
+		}
 	}
 
 	private static final char STATIC_PREFIX= 's';
 	private static final char NORMAL_PREFIX= 'n';
 
+	/** @deprecated using deprecated code */
+	private static final int JLS8_INTERNAL = AST.JLS8;
+
 	private final ImportRewriteContext defaultContext;
 
 	private final ICompilationUnit compilationUnit;
@@ -293,6 +436,7 @@
 		this.useContextToFilterImplicitImports = false;
 
 		this.defaultContext= new ImportRewriteContext() {
+			@Override
 			public int findInContext(String qualifier, String name, int kind) {
 				return findInImports(qualifier, name, kind);
 			}
@@ -529,7 +673,7 @@
 	 * @since 3.10
 	 */
 	public Annotation addAnnotation(IAnnotationBinding annotation, AST ast, ImportRewriteContext context) {
-		Type type = addImport(annotation.getAnnotationType(), ast, context);
+		Type type = addImport(annotation.getAnnotationType(), ast, context, TypeLocation.OTHER);
 		Name name;
 		if (type instanceof SimpleType) {
 			SimpleType simpleType = (SimpleType) type;
@@ -827,7 +971,7 @@
 	 * or else qualified names if an import conflict prevented an import.
 	 */
 	public Type addImport(ITypeBinding binding, AST ast) {
-		return addImport(binding, ast, this.defaultContext);
+		return addImport(binding, ast, this.defaultContext, TypeLocation.UNKNOWN);
 	}
 
 	/**
@@ -852,10 +996,37 @@
 	 * or else qualified names if an import conflict prevented an import.
 	 */
 	public Type addImport(ITypeBinding binding, AST ast, ImportRewriteContext context) {
+		return addImport(binding, ast, context, TypeLocation.UNKNOWN);
+	}
+
+	/**
+	 * Adds a new import to the rewriter's record and returns a {@link Type} that can be used
+	 * in the code. The type binding can be an array binding, type variable or wildcard.
+	 * If the binding is a generic type, the type parameters are ignored. For parameterized types, also the type
+	 * arguments are processed and imports added if necessary. Anonymous types inside type arguments are normalized to their base type, wildcard
+	 * of wildcards are ignored. If type annotations or type arguments are present at any point, the import is added up to that point and 
+	 * the type is retained from that point with type annotations and type arguments
+	 * 	<p>
+ 	 * No imports are added for types that are already known. If a import for a type is recorded to be removed, this record is discarded instead.
+	 * </p>
+	 * <p>
+	 * The content of the compilation unit itself is actually not modified
+	 * in any way by this method; rather, the rewriter just records that a new import has been added.
+	 * </p>
+	 * @param binding the signature of the type to be added.
+	 * @param ast the AST to create the returned type for.
+	 * @param context an optional context that knows about types visible in the current scope or <code>null</code>
+	 * to use the default context only using the available imports.
+	 * @param location where the type will be used. This information is needed to filter unwanted (nullness) type annotations.
+	 * @return a type node for the given type binding. Type names are simple names if an import could be used,
+	 * or else qualified names if an import conflict prevented an import.
+	 * @since 3.13
+	 */
+	public Type addImport(ITypeBinding binding, AST ast, ImportRewriteContext context, TypeLocation location) {	
 		ITypeBinding bindingPoint = checkAnnotationAndGenerics(binding);
-		Type type = internalAddImport(bindingPoint == null ? binding : bindingPoint, ast, context, null, /* getBase */ true);
+		Type type = internalAddImport(bindingPoint == null ? binding : bindingPoint, ast, context, null, /* getBase */ true, bindingPoint != null && !bindingPoint.equals(binding) ? TypeLocation.OTHER : location);
 		if (bindingPoint != null && !bindingPoint.equals(binding)) {
-			type = buildType(binding, bindingPoint, ast, context, type);
+			type = buildType(binding, bindingPoint, ast, context, type, location);
 		}
 		return type;
 	}
@@ -1141,7 +1312,7 @@
 
 		CompilationUnit usedAstRoot= this.astRoot;
 		if (usedAstRoot == null) {
-			ASTParser parser= ASTParser.newParser(AST.JLS8);
+			ASTParser parser= ASTParser.newParser(AST.JLS10);
 			parser.setSource(this.compilationUnit);
 			parser.setFocalPosition(0); // reduced AST
 			parser.setResolveBindings(false);
@@ -1158,7 +1329,7 @@
 			String qualifiedName = addedImport.substring(1);
 			computer.addImport(isStatic, qualifiedName);
 		}
-
+	
 		for (String removedImport : this.removedImports) {
 			boolean isStatic = STATIC_PREFIX == removedImport.charAt(0);
 			String qualifiedName = removedImport.substring(1);
@@ -1291,28 +1462,32 @@
 		return res.toArray(new String[res.size()]);
 	}
 
-	private void annotateList(List annotations, IAnnotationBinding [] annotationBindings, AST ast, ImportRewriteContext context) {
+	private void annotateList(List annotations, IAnnotationBinding [] annotationBindings, AST ast,
+						ImportRewriteContext context, TypeLocation location, ITypeBinding type) {
+		if (context == null)
+			context= this.defaultContext;
+		annotationBindings = context.removeRedundantTypeAnnotations(annotationBindings, location, type);
 		for (int i = 0; i< annotationBindings.length; i++) {
 			Annotation annotation = addAnnotation(annotationBindings[i], ast, context);
 			if (annotation != null) annotations.add(annotation);
 		}
 	}
 
-	private Type annotateType(ITypeBinding binding, AST ast, ImportRewriteContext context, Type type) {
+	private Type annotateType(ITypeBinding binding, AST ast, ImportRewriteContext context, Type type, TypeLocation location) {
 		IAnnotationBinding [] annotationBindings = binding.getTypeAnnotations();
 		if (annotationBindings != null && annotationBindings.length > 0 && type instanceof AnnotatableType) {
-			annotateList(((AnnotatableType) type).annotations(), annotationBindings, ast, context);
+			annotateList(((AnnotatableType) type).annotations(), annotationBindings, ast, context, location, binding);
 		}
 		return type;
 	}
 
-	private Type buildType(ITypeBinding binding, ITypeBinding bindingPoint, AST ast, ImportRewriteContext context, Type qualifier) {
+	private Type buildType(ITypeBinding binding, ITypeBinding bindingPoint, AST ast, ImportRewriteContext context, Type qualifier, TypeLocation location) {
 		if (binding.equals(bindingPoint)) {
 			return qualifier;
 		}
 		// build the type recursively from left to right
-		Type type = binding.isMember() ? buildType(binding.getDeclaringClass(), bindingPoint, ast, context, qualifier) : null;
-		type = internalAddImport(binding, ast, context, type, false);
+		Type type = binding.isMember() ? buildType(binding.getDeclaringClass(), bindingPoint, ast, context, qualifier, TypeLocation.OTHER) : null;
+		type = internalAddImport(binding, ast, context, type, false, location);
 		return type;
 	}
 
@@ -1334,7 +1509,7 @@
 		return bindingPoint;
 	}
 
-	private Type createBaseType(AST ast, ImportRewriteContext context, ITypeBinding normalizedBinding) {
+	private Type createBaseType(AST ast, ImportRewriteContext context, ITypeBinding normalizedBinding, TypeLocation location) {
 		Type type;
 		IAnnotationBinding annotationBinding [] = normalizedBinding.getTypeAnnotations();
 		boolean annotsPresent = annotationBinding != null && annotationBinding.length > 0;
@@ -1351,22 +1526,23 @@
 			} else {
 				type = ast.newSimpleType(ast.newName(res));
 			}
-			annotateList(((AnnotatableType) type).annotations(), annotationBinding, ast, context);
+			annotateList(((AnnotatableType) type).annotations(), annotationBinding, ast, context, location, normalizedBinding);
 		} else {
 			type = ast.newSimpleType(ast.newName(res));
 		}
 		return type;
 	}
 
-	private Type getArrayType(Type elementType, AST ast, ImportRewriteContext context, ITypeBinding normalizedBinding) {
+	private Type getArrayType(Type elementType, AST ast, ImportRewriteContext context, ITypeBinding normalizedBinding, TypeLocation location) {
 		int noDimensions = normalizedBinding.getDimensions();
 		ArrayType arrayType = ast.newArrayType(elementType, noDimensions);
-		if (ast.apiLevel() >= AST.JLS8) {
+		if (ast.apiLevel() >= JLS8_INTERNAL) {
 			for (int i = 0; i < noDimensions; i++) {
 				IAnnotationBinding[] typeAnnotations = normalizedBinding.getTypeAnnotations();
 				if (typeAnnotations.length > 0) {
 					Dimension dimension = (Dimension) arrayType.dimensions().get(i);
-					annotateList(dimension.annotations(), typeAnnotations, ast, context);
+					annotateList(dimension.annotations(), typeAnnotations, ast, context,
+							i == 0 ? location : TypeLocation.ARRAY_CONTENTS, normalizedBinding);
 				}
 				normalizedBinding = normalizedBinding.getComponentType();
 			}
@@ -1374,7 +1550,7 @@
 		return arrayType;
 	}
 
-	private Type internalAddImport(ITypeBinding binding, AST ast, ImportRewriteContext context, Type currentType, boolean getBase) {
+	private Type internalAddImport(ITypeBinding binding, AST ast, ImportRewriteContext context, Type currentType, boolean getBase, TypeLocation location) {
 		Type type = null;
 		ITypeBinding normalizedBinding = null;
 		
@@ -1392,26 +1568,26 @@
 				WildcardType wcType= ast.newWildcardType();
 				ITypeBinding bound= normalizedBinding.getBound();
 				if (bound != null && !bound.isWildcardType() && !bound.isCapture()) { // bug 96942
-					Type boundType= addImport(bound, ast, context);
+					Type boundType= addImport(bound, ast, context, TypeLocation.TYPE_BOUND);
 					wcType.setBound(boundType, normalizedBinding.isUpperbound());
 				}
 				type = wcType;
 			} else if (normalizedBinding.isArray()) {
-				Type elementType= addImport(normalizedBinding.getElementType(), ast, context);
-				type = getArrayType(elementType, ast, context, normalizedBinding);
+				Type elementType= addImport(normalizedBinding.getElementType(), ast, context, TypeLocation.ARRAY_CONTENTS);
+				type = getArrayType(elementType, ast, context, normalizedBinding, location);
 			}
 		}
 
 		if (type != null) {
-			return annotateType(normalizedBinding, ast, context, type);
+			return annotateType(normalizedBinding, ast, context, type, location);
 		}
 
 		if (getBase) {
-			type = createBaseType(ast, context, normalizedBinding);
+			type = createBaseType(ast, context, normalizedBinding, location);
 		} else  {
 			type = currentType != null ? (Type) ast.newQualifiedType(currentType, ast.newSimpleName(getRawName(normalizedBinding))) : 
 				ast.newSimpleType(ast.newName(getRawName(normalizedBinding)));
-			type = annotateType(normalizedBinding, ast, context, type);
+			type = annotateType(normalizedBinding, ast, context, type, location);
 		}
 
 		ITypeBinding[] typeArguments = normalizedBinding.getTypeArguments();
@@ -1423,7 +1599,7 @@
 				if (containsNestedCapture(curr, false)) { // see bug 103044
 					arguments.add(ast.newWildcardType());
 				} else {
-					arguments.add(addImport(curr, ast, context));
+					arguments.add(addImport(curr, ast, context, TypeLocation.TYPE_ARGUMENT));
 				}
 			}
 			type = paramType;
@@ -1443,7 +1619,7 @@
 			return result;
 		} else if (value instanceof ITypeBinding) {
 			TypeLiteral result = ast.newTypeLiteral();
-			result.setType(addImport((ITypeBinding) value, ast, context));
+			result.setType(addImport((ITypeBinding) value, ast, context, TypeLocation.OTHER));
 			return result;
 		} else if (value instanceof String) {
 			StringLiteral result = ast.newStringLiteral();
@@ -1454,7 +1630,7 @@
 
 			FieldAccess result = ast.newFieldAccess();
 			result.setName(ast.newSimpleName(variable.getName()));
-			Type type = addImport(variable.getType(), ast, context);
+			Type type = addImport(variable.getType(), ast, context, TypeLocation.OTHER); // ignore annotations, type will discarded
 			Name name;
 			if (type instanceof SimpleType) {
 				SimpleType simpleType = (SimpleType) type;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.java
index 355b172..a62836c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,6 +37,8 @@
 	/**
 	 * Kind used to format an expression
 	 * <p>
+	 * This kind is not applicable to module descriptions.
+	 * </p><p>
 	 * Note that using this constant, the comments encountered while formatting
 	 * the expression may be shifted to match the correct indentation but are not
 	 * formatted.
@@ -51,6 +53,8 @@
 	/**
 	 * Kind used to format a set of statements
 	 * <p>
+	 * This kind is not applicable to module descriptions.
+	 * </p><p>
 	 * Note that using this constant, the comments encountered while formatting
 	 * the statements may be shifted to match the correct indentation but are not
 	 * formatted.
@@ -65,6 +69,8 @@
 	/**
 	 * Kind used to format a set of class body declarations
 	 * <p>
+	 * This kind is not applicable to module descriptions.
+	 * </p><p>
 	 * Note that using this constant, the comments encountered while formatting
 	 * the body declarations may be shifted to match the correct indentation but
 	 * are not formatted.
@@ -79,8 +85,9 @@
 	/**
 	 * Kind used to format a compilation unit
 	 * <p>
-	 * Note that using this constant, the comments are only indented while
-	 * formatting the compilation unit.
+	 * <u>Note:</u> <b>since 3.14</b>, if the formatted compilation unit is a
+	 * module description (i.e. it's named module-info.java), the
+	 * {@link #K_MODULE_INFO} kind must be used instead.
 	 * </p><p>
 	 * <b>Since 3.4</b>, if the corresponding comment option is set to
 	 * <code>true</code> then it is also possible to format the comments on the fly
@@ -109,6 +116,17 @@
 	public static final int K_JAVA_DOC = 0x40;
 
 	/**
+	 * Kind used to format a module description (a module-info.java file).
+	 * <p>
+	 * If the corresponding comment option is set to <code>true</code> then it is
+	 * also possible to format the comments on the fly by adding the
+	 * {@link #F_INCLUDE_COMMENTS} flag to this kind of format.
+	 * </p>
+	 * @since 3.14
+	 */
+	public static final int K_MODULE_INFO = 0x80;
+
+	/**
 	 * Flag used to include the comments during the formatting of the code
 	 * snippet.
 	 * <p>
@@ -119,6 +137,7 @@
 	 * 		<li>{@link #K_CLASS_BODY_DECLARATIONS} <i>(since 3.6)</i></li>
 	 * 		<li>{@link #K_EXPRESSION} <i>(since 3.6)</i></li>
 	 * 		<li>{@link #K_STATEMENTS} <i>(since 3.6)</i></li>
+	 * 		<li>{@link #K_MODULE_INFO} <i>(since 3.14)</i></li>
 	 * </ul>
 	 * </p><p>
 	 * Note also that it has an effect only when one or several format comments
@@ -201,17 +220,17 @@
 	 * 	<li>{@link #K_EXPRESSION}</li>
 	 * 	<li>{@link #K_STATEMENTS}</li>
 	 * 	<li>{@link #K_CLASS_BODY_DECLARATIONS}</li>
-	 * 	<li>{@link #K_COMPILATION_UNIT}<br>
-	 * 		<b>Since 3.4</b>, the comments can be formatted on the fly while
-	 * 		using this kind of code snippet<br>
-	 * 		(see {@link #F_INCLUDE_COMMENTS} for more detailed explanation on
-	 * 		this flag)
-	 * 	</li>
+	 * 	<li>{@link #K_COMPILATION_UNIT}</li>
+	 * 	<li>{@link #K_MODULE_INFO}</li>
 	 * 	<li>{@link #K_UNKNOWN}</li>
 	 * 	<li>{@link #K_SINGLE_LINE_COMMENT}</li>
 	 * 	<li>{@link #K_MULTI_LINE_COMMENT}</li>
 	 * 	<li>{@link #K_JAVA_DOC}</li>
 	 * </ul>
+	 * <b>Since 3.4</b> for {@link #K_COMPILATION_UNIT} and <b>since 3.6</b> for other
+	 * kinds unrelated to comments, the {@link #F_INCLUDE_COMMENTS} flag can be
+	 * used to format comments on the fly (see the flag documentation for more
+	 * detailed explanation).
 	 * @param source the source to format
 	 * @param offset the given offset to start recording the edits (inclusive).
 	 * @param length the given length to stop recording the edits (exclusive).
@@ -244,17 +263,17 @@
 	 * 	<li>{@link #K_EXPRESSION}</li>
 	 * 	<li>{@link #K_STATEMENTS}</li>
 	 * 	<li>{@link #K_CLASS_BODY_DECLARATIONS}</li>
-	 * 	<li>{@link #K_COMPILATION_UNIT}<br>
-	 * 		<b>Since 3.4</b>, the comments can be formatted on the fly while
-	 * 		using this kind of code snippet<br>
-	 * 		(see {@link #F_INCLUDE_COMMENTS} for more detailed explanation on
-	 * 		this flag)
-	 * 	</li>
+	 * 	<li>{@link #K_COMPILATION_UNIT}</li>
+	 * 	<li>{@link #K_MODULE_INFO}</li>
 	 * 	<li>{@link #K_UNKNOWN}</li>
 	 * 	<li>{@link #K_SINGLE_LINE_COMMENT}</li>
 	 * 	<li>{@link #K_MULTI_LINE_COMMENT}</li>
 	 * 	<li>{@link #K_JAVA_DOC}</li>
 	 * </ul>
+	 * <b>Since 3.4</b> for {@link #K_COMPILATION_UNIT} and <b>since 3.6</b> for other
+	 * kinds unrelated to comments, the {@link #F_INCLUDE_COMMENTS} flag can be
+	 * used to format comments on the fly (see the flag documentation for more
+	 * detailed explanation).
 	 * @param source the source to format
 	 * @param regions a set of regions in source to format
 	 * @param indentationLevel the initial indentation level, used
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.java
index 948cb6c..116b407 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/CodeFormatterApplication.java
@@ -27,6 +27,7 @@
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.aspectj.org.eclipse.jdt.core.ToolFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 import org.eclipse.jface.text.BadLocationException;
 import org.eclipse.jface.text.Document;
@@ -221,7 +222,9 @@
 			String contents = new String(org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getFileCharContent(file, null));
 			// format the file (the meat and potatoes)
 			doc.set(contents);
-			TextEdit edit = codeFormatter.format(CodeFormatter.K_COMPILATION_UNIT | CodeFormatter.F_INCLUDE_COMMENTS, contents, 0, contents.length(), 0, null);
+			int kind = (file.getName().equals(IModule.MODULE_INFO_JAVA)? CodeFormatter.K_MODULE_INFO
+					: CodeFormatter.K_COMPILATION_UNIT) | CodeFormatter.F_INCLUDE_COMMENTS;
+			TextEdit edit = codeFormatter.format(kind, contents, 0, contents.length(), 0, null);
 			if (edit != null) {
 				edit.apply(doc);
 			} else {
@@ -395,6 +398,7 @@
 	/**
 	 * Runs the Java code formatter application
 	 */
+	@Override
 	public Object start(IApplicationContext context) throws Exception {
 		File[] filesToFormat = processCommandLine((String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS));
 
@@ -426,6 +430,7 @@
 
 		return IApplication.EXIT_OK;
 	}
+	@Override
 	public void stop() {
 		// do nothing
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
index cbf69fb..76c5878 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/formatter/DefaultCodeFormatterConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -236,6 +236,17 @@
 	public static final String FORMATTER_ALIGNMENT_FOR_METHOD_DECLARATION = JavaCore.PLUGIN_ID + ".formatter.alignment_for_method_declaration";	 //$NON-NLS-1$
 	/**
 	 * <pre>
+	 * FORMATTER / Option for alignment of module statements
+	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.alignment_for_module_statements"
+	 *     - possible values:   values returned by <code>createAlignmentValue(boolean, int, int)</code> call
+	 *     - default:           createAlignmentValue(false, WRAP_COMPACT, INDENT_DEFAULT)
+	 * </pre>
+	 * @see #createAlignmentValue(boolean, int, int)
+	 * @since 3.14
+	 */
+	public static final String FORMATTER_ALIGNMENT_FOR_MODULE_STATEMENTS = JavaCore.PLUGIN_ID + ".formatter.alignment_for_module_statements";	 //$NON-NLS-1$
+	/**
+	 * <pre>
 	 * FORMATTER / Option for alignment of multiple fields
 	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.alignment_for_multiple_fields"
 	 *     - possible values:   values returned by <code>createAlignmentValue(boolean, int, int)</code> call
@@ -1022,14 +1033,64 @@
 	 *     - possible values:   { TRUE, FALSE }
 	 *     - default:           TRUE
 	 * </pre>
+	 * 
+	 * Note that at most one of these options can be set to {@code TRUE}:
+	 * <li>{@code FORMATTER_COMMENT_INDENT_ROOT_TAGS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED}.
+	 * 
 	 * @see #TRUE
 	 * @see #FALSE
+	 * @see #FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS
+	 * @see #FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED
 	 * @since 3.1
 	 */
 	public final static String FORMATTER_COMMENT_INDENT_ROOT_TAGS = "org.aspectj.org.eclipse.jdt.core.formatter.comment.indent_root_tags"; //$NON-NLS-1$
 
 	/**
 	 * <pre>
+	 * FORMATTER / Option to control whether names and descriptions in Javadoc root tags should be aligned.
+	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions"
+	 *     - possible values:   { TRUE, FALSE }
+	 *     - default:           TRUE
+	 * </pre>
+	 * 
+	 * Note that at most one of these options can be set to {@code TRUE}:
+	 * <li>{@code FORMATTER_COMMENT_INDENT_ROOT_TAGS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED}.
+	 * 
+	 * @see #TRUE
+	 * @see #FALSE
+	 * @see #FORMATTER_COMMENT_INDENT_ROOT_TAGS
+	 * @see #FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED
+	 * @since 3.14
+	 */
+	public static final String FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS = "org.aspectj.org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions"; //$NON-NLS-1$
+
+	/**
+	 * <pre>
+	 * FORMATTER / Option to control whether descriptions and names in Javadoc root tags, should be aligned and grouped by tag type.
+	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped"
+	 *     - possible values:   { TRUE, FALSE }
+	 *     - default:           TRUE
+	 * </pre>
+	 * 
+	 * Note that at most one of these options can be set to {@code TRUE}:
+	 * <li>{@code FORMATTER_COMMENT_INDENT_ROOT_TAGS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS},
+	 * <li>{@code FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED}.
+	 * 
+	 * @see #TRUE
+	 * @see #FALSE
+	 * @see #FORMATTER_COMMENT_INDENT_ROOT_TAGS
+	 * @see #FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS
+	 * @since 3.14
+	 */
+	public static final String FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED = "org.aspectj.org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped"; //$NON-NLS-1$
+
+	/**
+	 * <pre>
 	 * FORMATTER / Option to insert an empty line before the Javadoc root tag block
 	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags"
 	 *     - possible values:   { INSERT, DO_NOT_INSERT }
@@ -1067,6 +1128,17 @@
 
 	/**
 	 * <pre>
+	 * FORMATTER / Option to control whether comments' line length will be counted from their starting position
+	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position"
+	 *     - possible values:   { TRUE, FALSE }
+	 *     - default:           TRUE
+	 * </pre>
+	 * @since 3.13
+	 */
+	public final static String FORMATTER_COMMENT_COUNT_LINE_LENGTH_FROM_STARTING_POSITION = "org.aspectj.org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position"; //$NON-NLS-1$
+
+	/**
+	 * <pre>
 	 * FORMATTER / Option to control whether block comments will have new lines at boundaries
 	 *     - option id:         "org.aspectj.org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries"
 	 *     - possible values:   { TRUE, FALSE }
@@ -4378,6 +4450,7 @@
 	public static Map getEclipse21Settings() {
 		DefaultCodeFormatterOptions options = DefaultCodeFormatterOptions.getDefaultSettings();
 		options.page_width = 80; // changed with bug 356841
+		options.comment_count_line_length_from_starting_position = false;
 		return options.getMap();
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.java
index 1c644e4..9342425 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexer.java
@@ -26,7 +26,7 @@
  *
  * @since 3.8
  */
-public final class JavaIndexer { 
+public final class JavaIndexer {
 
 	/**
 	 * Generates the index file for the specified jar.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.java
index 7fdad1b..3fb115f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/index/JavaIndexerApplication.java
@@ -126,6 +126,7 @@
 		return true;
 	}
 
+	@Override
 	public Object start(IApplicationContext context) throws Exception {
 		boolean execute = processCommandLine((String[]) context.getArguments().get(IApplicationContext.APPLICATION_ARGS));
 		if (execute) {
@@ -152,6 +153,7 @@
 		return IApplication.EXIT_OK;
 	}
 
+	@Override
 	public void stop() {
 		// do nothing
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.java
index 0d1609c..cbf2ea3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/DOMFactory.java
@@ -32,126 +32,109 @@
 	// constructor is explicitly API
 	this.lineSeparator = org.aspectj.org.eclipse.jdt.internal.core.util.Util.getLineSeparator(null, null/*take the workspace line separator as no project is available*/);
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMCompilationUnit createCompilationUnit() {
 	return (new DOMBuilder()).createCompilationUnit();
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMCompilationUnit createCompilationUnit(char[] sourceCode, String name)  {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new SimpleDOMBuilder()).createCompilationUnit(sourceCode, name.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMCompilationUnit createCompilationUnit(String sourceCode, String name) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new SimpleDOMBuilder()).createCompilationUnit(sourceCode.toCharArray(), name.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMField createField() {
 	return createField("Object aField;"+ this.lineSeparator); //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMField createField(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new DOMBuilder()).createField(sourceCode.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMImport createImport() {
 	return (new DOMBuilder()).createImport();
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMImport createImport(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new DOMBuilder()).createImport(sourceCode.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMInitializer createInitializer() {
 	return createInitializer("static {}"+ this.lineSeparator); //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMInitializer createInitializer(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new DOMBuilder()).createInitializer(sourceCode.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMMethod createMethod() {
 	return createMethod("public void newMethod() {"+ this.lineSeparator+"}"+ this.lineSeparator); //$NON-NLS-2$ //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMMethod createMethod(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new DOMBuilder()).createMethod(sourceCode.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMPackage createPackage() {
 	return (new DOMBuilder()).createPackage();
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMPackage createPackage(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
 	}
 	return (new DOMBuilder()).createPackage(sourceCode.toCharArray());
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMType createType() {
 	return createType("public class AClass {"+ this.lineSeparator +"}"+ this.lineSeparator); //$NON-NLS-2$ //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMType createClass() {
 	return createType("public class AClass {"+ this.lineSeparator +"}"+ this.lineSeparator); //$NON-NLS-2$ //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMType createInterface() {
 	return createType("public interface AnInterface {"+ this.lineSeparator +"}"+ this.lineSeparator); //$NON-NLS-2$ //$NON-NLS-1$
 }
-/* (non-Javadoc)
- * Method declared on IDOMFactory.
- */
+
+@Override
 public IDOMType createType(String sourceCode) {
 	if(sourceCode == null) {
 		return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.java
index 9d08098..bc5927d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMCompilationUnit.java
@@ -51,6 +51,7 @@
  *
  * @return the name of this compilation unit, or <code>null</code> if none
  */
+@Override
 public String getName();
 /**
  * Sets the header comment for this compilation unit. The header comment
@@ -68,5 +69,6 @@
  *
  * @param name the given name
  */
+@Override
 public void setName(String name);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.java
index 4880dd3..904a0a8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMField.java
@@ -40,6 +40,7 @@
  *
  * @return the name of this field
  */
+@Override
 public String getName();
 /**
  * Returns the type name of this field. The syntax for a type name of a field
@@ -67,6 +68,7 @@
  * @param name the given name
  * @exception IllegalArgumentException if <code>null</code> is specified
  */
+@Override
 public void setName(String name) throws IllegalArgumentException;
 /**
  * Sets the type name of this field. The syntax for a type name of a field
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.java
index 8970350..64d2766 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMImport.java
@@ -29,6 +29,7 @@
  *
  * @return  the name of this import
  */
+@Override
 public String getName();
 /**
  * Returns whether this import declaration ends with <code>".*"</code>.
@@ -65,5 +66,6 @@
  * @param name the given name
  * @exception IllegalArgumentException if <code>null</code> is specified
  */
+@Override
 public void setName(String name);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.java
index be14d51..60bffd9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMInitializer.java
@@ -35,6 +35,7 @@
  *
  * @return <code>null</code>
  */
+@Override
 public String getName();
 /**
  * Sets the body of this initializer. The syntax for a body corresponds to
@@ -51,5 +52,6 @@
  *
  * @param name the given name
  */
+@Override
 public void setName(String name);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.java
index bcbb2c5..1e2801b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMMethod.java
@@ -114,6 +114,7 @@
  *
  * @return the name of this method or <code>null</code> for constructors
  */
+@Override
 public String getName();
 /**
  * Returns the names of parameters in this method in the order they are declared,
@@ -207,6 +208,7 @@
  * @param name the given name
  * @exception IllegalArgumentException if <code>null</code> is specified
  */
+@Override
 public void setName(String name) throws IllegalArgumentException;
 /**
  * Sets the types and names of parameters in this method in the order they are
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.java
index 808682b..38305f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMPackage.java
@@ -29,6 +29,7 @@
  * @return the name of this package declaration, or <code>null</code>
  *         if it has none
  */
+@Override
 public String getName();
 /**
  * The <code>IDOMPackage</code> refinement of this <code>IDOMNode</code>
@@ -39,5 +40,6 @@
  *
  * @param name the given name
  */
+@Override
 public void setName(String name);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.java
index c9f1f78..07c6e4d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/jdom/IDOMType.java
@@ -66,6 +66,7 @@
  *
  * @return the name of this type
  */
+@Override
 public String getName();
 /**
  * Returns the name of this type's superclass. The syntax for a superclass name
@@ -177,6 +178,7 @@
  * @param name the given name
  * @exception IllegalArgumentException if <code>null</code> is specified
  */
+@Override
 public void setName(String name) throws IllegalArgumentException;
 /**
  * Sets the name of this type's superclass. Has no effect if this type
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.java
new file mode 100644
index 0000000..c384ca7
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/provisional/JavaModelAccess.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software SE, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.provisional;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
+import org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot;
+
+/**
+ * Provisional API for use by JDT/UI or JDT/Debug, which may possibly be removed in a future version.
+ * See <a href="https://bugs.eclipse.org/522391">Bug 522391</a>. 
+ */
+public class JavaModelAccess {
+	/**
+	 * Answer the names of all modules directly required from the given module.
+	 * @param module the module whose "requires" directives are queried
+	 * @return a non-null array of module names
+	 * @deprecated this provisional API has been promoted to {@link IModuleDescription#getRequiredModuleNames()}
+	 */
+	@Deprecated
+	public static String[] getRequiredModules(IModuleDescription module) throws JavaModelException {
+		return module.getRequiredModuleNames();
+	}
+
+	/**
+	 * Returns the <code>IModuleDescription</code> that the given java element contains 
+	 * when regarded as an automatic module. The element must be an <code>IPackageFragmentRoot</code>
+	 * or an <code>IJavaProject</code>.
+	 * 
+	 * <p>The returned module descriptor has a name (<code>getElementName()</code>) following
+	 * the specification of <code>java.lang.module.ModuleFinder.of(Path...)</code>, but it
+	 * contains no other useful information.</p>
+	 * 
+	 * @return the <code>IModuleDescription</code> representing this java element as an automatic module,
+	 * 		never <code>null</code>.
+	 * @throws JavaModelException
+	 * @throws IllegalArgumentException if the provided element is neither <code>IPackageFragmentRoot</code>
+	 * 	nor <code>IJavaProject</code>
+	 * @since 3.14
+	 */
+	public static IModuleDescription getAutomaticModuleDescription(IJavaElement element) throws JavaModelException, IllegalArgumentException {
+		switch (element.getElementType()) {
+			case IJavaElement.JAVA_PROJECT:
+				return ((JavaProject) element).getAutomaticModuleDescription();
+			case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+				return ((PackageFragmentRoot) element).getAutomaticModuleDescription();
+			default:
+				throw new IllegalArgumentException("Illegal kind of java element: "+element.getElementType()); //$NON-NLS-1$
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.java
index 7672a40..707b915 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/IJavaSearchConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -128,6 +128,12 @@
 	 */
 	int INTERFACE_AND_ANNOTATION= 11;
 
+	/**
+	 * The searched element is a module.
+	 * @since 3.14
+	 * @category searchFor
+	 */
+	int MODULE= 12;
 	/* Nature of match */
 
 	/**
@@ -192,6 +198,16 @@
 	int WRITE_ACCESSES = 5;
 
 	/**
+	 * When searching for Type Declaration matches, and if a module is given, this
+	 * will find type declaration matches in this module as well as the dependent
+	 * module graph of the given module.
+	 *
+	 * @since 3.14
+	 * @category limitTo
+	 */
+	int MODULE_GRAPH = 6;
+
+	/**
 	 * Ignore declaring type while searching result.
 	 * Can be used in conjunction with any of the nature of match.
 	 *
@@ -544,5 +560,13 @@
 	 */
 	int WAIT_UNTIL_READY_TO_SEARCH = IJob.WaitUntilReady;
 
+	/* Special Constant for module search */
+
+	/**
+	 * The unnamed module is represented by this constant for making the intent explicit
+	 * in searches involving modules
+	 * @since 3.14
+	 */
+	char[] ALL_UNNAMED = "ALL-UNNAMED".toCharArray(); ////$NON-NLS-1$
 
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.java
new file mode 100644
index 0000000..d29115c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleDeclarationMatch.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.search;
+
+import org.eclipse.core.resources.IResource;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+
+/**
+ * A Java search match that represents a module declaration.
+ * The element is an <code>IType</code>.
+ * <p>
+ * This class is intended to be instantiated and subclassed by clients.
+ * </p>
+ *
+ * @since 3.14
+ */
+public class ModuleDeclarationMatch extends SearchMatch {
+
+	/**
+	 * Creates a new type declaration match.
+	 *
+	 * @param element the module declaration
+	 * @param accuracy one of A_ACCURATE or A_INACCURATE
+	 * @param offset the offset the match starts at, or -1 if unknown
+	 * @param length the length of the match, or -1 if unknown
+	 * @param participant the search participant that created the match
+	 * @param resource the resource of the element
+	 */
+	public ModuleDeclarationMatch(IJavaElement element, int accuracy, int offset, int length, SearchParticipant participant, IResource resource) {
+		super(element, accuracy, offset, length, participant, resource);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.java
new file mode 100644
index 0000000..32a7445
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/ModuleReferenceMatch.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.search;
+
+import org.eclipse.core.resources.IResource;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+
+/**
+ * A Java search match that represents a module reference.
+ * The element is the innermost enclosing member (mostly module declaration) that references this module reference.
+ * <p>
+ * This class is intended to be instantiated and subclassed by clients.
+ * </p>
+ * @since 3.14
+ */
+public class ModuleReferenceMatch extends ReferenceMatch {
+
+	/**
+	 * Creates a new module reference match.
+	 *
+	 * @param enclosingElement the inner-most enclosing member that references this module reference
+	 * @param accuracy one of {@link #A_ACCURATE} or {@link #A_INACCURATE}
+	 * @param offset the offset the match starts at, or -1 if unknown
+	 * @param length the length of the match, or -1 if unknown
+	 * @param insideDocComment <code>true</code> if this search match is inside a doc
+	 * 				comment, and <code>false</code> otherwise
+	 * @param participant the search participant that created the match
+	 * @param resource the resource of the element
+	 */
+	public ModuleReferenceMatch(IJavaElement enclosingElement, int accuracy, int offset, int length,
+			boolean insideDocComment, SearchParticipant participant, IResource resource) {
+		super(enclosingElement, accuracy, offset, length, insideDocComment, participant, resource);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.java
index 8d905c7..d6fb83d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchEngine.java
@@ -60,6 +60,7 @@
 		/**
 		 * @see org.aspectj.org.eclipse.jdt.core.search.SearchRequestor#acceptSearchMatch(org.aspectj.org.eclipse.jdt.core.search.SearchMatch)
 		 */
+		@Override
 		public void acceptSearchMatch(SearchMatch match) throws CoreException {
 			this.resultCollector.accept(
 				match.getResource(),
@@ -72,12 +73,14 @@
 		/**
 		 * @see org.aspectj.org.eclipse.jdt.core.search.SearchRequestor#beginReporting()
 		 */
+		@Override
 		public void beginReporting() {
 			this.resultCollector.aboutToStart();
 		}
 		/**
 		 * @see org.aspectj.org.eclipse.jdt.core.search.SearchRequestor#endReporting()
 		 */
+		@Override
 		public void endReporting() {
 			this.resultCollector.done();
 		}
@@ -92,6 +95,7 @@
 		TypeNameRequestorAdapter(ITypeNameRequestor requestor) {
 			this.nameRequestor = requestor;
 		}
+		@Override
 		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 			if (Flags.isInterface(modifiers)) {
 				this.nameRequestor.acceptInterface(packageName, simpleTypeName, enclosingTypeNames, path);
@@ -293,6 +297,31 @@
 	 * The Java elements resulting from a search with this scope will
 	 * be children of the given elements.
 	 *
+	 * <p>If an element is an {@link IJavaProject}, then the project's source folders,
+	 * its jars (external and internal) and - if specified - its referenced projects
+	 * (with their source folders and jars, recursively) will be included.</p>
+	 * <p>If an element is an {@link IPackageFragmentRoot}, then only the package fragments of
+	 * this package fragment root will be included.</p>
+	 * <p>If an element is an {@link IPackageFragment}, then only the compilation unit and class
+	 * files of this package fragment will be included. Subpackages will NOT be
+	 * included.</p>
+	 *
+	 * @param excludeTestCode if true, test code we be excluded
+	 * @param elements the Java elements the scope is limited to
+	 * @param includeReferencedProjects a flag indicating if referenced projects must be
+	 * 									 recursively included
+	 * @return a new Java search scope
+	 * @since 3.14
+	 */
+	public static IJavaSearchScope createJavaSearchScope(boolean excludeTestCode, IJavaElement[] elements, boolean includeReferencedProjects) {
+		return BasicSearchEngine.createJavaSearchScope(excludeTestCode, elements, includeReferencedProjects);
+	}
+
+	/**
+	 * Returns a Java search scope limited to the given Java elements.
+	 * The Java elements resulting from a search with this scope will
+	 * be children of the given elements.
+	 *
 	 * <p>If an element is an IJavaProject, then it includes:</p>
 	 * <ul>
 	 * <li>its source folders if {@link IJavaSearchScope#SOURCES} is specified,</li>
@@ -326,6 +355,44 @@
 	}
 
 	/**
+	 * Returns a Java search scope limited to the given Java elements.
+	 * The Java elements resulting from a search with this scope will
+	 * be children of the given elements.
+	 *
+	 * <p>If an element is an IJavaProject, then it includes:</p>
+	 * <ul>
+	 * <li>its source folders if {@link IJavaSearchScope#SOURCES} is specified,</li>
+	 * <li>its application libraries (internal and external jars, class folders that are on the raw classpath,
+	 *   or the ones that are coming from a classpath path variable,
+	 *   or the ones that are coming from a classpath container with the K_APPLICATION kind)
+	 *   if {@link IJavaSearchScope#APPLICATION_LIBRARIES} is specified</li>
+	 * <li>its system libraries (internal and external jars, class folders that are coming from an
+	 *   IClasspathContainer with the K_SYSTEM kind)
+	 *   if {@link IJavaSearchScope#SYSTEM_LIBRARIES} is specified</li>
+	 * <li>its referenced projects (with their source folders and jars, recursively)
+	 *   if {@link IJavaSearchScope#REFERENCED_PROJECTS} is specified.</li>
+	 * </ul>
+	 * <p>If an element is an {@link IPackageFragmentRoot}, then only the package fragments of
+	 * this package fragment root will be included.</p>
+	 * <p>If an element is an {@link IPackageFragment}, then only the compilation unit and class
+	 * files of this package fragment will be included. Subpackages will NOT be
+	 * included.</p>
+	 *
+	 * @param excludeTestCode
+	 * @param elements the Java elements the scope is limited to
+	 * @param includeMask the bit-wise OR of all include types of interest
+	 * @return a new Java search scope
+	 * @see IJavaSearchScope#SOURCES
+	 * @see IJavaSearchScope#APPLICATION_LIBRARIES
+	 * @see IJavaSearchScope#SYSTEM_LIBRARIES
+	 * @see IJavaSearchScope#REFERENCED_PROJECTS
+	 * @since 3.14
+	 */
+	public static IJavaSearchScope createJavaSearchScope(boolean excludeTestCode, IJavaElement[] elements, int includeMask) {
+		return BasicSearchEngine.createJavaSearchScope(excludeTestCode, elements, includeMask);
+	}
+
+	/**
 	 * Returns a search pattern that combines the given two patterns into a "or" pattern.
 	 * The search result will match either the left pattern or the right pattern.
 	 *
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.java
index d12cf93..e1d4432 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchMatch.java
@@ -344,9 +344,7 @@
 		this.raw = raw;
 	}
 
-	/* (non-javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("Search match"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.java
index 09f0129..1c5fe22 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/search/SearchPattern.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
 package org.aspectj.org.eclipse.jdt.core.search;
 
 import java.io.IOException;
+import java.util.regex.Pattern;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -77,7 +78,8 @@
 
 	/**
 	 * Match rule: The search pattern contains a regular expression.
-	 * <p><b>Warning:</b> The support for this rule is <b>not yet implemented</b></p>
+	 * <p><b>Warning:</b> Implemented only for module declaration search.
+	 * The support for this rule is <b>not yet implemented for others</b></p>
 	 */
 	public static final int R_REGEXP_MATCH = 0x0004;
 
@@ -1373,6 +1375,10 @@
 	}
 }
 
+private static SearchPattern createModulePattern(String patternString, int limitTo, int matchRule) {
+	return new ModulePattern(patternString.toCharArray(), limitTo, matchRule);
+}
+
 /**
  * Returns a search pattern that combines the given two patterns into an
  * "or" pattern. The search result will match either the left pattern or the
@@ -1436,6 +1442,28 @@
  * 			<li>'?' is treated as a wildcard when it is inside &lt;&gt; (i.e. it must be put on first position of the type argument)</li>
  * 		</ul>
  * 		</div>
+ * 		Since 3.14 for Java 9, Type Declaration Patterns can have module names also embedded with the following syntax
+ * 		<p><b><code>[moduleName1[,moduleName2,..]]/[qualification '.']typeName ['&lt;' typeArguments '&gt;']</code></b>
+ *      </p>
+ *      <p>
+ *      Unnamed modules can also be included and are represented either by an absence of module name implicitly
+ *      or explicitly by specifying ALL-UNNAMED for module name.
+ * 		Module graph search is also supported with the limitTo option set to <code>IJavaSearchConstants.MODULE_GRAPH</code>.
+ *      In the module graph case, the given type is searched in all the modules required directly as well 
+ *      as indirectly by the given module(s).
+ *      </p>
+ *      <p>
+ *      Note that whitespaces are ignored in between module names. It is an error to give multiple module separators - in such
+ *      cases a null pattern will be returned.
+ *      </p>
+ *			<p>Examples:</p>
+ *			<ul>
+ * 				<li><code>java.base/java.lang.Object</code></li>
+ *				<li><code>mod.one, mod.two/pack.X</code> find declaration in the list of given modules.</li>
+ *				<li><code>/pack.X</code> find in the unnamed module.</li>
+ *				<li><code>ALL-UNNAMED/pack.X</code> find in the unnamed module.</li> 
+ *			</ul>
+ *			<p>
  * 	</li>
  * 	<li>Method patterns have the following syntax:
  * 		<p><b><code>[declaringType '.'] ['&lt;' typeArguments '&gt;'] methodName ['(' parameterTypes ')'] [returnType]</code></b></p>
@@ -1489,6 +1517,7 @@
  *	<li>{@link IJavaSearchConstants#METHOD}: look for methods</li>
  *	<li>{@link IJavaSearchConstants#CONSTRUCTOR}: look for constructors</li>
  *	<li>{@link IJavaSearchConstants#PACKAGE}: look for packages</li>
+ *	<li>{@link IJavaSearchConstants#MODULE}: look for modules</li>
  *	</ul>
  * @param limitTo determines the nature of the expected matches
  *	<ul>
@@ -1508,6 +1537,10 @@
  *				Note that types may be only classes or only interfaces if {@link IJavaSearchConstants#CLASS CLASS} or
  *				{@link IJavaSearchConstants#INTERFACE INTERFACE} is respectively used instead of {@link IJavaSearchConstants#TYPE TYPE}.
  *		</li>
+ *		 <li>{@link IJavaSearchConstants#MODULE_GRAPH MODULE_GRAPH}: for types with a module prefix, 
+ *             will find all types present in required modules (directly or indirectly required) ie
+ *             in any module present in the module graph of the given module.
+ *		</li>
  *		 <li>All other fine grain constants defined in the <b>limitTo</b> category
  *				of the {@link IJavaSearchConstants} are also accepted nature: 
  * 			<table border=0>
@@ -1601,6 +1634,10 @@
  *		</ul>
  * 	<p>Note that {@link #R_ERASURE_MATCH} or {@link #R_EQUIVALENT_MATCH} has no effect
  * 	on non-generic types/methods search.</p>
+ *
+ * 	<p>Note that {@link #R_REGEXP_MATCH} is supported since 3.14  for the special case of
+ * {@link IJavaSearchConstants#DECLARATIONS DECLARATIONS} search of 
+ * {@link IJavaSearchConstants#MODULE MODULE}</p>
  * 	<p>
  * 	Note also that the default behavior for generic types/methods search is to find exact matches.</p>
  * @return a search pattern on the given string pattern, or <code>null</code> if the string pattern is ill-formed
@@ -1608,7 +1645,7 @@
 public static SearchPattern createPattern(String stringPattern, int searchFor, int limitTo, int matchRule) {
 	if (stringPattern == null || stringPattern.length() == 0) return null;
 
-	if ((matchRule = validateMatchRule(stringPattern, matchRule)) == -1) {
+	if ((matchRule = validateMatchRule(stringPattern, searchFor, limitTo, matchRule)) == -1) {
 		return null;
 	}
 
@@ -1640,6 +1677,8 @@
 			return createFieldPattern(stringPattern, limitTo, matchRule);
 		case IJavaSearchConstants.PACKAGE:
 			return createPackagePattern(stringPattern, limitTo, matchRule);
+		case IJavaSearchConstants.MODULE :
+			return createModulePattern(stringPattern, limitTo, matchRule);
 	}
 	return null;
 }
@@ -2113,6 +2152,9 @@
 		case IJavaElement.PACKAGE_FRAGMENT :
 			searchPattern = createPackagePattern(element.getElementName(), maskedLimitTo, matchRule);
 			break;
+		case IJavaElement.JAVA_MODULE :
+			searchPattern = createModulePattern(element.getElementName(), maskedLimitTo, matchRule);
+			break;
 	}
 	if (searchPattern != null)
 		MatchLocator.setFocus(searchPattern, element);
@@ -2179,8 +2221,14 @@
 	}
 	return null;
 }
-
 private static SearchPattern createTypePattern(String patternString, int limitTo, int matchRule, char indexSuffix) {
+	String[] arr = patternString.split(String.valueOf(IIndexConstants.SEPARATOR));
+	String moduleName = null;
+	if (arr.length == 2) {
+		moduleName = arr[0];
+		patternString = arr[1];
+	}
+	char[] patModName = moduleName != null ? moduleName.toCharArray() : null;
 	// use 1.7 as the source level as there are more valid tokens in 1.7 mode
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=376673
 	Scanner scanner = new Scanner(false /*comment*/, true /*whitespace*/, false /*nls*/, ClassFileConstants.JDK1_7/*sourceLevel*/, null /*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
@@ -2259,16 +2307,22 @@
 	if (typeChars.length == 1 && typeChars[0] == '*') {
 		typeChars = null;
 	}
+	boolean modGraph = false;
 	switch (limitTo) {
+		case IJavaSearchConstants.MODULE_GRAPH :
+			modGraph = true;
+			//$FALL-THROUGH$
 		case IJavaSearchConstants.DECLARATIONS : // cannot search for explicit member types
-			return new QualifiedTypeDeclarationPattern(qualificationChars, typeChars, indexSuffix, matchRule);
+			TypeDeclarationPattern typeDeclarationPattern = new QualifiedTypeDeclarationPattern(patModName, qualificationChars, typeChars, indexSuffix, matchRule);
+			typeDeclarationPattern.moduleGraph = modGraph;
+			return typeDeclarationPattern;
 		case IJavaSearchConstants.REFERENCES :
 			return new TypeReferencePattern(qualificationChars, typeChars, typeSignature, indexSuffix, matchRule);
 		case IJavaSearchConstants.IMPLEMENTORS :
 			return new SuperTypeReferencePattern(qualificationChars, typeChars, SuperTypeReferencePattern.ONLY_SUPER_INTERFACES, indexSuffix, matchRule);
 		case IJavaSearchConstants.ALL_OCCURRENCES :
 			return new OrPattern(
-				new QualifiedTypeDeclarationPattern(qualificationChars, typeChars, indexSuffix, matchRule),// cannot search for explicit member types
+				new QualifiedTypeDeclarationPattern(patModName, qualificationChars, typeChars, indexSuffix, matchRule),// cannot search for explicit member types
 				new TypeReferencePattern(qualificationChars, typeChars, typeSignature, indexSuffix, matchRule));
 		default:
 			return new TypeReferencePattern(qualificationChars, typeChars, typeSignature, limitTo, indexSuffix, matchRule);
@@ -2281,6 +2335,8 @@
 	IJavaElement parent = type.getParent();
 	switch (parent.getElementType()) {
 		case IJavaElement.CLASS_FILE:
+			if (parent instanceof IModularClassFile)
+				return null;
 			// For a binary type, the parent is not the enclosing type, but the declaring type is.
 			// (see bug 20532  Declaration of member binary type not found)
 			IType declaringType = type.getDeclaringType();
@@ -2478,8 +2534,7 @@
 				return matchFirstChar && CharOperation.camelCaseMatch(pattern, name, true);
 
 			case R_REGEXP_MATCH :
-				// TODO implement regular expression match
-				return true;
+				return Pattern.matches(new String(pattern), new String(name));
 		}
 	}
 	return false;
@@ -2539,7 +2594,7 @@
 	// Verify Regexp match rule
 	if ((matchRule & R_REGEXP_MATCH) != 0) {
 		// regexp is not supported yet
-		return -1;
+		return -1; // need to enable for module declaration
 	}
 
 	// Verify Pattern match rule
@@ -2592,6 +2647,15 @@
 	return matchRule;
 }
 
+// enabling special cases (read regular expressions) based on searchFor and limitTo
+private static int validateMatchRule(String stringPattern, int searchFor, int limitTo, int matchRule) {
+	if (searchFor == IJavaSearchConstants.MODULE && 
+			limitTo == IJavaSearchConstants.DECLARATIONS &&
+			matchRule == SearchPattern.R_REGEXP_MATCH)
+		return matchRule;
+	return validateMatchRule(stringPattern, matchRule);
+}
+
 /*
  * Validate pattern for a camel case match rule
  * @return
@@ -2628,6 +2692,7 @@
 /**
  * @see java.lang.Object#toString()
  */
+@Override
 public String toString() {
 	return "SearchPattern"; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.java
index 4b43d2d..d931a3e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/ByteCodeVisitorAdapter.java
@@ -20,6 +20,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aaload(int)
 	 */
+	@Override
 	public void _aaload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -27,6 +28,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aastore(int)
 	 */
+	@Override
 	public void _aastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -34,6 +36,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aconst_null(int)
 	 */
+	@Override
 	public void _aconst_null(int pc) {
 		// default behavior is to do nothing
 	}
@@ -41,6 +44,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_0(int)
 	 */
+	@Override
 	public void _aload_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -48,6 +52,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_1(int)
 	 */
+	@Override
 	public void _aload_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -55,6 +60,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_2(int)
 	 */
+	@Override
 	public void _aload_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -62,6 +68,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_3(int)
 	 */
+	@Override
 	public void _aload_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -69,6 +76,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload(int, int)
 	 */
+	@Override
 	public void _aload(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -76,6 +84,7 @@
 	/**
 	 * @see IBytecodeVisitor#_anewarray(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _anewarray(int pc, int index, IConstantPoolEntry constantClass) {
 		// default behavior is to do nothing
 	}
@@ -83,6 +92,7 @@
 	/**
 	 * @see IBytecodeVisitor#_areturn(int)
 	 */
+	@Override
 	public void _areturn(int pc) {
 		// default behavior is to do nothing
 	}
@@ -90,6 +100,7 @@
 	/**
 	 * @see IBytecodeVisitor#_arraylength(int)
 	 */
+	@Override
 	public void _arraylength(int pc) {
 		// default behavior is to do nothing
 	}
@@ -97,6 +108,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_0(int)
 	 */
+	@Override
 	public void _astore_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -104,6 +116,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_1(int)
 	 */
+	@Override
 	public void _astore_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -111,6 +124,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_2(int)
 	 */
+	@Override
 	public void _astore_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -118,6 +132,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_3(int)
 	 */
+	@Override
 	public void _astore_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -125,6 +140,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore(int, int)
 	 */
+	@Override
 	public void _astore(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -132,6 +148,7 @@
 	/**
 	 * @see IBytecodeVisitor#_athrow(int)
 	 */
+	@Override
 	public void _athrow(int pc) {
 		// default behavior is to do nothing
 	}
@@ -139,6 +156,7 @@
 	/**
 	 * @see IBytecodeVisitor#_baload(int)
 	 */
+	@Override
 	public void _baload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -146,6 +164,7 @@
 	/**
 	 * @see IBytecodeVisitor#_bastore(int)
 	 */
+	@Override
 	public void _bastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -153,6 +172,7 @@
 	/**
 	 * @see IBytecodeVisitor#_bipush(int, byte)
 	 */
+	@Override
 	public void _bipush(int pc, byte _byte) {
 		// default behavior is to do nothing
 	}
@@ -160,6 +180,7 @@
 	/**
 	 * @see IBytecodeVisitor#_caload(int)
 	 */
+	@Override
 	public void _caload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -167,6 +188,7 @@
 	/**
 	 * @see IBytecodeVisitor#_castore(int)
 	 */
+	@Override
 	public void _castore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -174,6 +196,7 @@
 	/**
 	 * @see IBytecodeVisitor#_checkcast(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _checkcast(int pc, int index, IConstantPoolEntry constantClass) {
 		// default behavior is to do nothing
 	}
@@ -181,6 +204,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2f(int)
 	 */
+	@Override
 	public void _d2f(int pc) {
 		// default behavior is to do nothing
 	}
@@ -188,6 +212,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2i(int)
 	 */
+	@Override
 	public void _d2i(int pc) {
 		// default behavior is to do nothing
 	}
@@ -195,6 +220,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2l(int)
 	 */
+	@Override
 	public void _d2l(int pc) {
 		// default behavior is to do nothing
 	}
@@ -202,6 +228,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dadd(int)
 	 */
+	@Override
 	public void _dadd(int pc) {
 		// default behavior is to do nothing
 	}
@@ -209,6 +236,7 @@
 	/**
 	 * @see IBytecodeVisitor#_daload(int)
 	 */
+	@Override
 	public void _daload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -216,6 +244,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dastore(int)
 	 */
+	@Override
 	public void _dastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -223,6 +252,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dcmpg(int)
 	 */
+	@Override
 	public void _dcmpg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -230,6 +260,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dcmpl(int)
 	 */
+	@Override
 	public void _dcmpl(int pc) {
 		// default behavior is to do nothing
 	}
@@ -237,6 +268,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dconst_0(int)
 	 */
+	@Override
 	public void _dconst_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -244,6 +276,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dconst_1(int)
 	 */
+	@Override
 	public void _dconst_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -251,6 +284,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ddiv(int)
 	 */
+	@Override
 	public void _ddiv(int pc) {
 		// default behavior is to do nothing
 	}
@@ -258,6 +292,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_0(int)
 	 */
+	@Override
 	public void _dload_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -265,6 +300,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_1(int)
 	 */
+	@Override
 	public void _dload_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -272,6 +308,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_2(int)
 	 */
+	@Override
 	public void _dload_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -279,6 +316,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_3(int)
 	 */
+	@Override
 	public void _dload_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -286,6 +324,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload(int, int)
 	 */
+	@Override
 	public void _dload(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -293,6 +332,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dmul(int)
 	 */
+	@Override
 	public void _dmul(int pc) {
 		// default behavior is to do nothing
 	}
@@ -300,6 +340,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dneg(int)
 	 */
+	@Override
 	public void _dneg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -307,6 +348,7 @@
 	/**
 	 * @see IBytecodeVisitor#_drem(int)
 	 */
+	@Override
 	public void _drem(int pc) {
 		// default behavior is to do nothing
 	}
@@ -314,6 +356,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dreturn(int)
 	 */
+	@Override
 	public void _dreturn(int pc) {
 		// default behavior is to do nothing
 	}
@@ -321,6 +364,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_0(int)
 	 */
+	@Override
 	public void _dstore_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -328,6 +372,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_1(int)
 	 */
+	@Override
 	public void _dstore_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -335,6 +380,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_2(int)
 	 */
+	@Override
 	public void _dstore_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -342,6 +388,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_3(int)
 	 */
+	@Override
 	public void _dstore_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -349,6 +396,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore(int, int)
 	 */
+	@Override
 	public void _dstore(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -356,6 +404,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dsub(int)
 	 */
+	@Override
 	public void _dsub(int pc) {
 		// default behavior is to do nothing
 	}
@@ -363,6 +412,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup_x1(int)
 	 */
+	@Override
 	public void _dup_x1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -370,6 +420,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup_x2(int)
 	 */
+	@Override
 	public void _dup_x2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -377,6 +428,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup(int)
 	 */
+	@Override
 	public void _dup(int pc) {
 		// default behavior is to do nothing
 	}
@@ -384,6 +436,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2_x1(int)
 	 */
+	@Override
 	public void _dup2_x1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -391,6 +444,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2_x2(int)
 	 */
+	@Override
 	public void _dup2_x2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -398,6 +452,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2(int)
 	 */
+	@Override
 	public void _dup2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -405,6 +460,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2d(int)
 	 */
+	@Override
 	public void _f2d(int pc) {
 		// default behavior is to do nothing
 	}
@@ -412,6 +468,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2i(int)
 	 */
+	@Override
 	public void _f2i(int pc) {
 		// default behavior is to do nothing
 	}
@@ -419,6 +476,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2l(int)
 	 */
+	@Override
 	public void _f2l(int pc) {
 		// default behavior is to do nothing
 	}
@@ -426,6 +484,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fadd(int)
 	 */
+	@Override
 	public void _fadd(int pc) {
 		// default behavior is to do nothing
 	}
@@ -433,6 +492,7 @@
 	/**
 	 * @see IBytecodeVisitor#_faload(int)
 	 */
+	@Override
 	public void _faload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -440,6 +500,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fastore(int)
 	 */
+	@Override
 	public void _fastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -447,6 +508,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fcmpg(int)
 	 */
+	@Override
 	public void _fcmpg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -454,6 +516,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fcmpl(int)
 	 */
+	@Override
 	public void _fcmpl(int pc) {
 		// default behavior is to do nothing
 	}
@@ -461,6 +524,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_0(int)
 	 */
+	@Override
 	public void _fconst_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -468,6 +532,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_1(int)
 	 */
+	@Override
 	public void _fconst_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -475,6 +540,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_2(int)
 	 */
+	@Override
 	public void _fconst_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -482,6 +548,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fdiv(int)
 	 */
+	@Override
 	public void _fdiv(int pc) {
 		// default behavior is to do nothing
 	}
@@ -489,6 +556,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_0(int)
 	 */
+	@Override
 	public void _fload_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -496,6 +564,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_1(int)
 	 */
+	@Override
 	public void _fload_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -503,6 +572,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_2(int)
 	 */
+	@Override
 	public void _fload_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -510,6 +580,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_3(int)
 	 */
+	@Override
 	public void _fload_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -517,6 +588,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload(int, int)
 	 */
+	@Override
 	public void _fload(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -524,6 +596,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fmul(int)
 	 */
+	@Override
 	public void _fmul(int pc) {
 		// default behavior is to do nothing
 	}
@@ -531,6 +604,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fneg(int)
 	 */
+	@Override
 	public void _fneg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -538,6 +612,7 @@
 	/**
 	 * @see IBytecodeVisitor#_frem(int)
 	 */
+	@Override
 	public void _frem(int pc) {
 		// default behavior is to do nothing
 	}
@@ -545,6 +620,7 @@
 	/**
 	 * @see IBytecodeVisitor#_freturn(int)
 	 */
+	@Override
 	public void _freturn(int pc) {
 		// default behavior is to do nothing
 	}
@@ -552,6 +628,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_0(int)
 	 */
+	@Override
 	public void _fstore_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -559,6 +636,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_1(int)
 	 */
+	@Override
 	public void _fstore_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -566,6 +644,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_2(int)
 	 */
+	@Override
 	public void _fstore_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -573,6 +652,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_3(int)
 	 */
+	@Override
 	public void _fstore_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -580,6 +660,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore(int, int)
 	 */
+	@Override
 	public void _fstore(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -587,6 +668,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fsub(int)
 	 */
+	@Override
 	public void _fsub(int pc) {
 		// default behavior is to do nothing
 	}
@@ -594,6 +676,7 @@
 	/**
 	 * @see IBytecodeVisitor#_getfield(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _getfield(int pc, int index, IConstantPoolEntry constantFieldref) {
 		// default behavior is to do nothing
 	}
@@ -601,6 +684,7 @@
 	/**
 	 * @see IBytecodeVisitor#_getstatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _getstatic(
 		int pc,
 		int index,
@@ -611,6 +695,7 @@
 	/**
 	 * @see IBytecodeVisitor#_goto_w(int, int)
 	 */
+	@Override
 	public void _goto_w(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -618,6 +703,7 @@
 	/**
 	 * @see IBytecodeVisitor#_goto(int, int)
 	 */
+	@Override
 	public void _goto(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -625,6 +711,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2b(int)
 	 */
+	@Override
 	public void _i2b(int pc) {
 		// default behavior is to do nothing
 	}
@@ -632,6 +719,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2c(int)
 	 */
+	@Override
 	public void _i2c(int pc) {
 		// default behavior is to do nothing
 	}
@@ -639,6 +727,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2d(int)
 	 */
+	@Override
 	public void _i2d(int pc) {
 		// default behavior is to do nothing
 	}
@@ -646,6 +735,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2f(int)
 	 */
+	@Override
 	public void _i2f(int pc) {
 		// default behavior is to do nothing
 	}
@@ -653,6 +743,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2l(int)
 	 */
+	@Override
 	public void _i2l(int pc) {
 		// default behavior is to do nothing
 	}
@@ -660,6 +751,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2s(int)
 	 */
+	@Override
 	public void _i2s(int pc) {
 		// default behavior is to do nothing
 	}
@@ -667,6 +759,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iadd(int)
 	 */
+	@Override
 	public void _iadd(int pc) {
 		// default behavior is to do nothing
 	}
@@ -674,6 +767,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iaload(int)
 	 */
+	@Override
 	public void _iaload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -681,6 +775,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iand(int)
 	 */
+	@Override
 	public void _iand(int pc) {
 		// default behavior is to do nothing
 	}
@@ -688,6 +783,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iastore(int)
 	 */
+	@Override
 	public void _iastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -695,6 +791,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_0(int)
 	 */
+	@Override
 	public void _iconst_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -702,6 +799,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_1(int)
 	 */
+	@Override
 	public void _iconst_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -709,6 +807,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_2(int)
 	 */
+	@Override
 	public void _iconst_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -716,6 +815,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_3(int)
 	 */
+	@Override
 	public void _iconst_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -723,6 +823,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_4(int)
 	 */
+	@Override
 	public void _iconst_4(int pc) {
 		// default behavior is to do nothing
 	}
@@ -730,6 +831,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_5(int)
 	 */
+	@Override
 	public void _iconst_5(int pc) {
 		// default behavior is to do nothing
 	}
@@ -737,6 +839,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_m1(int)
 	 */
+	@Override
 	public void _iconst_m1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -744,6 +847,7 @@
 	/**
 	 * @see IBytecodeVisitor#_idiv(int)
 	 */
+	@Override
 	public void _idiv(int pc) {
 		// default behavior is to do nothing
 	}
@@ -751,6 +855,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_acmpeq(int, int)
 	 */
+	@Override
 	public void _if_acmpeq(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -758,6 +863,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_acmpne(int, int)
 	 */
+	@Override
 	public void _if_acmpne(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -765,6 +871,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpeq(int, int)
 	 */
+	@Override
 	public void _if_icmpeq(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -772,6 +879,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpge(int, int)
 	 */
+	@Override
 	public void _if_icmpge(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -779,6 +887,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpgt(int, int)
 	 */
+	@Override
 	public void _if_icmpgt(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -786,6 +895,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmple(int, int)
 	 */
+	@Override
 	public void _if_icmple(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -793,6 +903,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmplt(int, int)
 	 */
+	@Override
 	public void _if_icmplt(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -800,6 +911,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpne(int, int)
 	 */
+	@Override
 	public void _if_icmpne(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -807,6 +919,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifeq(int, int)
 	 */
+	@Override
 	public void _ifeq(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -814,6 +927,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifge(int, int)
 	 */
+	@Override
 	public void _ifge(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -821,6 +935,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifgt(int, int)
 	 */
+	@Override
 	public void _ifgt(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -828,6 +943,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifle(int, int)
 	 */
+	@Override
 	public void _ifle(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -835,6 +951,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iflt(int, int)
 	 */
+	@Override
 	public void _iflt(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -842,6 +959,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifne(int, int)
 	 */
+	@Override
 	public void _ifne(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -849,6 +967,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifnonnull(int, int)
 	 */
+	@Override
 	public void _ifnonnull(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -856,6 +975,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifnull(int, int)
 	 */
+	@Override
 	public void _ifnull(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -863,6 +983,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iinc(int, int, int)
 	 */
+	@Override
 	public void _iinc(int pc, int index, int _const) {
 		// default behavior is to do nothing
 	}
@@ -870,6 +991,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_0(int)
 	 */
+	@Override
 	public void _iload_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -877,6 +999,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_1(int)
 	 */
+	@Override
 	public void _iload_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -884,6 +1007,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_2(int)
 	 */
+	@Override
 	public void _iload_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -891,6 +1015,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_3(int)
 	 */
+	@Override
 	public void _iload_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -898,6 +1023,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload(int, int)
 	 */
+	@Override
 	public void _iload(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -905,6 +1031,7 @@
 	/**
 	 * @see IBytecodeVisitor#_imul(int)
 	 */
+	@Override
 	public void _imul(int pc) {
 		// default behavior is to do nothing
 	}
@@ -912,6 +1039,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ineg(int)
 	 */
+	@Override
 	public void _ineg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -919,6 +1047,7 @@
 	/**
 	 * @see IBytecodeVisitor#_instanceof(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _instanceof(int pc, int index, IConstantPoolEntry constantClass) {
 		// default behavior is to do nothing
 	}
@@ -927,6 +1056,7 @@
 	 * @since 3.6
 	 * @deprecated This has been replaced with {@link IBytecodeVisitor#_invokedynamic(int, int, IConstantPoolEntry)}
 	 */
+	@Override
 	public void _invokedynamic(
 			int pc,
 			int index,
@@ -938,6 +1068,7 @@
 	 * @see IBytecodeVisitor#_invokedynamic(int, int, IConstantPoolEntry)
 	 * @since 3.8
 	 */
+	@Override
 	public void _invokedynamic(
 			int pc,
 			int index,
@@ -947,6 +1078,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokeinterface(int, int, byte, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokeinterface(
 		int pc,
 		int index,
@@ -958,6 +1090,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokespecial(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokespecial(
 		int pc,
 		int index,
@@ -968,6 +1101,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokestatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokestatic(
 		int pc,
 		int index,
@@ -978,6 +1112,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokevirtual(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokevirtual(
 		int pc,
 		int index,
@@ -988,6 +1123,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ior(int)
 	 */
+	@Override
 	public void _ior(int pc) {
 		// default behavior is to do nothing
 	}
@@ -995,6 +1131,7 @@
 	/**
 	 * @see IBytecodeVisitor#_irem(int)
 	 */
+	@Override
 	public void _irem(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1002,6 +1139,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ireturn(int)
 	 */
+	@Override
 	public void _ireturn(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1009,6 +1147,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ishl(int)
 	 */
+	@Override
 	public void _ishl(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1016,6 +1155,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ishr(int)
 	 */
+	@Override
 	public void _ishr(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1023,6 +1163,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_0(int)
 	 */
+	@Override
 	public void _istore_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1030,6 +1171,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_1(int)
 	 */
+	@Override
 	public void _istore_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1037,6 +1179,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_2(int)
 	 */
+	@Override
 	public void _istore_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1044,6 +1187,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_3(int)
 	 */
+	@Override
 	public void _istore_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1051,6 +1195,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore(int, int)
 	 */
+	@Override
 	public void _istore(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -1058,6 +1203,7 @@
 	/**
 	 * @see IBytecodeVisitor#_isub(int)
 	 */
+	@Override
 	public void _isub(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1065,6 +1211,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iushr(int)
 	 */
+	@Override
 	public void _iushr(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1072,6 +1219,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ixor(int)
 	 */
+	@Override
 	public void _ixor(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1079,6 +1227,7 @@
 	/**
 	 * @see IBytecodeVisitor#_jsr_w(int, int)
 	 */
+	@Override
 	public void _jsr_w(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -1086,6 +1235,7 @@
 	/**
 	 * @see IBytecodeVisitor#_jsr(int, int)
 	 */
+	@Override
 	public void _jsr(int pc, int branchOffset) {
 		// default behavior is to do nothing
 	}
@@ -1093,6 +1243,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2d(int)
 	 */
+	@Override
 	public void _l2d(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1100,6 +1251,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2f(int)
 	 */
+	@Override
 	public void _l2f(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1107,6 +1259,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2i(int)
 	 */
+	@Override
 	public void _l2i(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1114,6 +1267,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ladd(int)
 	 */
+	@Override
 	public void _ladd(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1121,6 +1275,7 @@
 	/**
 	 * @see IBytecodeVisitor#_laload(int)
 	 */
+	@Override
 	public void _laload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1128,6 +1283,7 @@
 	/**
 	 * @see IBytecodeVisitor#_land(int)
 	 */
+	@Override
 	public void _land(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1135,6 +1291,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lastore(int)
 	 */
+	@Override
 	public void _lastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1142,6 +1299,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lcmp(int)
 	 */
+	@Override
 	public void _lcmp(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1149,6 +1307,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lconst_0(int)
 	 */
+	@Override
 	public void _lconst_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1156,6 +1315,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lconst_1(int)
 	 */
+	@Override
 	public void _lconst_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1163,6 +1323,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc_w(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc_w(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		// default behavior is to do nothing
 	}
@@ -1170,6 +1331,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		// default behavior is to do nothing
 	}
@@ -1177,6 +1339,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc2_w(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc2_w(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		// default behavior is to do nothing
 	}
@@ -1184,6 +1347,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldiv(int)
 	 */
+	@Override
 	public void _ldiv(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1191,6 +1355,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_0(int)
 	 */
+	@Override
 	public void _lload_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1198,6 +1363,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_1(int)
 	 */
+	@Override
 	public void _lload_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1205,6 +1371,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_2(int)
 	 */
+	@Override
 	public void _lload_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1212,6 +1379,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_3(int)
 	 */
+	@Override
 	public void _lload_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1219,6 +1387,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload(int, int)
 	 */
+	@Override
 	public void _lload(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -1226,6 +1395,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lmul(int)
 	 */
+	@Override
 	public void _lmul(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1233,6 +1403,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lneg(int)
 	 */
+	@Override
 	public void _lneg(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1240,6 +1411,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lookupswitch(int, int, int, int[][])
 	 */
+	@Override
 	public void _lookupswitch(
 		int pc,
 		int defaultoffset,
@@ -1251,6 +1423,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lor(int)
 	 */
+	@Override
 	public void _lor(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1258,6 +1431,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lrem(int)
 	 */
+	@Override
 	public void _lrem(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1265,6 +1439,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lreturn(int)
 	 */
+	@Override
 	public void _lreturn(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1272,6 +1447,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lshl(int)
 	 */
+	@Override
 	public void _lshl(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1279,6 +1455,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lshr(int)
 	 */
+	@Override
 	public void _lshr(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1286,6 +1463,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_0(int)
 	 */
+	@Override
 	public void _lstore_0(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1293,6 +1471,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_1(int)
 	 */
+	@Override
 	public void _lstore_1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1300,6 +1479,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_2(int)
 	 */
+	@Override
 	public void _lstore_2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1307,6 +1487,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_3(int)
 	 */
+	@Override
 	public void _lstore_3(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1314,6 +1495,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore(int, int)
 	 */
+	@Override
 	public void _lstore(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -1321,6 +1503,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lsub(int)
 	 */
+	@Override
 	public void _lsub(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1328,6 +1511,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lushr(int)
 	 */
+	@Override
 	public void _lushr(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1335,6 +1519,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lxor(int)
 	 */
+	@Override
 	public void _lxor(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1342,6 +1527,7 @@
 	/**
 	 * @see IBytecodeVisitor#_monitorenter(int)
 	 */
+	@Override
 	public void _monitorenter(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1349,6 +1535,7 @@
 	/**
 	 * @see IBytecodeVisitor#_monitorexit(int)
 	 */
+	@Override
 	public void _monitorexit(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1356,6 +1543,7 @@
 	/**
 	 * @see IBytecodeVisitor#_multianewarray(int, int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _multianewarray(
 		int pc,
 		int index,
@@ -1367,6 +1555,7 @@
 	/**
 	 * @see IBytecodeVisitor#_new(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _new(int pc, int index, IConstantPoolEntry constantClass) {
 		// default behavior is to do nothing
 	}
@@ -1374,6 +1563,7 @@
 	/**
 	 * @see IBytecodeVisitor#_newarray(int, int)
 	 */
+	@Override
 	public void _newarray(int pc, int atype) {
 		// default behavior is to do nothing
 	}
@@ -1381,6 +1571,7 @@
 	/**
 	 * @see IBytecodeVisitor#_nop(int)
 	 */
+	@Override
 	public void _nop(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1388,6 +1579,7 @@
 	/**
 	 * @see IBytecodeVisitor#_pop(int)
 	 */
+	@Override
 	public void _pop(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1395,6 +1587,7 @@
 	/**
 	 * @see IBytecodeVisitor#_pop2(int)
 	 */
+	@Override
 	public void _pop2(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1402,6 +1595,7 @@
 	/**
 	 * @see IBytecodeVisitor#_putfield(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _putfield(int pc, int index, IConstantPoolEntry constantFieldref) {
 		// default behavior is to do nothing
 	}
@@ -1409,6 +1603,7 @@
 	/**
 	 * @see IBytecodeVisitor#_putstatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _putstatic(
 		int pc,
 		int index,
@@ -1419,6 +1614,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ret(int, int)
 	 */
+	@Override
 	public void _ret(int pc, int index) {
 		// default behavior is to do nothing
 	}
@@ -1426,6 +1622,7 @@
 	/**
 	 * @see IBytecodeVisitor#_return(int)
 	 */
+	@Override
 	public void _return(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1433,6 +1630,7 @@
 	/**
 	 * @see IBytecodeVisitor#_saload(int)
 	 */
+	@Override
 	public void _saload(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1440,6 +1638,7 @@
 	/**
 	 * @see IBytecodeVisitor#_sastore(int)
 	 */
+	@Override
 	public void _sastore(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1447,6 +1646,7 @@
 	/**
 	 * @see IBytecodeVisitor#_sipush(int, short)
 	 */
+	@Override
 	public void _sipush(int pc, short value) {
 		// default behavior is to do nothing
 	}
@@ -1454,6 +1654,7 @@
 	/**
 	 * @see IBytecodeVisitor#_swap(int)
 	 */
+	@Override
 	public void _swap(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1461,6 +1662,7 @@
 	/**
 	 * @see IBytecodeVisitor#_tableswitch(int, int, int, int, int[])
 	 */
+	@Override
 	public void _tableswitch(
 		int pc,
 		int defaultoffset,
@@ -1473,6 +1675,7 @@
 	/**
 	 * @see IBytecodeVisitor#_wide(int, int, int, int)
 	 */
+	@Override
 	public void _wide(int pc, int iincopcode, int index, int _const) {
 		// default behavior is to do nothing
 	}
@@ -1480,6 +1683,7 @@
 	/**
 	 * @see IBytecodeVisitor#_wide(int, int, int)
 	 */
+	@Override
 	public void _wide(int pc, int opcode, int index) {
 		// default behavior is to do nothing
 	}
@@ -1487,6 +1691,7 @@
 	/**
 	 * @see IBytecodeVisitor#_breakpoint(int)
 	 */
+	@Override
 	public void _breakpoint(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1494,6 +1699,7 @@
 	/**
 	 * @see IBytecodeVisitor#_impdep1(int)
 	 */
+	@Override
 	public void _impdep1(int pc) {
 		// default behavior is to do nothing
 	}
@@ -1501,6 +1707,7 @@
 	/**
 	 * @see IBytecodeVisitor#_impdep2(int)
 	 */
+	@Override
 	public void _impdep2(int pc) {
 		// default behavior is to do nothing
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.java
index 882a529..b52e7f4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/CompilationUnitSorter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -52,6 +52,8 @@
         case AST.JLS3 :
         case AST.JLS4 :
         case AST.JLS8 :
+        case AST.JLS9 :
+        case AST.JLS10 :
             break;
         default :
             throw new IllegalArgumentException();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.java
index 7351ff6..277e45a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IAttributeNamesConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -169,4 +169,22 @@
 	 * @since 3.10
 	 */
 	char[] METHOD_PARAMETERS = "MethodParameters".toCharArray(); //$NON-NLS-1$
+
+	/**
+	 * "Module" attribute (added in Java SE 9).
+	 * @since 3.14
+	 */
+	char[] MODULE = "Module".toCharArray(); //$NON-NLS-1$
+
+	/**
+	 * "ModulePackages" attribute (added in Java SE 9).
+	 * @since 3.14
+	 */
+	char[] MODULE_PACKAGES = "ModulePackages".toCharArray(); //$NON-NLS-1$
+
+	/**
+	 * "ModuleMainClass" attribute (added in Java SE 9).
+	 * @since 3.14
+	 */
+	char[] MODULE_MAIN_CLASS = "ModuleMainClass".toCharArray(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.java
index 49a711d..dc0d00d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IClassFileReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -74,9 +74,9 @@
 	int ALL_BUT_METHOD_BODIES   = ALL & ~METHOD_BODIES;
 
 	/**
-	 * Answer back the access flag of the .class file.
+	 * Answer back the access flags of the .class file.
 	 *
-	 * @return the access flag of the .class file
+	 * @return the access flags of the .class file
 	 */
 	int getAccessFlags();
 
@@ -157,9 +157,9 @@
 	int getSuperclassIndex();
 
 	/**
-	 * Answer true if this .class file represents an class, false otherwise.
+	 * Answer true if this .class file represents a class, false otherwise.
 	 *
-	 * @return true if this .class file represents an class, false otherwise
+	 * @return true if this .class file represents a class, false otherwise
 	 */
 	boolean isClass();
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.java
index dfa6664..5af51ae 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPool.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,11 +36,15 @@
 
 	/**
 	 * Answer back the entry at the given index in the constant pool.
-	 * 
+	 *
 	 * <p>The return value can be an instance of {@link IConstantPoolEntry2} if the value returned
 	 * by {@link #getEntryKind(int)} is either {@link IConstantPoolConstant#CONSTANT_MethodHandle},
 	 * {@link IConstantPoolConstant#CONSTANT_MethodType} or {@link IConstantPoolConstant#CONSTANT_InvokeDynamic}.</p>
 	 *
+	 * <p>The return value can be an instance of {@link IConstantPoolEntry3} if the value returned
+	 * by {@link #getEntryKind(int)} is either {@link IConstantPoolConstant#CONSTANT_Module}
+	 * or {@link IConstantPoolConstant#CONSTANT_Package}.</p>
+	 *
 	 * @param index the index of the entry in the constant pool
 	 * @return the entry at the given index in the constant pool
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.java
index a0f7062..60dd99a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolConstant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,15 @@
 	 */
 	int CONSTANT_InvokeDynamic = 18;
 
+	/**
+	 * @since 3.14
+	 */
+	int CONSTANT_Module = 19;
+	/**
+	 * @since 3.14
+	 */
+	int CONSTANT_Package = 20;
+
 	int CONSTANT_Methodref_SIZE = 5;
 	int CONSTANT_Class_SIZE = 3;
 	int CONSTANT_Double_SIZE = 9;
@@ -67,6 +76,15 @@
 	int CONSTANT_InvokeDynamic_SIZE = 5;
 
 	/**
+	 * @since 3.14
+	 */
+	int CONSTANT_Module_SIZE = 3;
+
+	/**
+	 * @since 3.14
+	 */
+	int CONSTANT_Package_SIZE = 3;
+	/**
 	 * The constant is described at 5.4.3.5 in the Java 7 VM specification (part 3).
 	 * @since 3.8
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.java
index c40f005..e4e3033 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,8 +14,11 @@
  * Description of a constant pool entry as described in the JVM specifications.
  * Its contents is initialized according to its kind.
  *
- * This interface may be implemented by clients.
+ * This interface may be implemented by clients. Because of that questionable choice,
+ * clients may have to cast to {@link IConstantPoolEntry3} to get access to the relevant content.
  *
+ * @see IConstantPoolEntry2
+ * @see IConstantPoolEntry3
  * @since 2.0
  */
 public interface IConstantPoolEntry {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.java
new file mode 100644
index 0000000..325fb71
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IConstantPoolEntry3.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a constant pool entry as described in the JVM specifications.
+ * Its contents is initialized according to its kind.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 3.14
+ */
+public interface IConstantPoolEntry3 extends IConstantPoolEntry2 {
+	/**
+	 * Returns the index for a CONSTANT_Module type entry.
+	 * The value is unspecified otherwise.
+	 *
+	 * @return the index for a CONSTANT_Module type entry
+	 * @see IConstantPoolConstant#CONSTANT_Module
+	 * @see #getModuleName()
+	 */
+	int getModuleIndex();
+
+	/**
+	 * Returns the name of a CONSTANT_Module type entry.
+	 * Returns null otherwise.
+	 *
+	 * @return the name of a CONSTANT_Module type entry
+	 * @see IConstantPoolConstant#CONSTANT_Module
+	 * @see #getModuleIndex()
+	 */
+	char[] getModuleName();
+
+	/**
+	 * Returns the index for a CONSTANT_Package type entry.
+	 * The value is unspecified otherwise.
+	 *
+	 * @return the index for a CONSTANT_Package type entry
+	 * @see IConstantPoolConstant#CONSTANT_Package
+	 * @see #getPackageName()
+	 */
+	int getPackageIndex();
+
+	/**
+	 * Returns the name of a CONSTANT_Package type entry.
+	 * Returns null otherwise.
+	 *
+	 * @return the name of a CONSTANT_Package type entry
+	 * @see IConstantPoolConstant#CONSTANT_Package
+	 * @see #getPackageIndex()
+	 */
+	char[] getPackageName();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.java
index e10de0d..d5cd0bc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModifierConstants.java
@@ -1,11 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
- *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Jesper Steen Moeller - Contribution for bug 406973 - [compiler] Parse MethodParameters attribute
@@ -64,8 +63,31 @@
 	int ACC_ENUM         = 0x4000;
 
 	/**
+	 * Indicates a module (added in Java SE 9).
+	 * @since 3.14
+	 */
+	int ACC_MODULE       = 0x8000;
+
+	/**
 	 * Indicates a mandated parameter, such as this$1 (added in Java SE 8).
 	 * @since 3.10
 	 */
 	int ACC_MANDATED     = 0x8000;
+	/**
+	 * Indicates an open module in module-info file (added in Java SE 9).
+	 * @since 3.14
+	 */
+	int ACC_OPEN			= 0x0020;
+
+	/**
+	 * Indicates a transitive requires in module-info file (added in Java SE 9).
+	 * @since 3.14
+	 */
+	int ACC_TRANSITIVE     = 0x0020;
+
+	/**
+	 * Indicates a static requires in module-info file (added in Java SE 9).
+	 * @since 3.14
+	 */
+	int ACC_STATIC_PHASE	= 0x0040;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.java
new file mode 100644
index 0000000..380337e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleAttribute.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a module's attributes as described in the JVM specifications.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 3.14
+ */
+public interface IModuleAttribute extends IClassFileAttribute {
+
+	/**
+	 * Answer back the module name index.
+	 *
+	 * @return the module name index
+	 */
+	int getModuleNameIndex();
+
+	/**
+	 * Answer back the module name.
+	 *
+	 * @return the module name
+	 */
+	char[] getModuleName();
+
+	/**
+	 * Answer back the module flags.
+	 *
+	 * @return the module flags
+	 */
+	int getModuleFlags();
+
+	/**
+	 * Answer back the module version index.
+	 *
+	 * @return the module version index
+	 */
+	int getModuleVersionIndex();
+
+	/**
+	 * Answer back the module version string.
+	 *
+	 * @return the module version string
+	 */
+	public char[] getModuleVersionValue();
+
+	/**
+	 * Answer back the requires count.
+	 *
+	 * @return the requires counts
+	 */
+	int getRequiresCount();
+
+	/**
+	 * Answer back the array of requires infos of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of requires infos of the .class file, an empty array if none
+	 */
+	IRequiresInfo[] getRequiresInfo();
+
+	/**
+	 * Answer back the exports count.
+	 *
+	 * @return the exports counts
+	 */
+	int getExportsCount();
+
+	/**
+	 * Answer back the array of exports infos of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of exports infos of the .class file, an empty array if none
+	 */
+	IPackageVisibilityInfo[] getExportsInfo();
+
+	/**
+	 * Answer back the opens count.
+	 *
+	 * @return the opens counts
+	 */
+	int getOpensCount();
+
+	/**
+	 * Answer back the array of opens infos of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of opens infos of the .class file, an empty array if none
+	 */
+	IPackageVisibilityInfo[] getOpensInfo();
+
+	/**
+	 * Answer back the uses count.
+	 *
+	 * @return the uses counts
+	 */
+	int getUsesCount();
+
+	/**
+	 * Answer back the array of uses indices of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of uses indices of the .class file, an empty array if none
+	 */
+	int[] getUsesIndices();
+
+	/**
+	 * Answer back the array of uses class names of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of uses class names of the .class file, an empty array if none
+	 */
+	char[][] getUsesClassNames();
+
+	/**
+	 * Answer back the provides count.
+	 *
+	 * @return the provides counts
+	 */
+	int getProvidesCount();
+
+	/**
+	 * Answer back the array of provides infos of the .class file,
+	 * an empty array if none.
+	 *
+	 * @return the array of provides infos of the .class file, an empty array if none
+	 */
+	IProvidesInfo[] getProvidesInfo();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.java
new file mode 100644
index 0000000..c284be5
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModuleMainClassAttribute.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a Module Main Class Attribute as described in the JVMS9 4.7.27
+ *
+ * This interface may be implemented by clients.
+ *
+ * @since 3.14
+ */
+public interface IModuleMainClassAttribute extends IClassFileAttribute {
+
+	/**
+	 * Answer back the main class index.
+	 *
+	 * @return the main class index
+	 */
+	int getMainClassIndex();
+
+	/**
+	 * Answer back the name of main class.
+	 *
+	 * @return the name of main class
+	 */
+	char[] getMainClassName();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.java
new file mode 100644
index 0000000..96dea6d
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IModulePackagesAttribute.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a Module Packages as described in the JVMS9 4.7.26
+ *
+ * This interface may be implemented by clients.
+ *
+ * @since 3.14
+ */
+public interface IModulePackagesAttribute extends IClassFileAttribute {
+
+	/**
+	 * Answer back the number of packages exported or opened.
+	 *
+	 * @return the number of packages exported or opened
+	 */
+	int getPackagesCount();
+
+	/**
+	 * Answer back the array of package indices.
+	 *
+	 * @return the array of package indices.
+	 */
+	int[] getPackageIndices();
+
+	/**
+	 * Answer back the names of packages. Answers an empty collection if none.
+	 *
+	 * @return the names of packages
+	 */
+	char[][] getPackageNames();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.java
new file mode 100644
index 0000000..dbb751e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IPackageVisibilityInfo.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of an exports/opens info as described in the JVM specifications 4.7.25
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @since 3.14
+ */
+public interface IPackageVisibilityInfo {
+
+	/**
+	 * Answer back the exports/opens index.
+	 *
+	 * @return the exports/opens index
+	 */
+	int getIndex();
+
+	/**
+	 * Answer back the exports/opens package.
+	 *
+	 * @return the exports/opens package
+	 */
+	char[] getPackageName();
+
+	/**
+	 * Answer back the exports/opens flags.
+	 *
+	 * @return the exports/opens flags
+	 */
+	int getFlags();
+
+	/**
+	 * Answer back the number of targets, zero if none.
+	 *
+	 * @return the number of targets, zero if none.
+	 */
+	int getTargetsCount();
+
+	/**
+	 * Answer back the array of target module indices.
+	 *
+	 * @return the array of target module indices.
+	 */
+	int[] getTargetModuleIndices();
+
+	/**
+	 * Answer back the array of target module names.
+	 *
+	 * @return the array of target module names.
+	 */
+	char[][] getTargetModuleNames();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.java
new file mode 100644
index 0000000..9f242d0
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IProvidesInfo.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a provides info as described in JVMS9 4.7.25.
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ * @since 3.14
+ */
+public interface IProvidesInfo {
+
+	/**
+	 * Answer back the provides index.
+	 *
+	 * @return the provides index
+	 */
+	int getIndex();
+
+	/**
+	 * Answer back the service class/interface
+	 *
+	 * @return the service class/interface
+	 */
+	char[] getServiceName();
+
+	/**
+	 * Answer back the number of implementations.
+	 *
+	 * @return the number of implementations.
+	 */
+	int getImplementationsCount();
+
+	/**
+	 * Answer back the array of implementation indices.
+	 *
+	 * @return the array of implementation indices.
+	 */
+	int[] getImplementationIndices();
+
+	/**
+	 * Answer back the array of implementation names.
+	 *
+	 * @return the array of implementation names.
+	 */
+	char[][] getImplementationNames();
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.java
new file mode 100644
index 0000000..42e7379
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/core/util/IRequiresInfo.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.core.util;
+
+/**
+ * Description of a requires info as described in JVMS9 4.7.25
+ *
+ * @noimplement This interface is not intended to be implemented by clients.
+ * @noextend This interface is not intended to be extended by clients.
+ * @since 3.14
+ */
+public interface IRequiresInfo {
+
+	/**
+	 * Answer back the requires index.
+	 *
+	 * @return the requires index
+	 */
+	int getRequiresIndex();
+
+	/**
+	 * Answer back the requires module name.
+	 *
+	 * @return the requires module name
+	 */
+	char[] getRequiresModuleName();
+
+	/**
+	 * Answer back the requires flags.
+	 *
+	 * @return the requires flags
+	 */
+	int getRequiresFlags();
+
+	/**
+	 * Answer back the requires version index.
+	 *
+	 * @return the requires version index
+	 */
+	int getRequiresVersionIndex();
+
+	/**
+	 * Answer back the requires version string.
+	 *
+	 * @return the requires version string
+	 */
+	public char[] getRequiresVersionValue();
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.java
index 2cdb9a1..2d3e531 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionElementNotifier.java
@@ -71,6 +71,7 @@
 		return new char[][][] {argumentTypes, argumentNames};
 	}
 
+	@Override
 	protected char[][] getInterfaceNames(TypeDeclaration typeDeclaration) {
 		char[][] interfaceNames = null;
 		int superInterfacesLength = 0;
@@ -108,6 +109,7 @@
 		return interfaceNames;
 	}
 
+	@Override
 	protected char[] getSuperclassName(TypeDeclaration typeDeclaration) {
 		TypeReference superclass = typeDeclaration.superclass;
 
@@ -117,6 +119,7 @@
 		return superclass != null ? CharOperation.concatWith(superclass.getParameterizedTypeName(), '.') : null;
 	}
 
+	@Override
 	protected char[][] getThrownExceptions(AbstractMethodDeclaration methodDeclaration) {
 		char[][] thrownExceptionTypes = null;
 		TypeReference[] thrownExceptions = methodDeclaration.thrownExceptions;
@@ -142,6 +145,7 @@
 		return thrownExceptionTypes;
 	}
 
+	@Override
 	protected char[][] getTypeParameterBounds(TypeParameter typeParameter) {
 		TypeReference firstBound = typeParameter.type;
 		TypeReference[] otherBounds = typeParameter.bounds;
@@ -182,6 +186,7 @@
 		return typeParameterBounds;
 	}
 
+	@Override
 	protected void notifySourceElementRequestor(AbstractMethodDeclaration methodDeclaration, TypeDeclaration declaringType, ImportReference currentPackage) {
 		if (methodDeclaration instanceof CompletionOnMethodReturnType) return;
 		if (methodDeclaration instanceof CompletionOnMethodTypeParameter) return;
@@ -189,16 +194,19 @@
 		super.notifySourceElementRequestor(methodDeclaration, declaringType, currentPackage);
 	}
 
+	@Override
 	public void notifySourceElementRequestor(CompilationUnitDeclaration parsedUnit, int sourceStart, int sourceEnd, boolean reportReference, HashtableOfObjectToInt sourceEndsMap, Map nodesToCategoriesMap) {
 		super.notifySourceElementRequestor(parsedUnit, sourceStart, sourceEnd, reportReference, sourceEndsMap, nodesToCategoriesMap);
 	}
 
+	@Override
 	protected void notifySourceElementRequestor(FieldDeclaration fieldDeclaration, TypeDeclaration declaringType) {
 		if (fieldDeclaration instanceof CompletionOnFieldType) return;
 		if (fieldDeclaration instanceof CompletionOnFieldName) return;
 		super.notifySourceElementRequestor(fieldDeclaration, declaringType);
 	}
 
+	@Override
 	protected void notifySourceElementRequestor(ImportReference importReference, boolean isPackage) {
 		if (importReference instanceof CompletionOnKeyword2) return;
 		if (importReference instanceof CompletionOnImportReference ||
@@ -209,6 +217,7 @@
 		super.notifySourceElementRequestor(importReference, isPackage);
 	}
 
+	@Override
 	protected void notifySourceElementRequestor(TypeDeclaration typeDeclaration, boolean notifyTypePresence, TypeDeclaration declaringType, ImportReference currentPackage) {
 		if (typeDeclaration instanceof CompletionOnAnnotationOfType) return;
 		super.notifySourceElementRequestor(typeDeclaration, notifyTypePresence, declaringType, currentPackage);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
index 6f080dc..fd7339e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,9 +17,12 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.aspectj.org.eclipse.jdt.core.CompletionContext;
@@ -28,8 +31,11 @@
 import org.aspectj.org.eclipse.jdt.core.CompletionRequestor;
 import org.aspectj.org.eclipse.jdt.core.Flags;
 import org.aspectj.org.eclipse.jdt.core.IAccessRule;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
@@ -40,8 +46,15 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
 import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.aspectj.org.eclipse.jdt.core.search.SearchEngine;
+import org.aspectj.org.eclipse.jdt.core.search.SearchMatch;
+import org.aspectj.org.eclipse.jdt.core.search.SearchParticipant;
+import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
+import org.aspectj.org.eclipse.jdt.core.search.SearchRequestor;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionNodeDetector;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionNodeFound;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.AssistNodeParentAnnotationArrayInitializer;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnAnnotationOfType;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnArgumentName;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnBranchStatementLabel;
@@ -61,6 +74,8 @@
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnJavadocTypeParamReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnKeyword;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnKeyword3;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnKeywordModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnKeywordModuleInfo;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnLocalName;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnMarkerAnnotationName;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnMemberAccess;
@@ -69,8 +84,15 @@
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnMessageSendName;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnMethodName;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnMethodReturnType;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnPackageReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnPackageVisibilityReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnParameterizedQualifiedTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnProvidesImplementationsQualifiedTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnProvidesImplementationsSingleTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnProvidesInterfacesQualifiedTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnProvidesInterfacesSingleTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnQualifiedAllocationExpression;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnQualifiedNameReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnQualifiedTypeReference;
@@ -78,6 +100,8 @@
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnSingleNameReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnSingleTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnStringLiteral;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnUsesQualifiedTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnUsesSingleTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionParser;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionScanner;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.InvalidCursorLocation;
@@ -121,15 +145,20 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PackageVisibilityStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReturnStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
@@ -142,6 +171,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnaryExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnionTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.WhileStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
@@ -198,12 +228,16 @@
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryTypeConverter;
 import org.aspectj.org.eclipse.jdt.internal.core.INamingRequestor;
 import org.aspectj.org.eclipse.jdt.internal.core.InternalNamingConventions;
+import org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaElementRequestor;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
+import org.aspectj.org.eclipse.jdt.internal.core.ModuleSourcePathManager;
 import org.aspectj.org.eclipse.jdt.internal.core.SearchableEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceMethod;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceMethodElementInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceType;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceTypeElementInfo;
+import org.aspectj.org.eclipse.jdt.internal.core.search.BasicSearchEngine;
 import org.aspectj.org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
@@ -258,6 +292,7 @@
 			this.accessibility = accessibility;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append('{');
@@ -292,6 +327,7 @@
 			this.accessibility = accessibility;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append('{');
@@ -360,6 +396,7 @@
 			return pb;
 		}
 
+		@Override
 		public CategorizedProblem createProblem(
 				char[] originatingFileName,
 				int problemId,
@@ -385,6 +422,7 @@
 						columnNumber), originatingFileName, severity, start);
 		}
 
+		@Override
 		public CategorizedProblem createProblem(
 				char[] originatingFileName,
 				int problemId,
@@ -677,7 +715,10 @@
 	ProblemReporter problemReporter;
 	private INameEnvironment noCacheNameEnvironment;
 	char[] source;
+	ModuleDeclaration moduleDeclaration;
+	boolean skipDefaultPackage = false;
 	char[] completionToken;
+
 	char[] qualifiedCompletionToken;
 	boolean resolvingImports = false;
 	boolean resolvingStaticImports = false;
@@ -692,6 +733,7 @@
 	String complianceLevel;
 	SimpleSetOfCharArray validPackageNames = new SimpleSetOfCharArray(10);
 	SimpleSetOfCharArray invalidPackageNames = new SimpleSetOfCharArray(1);
+	HashtableOfObject knownModules = new HashtableOfObject(10);
 	HashtableOfObject knownPkgs = new HashtableOfObject(10);
 	HashtableOfObject knownTypes = new HashtableOfObject(10);
 	
@@ -751,20 +793,35 @@
 	static final char[] THROWS = "throws".toCharArray();  //$NON-NLS-1$
 
 	static InvocationSite FakeInvocationSite = new InvocationSite(){
+		@Override
 		public TypeBinding[] genericTypeArguments() { return null; }
+		@Override
 		public boolean isSuperAccess(){ return false; }
+		@Override
 		public boolean isTypeAccess(){ return false; }
+		@Override
 		public void setActualReceiverType(ReferenceBinding receiverType) {/* empty */}
+		@Override
 		public void setDepth(int depth){/* empty */}
+		@Override
 		public void setFieldIndex(int depth){/* empty */}
+		@Override
 		public int sourceEnd() { return 0; 	}
+		@Override
 		public int sourceStart() { return 0; 	}
+		@Override
 		public TypeBinding invocationTargetType() { return null; }
+		@Override
 		public boolean receiverIsImplicitThis() { return false; }
+		@Override
 		public InferenceContext18 freshInferenceContext(Scope scope) { return null; }
+		@Override
 		public ExpressionContext getExpressionContext() { return ExpressionContext.VANILLA_CONTEXT; }
+		@Override
 		public boolean isQualifiedSuper() { return false; }
+		@Override
 		public boolean checkingPotentialCompatibility() { return false; }
+		@Override
 		public void acceptPotentiallyCompatibleMethods(MethodBinding[] methods) {/* ignore */}
 	};
 
@@ -820,6 +877,7 @@
 		this.monitor = monitor;
 	}
 	
+	@Override
 	public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 		if (!CharOperation.equals(sourceUnit.getMainTypeName(), TypeConstants.PACKAGE_INFO_NAME)) {
 			// do not accept package-info.java as a type for completion engine
@@ -831,6 +889,7 @@
 		}
 	}
 	
+	@Override
 	public void acceptConstructor(
 			int modifiers,
 			char[] simpleTypeName,
@@ -1244,19 +1303,54 @@
 			this.acceptedTypes = null; // reset
 		}
 	}
-
+	
 	/**
-	 * One result of the search consists of a new package.
+	 * One result of the search consists of a new module.
 	 *
-	 * NOTE - All package names are presented in their readable form:
-	 *    Package names are in the form "a.b.c".
-	 *    The default package is represented by an empty array.
+	 * NOTE - All module names are presented in their readable form:
+	 *    Module names are in the form "a.b.c".
+	 *    The default module is represented by an empty array.
 	 */
+	@Override
+	public void acceptModule(char[] moduleName) {
+		if (this.knownModules.containsKey(moduleName)) return;
+		if (CharOperation.equals(moduleName, this.moduleDeclaration.moduleName)) return;
+		if (CharOperation.equals(moduleName, CharOperation.NO_CHAR)) return;
+		this.knownModules.put(moduleName, this);
+		char[] completion = moduleName;
+		int relevance = computeBaseRelevance();
+		relevance += computeRelevanceForResolution();
+		relevance += computeRelevanceForInterestingProposal();
+		relevance += computeRelevanceForCaseMatching(this.qualifiedCompletionToken == null ? this.completionToken : this.qualifiedCompletionToken, moduleName);
+		relevance += computeRelevanceForQualification(true);
+		relevance += computeRelevanceForRestrictions(IAccessRule.K_ACCESSIBLE);
+		this.noProposal = false;
+		if(!this.requestor.isIgnored(CompletionProposal.MODULE_REF)) {
+			InternalCompletionProposal proposal = createProposal(CompletionProposal.MODULE_REF, this.actualCompletionPosition);
+			proposal.setModuleName(moduleName);
+			proposal.setDeclarationSignature(moduleName);
+			proposal.setCompletion(completion);
+			proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
+			proposal.setTokenRange(this.tokenStart - this.offset, this.tokenEnd - this.offset);
+			proposal.setRelevance(relevance);
+			this.requestor.accept(proposal);
+			if(DEBUG) {
+				this.printDebug(proposal);
+			}
+		}
+		
+	}
+
+	@Override
 	public void acceptPackage(char[] packageName) {
 
 		if (this.knownPkgs.containsKey(packageName)) return;
 
 		if (!isValidPackageName(packageName)) return;
+		
+		if (this.skipDefaultPackage &&
+			CharOperation.equals(packageName, CharOperation.NO_CHAR))
+			return;
 
 		this.knownPkgs.put(packageName, this);
 
@@ -1296,14 +1390,7 @@
 		}
 	}
 
-	/**
-	 * One result of the search consists of a new type.
-	 *
-	 * NOTE - All package and type names are presented in their readable form:
-	 *    Package names are in the form "a.b.c".
-	 *    Nested type names are in the qualified form "A.I".
-	 *    The default package is represented by an empty array.
-	 */
+	@Override
 	public void acceptType(
 		char[] packageName,
 		char[] simpleTypeName,
@@ -1321,9 +1408,10 @@
 		if (this.options.checkVisibility) {
 			if((modifiers & ClassFileConstants.AccPublic) == 0) {
 				if((modifiers & ClassFileConstants.AccPrivate) != 0) return;
-
-				char[] currentPackage = CharOperation.concatWith(this.unitScope.fPackage.compoundName, '.');
-				if(!CharOperation.equals(packageName, currentPackage)) return;
+				if (this.moduleDeclaration == null) {
+					char[] currentPackage = CharOperation.concatWith(this.unitScope.fPackage.compoundName, '.');
+					if(!CharOperation.equals(packageName, currentPackage)) return;
+				}
 			}
 		}
 
@@ -1784,7 +1872,7 @@
 				if (expression.body().sourceStart <= astNode.sourceStart &&
 						astNode.sourceEnd <= expression.body().sourceEnd) {
 					// completion is inside a method body
-					if (astNodeParent == null &&
+					if ((astNodeParent == null || astNodeParent == expression) &&
 							astNode instanceof CompletionOnSingleNameReference &&
 							!((CompletionOnSingleNameReference)astNode).isPrecededByModifiers) {
 						context.setTokenLocation(CompletionContext.TL_STATEMENT_START);
@@ -1847,6 +1935,14 @@
 			completionOnMethodReturnType(astNode, scope);
 		} else if (astNode instanceof CompletionOnSingleNameReference) {
 			completionOnSingleNameReference(astNode, astNodeParent, scope, insideTypeAnnotation);
+		} else if (astNode instanceof CompletionOnProvidesInterfacesQualifiedTypeReference) {
+			completionOnProvidesInterfacesQualifiedTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
+		} else if (astNode instanceof CompletionOnProvidesInterfacesSingleTypeReference) {
+			completionOnProvidesInterfacesSingleTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
+		} else if (astNode instanceof CompletionOnProvidesImplementationsQualifiedTypeReference) {
+			completionOnProvidesImplementationsQualifiedTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
+		} else if (astNode instanceof CompletionOnProvidesImplementationsSingleTypeReference) {
+			completionOnProvidesImplementationsSingleTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
 		} else if (astNode instanceof CompletionOnSingleTypeReference) {
 			completionOnSingleTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
 		} else if (astNode instanceof CompletionOnQualifiedNameReference) {
@@ -1954,6 +2050,112 @@
 					System.out.println(parsedUnit.toString());
 				}
 
+				if (parsedUnit.isModuleInfo()) {
+					this.moduleDeclaration = parsedUnit.moduleDeclaration;
+					if (this.moduleDeclaration == null) return;
+					if (this.moduleDeclaration instanceof CompletionOnModuleDeclaration) {
+						contextAccepted = true;
+						buildContext(parsedUnit.moduleDeclaration, null, parsedUnit, null, null);
+						//this.requestor.setIgnored(CompletionProposal.MODULE_DECLARATION, false); //TODO: Hack until ui fixes this issue.
+						if(!this.requestor.isIgnored(CompletionProposal.MODULE_DECLARATION)) {
+							proposeModuleName(parsedUnit);
+						}
+						debugPrintf(); 
+						return;
+					}
+					if (this.moduleDeclaration instanceof CompletionOnKeywordModuleDeclaration) {
+						contextAccepted = true;
+						processModuleKeywordCompletion(parsedUnit, this.moduleDeclaration, (CompletionOnKeyword) this.moduleDeclaration);
+						return;
+					}
+					if (this.moduleDeclaration.exports != null) {
+						contextAccepted = completeOnPackageVisibilityStatements(contextAccepted, parsedUnit, this.moduleDeclaration.exports);
+						if (contextAccepted) return;
+					}
+					if (this.moduleDeclaration.opens != null) {
+						contextAccepted = completeOnPackageVisibilityStatements(contextAccepted, parsedUnit, this.moduleDeclaration.opens);
+						if (contextAccepted) return;
+					}
+					RequiresStatement[] moduleRefs = this.moduleDeclaration.requires;
+					if (moduleRefs != null) {
+						for (int i = 0, l = moduleRefs.length; i < l; ++i) {
+							ModuleReference reference = moduleRefs[i].module;
+							if (reference instanceof CompletionOnModuleReference) {
+								contextAccepted = true;
+								buildContext(reference, null, parsedUnit, null, null);
+								if(!this.requestor.isIgnored(CompletionProposal.MODULE_REF)) {
+									findModules((CompletionOnModuleReference) reference, false /* targetted */);
+								}
+								debugPrintf();
+								return;
+							}
+						}
+					}
+					try {
+						UsesStatement[] uses = this.moduleDeclaration.uses;
+						if (uses != null) {
+							for (int i = 0, l = uses.length; i < l; ++i) {
+								UsesStatement usesStatement = uses[i];
+								this.parser.enclosingNode = usesStatement;
+								TypeReference usesReference = usesStatement.serviceInterface;
+								if (usesReference instanceof CompletionOnUsesSingleTypeReference ||
+										usesReference instanceof CompletionOnUsesQualifiedTypeReference) {
+									contextAccepted = checkForCNF(usesReference, parsedUnit, true);
+									return;
+								}
+							}
+						}
+						ProvidesStatement[] providesStmts = this.moduleDeclaration.services;
+						for (int i = 0, l = providesStmts != null ? providesStmts.length : 0; i < l; ++i) {
+							ProvidesStatement providesStmt = providesStmts[i];
+							this.parser.enclosingNode = providesStmt;
+							TypeReference pInterface = providesStmt.serviceInterface;
+							if (pInterface instanceof CompletionOnProvidesInterfacesSingleTypeReference ||
+									pInterface instanceof CompletionOnProvidesInterfacesQualifiedTypeReference) {
+								contextAccepted = checkForCNF(pInterface, parsedUnit, true);
+								return;
+							}
+							TypeReference[] implementations = providesStmt.implementations;
+							for (int j = 0, k = implementations.length; j < k; ++j) {
+								TypeReference implementation = implementations[j];
+								if (implementation instanceof CompletionOnProvidesImplementationsSingleTypeReference ||
+										implementation instanceof CompletionOnProvidesImplementationsQualifiedTypeReference) {
+									this.skipDefaultPackage = true;
+									contextAccepted = checkForCNF(implementation, parsedUnit, false);
+									return;
+								} else if (implementation instanceof CompletionOnKeyword) {
+									contextAccepted = true;
+									processModuleKeywordCompletion(parsedUnit, implementation, (CompletionOnKeyword) implementation);
+								}
+							}
+						}
+					} catch (CompletionNodeFound e) {
+						//					completionNodeFound = true;
+						if (e.astNode != null) {
+							// if null then we found a problem in the completion node
+							if(DEBUG) {
+								System.out.print("COMPLETION - Completion node : "); //$NON-NLS-1$
+								System.out.println(e.astNode.toString());
+								if(this.parser.assistNodeParent != null) {
+									System.out.print("COMPLETION - Parent Node : ");  //$NON-NLS-1$
+									System.out.println(this.parser.assistNodeParent);
+								}
+							}
+							this.lookupEnvironment.unitBeingCompleted = parsedUnit; // better resilient to further error reporting
+							contextAccepted =
+									complete(
+											e.astNode,
+											this.parser.assistNodeParent,
+											this.parser.enclosingNode,
+											parsedUnit,
+											e.qualifiedBinding,
+											e.scope,
+											e.insideTypeAnnotation);
+						}
+					} finally {
+						this.skipDefaultPackage = false;
+					}
+				}
 				// scan the package & import statements first
 				if (parsedUnit.currentPackage instanceof CompletionOnPackageReference) {
 					contextAccepted = true;
@@ -1961,12 +2163,7 @@
 					if(!this.requestor.isIgnored(CompletionProposal.PACKAGE_REF)) {
 						findPackages((CompletionOnPackageReference) parsedUnit.currentPackage);
 					}
-					if(this.noProposal && this.problem != null) {
-						this.requestor.completionFailure(this.problem);
-						if(DEBUG) {
-							this.printDebug(this.problem);
-						}
-					}
+					debugPrintf();
 					return;
 				}
 
@@ -2016,12 +2213,7 @@
 									}
 								}
 
-								if(this.noProposal && this.problem != null) {
-									this.requestor.completionFailure(this.problem);
-									if(DEBUG) {
-										this.printDebug(this.problem);
-									}
-								}
+								debugPrintf();
 							}
 							return;
 						} else if(importReference instanceof CompletionOnKeyword) {
@@ -2032,12 +2224,7 @@
 								CompletionOnKeyword keyword = (CompletionOnKeyword)importReference;
 								findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false, parsedUnit.currentPackage != null);
 							}
-							if(this.noProposal && this.problem != null) {
-								this.requestor.completionFailure(this.problem);
-								if(DEBUG) {
-									this.printDebug(this.problem);
-								}
-							}
+							debugPrintf();
 							return;
 						}
 					}
@@ -2145,6 +2332,95 @@
 		}
 	}
 
+	private boolean checkForCNF(TypeReference ref, CompilationUnitDeclaration parsedUnit, boolean showAll) {
+		this.lookupEnvironment.buildTypeBindings(parsedUnit, null);
+		this.lookupEnvironment.completeTypeBindings(parsedUnit, true);
+		parsedUnit.resolve();
+		this.startPosition = ref.sourceStart;
+		this.endPosition = ref.sourceEnd > ref.sourceStart ? ref.sourceEnd : ref.sourceStart;
+		if ((this.unitScope = parsedUnit.scope) != null) {
+			if (showAll) {
+				char[][] tokens = ref.getTypeName();
+				char[] typeName = CharOperation.concatWithAll(tokens, '.');
+				if (typeName.length == 0) {
+					buildContext(ref, null, parsedUnit, null, null);
+					this.completionToken = new char[] {'*'};
+					findTypesAndPackages(this.completionToken, this.unitScope, true, true, new ObjectVector());
+					return true;
+				}
+			}
+			parsedUnit.scope.faultInTypes();
+		}
+		return false; // should not come here - will throw exception
+	}
+
+	private boolean completeOnPackageVisibilityStatements(boolean contextAccepted,
+			CompilationUnitDeclaration parsedUnit, PackageVisibilityStatement[] pvsStmts) {
+		try {
+			this.skipDefaultPackage = true;
+			for (int i = 0, l = pvsStmts.length; i < l; ++i) {
+				PackageVisibilityStatement pvs = pvsStmts[i];
+				if (pvs instanceof CompletionOnKeywordModuleInfo) { // dummy pvs statement
+					contextAccepted = true;
+					processModuleKeywordCompletion(parsedUnit, pvs, (CompletionOnKeyword) pvs);
+					return contextAccepted;
+				}
+				if (pvs.pkgRef instanceof CompletionOnPackageVisibilityReference) {
+					contextAccepted = true;
+					buildContext(pvs, null, parsedUnit, null, null);
+					if(!this.requestor.isIgnored(CompletionProposal.PACKAGE_REF)) {
+						findPackages((CompletionOnPackageVisibilityReference) pvs.pkgRef);
+					}
+					debugPrintf();
+					return contextAccepted;
+				}
+				ModuleReference[] targets = pvs.targets;
+				if (targets == null) continue;
+				HashSet<String> skipSet = new HashSet<>();
+				for (int j = 0, lj = targets.length; j < lj; j++) {
+					ModuleReference target = targets[j];
+					if (target == null) break;
+					if (target instanceof CompletionOnModuleReference) {
+						buildContext(target, null, parsedUnit, null, null);
+						contextAccepted = true;
+						if(!this.requestor.isIgnored(CompletionProposal.MODULE_REF)) {
+							findTargettedModules((CompletionOnModuleReference) target, skipSet);
+						}
+						debugPrintf();
+						return contextAccepted;
+					} else if (target instanceof CompletionOnKeyword) {
+						contextAccepted = true;
+						processModuleKeywordCompletion(parsedUnit, target, (CompletionOnKeyword) target);
+					} else {
+					if (target.moduleName != null || target.moduleName == CharOperation.NO_CHAR)
+							skipSet.add(new String(target.moduleName));
+					}
+				}
+			}
+		} finally {
+			this.skipDefaultPackage = false;
+		}
+		return contextAccepted;
+	}
+
+	private void debugPrintf() {
+		if(this.noProposal && this.problem != null) {
+			this.requestor.completionFailure(this.problem);
+			if(DEBUG) {
+				this.printDebug(this.problem);
+			}
+		}
+	}
+
+	private void processModuleKeywordCompletion(CompilationUnitDeclaration parsedUnit, ASTNode node, CompletionOnKeyword keyword) {
+		buildContext(node, null, parsedUnit, null, null);
+		if(!this.requestor.isIgnored(CompletionProposal.KEYWORD)) {
+			setSourceAndTokenRange(node.sourceStart, node.sourceEnd);
+			findKeywords(keyword.getToken(), keyword.getPossibleKeywords(), false, parsedUnit.currentPackage != null);
+		}
+		debugPrintf();
+	}
+
 	public void complete(IType type, char[] snippet, int position, char[][] localVariableTypeNames, char[][] localVariableNames, int[] localVariableModifiers, boolean isStatic){
 		if(this.requestor != null){
 			this.requestor.beginReporting();
@@ -3391,6 +3667,15 @@
 		}
 	}
 	
+	private void completionOnProvidesInterfacesQualifiedTypeReference(ASTNode astNode, ASTNode astNodeParent, Binding qualifiedBinding, Scope scope) {
+		// TODO: Filter the results wrt accessibility and add relevance to the results.
+		completionOnQualifiedTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
+	}
+
+	private void completionOnProvidesImplementationsQualifiedTypeReference(ASTNode astNode, ASTNode astNodeParent, Binding qualifiedBinding, Scope scope) {
+		findImplementations((ProvidesStatement) this.parser.enclosingNode, (TypeReference) astNode);
+	}
+
 	private void completionOnSingleNameReference(ASTNode astNode, ASTNode astNodeParent, Scope scope,
 			boolean insideTypeAnnotation) {
 		CompletionOnSingleNameReference singleNameReference = (CompletionOnSingleNameReference) astNode;
@@ -3405,6 +3690,15 @@
 			}
 		} else if (this.expectedTypesPtr > -1 && this.expectedTypes[0].isAnnotationType()) {
 			findTypesAndPackages(this.completionToken, scope, false, false, new ObjectVector());
+			if (scope instanceof BlockScope && !this.requestor.isIgnored(CompletionProposal.LOCAL_VARIABLE_REF)) {
+				findVariablesAndMethods(
+					this.completionToken,
+					scope,
+					singleNameReference,
+					scope,
+					insideTypeAnnotation,
+					singleNameReference.isInsideAnnotationAttribute);
+			}
 		} else {
 			if (this.expectedTypesPtr > -1) {
 				this.assistNodeIsEnum = true;
@@ -3515,6 +3809,14 @@
 		}
 	}
 
+	private void completionOnProvidesInterfacesSingleTypeReference(ASTNode astNode, ASTNode astNodeParent, Binding qualifiedBinding, Scope scope) {
+		completionOnSingleTypeReference(astNode, astNodeParent, qualifiedBinding, scope);
+	}
+	private void completionOnProvidesImplementationsSingleTypeReference(ASTNode astNode, ASTNode astNodeParent, Binding qualifiedBinding, Scope scope) {
+		findImplementations((ProvidesStatement) this.parser.enclosingNode, (TypeReference) astNode);
+		// TODO : filter the results - remove packs without a type in impl.
+	}
+
 	private char[][] computeAlreadyDefinedName(
 			BlockScope scope,
 			InvocationSite invocationSite) {
@@ -3908,7 +4210,7 @@
 		} else if(parent instanceof MemberValuePair) {
 			MemberValuePair memberValuePair = (MemberValuePair) parent;
 			if(memberValuePair.binding != null) {
-				addExpectedType(memberValuePair.binding.returnType, scope);
+				addExpectedType(memberValuePair.binding.returnType.leafComponentType(), scope);
 			}
 		} else if (parent instanceof NormalAnnotation) {
 			NormalAnnotation annotation = (NormalAnnotation) parent;
@@ -3929,7 +4231,21 @@
 						}
 						if (canBeSingleMemberAnnotation) {
 							this.assistNodeCanBeSingleMemberAnnotation = canBeSingleMemberAnnotation;
-							addExpectedType(methodBindings[0].returnType, scope);
+							addExpectedType(methodBindings[0].returnType.leafComponentType(), scope);
+						}
+					}
+				}
+			}
+		} else if (parent instanceof AssistNodeParentAnnotationArrayInitializer) {
+			AssistNodeParentAnnotationArrayInitializer parent1 = (AssistNodeParentAnnotationArrayInitializer) parent;
+			if(parent1.type.resolvedType instanceof ReferenceBinding) {
+				MethodBinding[] methodBindings =
+					((ReferenceBinding)parent1.type.resolvedType).availableMethods();
+				if (methodBindings != null) {
+					for (MethodBinding methodBinding : methodBindings) {
+						if(CharOperation.equals(methodBinding.selector, parent1.name)) {
+							addExpectedType(methodBinding.returnType.leafComponentType(), scope);
+							break;
 						}
 					}
 				}
@@ -4090,7 +4406,7 @@
 			for (int j = 0; j < length; j++) {
 				Expression argument = arguments[j];
 				TypeBinding argType = argument.resolvedType;
-				if(argType != null && !argType.isCompatibleWith(parameters[j]))
+				if(argType != null && !argType.erasure().isCompatibleWith(parameters[j].erasure()))
 					continue nextMethod;
 			}
 
@@ -5293,6 +5609,7 @@
 		MissingTypesGuesser missingTypesConverter = new MissingTypesGuesser(this);
 		MissingTypesGuesser.GuessedTypeRequestor substitutionRequestor =
 			new MissingTypesGuesser.GuessedTypeRequestor() {
+				@Override
 				public void accept(
 						TypeBinding guessedType,
 						Binding[] missingElements,
@@ -6439,7 +6756,7 @@
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=195346
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=343342
 			if (this.assistNodeIsInsideCase) {
-				if (field.isFinal() && field.isStatic()) {
+				if (field.isFinal()) {
 					if (this.assistNodeIsString){
 						if (field.type == null || field.type.id != TypeIds.T_JavaLangString)
 							continue next;
@@ -7504,6 +7821,7 @@
 		MissingTypesGuesser missingTypesConverter = new MissingTypesGuesser(this);
 		MissingTypesGuesser.GuessedTypeRequestor substitutionRequestor =
 			new MissingTypesGuesser.GuessedTypeRequestor() {
+				@Override
 				public void accept(
 						TypeBinding guessedType,
 						Binding[] missingElements,
@@ -7873,7 +8191,11 @@
 			setSourceRange(
 				importReference.sourceStart,
 				importReference.declarationSourceEnd);
-			this.nameEnvironment.findPackages(importName, this);
+			try {
+				this.nameEnvironment.findPackages(importName, this, this.javaProject.getAllPackageFragmentRoots(), true);
+			} catch (JavaModelException e) {
+				// silent
+			}
 			setSourceRange(
 				oldStart,
 				oldEnd - 1,
@@ -9526,6 +9848,7 @@
 		MissingTypesGuesser missingTypesConverter = new MissingTypesGuesser(this);
 		MissingTypesGuesser.GuessedTypeRequestor substitutionRequestor =
 			new MissingTypesGuesser.GuessedTypeRequestor() {
+				@Override
 				public void accept(
 						TypeBinding guessedType,
 						Binding[] missingElements,
@@ -9775,7 +10098,8 @@
 				if (TypeBinding.equalsEquals(memberType, otherType))
 					continue next;
 
-				if (CharOperation.equals(memberType.sourceName, otherType.sourceName, true)) {
+				if (CharOperation.equals(memberType.sourceName, otherType.sourceName, true)
+						&& otherType.isNestedType()) {
 
 					if (memberType.enclosingType().isSuperclassOf(otherType.enclosingType()))
 						continue next;
@@ -9893,6 +10217,7 @@
 		MissingTypesGuesser missingTypesConverter = new MissingTypesGuesser(this);
 		MissingTypesGuesser.GuessedTypeRequestor substitutionRequestor =
 			new MissingTypesGuesser.GuessedTypeRequestor() {
+				@Override
 				public void accept(
 						TypeBinding guessedType,
 						Binding[] missingElements,
@@ -9927,6 +10252,7 @@
 		MissingTypesGuesser missingTypesConverter = new MissingTypesGuesser(this);
 		MissingTypesGuesser.GuessedTypeRequestor substitutionRequestor =
 			new MissingTypesGuesser.GuessedTypeRequestor() {
+				@Override
 				public void accept(
 						TypeBinding guessedType,
 						Binding[] missingElements,
@@ -10080,7 +10406,7 @@
 					sourceType = (ISourceType) type;
 				}
 			} else {
-				NameEnvironmentAnswer answer = this.nameEnvironment.findType(bindingType.compoundName);
+				NameEnvironmentAnswer answer = this.nameEnvironment.findTypeInModules(bindingType.compoundName, this.unitScope.module());
 				if(answer != null && answer.isSourceType()) {
 					sourceType = answer.getSourceTypes()[0];
 					this.typeCache.put(compoundName, sourceType);
@@ -10370,16 +10696,120 @@
 		}
 	}
 
-	private void findPackages(CompletionOnPackageReference packageStatement) {
+	private void proposeModuleName(CompilationUnitDeclaration parsedUnit) {
+		String projectName = this.javaProject.getElementName();
+		char[] moduleName = projectName.toCharArray();
+		if (moduleName.length > 0) {// do not propose invalid names
+			if (!Character.isJavaIdentifierStart(moduleName[0])) return;
+			for (char c : moduleName) {
+				if (!Character.isJavaIdentifierPart(c) && c != '.') return; 
+			}
+		}
+		this.completionToken = CharOperation.concatWith(this.moduleDeclaration.tokens, '.');
+		setSourceRange(this.moduleDeclaration.sourceStart, this.moduleDeclaration.bodyStart);
+		if (this.completionToken.length > 0 && !CharOperation.prefixEquals(this.completionToken, moduleName)) return;
 
+		InternalCompletionProposal proposal =  createProposal(CompletionProposal.MODULE_DECLARATION, this.actualCompletionPosition);
+		proposal.setName(moduleName);
+		proposal.setDeclarationSignature(moduleName);
+		proposal.setCompletion(moduleName);
+		proposal.setReplaceRange((this.startPosition < 0) ? 0 : this.startPosition - this.offset, this.endPosition - this.offset);
+		proposal.setTokenRange((this.tokenStart < 0) ? 0 : this.tokenStart - this.offset, this.tokenEnd - this.offset);
+		proposal.setRelevance(R_MODULE_DECLARATION);
+		this.requestor.accept(proposal);
+		if(DEBUG) {
+			this.printDebug(proposal);
+		}
+	}
+
+	private HashSet<String> getAllJarModuleNames(IJavaProject javaProject2) {
+		HashSet<String> modules = new HashSet<>();
+		try {
+			for (IPackageFragmentRoot root : javaProject2.getAllPackageFragmentRoots()) {
+				if (root instanceof JarPackageFragmentRoot) {
+					IModuleDescription desc = root.getModuleDescription();
+					desc = desc == null ? ((JarPackageFragmentRoot) root).getAutomaticModuleDescription() : desc;
+					String name = desc != null ? desc.getElementName() : null;
+					if (name != null && name.length() > 0)
+						modules.add(name);
+				}
+			}
+		} catch (JavaModelException e) {
+			// do nothing
+		}
+		return modules;
+	}
+	private void findTargettedModules(char[] prefix, HashSet<String> skipSet) {
+		HashSet<String> probableModules = new HashSet<>();
+		ModuleSourcePathManager mManager = JavaModelManager.getModulePathManager();
+		JavaElementRequestor javaElementRequestor = new JavaElementRequestor();
+		try {
+			mManager.seekModule(this.completionToken, true, javaElementRequestor);
+			IModuleDescription[] modules = javaElementRequestor.getModules();
+			for (IModuleDescription module : modules) {
+				String name = module.getElementName();
+				if (name == null || name.equals("")) //$NON-NLS-1$
+					continue;
+				probableModules.add(name);
+			}
+		} catch (JavaModelException e) {
+			// TODO ignore for now
+		}
+		probableModules.addAll(getAllJarModuleNames(this.javaProject));
+		if (prefix != CharOperation.ALL_PREFIX && prefix != null && prefix.length > 0) {
+			probableModules.removeIf(e -> isFailedMatch(prefix, e.toCharArray()));
+		}
+		for (String s : probableModules) {
+			if (!skipSet.contains(s))
+				this.acceptModule(s.toCharArray());
+		}
+	}
+	private void findTargettedModules(CompletionOnModuleReference moduleReference, HashSet<String> skipSet) {
+		setCompletionToken(moduleReference.tokens, moduleReference.sourceStart, moduleReference.sourceEnd, moduleReference.sourcePositions);
+		findTargettedModules(CharOperation.toLowerCase(this.completionToken), skipSet);
+	}
+
+	private void setCompletionToken(char[][] tokens, int sourceStart, int sourceEnd, long[] sourcePositions, boolean without) {
+		this.completionToken = without ? CharOperation.concatWith(tokens, '.') : CharOperation.concatWithAll(tokens, '.');
+		if (this.completionToken.length == 0)
+			this.completionToken = CharOperation.ALL_PREFIX;
+		setSourceRange(sourceStart, sourceEnd);
+		long completionPosition = sourcePositions[sourcePositions.length - 1];
+		setTokenRange((int) (completionPosition >>> 32), (int) completionPosition);
+	}
+	private void setCompletionToken(char[][] tokens, int sourceStart, int sourceEnd, long[] sourcePositions) {
+		setCompletionToken(tokens, sourceStart, sourceEnd, sourcePositions, tokens.length > 0 && tokens[tokens.length - 1].length > 0);
+	}
+	private void findModules(CompletionOnModuleReference moduleReference, boolean targetted) {
+		setCompletionToken(moduleReference.tokens, moduleReference.sourceStart, moduleReference.sourceEnd, moduleReference.sourcePositions);
+		findTargettedModules(moduleReference, new HashSet<>()); // empty skipSet passed
+		this.nameEnvironment.findModules(CharOperation.toLowerCase(this.completionToken), this, targetted ? this.javaProject : null);
+	}
+	private void findPackages(CompletionOnPackageVisibilityReference reference) {
+		setCompletionToken(reference.tokens, reference.sourceStart, reference.sourceEnd, reference.sourcePositions, false);
+		findPackagesInCurrentModule();
+	}
+
+	private void findPackagesInCurrentModule() {
+		try {
+			IPackageFragmentRoot[] moduleRoots = SearchableEnvironment.getOwnedPackageFragmentRoots(this.javaProject);
+			this.nameEnvironment.findPackages(CharOperation.toLowerCase(this.completionToken), this, moduleRoots, false);
+		} catch (JavaModelException e) {
+			// silent
+		}
+	}
+	private void findPackages(CompletionOnPackageReference packageStatement) {
 		this.completionToken = CharOperation.concatWithAll(packageStatement.tokens, '.');
 		if (this.completionToken.length == 0)
 			return;
-
 		setSourceRange(packageStatement.sourceStart, packageStatement.sourceEnd);
 		long completionPosition = packageStatement.sourcePositions[packageStatement.sourcePositions.length - 1];
 		setTokenRange((int) (completionPosition >>> 32), (int) completionPosition);
-		this.nameEnvironment.findPackages(CharOperation.toLowerCase(this.completionToken), this);
+		try {
+			this.nameEnvironment.findPackages(CharOperation.toLowerCase(this.completionToken), this, this.javaProject.getAllPackageFragmentRoots(), true);
+		} catch (JavaModelException e) {
+			// silent
+		}
 	}
 
 	private void findParameterizedType(TypeReference ref, Scope scope) {
@@ -10714,15 +11144,15 @@
 								hasArrayTypeAsExpectedSuperTypes()) {
 					char[] typeName = sourceType.sourceName();
 					createTypeProposal(
-							sourceType,
-							typeName,
-							IAccessRule.K_ACCESSIBLE,
-							typeName,
-							relevance,
-							null,
-							null,
-							null,
-							false);
+								sourceType,
+								typeName,
+								IAccessRule.K_ACCESSIBLE,
+								typeName,
+								relevance,
+								null,
+								null,
+								null,
+								false);
 				}
 				
 				if (proposeConstructor) {
@@ -11290,6 +11720,7 @@
 	
 	private void findTypesFromStaticImports(char[] token, Scope scope, boolean proposeAllMemberTypes, ObjectVector typesFound) {
 		ImportBinding[] importBindings = scope.compilationUnitScope().imports;
+		if (importBindings == null) return;
 		for (int i = 0; i < importBindings.length; i++) {
 			ImportBinding importBinding = importBindings[i];
 			if(importBinding.isValidBinding() && importBinding.isStatic()) {
@@ -11397,6 +11828,7 @@
 
 		UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor nameRequestor =
 			new UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor() {
+				@Override
 				public void acceptName(char[] name) {
 					CompletionEngine.this.acceptUnresolvedName(name);
 					proposedNames.add(name);
@@ -11465,6 +11897,7 @@
 
 		UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor nameRequestor =
 			new UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor() {
+				@Override
 				public void acceptName(char[] name) {
 					CompletionEngine.this.acceptUnresolvedName(name);
 					proposedNames.add(name);
@@ -11529,6 +11962,121 @@
 		return null;
 	}
 
+	private void findImplementations(ProvidesStatement providesStmt, TypeReference reference ) {
+		char[][] tokens = reference.getTypeName();
+		char[] typeName = CharOperation.concatWithAll(tokens, '.');
+
+		if (typeName.length == 0) {
+			this.completionToken = CharOperation.ALL_PREFIX;
+		} else if (reference instanceof CompletionOnProvidesImplementationsQualifiedTypeReference) {
+			CompletionOnQualifiedTypeReference qReference = (CompletionOnQualifiedTypeReference) reference;
+			if (qReference.completionIdentifier != null) {
+				this.completionToken = CharOperation.concatAll(typeName, qReference.completionIdentifier, '.');
+			}
+		} else {
+			 char[] lastToken = tokens[tokens.length - 1];
+			 this.completionToken = lastToken != null && lastToken.length == 0 ?
+					 CharOperation.concat(typeName, new char[]{'.'}) :lastToken;
+		}
+		setSourceRange(reference.sourceStart, reference.sourceEnd);
+		findImplementations(this.completionToken, this.unitScope, providesStmt, -1);
+	}
+
+	private void findImplementations(char[] token, Scope scope, ProvidesStatement providesStmt, int stmtIndex) {
+		TypeReference theInterface = providesStmt.serviceInterface;
+		if (token == null) return;
+		char[][] theInterfaceType = null;
+		if (theInterface.resolvedType != null && theInterface.resolvedType.isValidBinding()) {
+			char[] readableName = theInterface.resolvedType.readableName();
+			if (readableName != null)
+				theInterfaceType = CharOperation.splitOn('.', readableName);
+		}
+		theInterfaceType = theInterfaceType == null ? theInterface.getTypeName() : theInterfaceType;
+		if (theInterfaceType == null) return;
+		SearchPattern pattern  = null;
+		NameEnvironmentAnswer answer =  this.nameEnvironment.findTypeInModules(theInterfaceType, scope.module());
+		if (answer != null ) {
+			if (answer.isSourceType()) {
+				IType typeHandle = ((SourceTypeElementInfo) answer.getSourceTypes()[0]).getHandle();
+				pattern = SearchPattern.createPattern(typeHandle, IJavaSearchConstants.IMPLEMENTORS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
+			} else if (answer.isBinaryType()) {
+				String typeName = new String(CharOperation.replaceOnCopy(answer.getBinaryType().getName(), '/', '.'));
+				pattern = SearchPattern.createPattern(typeName,
+						IJavaSearchConstants.CLASS_AND_INTERFACE,
+						IJavaSearchConstants.IMPLEMENTORS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
+			}
+		}
+		if (pattern == null) return;
+		IJavaSearchScope searchScope = BasicSearchEngine.createJavaSearchScope(new IJavaElement[] {this.javaProject});
+		class ImplSearchRequestor extends SearchRequestor {
+			String prefix;
+			LinkedHashSet<String> filter;
+			public List<IType> types = new ArrayList<>();
+			public ImplSearchRequestor(char[] prefixToken, LinkedHashSet<String> filter) {
+				this.prefix = (prefixToken == CharOperation.ALL_PREFIX) ? null : new String(prefixToken);
+				this.filter = filter;
+			}
+			@Override
+			public void acceptSearchMatch(SearchMatch match) throws CoreException {
+			//	checkCancel();
+				IJavaElement element = ((IJavaElement) match.getElement());
+				if (element.getElementType() == IJavaElement.TYPE) {
+					IType type = (IType) element;
+					if (this.prefix != null) {
+						String fullTypeName = type.getPackageFragment().getElementName();
+						if (fullTypeName != null) {
+							fullTypeName = fullTypeName.concat(".").concat(type.getElementName()); //$NON-NLS-1$
+						} else {
+							fullTypeName = type.getElementName();
+						}
+						if (this.filter.contains(fullTypeName)) return;
+						if (!(fullTypeName.startsWith(this.prefix) || type.getElementName().startsWith(this.prefix)))
+							return;
+					}
+					this.types.add(type);
+				}
+			}
+		}
+		try {
+			LinkedHashSet<String> existingImpl = new LinkedHashSet<>();
+			char[][] theInterfaceName = theInterface.getTypeName();
+			// filter out existing implementations of the same interfaces
+			for (int i = 0, l = this.moduleDeclaration.servicesCount; i < l; ++i) {
+				if (i == stmtIndex) continue;
+				ProvidesStatement prevProvides = this.moduleDeclaration.services[i];
+				if (!CharOperation.equals(theInterfaceName, prevProvides.serviceInterface.getTypeName())) continue;
+				TypeReference[] prevImpls = prevProvides.implementations;
+				for (TypeReference prevImpl : prevImpls) {
+					char[][] typeName = prevImpl.getTypeName();
+					if (typeName == CharOperation.NO_CHAR_CHAR) continue;
+					existingImpl.add(CharOperation.toString(typeName));
+				}
+			}
+			// use search infrastructure - faster than using model
+			ImplSearchRequestor searchRequestor = new ImplSearchRequestor(this.completionToken, existingImpl);
+			new SearchEngine(this.owner == null ? null : JavaModelManager.getJavaModelManager().getWorkingCopies(this.owner, true/*add primary WCs*/)).search(
+					pattern,
+					new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()},
+					searchScope,
+					searchRequestor,
+					null
+					);
+			for (IType type : searchRequestor.types) {
+				String pkg = type.getPackageFragment().getElementName();
+				String name = type.getElementName();
+				this.acceptType(pkg.toCharArray(), name.toCharArray(), CharOperation.NO_CHAR_CHAR, type.getFlags(), null);
+				acceptTypes(scope);
+			}
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		if(!this.requestor.isIgnored(CompletionProposal.PACKAGE_REF)) {
+			checkCancel();
+			findPackagesInCurrentModule();
+		}
+	}
+
 	private char[][] findVariableFromUnresolvedReference(LocalDeclaration variable, BlockScope scope, final char[][] discouragedNames) {
 		final TypeReference type = variable.type;
 		if(type != null &&
@@ -11539,6 +12087,7 @@
 
 			UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor nameRequestor =
 				new UnresolvedReferenceNameFinder.UnresolvedReferenceNameRequestor() {
+					@Override
 					public void acceptName(char[] name) {
 						int relevance = computeBaseRelevance();
 						relevance += computeRelevanceForInterestingProposal();
@@ -11685,20 +12234,24 @@
 				}
 			}
 
+			@Override
 			public void acceptNameWithoutPrefixAndSuffix(char[] name,int reusedCharacters) {
 				accept(name, 0, reusedCharacters);
 			}
 
+			@Override
 			public void acceptNameWithPrefix(char[] name, boolean isFirstPrefix, int reusedCharacters) {
 				accept(name, isFirstPrefix ? R_NAME_FIRST_PREFIX :  R_NAME_PREFIX, reusedCharacters);
 			}
 
+			@Override
 			public void acceptNameWithPrefixAndSuffix(char[] name, boolean isFirstPrefix, boolean isFirstSuffix, int reusedCharacters) {
 				accept(
 						name,
 						(isFirstPrefix ? R_NAME_FIRST_PREFIX : R_NAME_PREFIX) + (isFirstSuffix ? R_NAME_FIRST_SUFFIX : R_NAME_SUFFIX),
 						reusedCharacters);
 			}
+			@Override
 			public void acceptNameWithSuffix(char[] name, boolean isFirstSuffix, int reusedCharacters) {
 				accept(name, isFirstSuffix ? R_NAME_FIRST_SUFFIX : R_NAME_SUFFIX, reusedCharacters);
 			}
@@ -11854,7 +12407,7 @@
 								continue next;
 							
 							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=328674
-							if (local.declaration.initialization != null) {
+							if (local.declaration.initialization != null && !local.declaration.type.isTypeNameVar(null)) {
 								// proposal being asked inside field's initialization. Don't propose this field.
 								continue next;
 							}
@@ -12192,6 +12745,7 @@
 		return this.noCacheNameEnvironment;
 	}
 
+	@Override
 	public AssistParser getParser() {
 
 		return this.parser;
@@ -12220,6 +12774,11 @@
 			if(target != 0 && (target & TagBits.AnnotationForPackage) == 0) {
 				return false;
 			}
+		} else if (this.targetedElement == TagBits.AnnotationForModule) {
+			long target = typeBinding.getAnnotationTagBits() & TagBits.AnnotationTargetMASK;
+			if(target != 0 && (target & TagBits.AnnotationForModule) == 0) {
+				return false;
+			}
 		} else if ((this.targetedElement & (TagBits.AnnotationForType | TagBits.AnnotationForTypeUse)) != 0) {
 			if (scope.parent != null &&
 					scope.parent.parent != null &&
@@ -12453,6 +13012,7 @@
 		this.offset = prefix.length();
 
 		String encoding = this.compilerOptions.defaultEncoding;
+		@SuppressWarnings("deprecation")
 		BasicCompilationUnit fakeUnit = new BasicCompilationUnit(
 			fakeSource,
 			null,
@@ -12512,6 +13072,12 @@
 			case CompletionProposal.METHOD_REF_WITH_CASTED_RECEIVER :
 				buffer.append("METHOD_REF_WITH_CASTED_RECEIVER"); //$NON-NLS-1$
 				break;
+			case CompletionProposal.MODULE_DECLARATION :
+				buffer.append("MODULE_DECLARATION"); //$NON-NLS-1$
+				break;
+			case CompletionProposal.MODULE_REF :
+				buffer.append("MODULE_REF"); //$NON-NLS-1$
+				break;
 			case CompletionProposal.PACKAGE_REF :
 				buffer.append("PACKAGE_REF"); //$NON-NLS-1$
 				break;
@@ -13023,6 +13589,7 @@
 		super.reset(false);
 		this.validPackageNames = new SimpleSetOfCharArray(10);
 		this.invalidPackageNames = new SimpleSetOfCharArray(1);
+		this.knownModules = new HashtableOfObject(10);
 		this.knownPkgs = new HashtableOfObject(10);
 		this.knownTypes = new HashtableOfObject(10);
 		if (this.noCacheNameEnvironment != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.java
index 7f8cfa0..4394a1e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionRequestorWrapper.java
@@ -30,6 +30,7 @@
 		this.requestor = requestor;
 	}
 
+	@Override
 	public void accept(CompletionProposal proposal) {
 		InternalCompletionProposal internalCompletionProposal = (InternalCompletionProposal) proposal;
 		switch(internalCompletionProposal.getKind()) {
@@ -312,6 +313,7 @@
 		}
 	}
 
+	@Override
 	public void completionFailure(IProblem problem) {
 		this.requestor.acceptError(problem);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.java
index 442ab1c..9b8fb56 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/CompletionUnitStructureRequestor.java
@@ -79,10 +79,12 @@
 		this.elementWithProblemCache = elementWithProblemCache;
 	}
 
+	@Override
 	protected Annotation createAnnotation(JavaElement parent, String name) {
 		return new AssistAnnotation(parent, name, this.newElements);
 	}
 
+	@Override
 	protected SourceField createField(JavaElement parent, FieldInfo fieldInfo) {
 		String fieldName = JavaModelManager.getJavaModelManager().intern(new String(fieldInfo.name));
 		AssistSourceField field = new AssistSourceField(parent, fieldName, this.bindingCache, this.newElements);
@@ -95,18 +97,22 @@
 		return field;
 	}
 
+	@Override
 	protected ImportContainer createImportContainer(ICompilationUnit parent) {
 		return new AssistImportContainer((CompilationUnit)parent, this.newElements);
 	}
 
+	@Override
 	protected ImportDeclaration createImportDeclaration(ImportContainer parent, String name, boolean onDemand) {
 		return new AssistImportDeclaration(parent, name, onDemand, this.newElements);
 	}
 
+	@Override
 	protected Initializer createInitializer(JavaElement parent) {
 		return new AssistInitializer(parent, 1, this.bindingCache, this.newElements);
 	}
 
+	@Override
 	protected SourceMethod createMethodHandle(JavaElement parent, MethodInfo methodInfo) {
 		String selector = JavaModelManager.getJavaModelManager().intern(new String(methodInfo.name));
 		String[] parameterTypeSigs = convertTypeNamesToSigs(methodInfo.parameterTypes);
@@ -120,10 +126,12 @@
 		return method;
 	}
 
+	@Override
 	protected PackageDeclaration createPackageDeclaration(JavaElement parent, String name) {
 		return new AssistPackageDeclaration((CompilationUnit) parent, name, this.newElements);
 	}
 
+	@Override
 	protected SourceType createTypeHandle(JavaElement parent, TypeInfo typeInfo) {
 		String nameString= new String(typeInfo.name);
 		AssistSourceType type = new AssistSourceType(parent, nameString, this.bindingCache, this.newElements);
@@ -136,10 +144,12 @@
 		return type;
 	}
 
+	@Override
 	protected TypeParameter createTypeParameter(JavaElement parent, String name) {
 		return new AssistTypeParameter(parent, name, this.newElements);
 	}
 
+	@Override
 	protected IAnnotation acceptAnnotation(
 			org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation annotation,
 			AnnotatableInfo parentInfo,
@@ -153,6 +163,7 @@
 		return super.acceptAnnotation(annotation, parentInfo, parentHandle);
 	}
 
+	@Override
 	protected Object getMemberValue(
 			org.aspectj.org.eclipse.jdt.internal.core.MemberValuePair memberValuePair,
 			Expression expression) {
@@ -165,6 +176,7 @@
 		}
 		return super.getMemberValue(memberValuePair, expression);
 	}
+	@Override
 	protected IMemberValuePair[] getMemberValuePairs(MemberValuePair[] memberValuePairs) {
 		int membersLength = memberValuePairs.length;
 		int membersCount = 0;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.java
index 209716b..fa85125 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISearchRequestor.java
@@ -90,4 +90,6 @@
 	 *    The default package is represented by an empty array.
 	 */
 	public void acceptPackage(char[] packageName);
+	
+	public void acceptModule(char[] moduleName);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.java
index 8dc0215..b86fbe5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ISelectionRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -52,6 +52,20 @@
 		int end);
 
 	/**
+	 * Code assist notification of a module selection.
+	 *
+	 * @param moduleName name of the module
+	 * @param uniqueKey unique key of this module
+	 * @param start Start of the selection
+	 * @param end End of the selection
+	 */
+	void acceptModule(
+			char[] moduleName,
+			char[] uniqueKey,
+			int start,
+			int end);
+
+	/**
 	 * Code assist notification of a compilation error detected during selection.
 	 *  @param error CategorizedProblem
 	 *      Only problems which are categorized as errors are notified to the requestor,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.java
index 920413c..a640f79 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionContext.java
@@ -11,14 +11,8 @@
 package org.aspectj.org.eclipse.jdt.internal.codeassist;
 
 import org.aspectj.org.eclipse.jdt.core.CompletionContext;
-import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
-import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
-import org.aspectj.org.eclipse.jdt.core.ILocalVariable;
-import org.aspectj.org.eclipse.jdt.core.IMember;
-import org.aspectj.org.eclipse.jdt.core.IMethod;
 import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
-import org.aspectj.org.eclipse.jdt.core.Signature;
 import org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionOnJavadoc;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.complete.CompletionParser;
@@ -122,28 +116,7 @@
 		}
 	}
 
-	/**
-	 * Returns the innermost enclosing Java element which contains the completion location or <code>null</code> if this element cannot be computed.
-	 * The returned Java element and all Java elements in the same compilation unit which can be navigated to from the returned Java element are special Java elements:
-	 * <ul>
-	 * <li>they are based on the current content of the compilation unit's buffer, they are not the result of a reconcile operation</li>
-	 * <li>they are not updated if the buffer changes.</li>
-	 * <li>they do not contain local types which are not visible from the completion location.</li>
-	 * <li>they do not give information about categories. {@link IMember#getCategories()} will return an empty array</li>
-	 * </ul>
-	 *
-	 * Reasons for returning <code>null</code> include:
-	 * <ul>
-	 * <li>the compilation unit no longer exists</li>
-	 * <li>the completion occurred in a binary type. However this restriction might be relaxed in the future.</li>
-	 * </ul>
-	 *
-	 * @return the innermost enclosing Java element which contains the completion location or <code>null</code> if this element cannot be computed.
-	 *
-	 * @exception UnsupportedOperationException if the context is not an extended context
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public IJavaElement getEnclosingElement() {
 		if (!this.isExtended) throw new UnsupportedOperationException("Operation only supported in extended context"); //$NON-NLS-1$
 	
@@ -152,170 +125,48 @@
 		return this.extendedContext.getEnclosingElement();
 	}
 
-	/**
-	 * Return keys of expected types of a potential completion proposal at the completion position.
-	 *
-	 * It's not mandatory to a completion proposal to respect this expectation.
-	 *
-	 * @return keys of expected types of a potential completion proposal at the completion position or
-	 * <code>null</code> if there is no expected types.
-	 *
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTParser#createASTs(ICompilationUnit[], String[], org.aspectj.org.eclipse.jdt.core.dom.ASTRequestor, org.eclipse.core.runtime.IProgressMonitor)
-	 */
+	@Override
 	public char[][] getExpectedTypesKeys() {
 		return this.expectedTypesKeys;
 	}
 
-	/**
-	 * Return signatures of expected types of a potential completion proposal at the completion position.
-	 *
-	 * It's not mandatory to a completion proposal to respect this expectation.
-	 *
-	 * @return signatures expected types of a potential completion proposal at the completion position or
-	 * <code>null</code> if there is no expected types.
-	 *
-	 * @see Signature
-	 */
+	@Override
 	public char[][] getExpectedTypesSignatures() {
 		return this.expectedTypesSignatures;
 	}
 
-	/**
-	 * Returns the offset position in the source file buffer
-	 * after which code assist is requested.
-	 *
-	 * @return offset position in the source file buffer
-	 * @since 3.2
-	 */
+	@Override
 	public int getOffset() {
 		return this.offset;
 	}
 
-	/**
-	 * Returns the completed token.
-	 * This token is either the identifier or Java language keyword
-	 * or the string literal under, immediately preceding,
-	 * the original request offset. If the original request offset
-	 * is not within or immediately after an identifier or keyword or
-	 * a string literal then the returned value is <code>null</code>.
-	 *
-	 * @return completed token or <code>null</code>
-	 * @since 3.2
-	 */
+	@Override
 	public char[] getToken() {
 		return this.token;
 	}
 
-	/**
-	 * Returns the character index of the end (exclusive) of the subrange
-	 * in the source file buffer containing the
-	 * relevant token. When there is no relevant token, the
-	 * range is empty
-	 * (<code>getTokenEnd() == getTokenStart() - 1</code>).
-	 *
-	 * @return character index of token end position (exclusive)
-	 * @since 3.2
-	 */
 	// TODO (david) https://bugs.eclipse.org/bugs/show_bug.cgi?id=132558
+	@Override
 	public int getTokenEnd() {
 		return this.tokenEnd;
 	}
 
-	/**
-	 * Returns the kind of completion token being proposed.
-	 * <p>
-	 * The set of different kinds of completion token is
-	 * expected to change over time. It is strongly recommended
-	 * that clients do <b>not</b> assume that the kind is one of the
-	 * ones they know about, and code defensively for the
-	 * possibility of unexpected future growth.
-	 * </p>
-	 *
-	 * @return the kind; one of the kind constants declared on
-	 * this class whose name starts with <code>TOKEN_KIND</code>,
-	 * or possibly a kind unknown to the caller
-	 * @since 3.2
-	 */
+	@Override
 	public int getTokenKind() {
 		return this.tokenKind;
 	}
 
-	/**
-	 * Returns the location of completion token being proposed.
-	 * The returned location is a bit mask which can contain some values
-	 * of the constants declared on this class whose name starts with <code>TL</code>,
-	 * or possibly values unknown to the caller.
-	 *
-	 * <p>
-	 * The set of different location values is expected to change over time.
-	 * It is strongly recommended that clients do <b>not</b> assume that
-	 * the location contains only known value, and code defensively for
-	 * the possibility of unexpected future growth.
-	 * </p>
-	 *
-	 * @return the location
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public int getTokenLocation() {
 		return this.tokenLocation;
 	}
 
-	/**
-	 * Returns the character index of the start of the
-	 * subrange in the source file buffer containing the
-	 * relevant token being completed. This
-	 * token is either the identifier or Java language keyword
-	 * under, or immediately preceding, the original request
-	 * offset. If the original request offset is not within
-	 * or immediately after an identifier or keyword, then the
-	 * position returned is original request offset and the
-	 * token range is empty.
-	 *
-	 * @return character index of token start position (inclusive)
-	 * @since 3.2
-	 */
+	@Override
 	public int getTokenStart() {
 		return this.tokenStart;
 	}
 
-	/**
-	 * Return the elements which are visible from the completion location and which can be assigned to the given type.
-	 * An element is assignable if its type can be assigned to a variable
-	 * of the given type, as specified in section 5.2 of <em>The Java Language
-	 * Specification, Third Edition</em> (JLS3).
-	 * A visible element is either:
-	 * <ul>
-	 * <li>a {@link ILocalVariable} - the element type is {@link ILocalVariable#getTypeSignature()}</li>
-	 * <li>a {@link IField} - the element type is {@link IField#getTypeSignature()}</li>
-	 * <li>a {@link IMethod} - the element type is {@link IMethod#getReturnType()}</li>
-	 * </ul>
-	 *
-	 * Returned elements defined in the completed compilation unit are special Java elements:
-	 * <ul>
-	 * <li>they are based on the current content of the compilation unit's buffer, they are not the result of a reconcile operation</li>
-	 * <li>they are not updated if the buffer changes.</li>
-	 * <li>they do not contain local types which are not visible from the completion location.</li>
-	 * <li>they do not give information about categories. {@link IMember#getCategories()} will return an empty array</li>
-	 * </ul>
-	 *
-	 * Note the array can be empty if:
-	 * <ul>
-	 * <li>the compilation unit no longer exists</li>
-	 * <li>the completion occurred in a binary type. However this restriction might be relaxed in the future.</li>
-	 * </ul>
-	 *
-	 * @param typeSignature elements which can be assigned to this type are returned.
-	 * 		If <code>null</code> there is no constraint on the type of the returned elements.
-	 *
-	 * @return elements which are visible from the completion location and which can be assigned to the given type.
-	 *
-	 * @exception UnsupportedOperationException if the context is not an extended context
-	 *
-	 * @see #isExtended()
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public IJavaElement[] getVisibleElements(String typeSignature) {
 		if (!this.isExtended) throw new UnsupportedOperationException("Operation only supported in extended context"); //$NON-NLS-1$
 	
@@ -324,53 +175,22 @@
 		return this.extendedContext.getVisibleElements(typeSignature);
 	}
 
-	/**
-	 * Returns whether this completion context is an extended context.
-	 * Some methods of this context can be used only if this context is an extended context but an extended context consumes more memory.
-	 *
-	 * @return <code>true</code> if this completion context is an extended context.
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public boolean isExtended() {
 		return this.isExtended;
 	}
 
-	/**
-	 * Tell user whether completion takes place in a javadoc comment or not.
-	 *
-	 * @return boolean true if completion takes place in a javadoc comment, false otherwise.
-	 * @since 3.2
-	 */
+	@Override
 	public boolean isInJavadoc() {
 		return this.javadoc != 0;
 	}
 
-	/**
-	 * Tell user whether completion takes place in a formal reference of a javadoc tag or not.
-	 * Tags with formal reference are:
-	 * <ul>
-	 * 	<li>&#64;see</li>
-	 * 	<li>&#64;throws</li>
-	 * 	<li>&#64;exception</li>
-	 * 	<li>{&#64;link Object}</li>
-	 * 	<li>{&#64;linkplain Object}</li>
-	 * 	<li>{&#64;value} when compiler compliance is set at leats to 1.5</li>
-	 * </ul>
-	 *
-	 * @return boolean true if completion takes place in formal reference of a javadoc tag, false otherwise.
-	 * @since 3.2
-	 */
+	@Override
 	public boolean isInJavadocFormalReference() {
 		return (this.javadoc & CompletionOnJavadoc.FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Tell user whether completion takes place in text area of a javadoc comment or not.
-	 *
-	 * @return boolean true if completion takes place in a text area of a javadoc comment, false otherwise.
-	 * @since 3.2
-	 */
+	@Override
 	public boolean isInJavadocText() {
 		return (this.javadoc & CompletionOnJavadoc.TEXT) != 0;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.java
index 8c953ef..6a6a7e6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalCompletionProposal.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2015 IBM Corporation and others.
+ * Copyright (c) 2004, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,11 +15,8 @@
 import org.aspectj.org.eclipse.jdt.core.CompletionContext;
 import org.aspectj.org.eclipse.jdt.core.CompletionFlags;
 import org.aspectj.org.eclipse.jdt.core.CompletionProposal;
-import org.aspectj.org.eclipse.jdt.core.CompletionRequestor;
 import org.aspectj.org.eclipse.jdt.core.Flags;
 import org.aspectj.org.eclipse.jdt.core.IAccessRule;
-import org.aspectj.org.eclipse.jdt.core.ICodeAssist;
-import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
@@ -36,6 +33,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.JavaElement;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.NameLookup;
+import org.aspectj.org.eclipse.jdt.internal.core.NamedMember;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceMapper;
 
 /**
@@ -50,6 +48,7 @@
 
 	protected char[] declarationPackageName;
 	protected char[] declarationTypeName;
+	protected char[] moduleName;
 	protected char[] packageName;
 	protected char[] typeName;
 	protected char[][] parameterPackageNames;
@@ -243,7 +242,7 @@
 								IBinaryType info = (IBinaryType) ((BinaryType) type).getElementInfo();
 								char[] source = mapper.findSource(type, info);
 								if (source != null){
-									mapper.mapSource(type, source, info);
+									mapper.mapSource((NamedMember) type, source, info);
 								}
 								paramNames = mapper.getMethodParameterNames(method);
 							}
@@ -377,6 +376,10 @@
 		return JavaModelManager.getJavaModelManager().getOpenableCacheSize() / 10;
 	}
 
+	protected char[] getModuleName() {
+		return this.moduleName;
+	}
+
 	protected char[] getPackageName() {
 		return this.packageName;
 	}
@@ -402,6 +405,10 @@
 		this.declarationTypeName = declarationTypeName;
 	}
 
+	protected void setModuleName(char[] moduleName) {
+		this.moduleName = moduleName;
+	}
+
 	protected void setPackageName(char[] packageName) {
 		this.packageName = packageName;
 	}
@@ -458,134 +465,38 @@
 		this.completionLocation = completionLocation;
 	}
 
-	/**
-	 * Returns the completion flags relevant in the context, or
-	 * <code>CompletionFlags.Default</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>FIELD_IMPORT</code> - completion flags
-	 * of the attribute that is referenced. Completion flags for
-	 * this proposal kind can only include <code>CompletionFlags.StaticImport</code></li>
-	 * <li><code>METHOD_IMPORT</code> - completion flags
-	 * of the attribute that is referenced. Completion flags for
-	 * this proposal kind can only include <code>CompletionFlags.StaticImport</code></li>
-	 * <li><code>TYPE_IMPORT</code> - completion flags
-	 * of the attribute that is referenced. Completion flags for
-	 * this proposal kind can only include <code>CompletionFlags.StaticImport</code></li>
-	 * </ul>
-	 * For other kinds of completion proposals, this method returns
-	 * <code>CompletionFlags.Default</code>.
-	 * </p>
-	 *
-	 * @return the completion flags, or
-	 * <code>CompletionFlags.Default</code> if none
-	 * @see CompletionFlags
-	 *
-	 * @since 3.3
-	 */
+	@Override
 	public int getAdditionalFlags() {
 		return this.additionalFlags;
 	}
 
-	/**
-	 * Sets the completion flags relevant in the context.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param additionalFlags the completion flags, or
-	 * <code>CompletionFlags.Default</code> if none
-	 *
-	 * @since 3.3
-	 */
+	@Override
 	public void setAdditionalFlags(int additionalFlags) {
 		this.additionalFlags = additionalFlags;
 	}
 
-	/**
-	 * Returns the kind of completion being proposed.
-	 * <p>
-	 * The set of different kinds of completion proposals is
-	 * expected to change over time. It is strongly recommended
-	 * that clients do <b>not</b> assume that the kind is one of the
-	 * ones they know about, and code defensively for the
-	 * possibility of unexpected future growth.
-	 * </p>
-	 *
-	 * @return the kind; one of the kind constants
-	 * declared on this class, or possibly a kind unknown
-	 * to the caller
-	 */
+	@Override
 	public int getKind() {
 		return this.completionKind;
 	}
 
-	/**
-	 * Returns the character index in the source file buffer
-	 * where source completion was requested (the
-	 * <code>offset</code> parameter to
-	 * <code>ICodeAssist.codeComplete</code> minus one).
-	 *
-	 * @return character index in source file buffer
-	 * @see ICodeAssist#codeComplete(int,CompletionRequestor)
-	 */
 	// TODO (david) https://bugs.eclipse.org/bugs/show_bug.cgi?id=132558
+	@Override
 	public int getCompletionLocation() {
 		return this.completionLocation;
 	}
 
-	/**
-	 * Returns the character index of the start of the
-	 * subrange in the source file buffer containing the
-	 * relevant token being completed. This
-	 * token is either the identifier or Java language keyword
-	 * under, or immediately preceding, the original request
-	 * offset. If the original request offset is not within
-	 * or immediately after an identifier or keyword, then the
-	 * position returned is original request offset and the
-	 * token range is empty.
-	 *
-	 * @return character index of token start position (inclusive)
-	 */
+	@Override
 	public int getTokenStart() {
 		return this.tokenStart;
 	}
 
-	/**
-	 * Returns the character index of the end (exclusive) of the subrange
-	 * in the source file buffer containing the
-	 * relevant token. When there is no relevant token, the
-	 * range is empty
-	 * (<code>getEndToken() == getStartToken()</code>).
-	 *
-	 * @return character index of token end position (exclusive)
-	 */
+	@Override
 	public int getTokenEnd() {
 		return this.tokenEnd;
 	}
 
-	/**
-	 * Sets the character indices of the subrange in the
-	 * source file buffer containing the relevant token being
-	 * completed. This token is either the identifier or
-	 * Java language keyword under, or immediately preceding,
-	 * the original request offset. If the original request
-	 * offset is not within or immediately after an identifier
-	 * or keyword, then the source range begins at original
-	 * request offset and is empty.
-	 * <p>
-	 * If not set, defaults to empty subrange at [0,0).
-	 * </p>
-	 *
-	 * @param startIndex character index of token start position (inclusive)
-	 * @param endIndex character index of token end position (exclusive)
-	 */
+	@Override
 	public void setTokenRange(int startIndex, int endIndex) {
 		if (startIndex < 0 || endIndex < startIndex) {
 			throw new IllegalArgumentException();
@@ -594,17 +505,7 @@
 		this.tokenEnd = endIndex;
 	}
 
-	/**
-	 * Returns the proposed sequence of characters to insert into the
-	 * source file buffer, replacing the characters at the specified
-	 * source range. The string can be arbitrary; for example, it might
-	 * include not only the name of a method but a set of parentheses.
-	 * <p>
-	 * The client must not modify the array returned.
-	 * </p>
-	 *
-	 * @return the completion string
-	 */
+	@Override
 	public char[] getCompletion() {
 		if(this.completionKind == METHOD_DECLARATION) {
 			findParameterNames(null);
@@ -639,82 +540,22 @@
 		return this.completion;
 	}
 
-	/**
-	 * Sets the proposed sequence of characters to insert into the
-	 * source file buffer, replacing the characters at the specified
-	 * source range. The string can be arbitrary; for example, it might
-	 * include not only the name of a method but a set of parentheses.
-	 * <p>
-	 * If not set, defaults to an empty character array.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param completion the completion string
-	 */
+	@Override
 	public void setCompletion(char[] completion) {
 		this.completion = completion;
 	}
 
-	/**
-	 * Returns the character index of the start of the
-	 * subrange in the source file buffer to be replaced
-	 * by the completion string. If the subrange is empty
-	 * (<code>getReplaceEnd() == getReplaceStart()</code>),
-	 * the completion string is to be inserted at this
-	 * index.
-	 * <p>
-	 * Note that while the token subrange is precisely
-	 * specified, the replacement range is loosely
-	 * constrained and may not bear any direct relation
-	 * to the original request offset. For example,
-	 * it would be possible for a type completion to
-	 * propose inserting an import declaration at the
-	 * top of the compilation unit; or the completion
-	 * might include trailing parentheses and
-	 * punctuation for a method completion.
-	 * </p>
-	 *
-	 * @return replacement start position (inclusive)
-	 */
+	@Override
 	public int getReplaceStart() {
 		return this.replaceStart;
 	}
 
-	/**
-	 * Returns the character index of the end of the
-	 * subrange in the source file buffer to be replaced
-	 * by the completion string. If the subrange is empty
-	 * (<code>getReplaceEnd() == getReplaceStart()</code>),
-	 * the completion string is to be inserted at this
-	 * index.
-	 *
-	 * @return replacement end position (exclusive)
-	 */
+	@Override
 	public int getReplaceEnd() {
 		return this.replaceEnd;
 	}
 
-	/**
-	 * Sets the character indices of the subrange in the
-	 * source file buffer to be replaced by the completion
-	 * string. If the subrange is empty
-	 * (<code>startIndex == endIndex</code>),
-	 * the completion string is to be inserted at this
-	 * index.
-	 * <p>
-	 * If not set, defaults to empty subrange at [0,0).
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param startIndex character index of replacement start position (inclusive)
-	 * @param endIndex character index of replacement end position (exclusive)
-	 */
+	@Override
 	public void setReplaceRange(int startIndex, int endIndex) {
 		if (startIndex < 0 || endIndex < startIndex) {
 			throw new IllegalArgumentException();
@@ -723,27 +564,12 @@
 		this.replaceEnd = endIndex;
 	}
 
-	/**
-	 * Returns the relative relevance rating of this proposal.
-	 *
-	 * @return relevance rating of this proposal; ratings are positive; higher means better
-	 */
+	@Override
 	public int getRelevance() {
 		return this.relevance;
 	}
 
-	/**
-	 * Sets the relative relevance rating of this proposal.
-	 * <p>
-	 * If not set, defaults to the lowest possible rating (1).
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param rating relevance rating of this proposal; ratings are positive; higher means better
-	 */
+	@Override
 	public void setRelevance(int rating) {
 		if (rating <= 0) {
 			throw new IllegalArgumentException();
@@ -751,167 +577,32 @@
 		this.relevance = rating;
 	}
 
-	/**
-	 * Returns the type signature or package name of the relevant
-	 * declaration in the context, or <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 *  <li><code>ANNOTATION_ATTRIBUT_REF</code> - type signature
-	 * of the annotation that declares the attribute that is referenced</li>
-	 * <li><code>ANONYMOUS_CLASS_DECLARATION</code> - type signature
-	 * of the type that is being subclassed or implemented</li>
-	 * 	<li><code>FIELD_IMPORT</code> - type signature
-	 * of the type that declares the field that is imported</li>
-	 *  <li><code>FIELD_REF</code> - type signature
-	 * of the type that declares the field that is referenced</li>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - type signature
-	 * of the type that declares the field that is referenced</li>
-	 * 	<li><code>METHOD_IMPORT</code> - type signature
-	 * of the type that declares the method that is imported</li>
-	 *  <li><code>METHOD_REF</code> - type signature
-	 * of the type that declares the method that is referenced</li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - type signature
-	 * of the type that declares the method that is referenced</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - type signature
-	 * of the type that declares the method that is being
-	 * implemented or overridden</li>
-	 * 	<li><code>PACKAGE_REF</code> - dot-based package
-	 * name of the package that is referenced</li>
-	 * 	<li><code>TYPE_IMPORT</code> - dot-based package
-	 * name of the package containing the type that is imported</li>
-	 *  <li><code>TYPE_REF</code> - dot-based package
-	 * name of the package containing the type that is referenced</li>
-	 *  <li><code>POTENTIAL_METHOD_DECLARATION</code> - type signature
-	 * of the type that declares the method that is being created</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return a type signature or a package name (depending
-	 * on the kind of completion), or <code>null</code> if none
-	 * @see Signature
-	 */
+	@Override
 	public char[] getDeclarationSignature() {
 		return this.declarationSignature;
 	}
 
-	/**
-	 * Returns the key of the relevant
-	 * declaration in the context, or <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>ANONYMOUS_CLASS_DECLARATION</code> - key
-	 * of the type that is being subclassed or implemented</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - key
-	 * of the type that declares the method that is being
-	 * implemented or overridden</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return a key, or <code>null</code> if none
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTParser#createASTs(ICompilationUnit[], String[], org.aspectj.org.eclipse.jdt.core.dom.ASTRequestor, IProgressMonitor)
-     * @since 3.1
-	 */
+	@Override
 	public char[] getDeclarationKey() {
 		return this.declarationKey;
 	}
 
-	/**
-	 * Sets the type or package signature of the relevant
-	 * declaration in the context, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param signature the type or package signature, or
-	 * <code>null</code> if none
-	 */
+	@Override
 	public void setDeclarationSignature(char[] signature) {
 		this.declarationSignature = signature;
 	}
 
-	/**
-	 * Sets the type or package key of the relevant
-	 * declaration in the context, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param key the type or package key, or
-	 * <code>null</code> if none
-     * @since 3.1
-	 */
+	@Override
 	public void setDeclarationKey(char[] key) {
 		this.declarationKey = key;
 	}
 
-	/**
-	 * Returns the simple name of the method, field,
-	 * member, or variable relevant in the context, or
-	 * <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 *  <li><code>ANNOTATION_ATTRIBUT_REF</code> - the name of the attribute</li>
-	 * 	<li><code>FIELD_IMPORT</code> - the name of the field</li>
-	 *  <li><code>FIELD_REF</code> - the name of the field</li>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - the name of the field</li>
-	 * 	<li><code>KEYWORD</code> - the keyword</li>
-	 * 	<li><code>LABEL_REF</code> - the name of the label</li>
-	 * 	<li><code>LOCAL_VARIABLE_REF</code> - the name of the local variable</li>
-	 * 	<li><code>METHOD_IMPORT</code> - the name of the method</li>
-	 *  <li><code>METHOD_REF</code> - the name of the method (the type simple name for constructor)</li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - the name of the method</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - the name of the method (the type simple name for constructor)</li>
-	 * 	<li><code>VARIABLE_DECLARATION</code> - the name of the variable</li>
-	 *  <li><code>POTENTIAL_METHOD_DECLARATION</code> - the name of the method</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return the keyword, field, method, local variable, or member
-	 * name, or <code>null</code> if none
-	 */
+	@Override
 	public char[] getName() {
 		return this.name;
 	}
 
-
-	/**
-	 * Sets the simple name of the method (type simple name for constructor), field,
-	 * member, or variable relevant in the context, or
-	 * <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param name the keyword, field, method, local variable,
-	 * or member name, or <code>null</code> if none
-	 */
+	@Override
 	public void setName(char[] name) {
 		this.name = name;
 	}
@@ -955,76 +646,12 @@
 		this.binding = binding;
 	}
 
-	/**
-	 * Returns the signature of the method or type
-	 * relevant in the context, or <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>ANNOTATION_ATTRIBUT_REF</code> - the type signature
-	 * of the referenced attribute's type</li>
-	 * <li><code>ANONYMOUS_CLASS_DECLARATION</code> - method signature
-	 * of the constructor that is being invoked</li>
-	 * 	<li><code>FIELD_IMPORT</code> - the type signature
-	 * of the referenced field's type</li>
-	 *  <li><code>FIELD_REF</code> - the type signature
-	 * of the referenced field's type</li>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - the type signature
-	 * of the referenced field's type</li>
-	 * 	<li><code>LOCAL_VARIABLE_REF</code> - the type signature
-	 * of the referenced local variable's type</li>
-	 * 	<li><code>METHOD_IMPORT</code> - method signature
-	 * of the method that is imported</li>
-	 *  <li><code>METHOD_REF</code> - method signature
-	 * of the method that is referenced</li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - method signature
-	 * of the method that is referenced</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - method signature
-	 * of the method that is being implemented or overridden</li>
-	 * 	<li><code>TYPE_IMPORT</code> - type signature
-	 * of the type that is imported</li>
-	 * 	<li><code>TYPE_REF</code> - type signature
-	 * of the type that is referenced</li>
-	 * 	<li><code>VARIABLE_DECLARATION</code> - the type signature
-	 * of the type of the variable being declared</li>
-	 *  <li><code>POTENTIAL_METHOD_DECLARATION</code> - method signature
-	 * of the method that is being created</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return the signature, or <code>null</code> if none
-	 * @see Signature
-	 */
+	@Override
 	public char[] getSignature() {
 		return this.signature;
 	}
 
-	/**
-	 * Returns the key relevant in the context,
-	 * or <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>ANONYMOUS_CLASS_DECLARATION</code> - method key
-	 * of the constructor that is being invoked, or <code>null</code> if
-	 * the declaring type is an interface</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - method key
-	 * of the method that is being implemented or overridden</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return the key, or <code>null</code> if none
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTParser#createASTs(ICompilationUnit[], String[], org.aspectj.org.eclipse.jdt.core.dom.ASTRequestor, IProgressMonitor)
-     * @since 3.1
-	 */
+	@Override
 	public char[] getKey() {
 		return this.key;
 	}
@@ -1234,120 +861,22 @@
 //		return this.parameterTypeNames;
 //	}
 
-	/**
-	 * Sets the signature of the method, field type, member type,
-	 * relevant in the context, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param signature the signature, or <code>null</code> if none
-	 */
+	@Override
 	public void setSignature(char[] signature) {
 		this.signature = signature;
 	}
 
-	/**
-	 * Sets the key of the method, field type, member type,
-	 * relevant in the context, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param key the key, or <code>null</code> if none
-     * @since 3.1
-	 */
+	@Override
 	public void setKey(char[] key) {
 		this.key = key;
 	}
 
-	/**
-	 * Returns the modifier flags relevant in the context, or
-	 * <code>Flags.AccDefault</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>ANNOTATION_ATTRIBUT_REF</code> - modifier flags
-	 * of the attribute that is referenced;
-	 * <li><code>ANONYMOUS_CLASS_DECLARATION</code> - modifier flags
-	 * of the constructor that is referenced</li>
-	 * 	<li><code>FIELD_IMPORT</code> - modifier flags
-	 * of the field that is imported.</li>
-	 *  <li><code>FIELD_REF</code> - modifier flags
-	 * of the field that is referenced;
-	 * <code>Flags.AccEnum</code> can be used to recognize
-	 * references to enum constants
-	 * </li>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - modifier flags
-	 * of the field that is referenced.
-	 * </li>
-	 * 	<li><code>KEYWORD</code> - modifier flag
-	 * corresponding to the modifier keyword</li>
-	 * 	<li><code>LOCAL_VARIABLE_REF</code> - modifier flags
-	 * of the local variable that is referenced</li>
-	 *  <li><code>METHOD_IMPORT</code> - modifier flags
-	 * of the method that is imported;
-	 *  </li>
-	 * 	<li><code>METHOD_REF</code> - modifier flags
-	 * of the method that is referenced;
-	 * <code>Flags.AccAnnotation</code> can be used to recognize
-	 * references to annotation type members
-	 * </li>
-	 * <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - modifier flags
-	 * of the method that is referenced.
-	 * </li>
-	 * <li><code>METHOD_DECLARATION</code> - modifier flags
-	 * for the method that is being implemented or overridden</li>
-	 * <li><code>TYPE_IMPORT</code> - modifier flags
-	 * of the type that is imported; <code>Flags.AccInterface</code>
-	 * can be used to recognize references to interfaces,
-	 * <code>Flags.AccEnum</code> enum types,
-	 * and <code>Flags.AccAnnotation</code> annotation types</li>
-	 * <li><code>TYPE_REF</code> - modifier flags
-	 * of the type that is referenced; <code>Flags.AccInterface</code>
-	 * can be used to recognize references to interfaces,
-	 * <code>Flags.AccEnum</code> enum types,
-	 * and <code>Flags.AccAnnotation</code> annotation types
-	 * </li>
-	 * 	<li><code>VARIABLE_DECLARATION</code> - modifier flags
-	 * for the variable being declared</li>
-	 * 	<li><code>POTENTIAL_METHOD_DECLARATION</code> - modifier flags
-	 * for the method that is being created</li>
-	 * </ul>
-	 * For other kinds of completion proposals, this method returns
-	 * <code>Flags.AccDefault</code>.
-	 * </p>
-	 *
-	 * @return the modifier flags, or
-	 * <code>Flags.AccDefault</code> if none
-	 * @see Flags
-	 */
+	@Override
 	public int getFlags() {
 		return this.flags;
 	}
 
-	/**
-	 * Sets the modifier flags relevant in the context.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param flags the modifier flags, or
-	 * <code>Flags.AccDefault</code> if none
-	 */
+	@Override
 	public void setFlags(int flags) {
 		this.flags = flags;
 	}
@@ -1356,96 +885,17 @@
 		this.hasNoParameterNamesFromIndex = hasNoParameterNamesFromIndex;
 	}
 
-	/**
-	 * Returns the required completion proposals.
-	 * The proposal can be apply only if these required completion proposals are also applied.
-	 * If the required proposal aren't applied the completion could create completion problems.
-	 *
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * 	<li><code>FIELD_REF</code> - The allowed required proposals for this kind are:
-	 *   <ul>
-	 *    <li><code>TYPE_REF</code></li>
-	 *    <li><code>TYPE_IMPORT</code></li>
-	 *    <li><code>FIELD_IMPORT</code></li>
-	 *   </ul>
-	 * </li>
-	 * 	<li><code>METHOD_REF</code> - The allowed required proposals for this kind are:
-	 *   <ul>
-	 *    <li><code>TYPE_REF</code></li>
-	 *    <li><code>TYPE_IMPORT</code></li>
-	 *    <li><code>METHOD_IMPORT</code></li>
-	 *   </ul>
-	 *  </li>
-	 * </li>
-	 * 	<li><code>TYPE_REF</code> - The allowed required proposals for this kind are:
-	 *   <ul>
-	 *    <li><code>TYPE_REF</code></li>
-	 *   </ul>
-	 *  </li>
-	 * </ul>
-	 * </p>
-	 * <p>
-	 * Other kinds of required proposals will be returned in the future, therefore clients of this
-	 * API must allow with {@link CompletionRequestor#setAllowsRequiredProposals(int, int, boolean)}
-	 * only kinds which are in this list to avoid unexpected results in the future.
-	 * </p>
-	 * <p>
-	 * A required proposal of a given kind is proposed even if {@link CompletionRequestor#isIgnored(int)}
-	 * return <code>true</code> for that kind.
-	 * </p>
-	 * <p>
-	 * A required completion proposal cannot have required completion proposals.
-	 * </p>
-	 *
-	 * @return the required completion proposals, or <code>null</code> if none.
-	 *
-	 * @see CompletionRequestor#setAllowsRequiredProposals(int, int,boolean)
-	 *
-	 * @since 3.3
-	 */
+	@Override
 	public CompletionProposal[] getRequiredProposals() {
 		return this.requiredProposals;
 	}
 
-
-	/**
-	 * Sets the list of required completion proposals, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param proposals the list of required completion proposals, or
-	 * <code>null</code> if none
-     * @since 3.3
-	 */
+	@Override
 	public void setRequiredProposals(CompletionProposal[] proposals) {
 		this.requiredProposals = proposals;
 	}
 
-	/**
-	 * Finds the method parameter names.
-	 * This information is relevant to method reference (and
-	 * method declaration proposals). Returns <code>null</code>
-	 * if not available or not relevant.
-	 * <p>
-	 * The client must not modify the array returned.
-	 * </p>
-	 * <p>
-	 * <b>Note that this is an expensive thing to compute, which may require
-	 * parsing Java source files, etc. Use sparingly.</b>
-	 * </p>
-	 *
-	 * @param monitor the progress monitor, or <code>null</code> if none
-	 * @return the parameter names, or <code>null</code> if none
-	 * or not available or not relevant
-	 */
+	@Override
 	public char[][] findParameterNames(IProgressMonitor monitor) {
 		if (!this.parameterNamesComputed) {
 			this.parameterNamesComputed = true;
@@ -1540,64 +990,18 @@
 		return this.parameterNames;
 	}
 
-	/**
-	 * Sets the method parameter names.
-	 * This information is relevant to method reference (and
-	 * method declaration proposals).
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param parameterNames the parameter names, or <code>null</code> if none
-	 */
+	@Override
 	public void setParameterNames(char[][] parameterNames) {
 		this.parameterNames = parameterNames;
 		this.parameterNamesComputed = true;
 	}
 
-	/**
-	 * Returns the accessibility of the proposal.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * 	<li><code>TYPE_REF</code> - accessibility of the type</li>
-	 * </ul>
-	 * For these kinds of completion proposals, this method returns
-	 * {@link IAccessRule#K_ACCESSIBLE} or {@link IAccessRule#K_DISCOURAGED}
-	 * or {@link IAccessRule#K_NON_ACCESSIBLE}.
-	 * By default this method return {@link IAccessRule#K_ACCESSIBLE}.
-	 * </p>
-	 *
-	 * @see IAccessRule
-	 *
-	 * @return the accessibility of the proposal
-	 *
-	 * @since 3.1
-	 */
+	@Override
 	public int getAccessibility() {
 		return this.accessibility;
 	}
 
-	/**
-	 * Returns whether this proposal is a constructor.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 * <li><code>METHOD_REF</code> - return <code>true</code>
-	 * if the referenced method is a constructor</li>
-	 * 	<li><code>METHOD_DECLARATION</code> - return <code>true</code>
-	 * if the declared method is a constructor</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>false</code>.
-	 * </p>
-	 *
-	 * @return <code>true</code> if the proposal is a constructor.
-	 * @since 3.1
-	 */
+	@Override
 	public boolean isConstructor() {
 		return this.isConstructor;
 	}
@@ -1606,119 +1010,33 @@
 	private int receiverEnd;
 	private char[] receiverSignature;
 
-	/**
-	 * Returns the type signature or package name of the relevant
-	 * receiver in the context, or <code>null</code> if none.
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code> - type signature
-	 * of the type that cast the receiver of the field that is referenced</li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code> - type signature
-	 * of the type that cast the receiver of the method that is referenced</li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns
-	 * <code>null</code>. Clients must not modify the array
-	 * returned.
-	 * </p>
-	 *
-	 * @return a type signature or a package name (depending
-	 * on the kind of completion), or <code>null</code> if none
-	 * @see Signature
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public char[] getReceiverSignature() {
 		return this.receiverSignature;
 	}
 
-	/**
-	 * Returns the character index of the start of the
-	 * subrange in the source file buffer containing the
-	 * relevant receiver of the member being completed. This
-	 * receiver is an expression.
-	 *
-	 * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code></li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code></li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns <code>0</code>.
-	 * </p>
-	 *
-	 * @return character index of receiver start position (inclusive)
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public int getReceiverStart() {
 		return this.receiverStart;
 	}
 
-	/**
-	 * Returns the character index of the end (exclusive) of the subrange
-	 * in the source file buffer containing the
-	 * relevant receiver of the member being completed.
-	 *
-	 * * <p>
-	 * This field is available for the following kinds of
-	 * completion proposals:
-	 * <ul>
-	 *  <li><code>FIELD_REF_WITH_CASTED_RECEIVER</code></li>
-	 *  <li><code>METHOD_REF_WITH_CASTED_RECEIVER</code></li>
-	 * </ul>
-	 * For kinds of completion proposals, this method returns <code>0</code>.
-	 * </p>
-	 *
-	 * @return character index of receiver end position (exclusive)
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public int getReceiverEnd() {
 		return this.receiverEnd;
 	}
 
-	/**
-	 * Sets the type or package signature of the relevant
-	 * receiver in the context, or <code>null</code> if none.
-	 * <p>
-	 * If not set, defaults to none.
-	 * </p>
-	 * <p>
-	 * The completion engine creates instances of this class and sets
-	 * its properties; this method is not intended to be used by other clients.
-	 * </p>
-	 *
-	 * @param signature the type or package signature, or
-	 * <code>null</code> if none
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public void setReceiverSignature(char[] signature) {
 		this.receiverSignature = signature;
 	}
 
-	/**
-	 * Sets the character indices of the subrange in the
-	 * source file buffer containing the relevant receiver
-	 * of the member being completed.
-	 *
-	 * <p>
-	 * If not set, defaults to empty subrange at [0,0).
-	 * </p>
-	 *
-	 * @param startIndex character index of receiver start position (inclusive)
-	 * @param endIndex character index of receiver end position (exclusive)
-	 *
-	 * @since 3.4
-	 */
+	@Override
 	public void setReceiverRange(int startIndex, int endIndex) {
 		this.receiverStart = startIndex;
 		this.receiverEnd = endIndex;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append('[');
@@ -1750,6 +1068,12 @@
 					buffer.append("<CONSTRUCTOR>"); //$NON-NLS-1$
 				}
 				break;
+			case CompletionProposal.MODULE_DECLARATION :
+				buffer.append("MODULE_DECLARATION"); //$NON-NLS-1$
+				break;
+			case CompletionProposal.MODULE_REF :
+				buffer.append("MODULE_REF"); //$NON-NLS-1$
+				break;
 			case CompletionProposal.PACKAGE_REF :
 				buffer.append("PACKAGE_REF"); //$NON-NLS-1$
 				break;
@@ -1841,6 +1165,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public boolean canUseDiamond(CompletionContext coreContext) {
 		if (this.getKind() != CONSTRUCTOR_INVOCATION) return false;
 		if (coreContext instanceof InternalCompletionContext) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.java
index 7d873af..6722917 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/InternalExtendedCompletionContext.java
@@ -70,6 +70,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class InternalExtendedCompletionContext {
 	private static Util.BindingsToNodesMap EmptyNodeMap = new Util.BindingsToNodesMap() {
+		@Override
 		public ASTNode get(Binding binding) {
 			return null;
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java
index 3b64d15..fb20396 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java
@@ -78,71 +78,85 @@
 			this.firstCall = false;
 		}
 
+		@Override
 		public boolean visit(SingleTypeReference singleTypeReference, BlockScope scope) {
 			this.cleanUp(singleTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(SingleTypeReference singleTypeReference, ClassScope scope) {
 			this.cleanUp(singleTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(Wildcard wildcard, BlockScope scope) {
 			this.cleanUp(wildcard);
 			return true;
 		}
 
+		@Override
 		public boolean visit(Wildcard wildcard, ClassScope scope) {
 			this.cleanUp(wildcard);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ArrayTypeReference arrayTypeReference, BlockScope scope) {
 			this.cleanUp(arrayTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ArrayTypeReference arrayTypeReference, ClassScope scope) {
 			this.cleanUp(arrayTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, BlockScope scope) {
 			this.cleanUp(parameterizedSingleTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, ClassScope scope) {
 			this.cleanUp(parameterizedSingleTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(QualifiedTypeReference qualifiedTypeReference, BlockScope scope) {
 			this.cleanUp(qualifiedTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(QualifiedTypeReference qualifiedTypeReference, ClassScope scope) {
 			this.cleanUp(qualifiedTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, BlockScope scope) {
 			this.cleanUp(arrayQualifiedTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, ClassScope scope) {
 			this.cleanUp(arrayQualifiedTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, BlockScope scope) {
 			this.cleanUp(parameterizedQualifiedTypeReference);
 			return true;
 		}
 
+		@Override
 		public boolean visit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, ClassScope scope) {
 			this.cleanUp(parameterizedQualifiedTypeReference);
 			return true;
@@ -463,6 +477,7 @@
 			isQualified ? CharOperation.concatWith(missingTypeName, '.') : null;
 		final ArrayList results = new ArrayList();
 		ISearchRequestor storage = new ISearchRequestor() {
+			@Override
 			public void acceptConstructor(
 					int modifiers,
 					char[] simpleTypeName,
@@ -477,9 +492,15 @@
 					AccessRestriction access) {
 				// constructors aren't searched
 			}
+			@Override
+			public void acceptModule(char[] moduleName) {
+				// TODO Auto-generated method stub
+			}
+			@Override
 			public void acceptPackage(char[] packageName) {
 				// package aren't searched
 			}
+			@Override
 			public void acceptType(
 					char[] packageName,
 					char[] typeName,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java
index b56f88b..3d30cf6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/RelevanceConstants.java
@@ -56,4 +56,5 @@
 	int R_TARGET = 5;
 	int R_FINAL = 3; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=195346
 	int R_CONSTRUCTOR = 3; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=373409
+	int R_MODULE_DECLARATION = 31;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
index e3f489b..23d01b3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Jesper Steen Møller <jesper@selskabet.org> - contributions for:	
+ *         Bug 531046: [10] ICodeAssist#codeSelect support for 'var'
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.codeassist;
 
@@ -21,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IMember;
 import org.aspectj.org.eclipse.jdt.core.IOpenable;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.ISourceRange;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
@@ -40,6 +43,7 @@
 import org.aspectj.org.eclipse.jdt.internal.codeassist.impl.Engine;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionJavadocParser;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionNodeFound;
+import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionOnPackageVisibilityReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionOnImportReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionOnPackageReference;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.select.SelectionOnQualifiedTypeReference;
@@ -54,13 +58,18 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PackageVisibilityStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding;
@@ -69,21 +78,25 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MemberTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemFieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SyntheticMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
@@ -97,6 +110,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryTypeConverter;
 import org.aspectj.org.eclipse.jdt.internal.core.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
+import org.aspectj.org.eclipse.jdt.internal.core.JrtPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.SearchableEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.core.SelectionRequestor;
 import org.aspectj.org.eclipse.jdt.internal.core.SourceType;
@@ -154,6 +168,7 @@
 			this.importReferences = importReferences;
 		}
 		
+		@Override
 		public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 			if (enclosingTypeNames != null && enclosingTypeNames.length > 0) return;
 			
@@ -296,6 +311,7 @@
 				this.compilerOptions,
 				new DefaultProblemFactory(Locale.getDefault())) {
 
+			@Override
 			public CategorizedProblem createProblem(
 				char[] fileName,
 				int problemId,
@@ -329,6 +345,7 @@
 		this.owner = owner;
 	}
 	
+	@Override
 	public void acceptConstructor(
 			int modifiers,
 			char[] simpleTypeName,
@@ -344,6 +361,7 @@
 		// constructors aren't searched
 	}
 
+	@Override
 	public void acceptType(char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, int modifiers, AccessRestriction accessRestriction) {
 		char[] typeName = enclosingTypeNames == null ?
 				simpleTypeName :
@@ -454,14 +472,7 @@
 		}
 	}
 
-	/**
-	 * One result of the search consists of a new package.
-	 * @param packageName char[]
-	 *
-	 * NOTE - All package names are presented in their readable form:
-	 *    Package names are in the form "a.b.c".
-	 *    The default package is represented by an empty array.
-	 */
+	@Override
 	public void acceptPackage(char[] packageName) {
 		// implementation of interface method
 	}
@@ -539,7 +550,8 @@
 	private boolean checkSelection(
 			char[] source,
 			int selectionStart,
-			int selectionEnd) {
+			int selectionEnd,
+			boolean isModuleInfo) {
 
 		Scanner scanner =
 			new Scanner(
@@ -628,7 +640,7 @@
 			}
 
 			// compute start and end of the last token
-			scanner.resetTo(nextCharacterPosition, end);
+			scanner.resetTo(nextCharacterPosition, end, isModuleInfo);
 			isolateLastName: do {
 				try {
 					token = scanner.getNextToken();
@@ -678,7 +690,7 @@
 					}
 				}  
 			} // there could be some innocuous widening, shouldn't matter.
-			scanner.resetTo(selectionStart, selectionEnd);
+			scanner.resetTo(selectionStart, selectionEnd, isModuleInfo);
 
 			boolean expectingIdentifier = true;
 			do {
@@ -827,33 +839,42 @@
 		try {
 			IProgressMonitor progressMonitor = new IProgressMonitor() {
 				boolean isCanceled = false;
+				@Override
 				public void beginTask(String name, int totalWork) {
 					// implements interface method
 				}
+				@Override
 				public void done() {
 					// implements interface method
 				}
+				@Override
 				public void internalWorked(double work) {
 					// implements interface method
 				}
+				@Override
 				public boolean isCanceled() {
 					return this.isCanceled;
 				}
+				@Override
 				public void setCanceled(boolean value) {
 					this.isCanceled = value;
 				}
+				@Override
 				public void setTaskName(String name) {
 					// implements interface method
 				}
+				@Override
 				public void subTask(String name) {
 					// implements interface method
 				}
+				@Override
 				public void worked(int work) {
 					// implements interface method
 				}
 			};
 			
 			TypeNameMatchRequestor typeNameMatchRequestor = new TypeNameMatchRequestor() {
+				@Override
 				public void acceptTypeNameMatch(TypeNameMatch match) {
 					if (SelectionEngine.this.requestor instanceof SelectionRequestor) {
 						SelectionEngine.this.noProposal = false;
@@ -892,6 +913,7 @@
 		}
 	}
 
+	@Override
 	public AssistParser getParser() {
 		return this.parser;
 	}
@@ -940,7 +962,8 @@
 			System.out.println("SELECTION - Source :"); //$NON-NLS-1$
 			System.out.println(source);
 		}
-		if (!checkSelection(source, selectionSourceStart, selectionSourceEnd)) {
+		boolean isModuleInfo = CharOperation.endsWith(sourceUnit.getFileName(), TypeConstants.MODULE_INFO_FILE_NAME);
+		if (!checkSelection(source, selectionSourceStart, selectionSourceEnd, isModuleInfo)) {
 			return;
 		}
 		if (DEBUG) {
@@ -1015,14 +1038,24 @@
 						}
 					}
 				}
-				if (parsedUnit.types != null || parsedUnit.isPackageInfo()) {
-					if(selectDeclaration(parsedUnit))
-						return;
-					this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
-					if ((this.unitScope = parsedUnit.scope)  != null) {
-						try {
+				try {
+					if (parsedUnit.isModuleInfo() && parsedUnit.moduleDeclaration != null) {
+						ModuleDeclaration module = parsedUnit.moduleDeclaration;
+						this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
+						if ((this.unitScope = parsedUnit.scope)  != null) {
 							this.lookupEnvironment.completeTypeBindings(parsedUnit, true);
-							
+						}
+						module.resolveModuleDirectives(parsedUnit.scope);
+						module.resolvePackageDirectives(parsedUnit.scope);
+						module.resolveTypeDirectives(parsedUnit.scope);
+						acceptPackageVisibilityStatements(module.exports, parsedUnit.scope);
+						acceptPackageVisibilityStatements(module.opens, parsedUnit.scope);
+					} else if (parsedUnit.types != null || parsedUnit.isPackageInfo()) {
+						if(selectDeclaration(parsedUnit))
+							return;
+						this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
+						if ((this.unitScope = parsedUnit.scope)  != null) {
+							this.lookupEnvironment.completeTypeBindings(parsedUnit, true);
 							CompilationUnitDeclaration previousUnitBeingCompleted = this.lookupEnvironment.unitBeingCompleted;
 							this.lookupEnvironment.unitBeingCompleted = parsedUnit;
 							parsedUnit.scope.faultInTypes();
@@ -1038,17 +1071,17 @@
 							if (node != null) {
 								selectLocalDeclaration(node);
 							}
-						} catch (SelectionNodeFound e) {
-							if (e.binding != null) {
-								if(DEBUG) {
-									System.out.println("SELECTION - Selection binding:"); //$NON-NLS-1$
-									System.out.println(e.binding.toString());
-								}
-								// if null then we found a problem in the selection node
-								selectFrom(e.binding, parsedUnit, sourceUnit, e.isDeclaration);
-							}
 						}
 					}
+				} catch (SelectionNodeFound e) {
+					if (e.binding != null) {
+						if(DEBUG) {
+							System.out.println("SELECTION - Selection binding:"); //$NON-NLS-1$
+							System.out.println(e.binding.toString());
+						}
+						// if null then we found a problem in the selection node
+						selectFrom(e.binding, parsedUnit, sourceUnit, e.isDeclaration);
+					}
 				}
 			}
 			// only reaches here if no selection could be derived from the parsed tree
@@ -1084,6 +1117,16 @@
 		}
 	}
 
+	private void acceptPackageVisibilityStatements(PackageVisibilityStatement[] pvs, Scope scope) {
+		if (pvs != null) {
+			for (PackageVisibilityStatement pv : pvs) {
+				if (pv.pkgRef instanceof SelectionOnPackageVisibilityReference) {
+					this.noProposal = false;
+					this.requestor.acceptPackage(CharOperation.concatWith(((SelectionOnPackageVisibilityReference) pv.pkgRef).tokens, '.'));
+				}
+			}
+		}
+	}
 	private void selectMemberTypeFromImport(CompilationUnitDeclaration parsedUnit, char[] lastToken, ReferenceBinding ref, boolean staticOnly) {
 		int fieldLength = lastToken.length;
 		ReferenceBinding[] memberTypes = ref.memberTypes();
@@ -1205,6 +1248,12 @@
 			if (isLocal(typeBinding) && this.requestor instanceof SelectionRequestor) {
 				this.noProposal = false;
 				((SelectionRequestor)this.requestor).acceptLocalType(typeBinding);
+			} else if (binding instanceof IntersectionTypeBinding18) {
+				IntersectionTypeBinding18 intersection = (IntersectionTypeBinding18) binding;
+				ReferenceBinding[] intersectingTypes = intersection.intersectingTypes;
+				for (ReferenceBinding referenceBinding : intersectingTypes) {
+					selectFrom(referenceBinding, parsedUnit, isDeclaration);
+				}
 			} else {
 				this.noProposal = false;
 
@@ -1349,6 +1398,15 @@
 			this.acceptedAnswer = true;
 		} else if(binding instanceof BaseTypeBinding) {
 			this.acceptedAnswer = true;
+		} else if (binding instanceof ModuleBinding) {
+			this.noProposal = false;
+			ModuleBinding moduleBinding = (ModuleBinding) binding;
+			this.requestor.acceptModule(
+					moduleBinding.moduleName,
+					moduleBinding.computeUniqueKey(),
+					this.actualSelectionStart,
+					this.actualSelectionEnd);
+			this.acceptedAnswer = true;
 		}
 	}
 	/*
@@ -1361,6 +1419,7 @@
 		if (assistIdentifier == null) return;
 
 		class Visitor extends ASTVisitor {
+			@Override
 			public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 				if (constructorDeclaration.selector == assistIdentifier){
 					if (constructorDeclaration.binding != null) {
@@ -1373,24 +1432,35 @@
 				}
 				return true;
 			}
+			@Override
+			public boolean visit(
+		    		LocalDeclaration localDeclaration, BlockScope scope) {
+				if (localDeclaration.type instanceof SingleTypeReference && ((SingleTypeReference)localDeclaration.type).token == assistIdentifier)
+					throw new SelectionNodeFound(localDeclaration.binding.type);
+				return true; // do nothing by default, keep traversing
+			}
+			@Override
 			public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) {
 				if (fieldDeclaration.name == assistIdentifier){
 					throw new SelectionNodeFound(fieldDeclaration.binding);
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope scope) {
 				if (localTypeDeclaration.name == assistIdentifier) {
 					throw new SelectionNodeFound(localTypeDeclaration.binding);
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) {
 				if (memberTypeDeclaration.name == assistIdentifier) {
 					throw new SelectionNodeFound(memberTypeDeclaration.binding);
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 				if (methodDeclaration.selector == assistIdentifier){
 					if (methodDeclaration.binding != null) {
@@ -1403,18 +1473,21 @@
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) {
 				if (typeDeclaration.name == assistIdentifier) {
 					throw new SelectionNodeFound(typeDeclaration.binding);
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(TypeParameter typeParameter, BlockScope scope) {
 				if (typeParameter.name == assistIdentifier) {
 					throw new SelectionNodeFound(typeParameter.binding);
 				}
 				return true;
 			}
+			@Override
 			public boolean visit(TypeParameter typeParameter, ClassScope scope) {
 				if (typeParameter.name == assistIdentifier) {
 					throw new SelectionNodeFound(typeParameter.binding);
@@ -1486,26 +1559,36 @@
 					typeDeclaration = new ASTNodeFinder(parsedUnit).findType(context);
 				}
 			} else { // binary type
-				ClassFile classFile = (ClassFile) context.getClassFile();
-				BinaryTypeDescriptor descriptor = BinaryTypeFactory.createDescriptor(classFile);
-				ClassFileReader reader = null;
-				try {
-					reader = BinaryTypeFactory.rawReadType(descriptor, false/*don't fully initialize so as to keep constant pool (used below)*/);
-				} catch (ClassFormatException e) {
-					if (JavaCore.getPlugin().isDebugging()) {
-						e.printStackTrace(System.err);
+				IOrdinaryClassFile iClassFile = context.getClassFile();
+				if (iClassFile instanceof ClassFile) {
+					ClassFile classFile = (ClassFile) iClassFile;
+					ClassFileReader reader = null;
+					if (classFile.getPackageFragmentRoot() instanceof JrtPackageFragmentRoot) {
+						IBinaryType binaryTypeInfo = classFile.getBinaryTypeInfo();
+						if (binaryTypeInfo instanceof ClassFileReader) {
+							reader = (ClassFileReader) binaryTypeInfo;
+						}
+					} else {
+						BinaryTypeDescriptor descriptor = BinaryTypeFactory.createDescriptor(classFile);
+						try {
+							reader = BinaryTypeFactory.rawReadType(descriptor, false/*don't fully initialize so as to keep constant pool (used below)*/);
+						} catch (ClassFormatException e) {
+							if (JavaCore.getPlugin().isDebugging()) {
+								e.printStackTrace(System.err);
+							}
+						}
 					}
+					if (reader == null) {
+						throw classFile.newNotPresentException();
+					}
+					CompilationResult result = new CompilationResult(reader.getFileName(), 1, 1, this.compilerOptions.maxProblemsPerUnit);
+					parsedUnit = new CompilationUnitDeclaration(this.parser.problemReporter(), result, 0);
+					HashSetOfCharArrayArray typeNames = new HashSetOfCharArrayArray();
+					
+					BinaryTypeConverter converter = new BinaryTypeConverter(this.parser.problemReporter(), result, typeNames);
+					typeDeclaration = converter.buildTypeDeclaration(context, parsedUnit);
+					parsedUnit.imports = converter.buildImports(reader);
 				}
-				if (reader == null) {
-					throw classFile.newNotPresentException();
-				}
-				CompilationResult result = new CompilationResult(reader.getFileName(), 1, 1, this.compilerOptions.maxProblemsPerUnit);
-				parsedUnit = new CompilationUnitDeclaration(this.parser.problemReporter(), result, 0);
-				HashSetOfCharArrayArray typeNames = new HashSetOfCharArrayArray();
-
-				BinaryTypeConverter converter = new BinaryTypeConverter(this.parser.problemReporter(), result, typeNames);
-				typeDeclaration = converter.buildTypeDeclaration(context, parsedUnit);
-				parsedUnit.imports = converter.buildImports(reader);
 			}
 
 			if (typeDeclaration != null) {
@@ -1767,6 +1850,7 @@
 		ReferenceBinding type= method.declaringClass;
 		final SelectionRequestor requestor1 = (SelectionRequestor) this.requestor;
 		return new InheritDocVisitor() {
+			@Override
 			public Object visit(ReferenceBinding currType) throws JavaModelException {
 				MethodBinding overridden =  findOverriddenMethodInType(currType, method);
 				if (overridden == null)
@@ -1819,9 +1903,11 @@
 	 */
 	static abstract class InheritDocVisitor {
 		public static final Object STOP_BRANCH= new Object() {
+			@Override
 			public String toString() { return "STOP_BRANCH"; } //$NON-NLS-1$
 		};
 		public static final Object CONTINUE= new Object() {
+			@Override
 			public String toString() { return "CONTINUE"; } //$NON-NLS-1$
 		};
 
@@ -1913,4 +1999,10 @@
 			return InheritDocVisitor.CONTINUE;
 		}
 	}
+
+	@Override
+	public void acceptModule(char[] moduleName) {
+		// TODO Auto-generated method stub
+		
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.java
index 2b5160e..1c24342 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/ThrownExceptionFinder.java
@@ -60,6 +60,7 @@
 		}
 	}
 
+	@Override
 	public void endVisit(MessageSend messageSend, BlockScope scope) {
 		if (messageSend.binding != null) {
 			endVisitMethodInvocation(messageSend.binding);
@@ -67,6 +68,7 @@
 		super.endVisit(messageSend, scope);
 	}
 
+	@Override
 	public void endVisit(AllocationExpression allocationExpression, BlockScope scope) {
 		if (allocationExpression.binding != null) {
 			endVisitMethodInvocation(allocationExpression.binding);
@@ -74,6 +76,7 @@
 		super.endVisit(allocationExpression, scope);
 	}
 
+	@Override
 	public void endVisit(ThrowStatement throwStatement, BlockScope scope) {
 		acceptException((ReferenceBinding)throwStatement.exception.resolvedType);
 		super.endVisit(throwStatement, scope);
@@ -124,14 +127,17 @@
 		this.discouragedExceptions.asArray(allDiscouragedExceptions);
 		return allDiscouragedExceptions;
 	}
+	@Override
 	public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) {
 		return visitType(typeDeclaration);
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) {
 		return visitType(memberTypeDeclaration);
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope scope) {
 		return visitType(localTypeDeclaration);
 	}
@@ -140,6 +146,7 @@
 		return false;
 	}
 
+	@Override
 	public boolean visit(TryStatement tryStatement, BlockScope scope) {
 		this.exceptionsStack.push(this.thrownExceptions);
 		SimpleSet exceptionSet = new SimpleSet();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.java
index c258e79..bdaddcb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/UnresolvedReferenceNameFinder.java
@@ -288,6 +288,7 @@
 		return null;
 	}
 
+	@Override
 	public boolean visit(Block block, BlockScope blockScope) {
 		ASTNode enclosingDeclaration = getEnclosingDeclaration();
 		removeLocals(block.statements, enclosingDeclaration.sourceStart, block.sourceEnd);
@@ -295,6 +296,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope classScope) {
 		if (((constructorDeclaration.bits & ASTNode.IsDefaultConstructor) == 0) && !constructorDeclaration.isClinit()) {
 			removeLocals(
@@ -310,16 +312,19 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(FieldDeclaration fieldDeclaration, MethodScope methodScope) {
 		pushParent(fieldDeclaration);
 		return true;
 	}
 
+	@Override
 	public boolean visit(Initializer initializer, MethodScope methodScope) {
 		pushParent(initializer);
 		return true;
 	}
 
+	@Override
 	public boolean visit(MethodDeclaration methodDeclaration, ClassScope classScope) {
 		removeLocals(
 				methodDeclaration.arguments,
@@ -333,30 +338,36 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope blockScope) {
 		removeFields(localTypeDeclaration);
 		pushParent(localTypeDeclaration);
 		return true;
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope classScope) {
 		removeFields(memberTypeDeclaration);
 		pushParent(memberTypeDeclaration);
 		return true;
 	}
 
+	@Override
 	public void endVisit(Block block, BlockScope blockScope) {
 		popParent();
 	}
 
+	@Override
 	public void endVisit(Argument argument, BlockScope blockScope) {
 		endVisitRemoved(argument.declarationSourceStart, argument.sourceEnd);
 	}
 
+	@Override
 	public void endVisit(Argument argument, ClassScope classScope) {
 		endVisitRemoved(argument.declarationSourceStart, argument.sourceEnd);
 	}
 
+	@Override
 	public void endVisit(ConstructorDeclaration constructorDeclaration, ClassScope classScope) {
 		if (((constructorDeclaration.bits & ASTNode.IsDefaultConstructor) == 0) && !constructorDeclaration.isClinit()) {
 			endVisitPreserved(constructorDeclaration.bodyStart, constructorDeclaration.bodyEnd);
@@ -364,21 +375,25 @@
 		popParent();
 	}
 
+	@Override
 	public void endVisit(FieldDeclaration fieldDeclaration, MethodScope methodScope) {
 		endVisitRemoved(fieldDeclaration.declarationSourceStart, fieldDeclaration.sourceEnd);
 		endVisitPreserved(fieldDeclaration.sourceEnd, fieldDeclaration.declarationEnd);
 		popParent();
 	}
 
+	@Override
 	public void endVisit(Initializer initializer, MethodScope methodScope) {
 		endVisitPreserved(initializer.bodyStart, initializer.bodyEnd);
 		popParent();
 	}
 
+	@Override
 	public void endVisit(LocalDeclaration localDeclaration, BlockScope blockScope) {
 		endVisitRemoved(localDeclaration.declarationSourceStart, localDeclaration.sourceEnd);
 	}
 
+	@Override
 	public void endVisit(MethodDeclaration methodDeclaration, ClassScope classScope) {
 		endVisitPreserved(
 				methodDeclaration.bodyStart,
@@ -386,11 +401,13 @@
 		popParent();
 	}
 
+	@Override
 	public void endVisit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 		endVisitRemoved(typeDeclaration.sourceStart, typeDeclaration.declarationSourceEnd);
 		popParent();
 	}
 
+	@Override
 	public void endVisit(TypeDeclaration typeDeclaration, ClassScope classScope) {
 		endVisitRemoved(typeDeclaration.sourceStart, typeDeclaration.declarationSourceEnd);
 		popParent();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.java
new file mode 100644
index 0000000..8b42b2f
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/AssistNodeParentAnnotationArrayInitializer.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+
+public class AssistNodeParentAnnotationArrayInitializer extends ASTNode {
+	public final TypeReference type;
+	public final char[] name;
+	public AssistNodeParentAnnotationArrayInitializer(TypeReference type, char[] name) {
+		this.type = type;
+		this.name = name;
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		output.append("<AssistNodeParentAnnotationArrayInitializer:"); //$NON-NLS-1$
+		output.append('@');
+		this.type.printExpression(0, output);
+		output.append('(');
+		output.append(this.name);
+		output.append(')');
+		output.append('>');
+
+		return output;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.java
index 85ef2f7..0579afa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadoc.java
@@ -93,6 +93,7 @@
 	/*
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#print(int, java.lang.StringBuffer)
 	 */
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		printIndent(indent, output).append("/**\n"); //$NON-NLS-1$
 		boolean nodePrinted = false;
@@ -150,6 +151,7 @@
 	 *
 	 * @throws CompletionNodeFound
 	 */
+	@Override
 	public void resolve(ClassScope scope) {
 		super.resolve(scope);
 		internalResolve(scope);
@@ -161,6 +163,7 @@
 	 *
 	 * @throws CompletionNodeFound
 	 */
+	@Override
 	public void resolve(CompilationUnitScope scope) {
 		internalResolve(scope);
 	}
@@ -171,6 +174,7 @@
 	 *
 	 * @throws CompletionNodeFound
 	 */
+	@Override
 	public void resolve(MethodScope scope) {
 		super.resolve(scope);
 		internalResolve(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.java
index b7f7e01..6cb3f37 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionJavadocParser.java
@@ -64,6 +64,7 @@
 	/*
 	 * Do not parse comment if completion location is not included.
 	 */
+	@Override
 	public boolean checkDeprecation(int commentPtr) {
 		boolean isDeprecated = false;
 
@@ -93,6 +94,7 @@
 	/*
 	 * Replace stored Javadoc node with specific completion one.
 	 */
+	@Override
 	protected boolean commentParse() {
 		this.docComment = new CompletionJavadoc(this.javadocStart, this.javadocEnd);
 		this.firstTagPosition = 1; // bug 429340: completion parser needs to parse the whole comment
@@ -102,6 +104,7 @@
 	/*
 	 * Create argument expression. If it includes completion location, create and store completion node.
 	 */
+	@Override
 	protected Object createArgumentReference(char[] name, int dim, boolean isVarargs, Object typeRef, long[] dimPositions, long argNamePos) throws InvalidInputException {
 		// Create argument as we may need it after
 		char[] argName = name==null ? CharOperation.NO_CHAR : name;
@@ -130,6 +133,7 @@
 	/*
 	 * Create field reference. If it includes completion location, create and store completion node.
 	 */
+	@Override
 	protected Object createFieldReference(Object receiver) throws InvalidInputException {
 		int refStart = (int) (this.identifierPositionStack[0] >>> 32);
 		int refEnd = (int) this.identifierPositionStack[0];
@@ -157,6 +161,7 @@
 	 * If so, create method reference and store it.
 	 * Otherwise return null as we do not need this reference.
 	 */
+	@Override
 	protected Object createMethodReference(Object receiver, List arguments) throws InvalidInputException {
 		int memberPtr = this.identifierLengthStack[0] - 1; // may be > 0 for inner class constructor reference
 		int refStart = (int) (this.identifierPositionStack[memberPtr] >>> 32);
@@ -189,6 +194,7 @@
 	/*
 	 * Create type reference. If it includes completion location, create and store completion node.
 	 */
+	@Override
 	protected Object createTypeReference(int primitiveToken) {
 		// Need to create type ref in case it was needed by members
 		int nbIdentifiers = this.identifierLengthStack[this.identifierLengthPtr];
@@ -312,6 +318,7 @@
 	/*
 	 * Parse argument in @see tag method reference
 	 */
+	@Override
 	protected Object parseArguments(Object receiver) throws InvalidInputException {
 
 		if (this.tagSourceStart>this.cursorLocation) {
@@ -458,6 +465,7 @@
 		throw new InvalidInputException();
 	}
 
+		@Override
 		protected boolean parseParam() throws InvalidInputException {
 			int startPosition = this.index;
 			int endPosition = this.index;
@@ -535,9 +543,7 @@
 			return valid;
 		}
 
-	/* (non-Javadoc)
-		 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseReference()
-		 */
+		@Override
 		protected boolean parseReference() throws InvalidInputException {
 			boolean completed = this.completionNode != null;
 			boolean valid = super.parseReference();
@@ -547,9 +553,7 @@
 			return valid;
 		}
 
-	/*(non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseTag(int)
-	 */
+	@Override
 	protected boolean parseTag(int previousPosition) throws InvalidInputException {
 		int startPosition = this.inlineTagStarted ? this.inlineTagStart : previousPosition;
 		boolean newLine = !this.lineStarted;
@@ -573,9 +577,7 @@
 		return valid;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseThrows()
-	 */
+	@Override
 	protected boolean parseThrows() {
 		try {
 			Object typeRef = parseQualifiedName(true);
@@ -592,6 +594,7 @@
 	/*
 	 * Push param name reference. If it includes completion location, create and store completion node.
 	 */
+	@Override
 	protected boolean pushParamName(boolean isTypeParam) {
 		if (super.pushParamName(isTypeParam)) {
 			Expression expression = (Expression) this.astStack[this.astPtr];
@@ -617,6 +620,7 @@
 	 *
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushText(int, int)
 	 */
+	@Override
 	protected void pushText(int start, int end) {
 		if (start <= this.cursorLocation && this.cursorLocation <= end) {
 			this.scanner.resetTo(start, end);
@@ -782,9 +786,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#readToken()
-	 */
+	@Override
 	protected int readToken() throws InvalidInputException {
 		int token = super.readToken();
 		if (token == TerminalTokens.TokenNameIdentifier && this.scanner.currentPosition == this.scanner.startPosition) {
@@ -797,6 +799,7 @@
 	/*
 	 * Recover syntax on invalid qualified name.
 	 */
+	@Override
 	protected Object syntaxRecoverQualifiedName(int primitiveToken) throws InvalidInputException {
 		if (this.cursorLocation == ((int)this.identifierPositionStack[this.identifierPtr])) {
 			// special case of completion just before the dot.
@@ -898,6 +901,7 @@
 	/*
 	 * Store completion node into doc comment.
 	 */
+	@Override
 	protected void updateDocComment() {
 		super.updateDocComment();
 		if (this.completionNode instanceof Expression) {
@@ -907,9 +911,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#verifySpaceOrEndComment()
-	 */
+	@Override
 	protected boolean verifySpaceOrEndComment() {
 		CompletionScanner completionScanner = (CompletionScanner) this.scanner;
 		if (completionScanner.completionIdentifier != null && completionScanner.completedIdentifierStart <= this.cursorLocation && this.cursorLocation <= completionScanner.completedIdentifierEnd) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.java
index 144b3cd..2fd615c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionNodeDetector.java
@@ -38,99 +38,131 @@
 	public ASTNode getCompletionNodeParent() {
 		return this.parent;
 	}
+	@Override
 	public void endVisit(AllocationExpression allocationExpression, BlockScope scope) {
 		endVisit(allocationExpression);
 	}
+	@Override
 	public void endVisit(AND_AND_Expression and_and_Expression, BlockScope scope) {
 		endVisit(and_and_Expression);
 	}
+	@Override
 	public void endVisit(ArrayAllocationExpression arrayAllocationExpression, BlockScope scope) {
 		endVisit(arrayAllocationExpression);
 	}
+	@Override
 	public void endVisit(ArrayInitializer arrayInitializer, BlockScope scope) {
 		endVisit(arrayInitializer);
 	}
+	@Override
 	public void endVisit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, BlockScope scope) {
 		endVisit(arrayQualifiedTypeReference);
 	}
+	@Override
 	public void endVisit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, ClassScope scope) {
 		endVisit(arrayQualifiedTypeReference);
 	}
+	@Override
 	public void endVisit(ArrayReference arrayReference, BlockScope scope) {
 		endVisit(arrayReference);
 	}
+	@Override
 	public void endVisit(ArrayTypeReference arrayTypeReference, BlockScope scope) {
 		endVisit(arrayTypeReference);
 	}
+	@Override
 	public void endVisit(ArrayTypeReference arrayTypeReference, ClassScope scope) {
 		endVisit(arrayTypeReference);
 	}
+	@Override
 	public void endVisit(Assignment assignment, BlockScope scope) {
 		endVisit(assignment);
 	}
+	@Override
 	public void endVisit(BinaryExpression binaryExpression, BlockScope scope) {
 		endVisit(binaryExpression);
 	}
+	@Override
 	public void endVisit(CastExpression castExpression, BlockScope scope) {
 		endVisit(castExpression);
 	}
+	@Override
 	public void endVisit(CompoundAssignment compoundAssignment, BlockScope scope) {
 		endVisit(compoundAssignment);
 	}
+	@Override
 	public void endVisit(ConditionalExpression conditionalExpression, BlockScope scope) {
 		endVisit(conditionalExpression);
 	}
+	@Override
 	public void endVisit(EqualExpression equalExpression, BlockScope scope) {
 		endVisit(equalExpression);
 	}
+	@Override
 	public void endVisit(ExplicitConstructorCall explicitConstructor, BlockScope scope) {
 		endVisit(explicitConstructor);
 	}
+	@Override
 	public void endVisit(FieldReference fieldReference, BlockScope scope) {
 		endVisit(fieldReference);
 	}
+	@Override
 	public void endVisit(InstanceOfExpression instanceOfExpression, BlockScope scope) {
 		endVisit(instanceOfExpression);
 	}
+	@Override
 	public void endVisit(MessageSend messageSend, BlockScope scope) {
 		endVisit(messageSend);
 	}
+	@Override
 	public void endVisit(OR_OR_Expression or_or_Expression, BlockScope scope) {
 		endVisit(or_or_Expression);
 	}
+	@Override
 	public void endVisit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, BlockScope scope) {
 		endVisit(parameterizedQualifiedTypeReference);
 	}
+	@Override
 	public void endVisit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, ClassScope scope) {
 		endVisit(parameterizedQualifiedTypeReference);
 	}
+	@Override
 	public void endVisit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, BlockScope scope) {
 		endVisit(parameterizedSingleTypeReference);
 	}
+	@Override
 	public void endVisit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, ClassScope scope) {
 		endVisit(parameterizedSingleTypeReference);
 	}
+	@Override
 	public void endVisit(PostfixExpression postfixExpression, BlockScope scope) {
 		endVisit(postfixExpression);
 	}
+	@Override
 	public void endVisit(PrefixExpression prefixExpression, BlockScope scope) {
 		endVisit(prefixExpression);
 	}
+	@Override
 	public void endVisit(QualifiedAllocationExpression qualifiedAllocationExpression, BlockScope scope) {
 		endVisit(qualifiedAllocationExpression);
 	}
+	@Override
 	public void endVisit(QualifiedNameReference qualifiedNameReference, BlockScope scope) {
 		endVisit(qualifiedNameReference);
 	}
+	@Override
 	public void endVisit(QualifiedSuperReference qualifiedSuperReference, BlockScope scope) {
 		endVisit(qualifiedSuperReference);
 	}
+	@Override
 	public void endVisit(QualifiedThisReference qualifiedThisReference, BlockScope scope) {
 		endVisit(qualifiedThisReference);
 	}
+	@Override
 	public void endVisit(QualifiedTypeReference qualifiedTypeReference, BlockScope scope) {
 		endVisit(qualifiedTypeReference);
 	}
+	@Override
 	public void endVisit(QualifiedTypeReference qualifiedTypeReference, ClassScope scope) {
 		endVisit(qualifiedTypeReference);
 	}
@@ -138,126 +170,166 @@
 	public void endVisit(ReferenceExpression referenceExpression, BlockScope blockScope) {
 		endVisit(referenceExpression);	
 	}
+	@Override
 	public void endVisit(SingleNameReference singleNameReference, BlockScope scope) {
 		endVisit(singleNameReference);
 	}
+	@Override
 	public void endVisit(SingleTypeReference singleTypeReference, BlockScope scope) {
 		endVisit(singleTypeReference);
 	}
+	@Override
 	public void endVisit(SingleTypeReference singleTypeReference, ClassScope scope) {
 		endVisit(singleTypeReference);
 	}
+	@Override
 	public void endVisit(SuperReference superReference, BlockScope scope) {
 		endVisit(superReference);
 	}
+	@Override
 	public void endVisit(ThisReference thisReference, BlockScope scope) {
 		endVisit(thisReference);
 	}
+	@Override
 	public void endVisit(UnaryExpression unaryExpression, BlockScope scope) {
 		endVisit(unaryExpression);
 	}
+	@Override
 	public void endVisit(MemberValuePair pair, BlockScope scope) {
 		endVisit(pair);
 	}
 	public void endVisit(MemberValuePair pair, CompilationUnitScope scope) {
 		endVisit(pair);
 	}
+	@Override
 	public void endVisit(LambdaExpression lambda, BlockScope scope) {
 		endVisit(lambda);
 	}
+	@Override
 	public boolean visit(AllocationExpression allocationExpression, BlockScope scope) {
 		return this.visit(allocationExpression);
 	}
+	@Override
 	public boolean visit(AND_AND_Expression and_and_Expression, BlockScope scope) {
 		return this.visit(and_and_Expression);
 	}
+	@Override
 	public boolean visit(ArrayAllocationExpression arrayAllocationExpression, BlockScope scope) {
 		return this.visit(arrayAllocationExpression);
 	}
+	@Override
 	public boolean visit(ArrayInitializer arrayInitializer, BlockScope scope) {
 		return this.visit(arrayInitializer);
 	}
+	@Override
 	public boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, BlockScope scope) {
 		return this.visit(arrayQualifiedTypeReference);
 	}
+	@Override
 	public boolean visit(ArrayQualifiedTypeReference arrayQualifiedTypeReference, ClassScope scope) {
 		return this.visit(arrayQualifiedTypeReference);
 	}
+	@Override
 	public boolean visit(ArrayReference arrayReference, BlockScope scope) {
 		return this.visit(arrayReference);
 	}
+	@Override
 	public boolean visit(ArrayTypeReference arrayTypeReference, BlockScope scope) {
 		return this.visit(arrayTypeReference);
 	}
+	@Override
 	public boolean visit(ArrayTypeReference arrayTypeReference, ClassScope scope) {
 		return this.visit(arrayTypeReference);
 	}
+	@Override
 	public boolean visit(Assignment assignment, BlockScope scope) {
 		return this.visit(assignment);
 	}
+	@Override
 	public boolean visit(BinaryExpression binaryExpression, BlockScope scope) {
 		return this.visit(binaryExpression);
 	}
+	@Override
 	public boolean visit(CastExpression castExpression, BlockScope scope) {
 		return this.visit(castExpression);
 	}
+	@Override
 	public boolean visit(CompoundAssignment compoundAssignment, BlockScope scope) {
 		return this.visit(compoundAssignment);
 	}
+	@Override
 	public boolean visit(ConditionalExpression conditionalExpression, BlockScope scope) {
 		return this.visit(conditionalExpression);
 	}
+	@Override
 	public boolean visit(EqualExpression equalExpression, BlockScope scope) {
 		return this.visit(equalExpression);
 	}
+	@Override
 	public boolean visit(ExplicitConstructorCall explicitConstructor, BlockScope scope) {
 		return this.visit(explicitConstructor);
 	}
+	@Override
 	public boolean visit(FieldReference fieldReference, BlockScope scope) {
 		return this.visit(fieldReference);
 	}
+	@Override
 	public boolean visit(InstanceOfExpression instanceOfExpression, BlockScope scope) {
 		return this.visit(instanceOfExpression);
 	}
+	@Override
 	public boolean visit(MessageSend messageSend, BlockScope scope) {
 		return this.visit(messageSend);
 	}
+	@Override
 	public boolean visit(OR_OR_Expression or_or_Expression, BlockScope scope) {
 		return this.visit(or_or_Expression);
 	}
+	@Override
 	public boolean visit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, BlockScope scope) {
 		return this.visit(parameterizedQualifiedTypeReference);
 	}
+	@Override
 	public boolean visit(ParameterizedQualifiedTypeReference parameterizedQualifiedTypeReference, ClassScope scope) {
 		return this.visit(parameterizedQualifiedTypeReference);
 	}
+	@Override
 	public boolean visit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, BlockScope scope) {
 		return this.visit(parameterizedSingleTypeReference);
 	}
+	@Override
 	public boolean visit(ParameterizedSingleTypeReference parameterizedSingleTypeReference, ClassScope scope) {
 		return this.visit(parameterizedSingleTypeReference);
 	}
+	@Override
 	public boolean visit(PostfixExpression postfixExpression, BlockScope scope) {
 		return this.visit(postfixExpression);
 	}
+	@Override
 	public boolean visit(PrefixExpression prefixExpression, BlockScope scope) {
 		return this.visit(prefixExpression);
 	}
+	@Override
 	public boolean visit(QualifiedAllocationExpression qualifiedAllocationExpression, BlockScope scope) {
 		return this.visit(qualifiedAllocationExpression);
 	}
+	@Override
 	public boolean visit(QualifiedNameReference qualifiedNameReference, BlockScope scope) {
 		return this.visit(qualifiedNameReference);
 	}
+	@Override
 	public boolean visit(QualifiedSuperReference qualifiedSuperReference, BlockScope scope) {
 		return this.visit(qualifiedSuperReference);
 	}
+	@Override
 	public boolean visit(QualifiedThisReference qualifiedThisReference, BlockScope scope) {
 		return this.visit(qualifiedThisReference);
 	}
+	@Override
 	public boolean visit(QualifiedTypeReference qualifiedTypeReference, BlockScope scope) {
 		return this.visit(qualifiedTypeReference);
 	}
+	@Override
 	public boolean visit(QualifiedTypeReference qualifiedTypeReference, ClassScope scope) {
 		return this.visit(qualifiedTypeReference);
 	}
@@ -265,27 +337,35 @@
 	public boolean visit(ReferenceExpression referenceExpression, BlockScope blockScope) {
 		return this.visit(referenceExpression);
 	}
+	@Override
 	public boolean visit(SingleNameReference singleNameReference, BlockScope scope) {
 		return this.visit(singleNameReference);
 	}
+	@Override
 	public boolean visit(SingleTypeReference singleTypeReference, BlockScope scope) {
 		return this.visit(singleTypeReference);
 	}
+	@Override
 	public boolean visit(SingleTypeReference singleTypeReference, ClassScope scope) {
 		return this.visit(singleTypeReference);
 	}
+	@Override
 	public boolean visit(StringLiteral stringLiteral, BlockScope scope) {
 		return this.visit(stringLiteral);
 	}
+	@Override
 	public boolean visit(SuperReference superReference, BlockScope scope) {
 		return this.visit(superReference);
 	}
+	@Override
 	public boolean visit(ThisReference thisReference, BlockScope scope) {
 		return this.visit(thisReference);
 	}
+	@Override
 	public boolean visit(UnaryExpression unaryExpression, BlockScope scope) {
 		return this.visit(unaryExpression);
 	}
+	@Override
 	public boolean visit(MemberValuePair pair, BlockScope scope) {
 		return this.visit(pair);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.java
index eddf9cc..6f92510 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationMemberValuePair.java
@@ -24,6 +24,7 @@
 		this.completedMemberValuePair = completedMemberValuePair;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		super.resolveType(scope);
 
@@ -34,6 +35,7 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append('@');
 		this.type.printExpression(0, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.java
index abd5c5d..4f6283e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnAnnotationOfType.java
@@ -29,6 +29,7 @@
 		this.annotations = new Annotation[]{annotation};
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		return this.annotations[0].print(indent, output);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.java
index 03f11a7..19a6865 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnArgumentName.java
@@ -32,12 +32,14 @@
 		this.realName = name;
 	}
 
+	@Override
 	public TypeBinding bind(MethodScope scope, TypeBinding typeBinding, boolean used) {
 
 		super.bind(scope, typeBinding, used);
 		throw new CompletionNodeFound(this, scope);
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		printIndent(indent, output);
@@ -51,6 +53,7 @@
 		return output.append('>');
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		super.resolve(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.java
index 9d751f6..9567042 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnBranchStatementLabel.java
@@ -28,15 +28,18 @@
 		this.possibleLabels = possibleLabels;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope,
 			FlowContext flowContext, FlowInfo flowInfo) {
 		// Is never called
 		return null;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		throw new CompletionNodeFound(this, scope);
 	}
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		printIndent(indent, output);
 		if(this.kind == CONTINUE) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.java
index fcbd00b..5206a3a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnClassLiteralAccess.java
@@ -45,12 +45,14 @@
 		this.classStart = (int) (pos >>> 32);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<CompleteOnClassLiteralAccess:"); //$NON-NLS-1$
 		return this.type.print(0, output).append('.').append(this.completionIdentifier).append('>');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		if (super.resolveType(scope) == null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.java
index 49c5b38..1a2e4db 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExplicitConstructorCall.java
@@ -41,6 +41,7 @@
 		super(accessMode);
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output);
@@ -60,6 +61,7 @@
 		return output.append(")>;"); //$NON-NLS-1$
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		ReferenceBinding receiverType = scope.enclosingSourceType();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.java
new file mode 100644
index 0000000..ecca31b
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnExportReference.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+/*
+ * Completion node build by the parser in any case it was intending to
+ * reduce an exports reference containing the cursor location.
+ * e.g.
+ *
+ *	module myModule {
+ *  exports packageo[cursor];
+ *  }
+ *
+ *	module myModule {
+ *	---> <CompleteOnExport:packageo>
+ *  }
+ *
+ * The source range is always of length 0.
+ * The arguments of the allocation expression are all the arguments defined
+ * before the cursor.
+ */
+
+public class CompletionOnExportReference extends ExportsStatement {
+
+	public CompletionOnExportReference(ImportReference ref) {
+		super(ref, null);
+	}
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+
+		printIndent(indent, output).append("<CompleteOnExport:"); //$NON-NLS-1$
+		output.append(this.pkgName);
+		return output.append('>');
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.java
index 2456e71..a661033 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldName.java
@@ -22,6 +22,7 @@
 		this.realName = name;
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output).append("<CompleteOnFieldName:"); //$NON-NLS-1$
@@ -34,6 +35,7 @@
 		return output.append(">;"); //$NON-NLS-1$
 	}
 
+	@Override
 	public void resolve(MethodScope initializationScope) {
 		super.resolve(initializationScope);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.java
index 4322530..87c5e03 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnFieldType.java
@@ -49,6 +49,7 @@
 	}
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	return this.type.print(tab, output).append(';');
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.java
index 414b13c..1adffb7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnImportReference.java
@@ -39,6 +39,7 @@
 public CompletionOnImportReference(char[][] tokens , long[] positions, int modifiers) {
 	super(tokens, positions, false, modifiers);
 }
+@Override
 public StringBuffer print(int indent, StringBuffer output, boolean withOnDemand) {
 
 	printIndent(indent, output).append("<CompleteOnImport:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.java
index adec3c9..78f1c69 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocAllocationExpression.java
@@ -31,9 +31,7 @@
 		this.completionFlags |= flags;
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
@@ -54,18 +52,12 @@
 		return (this.completionFlags & FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompleteOnJavadocAllocationExpression:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.java
index 119961a..50c023f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocFieldReference.java
@@ -50,9 +50,7 @@
 		this.tagValue = msgSend.tagValue;
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
@@ -73,18 +71,12 @@
 		return (this.completionFlags & FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.JavadocFieldReference#internalResolveType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
-	 */
+	@Override
 	protected TypeBinding internalResolveType(Scope scope) {
 
 		if (this.token != null) {
@@ -102,9 +94,7 @@
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.JavadocFieldReference#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompleteOnJavadocFieldReference:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.java
index 1ab9e87..f4f08ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocMessageSend.java
@@ -30,9 +30,7 @@
 		this.completionFlags |= flags;
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
@@ -53,18 +51,12 @@
 		return (this.completionFlags & FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.JavadocMessageSend#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompleteOnJavadocMessageSend:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.java
index ecb39dc..2cb3654 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocParamNameReference.java
@@ -27,34 +27,24 @@
 		super(nameRef.token, (((long)nameRef.sourceStart)<<32)+nameRef.sourceEnd, nameRef.tagSourceStart, nameRef.tagSourceStart);
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompletionOnJavadocParamNameReference:"); //$NON-NLS-1$
 		if (this.token != null) super.printExpression(indent, output);
 		return output.append('>');
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference#reportError(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
-	 */
+	@Override
 	public TypeBinding reportError(BlockScope scope) {
 		return null;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.java
index 85c39e3..0fee707 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocQualifiedTypeReference.java
@@ -27,9 +27,7 @@
 		this.completionIdentifier = CharOperation.NO_CHAR;
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
@@ -50,17 +48,12 @@
 		return (this.completionFlags & FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference#printExpression(int, java.lang.StringBuffer)
-	 */
+
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompletionOnJavadocQualifiedTypeReference:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.java
index 757a06b..791cf6b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocSingleTypeReference.java
@@ -23,9 +23,7 @@
 		super(typeRef.token, (((long)typeRef.sourceStart)<<32)+typeRef.sourceEnd, typeRef.tagSourceStart, typeRef.tagSourceStart);
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
@@ -46,18 +44,12 @@
 		return (this.completionFlags & FORMAL_REFERENCE) != 0;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompletionOnJavadocSingleTypeReference:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.java
index f714867..1ec4669 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTag.java
@@ -30,25 +30,17 @@
 		if (orphan) this.completionFlags |= ALL_POSSIBLE_TAGS;
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompleteOnJavadocTag:"); //$NON-NLS-1$
 		output.append('@');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.java
index fbef7fa..5c62555 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnJavadocTypeParamReference.java
@@ -26,25 +26,17 @@
 		super(typeRef.token, (((long)typeRef.sourceStart)<<32)+typeRef.sourceEnd, typeRef.tagSourceStart, typeRef.tagSourceStart);
 	}
 
-	/**
-	 * @param flags The completionFlags to set.
-	 */
+	@Override
 	public void addCompletionFlags(int flags) {
 		this.completionFlags |= flags;
 	}
 
-	/**
-	 * Get completion node flags.
-	 *
-	 * @return int Flags of the javadoc completion node.
-	 */
+	@Override
 	public int getCompletionFlags() {
 		return this.completionFlags;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompletionOnJavadocTypeParamReference:"); //$NON-NLS-1$
 		if (this.token != null) super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.java
index 67f5acc..f7d105e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword1.java
@@ -24,18 +24,23 @@
 		super(token, pos);
 		this.possibleKeywords = possibleKeywords;
 	}
+	@Override
 	public char[] getToken() {
 		return this.token;
 	}
+	@Override
 	public char[][] getPossibleKeywords() {
 		return this.possibleKeywords;
 	}
+	@Override
 	public void aboutToResolve(Scope scope) {
 		getTypeBinding(scope);
 	}
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 		throw new CompletionNodeFound(this, scope);
 	}
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		return output.append("<CompleteOnKeyword:").append(this.token).append('>');  //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.java
index 4514fc7..81193ee 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword2.java
@@ -21,12 +21,15 @@
 		this.token = token;
 		this.possibleKeywords = possibleKeywords;
 	}
+	@Override
 	public char[] getToken() {
 		return this.token;
 	}
+	@Override
 	public char[][] getPossibleKeywords() {
 		return this.possibleKeywords;
 	}
+	@Override
 	public StringBuffer print(int indent, StringBuffer output, boolean withOnDemand) {
 
 		return printIndent(indent, output).append("<CompleteOnKeyword:").append(this.token).append('>'); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.java
index 41ce7a4..c2d339f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeyword3.java
@@ -26,19 +26,23 @@
 		this.possibleKeywords = possibleKeywords;
 		this.tryOrCatch = afterTryOrCatch;
 	}
+	@Override
 	public char[] getToken() {
 		return this.token;
 	}
+	@Override
 	public char[][] getPossibleKeywords() {
 		return this.possibleKeywords;
 	}
 	public boolean afterTryOrCatch() {
 		return this.tryOrCatch;
 	}
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		return output.append("<CompleteOnKeyword:").append(this.token).append('>'); //$NON-NLS-1$
 	}
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		throw new CompletionNodeFound(this, scope);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.java
new file mode 100644
index 0000000..95641fd
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModule2.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+
+public class CompletionOnKeywordModule2 extends ModuleReference implements CompletionOnKeyword {
+	private char[] token;
+	private char[][] possibleKeywords;
+
+	public CompletionOnKeywordModule2(char[] token, long pos, char[][] possibleKeywords) {
+		super(new char[][] {token}, new long[] {pos}); // dummy
+		this.token = token;
+		this.possibleKeywords = possibleKeywords;
+		this.sourceStart = (int) (pos>>>32)  ;
+		this.sourceEnd = (int) (pos & 0x00000000FFFFFFFFL);
+	}
+
+	@Override
+	public char[] getToken() {
+		return this.token;
+	}
+
+	@Override
+	public char[][] getPossibleKeywords() {
+		return this.possibleKeywords;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.java
new file mode 100644
index 0000000..6c02854
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleDeclaration.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+
+public class CompletionOnKeywordModuleDeclaration extends ModuleDeclaration implements CompletionOnKeyword {
+
+	private char[] token;
+	private char[][] possibleKeywords;
+
+	public CompletionOnKeywordModuleDeclaration(char[] token, long pos, char[][] possibleKeywords) {
+		super(null, new char[][]{token}, new long[]{pos});
+		this.token = token;
+		this.possibleKeywords = possibleKeywords;
+	}
+
+	@Override
+	public char[] getToken() {
+		return this.token;
+	}
+
+	@Override
+	public char[][] getPossibleKeywords() {
+		return this.possibleKeywords;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.java
new file mode 100644
index 0000000..5d02da5
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnKeywordModuleInfo.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+
+/**
+ * 
+ * This class is independent of its parent class and is in fact a dummy ExportsStatement. Used to hook
+ * into the existing module declaration type and is used as a placeholder for keyword completion. This can
+ * be any module keyword completion and not necessarily related to exports statement.
+ */
+public class CompletionOnKeywordModuleInfo extends ExportsStatement implements CompletionOnKeyword {
+	private char[] token;
+	private char[][] possibleKeywords;
+
+	public CompletionOnKeywordModuleInfo(char[] token, long pos, char[][] possibleKeywords) {
+		super(new ImportReference(new char[][] {token}, new long[] {pos}, false, 0), null); // dummy
+		this.token = token;
+		this.possibleKeywords = possibleKeywords;
+		this.sourceStart = (int) (pos>>>32)  ;
+		this.sourceEnd = (int) (pos & 0x00000000FFFFFFFFL);
+	}
+
+	@Override
+	public char[] getToken() {
+		return this.token;
+	}
+
+	@Override
+	public char[][] getPossibleKeywords() {
+		return this.possibleKeywords;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.java
index 614f14b..997cc51 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnLocalName.java
@@ -25,12 +25,14 @@
 		this.realName = name;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		super.resolve(scope);
 		throw new CompletionNodeFound(this, scope);
 	}
 
+	@Override
 	public StringBuffer printAsExpression(int indent, StringBuffer output) {
 		printIndent(indent, output);
 		output.append("<CompleteOnLocalName:"); //$NON-NLS-1$
@@ -43,6 +45,7 @@
 		return output.append('>');
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		printAsExpression(indent, output);
 		return output.append(';');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.java
index 0a2ea9b..b0b0507 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMarkerAnnotationName.java
@@ -22,6 +22,7 @@
 		super(type, sourceStart);
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		if(this.type instanceof QualifiedTypeReference) {
 			QualifiedTypeReference qualifiedTypeReference = (QualifiedTypeReference) this.type;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java
index d31e4ac..3a74c85 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java
@@ -45,12 +45,14 @@
 		this.isInsideAnnotation = isInsideAnnotation;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<CompleteOnMemberAccess:"); //$NON-NLS-1$
 		return super.printExpression(0, output).append('>');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.actualReceiverType = this.receiver.resolveType(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.java
index ee3005b..3347395 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberValueName.java
@@ -30,6 +30,7 @@
 		super(token, sourceStart, sourceEnd, null);
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		output.append("<CompleteOnAttributeName:"); //$NON-NLS-1$
 		output.append(this.name);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.java
index 392e8bd..2edf6b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSend.java
@@ -38,6 +38,7 @@
 
 public class CompletionOnMessageSend extends MessageSend {
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		this.constant = Constant.NotAConstant;
 		if (this.arguments != null) {
@@ -58,6 +59,7 @@
 		throw new CompletionNodeFound(this, this.actualReceiverType, scope);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<CompleteOnMessageSend:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.java
index 1759fae..783164e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMessageSendName.java
@@ -24,6 +24,7 @@
 		this.nameSourcePosition = end;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.constant = Constant.NotAConstant;
@@ -47,6 +48,7 @@
 		throw new CompletionNodeFound(this, this.actualReceiverType, scope);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<CompleteOnMessageSendName:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.java
index 00cba4b..7ab2f51 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodName.java
@@ -21,6 +21,7 @@
 		super(compilationResult);
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		printIndent(indent, output);
@@ -45,6 +46,7 @@
 		return output.append('>');
 	}
 
+	@Override
 	public void resolve(ClassScope upperScope) {
 
 		super.resolve(upperScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.java
index 7aa2f85..99fa1d5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodReturnType.java
@@ -22,10 +22,12 @@
 		this.sourceEnd = returnType.sourceEnd;
 	}
 
+	@Override
 	public void resolveStatements() {
 			throw new CompletionNodeFound(this, this.scope);
 	}
 
+	@Override
 	public StringBuffer print(int tab, StringBuffer output) {
 		return this.returnType.print(tab, output);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.java
index 470857f..4db098f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMethodTypeParameter.java
@@ -24,10 +24,12 @@
 		this.sourceEnd = typeParameters[typeParameters.length - 1].sourceEnd;
 	}
 
+	@Override
 	public void resolveStatements() {
 			throw new CompletionNodeFound(this, this.scope);
 	}
 
+	@Override
 	public StringBuffer print(int tab, StringBuffer output) {
 		printIndent(tab, output);
 		output.append('<');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.java
new file mode 100644
index 0000000..f62d001
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleDeclaration.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+
+public class CompletionOnModuleDeclaration extends ModuleDeclaration {
+
+	public CompletionOnModuleDeclaration(CompilationResult compilationResult, char[][] tokens, long[] positions) {
+		super(compilationResult, tokens, positions);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.java
new file mode 100644
index 0000000..310e8e8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnModuleReference.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+
+public class CompletionOnModuleReference extends ModuleReference {
+
+	public CompletionOnModuleReference(char[] ident, long pos) {
+		this(new char[][]{ident}, new long[]{pos});
+	}
+	public CompletionOnModuleReference(char[][] tokens, long[] sourcePositions) {
+		super(tokens, sourcePositions);
+	}
+
+	@Override
+	public ModuleBinding resolve(Scope scope) {
+		super.resolve(scope);
+//		if (this.binding != null) {
+//			throw new CompletionNodeFound(this, this.binding, scope);
+//		} else {
+			throw new CompletionNodeFound();
+		//}
+	}
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+
+		printIndent(indent, output).append("<CompleteOnModuleReference:"); //$NON-NLS-1$
+		for (int i = 0; i < this.tokens.length; i++) {
+			if (i > 0) output.append('.');
+			output.append(this.tokens[i]);
+		}
+		return output.append('>');
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.java
index 535d9cb..4d12d9f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageReference.java
@@ -39,6 +39,7 @@
 public CompletionOnPackageReference(char[][] tokens , long[] positions) {
 	super(tokens, positions, false, ClassFileConstants.AccDefault);
 }
+@Override
 public StringBuffer print(int indent, StringBuffer output, boolean withOnDemand) {
 
 	printIndent(indent, output).append("<CompleteOnPackage:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.java
new file mode 100644
index 0000000..d2fe191
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnPackageVisibilityReference.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
+/*
+ * Completion node build by the parser in any case it was intending to
+ * reduce an exports or an opens reference containing the cursor location.
+ * e.g.
+ *
+ *	module myModule {
+ *  exports packageo[cursor];
+ *  opens packageo[cursor];
+
+ *  }
+ *
+ *	module myModule {
+ *	---> <CompleteOnPackageVisibilityReference:packageo>
+ *  }
+ *
+ * The source range is always of length 0.
+ * The arguments of the allocation expression are all the arguments defined
+ * before the cursor.
+ */
+
+public class CompletionOnPackageVisibilityReference extends CompletionOnImportReference {
+
+	String pkgName;
+	public CompletionOnPackageVisibilityReference(char[][] ident, long[] pos) {
+		super(ident, pos, 0);
+		this.pkgName = new String(CharOperation.concatWith(ident, '.'));
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		printIndent(indent, output).append("<CompleteOnPackageVisibilityReference:"); //$NON-NLS-1$
+		output.append(this.pkgName);
+		return output.append('>');
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.java
index 7ec8735..cc8b087 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnParameterizedQualifiedTypeReference.java
@@ -78,16 +78,19 @@
 		return this.kind == K_CLASS || this.kind == K_INTERFACE;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 		super.resolveType(scope, checkBounds, location);
 		throw new CompletionNodeFound(this, this.resolvedType, scope);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 		super.resolveType(scope, location);
 		throw new CompletionNodeFound(this, this.resolvedType, scope);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		switch (this.kind) {
 			case K_CLASS :
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.java
new file mode 100644
index 0000000..79c1baf
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsQualifiedTypeReference.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnProvidesImplementationsQualifiedTypeReference extends CompletionOnQualifiedTypeReference {
+
+	public CompletionOnProvidesImplementationsQualifiedTypeReference(char[][] previousIdentifiers, char[] completionIdentifier,
+			long[] positions) {
+		super(previousIdentifiers, completionIdentifier, positions);
+	}
+
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.java
new file mode 100644
index 0000000..4e70f84
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesImplementationsSingleTypeReference.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnProvidesImplementationsSingleTypeReference extends CompletionOnSingleTypeReference {
+	public CompletionOnProvidesImplementationsSingleTypeReference(char[] source, long pos) {
+		super(source, pos);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.java
new file mode 100644
index 0000000..1fcfce8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesQualifiedTypeReference.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnProvidesInterfacesQualifiedTypeReference extends CompletionOnQualifiedTypeReference {
+
+	public CompletionOnProvidesInterfacesQualifiedTypeReference(char[][] previousIdentifiers, char[] completionIdentifier,
+			long[] positions) {
+		super(previousIdentifiers, completionIdentifier, positions);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.java
new file mode 100644
index 0000000..fb48c6a
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnProvidesInterfacesSingleTypeReference.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnProvidesInterfacesSingleTypeReference extends CompletionOnSingleTypeReference {
+	public CompletionOnProvidesInterfacesSingleTypeReference(char[] source, long pos) {
+		super(source, pos);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.java
index fba62bc..25aab0a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedAllocationExpression.java
@@ -38,6 +38,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
 
 public class CompletionOnQualifiedAllocationExpression extends QualifiedAllocationExpression {
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	this.argumentTypes = Binding.NO_PARAMETERS;
 	if (this.arguments != null) {
@@ -95,6 +96,7 @@
 
 	throw new CompletionNodeFound(this, this.resolvedType, scope);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	if (this.enclosingInstance == null)
 		output.append("<CompleteOnAllocationExpression:" );  //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.java
index dfc5f91..6d1eef0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedNameReference.java
@@ -44,6 +44,7 @@
 	this.completionIdentifier = completionIdentifier;
 	this.isInsideAnnotationAttribute = isInsideAnnotationAttribute;
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 
 	output.append("<CompleteOnName:"); //$NON-NLS-1$
@@ -54,6 +55,7 @@
 	output.append(this.completionIdentifier).append('>');
 	return output;
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// it can be a package, type, member type, local variable or field
 	this.binding = scope.getBinding(this.tokens, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.java
index ce4734a..2cd978a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnQualifiedTypeReference.java
@@ -46,15 +46,18 @@
 	this.completionIdentifier = completionIdentifier;
 	this.kind = kind;
 }
+@Override
 public void aboutToResolve(Scope scope) {
 	getTypeBinding(scope);
 }
 /*
  * No expansion of the completion reference into an array one
  */
+@Override
 public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 	return this;
 }
+@Override
 protected TypeBinding getTypeBinding(Scope scope) {
 	// it can be a package, type or member type
 	Binding binding = scope.parent.getTypeOrPackage(this.tokens); // step up from the ClassScope
@@ -88,6 +91,7 @@
 public void setKind(int kind) {
 	this.kind = kind;
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	switch (this.kind) {
 		case K_CLASS :
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.java
index 34174f3..376e537 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnReferenceExpressionName.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 IBM Corporation and others.
+ * Copyright (c) 2014, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,9 +18,14 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 
 public class CompletionOnReferenceExpressionName extends ReferenceExpression {
 	
+	public CompletionOnReferenceExpressionName(Scanner scanner) {
+		super(scanner);
+	}
+
 	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.java
index bcf7f05..511f77d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleNameReference.java
@@ -52,12 +52,14 @@
 		this.isInsideAnnotationAttribute = isInsideAnnotationAttribute;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<CompleteOnName:"); //$NON-NLS-1$
 		return super.printExpression(0, output).append('>');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		if(scope instanceof MethodScope) {
 			throw new CompletionNodeFound(this, scope, ((MethodScope)scope).insideTypeAnnotation);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.java
index 734eea4..00d9767 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnSingleTypeReference.java
@@ -46,15 +46,18 @@
 	this.isCompletionNode = true;
 	this.kind = kind;
 }
+@Override
 public void aboutToResolve(Scope scope) {
 	getTypeBinding(scope);
 }
 /*
  * No expansion of the completion reference into an array one
  */
+@Override
 public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 	return this;
 }
+@Override
 protected TypeBinding getTypeBinding(Scope scope) {
     if (this.fieldTypeCompletionNode != null) {
 		throw new CompletionNodeFound(this.fieldTypeCompletionNode, scope);
@@ -77,6 +80,7 @@
 public boolean isSuperType(){
 	return this.kind == K_CLASS || this.kind == K_INTERFACE;
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output){
 	switch (this.kind) {
 		case K_CLASS :
@@ -94,6 +98,7 @@
 	}
 	return output.append(this.token).append('>');
 }
+@Override
 public TypeBinding resolveTypeEnclosing(BlockScope scope, ReferenceBinding enclosingType) {
     if (this.fieldTypeCompletionNode != null) {
 		throw new CompletionNodeFound(this.fieldTypeCompletionNode, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.java
index 7dff914..690a8c8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnStringLiteral.java
@@ -47,13 +47,16 @@
 		this.contentStart = cs;
 		this.contentEnd = ce;
 	}
+	@Override
 	public TypeBinding resolveType(ClassScope scope) {
 		throw new CompletionNodeFound(this, null, scope);
 	}
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		throw new CompletionNodeFound(this, null, scope);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<CompletionOnString:"); //$NON-NLS-1$
 		output = super.printExpression(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.java
new file mode 100644
index 0000000..fd1be47
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesQualifiedTypeReference.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnUsesQualifiedTypeReference extends CompletionOnQualifiedTypeReference {
+
+	public CompletionOnUsesQualifiedTypeReference(char[][] previousIdentifiers, char[] completionIdentifier,
+			long[] positions) {
+		super(previousIdentifiers, completionIdentifier, positions);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.java
new file mode 100644
index 0000000..e4a5dbe
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionOnUsesSingleTypeReference.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
+
+public class CompletionOnUsesSingleTypeReference extends CompletionOnSingleTypeReference {
+
+	public CompletionOnUsesSingleTypeReference(char[] source, long pos) {
+		super(source, pos);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
index 0cd4b10..4176623 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -9,6 +9,9 @@
  *		IBM Corporation - initial API and implementation
  *		Stephan Herrmann - Contribution for
  *								bug 401035 - [1.8] A few tests have started failing recently
+ *      Jesper Steen Møller - Contributions for
+ *                               bug 529552 - [18.3] Add 'var' in completions
+ *                               Bug 529556 - [18.3] Add content assist support for 'var' as a type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.codeassist.complete;
 
@@ -85,6 +88,14 @@
 	// added for https://bugs.eclipse.org/bugs/show_bug.cgi?id=261534
 	protected static final int K_BETWEEN_INSTANCEOF_AND_RPAREN = COMPLETION_PARSER + 41;
 	protected static final int K_INSIDE_IMPORT_STATEMENT = COMPLETION_PARSER + 43;
+	protected static final int K_INSIDE_EXPORTS_STATEMENT = COMPLETION_PARSER + 44;
+	protected static final int K_INSIDE_REQUIRES_STATEMENT = COMPLETION_PARSER + 45;
+	protected static final int K_INSIDE_USES_STATEMENT = COMPLETION_PARSER + 46;
+	protected static final int K_INSIDE_PROVIDES_STATEMENT = COMPLETION_PARSER + 47;
+	protected static final int K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT = COMPLETION_PARSER + 48;
+	protected static final int K_AFTER_NAME_IN_PROVIDES_STATEMENT = COMPLETION_PARSER + 49;
+	protected static final int K_AFTER_WITH_IN_PROVIDES_STATEMENT = COMPLETION_PARSER + 50;
+	protected static final int K_INSIDE_OPENS_STATEMENT = COMPLETION_PARSER + 51;
 
 
 	public final static char[] FAKE_TYPE_NAME = new char[]{' '};
@@ -226,6 +237,7 @@
 	this.record = true;
 	this.skipRecord = false;
 }
+@Override
 public char[] assistIdentifier(){
 	return ((CompletionScanner)this.scanner).completionIdentifier;
 }
@@ -249,16 +261,17 @@
 		if (this.currentElement instanceof RecoveredUnit){
 			if (orphan instanceof ImportReference){
 				this.currentElement.add((ImportReference)orphan, 0);
+			} else if (orphan instanceof ModuleDeclaration) {
+				this.currentElement.add((ModuleDeclaration)orphan, 0);
 			}
-		}
-
-		/* if in context of a type, then persists the identifier into a fake field return type */
-		if (this.currentElement instanceof RecoveredType){
+		} else if (this.currentElement instanceof RecoveredType){	/* if in context of a type, then persists the identifier into a fake field return type */
 			RecoveredType recoveredType = (RecoveredType)this.currentElement;
 			/* filter out cases where scanner is still inside type header */
 			if (recoveredType.foundOpeningBrace) {
 				/* generate a pseudo field with a completion on type reference */
 				if (orphan instanceof TypeReference){
+					if (isInsideModuleInfo()) return; //taken care elsewhere
+
 					TypeReference fieldType;
 
 					int kind = topKnownElementKind(COMPLETION_OR_ASSIST_PARSER);
@@ -393,10 +406,32 @@
 				if (this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_MEMBER_VALUE_ARRAY_INITIALIZER ) {
 					ArrayInitializer arrayInitializer = new ArrayInitializer();
 					arrayInitializer.expressions = new Expression[]{expression};
+					char[] memberValueName = VALUE;
+					if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER, 1) == K_ATTRIBUTE_VALUE_DELIMITER) {
+						if (this.identifierLengthPtr > 0) {
+							memberValueName = this.identifierStack[this.identifierPtr];
+							int length = this.identifierLengthStack[this.identifierLengthPtr--];
+							this.identifierPtr -= length;
+						}
+					}
+					MemberValuePair memberValuePair = new MemberValuePair(memberValueName, expression.sourceStart,
+							expression.sourceEnd, arrayInitializer);
+					// The following if-statement is the result of inlining a call of buildMoreAnnotationCompletionContext
+					// that was previously here. It might not be needed.
+					if (this.astLengthPtr > -1) {
+						this.astLengthPtr--;
+					}
+					TypeReference typeReference = getAnnotationType();
 
-					MemberValuePair valuePair =
-							new MemberValuePair(VALUE, expression.sourceStart, expression.sourceEnd, arrayInitializer);
-						buildMoreAnnotationCompletionContext(valuePair);
+					NormalAnnotation annotation = new NormalAnnotation(typeReference, this.intStack[this.intPtr--]);
+					annotation.memberValuePairs = new MemberValuePair[] { memberValuePair };
+
+					CompletionOnAnnotationOfType fakeType = new CompletionOnAnnotationOfType(FAKE_TYPE_NAME,
+							this.compilationUnit.compilationResult(), annotation);
+
+					this.currentElement.add(fakeType, 0);
+					this.pendingAnnotation = fakeType;
+					this.assistNodeParent = new AssistNodeParentAnnotationArrayInitializer(typeReference, memberValueName);
 				} else if(this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN) {
 					if (expression instanceof SingleNameReference) {
 						SingleNameReference nameReference = (SingleNameReference) expression;
@@ -538,6 +573,9 @@
 	if ((!isInsideMethod() && !isInsideFieldInitialization() && !isInsideAttributeValue())) {
 		return;
 	}
+	if(this.assistNodeParent instanceof AssistNodeParentAnnotationArrayInitializer) {
+		return;
+	}
 
 	if(this.genericsPtr > -1) {
 		ASTNode node = this.genericsStack[this.genericsPtr];
@@ -622,9 +660,22 @@
 		}
 	}
 }
+
+private static class SavedState {
+	final ASTNode assistNodeParent;
+	final int parserCursorLocation;
+	final int scannerCursorLocation;
+
+	public SavedState(int parserCursorLocation, int scannerCursorLocation, ASTNode assistNodeParent) {
+		this.parserCursorLocation = parserCursorLocation;
+		this.scannerCursorLocation = scannerCursorLocation;
+		this.assistNodeParent = assistNodeParent;
+	}	
+}
+@Override
 public Object becomeSimpleParser() {
 	CompletionScanner completionScanner = (CompletionScanner)this.scanner;
-	int[] parserState = new int[] {this.cursorLocation, completionScanner.cursorLocation};
+	SavedState parserState = new SavedState(this.cursorLocation, completionScanner.cursorLocation, this.assistNodeParent);
 	
 	this.cursorLocation = Integer.MAX_VALUE;
 	completionScanner.cursorLocation = Integer.MAX_VALUE;
@@ -691,6 +742,7 @@
 					typeReference,
 					this.intStack[this.intPtr--]);
 		annotation.memberValuePairs = memberValuePairs;
+		this.assistNodeParent = annotation;
 
 	}
 	CompletionOnAnnotationOfType fakeType =
@@ -1302,12 +1354,15 @@
 		this.currentElement = this.currentElement.add(exceptionRef, 0);
 	}
 }
+@Override
 public int bodyEnd(AbstractMethodDeclaration method){
 	return this.cursorLocation;
 }
+@Override
 public int bodyEnd(Initializer initializer){
 	return this.cursorLocation;
 }
+@Override
 protected void checkAndSetModifiers(int flag) {
 	super.checkAndSetModifiers(flag);
 
@@ -1315,6 +1370,7 @@
 		this.hasUnusedModifiers = true;
 	}
 }
+@Override
 protected void consumePushCombineModifiers() {
 	super.consumePushCombineModifiers();
 
@@ -1455,6 +1511,7 @@
 private boolean checkKeyword() {
 	if (this.currentElement instanceof RecoveredUnit) {
 		RecoveredUnit unit = (RecoveredUnit) this.currentElement;
+		if (unit.unitDeclaration.isModuleInfo()) return false;
 		int index = -1;
 		if ((index = this.indexOfAssistIdentifier()) > -1) {
 			int ptr = this.identifierPtr - this.identifierLengthStack[this.identifierLengthPtr] + index + 1;
@@ -1517,6 +1574,78 @@
 	}
 	return false;
 }
+
+private enum ModuleKeyword {
+	FIRST_ALL,
+	TO,
+	PROVIDES_WITH,
+	NOT_A_KEYWORD
+}
+
+private ModuleKeyword getKeyword() {
+	ModuleKeyword keyword = ModuleKeyword.FIRST_ALL;
+	if (isInModuleStatements()) {
+		if (foundToken(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT)) keyword = ModuleKeyword.TO;
+		else if (foundToken(K_AFTER_NAME_IN_PROVIDES_STATEMENT)) keyword = ModuleKeyword.PROVIDES_WITH;
+		else keyword = ModuleKeyword.NOT_A_KEYWORD;
+	}
+	return keyword;
+}
+private char[][] getModuleKeywords(ModuleKeyword keyword) {
+	if (keyword == ModuleKeyword.TO) return new char[][]{Keywords.TO};
+	else if (keyword == ModuleKeyword.PROVIDES_WITH) return new char[][]{Keywords.WITH};
+	else return new char[][]{Keywords.EXPORTS, Keywords.OPENS, Keywords.REQUIRES, Keywords.PROVIDES, Keywords.USES};
+}
+private boolean checkModuleInfoConstructs() {
+
+	if (!isInsideModuleInfo()) return false;
+
+	int index = -1;
+	if ((index = this.indexOfAssistIdentifier()) <= -1) return false;
+	
+	if (this.currentElement instanceof RecoveredModule) {
+		RecoveredModule module = (RecoveredModule) this.currentElement;
+		if (checkModuleInfoKeyword(module, index)) return true;
+	} else  {
+		ModuleKeyword keyword = ModuleKeyword.NOT_A_KEYWORD;
+		if (isInModuleStatements()) {
+			if (foundToken(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT)) keyword =  ModuleKeyword.TO;
+			if (foundToken(K_AFTER_NAME_IN_PROVIDES_STATEMENT)) keyword = ModuleKeyword.PROVIDES_WITH;
+		}
+		if (keyword == ModuleKeyword.NOT_A_KEYWORD) return false;
+		
+		int length = this.identifierLengthStack[this.identifierLengthPtr];
+		int ptr = this.identifierPtr - length + index + 1;
+		
+		char[] ident = this.identifierStack[ptr];
+		long pos = this.identifierPositionStack[ptr];		
+		char[][] keywords = getModuleKeywords(keyword);		
+		if (this.currentElement instanceof RecoveredPackageVisibilityStatement) {
+			RecoveredPackageVisibilityStatement rPvs = (RecoveredPackageVisibilityStatement) this.currentElement;
+			rPvs.add(new CompletionOnKeywordModule2(ident, pos, keywords), 0);
+			return true;
+		} else if (this.currentElement instanceof RecoveredProvidesStatement) {
+			RecoveredProvidesStatement rPs = (RecoveredProvidesStatement) this.currentElement;
+			rPs.add(new CompletionOnKeyword1(ident, pos, keywords), 0);
+			return true;
+		}
+	} 
+	return false;
+}
+private boolean checkModuleInfoKeyword(RecoveredModule module, int index) {
+	ModuleKeyword keyword = getKeyword();
+	if (keyword == ModuleKeyword.NOT_A_KEYWORD) return false;
+
+	int length = this.identifierLengthStack[this.identifierLengthPtr];
+	int ptr = this.identifierPtr - length + index + 1;
+
+	char[] ident = this.identifierStack[ptr];
+	long pos = this.identifierPositionStack[ptr];
+	char[][] keywords = getModuleKeywords(keyword);
+	module.add(new CompletionOnKeywordModuleInfo(ident, pos, keywords), 0);
+	return true;
+}
+
 private boolean checkInstanceofKeyword() {
 	if(isInsideMethod()) {
 		int kind = topKnownElementKind(COMPLETION_OR_ASSIST_PARSER);
@@ -2037,13 +2166,16 @@
 
 	if (checkMemberValueName()) return;
 	if (checkKeyword()) return;
+	if (checkModuleInfoConstructs()) return;
 	if (checkRecoveredType()) return;
 	if (checkRecoveredMethod()) return;
 
 	// if not in a method in non diet mode and if not inside a field initializer, only record references attached to types
 	if (!(isInsideMethod() && !this.diet)
 		&& !isIndirectlyInsideFieldInitialization()
-		&& !isInsideAttributeValue()) return;
+		&& !isIndirectlyInsideEnumConstantnitialization()
+		&& !isInsideAttributeValue()
+		&& !isInsideModuleInfo()) return;
 
 	/*
 	 	In some cases, the completion identifier may not have yet been consumed,
@@ -2072,6 +2204,7 @@
 	// no need to check further if we are not at the cursor location
 	if (this.indexOfAssistIdentifier() < 0) return;
 
+	if (checkModuleInfoConstructs()) return;
 	if (checkClassInstanceCreation()) return;
 	if (checkMemberAccess()) return;
 	if (checkClassLiteralAccess()) return;
@@ -2086,25 +2219,31 @@
 	if (checkLabelStatement()) return;
 	if (checkNameCompletion()) return;
 }
+@Override
 protected void consumeArrayCreationExpressionWithInitializer() {
 	super.consumeArrayCreationExpressionWithInitializer();
 	popElement(K_ARRAY_CREATION);
 }
+@Override
 protected void consumeArrayCreationExpressionWithoutInitializer() {
 	super.consumeArrayCreationExpressionWithoutInitializer();
 	popElement(K_ARRAY_CREATION);
 }
+@Override
 protected void consumeArrayCreationHeader() {
 	// nothing to do
 }
+@Override
 protected void consumeAssignment() {
 	popElement(K_ASSISGNMENT_OPERATOR);
 	super.consumeAssignment();
 }
+@Override
 protected void consumeAssignmentOperator(int pos) {
 	super.consumeAssignmentOperator(pos);
 	pushOnElementStack(K_ASSISGNMENT_OPERATOR, pos);
 }
+@Override
 protected void consumeBinaryExpression(int op) {
 	super.consumeBinaryExpression(op);
 	popElement(K_BINARY_OPERATOR);
@@ -2116,6 +2255,7 @@
 		}
 	}
 }
+@Override
 protected void consumeBinaryExpressionWithName(int op) {
 	super.consumeBinaryExpressionWithName(op);
 	popElement(K_BINARY_OPERATOR);
@@ -2127,12 +2267,14 @@
 		}
 	}
 }
+@Override
 protected void consumeCaseLabel() {
 	super.consumeCaseLabel();
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) != K_SWITCH_LABEL) {
 		pushOnElementStack(K_SWITCH_LABEL);
 	}
 }
+@Override
 protected void consumeCastExpressionWithPrimitiveType() {
 	popElement(K_CAST_STATEMENT);
 
@@ -2145,6 +2287,7 @@
 	cast.sourceStart = castType.sourceStart - 1;
 	cast.sourceEnd = exp.sourceEnd;
 }
+@Override
 protected void consumeCastExpressionWithGenericsArray() {
 	popElement(K_CAST_STATEMENT);
 
@@ -2158,6 +2301,7 @@
 	cast.sourceEnd = exp.sourceEnd;
 }
 
+@Override
 protected void consumeCastExpressionWithQualifiedGenericsArray() {
 	popElement(K_CAST_STATEMENT);
 
@@ -2170,6 +2314,7 @@
 	cast.sourceStart = castType.sourceStart - 1;
 	cast.sourceEnd = exp.sourceEnd;
 }
+@Override
 protected void consumeCastExpressionWithNameArray() {
 	// CastExpression ::= PushLPAREN Name Dims PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
 	popElement(K_CAST_STATEMENT);
@@ -2183,10 +2328,12 @@
 	cast.sourceStart = castType.sourceStart - 1;
 	cast.sourceEnd = exp.sourceEnd;
 }
+@Override
 protected void consumeCastExpressionLL1() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionLL1();
 }
+@Override
 protected void consumeCatchFormalParameter() {
 	if (this.indexOfAssistIdentifier() < 0) {
 		super.consumeCatchFormalParameter();
@@ -2231,19 +2378,20 @@
 		this.listLength++;
 	}
 }
+@Override
 protected void consumeClassBodyDeclaration() {
 	popElement(K_BLOCK_DELIMITER);
 	super.consumeClassBodyDeclaration();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeClassBodyopt() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeClassBodyopt();
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeClassDeclaration()
- */
+
+@Override
 protected void consumeClassDeclaration() {
 	if (this.astPtr >= 0) {
 		int length = this.astLengthStack[this.astLengthPtr];
@@ -2260,6 +2408,7 @@
 	}
 	super.consumeClassDeclaration();
 }
+@Override
 protected void consumeClassHeaderName1() {
 	super.consumeClassHeaderName1();
 	this.hasUnusedModifiers = false;
@@ -2270,6 +2419,7 @@
 	classHeaderExtendsOrImplements(false);
 }
 
+@Override
 protected void consumeClassHeaderExtends() {
 	pushOnElementStack(K_NEXT_TYPEREF_IS_CLASS);
 	super.consumeClassHeaderExtends();
@@ -2308,6 +2458,7 @@
 		}
 	}
 }
+@Override
 protected void consumeClassHeaderImplements() {
 	super.consumeClassHeaderImplements();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -2323,20 +2474,20 @@
 		}
 	}
 }
+@Override
 protected void consumeClassInstanceCreationExpressionName() {
 	super.consumeClassInstanceCreationExpressionName();
 	this.invocationType = QUALIFIED_ALLOCATION;
 	this.qualifier = this.expressionPtr;
 }
+@Override
 protected void consumeClassTypeElt() {
 	pushOnElementStack(K_NEXT_TYPEREF_IS_EXCEPTION);
 	super.consumeClassTypeElt();
 	popElement(K_NEXT_TYPEREF_IS_EXCEPTION);
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeCompilationUnit()
- */
+@Override
 protected void consumeCompilationUnit() {
 	this.javadoc = null;
 	checkComment();
@@ -2354,22 +2505,27 @@
 	}
 	super.consumeCompilationUnit();
 }
+@Override
 protected void consumeConditionalExpression(int op) {
 	popElement(K_CONDITIONAL_OPERATOR);
 	super.consumeConditionalExpression(op);
 }
+@Override
 protected void consumeConditionalExpressionWithName(int op) {
 	popElement(K_CONDITIONAL_OPERATOR);
 	super.consumeConditionalExpressionWithName(op);
 }
+@Override
 protected void consumeConstructorBody() {
 	popElement(K_BLOCK_DELIMITER);
 	super.consumeConstructorBody();
 }
+@Override
 protected void consumeConstructorHeader() {
 	super.consumeConstructorHeader();
 	pushOnElementStack(K_BLOCK_DELIMITER);
 }
+@Override
 protected void consumeConstructorHeaderName() {
 
 	/* no need to take action if not inside assist identifiers */
@@ -2401,6 +2557,7 @@
 	pushOnGenericsLengthStack(0); // handle type arguments
 	this.restartRecovery = true;
 }
+@Override
 protected void consumeConstructorHeaderNameWithTypeParameters() {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -2418,6 +2575,7 @@
 		this.sourceEnds.put(this.astStack[this.astPtr], selectorSourceEnd);
 	}
 }
+@Override
 protected void consumeDefaultLabel() {
 	super.consumeDefaultLabel();
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SWITCH_LABEL) {
@@ -2425,10 +2583,12 @@
 	}
 	pushOnElementStack(K_SWITCH_LABEL, DEFAULT);
 }
+@Override
 protected void consumeDimWithOrWithOutExpr() {
 	// DimWithOrWithOutExpr ::= '[' ']'
 	pushOnExpressionStack(null);
 }
+@Override
 protected void consumeEmptyStatement() {
 	super.consumeEmptyStatement();
 	/* Sneak in the assist node. The reason we can't do that when we see the assist node is that 
@@ -2448,6 +2608,7 @@
 			this.shouldStackAssistNode = false;
 	}
 }
+@Override
 protected void consumeEnhancedForStatement() {
 	super.consumeEnhancedForStatement();
 
@@ -2455,6 +2616,7 @@
 		popElement(K_CONTROL_STATEMENT_DELIMITER);
 	}
 }
+@Override
 protected void consumeEnhancedForStatementHeaderInit(boolean hasModifiers) {
 	super.consumeEnhancedForStatementHeaderInit(hasModifiers);
 	this.hasUnusedModifiers = false;
@@ -2463,11 +2625,13 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeEnterAnonymousClassBody(boolean qualified) {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeEnterAnonymousClassBody(qualified);
 }
+@Override
 protected void consumeEnterVariable() {
 	this.identifierPtr--;
 	this.identifierLengthPtr--;
@@ -2540,6 +2704,7 @@
 		}
 	}
 }
+@Override
 protected void consumeEnumConstantHeaderName() {
 	if (this.currentElement != null) {
 		if (!(this.currentElement instanceof RecoveredType
@@ -2555,6 +2720,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeEnumConstantNoClassBody() {
 	super.consumeEnumConstantNoClassBody();
 	if ((this.currentToken == TokenNameCOMMA || this.currentToken == TokenNameSEMICOLON)
@@ -2564,6 +2730,7 @@
 		}
 	}
 }
+@Override
 protected void consumeEnumConstantWithClassBody() {
 	super.consumeEnumConstantWithClassBody();
 	if ((this.currentToken == TokenNameCOMMA || this.currentToken == TokenNameSEMICOLON)
@@ -2573,6 +2740,7 @@
 		}
 	}
 }
+@Override
 protected void consumeEnumHeaderName() {
 	super.consumeEnumHeaderName();
 	this.hasUnusedModifiers = false;
@@ -2581,6 +2749,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeEnumHeaderNameWithTypeParameters() {
 	super.consumeEnumHeaderNameWithTypeParameters();
 	if (this.pendingAnnotation != null) {
@@ -2588,6 +2757,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeEqualityExpression(int op) {
 	super.consumeEqualityExpression(op);
 	popElement(K_BINARY_OPERATOR);
@@ -2597,6 +2767,7 @@
 		this.assistNodeParent = exp;
 	}
 }
+@Override
 protected void consumeEqualityExpressionWithName(int op) {
 	super.consumeEqualityExpressionWithName(op);
 	popElement(K_BINARY_OPERATOR);
@@ -2606,6 +2777,7 @@
 		this.assistNodeParent = exp;
 	}
 }
+@Override
 protected void consumeExitVariableWithInitialization() {
 	super.consumeExitVariableWithInitialization();
 	if ((this.currentToken == TokenNameCOMMA || this.currentToken == TokenNameSEMICOLON)
@@ -2619,7 +2791,11 @@
 	AbstractVariableDeclaration variable = (AbstractVariableDeclaration) this.astStack[this.astPtr];
 	if (this.cursorLocation + 1 < variable.initialization.sourceStart ||
 		this.cursorLocation > variable.initialization.sourceEnd) {
-		variable.initialization = null;
+		if (!variable.type.isTypeNameVar(null)) {
+			if (! (variable instanceof LocalDeclaration && ((LocalDeclaration)variable).isTypeNameVar(this.compilationUnit.scope))) {
+				variable.initialization = null;
+			}
+		}
 	} else if (this.assistNode != null && this.assistNode == variable.initialization) {
 			this.assistNodeParent = variable;
 	}
@@ -2629,6 +2805,7 @@
 		}
 	}
 }
+@Override
 protected void consumeExitVariableWithoutInitialization() {
 	// ExitVariableWithoutInitialization ::= $empty
 	// do nothing by default
@@ -2640,6 +2817,7 @@
 		}
 	}
 }
+@Override
 protected void consumeExplicitConstructorInvocation(int flag, int recFlag) {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
@@ -2650,6 +2828,7 @@
  * If the cursor location is on the field access, then create a
  * CompletionOnMemberAccess instead.
  */
+@Override
 protected void consumeFieldAccess(boolean isSuperAccess) {
 	// FieldAccess ::= Primary '.' 'Identifier'
 	// FieldAccess ::= 'super' '.' 'Identifier'
@@ -2664,12 +2843,14 @@
 		pushCompletionOnMemberAccessOnExpressionStack(isSuperAccess);
 	}
 }
+@Override
 protected void consumeForceNoDiet() {
 	super.consumeForceNoDiet();
 	if (isInsideMethod()) {
 		pushOnElementStack(K_LOCAL_INITIALIZER_DELIMITER);
 	}
 }
+@Override
 protected void consumeFormalParameter(boolean isVarArgs) {
 	
 	this.invocationType = NO_RECEIVER;
@@ -2756,6 +2937,7 @@
 		this.listLength++;
 	}
 }
+@Override
 protected void consumeGenericTypeWithDiamond() {
 	super.consumeGenericTypeWithDiamond();
 	// we need to pop the <> of the diamond from the stack.
@@ -2764,6 +2946,7 @@
 	popElement(K_BINARY_OPERATOR); // pop >
 	popElement(K_BINARY_OPERATOR); // pop <
 }
+@Override
 protected void consumeStatementFor() {
 	super.consumeStatementFor();
 
@@ -2771,6 +2954,7 @@
 		popElement(K_CONTROL_STATEMENT_DELIMITER);
 	}
 }
+@Override
 protected void consumeStatementIfNoElse() {
 	super.consumeStatementIfNoElse();
 
@@ -2778,6 +2962,7 @@
 		popElement(K_CONTROL_STATEMENT_DELIMITER);
 	}
 }
+@Override
 protected void consumeStatementIfWithElse() {
 	super.consumeStatementIfWithElse();
 
@@ -2785,6 +2970,7 @@
 		popElement(K_CONTROL_STATEMENT_DELIMITER);
 	}
 }
+@Override
 protected void consumeInsideCastExpression() {
 	TypeReference[] bounds = null;
 	int additionalBoundsLength = this.genericsLengthStack[this.genericsLengthPtr--];
@@ -2822,6 +3008,7 @@
 
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionLL1() {
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_PARAMETERIZED_CAST) {
 		popElement(K_PARAMETERIZED_CAST);
@@ -2845,6 +3032,7 @@
 	}
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionLL1WithBounds() {
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_PARAMETERIZED_CAST) {
 		popElement(K_PARAMETERIZED_CAST);
@@ -2871,6 +3059,7 @@
 	}
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionWithQualifiedGenerics() {
 	popElement(K_PARAMETERIZED_CAST);
 
@@ -2902,6 +3091,7 @@
 
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInstanceOfExpression() {
 	super.consumeInstanceOfExpression();
 	popElement(K_BINARY_OPERATOR);
@@ -2915,6 +3105,7 @@
 		this.assistNodeParent = exp;
 	}
 }
+@Override
 protected void consumeInstanceOfExpressionWithName() {
 	super.consumeInstanceOfExpressionWithName();
 	popElement(K_BINARY_OPERATOR);
@@ -2924,6 +3115,7 @@
 		this.assistNodeParent = exp;
 	}
 }
+@Override
 protected void consumeInterfaceHeaderName1() {
 	super.consumeInterfaceHeaderName1();
 	this.hasUnusedModifiers = false;
@@ -2933,45 +3125,54 @@
 	}
 	classHeaderExtendsOrImplements(true);
 }
+@Override
 protected void consumeInterfaceHeaderExtends() {
 	super.consumeInterfaceHeaderExtends();
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeInterfaceType() {
 	pushOnElementStack(K_NEXT_TYPEREF_IS_INTERFACE);
 	super.consumeInterfaceType();
 	popElement(K_NEXT_TYPEREF_IS_INTERFACE);
 }
+@Override
 protected void consumeMethodInvocationName() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationName();
 }
+@Override
 protected void consumeMethodInvocationNameWithTypeArguments() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationNameWithTypeArguments();
 }
+@Override
 protected void consumeMethodInvocationPrimary() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationPrimary();
 }
+@Override
 protected void consumeMethodInvocationPrimaryWithTypeArguments() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationPrimaryWithTypeArguments();
 }
+@Override
 protected void consumeMethodInvocationSuper() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationSuper();
 }
+@Override
 protected void consumeMethodInvocationSuperWithTypeArguments() {
 	popElement(K_SELECTOR_QUALIFIER);
 	popElement(K_SELECTOR_INVOCATION_TYPE);
 	super.consumeMethodInvocationSuperWithTypeArguments();
 }
+@Override
 protected void consumeMethodHeaderName(boolean isAnnotationMethod) {
 	if(this.indexOfAssistIdentifier() < 0) {
 		this.identifierPtr--;
@@ -3106,6 +3307,7 @@
 		}
 	}
 }
+@Override
 protected void consumeMethodHeaderNameWithTypeParameters( boolean isAnnotationMethod) {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -3119,6 +3321,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeMethodHeaderRightParen() {
 	super.consumeMethodHeaderRightParen();
 
@@ -3152,6 +3355,7 @@
 		}
 	}
 }
+@Override
 protected void consumeMethodHeaderExtendedDims() {
 	super.consumeMethodHeaderExtendedDims();
 
@@ -3183,6 +3387,7 @@
 		}
 	}
 }
+@Override
 protected void consumeAnnotationAsModifier() {
 	super.consumeAnnotationAsModifier();
 
@@ -3190,6 +3395,7 @@
 		this.hasUnusedModifiers = true;
 	}
 }
+@Override
 protected void consumeAdditionalBound() {
 	super.consumeAdditionalBound();
 	ASTNode node = this.genericsStack[this.genericsPtr];
@@ -3199,6 +3405,7 @@
 		((CompletionOnQualifiedTypeReference) node).setKind(CompletionOnQualifiedTypeReference.K_INTERFACE);
 	}
 }
+@Override
 protected void consumeAdditionalBound1() {
 	super.consumeAdditionalBound1();
 	ASTNode node = this.genericsStack[this.genericsPtr];
@@ -3208,6 +3415,7 @@
 		((CompletionOnQualifiedTypeReference) node).setKind(CompletionOnQualifiedTypeReference.K_INTERFACE);
 	}
 }
+@Override
 protected void consumeAnnotationName() {
 	int index;
 
@@ -3265,6 +3473,7 @@
 
 	this.pushOnElementStack(K_BETWEEN_ANNOTATION_NAME_AND_RPAREN, LPAREN_NOT_CONSUMED | ANNOTATION_NAME_COMPLETION);
 }
+@Override
 protected void consumeAnnotationTypeDeclarationHeaderName() {
 	super.consumeAnnotationTypeDeclarationHeaderName();
 	this.hasUnusedModifiers = false;
@@ -3273,6 +3482,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() {
 	super.consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters();
 	this.hasUnusedModifiers = false;
@@ -3281,6 +3491,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumeLabel() {
 	super.consumeLabel();
 	pushOnLabelStack(this.identifierStack[this.identifierPtr]);
@@ -3293,6 +3504,7 @@
 	if (this.assistNode == null || !(this.assistNode.sourceStart >= expression.sourceStart && this.assistNode.sourceEnd <= expression.sourceEnd))
 		popElement(K_LAMBDA_EXPRESSION_DELIMITER);
 }
+@Override
 protected void consumeMarkerAnnotation(boolean isTypeAnnotation) {
 	if (this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN &&
 			(this.topKnownElementInfo(COMPLETION_OR_ASSIST_PARSER) & ANNOTATION_NAME_COMPLETION) != 0 ) {
@@ -3303,6 +3515,7 @@
 		super.consumeMarkerAnnotation(isTypeAnnotation);
 	}
 }
+@Override
 protected void consumeMemberValuePair() {
 	/* check if current awaiting identifier is the completion identifier */
 	if (this.indexOfAssistIdentifier() < 0){
@@ -3331,36 +3544,63 @@
 
 	this.restartRecovery = true;
 }
+@Override
 protected void consumeMemberValueAsName() {
 	if ((indexOfAssistIdentifier()) < 0) {
 		super.consumeMemberValueAsName();
 	} else {
 		super.consumeMemberValueAsName();
-		if(this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN) {
+		final int topKnownElementKind = this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER);
+		if(topKnownElementKind == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN || topKnownElementKind == K_MEMBER_VALUE_ARRAY_INITIALIZER) {
 			this.restartRecovery = true;
 		}
 	}
 }
+@Override
 protected void consumeMethodBody() {
 	popElement(K_BLOCK_DELIMITER);
 	super.consumeMethodBody();
 }
+@Override
 protected void consumeMethodHeader() {
 	super.consumeMethodHeader();
 	pushOnElementStack(K_BLOCK_DELIMITER);
 }
+@Override
 protected void consumeMethodDeclaration(boolean isNotAbstract, boolean isDefaultMethod) {
 	if (!isNotAbstract) {
 		popElement(K_BLOCK_DELIMITER);
 	}
 	super.consumeMethodDeclaration(isNotAbstract, isDefaultMethod);
 }
+@Override
 protected void consumeModifiers() {
 	super.consumeModifiers();
 	// save from stack values
 	this.lastModifiersStart = this.intStack[this.intPtr];
 	this.lastModifiers = 	this.intStack[this.intPtr-1];
 }
+@Override
+protected void consumeModuleHeader() {
+	super.consumeModuleHeader();
+}
+@Override
+protected void consumeProvidesInterface() {
+	super.consumeProvidesInterface();
+	pushOnElementStack(K_AFTER_NAME_IN_PROVIDES_STATEMENT);
+}
+@Override
+protected void consumeProvidesStatement() {
+	super.consumeProvidesStatement();
+	popElement(K_INSIDE_PROVIDES_STATEMENT);
+}
+@Override
+protected void consumeWithClause() {
+	super.consumeWithClause();
+	popElement(K_AFTER_WITH_IN_PROVIDES_STATEMENT);
+}
+
+@Override
 protected void consumeReferenceType() {
 	if (this.identifierLengthStack[this.identifierLengthPtr] > 1) { // reducing a qualified name
 		// potential receiver is being poped, so reset potential receiver
@@ -3369,12 +3609,30 @@
 	}
 	super.consumeReferenceType();
 }
+@Override
+protected void consumeRequiresStatement() {
+	super.consumeRequiresStatement();
+	popElement(K_INSIDE_REQUIRES_STATEMENT);
+}
+@Override
 protected void consumeRestoreDiet() {
 	super.consumeRestoreDiet();
 	if (isInsideMethod()) {
 		popElement(K_LOCAL_INITIALIZER_DELIMITER);
 	}
 }
+@Override
+protected void consumeExportsStatement() {
+	super.consumeExportsStatement();
+	popElement(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT);
+	popElement(K_INSIDE_EXPORTS_STATEMENT);
+}
+@Override
+protected void consumeSinglePkgName() {
+	super.consumeSinglePkgName();
+	pushOnElementStack(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT);
+}
+@Override
 protected void consumeSingleMemberAnnotation(boolean isTypeAnnotation) {
 	if (this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN &&
 			(this.topKnownElementInfo(COMPLETION_OR_ASSIST_PARSER) & ANNOTATION_NAME_COMPLETION) != 0 ) {
@@ -3385,14 +3643,17 @@
 		super.consumeSingleMemberAnnotation(isTypeAnnotation);
 	}
 }
+@Override
 protected void consumeSingleStaticImportDeclarationName() {
 	super.consumeSingleStaticImportDeclarationName();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeSingleTypeImportDeclarationName() {
 	super.consumeSingleTypeImportDeclarationName();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeStatementBreakWithLabel() {
 	super.consumeStatementBreakWithLabel();
 	if (this.record) {
@@ -3403,10 +3664,12 @@
 	}
 
 }
+@Override
 protected void consumeStatementLabel() {
 	popElement(K_LABEL);
 	super.consumeStatementLabel();
 }
+@Override
 protected void consumeStatementSwitch() {
 	super.consumeStatementSwitch();
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SWITCH_LABEL) {
@@ -3414,24 +3677,29 @@
 		popElement(K_BLOCK_DELIMITER);
 	}
 }
+@Override
 protected void consumeStatementWhile() {
 	super.consumeStatementWhile();
 	if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_CONTROL_STATEMENT_DELIMITER) {
 		popElement(K_CONTROL_STATEMENT_DELIMITER);
 	}
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	super.consumeStaticImportOnDemandDeclarationName();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeStaticInitializer() {
 	super.consumeStaticInitializer();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeNestedMethod() {
 	super.consumeNestedMethod();
 	if(!(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BLOCK_DELIMITER)) pushOnElementStack(K_BLOCK_DELIMITER);
 }
+@Override
 protected void consumeNormalAnnotation(boolean isTypeAnnotation) {
 	if (this.topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN &&
 			(this.topKnownElementInfo(COMPLETION_OR_ASSIST_PARSER) & ANNOTATION_NAME_COMPLETION) != 0 ) {
@@ -3459,6 +3727,7 @@
 		super.consumeNormalAnnotation(isTypeAnnotation);
 	}
 }
+@Override
 protected void consumePackageDeclarationName() {
 	super.consumePackageDeclarationName();
 	if (this.pendingAnnotation != null) {
@@ -3466,6 +3735,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumePackageDeclarationNameWithModifiers() {
 	super.consumePackageDeclarationNameWithModifiers();
 	if (this.pendingAnnotation != null) {
@@ -3473,6 +3743,7 @@
 		this.pendingAnnotation = null;
 	}
 }
+@Override
 protected void consumePrimaryNoNewArrayName() {
 	// this is class literal access, so reset potential receiver
 	this.invocationType = NO_RECEIVER;
@@ -3480,6 +3751,7 @@
 
 	super.consumePrimaryNoNewArrayName();
 }
+@Override
 protected void consumeQualifiedSuperReceiver() {
 	// this is class literal access, so reset potential receiver
 	this.invocationType = NO_RECEIVER;
@@ -3487,6 +3759,7 @@
 
 	super.consumeQualifiedSuperReceiver();
 }
+@Override
 protected void consumePrimaryNoNewArrayNameThis() {
 	// this is class literal access, so reset potential receiver
 	this.invocationType = NO_RECEIVER;
@@ -3494,6 +3767,7 @@
 
 	super.consumePrimaryNoNewArrayNameThis();
 }
+@Override
 protected void consumePushPosition() {
 	super.consumePushPosition();
 	if(topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_BINARY_OPERATOR) {
@@ -3502,6 +3776,7 @@
 		pushOnElementStack(K_UNARY_OPERATOR, info);
 	}
 }
+@Override
 protected void consumeToken(int token) {
 	if(this.isFirst) {
 		super.consumeToken(token);
@@ -3516,7 +3791,7 @@
 	int previous = this.previousToken;
 	int prevIdentifierPtr = this.previousIdentifierPtr;
 
-	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAnnotation()) {
+	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAnnotation() || isInsideEnumConstantnitialization()) {
 		switch(token) {
 			case TokenNameLPAREN:
 				if(previous == TokenNameIdentifier &&
@@ -3568,15 +3843,30 @@
 			&& this.identifierStack[this.identifierPtr] == assistIdentifier()
 			&& this.currentElement == null
 			&& (!isIndirectlyInsideLambdaExpression() || isIndirectlyInsideLambdaBlock())
-			&& isIndirectlyInsideFieldInitialization()) {
+			&& (isIndirectlyInsideFieldInitialization() || isIndirectlyInsideEnumConstantnitialization())) {
 		this.scanner.eofPosition = this.cursorLocation < Integer.MAX_VALUE ? this.cursorLocation+1 : this.cursorLocation;
 	}
 	if (token == TokenNameimport) {
 		pushOnElementStack(K_INSIDE_IMPORT_STATEMENT);
+	}	else if (token == TokenNameexports) {
+		pushOnElementStack(K_INSIDE_EXPORTS_STATEMENT);
+	}	else if (token == TokenNameopens) {
+		pushOnElementStack(K_INSIDE_OPENS_STATEMENT);
+	}	else if (token == TokenNameto) {
+		popElement(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT);
+	}	else if (token == TokenNamerequires) {
+		pushOnElementStack(K_INSIDE_REQUIRES_STATEMENT);
+	} else if (token == TokenNameprovides) {
+		pushOnElementStack(K_INSIDE_PROVIDES_STATEMENT);
+	} else if (token == TokenNameuses) {
+		pushOnElementStack(K_INSIDE_USES_STATEMENT);
+	}	else if (token == TokenNamewith) {
+		popElement(K_AFTER_NAME_IN_PROVIDES_STATEMENT);
+		pushOnElementStack(K_AFTER_WITH_IN_PROVIDES_STATEMENT);
 	}
 
 	// if in a method or if in a field initializer
-	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAttributeValue()) {
+	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAttributeValue() || isInsideEnumConstantnitialization()) {
 		switch (token) {
 			case TokenNameDOT:
 				switch (previous) {
@@ -3718,7 +4008,7 @@
 					|| kind == K_LOCAL_INITIALIZER_DELIMITER
 					|| kind == K_ARRAY_CREATION) {
 					pushOnElementStack(K_ARRAY_INITIALIZER, this.endPosition);
-				} else if (kind == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN) {
+				} else if (kind == K_BETWEEN_ANNOTATION_NAME_AND_RPAREN || kind == K_ATTRIBUTE_VALUE_DELIMITER) {
 					pushOnElementStack(K_MEMBER_VALUE_ARRAY_INITIALIZER, this.endPosition);
 				} else {
 					if (kind == K_CONTROL_STATEMENT_DELIMITER) {
@@ -4053,18 +4343,22 @@
 		}
 	}
 }
+@Override
 protected void consumeInvocationExpression() { // on error, a message send's error reductions will take the expression path rather than the statement path since that is a dead end.
 	super.consumeInvocationExpression();
 	triggerRecoveryUponLambdaClosure(this.expressionStack[this.expressionPtr], false);
 }
+@Override
 protected void consumeReferenceExpression(ReferenceExpression referenceExpression) {
 	this.inReferenceExpression = false;
 	super.consumeReferenceExpression(referenceExpression);
 }
+@Override
 protected void consumeOnlySynchronized() {
 	super.consumeOnlySynchronized();
 	this.hasUnusedModifiers = false;
 }
+@Override
 protected void consumeOnlyTypeArguments() {
 	super.consumeOnlyTypeArguments();
 	popElement(K_BINARY_OPERATOR);
@@ -4075,59 +4369,79 @@
 		popElement(K_PARAMETERIZED_ALLOCATION);
 	}
 }
+@Override
 protected void consumeOnlyTypeArgumentsForCastExpression() {
 	super.consumeOnlyTypeArgumentsForCastExpression();
 	pushOnElementStack(K_PARAMETERIZED_CAST);
 }
+@Override
 protected void consumeOpenFakeBlock() {
 	super.consumeOpenFakeBlock();
 	pushOnElementStack(K_BLOCK_DELIMITER);
 }
+@Override
+protected void consumeOpensStatement() {
+	super.consumeOpensStatement();
+	popElement(K_AFTER_PACKAGE_IN_PACKAGE_VISIBILITY_STATEMENT);
+	popElement(K_INSIDE_OPENS_STATEMENT);
+}
+@Override
 protected void consumeRightParen() {
 	super.consumeRightParen();
 }
+@Override
 protected void consumeReferenceType1() {
 	super.consumeReferenceType1();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeReferenceType2() {
 	super.consumeReferenceType2();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeReferenceType3() {
 	super.consumeReferenceType3();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeArgumentReferenceType1() {
 	super.consumeTypeArgumentReferenceType1();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeArgumentReferenceType2() {
 	super.consumeTypeArgumentReferenceType2();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeArguments() {
 	super.consumeTypeArguments();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeHeaderNameWithTypeParameters() {
 	super.consumeTypeHeaderNameWithTypeParameters();
 
 	TypeDeclaration typeDecl = (TypeDeclaration)this.astStack[this.astPtr];
 	classHeaderExtendsOrImplements((typeDecl.modifiers & ClassFileConstants.AccInterface) != 0);
 }
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	super.consumeTypeImportOnDemandDeclarationName();
 	this.pendingAnnotation = null; // the pending annotation cannot be attached to next nodes
 }
+@Override
 protected void consumeImportDeclaration() {
 	super.consumeImportDeclaration();
 	popElement(K_INSIDE_IMPORT_STATEMENT);
 }
+@Override
 protected void consumeTypeParameters() {
 	super.consumeTypeParameters();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeParameterHeader() {
 	super.consumeTypeParameterHeader();
 	TypeParameter typeParameter = (TypeParameter) this.genericsStack[this.genericsPtr];
@@ -4157,10 +4471,12 @@
 	this.assistNode = typeParameter.type;
 	this.lastCheckPoint = typeParameter.type.sourceEnd + 1;
 }
+@Override
 protected void consumeTypeParameter1() {
 	super.consumeTypeParameter1();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeTypeParameterWithExtends() {
 	super.consumeTypeParameterWithExtends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4170,6 +4486,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeTypeParameterWithExtendsAndBounds() {
 	super.consumeTypeParameterWithExtendsAndBounds();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4179,6 +4496,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeTypeParameter1WithExtends() {
 	super.consumeTypeParameter1WithExtends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4188,6 +4506,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeTypeParameter1WithExtendsAndBounds() {
 	super.consumeTypeParameter1WithExtendsAndBounds();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4197,16 +4516,25 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeUnionType() {
 	pushOnElementStack(K_NEXT_TYPEREF_IS_EXCEPTION);
 	super.consumeUnionType();
 	popElement(K_NEXT_TYPEREF_IS_EXCEPTION);
 }
+@Override
 protected void consumeUnionTypeAsClassType() {
 	pushOnElementStack(K_NEXT_TYPEREF_IS_EXCEPTION);
 	super.consumeUnionTypeAsClassType();
 	popElement(K_NEXT_TYPEREF_IS_EXCEPTION);
 }
+@Override
+protected void consumeUsesStatement() {
+	super.consumeUsesStatement();
+	popElement(K_INSIDE_USES_STATEMENT);
+}
+
+@Override
 protected void consumeWildcard() {
 	super.consumeWildcard();
 	if (assistIdentifier() == null && this.currentToken == TokenNameIdentifier) { // Test below copied from CompletionScanner.getCurrentIdentifierSource()
@@ -4234,18 +4562,22 @@
 	this.assistNode = wildcard.bound;
 	this.lastCheckPoint = wildcard.bound.sourceEnd + 1;
 }
+@Override
 protected void consumeWildcard1() {
 	super.consumeWildcard1();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeWildcard2() {
 	super.consumeWildcard2();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeWildcard3() {
 	super.consumeWildcard3();
 	popElement(K_BINARY_OPERATOR);
 }
+@Override
 protected void consumeWildcardBoundsExtends() {
 	super.consumeWildcardBoundsExtends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4255,6 +4587,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeWildcardBounds1Extends() {
 	super.consumeWildcardBounds1Extends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4264,6 +4597,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeWildcardBounds2Extends() {
 	super.consumeWildcardBounds2Extends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4273,6 +4607,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeWildcardBounds3Extends() {
 	super.consumeWildcardBounds3Extends();
 	if (this.assistNode != null && this.assistNodeParent == null) {
@@ -4282,6 +4617,7 @@
 	}
 	popElement(K_EXTENDS_KEYWORD);
 }
+@Override
 protected void consumeUnaryExpression(int op) {
 	super.consumeUnaryExpression(op);
 	popElement(K_UNARY_OPERATOR);
@@ -4293,6 +4629,7 @@
 		}
 	}
 }
+@Override
 protected void consumeUnaryExpression(int op, boolean post) {
 	super.consumeUnaryExpression(op, post);
 	popElement(K_UNARY_OPERATOR);
@@ -4304,6 +4641,7 @@
 		}
 	}
 }
+@Override
 public MethodDeclaration convertToMethodDeclaration(ConstructorDeclaration c, CompilationResult compilationResult) {
 	MethodDeclaration methodDeclaration = super.convertToMethodDeclaration(c, compilationResult);
 	if (this.sourceEnds != null) {
@@ -4313,12 +4651,41 @@
 	}
 	return methodDeclaration;
 }
+@Override
+public ImportReference createAssistPackageVisibilityReference(char[][] tokens, long[] positions){
+	return new CompletionOnPackageVisibilityReference(tokens, positions);
+}
+@Override
 public ImportReference createAssistImportReference(char[][] tokens, long[] positions, int mod){
 	return new CompletionOnImportReference(tokens, positions, mod);
 }
+@Override
+public ModuleReference createAssistModuleReference(int index) {
+	/* retrieve identifiers subset and whole positions, the assist node positions
+	should include the entire replaced source. */
+	int length = this.identifierLengthStack[this.identifierLengthPtr];
+	char[][] subset = identifierSubSet(index+1); // include the assistIdentifier
+	this.identifierLengthPtr--;
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(
+			this.identifierPositionStack,
+			this.identifierPtr + 1,
+			positions,
+			0,
+			length);
+	return new CompletionOnModuleReference(subset, positions);
+}
+@Override
+public ModuleDeclaration createAssistModuleDeclaration(CompilationResult compilationResult, char[][] tokens,
+		long[] positions) {
+	return new CompletionOnModuleDeclaration(compilationResult, tokens, positions);
+}
+@Override
 public ImportReference createAssistPackageReference(char[][] tokens, long[] positions){
 	return new CompletionOnPackageReference(tokens, positions);
 }
+@Override
 public NameReference createQualifiedAssistNameReference(char[][] previousIdentifiers, char[] assistName, long[] positions){
 	return new CompletionOnQualifiedNameReference(
 					previousIdentifiers,
@@ -4326,6 +4693,15 @@
 					positions,
 					isInsideAttributeValue());
 }
+private TypeReference checkAndCreateModuleQualifiedAssistTypeReference(char[][] previousIdentifiers, char[] assistName, long[] positions) {
+	if (isInUsesStatement()) return new CompletionOnUsesQualifiedTypeReference(previousIdentifiers, assistName, positions);
+	if (isInProvidesStatement()) {
+		if (isAfterWithClause()) return new CompletionOnProvidesImplementationsQualifiedTypeReference(previousIdentifiers, assistName, positions);
+		return new CompletionOnProvidesInterfacesQualifiedTypeReference(previousIdentifiers, assistName, positions);
+	}
+	return new CompletionOnQualifiedTypeReference(previousIdentifiers,	assistName,	positions);
+}
+@Override
 public TypeReference createQualifiedAssistTypeReference(char[][] previousIdentifiers, char[] assistName, long[] positions){
 	switch (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER)) {
 		case K_NEXT_TYPEREF_IS_EXCEPTION :
@@ -4349,12 +4725,13 @@
 					positions,
 					CompletionOnQualifiedTypeReference.K_INTERFACE);
 		default :
-			return new CompletionOnQualifiedTypeReference(
+			return checkAndCreateModuleQualifiedAssistTypeReference(
 					previousIdentifiers,
 					assistName,
 					positions);
 	}
 }
+@Override
 public TypeReference createParameterizedQualifiedAssistTypeReference(char[][] previousIdentifiers, TypeReference[][] typeArguments, char[] assistName, TypeReference[] assistTypeArguments, long[] positions) {
 	boolean isParameterized = false;
 	for (int i = 0; i < typeArguments.length; i++) {
@@ -4398,6 +4775,7 @@
 		}
 	}
 }
+@Override
 public NameReference createSingleAssistNameReference(char[] assistName, long position) {
 	int kind = topKnownElementKind(COMPLETION_OR_ASSIST_PARSER);
 	if(!isInsideMethod()) {
@@ -4454,6 +4832,9 @@
 
 				keywords[count++]= Keywords.FINAL;
 				keywords[count++]= Keywords.CLASS;
+				if (this.options.complianceLevel >= ClassFileConstants.JDK10) {
+					keywords[count++]= Keywords.VAR;
+				}
 
 				if(this.previousKind == K_BLOCK_DELIMITER) {
 					switch (this.previousInfo) {
@@ -4474,6 +4855,10 @@
 				if(isInsideBreakable()) {
 					keywords[count++]= Keywords.BREAK;
 				}
+			} else if (kind == K_BETWEEN_FOR_AND_RIGHT_PAREN) {
+				if (this.options.complianceLevel >= ClassFileConstants.JDK10) {
+					keywords[count++]= Keywords.VAR;
+				}
 			} else if(kind != K_BETWEEN_CASE_AND_COLON && kind != K_BETWEEN_DEFAULT_AND_COLON) {
 				keywords[count++]= Keywords.TRUE;
 				keywords[count++]= Keywords.FALSE;
@@ -4501,6 +4886,9 @@
 					keywords[count++]= Keywords.FINAL;
 					keywords[count++]= Keywords.CLASS;
 
+					if (this.options.complianceLevel >= ClassFileConstants.JDK10) {
+						keywords[count++]= Keywords.VAR;
+					}
 					if(isInsideLoop()) {
 						keywords[count++]= Keywords.CONTINUE;
 					}
@@ -4512,6 +4900,15 @@
 		}
 	}
 }
+private TypeReference checkAndCreateModuleSingleAssistTypeReference(char[] assistName, long position) {
+	if (isInUsesStatement()) return new CompletionOnUsesSingleTypeReference(assistName, position);
+	if (isInProvidesStatement()) {
+		if (isAfterWithClause()) return new CompletionOnProvidesImplementationsSingleTypeReference(assistName, position);
+		return new CompletionOnProvidesInterfacesSingleTypeReference(assistName, position);
+	}
+	return new CompletionOnSingleTypeReference(assistName,position);
+}
+@Override
 public TypeReference createSingleAssistTypeReference(char[] assistName, long position) {
 	switch (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER)) {
 		case K_NEXT_TYPEREF_IS_EXCEPTION :
@@ -4523,12 +4920,14 @@
 		case K_NEXT_TYPEREF_IS_INTERFACE :
 			return new CompletionOnSingleTypeReference(assistName, position, CompletionOnSingleTypeReference.K_INTERFACE);
 		default :
-			return new CompletionOnSingleTypeReference(assistName, position);
+			return checkAndCreateModuleSingleAssistTypeReference(assistName, position);
 	}
 }
+@Override
 public TypeReference createParameterizedSingleAssistTypeReference(TypeReference[] typeArguments, char[] assistName, long position) {
 	return createSingleAssistTypeReference(assistName, position);
 }
+@Override
 protected StringLiteral createStringLiteral(char[] token, int start, int end, int lineNumber) {
 	if (start <= this.cursorLocation && this.cursorLocation <= end){
 		char[] source = this.scanner.source;
@@ -4587,6 +4986,7 @@
 	}
 	return super.createStringLiteral(token, start, end, lineNumber);
 }
+@Override
 protected TypeReference augmentTypeWithAdditionalDimensions(TypeReference typeRef, int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 	if (this.assistNode == typeRef) {
 		return typeRef;
@@ -4608,6 +5008,7 @@
 /*
  * Flush parser/scanner state regarding to code assist
  */
+@Override
 public void flushAssistState() {
 
 	super.flushAssistState();
@@ -4619,6 +5020,7 @@
 	completionScanner.completedIdentifierEnd = -1;
 }
 
+@Override
 protected TypeReference getTypeReferenceForGenericType(int dim,	int identifierLength, int numberOfIdentifiers) {
 	TypeReference ref = super.getTypeReferenceForGenericType(dim, identifierLength, numberOfIdentifiers);
 	// in completion case we might have encountered the assist node before really parsing
@@ -4654,6 +5056,7 @@
 
 	return ref;
 }
+@Override
 protected NameReference getUnspecifiedReference(boolean rejectTypeAnnotations) {
 	NameReference nameReference = super.getUnspecifiedReference(rejectTypeAnnotations);
 	if (this.record) {
@@ -4661,6 +5064,7 @@
 	}
 	return nameReference;
 }
+@Override
 protected NameReference getUnspecifiedReferenceOptimized() {
 	if (this.identifierLengthStack[this.identifierLengthPtr] > 1) { // reducing a qualified name
 		// potential receiver is being poped, so reset potential receiver
@@ -4678,20 +5082,24 @@
 
 	return identifierStart <= this.potentialVariableNameEnds[this.potentialVariableNamesPtr];
 }
+@Override
 protected int indexOfAssistIdentifier(boolean useGenericsStack) {
 	if (this.record) return -1; // when names are recorded there is no assist identifier
 	return super.indexOfAssistIdentifier(useGenericsStack);
 }
+@Override
 public void initialize() {
 	super.initialize();
 	this.labelPtr = -1;
 	initializeForBlockStatements();
 }
+@Override
 public void initialize(boolean parsingCompilationUnit) {
 	super.initialize(parsingCompilationUnit);
 	this.labelPtr = -1;
 	initializeForBlockStatements();
 }
+@Override
 public void copyState(Parser from) {
 
 	super.copyState(from);
@@ -4724,6 +5132,7 @@
 		}
 	}
 }
+@Override
 public void initializeScanner(){
 	this.scanner = new CompletionScanner(this.options.sourceLevel);
 }
@@ -4835,12 +5244,13 @@
 	}
 	return false;
 }
+@Override
 public ReferenceExpression newReferenceExpression() {
 	char[] selector = this.identifierStack[this.identifierPtr];
 	if (selector != assistIdentifier()){
 		return super.newReferenceExpression();
 	}
-	ReferenceExpression referenceExpression = new CompletionOnReferenceExpressionName();
+	ReferenceExpression referenceExpression = new CompletionOnReferenceExpressionName(this.scanner);
 	this.assistNode = referenceExpression;
 	return referenceExpression;
 }
@@ -4852,6 +5262,7 @@
 	completionScanner.cursorLocation = cursorLoc;
 	return this.parse(sourceUnit, compilationResult);
 }
+@Override
 public void parseBlockStatements(
 	ConstructorDeclaration cd,
 	CompilationUnitDeclaration unit) {
@@ -4932,6 +5343,7 @@
 /*
  * Prepares the state of the parser to go for BlockStatements.
  */
+@Override
 protected void prepareForBlockStatements() {
 	this.nestedMethod[this.nestedType = 0] = 1;
 	this.variablesCounter[this.nestedType] = 0;
@@ -4992,6 +5404,7 @@
 		addPotentialName(token, nameReference.sourceStart, nameReference.sourceEnd);
 	}
 }
+@Override
 public void recoveryExitFromVariable() {
 	if(this.currentElement != null && this.currentElement instanceof RecoveredLocalVariable) {
 		RecoveredElement oldElement = this.currentElement;
@@ -5015,6 +5428,7 @@
 		super.recoveryExitFromVariable();
 	}
 }
+@Override
 public void recoveryTokenCheck() {
 	RecoveredElement oldElement = this.currentElement;
 	switch (this.currentToken) {
@@ -5059,6 +5473,7 @@
 	}
 }
 
+@Override
 protected CompletionParser createSnapShotParser() {
 	return new CompletionParser(this.problemReporter, this.storeSourceEnds);
 }
@@ -5066,6 +5481,7 @@
  * Reset internal state after completion is over
  */
 
+@Override
 public void reset() {
 	super.reset();
 	this.cursorLocation = 0;
@@ -5081,13 +5497,15 @@
 	this.cursorLocation = 0;
 	flushAssistState();
 }
-public void restoreAssistParser(Object parserState) {
-	int[] state = (int[]) parserState;
+@Override
+public void restoreAssistParser(Object parserState) { 	
+	SavedState state = (SavedState) parserState;
 	
 	CompletionScanner completionScanner = (CompletionScanner)this.scanner;
 	
-	this.cursorLocation = state[0];
-	completionScanner.cursorLocation = state[1];
+	this.cursorLocation = state.parserCursorLocation;
+	completionScanner.cursorLocation = state.scannerCursorLocation;
+	this.assistNodeParent = state.assistNodeParent;
 }
 @Override
 protected int resumeOnSyntaxError() {
@@ -5107,6 +5525,7 @@
  * Move checkpoint location, reset internal stacks and
  * decide which grammar goal is activated.
  */
+@Override
 protected int resumeAfterRecovery() {
 	this.hasUnusedModifiers = false;
 	if (this.assistNode != null) {
@@ -5169,10 +5588,12 @@
 	}
 	return super.resumeAfterRecovery();
 }
+@Override
 public void setAssistIdentifier(char[] assistIdent){
 	((CompletionScanner)this.scanner).completionIdentifier = assistIdent;
 }
 
+@Override
 protected void shouldStackAssistNode() {
 	this.shouldStackAssistNode = true;
 }
@@ -5182,6 +5603,7 @@
 	return this.shouldStackAssistNode;
 }
 
+@Override
 public  String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append("elementKindStack : int[] = {"); //$NON-NLS-1$
@@ -5201,6 +5623,7 @@
 /*
  * Update recovery state based on current parser/scanner state
  */
+@Override
 protected void updateRecoveryState() {
 
 	/* expose parser state to recovery state */
@@ -5234,6 +5657,7 @@
 	recoveryExitFromVariable();
 }
 
+@Override
 protected LocalDeclaration createLocalDeclaration(char[] assistName, int sourceStart, int sourceEnd) {
 	if (this.indexOfAssistIdentifier() < 0) {
 		return super.createLocalDeclaration(assistName, sourceStart, sourceEnd);
@@ -5245,10 +5669,12 @@
 	}
 }
 
+@Override
 protected JavadocParser createJavadocParser() {
 	return new CompletionJavadocParser(this);
 }
 
+@Override
 protected FieldDeclaration createFieldDeclaration(char[] assistName, int sourceStart, int sourceEnd) {
 	if (this.indexOfAssistIdentifier() < 0 || (this.currentElement instanceof RecoveredUnit && ((RecoveredUnit)this.currentElement).typeCount == 0)) {
 		return super.createFieldDeclaration(assistName, sourceStart, sourceEnd);
@@ -5276,6 +5702,7 @@
 }
 
 // https://bugs.eclipse.org/bugs/show_bug.cgi?id=292087
+@Override
 protected boolean isInsideArrayInitializer(){
 	int i = this.elementPtr;
 	if (i > -1 && this.elementKindStack[i] == K_ARRAY_INITIALIZER) {
@@ -5283,14 +5710,43 @@
 	}
 	return false;	
 }
-protected boolean isInImportStatement() {
+private boolean foundToken(int token) {
 	int i = this.elementPtr;
 	while (i > -1) {
-		if (this.elementKindStack[i] == K_INSIDE_IMPORT_STATEMENT) {
+		if (this.elementKindStack[i] == token) {
 			return true;
 		}
 		i--;
 	}
 	return false;
 }
+
+protected boolean isInImportStatement() {
+	return foundToken(K_INSIDE_IMPORT_STATEMENT);
+}
+protected boolean isInExportsStatement() {
+	return foundToken(K_INSIDE_EXPORTS_STATEMENT);
+}
+protected boolean isInOpensStatement() {
+	return foundToken(K_INSIDE_OPENS_STATEMENT);
+}
+protected boolean isInRequiresStatement() {
+	return foundToken(K_INSIDE_REQUIRES_STATEMENT);
+}
+protected boolean isInUsesStatement() {
+	return foundToken(K_INSIDE_USES_STATEMENT);
+}
+protected boolean isInProvidesStatement() {
+	return foundToken(K_INSIDE_PROVIDES_STATEMENT);
+}
+protected boolean isAfterWithClause() {
+	return foundToken(K_AFTER_WITH_IN_PROVIDES_STATEMENT);
+}
+protected boolean isInModuleStatements() {
+	return isInExportsStatement() ||
+			isInOpensStatement() ||
+			isInRequiresStatement() ||
+			isInProvidesStatement() ||
+			isInUsesStatement();
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
index 127e955..95a9e6c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
@@ -52,6 +52,7 @@
 		null/*taskPriorities*/,
 		true/*taskCaseSensitive*/);
 }
+@Override
 protected boolean isAtAssistIdentifier() {
 	if (this.cursorLocation < this.startPosition && this.currentPosition == this.startPosition) { // fake empty identifier got issued
 		return true;
@@ -66,6 +67,7 @@
  * on an identifier prefix.
  *
  */
+@Override
 public char[] getCurrentIdentifierSource() {
 
 	if (this.completionIdentifier == null){
@@ -93,6 +95,7 @@
 	return super.getCurrentIdentifierSource();
 }
 
+@Override
 public char[] getCurrentTokenSourceString() {
 	if (this.completionIdentifier == null){
 		if (this.cursorLocation+1 >= this.startPosition && this.cursorLocation < this.currentPosition){
@@ -112,6 +115,7 @@
 	}
 	return super.getCurrentTokenSourceString();
 }
+@Override
 protected int getNextToken0() throws InvalidInputException {
 
 	this.wasAcr = false;
@@ -864,6 +868,7 @@
 	}
 	return TokenNameEOF;
 }
+@Override
 public final void getNextUnicodeChar() throws InvalidInputException {
 	int temp = this.currentPosition; // the \ is already read
 	super.getNextUnicodeChar();
@@ -874,6 +879,7 @@
 		throw new InvalidCursorLocation(InvalidCursorLocation.NO_COMPLETION_INSIDE_UNICODE);
 	}
 }
+@Override
 protected boolean isFirstTag() {
 	return
 		getNextChar('d') &&
@@ -894,6 +900,7 @@
 // * In case we actually read a keyword, but the cursor is located inside,
 // * we pretend we read an identifier.
 // */
+@Override
 public int scanIdentifierOrKeyword() {
 
 	int id = super.scanIdentifierOrKeyword();
@@ -914,6 +921,7 @@
 	return id;
 }
 
+@Override
 public int scanNumber(boolean dotPrefix) throws InvalidInputException {
 
 	int token = super.scanNumber(dotPrefix);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.java
index 7c0b005..539b560 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistAnnotation.java
@@ -25,6 +25,7 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.java
index f61db11..8fb055d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistCompilationUnit.java
@@ -33,22 +33,27 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
+	@Override
 	public IImportContainer getImportContainer() {
 		return new AssistImportContainer(this, this.infoCache);
 	}
 
+	@Override
 	public IPackageDeclaration getPackageDeclaration(String pkg) {
 		return new AssistPackageDeclaration(this, pkg, this.infoCache);
 	}
 
+	@Override
 	public IType getType(String typeName) {
 		return new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 	}
 
+	@Override
 	public boolean hasChildren() throws JavaModelException {
 		JavaElementInfo info = (JavaElementInfo)this.infoCache.get(this);
 		return info.getChildren().length > 0;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.java
index 21418b1..02ab4bf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportContainer.java
@@ -26,10 +26,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
+	@Override
 	protected IImportDeclaration getImport(String importName, boolean isOnDemand) {
 		return new AssistImportDeclaration(this, importName, isOnDemand, this.infoCache);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.java
index 689d8fb..b73e30a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistImportDeclaration.java
@@ -25,6 +25,7 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.java
index 170532e..d02bcda 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistInitializer.java
@@ -28,10 +28,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
+	@Override
 	public IType getType(String typeName, int count) {
 		AssistSourceType type = new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 		type.occurrenceCount = count;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.java
index 7d4b053..7d547be 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistPackageDeclaration.java
@@ -26,10 +26,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
+	@Override
 	public IAnnotation getAnnotation(String name) {
 		return new AssistAnnotation(this, name, this.infoCache);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
index 32eab32..6e42125 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
 import java.util.HashSet;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
@@ -35,7 +36,10 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SuperReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
@@ -46,6 +50,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredBlock;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredElement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredExportsStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredField;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredInitializer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.RecoveredLocalVariable;
@@ -95,7 +100,8 @@
 	protected static final int K_ATTRIBUTE_VALUE_DELIMITER = ASSIST_PARSER + 5; // whether we are inside a annotation attribute valuer
 	protected static final int K_ENUM_CONSTANT_DELIMITER = ASSIST_PARSER + 6; // whether we are inside a field initializer
 	protected static final int K_LAMBDA_EXPRESSION_DELIMITER = ASSIST_PARSER + 7; // whether we are inside a lambda expression
-	
+	protected static final int K_MODULE_INFO_DELIMITER = ASSIST_PARSER + 8; // whether we are inside a module info declaration
+
 	// selector constants
 	protected static final int THIS_CONSTRUCTOR = -1;
 	protected static final int SUPER_CONSTRUCTOR = -2;
@@ -103,7 +109,7 @@
 	// enum constant constants
 	protected static final int NO_BODY = 0;
 	protected static final int WITH_BODY = 1;
-	
+
 	protected static final int EXPRESSION_BODY = 0;
 	protected static final int BLOCK_BODY = 1;
 
@@ -123,6 +129,7 @@
 
 public abstract char[] assistIdentifier();
 
+@Override
 public void copyState(Parser from) {
 	
 	super.copyState(from);
@@ -172,6 +179,7 @@
  * Build initial recovery state.
  * Recovery state is inferred from the current state of the parser (reduced node stack).
  */
+@Override
 public RecoveredElement buildInitialRecoveryState(){
 	/* recovery in unit structure */
 	if (this.referenceContext instanceof CompilationUnitDeclaration){
@@ -179,6 +187,7 @@
 		flushAssistState();
 		flushElementStack();
 		this.snapShot = null;
+		initModuleInfo(element);
 		return element;
 	}
 
@@ -365,30 +374,53 @@
 
 	return element;
 }
+
+private void initModuleInfo(RecoveredElement element) {
+	if (element  instanceof RecoveredUnit) {
+		RecoveredUnit unit = (RecoveredUnit) element;
+		if (unit.unitDeclaration.isModuleInfo()) {
+			ASTNode node = null;
+			int i = 0;
+			for (; i <= this.astPtr; i++) {
+				if ((node = this.astStack[i]) instanceof ModuleDeclaration) {
+					unit.add((ModuleDeclaration) node, this.bracketDepth); 
+					break;
+				}
+			}
+		}
+	}
+}
+@Override
 protected void consumeAnnotationTypeDeclarationHeader() {
 	super.consumeAnnotationTypeDeclarationHeader();
 	pushOnElementStack(K_TYPE_DELIMITER);
 }
+@Override
 protected void consumeClassBodyDeclaration() {
 	popElement(K_METHOD_DELIMITER);
 	super.consumeClassBodyDeclaration();
 }
+@Override
 protected void consumeClassBodyopt() {
 	super.consumeClassBodyopt();
 	popElement(K_SELECTOR);
 }
+@Override
 protected void consumeClassHeader() {
 	super.consumeClassHeader();
 	pushOnElementStack(K_TYPE_DELIMITER);
 }
+@Override
 protected void consumeConstructorBody() {
 	super.consumeConstructorBody();
 	popElement(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeConstructorHeader() {
 	super.consumeConstructorHeader();
 	pushOnElementStack(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeEnhancedForStatementHeaderInit(boolean hasModifiers) {
 	super.consumeEnhancedForStatementHeaderInit(hasModifiers);
 
@@ -398,15 +430,18 @@
 		this.currentElement = this.currentElement.add(localDecl, 0);
 	}
 }
+@Override
 protected void consumeEnterAnonymousClassBody(boolean qualified) {
 	super.consumeEnterAnonymousClassBody(qualified);
 	popElement(K_SELECTOR);
 	pushOnElementStack(K_TYPE_DELIMITER);
 }
+@Override
 protected void consumeEnterMemberValue() {
 	super.consumeEnterMemberValue();
 	pushOnElementStack(K_ATTRIBUTE_VALUE_DELIMITER, this.identifierPtr);
 }
+@Override
 protected void consumeEnumConstantHeader() {
 	if(this.currentToken == TokenNameLBRACE) {
 		popElement(K_ENUM_CONSTANT_DELIMITER);
@@ -415,30 +450,38 @@
 		pushOnElementStack(K_TYPE_DELIMITER);
 	}
 	super.consumeEnumConstantHeader();
+	if (triggerRecoveryUponLambdaClosure((Statement) this.astStack[this.astPtr], true) && this.currentElement != null)
+		this.restartRecovery = true;
 }
+@Override
 protected void consumeEnumConstantHeaderName() {
 	super.consumeEnumConstantHeaderName();
 	pushOnElementStack(K_ENUM_CONSTANT_DELIMITER);
 }
+@Override
 protected void consumeEnumConstantWithClassBody() {
 	popElement(K_TYPE_DELIMITER);
 	popElement(K_FIELD_INITIALIZER_DELIMITER);
 	popElement(K_ENUM_CONSTANT_DELIMITER);
 	super.consumeEnumConstantWithClassBody();
 }
+@Override
 protected void consumeEnumConstantNoClassBody() {
 	popElement(K_ENUM_CONSTANT_DELIMITER);
 	super.consumeEnumConstantNoClassBody();
 }
+@Override
 protected void consumeEnumHeader() {
 	super.consumeEnumHeader();
 	pushOnElementStack(K_TYPE_DELIMITER);
 }
+@Override
 protected void consumeExitMemberValue() {
 	super.consumeExitMemberValue();
 	popElement(K_ATTRIBUTE_VALUE_DELIMITER);
 }
 
+@Override
 protected void consumeExplicitConstructorInvocation(int flag, int recFlag) {
 	super.consumeExplicitConstructorInvocation(flag, recFlag);
 	popElement(K_SELECTOR);
@@ -571,20 +614,24 @@
 	return null;
 }
 
+@Override
 protected boolean isAssistParser() {
 	return true;
 }
+@Override
 protected void consumeBlockStatement() {
 	super.consumeBlockStatement();
 	if (triggerRecoveryUponLambdaClosure((Statement) this.astStack[this.astPtr], true) && this.currentElement != null)
 		this.restartRecovery = true;
 }
+@Override
 protected void consumeBlockStatements() {
 	super.consumeBlockStatements();
 	if (triggerRecoveryUponLambdaClosure((Statement) this.astStack[this.astPtr], true) && this.currentElement != null) {
 		this.restartRecovery = true;
 	}
 }
+@Override
 protected void consumeFieldDeclaration() {
 	super.consumeFieldDeclaration();
 	if (triggerRecoveryUponLambdaClosure((Statement) this.astStack[this.astPtr], true)) {
@@ -594,6 +641,7 @@
 			this.restartRecovery = true;
 	}
 }
+@Override
 protected void consumeForceNoDiet() {
 	super.consumeForceNoDiet();
 	// if we are not in a method (i.e. we are not in a local variable initializer)
@@ -612,6 +660,7 @@
 
 	}
 }
+@Override
 protected void consumeInterfaceHeader() {
 	super.consumeInterfaceHeader();
 	pushOnElementStack(K_TYPE_DELIMITER);
@@ -622,20 +671,24 @@
 	LambdaExpression lexp = (LambdaExpression) this.astStack[this.astPtr];
 	pushOnElementStack(K_LAMBDA_EXPRESSION_DELIMITER, EXPRESSION_BODY, lexp);
 }
+@Override
 protected void consumeMethodBody() {
 	super.consumeMethodBody();
 	popElement(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeMethodDeclaration(boolean isNotAbstract, boolean isDefaultMethod) {
 	if (!isNotAbstract) {
 		popElement(K_METHOD_DELIMITER);
 	}
 	super.consumeMethodDeclaration(isNotAbstract, isDefaultMethod);
 }
+@Override
 protected void consumeMethodHeader() {
 	super.consumeMethodHeader();
 	pushOnElementStack(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeMethodInvocationName() {
 	super.consumeMethodInvocationName();
 	popElement(K_SELECTOR);
@@ -644,6 +697,7 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
 protected void consumeMethodInvocationNameWithTypeArguments() {
 	super.consumeMethodInvocationNameWithTypeArguments();
 	popElement(K_SELECTOR);
@@ -652,6 +706,7 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
 protected void consumeMethodInvocationPrimary() {
 	super.consumeMethodInvocationPrimary();
 	popElement(K_SELECTOR);
@@ -660,6 +715,7 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
 protected void consumeMethodInvocationPrimaryWithTypeArguments() {
 	super.consumeMethodInvocationPrimaryWithTypeArguments();
 	popElement(K_SELECTOR);
@@ -668,6 +724,7 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
 protected void consumeMethodInvocationSuper() {
 	super.consumeMethodInvocationSuper();
 	popElement(K_SELECTOR);
@@ -676,6 +733,7 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
 protected void consumeMethodInvocationSuperWithTypeArguments() {
 	super.consumeMethodInvocationSuperWithTypeArguments();
 	popElement(K_SELECTOR);
@@ -684,10 +742,65 @@
 		this.lastCheckPoint = messageSend.sourceEnd + 1;
 	}
 }
+@Override
+protected void consumeModuleHeader() {
+	pushOnElementStack(K_MODULE_INFO_DELIMITER);
+	// ModuleHeader ::= 'module' Name
+	/* build an ImportRef build from the last name
+	stored in the identifier stack. */
+
+	int index;
+
+	/* no need to take action if not inside assist identifiers */
+	if ((index = indexOfAssistIdentifier()) < 0) {
+		super.consumeModuleHeader();
+		return;
+	}
+	/* retrieve identifiers subset and whole positions, the assist node positions
+	should include the entire replaced source. */
+	int length = this.identifierLengthStack[this.identifierLengthPtr];
+	char[][] subset = identifierSubSet(index+1); // include the assistIdentifier
+	this.identifierLengthPtr--;
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(
+			this.identifierPositionStack,
+			this.identifierPtr + 1,
+			positions,
+			0,
+			length);
+	ModuleDeclaration typeDecl = createAssistModuleDeclaration(this.compilationUnit.compilationResult, subset, positions);
+
+	this.compilationUnit.moduleDeclaration = typeDecl;
+	this.assistNode = typeDecl;
+	this.lastCheckPoint = typeDecl.sourceEnd + 1;
+
+	//compute the declaration source too
+	typeDecl.declarationSourceStart = this.intStack[this.intPtr--];
+
+	typeDecl.bodyStart = typeDecl.sourceEnd + 1;
+	pushOnAstStack(typeDecl);
+
+	this.listLength = 0; // will be updated when reading super-interfaces
+	// recovery
+	if (this.currentElement != null){
+		this.lastCheckPoint = typeDecl.bodyStart;
+		this.currentElement = this.currentElement.add(typeDecl, 0);
+		this.lastIgnoredToken = -1;
+	}
+}
+
+@Override
+protected void consumeModuleDeclaration() {
+	super.consumeModuleDeclaration();
+	popElement(K_MODULE_INFO_DELIMITER);
+}
+@Override
 protected void consumeNestedMethod() {
 	super.consumeNestedMethod();
 	if(!isInsideMethod()) pushOnElementStack(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeOpenBlock() {
 	// OpenBlock ::= $empty
 	super.consumeOpenBlock();
@@ -730,6 +843,7 @@
 	}
 	this.blockStarts[this.realBlockPtr] = -this.scanner.startPosition;
 }
+@Override
 protected void consumePackageDeclarationName() {
 	// PackageDeclarationName ::= 'package' Name
 	/* build an ImportRef build from the last name
@@ -778,6 +892,7 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected void consumePackageDeclarationNameWithModifiers() {
 	// PackageDeclarationName ::= Modifiers 'package' PushRealModifiers Name
 	/* build an ImportRef build from the last name
@@ -837,6 +952,7 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected void consumeRestoreDiet() {
 	super.consumeRestoreDiet();
 	// if we are not in a method (i.e. we were not in a local variable initializer)
@@ -846,6 +962,7 @@
 		popElement(K_FIELD_INITIALIZER_DELIMITER);
 	}
 }
+@Override
 protected void consumeSingleStaticImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' 'static' Name
 	/* push an ImportRef build from the last name
@@ -897,6 +1014,108 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
+protected void consumeSinglePkgName() {
+	int index;
+	/* no need to take action if not inside assist identifiers */
+	if ((index = indexOfAssistIdentifier()) < 0) {
+		super.consumeSinglePkgName();
+		return;
+	}
+	/* retrieve identifiers subset and whole positions, the assist node positions
+	should include the entire replaced source. */
+	int length = this.identifierLengthStack[this.identifierLengthPtr];
+	char[][] subset = identifierSubSet(index+1); // include the assistIdentifier
+	this.identifierLengthPtr--;
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(
+			this.identifierPositionStack,
+			this.identifierPtr + 1,
+			positions,
+			0,
+			length);
+
+	/* build specific assist node on import statement */
+	ImportReference reference = createAssistPackageVisibilityReference(subset, positions);
+	this.assistNode = reference;
+	this.lastCheckPoint = reference.sourceEnd + 1;
+
+	pushOnAstStack(reference);
+
+	if (this.currentToken == TokenNameSEMICOLON) {
+		reference.declarationSourceEnd = this.scanner.currentPosition - 1;
+	} else {
+		reference.declarationSourceEnd = (int) positions[length-1];
+	}
+}
+@Override
+protected void consumeSingleTargetModuleName() {
+	int index;
+	/* no need to take action if not inside assist identifiers */
+	if ((index = indexOfAssistIdentifier()) < 0) {
+		super.consumeSingleTargetModuleName();
+		return;
+	}
+
+	/* build specific assist node on targetted exports statement */
+	ModuleReference reference = createAssistModuleReference(index);
+	this.assistNode = reference;
+	this.lastCheckPoint = reference.sourceEnd + 1;
+	pushOnAstStack(reference);
+
+	// recovery - TBD
+	if (this.currentElement instanceof RecoveredExportsStatement){
+		// TODO
+		this.lastCheckPoint = reference.sourceEnd+1;
+		this.currentElement = ((RecoveredExportsStatement) this.currentElement).add(reference, 0);
+		this.lastIgnoredToken = -1;
+		//this.restartRecovery = true; // used to avoid branching back into the regular automaton
+	}
+
+}
+@Override
+protected void consumeSingleRequiresModuleName() {
+
+	int index = indexOfAssistIdentifier();
+	/* no need to take action if not inside assist identifiers */
+	if (index < 0) {
+		super.consumeSingleRequiresModuleName();
+		return;
+	}
+
+	/* build specific assist node on requires statement */
+	ModuleReference reference = createAssistModuleReference(index);
+	this.assistNode = reference;
+	this.lastCheckPoint = reference.sourceEnd + 1;
+	RequiresStatement req = new RequiresStatement(reference);
+	if (this.currentToken == TokenNameSEMICOLON){
+		req.declarationSourceEnd = this.scanner.currentPosition - 1;
+	} else {
+		req.declarationSourceEnd = reference.sourceEnd;
+	}
+	req.sourceStart = req.declarationSourceStart;
+	req.declarationEnd = req.declarationSourceEnd;
+	req.modifiersSourceStart = this.intStack[this.intPtr--];
+	req.modifiers |= this.intStack[this.intPtr--];
+	req.declarationSourceStart = this.intStack[this.intPtr--];
+	if (req.modifiersSourceStart >= 0) {
+		req.declarationSourceStart = req.modifiersSourceStart;
+	}
+	req.sourceEnd = reference.sourceEnd;
+	pushOnAstStack(req);
+
+	// recovery TBD
+
+	if (this.currentElement != null){
+		this.lastCheckPoint = req.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.add(req, 0);
+		this.lastIgnoredToken = -1;
+	}
+
+}
+
+@Override
 protected void consumeSingleTypeImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' Name
 	/* push an ImportRef build from the last name
@@ -948,6 +1167,7 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' 'static' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -1002,14 +1222,31 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected void consumeStaticInitializer() {
 	super.consumeStaticInitializer();
 	popElement(K_METHOD_DELIMITER);
 }
+@Override
 protected void consumeStaticOnly() {
 	super.consumeStaticOnly();
 	pushOnElementStack(K_METHOD_DELIMITER);
 }
+private void adjustBracket(int token) {
+	switch (token) {
+		case TokenNameLPAREN :
+		case TokenNameLBRACE:
+		case TokenNameLBRACKET:
+			this.bracketDepth++;
+			break;
+		case TokenNameRBRACE:
+		case TokenNameRBRACKET:
+		case TokenNameRPAREN:
+			this.bracketDepth--;
+			break;
+	}
+}
+@Override
 protected void consumeToken(int token) {
 	super.consumeToken(token);
 
@@ -1019,10 +1256,10 @@
 	}
 	// register message send selector only if inside a method or if looking at a field initializer
 	// and if the current token is an open parenthesis
-	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAttributeValue()) {
+	if (isInsideMethod() || isInsideFieldInitialization() || isInsideAttributeValue() || isInsideEnumConstantnitialization()) {
+		adjustBracket(token);
 		switch (token) {
 			case TokenNameLPAREN :
-				this.bracketDepth++;
 				switch (this.previousToken) {
 					case TokenNameIdentifier:
 						this.pushOnElementStack(K_SELECTOR, this.identifierPtr);
@@ -1047,21 +1284,10 @@
 					popElement(K_LAMBDA_EXPRESSION_DELIMITER);
 					pushOnElementStack(K_LAMBDA_EXPRESSION_DELIMITER, BLOCK_BODY, this.previousObjectInfo);
 				}
-				this.bracketDepth++;
-				break;
-			case TokenNameLBRACKET:
-				this.bracketDepth++;
-				break;
-			case TokenNameRBRACE:
-				this.bracketDepth--;
-				break;
-			case TokenNameRBRACKET:
-				this.bracketDepth--;
-				break;
-			case TokenNameRPAREN:
-				this.bracketDepth--;
 				break;
 		}
+	} else if (isInsideModuleInfo()) { 
+		adjustBracket(token);
 	} else {
 		switch (token) {
 			case TokenNameRBRACE :
@@ -1076,6 +1302,7 @@
 		this.previousIdentifierPtr = this.identifierPtr;
 	}
 }
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -1130,7 +1357,11 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+
+// TODO : Change to ExportsReference/PackageReference once we have the new compiler ast.node
+public abstract ImportReference createAssistPackageVisibilityReference(char[][] tokens, long[] positions);
 public abstract ImportReference createAssistImportReference(char[][] tokens, long[] positions, int mod);
+public abstract ModuleReference createAssistModuleReference(int index);
 public abstract ImportReference createAssistPackageReference(char[][] tokens, long[] positions);
 public abstract NameReference createQualifiedAssistNameReference(char[][] previousIdentifiers, char[] assistName, long[] positions);
 public abstract TypeReference createQualifiedAssistTypeReference(char[][] previousIdentifiers, char[] assistName, long[] positions);
@@ -1138,6 +1369,7 @@
 public abstract NameReference createSingleAssistNameReference(char[] assistName, long position);
 public abstract TypeReference createSingleAssistTypeReference(char[] assistName, long position);
 public abstract TypeReference createParameterizedSingleAssistTypeReference(TypeReference[] typeArguments, char[] assistName, long position);
+public abstract ModuleDeclaration createAssistModuleDeclaration(CompilationResult compilationResult, char[][] tokens, long[] positions);
 /*
  * Flush parser/scanner state regarding to code assist
  */
@@ -1159,6 +1391,7 @@
 /*
  * Build specific type reference nodes in case the cursor is located inside the type reference
  */
+@Override
 protected TypeReference getTypeReference(int dim) {
 
 	int index;
@@ -1315,6 +1548,7 @@
  * qualified name reference, then create a CompletionOnQualifiedNameReference
  * instead.
  */
+@Override
 protected NameReference getUnspecifiedReferenceOptimized() {
 
 	int completionIndex;
@@ -1356,18 +1590,22 @@
 	this.lastCheckPoint = reference.sourceEnd + 1;
 	return reference;
 }
+@Override
 public void goForBlockStatementsopt() {
 	super.goForBlockStatementsopt();
 	this.isFirst = true;
 }
+@Override
 public void goForHeaders(){
 	super.goForHeaders();
 	this.isFirst = true;
 }
+@Override
 public void goForCompilationUnit(){
 	super.goForCompilationUnit();
 	this.isFirst = true;
 }
+@Override
 public void goForBlockStatementsOrCatchHeader() {
 	super.goForBlockStatementsOrCatchHeader();
 	this.isFirst = true;
@@ -1425,6 +1663,7 @@
 	// none of the awaiting identifiers is the completion one
 	return -1;
 }
+@Override
 public void initialize() {
 	super.initialize();
 	flushAssistState();
@@ -1432,6 +1671,7 @@
 	this.previousIdentifierPtr = -1;
 	this.bracketDepth = 0;
 }
+@Override
 public void initialize(boolean parsingCompilationUnit) {
 	super.initialize(parsingCompilationUnit);
 	flushAssistState();
@@ -1439,6 +1679,7 @@
 	this.previousIdentifierPtr = -1;
 	this.bracketDepth = 0;
 }
+@Override
 public abstract void initializeScanner();
 protected boolean isIndirectlyInsideFieldInitialization(){
 	int i = this.elementPtr;
@@ -1449,6 +1690,15 @@
 	}
 	return false;
 }
+protected boolean isIndirectlyInsideEnumConstantnitialization(){
+	int i = this.elementPtr;
+	while(i > -1) {
+		if(this.elementKindStack[i] == K_ENUM_CONSTANT_DELIMITER)
+			return true;
+		i--;
+	}
+	return false;
+}
 protected boolean isIndirectlyInsideMethod(){
 	int i = this.elementPtr;
 	while(i > -1) {
@@ -1458,6 +1708,7 @@
 	}
 	return false;
 }
+@Override
 protected boolean isIndirectlyInsideLambdaExpression(){
 	int i = this.elementPtr;
 	while (i > -1) {
@@ -1504,7 +1755,36 @@
 		switch (this.elementKindStack[i]) {
 			case K_TYPE_DELIMITER : return false;
 			case K_METHOD_DELIMITER : return false;
-			case K_FIELD_INITIALIZER_DELIMITER : return true;
+			case K_FIELD_INITIALIZER_DELIMITER : 
+				return true;
+		}
+		i--;
+	}
+	return false;
+}
+protected boolean isInsideEnumConstantnitialization(){
+	int i = this.elementPtr;
+	while(i > -1) {
+		switch (this.elementKindStack[i]) {
+			case K_TYPE_DELIMITER : return false;
+			case K_METHOD_DELIMITER : return false;
+			case K_ENUM_CONSTANT_DELIMITER :
+				return true;
+		}
+		i--;
+	}
+	return false;
+}
+protected boolean isInsideModuleInfo(){
+	int i = this.elementPtr;
+	while(i > -1) {
+		switch (this.elementKindStack[i]) {
+			case K_TYPE_DELIMITER : 
+			case K_METHOD_DELIMITER :
+			case K_FIELD_INITIALIZER_DELIMITER : 
+				return false;
+			case K_MODULE_INFO_DELIMITER:
+				return true;
 		}
 		i--;
 	}
@@ -1688,8 +1968,6 @@
 
 	//convert bugs into parse error
 
-	if (md.isAbstract())
-		return;
 	if (md.isNative())
 		return;
 	if ((md.modifiers & ExtraCompilerModifiers.AccSemicolonBody) != 0)
@@ -1791,6 +2069,7 @@
 /*
  * Prepares the state of the parser to go for BlockStatements.
  */
+@Override
 protected void prepareForBlockStatements() {
 	this.nestedMethod[this.nestedType = 0] = 1;
 	this.variablesCounter[this.nestedType] = 0;
@@ -1861,6 +2140,7 @@
 	this.elementInfoStack[this.elementPtr] = info;
 	this.elementObjectInfoStack[this.elementPtr] = objectInfo;
 }
+@Override
 public void recoveryExitFromVariable() {
 	if(this.currentElement != null && this.currentElement instanceof RecoveredField
 		&& !(this.currentElement instanceof RecoveredInitializer)) {
@@ -1873,6 +2153,7 @@
 		super.recoveryExitFromVariable();
 	}
 }
+@Override
 public void recoveryTokenCheck() {
 	RecoveredElement oldElement = this.currentElement;
 	switch (this.currentToken) {
@@ -1995,6 +2276,7 @@
  * Move checkpoint location, reset internal stacks and
  * decide which grammar goal is activated.
  */
+@Override
 protected int resumeAfterRecovery() {
 	if (requireExtendedRecovery()) {
 		if (this.unstackedAct == ERROR_ACTION) {
@@ -2062,6 +2344,12 @@
 			goForBlockStatementsopt();
 		} else {
 			prepareForHeaders();
+			if (this.referenceContext instanceof CompilationUnitDeclaration) {
+				CompilationUnitDeclaration unit = (CompilationUnitDeclaration) this.referenceContext;
+				if (unit.isModuleInfo()) {
+					pushOnElementStack(K_MODULE_INFO_DELIMITER);
+				}
+			}
 			goForHeaders();
 			this.diet = true; // passed this point, will not consider method bodies
 			this.dietInt = 0;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.java
index 62d2099..beb43d4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceField.java
@@ -34,13 +34,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceField#getKey()
-	 */
+	@Override
 	public String getKey() {
 		if (this.uniqueKey == null) {
 			Binding binding = (Binding) this.bindingCache.get(this);
@@ -60,19 +59,23 @@
 		return this.uniqueKey;
 	}
 
+	@Override
 	public boolean isResolved() {
 		getKey();
 		return this.isResolved;
 	}
 
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info,boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo && isResolved());
 	}
 
+	@Override
 	public IAnnotation getAnnotation(String annotationName) {
 		return new AssistAnnotation(this, annotationName, this.infoCache);
 	}
 
+	@Override
 	public IType getType(String typeName, int count) {
 		AssistSourceType type = new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 		type.occurrenceCount = count;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.java
index 1bc24db..376a297 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceMethod.java
@@ -35,13 +35,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceMethod#getKey()
-	 */
+	@Override
 	public String getKey() {
 		if (this.uniqueKey == null) {
 			Binding binding = (Binding) this.bindingCache.get(this);
@@ -61,25 +60,30 @@
 		return this.uniqueKey;
 	}
 
+	@Override
 	public boolean isResolved() {
 		getKey();
 		return this.isResolved;
 	}
 
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info,boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo && isResolved());
 	}
 
+	@Override
 	public IAnnotation getAnnotation(String annotationName) {
 		return new AssistAnnotation(this, annotationName, this.infoCache);
 	}
 
+	@Override
 	public IType getType(String typeName, int count) {
 		AssistSourceType type = new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 		type.occurrenceCount = count;
 		return type;
 	}
 
+	@Override
 	public ITypeParameter getTypeParameter(String typeParameterName) {
 		return new AssistTypeParameter(this, typeParameterName, this.infoCache);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.java
index f78802b..9ca2c28 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistSourceType.java
@@ -38,10 +38,12 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
 
+	@Override
 	public String getFullyQualifiedParameterizedName() throws JavaModelException {
 		if (isResolved()) {
 			return getFullyQualifiedParameterizedName(getFullyQualifiedName('.'), this.getKey());
@@ -49,9 +51,7 @@
 		return getFullyQualifiedName('.', true/*show parameters*/);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceType#getKey()
-	 */
+	@Override
 	public String getKey() {
 		if (this.uniqueKey == null) {
 			Binding binding = (Binding) this.bindingCache.get(this);
@@ -71,41 +71,50 @@
 		return this.uniqueKey;
 	}
 
+	@Override
 	public boolean isResolved() {
 		getKey();
 		return this.isResolved;
 	}
 
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info,boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo && isResolved());
 	}
 
+	@Override
 	public IAnnotation getAnnotation(String annotationName) {
 		return new AssistAnnotation(this, annotationName, this.infoCache);
 	}
 
+	@Override
 	public IField getField(String fieldName) {
 		return new AssistSourceField(this, fieldName, this.bindingCache, this.infoCache);
 	}
 
+	@Override
 	public IInitializer getInitializer(int count) {
 		return new AssistInitializer(this, count, this.bindingCache, this.infoCache);
 	}
 
+	@Override
 	public IMethod getMethod(String selector, String[] parameterTypeSignatures) {
 		return new AssistSourceMethod(this, selector, parameterTypeSignatures, this.bindingCache, this.infoCache);
 	}
 
+	@Override
 	public IType getType(String typeName) {
 		return new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 	}
 
+	@Override
 	public IType getType(String typeName, int count) {
 		AssistSourceType type = new AssistSourceType(this, typeName, this.bindingCache, this.infoCache);
 		type.occurrenceCount = count;
 		return type;
 	}
 
+	@Override
 	public ITypeParameter getTypeParameter(String typeParameterName) {
 		return new AssistTypeParameter(this, typeParameterName, this.infoCache);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.java
index 9cd5bc4..d93cfaa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/AssistTypeParameter.java
@@ -25,6 +25,7 @@
 		this.infoCache = infoCache;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.infoCache.get(this);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.java
index 0285c27..495684f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Engine.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -61,6 +61,7 @@
 	/**
 	 * Add an additional binary type
 	 */
+	@Override
 	public void accept(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		this.lookupEnvironment.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction);
 	}
@@ -68,6 +69,7 @@
 	/**
 	 * Add an additional compilation unit.
 	 */
+	@Override
 	public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 		CompilationResult result = new CompilationResult(sourceUnit, 1, 1, this.compilerOptions.maxProblemsPerUnit);
 		
@@ -87,6 +89,7 @@
 	 * Add additional source types (the first one is the requested type, the rest is formed by the
 	 * secondary types defined in the same compilation unit).
 	 */
+	@Override
 	public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=479656
 		// In case of the requested type not being a member type (i.e. not being a top level type)
@@ -118,18 +121,21 @@
 		} else {
 			result = new CompilationResult(sourceTypes[0].getFileName(), 1, 1, this.compilerOptions.maxProblemsPerUnit);
 		}
+		LookupEnvironment environment = packageBinding.environment;
+		if (environment == null)
+			environment = this.lookupEnvironment;
 		CompilationUnitDeclaration unit =
 			SourceTypeConverter.buildCompilationUnit(
 				sourceTypes,//sourceTypes[0] is always toplevel here
 				SourceTypeConverter.FIELD_AND_METHOD // need field and methods
 				| SourceTypeConverter.MEMBER_TYPE, // need member types
 				// no need for field initialization
-				this.lookupEnvironment.problemReporter,
+				environment.problemReporter,
 				result);
 
 		if (unit != null) {
-			this.lookupEnvironment.buildTypeBindings(unit, accessRestriction);
-			this.lookupEnvironment.completeTypeBindings(unit, true);
+			environment.buildTypeBindings(unit, accessRestriction);
+			environment.completeTypeBindings(unit, true);
 		}
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.java
index 21cdd47..a09b766 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/impl/Keywords.java
@@ -1,17 +1,19 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *      Jesper Steen Møller - Contributions for
+ *                               bug 529552 - [18.3] Add 'var' in completions
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.codeassist.impl;
 
 public interface Keywords {
-	int COUNT = 41;
+	int COUNT = 50;
 
 	char[] ABSTRACT = "abstract".toCharArray(); //$NON-NLS-1$
 	char[] ASSERT = "assert".toCharArray(); //$NON-NLS-1$
@@ -25,20 +27,25 @@
 	char[] ELSE = "else".toCharArray(); //$NON-NLS-1$
 	char[] ENUM = "enum".toCharArray(); //$NON-NLS-1$
 	char[] EXTENDS = "extends".toCharArray(); //$NON-NLS-1$
+	char[] EXPORTS = "exports".toCharArray(); //$NON-NLS-1$
 	char[] FINAL = "final".toCharArray(); //$NON-NLS-1$
 	char[] FINALLY = "finally".toCharArray(); //$NON-NLS-1$
 	char[] FOR = "for".toCharArray(); //$NON-NLS-1$
 	char[] IF = "if".toCharArray(); //$NON-NLS-1$
 	char[] IMPLEMENTS = "implements".toCharArray(); //$NON-NLS-1$
 	char[] IMPORT = "import".toCharArray(); //$NON-NLS-1$
+	char[] MODULE = "module".toCharArray(); //$NON-NLS-1$
 	char[] INSTANCEOF = "instanceof".toCharArray(); //$NON-NLS-1$
 	char[] INTERFACE = "interface".toCharArray(); //$NON-NLS-1$
 	char[] NATIVE = "native".toCharArray(); //$NON-NLS-1$
 	char[] NEW = "new".toCharArray(); //$NON-NLS-1$
+	char[] OPENS= "opens".toCharArray(); //$NON-NLS-1$
 	char[] PACKAGE = "package".toCharArray(); //$NON-NLS-1$
 	char[] PRIVATE = "private".toCharArray(); //$NON-NLS-1$
 	char[] PROTECTED = "protected".toCharArray(); //$NON-NLS-1$
+	char[] PROVIDES = "provides".toCharArray(); //$NON-NLS-1$
 	char[] PUBLIC = "public".toCharArray(); //$NON-NLS-1$
+	char[] REQUIRES = "requires".toCharArray(); //$NON-NLS-1$
 	char[] RETURN = "return".toCharArray(); //$NON-NLS-1$
 	char[] STATIC = "static".toCharArray(); //$NON-NLS-1$
 	char[] STRICTFP = "strictfp".toCharArray(); //$NON-NLS-1$
@@ -48,11 +55,15 @@
 	char[] THIS = "this".toCharArray(); //$NON-NLS-1$
 	char[] THROW = "throw".toCharArray(); //$NON-NLS-1$
 	char[] THROWS = "throws".toCharArray(); //$NON-NLS-1$
+	char[] TO = "to".toCharArray(); //$NON-NLS-1$
 	char[] TRANSIENT = "transient".toCharArray(); //$NON-NLS-1$
 	char[] TRY = "try".toCharArray(); //$NON-NLS-1$
+	char[] USES = "uses".toCharArray(); //$NON-NLS-1$
 	char[] VOLATILE = "volatile".toCharArray(); //$NON-NLS-1$
 	char[] WHILE = "while".toCharArray(); //$NON-NLS-1$
+	char[] WITH = "with".toCharArray(); //$NON-NLS-1$
 	char[] TRUE = "true".toCharArray(); //$NON-NLS-1$
 	char[] FALSE = "false".toCharArray(); //$NON-NLS-1$
 	char[] NULL = "null".toCharArray(); //$NON-NLS-1$
+	char[] VAR = "var".toCharArray(); //$NON-NLS-1$ // Admittedly not a full blown keyword, just "reserved"
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.java
index 59dad23..2ef67de 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadoc.java
@@ -29,9 +29,7 @@
 		this.inheritDocSelected = false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc#print(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		super.print(indent, output);
 		if (this.selectedNode != null) {
@@ -127,6 +125,7 @@
 	 *
 	 * @throws SelectionNodeFound
 	 */
+	@Override
 	public void resolve(ClassScope scope) {
 		internalResolve(scope);
 	}
@@ -137,6 +136,7 @@
 	 *
 	 * @throws SelectionNodeFound
 	 */
+	@Override
 	public void resolve(MethodScope scope) {
 		internalResolve(scope);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.java
index 183d487..943924a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionJavadocParser.java
@@ -39,6 +39,7 @@
 	/*
 	 * Do not parse comment if selection is not included.
 	 */
+	@Override
 	public boolean checkDeprecation(int commentPtr) {
 		this.selectionStart = ((SelectionParser)this.sourceParser).selectionStart;
 		this.selectionEnd = ((SelectionParser)this.sourceParser).selectionEnd;
@@ -58,6 +59,7 @@
 	/*
 	 * Replace stored Javadoc node with specific selection one.
 	 */
+	@Override
 	protected boolean commentParse() {
 		this.docComment = new SelectionJavadoc(this.javadocStart, this.javadocEnd);
 		return super.commentParse();
@@ -66,6 +68,7 @@
 	/*
 	 * Create argument expression and store it if it includes selection.
 	 */
+	@Override
 	protected Object createArgumentReference(char[] name, int dim, boolean isVarargs, Object typeRef, long[] dimPositions, long argNamePos) throws InvalidInputException {
 		// Create argument as we may need it after
 		Expression expression = (Expression) super.createArgumentReference(name, dim, isVarargs, typeRef, dimPositions, argNamePos);
@@ -87,6 +90,7 @@
 	 * If so, create field reference, store it and abort comment parse.
 	 * Otherwise return null as we do not need this reference.
 	 */
+	@Override
 	protected Object createFieldReference(Object receiver) throws InvalidInputException {
 		int start = (int) (this.identifierPositionStack[0] >>> 32);
 		int end = (int) this.identifierPositionStack[0];
@@ -105,6 +109,7 @@
 	 * If so, create field reference, store it and abort comment parse.
 	 * Otherwise return null as we do not need this reference.
 	 */
+	@Override
 	protected Object createMethodReference(Object receiver, List arguments) throws InvalidInputException {
 		int memberPtr = this.identifierLengthStack[0] - 1;	// may be > 0 for inner class constructor reference
 		int start = (int) (this.identifierPositionStack[memberPtr] >>> 32);
@@ -124,6 +129,7 @@
 	 * If so, store it and abort comment parse.
 	 * Otherwise return null as we do not need this reference.
 	 */
+	@Override
 	protected Object createTypeReference(int primitiveToken) {
 		// Need to create type ref in case it was needed by members
 		TypeReference typeRef = (TypeReference) super.createTypeReference(primitiveToken);
@@ -168,6 +174,7 @@
 	 * Push param reference and verify if it includes selection.
 	 * If so, store it and abort comment parse.
 	 */
+	@Override
 	protected boolean pushParamName(boolean isTypeParam) {
 		if (super.pushParamName(isTypeParam)) {
 			Expression expression = (Expression) this.astStack[this.astPtr--];
@@ -186,6 +193,7 @@
 	/*
 	 * Store selected node into doc comment.
 	 */
+	@Override
 	protected void updateDocComment() {
 		if (this.selectedNode instanceof Expression) {
 			((SelectionJavadoc) this.docComment).selectedNode = (Expression) this.selectedNode;
@@ -197,6 +205,7 @@
 	/*
 	 * Sets a flag to denote that selection has taken place on an inheritDoc tag
 	 */
+	@Override
 	protected void parseInheritDocTag() {
 		if (this.tagSourceStart == this.selectionStart && this.tagSourceEnd == this.selectionEnd)
 			this.inheritDocTagSelected = true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.java
index 8561660..7270a00 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnArgumentName.java
@@ -28,12 +28,14 @@
 	public SelectionOnArgumentName(char[] name , long posNom , TypeReference tr , int modifiers, boolean typeElided){
 		super(name, posNom, tr, modifiers, typeElided);
 	}
+	@Override
 	public TypeBinding bind(MethodScope scope, TypeBinding typeBinding, boolean used) {
 
 		super.bind(scope, typeBinding, used);
 		throw new SelectionNodeFound(this.binding);
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		printIndent(indent, output);
@@ -47,12 +49,14 @@
 		return output.append('>');
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		super.resolve(scope);
 		throw new SelectionNodeFound(this.binding);
 	}
 	
+	@Override
 	public TypeBinding resolveForCatch(BlockScope scope) {
 		super.resolveForCatch(scope);
 		throw new SelectionNodeFound(this.binding);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.java
index b9ae601..fd5ee0b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnExplicitConstructorCall.java
@@ -39,6 +39,7 @@
 		super(accessMode);
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output);
@@ -58,6 +59,7 @@
 		return output.append(")>;"); //$NON-NLS-1$
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		super.resolve(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.java
index 79017e8..b4390e2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldReference.java
@@ -41,12 +41,14 @@
 		super(source, pos);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		output.append("<SelectionOnFieldReference:");  //$NON-NLS-1$
 		return super.printExpression(0, output).append('>');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		super.resolveType(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.java
index 8d7e83c..575ee3a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnFieldType.java
@@ -22,6 +22,7 @@
 		this.type = type;
 		this.name = CharOperation.NO_CHAR;
 	}
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 		return this.type.print(tab, output).append(';');
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.java
index 509602b..d8cb2ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnImportReference.java
@@ -36,6 +36,7 @@
 public SelectionOnImportReference(char[][] tokens , long[] positions, int modifiers) {
 	super(tokens, positions, false, modifiers);
 }
+@Override
 public StringBuffer print(int indent, StringBuffer output, boolean withOnDemand) {
 
 	printIndent(indent, output).append("<SelectOnImport:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.java
index 3a9db20..ec40265 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnLocalName.java
@@ -20,12 +20,14 @@
 		super(name, sourceStart, sourceEnd);
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		super.resolve(scope);
 		throw new SelectionNodeFound(this.binding);
 	}
 
+	@Override
 	public StringBuffer printAsExpression(int indent, StringBuffer output) {
 		printIndent(indent, output);
 		output.append("<SelectionOnLocalName:"); //$NON-NLS-1$
@@ -38,6 +40,7 @@
 		return output.append('>');
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		printAsExpression(indent, output);
 		return output.append(';');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.java
index c760ae5..028c228 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnMessageSend.java
@@ -76,6 +76,7 @@
 		return methodBinding;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append("<SelectOnMessageSend:"); //$NON-NLS-1$
@@ -90,6 +91,7 @@
 		return output.append(")>"); //$NON-NLS-1$
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		TypeBinding type = super.resolveType(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.java
new file mode 100644
index 0000000..60d97f3
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleDeclaration.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.select;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceModuleBinding;
+
+public class SelectionOnModuleDeclaration extends ModuleDeclaration {
+
+	public SelectionOnModuleDeclaration(CompilationResult compilationResult, char[][] tokens, long[] positions) {
+		super(compilationResult, tokens, positions);
+	}
+
+	@Override
+	public ModuleBinding setBinding(SourceModuleBinding sourceModuleBinding) {
+		super.setBinding(sourceModuleBinding);
+		throw new SelectionNodeFound(this.binding);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.java
new file mode 100644
index 0000000..094b5a9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnModuleReference.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.select;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+
+public class SelectionOnModuleReference extends ModuleReference {
+
+	public SelectionOnModuleReference(char[][] tokens, long[] sourcePositions) {
+		super(tokens, sourcePositions);
+	}
+
+	@Override
+	public ModuleBinding resolve(Scope scope) {
+		ModuleBinding resolvedBinding = super.resolve(scope);
+		if (resolvedBinding != null) {
+			throw new SelectionNodeFound(resolvedBinding);
+		} else {
+			throw new SelectionNodeFound();
+		}
+	}
+
+	@Override
+	public StringBuffer print(int tab, StringBuffer output) {
+		printIndent(tab, output).append("<SelectOnModuleReference:"); //$NON-NLS-1$
+		for (int i = 0; i < this.tokens.length; i++) {
+			if (i > 0) output.append('.');
+			output.append(this.tokens[i]);
+		}
+		return output.append('>');
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.java
index 0232c15..70d0731 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnNameOfMemberValuePair.java
@@ -22,6 +22,7 @@
 		super(token, sourceStart, sourceEnd, value);
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		output.append("<SelectOnName:"); //$NON-NLS-1$
 		output.append(this.name);
@@ -29,6 +30,7 @@
 		return output;
 	}
 
+	@Override
 	public void resolveTypeExpecting(BlockScope scope, TypeBinding requiredType) {
 		super.resolveTypeExpecting(scope, requiredType);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.java
index 9e45a4b..ffcb7ee 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageReference.java
@@ -36,6 +36,7 @@
 public SelectionOnPackageReference(char[][] tokens , long[] positions) {
 	super(tokens, positions, false, ClassFileConstants.AccDefault);
 }
+@Override
 public StringBuffer print(int tab, StringBuffer output, boolean withOnDemand) {
 	printIndent(tab, output).append("<SelectOnPackage:"); //$NON-NLS-1$
 	for (int i = 0; i < this.tokens.length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.java
new file mode 100644
index 0000000..f9e8404
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnPackageVisibilityReference.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.codeassist.select;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+
+/*
+ * Selection node build by the parser in any case it was intending to
+ * reduce an export reference containing the assist identifier.
+ * e.g.
+ *
+ *	module myModule {
+ *  exports packageo[cursor];
+ *  }
+ *
+ *	module myModule {
+ *	---> <SelectionOnExport:packageo>
+ *  }
+ *
+ */
+public class SelectionOnPackageVisibilityReference extends ImportReference {
+
+	public SelectionOnPackageVisibilityReference(char[][] tokens, long[] positions) {
+		super(tokens, positions, false, 0);
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+
+		printIndent(indent, output).append("<SelectOnPackageVisibility:"); //$NON-NLS-1$
+		output.append(new String(CharOperation.concatWith(this.tokens, '.')));
+		return output.append('>');
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.java
index b18e7c8..046a827 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedQualifiedTypeReference.java
@@ -31,6 +31,7 @@
 		this.typeArguments[length] = assistTypeArguments;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 		super.resolveType(scope, checkBounds, location);
 		//// removed unnecessary code to solve bug 94653
@@ -41,6 +42,7 @@
 		throw new SelectionNodeFound(this.resolvedType);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 		super.resolveType(scope, location);
 		//// removed unnecessary code to solve bug 94653
@@ -51,6 +53,7 @@
 		throw new SelectionNodeFound(this.resolvedType);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<SelectOnType:");//$NON-NLS-1$
 		int length = this.tokens.length;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.java
index 614deb5..7fbf609 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnParameterizedSingleTypeReference.java
@@ -23,16 +23,19 @@
 		super(name, typeArguments, 0, pos);
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 		super.resolveType(scope, checkBounds, location);
 		throw new SelectionNodeFound(this.resolvedType);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 		super.resolveType(scope, location);
 		throw new SelectionNodeFound(this.resolvedType);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 		output.append("<SelectOnType:");//$NON-NLS-1$
 		output.append(this.token);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.java
index 2033a4f..f4bf973 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedAllocationExpression.java
@@ -50,6 +50,7 @@
 		super(anonymous);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		if (this.enclosingInstance == null)
 			output.append("<SelectOnAllocationExpression:");  //$NON-NLS-1$
@@ -59,6 +60,7 @@
 		return super.printExpression(indent, output).append('>');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		super.resolveType(scope);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.java
index a5822ea..134cdbc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedNameReference.java
@@ -50,6 +50,7 @@
 		(int) (positions[0] >>> 32),
 		(int) positions[positions.length - 1]);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 
 	output.append("<SelectOnName:"); //$NON-NLS-1$
@@ -59,6 +60,7 @@
 	}
 	return output.append('>');
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// it can be a package, type, member type, local variable or field
 	this.binding = scope.getBinding(this.tokens, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.java
index c0e4091..49d1791 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedSuperReference.java
@@ -42,12 +42,14 @@
 public SelectionOnQualifiedSuperReference(TypeReference name, int pos, int sourceEnd) {
 	super(name, pos, sourceEnd);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 
 	output.append("<SelectOnQualifiedSuper:"); //$NON-NLS-1$
 	return super.printExpression(0, output).append('>');
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	TypeBinding binding = super.resolveType(scope);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.java
index 38faaed..35fdc01 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnQualifiedTypeReference.java
@@ -37,9 +37,11 @@
 		CharOperation.arrayConcat(previousIdentifiers, selectionIdentifier),
 		positions);
 }
+@Override
 public void aboutToResolve(Scope scope) {
 	getTypeBinding(scope.parent); // step up from the ClassScope
 }
+@Override
 protected TypeBinding getTypeBinding(Scope scope) {
 	// it can be a package, type or member type
 	Binding binding = scope.getTypeOrPackage(this.tokens);
@@ -61,6 +63,7 @@
 
 	throw new SelectionNodeFound(binding);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 
 	output.append("<SelectOnType:"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.java
index 04201ea..c5a40f5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014 IBM Corporation and others.
+ * Copyright (c) 2014, 2017 IBM Corporation and others.
  * 
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -15,10 +15,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 
 public class SelectionOnReferenceExpression extends ReferenceExpression {
 	
-	public SelectionOnReferenceExpression(ReferenceExpression referenceExpression) {
+	public SelectionOnReferenceExpression(ReferenceExpression referenceExpression, Scanner scanner) {
+		super(scanner);
 		initialize(referenceExpression.compilationResult, referenceExpression.lhs, referenceExpression.typeArguments, referenceExpression.selector, referenceExpression.sourceEnd);
 	}
 	
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.java
index 4958099..79960c0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnReferenceExpressionName.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,13 +17,15 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PolyTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 
 public class SelectionOnReferenceExpressionName extends ReferenceExpression {
 
-	public SelectionOnReferenceExpressionName() {
-		super();
+	public SelectionOnReferenceExpressionName(Scanner scanner) {
+		super(scanner);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("<SelectionOnReferenceExpressionName:"); //$NON-NLS-1$
 		super.printExpression(indent, output);
@@ -31,15 +33,18 @@
 	}
 	
 	// See SelectionScanner#scanIdentifierOrKeyword
+	@Override
 	public boolean isConstructorReference() {
 		return CharOperation.equals(this.selector, "new".toCharArray()); //$NON-NLS-1$
 	}
 	
 	// See SelectionScanner#scanIdentifierOrKeyword
+	@Override
 	public boolean isMethodReference() {
 		return !CharOperation.equals(this.selector, "new".toCharArray()); //$NON-NLS-1$
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		TypeBinding type = super.resolveType(scope);
 		if (type == null || type instanceof ProblemReferenceBinding || type instanceof PolyTypeBinding)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.java
index a2abb23..00deb7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleNameReference.java
@@ -43,6 +43,7 @@
 public SelectionOnSingleNameReference(char[] source, long pos) {
 	super(source, pos);
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	if (this.actualReceiverType != null) {
 		this.binding = scope.getField(this.actualReceiverType, this.token, this);
@@ -76,6 +77,7 @@
 
 	throw new SelectionNodeFound(this.binding);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	output.append("<SelectOnName:"); //$NON-NLS-1$
 	return super.printExpression(0, output).append('>');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.java
index 0862ea2..4ea6330 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSingleTypeReference.java
@@ -35,14 +35,19 @@
 public SelectionOnSingleTypeReference(char[] source, long pos) {
 	super(source, pos);
 }
+@Override
 public void aboutToResolve(Scope scope) {
 	getTypeBinding(scope.parent); // step up from the ClassScope
 }
+@Override
 protected TypeBinding getTypeBinding(Scope scope) {
 	// it can be a package, type or member type
 	Binding binding = scope.getTypeOrPackage(new char[][] {this.token});
 	if (!binding.isValidBinding()) {
-		if (binding instanceof TypeBinding) {
+		if(binding instanceof ProblemReferenceBinding && binding.problemId() == ProblemReasons.NotVisible) {
+			ProblemReferenceBinding problemReferenceBinding = (ProblemReferenceBinding) binding;
+			throw new SelectionNodeFound(problemReferenceBinding.closestMatch());
+		} else if (binding instanceof TypeBinding) {
 			scope.problemReporter().invalidType(this, (TypeBinding) binding);
 		} else if (binding instanceof PackageBinding) {
 			ProblemReferenceBinding problemBinding = new ProblemReferenceBinding(((PackageBinding)binding).compoundName, null, binding.problemId());
@@ -52,10 +57,12 @@
 	}
 	throw new SelectionNodeFound(binding);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 
 	return output.append("<SelectOnType:").append(this.token).append('>');//$NON-NLS-1$
 }
+@Override
 public TypeBinding resolveTypeEnclosing(BlockScope scope, ReferenceBinding enclosingType) {
 	super.resolveTypeEnclosing(scope, enclosingType);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.java
index 940b291..80eb70b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionOnSuperReference.java
@@ -42,11 +42,13 @@
 public SelectionOnSuperReference(int pos, int sourceEnd) {
 	super(pos, sourceEnd);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output){
 
 	output.append("<SelectOnSuper:"); //$NON-NLS-1$
 	return super.printExpression(0, output).append('>');
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	TypeBinding binding = super.resolveType(scope);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.java
index 9d9a7d9..fa33344 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Jesper Steen Møller <jesper@selskabet.org> - contributions for:	
+ *         Bug 531046: [10] ICodeAssist#codeSelect support for 'var'
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.codeassist.select;
 
@@ -41,6 +43,8 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MarkerAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
@@ -88,6 +92,7 @@
 	super(problemReporter);
 	this.javadocParser.checkDocComment = true;
 }
+@Override
 public char[] assistIdentifier(){
 	return ((SelectionScanner)this.scanner).selectionIdentifier;
 }
@@ -215,6 +220,7 @@
 	}
 	return false;
 }
+@Override
 protected void classInstanceCreation(boolean hasClassBody) {
 
 	// ClassInstanceCreationExpression ::= 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt
@@ -276,6 +282,7 @@
 		super.classInstanceCreation(hasClassBody);
 	}
 }
+@Override
 protected void consumeArrayCreationExpressionWithoutInitializer() {
 	// ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs
 	// ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
@@ -291,6 +298,7 @@
 		this.isOrphanCompletionNode = true;
 	}
 }
+@Override
 protected void consumeArrayCreationExpressionWithInitializer() {
 	// ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer
 
@@ -305,30 +313,37 @@
 		this.isOrphanCompletionNode = true;
 	}
 }
+@Override
 protected void consumeCastExpressionLL1() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionLL1();
 }
+@Override
 protected void consumeCastExpressionLL1WithBounds() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionLL1WithBounds();
 }
+@Override
 protected void consumeCastExpressionWithGenericsArray() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionWithGenericsArray();
 }
+@Override
 protected void consumeCastExpressionWithNameArray() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionWithNameArray();
 }
+@Override
 protected void consumeCastExpressionWithPrimitiveType() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionWithPrimitiveType();
 }
+@Override
 protected void consumeCastExpressionWithQualifiedGenericsArray() {
 	popElement(K_CAST_STATEMENT);
 	super.consumeCastExpressionWithQualifiedGenericsArray();
 }
+@Override
 protected void consumeCatchFormalParameter() {
 	if (this.indexOfAssistIdentifier() < 0) {
 		super.consumeCatchFormalParameter();
@@ -385,6 +400,7 @@
 		this.listLength++;
 	}
 }
+@Override
 protected void consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() {
 	// ClassInstanceCreationExpression ::= Primary '.' 'new' TypeArguments SimpleName '(' ArgumentListopt ')' ClassBodyopt
 	// ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' TypeArguments SimpleName '(' ArgumentListopt ')' ClassBodyopt
@@ -450,6 +466,7 @@
 	this.expressionStack[this.expressionPtr] = qae;
 	qae.sourceStart = qae.enclosingInstance.sourceStart;
 }
+@Override
 protected void consumeClassInstanceCreationExpressionWithTypeArguments() {
 	// ClassInstanceCreationExpression ::= 'new' TypeArguments ClassType '(' ArgumentListopt ')' ClassBodyopt
 	AllocationExpression alloc;
@@ -507,6 +524,7 @@
 		super.consumeClassInstanceCreationExpressionWithTypeArguments();
 	}
 }
+@Override
 protected void consumeEnterAnonymousClassBody(boolean qualified) {
 	// EnterAnonymousClassBody ::= $empty
 
@@ -578,6 +596,7 @@
 		this.lastIgnoredToken = -1;
 	}
 }
+@Override
 protected void consumeEnterVariable() {
 	// EnterVariable ::= $empty
 	// do nothing by default
@@ -586,7 +605,7 @@
 
 	AbstractVariableDeclaration variable = (AbstractVariableDeclaration) this.astStack[this.astPtr];
 	if (variable.type == this.assistNode){
-		if (!this.diet){
+		if (!this.diet && ! variable.type.isTypeNameVar(null)) {
 			this.restartRecovery	= true;	// force to restart in recovery mode
 			this.lastIgnoredToken = -1;
 		}
@@ -594,20 +613,25 @@
 	}
 }
 
+@Override
 protected void consumeExitVariableWithInitialization() {
 	super.consumeExitVariableWithInitialization();
 
 	// does not keep the initialization if selection is not inside
 	AbstractVariableDeclaration variable = (AbstractVariableDeclaration) this.astStack[this.astPtr];
-	int start = variable.initialization.sourceStart;
-	int end =  variable.initialization.sourceEnd;
-	if ((this.selectionStart < start) &&  (this.selectionEnd < start) ||
-			(this.selectionStart > end) && (this.selectionEnd > end)) {
+	int start = variable.declarationSourceStart;
+	int end =  variable.declarationSourceEnd;
+	// Keep the initialization intact, because that's the only way we are going to know the type
+	if (!variable.type.isTypeNameVar(null)) {
+		if ((this.selectionStart < start) &&  (this.selectionEnd < start) ||
+				(this.selectionStart > end) && (this.selectionEnd > end)) {
 			variable.initialization = null;
+		}
 	}
 	triggerRecoveryUponLambdaClosure(variable, false);
 }
 
+@Override
 protected void consumeFieldAccess(boolean isSuperAccess) {
 	// FieldAccess ::= Primary '.' 'Identifier'
 	// FieldAccess ::= 'super' '.' 'Identifier'
@@ -639,6 +663,7 @@
 	}
 	this.isOrphanCompletionNode = true;
 }
+@Override
 protected void consumeFormalParameter(boolean isVarArgs) {
 	if (this.indexOfAssistIdentifier() < 0) {
 		super.consumeFormalParameter(isVarArgs);
@@ -732,22 +757,27 @@
 		this.listLength++;
 	}
 }
+@Override
 protected void consumeInsideCastExpression() {
 	super.consumeInsideCastExpression();
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionLL1() {
 	super.consumeInsideCastExpressionLL1();
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionLL1WithBounds() {
 	super.consumeInsideCastExpressionLL1WithBounds();
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInsideCastExpressionWithQualifiedGenerics() {
 	super.consumeInsideCastExpressionWithQualifiedGenerics();
 	pushOnElementStack(K_CAST_STATEMENT);
 }
+@Override
 protected void consumeInstanceOfExpression() {
 	if (indexOfAssistIdentifier() < 0) {
 		super.consumeInstanceOfExpression();
@@ -758,6 +788,7 @@
 		this.lastIgnoredToken = -1;
 	}
 }
+@Override
 protected void consumeInstanceOfExpressionWithName() {
 	if (indexOfAssistIdentifier() < 0) {
 		super.consumeInstanceOfExpressionWithName();
@@ -789,12 +820,13 @@
 	this.colonColonStart = -1;
 	if (this.selectionStart == kolonKolonStart || this.selectionStart == kolonKolonEnd) {
 		if (this.selectionEnd == kolonKolonStart || this.selectionEnd == kolonKolonEnd) {
-			referenceExpression = new SelectionOnReferenceExpression(referenceExpression);
+			referenceExpression = new SelectionOnReferenceExpression(referenceExpression, this.scanner);
 		}
 	}
 	super.consumeReferenceExpression(referenceExpression);
 }
 
+@Override
 protected void consumeLocalVariableDeclarationStatement() {
 	super.consumeLocalVariableDeclarationStatement();
 
@@ -811,18 +843,21 @@
 		this.restartRecovery = true;
 	}
 }
+@Override
 protected void consumeAssignment() {
 	super.consumeAssignment();
 	if (this.selectionNodeFound) {
 		this.restartRecovery = true;
 	}
 }
+@Override
 protected void consumeBlockStatement() {
 	super.consumeBlockStatement();
 	if (this.selectionNodeFound) {
 		this.restartRecovery = true;
 	}
 }
+@Override
 protected void consumeMarkerAnnotation(boolean isTypeAnnotation) {
 	int index;
 
@@ -874,6 +909,7 @@
 		pushOnExpressionStack(markerAnnotation);
 	}
 }
+@Override
 protected void consumeMemberValuePair() {
 	if (this.indexOfAssistIdentifier() < 0) {
 		super.consumeMemberValuePair();
@@ -895,6 +931,7 @@
 
 
 }
+@Override
 protected void consumeMethodInvocationName() {
 	// MethodInvocation ::= Name '(' ArgumentListopt ')'
 
@@ -943,10 +980,12 @@
 		this.lastIgnoredToken = -1;
 	} else {
 		pushOnExpressionStack(new Expression(){
+			@Override
 			public TypeBinding resolveType(BlockScope scope) {
 				constructorCall.resolve(scope);
 				return null;
 			}
+			@Override
 			public StringBuffer printExpression(int indent, StringBuffer output) {
 				return output;
 			}
@@ -956,6 +995,7 @@
 	this.lastCheckPoint = constructorCall.sourceEnd + 1;
 	this.isOrphanCompletionNode = true;
 }
+@Override
 protected void consumeMethodInvocationPrimary() {
 	//optimize the push/pop
 	//MethodInvocation ::= Primary '.' 'Identifier' '(' ArgumentListopt ')'
@@ -992,10 +1032,12 @@
 		this.lastIgnoredToken = -1;
 	} else {
 		pushOnExpressionStack(new Expression(){
+			@Override
 			public TypeBinding resolveType(BlockScope scope) {
 				constructorCall.resolve(scope);
 				return null;
 			}
+			@Override
 			public StringBuffer printExpression(int indent, StringBuffer output) {
 				return output;
 			}
@@ -1006,6 +1048,7 @@
 	this.lastCheckPoint = constructorCall.sourceEnd + 1;
 	this.isOrphanCompletionNode = true;
 }
+@Override
 protected void consumeNormalAnnotation(boolean isTypeAnnotation) {
 	int index;
 
@@ -1065,6 +1108,7 @@
 		pushOnExpressionStack(normalAnnotation);
 	}
 }
+@Override
 protected void consumeSingleMemberAnnotation(boolean isTypeAnnotation) {
 	int index;
 
@@ -1118,6 +1162,7 @@
 		pushOnExpressionStack(singleMemberAnnotation);
 	}
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' 'static' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -1172,6 +1217,7 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected void consumeToken(int token) {
 	super.consumeToken(token);
 
@@ -1201,6 +1247,7 @@
 		}
 	}
 }
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -1255,18 +1302,32 @@
 		this.restartRecovery = true; // used to avoid branching back into the regular automaton
 	}
 }
+@Override
 protected SelectionParser createSnapShotParser() {
 	return new SelectionParser(this.problemReporter);
 }
+@Override
+public ImportReference createAssistPackageVisibilityReference(char[][] tokens, long[] positions){
+	return new SelectionOnPackageVisibilityReference(tokens, positions);
+}
+@Override
 public ImportReference createAssistImportReference(char[][] tokens, long[] positions, int mod){
 	return new SelectionOnImportReference(tokens, positions, mod);
 }
+@Override
+public ModuleDeclaration createAssistModuleDeclaration(CompilationResult compilationResult, char[][] tokens,
+		long[] positions) {
+	return new SelectionOnModuleDeclaration(compilationResult, tokens, positions);
+}
+@Override
 public ImportReference createAssistPackageReference(char[][] tokens, long[] positions){
 	return new SelectionOnPackageReference(tokens, positions);
 }
+@Override
 protected JavadocParser createJavadocParser() {
 	return new SelectionJavadocParser(this);
 }
+@Override
 protected LocalDeclaration createLocalDeclaration(char[] assistName,int sourceStart,int sourceEnd) {
 	if (this.indexOfAssistIdentifier() < 0) {
 		return super.createLocalDeclaration(assistName, sourceStart, sourceEnd);
@@ -1277,29 +1338,35 @@
 		return local;
 	}
 }
+@Override
 public NameReference createQualifiedAssistNameReference(char[][] previousIdentifiers, char[] assistName, long[] positions){
 	return new SelectionOnQualifiedNameReference(
 					previousIdentifiers,
 					assistName,
 					positions);
 }
+@Override
 public TypeReference createQualifiedAssistTypeReference(char[][] previousIdentifiers, char[] assistName, long[] positions){
 	return new SelectionOnQualifiedTypeReference(
 					previousIdentifiers,
 					assistName,
 					positions);
 }
+@Override
 public TypeReference createParameterizedQualifiedAssistTypeReference(
 		char[][] tokens, TypeReference[][] typeArguments, char[] assistname, TypeReference[] assistTypeArguments, long[] positions) {
 	return new SelectionOnParameterizedQualifiedTypeReference(tokens, assistname, typeArguments, assistTypeArguments, positions);
 
 }
+@Override
 public NameReference createSingleAssistNameReference(char[] assistName, long position) {
 	return new SelectionOnSingleNameReference(assistName, position);
 }
+@Override
 public TypeReference createSingleAssistTypeReference(char[] assistName, long position) {
 	return new SelectionOnSingleTypeReference(assistName, position);
 }
+@Override
 public TypeReference createParameterizedSingleAssistTypeReference(TypeReference[] typeArguments, char[] assistName, long position) {
 	return new SelectionOnParameterizedSingleTypeReference(assistName, typeArguments, position);
 }
@@ -1313,6 +1380,7 @@
 	selectionScanner.selectionEnd = end;
 	return this.dietParse(sourceUnit, compilationResult);
 }
+@Override
 protected NameReference getUnspecifiedReference(boolean rejectTypeAnnotations) {
 	/* build a (unspecified) NameReference which may be qualified*/
 
@@ -1395,6 +1463,7 @@
  * qualified name reference, then create a CompletionOnQualifiedNameReference
  * instead.
  */
+@Override
 protected NameReference getUnspecifiedReferenceOptimized() {
 
 	int index = indexOfAssistIdentifier();
@@ -1409,18 +1478,21 @@
 	}
 	return reference;
 }
+@Override
 public void initializeScanner(){
 	this.scanner = new SelectionScanner(this.options.sourceLevel);
 }
+@Override
 public ReferenceExpression newReferenceExpression() {
 	char[] selector = this.identifierStack[this.identifierPtr];
 	if (selector != assistIdentifier()){
 		return super.newReferenceExpression();
 	}
-	ReferenceExpression referenceExpression = new SelectionOnReferenceExpressionName();
+	ReferenceExpression referenceExpression = new SelectionOnReferenceExpressionName(this.scanner);
 	this.assistNode = referenceExpression;
 	return referenceExpression;
 }
+@Override
 protected MessageSend newMessageSend() {
 	// '(' ArgumentListopt ')'
 	// the arguments are on the expression stack
@@ -1451,6 +1523,7 @@
 	this.isOrphanCompletionNode = true;
 	return messageSend;
 }
+@Override
 protected MessageSend newMessageSendWithTypeArguments() {
 	char[] selector = this.identifierStack[this.identifierPtr];
 	if (selector != assistIdentifier()){
@@ -1478,6 +1551,7 @@
 	this.isOrphanCompletionNode = true;
 	return messageSend;
 }
+@Override
 public CompilationUnitDeclaration parse(ICompilationUnit sourceUnit, CompilationResult compilationResult, int start, int end) {
 
 	if (end == -1) return super.parse(sourceUnit, compilationResult, start, end);
@@ -1498,6 +1572,7 @@
  * Move checkpoint location, reset internal stacks and
  * decide which grammar goal is activated.
  */
+@Override
 protected int resumeAfterRecovery() {
 
 	/* if reached assist node inside method body, but still inside nested type,
@@ -1530,12 +1605,14 @@
 public void selectionIdentifierCheck(){
 	if (checkRecoveredType()) return;
 }
+@Override
 public void setAssistIdentifier(char[] assistIdent){
 	((SelectionScanner)this.scanner).selectionIdentifier = assistIdent;
 }
 /*
  * Update recovery state based on current parser/scanner state
  */
+@Override
 protected void updateRecoveryState() {
 
 	/* expose parser state to recovery state */
@@ -1557,6 +1634,7 @@
 	*/
 	recoveryTokenCheck();
 }
+@Override
 protected Argument typeElidedArgument() {
 	char[] selector = this.identifierStack[this.identifierPtr];
 	if (selector != assistIdentifier()){
@@ -1577,6 +1655,7 @@
 	this.assistNode = argument;
 	return argument;
 }
+@Override
 public  String toString() {
 	String s = Util.EMPTY_STRING;
 	s = s + "elementKindStack : int[] = {"; //$NON-NLS-1$
@@ -1591,4 +1670,17 @@
 	s = s + "}\n"; //$NON-NLS-1$
 	return s + super.toString();
 }
+@Override
+public ModuleReference createAssistModuleReference(int index) {
+	// ignore index, all segments of the module name are part of a single identifier.
+	/* retrieve identifiers subset and whole positions, the assist node positions
+	should include the entire replaced source. */
+	int length;
+	char[][] tokens = new char[length = this.identifierLengthStack[this.identifierLengthPtr--]][];
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(this.identifierStack, this.identifierPtr + 1, tokens, 0, length);
+	System.arraycopy(this.identifierPositionStack, this.identifierPtr + 1, positions, 0, length);
+	return new SelectionOnModuleReference(tokens, positions);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.java
index 88f7382..eb26a94 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/codeassist/select/SelectionScanner.java
@@ -32,10 +32,12 @@
 	super(false /*comment*/, false /*whitespace*/, false /*nls*/, sourceLevel, null /*taskTags*/, null/*taskPriorities*/, true/*taskCaseSensitive*/);
 }
 
+@Override
 protected boolean isAtAssistIdentifier() {
 	return this.selectionStart == this.startPosition && this.selectionEnd == this.currentPosition - 1;
 }
 
+@Override
 public char[] getCurrentIdentifierSource() {
 
 	if (this.selectionIdentifier == null){
@@ -56,6 +58,7 @@
  * In case we actually read a keyword which corresponds to the selected
  * range, we pretend we read an identifier.
  */
+@Override
 public int scanIdentifierOrKeyword() {
 
 	int id = super.scanIdentifierOrKeyword();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.java
index 0bb58f4..61f5ac6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ASTVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -584,6 +584,9 @@
 	public boolean visit(Clinit clinit, ClassScope scope) {
 		return true; // do nothing by default, keep traversing
 	}
+	public boolean visit(ModuleDeclaration module, CompilationUnitScope scope) {
+		return true;
+	}
 	public boolean visit(
 		CompilationUnitDeclaration compilationUnitDeclaration,
 		CompilationUnitScope scope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.java
index aba308b..bd35bc0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/AbstractAnnotationProcessorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,7 +21,7 @@
 	/**
 	 * Configure the receiver using the given batch compiler and the given options.
 	 * The parameter batchCompiler is expected to be an instance of the batch compiler. This method is
-	 * only used for the batch mode. For the IDE mode, please see {@link #configureFromPlatform(Compiler, Object, Object)}.
+	 * only used for the batch mode. For the IDE mode, please see {@link #configureFromPlatform(Compiler, Object, Object, boolean)}.
 	 *
 	 * @param batchCompiler the given batch compiler object
 	 * @param options the given options
@@ -35,8 +35,9 @@
 	 * @param compiler the given compiler
 	 * @param compilationUnitLocator the given compilation unit locator
 	 * @param javaProject the given java project
+	 * @param isTestCode 
 	 */
-	public abstract void configureFromPlatform(Compiler compiler, Object compilationUnitLocator, Object javaProject);
+	public abstract void configureFromPlatform(Compiler compiler, Object compilationUnitLocator, Object javaProject, boolean isTestCode);
 
 	/**
 	 * Set the print writer for the standard output.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.java
index c4219fd..0e432e8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFile.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -50,6 +51,8 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ClassLiteralAccess;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FunctionalExpression;
@@ -57,10 +60,13 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Receiver;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleMemberAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
@@ -90,6 +96,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PolymorphicMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
@@ -174,9 +181,13 @@
 	 * @param unitResult org.aspectj.org.eclipse.jdt.internal.compiler.CompilationUnitResult
 	 */
 	public static void createProblemType(TypeDeclaration typeDeclaration, CompilationResult unitResult) {
+		createProblemType(typeDeclaration, null, unitResult);
+	}
+
+	private static void createProblemType(TypeDeclaration typeDeclaration, ClassFile parentClassFile, CompilationResult unitResult) {
 		SourceTypeBinding typeBinding = typeDeclaration.binding;
 		ClassFile classFile = ClassFile.getNewInstance(typeBinding);
-		classFile.initialize(typeBinding, null, true);
+		classFile.initialize(typeBinding, parentClassFile, true);
 
 		if (typeBinding.hasMemberTypes()) {
 			// see bug 180109
@@ -251,7 +262,7 @@
 			for (int i = 0, max = typeDeclaration.memberTypes.length; i < max; i++) {
 				TypeDeclaration memberType = typeDeclaration.memberTypes[i];
 				if (memberType.binding != null) {
-					ClassFile.createProblemType(memberType, unitResult);
+					ClassFile.createProblemType(memberType, classFile, unitResult);
 				}
 			}
 		}
@@ -296,7 +307,16 @@
 		} else {
 			this.codeStream = new CodeStream(this);
 		}
-		initByteArrays();
+		initByteArrays(this.referenceBinding.methods().length + this.referenceBinding.fields().length);
+	}
+
+	public ClassFile(ModuleBinding moduleBinding, CompilerOptions options) {
+		this.constantPool = new ConstantPool(this);
+		this.targetJDK = options.targetJDK;
+		this.produceAttributes = ClassFileConstants.ATTR_SOURCE;
+		this.isNestedType = false;
+		this.codeStream = new StackMapFrameCodeStream(this);
+		initByteArrays(0);
 	}
 
 	/**
@@ -406,6 +426,7 @@
 			ReferenceBinding[] innerClasses = new ReferenceBinding[numberOfInnerClasses];
 			this.innerClassesBindings.keySet().toArray(innerClasses);
 			Arrays.sort(innerClasses, new Comparator() {
+				@Override
 				public int compare(Object o1, Object o2) {
 					TypeBinding binding1 = (TypeBinding) o1;
 					TypeBinding binding2 = (TypeBinding) o2;
@@ -434,16 +455,16 @@
 		
 		// AspectJ Extension
 	    // write any "extraAttributes"
-	    if (extraAttributes != null) {
-	        for (int i=0, len=extraAttributes.size(); i < len; i++) {
-	            IAttribute attribute = (IAttribute)extraAttributes.get(i);
+	    if (this.extraAttributes != null) {
+	        for (int i=0, len=this.extraAttributes.size(); i < len; i++) {
+	            IAttribute attribute = (IAttribute)this.extraAttributes.get(i);
 	            short nameIndex = (short)constantPool.literalIndex(attribute.getNameChars());
 	            writeToContents(attribute.getAllBytes(nameIndex,constantPool));
 	            attributesNumber++;
 	        }
 	    }
 	    //  End AspectJ Extension
-		
+	    
 		// update the number of attributes
 		if (attributeOffset + 2 >= this.contents.length) {
 			resizeContents(2);
@@ -458,6 +479,57 @@
 		this.header[this.constantPoolOffset++] = (byte) (constantPoolCount >> 8);
 		this.header[this.constantPoolOffset] = (byte) constantPoolCount;
 	}
+
+	/**
+	 * INTERNAL USE-ONLY
+	 * This methods generate all the module attributes for the receiver.
+	 */
+	public void addModuleAttributes(ModuleBinding module, Annotation[] annotations, CompilationUnitDeclaration cud) {
+		int attributesNumber = 0;
+		// leave two bytes for the number of attributes and store the current offset
+		int attributeOffset = this.contentsOffset;
+		this.contentsOffset += 2;
+
+		// source attribute
+		if ((this.produceAttributes & ClassFileConstants.ATTR_SOURCE) != 0) {
+			String fullFileName =
+				new String(cud.getFileName());
+			fullFileName = fullFileName.replace('\\', '/');
+			int lastIndex = fullFileName.lastIndexOf('/');
+			if (lastIndex != -1) {
+				fullFileName = fullFileName.substring(lastIndex + 1, fullFileName.length());
+			}
+			attributesNumber += generateSourceAttribute(fullFileName);
+		}
+		attributesNumber += generateModuleAttribute(cud.moduleDeclaration);
+		if (annotations != null) {
+			long targetMask = TagBits.AnnotationForModule;
+			attributesNumber += generateRuntimeAnnotations(annotations, targetMask); 
+		}
+		char[] mainClass = cud.moduleDeclaration.binding.mainClassName;
+		if (mainClass != null) {
+			attributesNumber += generateModuleMainClassAttribute(CharOperation.replaceOnCopy(mainClass, '.', '/'));
+		}
+		char[][] packageNames = cud.moduleDeclaration.binding.getPackageNamesForClassFile();
+		if (packageNames != null) {
+			attributesNumber += generateModulePackagesAttribute(packageNames);
+		}
+
+		// update the number of attributes
+		if (attributeOffset + 2 >= this.contents.length) {
+			resizeContents(2);
+		}
+		this.contents[attributeOffset++] = (byte) (attributesNumber >> 8);
+		this.contents[attributeOffset] = (byte) attributesNumber;
+
+		// resynchronize all offsets of the classfile
+		this.header = this.constantPool.poolContent;
+		this.headerOffset = this.constantPool.currentOffset;
+		int constantPoolCount = this.constantPool.currentIndex;
+		this.header[this.constantPoolOffset++] = (byte) (constantPoolCount >> 8);
+		this.header[this.constantPoolOffset] = (byte) constantPoolCount;
+	}
+
 	/**
 	 * INTERNAL USE-ONLY
 	 * This methods generate all the default abstract method infos that correpond to
@@ -992,7 +1064,7 @@
 			do {
 				try {
 					problemResetPC = this.contentsOffset;
-			addSyntheticDeserializeLambda(deserializeLambdaMethod,this.referenceBinding.syntheticMethods()); 
+					addSyntheticDeserializeLambda(deserializeLambdaMethod,this.referenceBinding.syntheticMethods()); 
 					restart = false;
 				} catch (AbortMethod e) {
 					// Restart code generation if possible ...
@@ -1004,8 +1076,8 @@
 						restart = true;
 					} else {
 						throw new AbortType(this.referenceBinding.scope.referenceContext.compilationResult, e.problem);
-		}
-	}
+					}
+				}
 			} while (restart);
 		}
 	}
@@ -2393,7 +2465,7 @@
 			if (memberValuePairs != null) {
 				int memberValuePairsCount = 0;
 				int memberValuePairsLengthPosition = this.contentsOffset;
-				this.contentsOffset+=2; // leave space to fill in the pair count later
+				this.contentsOffset += 2; // leave space to fill in the pair count later
 				int resetPosition = this.contentsOffset;
 				final int memberValuePairsLength = memberValuePairs.length;
 				loop: for (int i = 0; i < memberValuePairsLength; i++) {
@@ -2414,9 +2486,9 @@
 								// ignore all annotation values
 								this.contents[this.contentsOffset++] = 0;
 								this.contents[this.contentsOffset++] = 0;
-//AspectJ patch for bug 507232
+								//AspectJ patch for bug 507232
 								memberValuePairsCount = 0;
-//AspectJ end
+								//AspectJ end
 								break loop;
 							}
 							memberValuePairsCount++;
@@ -2608,6 +2680,298 @@
 		this.contentsOffset = localContentsOffset;
 		return 1;
 	}
+	private int generateModuleAttribute(ModuleDeclaration module) {
+		ModuleBinding binding = module.binding;
+		int localContentsOffset = this.contentsOffset;
+		if (localContentsOffset + 10 >= this.contents.length) {
+			resizeContents(10);
+		}
+		int moduleAttributeNameIndex =
+			this.constantPool.literalIndex(AttributeNamesConstants.ModuleName);
+		this.contents[localContentsOffset++] = (byte) (moduleAttributeNameIndex >> 8);
+		this.contents[localContentsOffset++] = (byte) moduleAttributeNameIndex;
+		int attrLengthOffset = localContentsOffset;
+		localContentsOffset += 4;
+		int moduleNameIndex =
+				this.constantPool.literalIndexForModule(binding.moduleName);
+		this.contents[localContentsOffset++] = (byte) (moduleNameIndex >> 8);
+		this.contents[localContentsOffset++] = (byte) moduleNameIndex;
+		int flags = module.modifiers & ~(ClassFileConstants.AccModule);
+		this.contents[localContentsOffset++] = (byte) (flags >> 8);
+		this.contents[localContentsOffset++] = (byte) flags;
+		int module_version = 0;
+		this.contents[localContentsOffset++] = (byte) (module_version >> 8);
+		this.contents[localContentsOffset++] = (byte) module_version;
+		int attrLength = 6;
+		
+		// ================= requires section =================
+		/** u2 requires_count;
+	    	{   u2 requires_index;
+	        	u2 requires_flags;
+	    	} requires[requires_count];
+	    **/
+		int requiresCountOffset = localContentsOffset;
+		int requiresCount = module.requiresCount;
+		int requiresSize = 2 + requiresCount * 6;
+		if (localContentsOffset + requiresSize >= this.contents.length) {
+			resizeContents(requiresSize);
+		}
+		
+		localContentsOffset += 2;
+		ModuleBinding javaBaseBinding = null;
+		for(int i = 0; i < module.requiresCount; i++) {
+			RequiresStatement req = module.requires[i];
+			ModuleBinding reqBinding = req.resolvedBinding;
+			if (CharOperation.equals(reqBinding.moduleName, TypeConstants.JAVA_BASE)) {
+				javaBaseBinding = reqBinding;
+			}
+			int nameIndex = this.constantPool.literalIndexForModule(reqBinding.moduleName);
+			this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) (nameIndex);
+			flags = req.modifiers;
+			this.contents[localContentsOffset++] = (byte) (flags >> 8);
+			this.contents[localContentsOffset++] = (byte) (flags);
+			int required_version = 0;
+			this.contents[localContentsOffset++] = (byte) (required_version >> 8);
+			this.contents[localContentsOffset++] = (byte) (required_version);
+		}
+		if (!CharOperation.equals(binding.moduleName, TypeConstants.JAVA_BASE) && javaBaseBinding == null) {
+			if (localContentsOffset + 6 >= this.contents.length) {
+				resizeContents(6);
+			}
+			javaBaseBinding = binding.environment.javaBaseModule();
+			int javabase_index = this.constantPool.literalIndexForModule(javaBaseBinding.moduleName);
+			this.contents[localContentsOffset++] = (byte) (javabase_index >> 8);
+			this.contents[localContentsOffset++] = (byte) (javabase_index);
+			flags = ClassFileConstants.AccMandated;
+			this.contents[localContentsOffset++] = (byte) (flags >> 8);
+			this.contents[localContentsOffset++] = (byte) flags;
+			int required_version = 0;
+			this.contents[localContentsOffset++] = (byte) (required_version >> 8);
+			this.contents[localContentsOffset++] = (byte) (required_version);
+			requiresCount++;
+		}
+		this.contents[requiresCountOffset++] = (byte) (requiresCount >> 8);
+		this.contents[requiresCountOffset++] = (byte) requiresCount;
+		attrLength += 2 + 6 * requiresCount;
+		// ================= end requires section =================
+
+		// ================= exports section =================
+		/**
+		 * u2 exports_count;
+		 * {   u2 exports_index;
+		 *     u2 exports_flags;
+		 *     u2 exports_to_count;
+		 *     u2 exports_to_index[exports_to_count];
+		 * } exports[exports_count];
+		 */
+		int exportsSize = 2 + module.exportsCount * 6;
+		if (localContentsOffset + exportsSize >= this.contents.length) {
+			resizeContents(exportsSize);
+		}
+		this.contents[localContentsOffset++] = (byte) (module.exportsCount >> 8);
+		this.contents[localContentsOffset++] = (byte) module.exportsCount;
+		for (int i = 0; i < module.exportsCount; i++) {
+			ExportsStatement ref = module.exports[i];
+			if (localContentsOffset + 6 >= this.contents.length) {
+				resizeContents((module.exportsCount - i) * 6);
+			}
+			int nameIndex = this.constantPool.literalIndexForPackage(CharOperation.replaceOnCopy(ref.pkgName, '.', '/'));
+			this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) (nameIndex);
+			// TODO exports_flags - check when they are set
+			this.contents[localContentsOffset++] = (byte) 0;
+			this.contents[localContentsOffset++] = (byte) 0;
+
+			int exportsToCount = ref.isQualified() ? ref.targets.length : 0; 
+			this.contents[localContentsOffset++] = (byte) (exportsToCount >> 8);
+			this.contents[localContentsOffset++] = (byte) (exportsToCount);
+			if (exportsToCount > 0) {
+				int targetSize = 2 * exportsToCount;
+				if (localContentsOffset + targetSize >= this.contents.length) {
+					resizeContents(targetSize);
+				}
+				for(int j = 0; j < exportsToCount; j++) {
+					nameIndex = this.constantPool.literalIndexForModule(ref.targets[j].moduleName);
+					this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+					this.contents[localContentsOffset++] = (byte) (nameIndex);
+				}
+				attrLength += targetSize;
+			}
+		}
+		attrLength += exportsSize;
+		// ================= end exports section =================
+
+		// ================= opens section =================
+		/**
+		 * u2 opens_count;
+		 * {   u2 opens_index;
+		 *     u2 opens_flags;
+		 *     u2 opens_to_count;
+		 *     u2 opens_to_index[opens_to_count];
+		 * } exports[exports_count];
+		 */
+		int opensSize = 2 + module.opensCount * 6;
+		if (localContentsOffset + opensSize >= this.contents.length) {
+			resizeContents(opensSize);
+		}
+		this.contents[localContentsOffset++] = (byte) (module.opensCount >> 8);
+		this.contents[localContentsOffset++] = (byte) module.opensCount;
+		for (int i = 0; i < module.opensCount; i++) {
+			OpensStatement ref = module.opens[i];
+			if (localContentsOffset + 6 >= this.contents.length) {
+				resizeContents((module.opensCount - i) * 6);
+			}
+			int nameIndex = this.constantPool.literalIndexForPackage(CharOperation.replaceOnCopy(ref.pkgName, '.', '/'));
+			this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) (nameIndex);
+			// TODO opens_flags - check when they are set
+			this.contents[localContentsOffset++] = (byte) 0;
+			this.contents[localContentsOffset++] = (byte) 0;
+			
+			int opensToCount = ref.isQualified() ? ref.targets.length : 0; 
+			this.contents[localContentsOffset++] = (byte) (opensToCount >> 8);
+			this.contents[localContentsOffset++] = (byte) (opensToCount);
+			if (opensToCount > 0) {
+				int targetSize = 2 * opensToCount;
+				if (localContentsOffset + targetSize >= this.contents.length) {
+					resizeContents(targetSize);
+				}
+				for(int j = 0; j < opensToCount; j++) {
+					nameIndex = this.constantPool.literalIndexForModule(ref.targets[j].moduleName);
+					this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+					this.contents[localContentsOffset++] = (byte) (nameIndex);
+				}
+				attrLength += targetSize;
+			}
+		}
+		attrLength += opensSize;
+		// ================= end opens section =================
+
+		// ================= uses section =================
+		/**
+		 * u2 uses_count;
+		 * u2 uses_index[uses_count];
+		 */
+		int usesSize = 2 + 2 * module.usesCount;
+		if (localContentsOffset + usesSize >= this.contents.length) {
+			resizeContents(usesSize);
+		}
+		this.contents[localContentsOffset++] = (byte) (module.usesCount >> 8);
+		this.contents[localContentsOffset++] = (byte) module.usesCount;
+		for(int i = 0; i < module.usesCount; i++) {
+			int nameIndex = this.constantPool.literalIndexForType(module.uses[i].serviceInterface.resolvedType.constantPoolName());
+			this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) (nameIndex);
+		}
+		attrLength += usesSize;
+		// ================= end uses section =================
+
+		// ================= provides section =================
+		/**
+		 * u2 provides_count;
+		 * {
+		 * 		u2 provides_index;
+		 * 		u2 provides_with_count;
+		 * 		u2 provides_with_index[provides_with_count];
+		 * } provides[provides_count];
+		 */
+		int servicesSize = 2 + 4 * module.servicesCount;
+		if (localContentsOffset + servicesSize >= this.contents.length) {
+			resizeContents(servicesSize);
+		}
+		this.contents[localContentsOffset++] = (byte) (module.servicesCount >> 8);
+		this.contents[localContentsOffset++] = (byte) module.servicesCount;
+		for(int i = 0; i < module.servicesCount; i++) {
+			if (localContentsOffset + 4 >= this.contents.length) {
+				resizeContents((module.servicesCount - i) * 4);
+			}
+			int nameIndex = this.constantPool.literalIndexForType(module.services[i].serviceInterface.resolvedType.constantPoolName());
+			this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) (nameIndex);
+			TypeReference[] impls = module.services[i].implementations;
+			int implLength = impls.length;
+			this.contents[localContentsOffset++] = (byte) (implLength >> 8);
+			this.contents[localContentsOffset++] = (byte) implLength;
+			int targetSize = implLength * 2;
+			if (localContentsOffset + targetSize >= this.contents.length) {
+				resizeContents(targetSize);
+			}
+			for (int j = 0; j < implLength; j++) {
+				nameIndex = this.constantPool.literalIndexForType(impls[j].resolvedType.constantPoolName());
+				this.contents[localContentsOffset++] = (byte) (nameIndex >> 8);
+				this.contents[localContentsOffset++] = (byte) (nameIndex);
+			}
+			attrLength += targetSize;
+		}
+		attrLength += servicesSize;
+		// ================= end provides section =================
+
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 24);
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 16);
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 8);
+		this.contents[attrLengthOffset++] = (byte)attrLength;
+		this.contentsOffset = localContentsOffset;
+		return 1;
+	}
+
+	private int generateModuleMainClassAttribute(char[] moduleMainClass) {
+		int localContentsOffset = this.contentsOffset;
+		if (localContentsOffset + 8 >= this.contents.length) {
+			resizeContents(8);
+		}
+		int moduleAttributeNameIndex =
+			this.constantPool.literalIndex(AttributeNamesConstants.ModuleMainClass);
+		this.contents[localContentsOffset++] = (byte) (moduleAttributeNameIndex >> 8);
+		this.contents[localContentsOffset++] = (byte) moduleAttributeNameIndex;
+		int attrLength = 2;
+		this.contents[localContentsOffset++] = (byte)(attrLength >> 24);
+		this.contents[localContentsOffset++] = (byte)(attrLength >> 16);
+		this.contents[localContentsOffset++] = (byte)(attrLength >> 8);
+		this.contents[localContentsOffset++] = (byte)attrLength;
+		int moduleNameIndex = this.constantPool.literalIndexForType(moduleMainClass);
+		this.contents[localContentsOffset++] = (byte) (moduleNameIndex >> 8);
+		this.contents[localContentsOffset++] = (byte) moduleNameIndex;
+		this.contentsOffset = localContentsOffset;
+		return 1;
+	}
+
+	private int generateModulePackagesAttribute(char[][] packageNames) {
+		int localContentsOffset = this.contentsOffset;
+		int maxSize = 6 + 2*packageNames.length;
+		if (localContentsOffset + maxSize >= this.contents.length) {
+			resizeContents(maxSize);
+		}
+		int moduleAttributeNameIndex =
+			this.constantPool.literalIndex(AttributeNamesConstants.ModulePackages);
+		this.contents[localContentsOffset++] = (byte) (moduleAttributeNameIndex >> 8);
+		this.contents[localContentsOffset++] = (byte) moduleAttributeNameIndex;
+
+		int attrLengthOffset = localContentsOffset;
+		localContentsOffset+= 4;
+		int packageCountOffset = localContentsOffset;
+		localContentsOffset+= 2;
+		
+		int packagesCount = 0;
+		for (char[] packageName : packageNames) {
+			if (packageName == null || packageName.length == 0) continue;
+			int packageNameIndex = this.constantPool.literalIndexForPackage(packageName);
+			this.contents[localContentsOffset++] = (byte) (packageNameIndex >> 8);
+			this.contents[localContentsOffset++] = (byte) packageNameIndex;
+			packagesCount++;
+		}
+
+		this.contents[packageCountOffset++] = (byte)(packagesCount >> 8);
+		this.contents[packageCountOffset++] = (byte)packagesCount;
+		int attrLength = 2 + 2 * packagesCount;
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 24);
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 16);
+		this.contents[attrLengthOffset++] = (byte)(attrLength >> 8);
+		this.contents[attrLengthOffset++] = (byte)attrLength;
+		this.contentsOffset = localContentsOffset;
+		return 1;
+	}
+
 	private void generateElementValue(
 			Expression defaultValue,
 			TypeBinding memberValuePairReturnType,
@@ -3539,10 +3903,6 @@
 				.referenceCompilationUnit()
 				.compilationResult
 				.getLineSeparatorPositions());
-		// update the number of attributes
-		if ((this.produceAttributes & ClassFileConstants.ATTR_METHOD_PARAMETERS) != 0) {
-			attributeNumber += generateMethodParameters(methodBinding);
-		}
 		this.contents[methodAttributeOffset++] = (byte) (attributeNumber >> 8);
 		this.contents[methodAttributeOffset] = (byte) attributeNumber;
 	}	
@@ -3615,6 +3975,7 @@
 		int numberOfMissingTypes = 0;
 		if (initialSize > 1) {
 			Collections.sort(this.missingTypes, new Comparator() {
+				@Override
 				public int compare(Object o1, Object o2) {
 					TypeBinding typeBinding1 = (TypeBinding) o1;
 					TypeBinding typeBinding2 = (TypeBinding) o2;
@@ -3766,7 +4127,7 @@
 				long annotationMask = annotation.resolvedType != null ? annotation.resolvedType.getAnnotationTagBits() & TagBits.AnnotationTargetMASK : 0;
 				// AspectJ Extension: this prevents a Type targeting annotation being stashed on a
 				// method representing an 'declare @type'. So don't enforce this restriction
-//				if (annotationMask != 0 && (annotationMask & targetMask) == 0) continue;
+//				if (annotationMask != 0 && (annotationMask & targetMask) == 0) {
 //					if (!jdk16packageInfoAnnotation(annotationMask, targetMask)) continue;
 //				}
 				// AspectJ Extension: end
@@ -4058,6 +4419,8 @@
 	 */
 	private int generateMethodParameters(final MethodBinding binding) {
 		
+		if (binding.sourceLambda() != null)
+			return 0;
 		int initialContentsOffset = this.contentsOffset;
 		int length = 0; // count of actual parameters
 		
@@ -4109,8 +4472,6 @@
 			Argument[] arguments = null;
 			if (methodDeclaration != null && methodDeclaration.arguments != null) {
 				arguments = methodDeclaration.arguments;
-			} else if (binding.sourceLambda() != null) { // SyntheticMethodBinding, purpose : LambdaMethod.
-				arguments = binding.sourceLambda().arguments;
 			}
 			for (int i = 0, max = targetParameters.length, argumentsLength = arguments != null ? arguments.length : 0; i < max; i++) {
 				if (argumentsLength > i && arguments[i] != null) {
@@ -4960,13 +5321,12 @@
 				+ (reference[position] & 0xFF);
 	}
 
-	protected void initByteArrays() {
-		int members = this.referenceBinding.methods().length + this.referenceBinding.fields().length;
+	protected void initByteArrays(int members) {
 		this.header = new byte[INITIAL_HEADER_SIZE];
 		this.contents = new byte[members < 15 ? INITIAL_CONTENTS_SIZE : INITIAL_HEADER_SIZE];
 	}
 
-	public void initialize(SourceTypeBinding aType, ClassFile parentClassFile, boolean createProblemType) {
+	private void initializeHeader(ClassFile parentClassFile, int accessFlags) {
 		// generate the magic numbers inside the header
 		this.header[this.headerOffset++] = (byte) (0xCAFEBABEL >> 24);
 		this.header[this.headerOffset++] = (byte) (0xCAFEBABEL >> 16);
@@ -4982,6 +5342,14 @@
 		this.constantPoolOffset = this.headerOffset;
 		this.headerOffset += 2;
 		this.constantPool.initialize(this);
+		this.enclosingClassFile = parentClassFile;
+
+		// now we continue to generate the bytes inside the contents array
+		this.contents[this.contentsOffset++] = (byte) (accessFlags >> 8);
+		this.contents[this.contentsOffset++] = (byte) accessFlags;
+	}
+
+	public void initialize(SourceTypeBinding aType, ClassFile parentClassFile, boolean createProblemType) {
 
 		// Modifier manipulations for classfile
 		int accessFlags = aType.getAccessFlags();
@@ -5012,12 +5380,12 @@
 		if ((accessFlags & finalAbstract) == finalAbstract) {
 			accessFlags &= ~finalAbstract;
 		}
-		this.enclosingClassFile = parentClassFile;
+		initializeHeader(parentClassFile, accessFlags);
 		// innerclasses get their names computed at code gen time
-
-		// now we continue to generate the bytes inside the contents array
-		this.contents[this.contentsOffset++] = (byte) (accessFlags >> 8);
-		this.contents[this.contentsOffset++] = (byte) accessFlags;
+// Was this really removed in latest jdt? (AC 18-Sep-2017)
+//		// now we continue to generate the bytes inside the contents array
+//		this.contents[this.contentsOffset++] = (byte) (accessFlags >> 8);
+//		this.contents[this.contentsOffset++] = (byte) accessFlags;
 		int classNameIndex = this.constantPool.literalIndexForType(aType);
 		this.contents[this.contentsOffset++] = (byte) (classNameIndex >> 8);
 		this.contents[this.contentsOffset++] = (byte) classNameIndex;
@@ -5088,6 +5456,26 @@
 		this.codeStream.maxFieldCount = aType.scope.outerMostClassScope().referenceType().maxFieldCount;
 	}
 
+	public void initializeForModule(ModuleBinding module) {
+		initializeHeader(null, ClassFileConstants.AccModule);
+		int classNameIndex = this.constantPool.literalIndexForType(TypeConstants.MODULE_INFO_NAME);
+		this.contents[this.contentsOffset++] = (byte) (classNameIndex >> 8);
+		this.contents[this.contentsOffset++] = (byte) classNameIndex;
+		this.codeStream.maxFieldCount = 0;
+		// superclass:
+		this.contents[this.contentsOffset++] = 0;
+		this.contents[this.contentsOffset++] = 0;
+		// superInterfacesCount
+		this.contents[this.contentsOffset++] = 0;
+		this.contents[this.contentsOffset++] = 0;
+		// fieldsCount
+		this.contents[this.contentsOffset++] = 0;
+		this.contents[this.contentsOffset++] = 0;
+		// methodsCount
+		this.contents[this.contentsOffset++] = 0;
+		this.contents[this.contentsOffset++] = 0;
+	}
+
 	private void initializeDefaultLocals(StackMapFrame frame,
 			MethodBinding methodBinding,
 			int maxLocals,
@@ -5316,17 +5704,23 @@
 		return expression.bootstrapMethodNumber = this.bootstrapMethods.size() - 1;
 	}
 
-	public void reset(SourceTypeBinding typeBinding) {
+	public void reset(/*@Nullable*/SourceTypeBinding typeBinding, CompilerOptions options) {
 		// the code stream is reinitialized for each method
-		final CompilerOptions options = typeBinding.scope.compilerOptions();
-		this.referenceBinding = typeBinding;
-		this.isNestedType = typeBinding.isNestedType();
+		if (typeBinding != null) {
+			this.referenceBinding = typeBinding;
+			this.isNestedType = typeBinding.isNestedType();
+		} else {
+			this.referenceBinding = null;
+			this.isNestedType = false;
+		}
 		this.targetJDK = options.targetJDK;
 		this.produceAttributes = options.produceDebugAttributes;
 		if (this.targetJDK >= ClassFileConstants.JDK1_6) {
 			this.produceAttributes |= ClassFileConstants.ATTR_STACK_MAP_TABLE;
 			if (this.targetJDK >= ClassFileConstants.JDK1_8) {
 				this.produceAttributes |= ClassFileConstants.ATTR_TYPE_ANNOTATION;
+				if (!(this.codeStream instanceof TypeAnnotationCodeStream) && this.referenceBinding != null)
+					this.codeStream = new TypeAnnotationCodeStream(this);
 				if (options.produceMethodParameters) {
 					this.produceAttributes |= ClassFileConstants.ATTR_METHOD_PARAMETERS;
 				}
@@ -5430,6 +5824,7 @@
 			}
 		}
 		Collections.sort(result, new Comparator() {
+			@Override
 			public int compare(Object o1, Object o2) {
 				StackMapFrame frame = (StackMapFrame) o1;
 				StackMapFrame frame2 = (StackMapFrame) o2;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.java
index 201ebf2..283bd3e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ClassFilePool.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,8 @@
 
 import java.util.Arrays;
 
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 
 public class ClassFilePool {
@@ -37,13 +39,30 @@
 			return newClassFile;
 		}
 		if (!classFile.isShared) {
-			classFile.reset(typeBinding);
+			classFile.reset(typeBinding, typeBinding.scope.compilerOptions());
 			classFile.isShared = true;
 			return classFile;
 		}
 	}
 	return new ClassFile(typeBinding);
 }
+public synchronized ClassFile acquireForModule(ModuleBinding moduleBinding, CompilerOptions options) {
+	for (int i = 0; i < POOL_SIZE; i++) {
+		ClassFile classFile = this.classFiles[i];
+		if (classFile == null) {
+			ClassFile newClassFile = new ClassFile(moduleBinding, options);
+			this.classFiles[i] = newClassFile;
+			newClassFile.isShared = true;
+			return newClassFile;
+		}
+		if (!classFile.isShared) {
+			classFile.reset(null, options);
+			classFile.isShared = true;
+			return classFile;
+		}
+	}
+	return new ClassFile(moduleBinding, options);
+}
 public synchronized void release(ClassFile classFile) {
 	classFile.isShared = false;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.java
index a2757a4..99d10f5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/CompilationResult.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -81,6 +82,7 @@
 
 	private static final int[] EMPTY_LINE_ENDS = Util.EMPTY_INT_ARRAY;
 	private static final Comparator PROBLEM_COMPARATOR = new Comparator() {
+		@Override
 		public int compare(Object o1, Object o2) {
 			return ((CategorizedProblem) o1).getSourceStart() - ((CategorizedProblem) o2).getSourceStart();
 		}
@@ -446,6 +448,7 @@
 	return this;
 }
 
+@Override
 public String toString(){
 	StringBuffer buffer = new StringBuffer();
 	if (this.fileName != null){
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.java
index d4fb55a..cf91ad9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/Compiler.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +18,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.*;
@@ -273,6 +275,7 @@
 			this.requestor = requestor;
 		} else {
 			this.requestor = new ICompilerRequestor(){
+				@Override
 				public void acceptResult(CompilationResult result){
 					if (DebugRequestor.isActive()){
 						DebugRequestor.acceptDebugResult(result);
@@ -291,6 +294,7 @@
 	/**
 	 * Add an additional binary type
 	 */
+	@Override
 	public void accept(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		if (this.options.verbose) {
 			this.out.println(
@@ -298,13 +302,15 @@
 //			new Exception("TRACE BINARY").printStackTrace(System.out);
 //		    System.out.println();
 		}
-		this.lookupEnvironment.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction);
+		LookupEnvironment env = packageBinding.environment;
+		env.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction);
 	}
 
 	/**
 	 * Add an additional compilation unit into the loop
 	 *  ->  build compilation unit declarations, their bindings and record their results.
 	 */
+	@Override
 	public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 		// Switch the current policy and compilation result for this unit to the requested one.
 		CompilationResult unitResult =
@@ -348,6 +354,7 @@
 	/**
 	 * Add additional source types
 	 */
+	@Override
 	public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		this.problemReporter.abortDueToInternalError(
 			Messages.bind(Messages.abort_againstSourceModel, new String[] { String.valueOf(sourceTypes[0].getName()), String.valueOf(sourceTypes[0].getFileName()) }));
@@ -427,6 +434,10 @@
 			// build and record parsed units
 			reportProgress(Messages.compilation_beginningToCompile);
 
+			if (this.options.complianceLevel >= ClassFileConstants.JDK9) {
+				// in Java 9 the compiler must never ask the oracle for a module that is contained in the input units:
+				sortModuleDeclarationsFirst(sourceUnits);
+			}
 			if (this.annotationProcessorManager == null) {
 				beginToCompile(sourceUnits);
 			} else {
@@ -474,6 +485,18 @@
 		}
 	}
 
+	private void sortModuleDeclarationsFirst(ICompilationUnit[] sourceUnits) {
+		Arrays.sort(sourceUnits, (u1, u2) -> {
+			char[] fn1 = u1.getFileName();
+			char[] fn2 = u2.getFileName();
+			boolean isMod1 = CharOperation.endsWith(fn1, TypeConstants.MODULE_INFO_FILE_NAME) || CharOperation.endsWith(fn1, TypeConstants.MODULE_INFO_CLASS_NAME);
+			boolean isMod2 = CharOperation.endsWith(fn2, TypeConstants.MODULE_INFO_FILE_NAME) || CharOperation.endsWith(fn2, TypeConstants.MODULE_INFO_CLASS_NAME);
+			if (isMod1 == isMod2)
+				return 0;
+			return isMod1 ? -1 : 1;
+		});
+	}
+
 	class APTProblem {
 		CategorizedProblem problem;
 		ReferenceContext context;
@@ -482,7 +505,7 @@
 			this.context = context;
 		}
 	}
-
+	
 	protected void backupAptProblems() {
 		if (this.unitsToProcess == null) return;
 		for (int i = 0; i < this.totalUnits; i++) {
@@ -549,14 +572,12 @@
 								}));
 						process(unit, i);
 					} finally {
-						// cleanup compilation unit result, but only if not annotation processed.
+						// cleanup compilation unit result
 						// if (this.annotationProcessorManager == null || shouldCleanup(i))
 						// unit.cleanUp(); // AspectJ Extension - moved to afterProcessing
 					}
 					// AspectJ Extension
-					// 					if (this.annotationProcessorManager == null) {
 					// this.unitsToProcess[i] = null; // release reference to processed unit declaration
-					// }
 					// AspectJ Extension end
 					reportWorked(1, i);
 					this.stats.lineCount += unit.compilationResult.lineSeparatorPositions.length;
@@ -605,14 +626,14 @@
 				}
 			}
 			if (!lastRound) {
-			if (this.annotationProcessorManager != null && this.totalUnits > this.annotationProcessorStartIndex) {
-				int backup = this.annotationProcessorStartIndex;
-				int prevUnits = this.totalUnits;
-				processAnnotations();
-				// Clean up the units that were left out previously for annotation processing.
-				for (int i = backup; i < prevUnits; i++) {
-					this.unitsToProcess[i].cleanUp();
-				}
+				if (this.annotationProcessorManager != null && this.totalUnits > this.annotationProcessorStartIndex) {
+					int backup = this.annotationProcessorStartIndex;
+					int prevUnits = this.totalUnits;
+					processAnnotations();
+					// Clean up the units that were left out previously for annotation processing.
+					for (int i = backup; i < prevUnits; i++) {
+						this.unitsToProcess[i].cleanUp();
+					}
 					processCompiledUnits(backup, lastRound);
 				}
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.java
index 64c9938..56d6d35 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DefaultErrorHandlingPolicies.java
@@ -21,12 +21,15 @@
  */
 public static IErrorHandlingPolicy exitAfterAllProblems() {
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean stopOnFirstError() {
 			return false;
 		}
+		@Override
 		public boolean proceedOnErrors(){
 			return false;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return false;
 		}
@@ -39,12 +42,15 @@
  */
 public static IErrorHandlingPolicy exitOnFirstError() {
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean stopOnFirstError() {
 			return true;
 		}
+		@Override
 		public boolean proceedOnErrors(){
 			return false;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return false;
 		}
@@ -56,12 +62,15 @@
  */
 public static IErrorHandlingPolicy proceedOnFirstError() {
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean stopOnFirstError() {
 			return true;
 		}
+		@Override
 		public boolean proceedOnErrors(){
 			return true;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return false;
 		}
@@ -73,12 +82,15 @@
  */
 public static IErrorHandlingPolicy proceedWithAllProblems() {
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean stopOnFirstError() {
 			return false;
 		}
+		@Override
 		public boolean proceedOnErrors(){
 			return true;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return false;
 		}
@@ -90,12 +102,15 @@
  */
 public static IErrorHandlingPolicy ignoreAllProblems() {
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean stopOnFirstError() {
 			return false;
 		}
+		@Override
 		public boolean proceedOnErrors(){
 			return true;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return true;
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.java
index 5e96555..4021ffb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/DocumentElementParser.java
@@ -58,6 +58,7 @@
  * Additionally, before investigating for @deprecated, retrieve the positions
  * of the JavaDoc comments so as to notify requestor with them.
  */
+@Override
 public void checkComment() {
 
 	/* persisting javadoc positions */
@@ -93,6 +94,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeCatchFormalParameter() {
 	// FormalParameter ::= Type VariableDeclaratorId ==> false
 	// FormalParameter ::= Modifiers Type VariableDeclaratorId ==> true
@@ -132,6 +134,7 @@
 	pushOnAstStack(arg);
 	this.intArrayPtr--;
 }
+@Override
 protected void consumeClassBodyDeclaration() {
 	// ClassBodyDeclaration ::= Diet Block
 	//push an Initializer
@@ -152,6 +155,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeClassDeclaration() {
 	super.consumeClassDeclaration();
 	// we know that we have a TypeDeclaration on the top of the astStack
@@ -166,6 +170,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeClassHeader() {
 	//ClassHeader ::= $empty
 	super.consumeClassHeader();
@@ -231,6 +236,7 @@
 
 	}
 }
+@Override
 protected void consumeClassHeaderName1() {
 	// ClassHeaderName ::= Modifiersopt 'class' 'Identifier'
 	TypeDeclaration typeDecl = new TypeDeclaration(this.compilationUnit.compilationResult);
@@ -282,6 +288,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeCompilationUnit() {
 	// CompilationUnit ::= EnterCompilationUnit PackageDeclarationopt ImportDeclarationsopt
 	this.requestor.exitCompilationUnit(this.scanner.source.length - 1);
@@ -290,6 +297,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeConstructorDeclaration() {
 	// ConstructorDeclaration ::= ConstructorHeader ConstructorBody
 	super.consumeConstructorDeclaration();
@@ -304,6 +312,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeConstructorHeader() {
 	// ConstructorHeader ::= ConstructorHeaderName MethodHeaderParameters MethodHeaderThrowsClauseopt
 	super.consumeConstructorHeader();
@@ -378,6 +387,7 @@
 			exceptionTypeEnds,
 			this.scanner.currentPosition - 1);
 }
+@Override
 protected void consumeConstructorHeaderName() {
 	// ConstructorHeaderName ::=  Modifiersopt 'Identifier' '('
 	ConstructorDeclaration cd = new ConstructorDeclaration(this.compilationUnit.compilationResult);
@@ -412,6 +422,7 @@
 	cd.sourceEnd = this.lParenPos;
 	cd.bodyStart = this.lParenPos + 1;
 }
+@Override
 protected void consumeDefaultModifiers() {
 	checkComment(); // might update modifiers with AccDeprecated
 	pushOnIntStack(this.modifiers); // modifiers
@@ -421,6 +432,7 @@
 	resetModifiers();
 	pushOnExpressionStackLengthStack(0);
 }
+@Override
 protected void consumeDiet() {
 	// Diet ::= $empty
 	super.consumeDiet();
@@ -433,6 +445,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeEnterCompilationUnit() {
 	// EnterCompilationUnit ::= $empty
 	this.requestor.enterCompilationUnit();
@@ -441,6 +454,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeEnterVariable() {
 	// EnterVariable ::= $empty
 	boolean isLocalDeclaration = isLocalDeclaration();
@@ -534,6 +548,7 @@
 				extendedTypeDimension == 0 ? -1 : this.endPosition);
 	}
 }
+@Override
 protected void consumeEnhancedForStatementHeaderInit(boolean hasModifiers) {
 	TypeReference type;
 
@@ -588,6 +603,7 @@
 
 	iteratorForStatement.sourceEnd = localDeclaration.declarationSourceEnd;
 }
+@Override
 protected void consumeMethodHeaderNameWithTypeParameters(boolean isAnnotationMethod) {
 	// MethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '('
 	// AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '('
@@ -661,6 +677,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeExitVariableWithInitialization() {
 	// ExitVariableWithInitialization ::= $empty
 	// the scanner is located after the comma or the semi-colon.
@@ -670,6 +687,7 @@
 	this.lastFieldEndPosition = this.scanner.currentPosition - 1;
 	this.lastFieldBodyEndPosition = 	((AbstractVariableDeclaration) this.astStack[this.astPtr]).initialization.sourceEnd;
 }
+@Override
 protected void consumeExitVariableWithoutInitialization() {
 	// ExitVariableWithoutInitialization ::= $empty
 	// do nothing by default
@@ -682,6 +700,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeFieldDeclaration() {
 	// See consumeLocalVariableDeclarationDefaultModifier() in case of change: duplicated code
 	// FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';'
@@ -695,6 +714,7 @@
 		this.requestor.exitField(this.lastFieldBodyEndPosition, this.lastFieldEndPosition);
 	}
 }
+@Override
 protected void consumeFormalParameter(boolean isVarArgs) {
 	// FormalParameter ::= Type VariableDeclaratorId ==> false
 	// FormalParameter ::= Modifiers Type VariableDeclaratorId ==> true
@@ -785,6 +805,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeInterfaceDeclaration() {
 	super.consumeInterfaceDeclaration();
 	// we know that we have a TypeDeclaration on the top of the astStack
@@ -799,6 +820,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeInterfaceHeader() {
 	//InterfaceHeader ::= $empty
 	super.consumeInterfaceHeader();
@@ -843,6 +865,7 @@
 		interfacenameEnds,
 		this.scanner.currentPosition - 1);
 }
+@Override
 protected void consumeInterfaceHeaderName1() {
 	// InterfaceHeaderName ::= Modifiersopt 'interface' 'Identifier'
 	TypeDeclaration typeDecl = new TypeDeclaration(this.compilationUnit.compilationResult);
@@ -890,11 +913,13 @@
 	typeDecl.javadoc = this.javadoc;
 	this.javadoc = null;
 }
+@Override
 protected void consumeInternalCompilationUnit() {
 	// InternalCompilationUnit ::= PackageDeclaration
 	// InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports
 	// InternalCompilationUnit ::= ImportDeclarations ReduceImports
 }
+@Override
 protected void consumeInternalCompilationUnitWithTypes() {
 	// InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports TypeDeclarations
 	// InternalCompilationUnit ::= PackageDeclaration TypeDeclarations
@@ -912,6 +937,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeLocalVariableDeclaration() {
 	// See consumeLocalVariableDeclarationDefaultModifier() in case of change: duplicated code
 	// FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';'
@@ -923,6 +949,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodDeclaration(boolean isNotAbstract, boolean isDefaultMethod) {
 	// MethodDeclaration ::= MethodHeader MethodBody
 	// AbstractMethodDeclaration ::= MethodHeader ';'
@@ -938,6 +965,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodHeader() {
 	// MethodHeader ::= MethodHeaderName MethodHeaderParameters MethodHeaderExtendedDims ThrowsClauseopt
 	super.consumeMethodHeader();
@@ -1019,6 +1047,7 @@
 			exceptionTypeEnds,
 			this.scanner.currentPosition - 1);
 }
+@Override
 protected void consumeMethodHeaderExtendedDims() {
 	// MethodHeaderExtendedDims ::= Dimsopt
 	// now we update the returnType of the method
@@ -1034,6 +1063,7 @@
 		}
 	}
 }
+@Override
 protected void consumeMethodHeaderName(boolean isAnnotationMethod) {
 	// MethodHeaderName ::= Modifiersopt Type 'Identifier' '('
 	MethodDeclaration md = null;
@@ -1072,6 +1102,7 @@
 	pushOnAstStack(md);
 	md.bodyStart = this.scanner.currentPosition-1;
 }
+@Override
 protected void consumeModifiers() {
 	checkComment(); // might update modifiers with AccDeprecated
 	pushOnIntStack(this.modifiers); // modifiers
@@ -1080,6 +1111,7 @@
 		this.declarationSourceStart >= 0 ? this.declarationSourceStart : this.modifiersSourceStart);
 	resetModifiers();
 }
+@Override
 protected void consumePackageComment() {
 	// get possible comment for syntax since 1.5
 	if(this.options.sourceLevel >= ClassFileConstants.JDK1_5) {
@@ -1093,6 +1125,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumePackageDeclarationName() {
 	/*
 	 * Javadoc positions are persisted in consumePackageComment
@@ -1111,6 +1144,7 @@
 *
 * INTERNAL USE-ONLY
 */
+@Override
 protected void consumePackageDeclarationNameWithModifiers() {
 	super.consumePackageDeclarationNameWithModifiers();
 	ImportReference importReference = this.compilationUnit.currentPackage;
@@ -1122,6 +1156,7 @@
 		CharOperation.concatWith(importReference.getImportName(), '.'),
 		importReference.sourceStart);
 }
+@Override
 protected void consumePushModifiers() {
 	checkComment(); // might update modifiers with AccDeprecated
 	pushOnIntStack(this.modifiers); // modifiers
@@ -1137,6 +1172,7 @@
 	resetModifiers();
 	pushOnExpressionStackLengthStack(0);
 }
+@Override
 protected void consumePushRealModifiers() {
 	checkComment(); // might update modifiers with AccDeprecated
 	pushOnIntStack(this.modifiers); // modifiers
@@ -1151,6 +1187,7 @@
 	}
 	resetModifiers();
 }
+@Override
 protected void consumeSingleStaticImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' 'static' Name
 
@@ -1172,6 +1209,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeSingleTypeImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' Name
 
@@ -1189,6 +1227,7 @@
 		false,
 		ClassFileConstants.AccDefault);
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' 'static' Name '.' '*'
 
@@ -1210,6 +1249,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeStaticInitializer() {
 	// StaticInitializer ::=  StaticOnly Block
 	//push an Initializer
@@ -1225,6 +1265,7 @@
 		initializer.block.sourceStart,
 		initializer.declarationSourceEnd);
 }
+@Override
 protected void consumeStaticOnly() {
 	// StaticOnly ::= 'static'
 	checkComment(); // might update declaration source start
@@ -1240,6 +1281,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*'
 
@@ -1270,22 +1312,26 @@
  * } // end of method foo
  */
 
+@Override
 public int flushCommentsDefinedPriorTo(int position) {
 
 	return this.lastFieldEndPosition = super.flushCommentsDefinedPriorTo(position);
 }
+@Override
 public CompilationUnitDeclaration endParse(int act) {
 	if (this.scanner.recordLineSeparator) {
 		this.requestor.acceptLineSeparatorPositions(this.scanner.getLineEnds());
 	}
 	return super.endParse(act);
 }
+@Override
 public void initialize(boolean parsingCompilationUnit) {
 	//positionning the parser for a new compilation unit
 	//avoiding stack reallocation and all that....
 	super.initialize(parsingCompilationUnit);
 	this.intArrayPtr = -1;
 }
+@Override
 public void initialize() {
 	//positionning the parser for a new compilation unit
 	//avoiding stack reallocation and all that....
@@ -1306,6 +1352,7 @@
 	}
 	return false;
 }
+@Override
 protected void parse() {
 	this.diet = true;
 	this.dietInt = 0;
@@ -1487,6 +1534,7 @@
  *
  * @return ProblemReporter
  */
+@Override
 public ProblemReporter problemReporter() {
 	this.problemReporter.referenceContext = this.referenceContext;
 	return this.problemReporter;
@@ -1502,6 +1550,7 @@
 	}
 	this.intArrayStack[this.intArrayPtr] = positions;
 }
+@Override
 protected void resetModifiers() {
 	super.resetModifiers();
 	this.declarationSourceStart = -1;
@@ -1510,6 +1559,7 @@
  * Syntax error was detected. Will attempt to perform some recovery action in order
  * to resume to the regular parse loop.
  */
+@Override
 protected int resumeOnSyntaxError() {
 	return HALT;
 }
@@ -1534,6 +1584,7 @@
 	}
 	return CharOperation.concatWith(type.getTypeName(), '.');
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append("intArrayPtr = " + this.intArrayPtr + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.java
index ed39e80..86fb48d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ISourceElementRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 
 /*
@@ -27,7 +28,8 @@
  *
  * The structural investigation includes: - package statement - import
  * statements - top-level types: package member, member types (member types of
- * member types...) - fields - methods
+ * member types...) - fields - methods. From Java 9 onwards it includes the 
+ * module name in a module declaration
  *
  * If reference information is requested, then all source constructs are
  * investigated and type, field & method references are provided as well.
@@ -46,6 +48,34 @@
 @SuppressWarnings("rawtypes")
 public interface ISourceElementRequestor {
 
+	public static class ModuleInfo {
+		public int declarationStart;
+		public int modifiers;
+		public char[] name;
+		public int nameSourceStart;
+		public int nameSourceEnd;
+		public char[] moduleName;
+		public RequiresInfo[] requires;
+		public PackageExportInfo[] exports;
+		public ServicesInfo[] services;
+		public PackageExportInfo[] opens;
+		public char[][] usedServices;
+		public Annotation[] annotations;
+		public ModuleDeclaration node;
+		public char[][] categories;
+	}
+	public static class RequiresInfo {
+		public char[] moduleName;
+		public int modifiers;
+	}
+	public static class PackageExportInfo {
+		public char[] pkgName;
+		public char[][] targets;
+	}
+	public static class ServicesInfo {
+		public char[] serviceName;
+		public char[][] implNames;
+	}
 	public static class TypeInfo {
 		public boolean typeAnnotated;
 		public int declarationStart;
@@ -200,4 +230,11 @@
 	void exitMethod(int declarationEnd, Expression defaultValue);
 
 	void exitType(int declarationEnd);
+	
+	default void enterModule(ModuleInfo info) {
+		// do nothing
+	}
+	default void exitModule(int declarationEnd) {
+		// do nothing
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java
index 843e315..9e04d11 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java
@@ -108,6 +108,7 @@
 	return next;
 }
 
+@Override
 public void run() {
 	boolean noAnnotations = this.compiler.annotationProcessorManager == null;
 	while (this.processingThread != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.java
index c9afe43..7cf0fb5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ReadManager.java
@@ -75,7 +75,8 @@
 }
 
 public char[] getContents(ICompilationUnit unit) throws Error {
-	if (this.readingThreads == null || this.units.length == 0) {
+	Thread[] rThreads = this.readingThreads;
+	if (rThreads == null || this.units.length == 0) {
 		if (this.caughtException != null) {
 			// rethrow the caught exception from the readingThreads in the main compiler thread
 			if (this.caughtException instanceof Error)
@@ -85,7 +86,7 @@
 		return unit.getContents();
 	}
 
-	boolean yield = false;
+	boolean yield = this.sleepingThreadCount == rThreads.length;
 	char[] result = null;
 	synchronized (this) {
 		if (unit == this.filesRead[this.readyToReadPosition]) {
@@ -115,7 +116,6 @@
 				//System.out.print('+');
 				//System.out.print(this.nextFileToRead);
 				notify();
-				yield = this.sleepingThreadCount == this.readingThreads.length;
 			}
 		} else {
 			// must make sure we're reading ahead of the unit
@@ -145,6 +145,7 @@
 	return unit.getContents();
 }
 
+@Override
 public void run() {
 	try {
 		while (this.readingThreads != null && this.nextFileToRead < this.units.length) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java
index 784791e..5682642 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementNotifier.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2015 IBM Corporation and others.
+ * Copyright (c) 2008, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,12 +31,15 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Initializer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ThisReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
@@ -73,10 +76,12 @@
 			if (size == 0) return null;
 			return (TypeDeclaration) this.declaringTypes.get(size-1);
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, BlockScope scope) {
 			notifySourceElementRequestor(typeDeclaration, true, peekDeclaringType(), this.currentPackage);
 			return false; // don't visit members as this was done during notifySourceElementRequestor(...)
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, ClassScope scope) {
 			notifySourceElementRequestor(typeDeclaration, true, peekDeclaringType(), this.currentPackage);
 			return false; // don't visit members as this was done during notifySourceElementRequestor(...)
@@ -91,7 +96,7 @@
 	LocalDeclarationVisitor localDeclarationVisitor = null;
 
 	HashtableOfObjectToInt sourceEnds;
-	Map nodesToCategories;
+	Map<ASTNode,char[][]> nodesToCategories;
 
 	int initialPosition;
 	int eofPosition;
@@ -306,7 +311,7 @@
 			methodInfo.exceptionTypes = thrownExceptionTypes;
 			methodInfo.typeParameters = getTypeParameterInfos(methodDeclaration.typeParameters());
 			methodInfo.parameterInfos = parameterInfos;
-			methodInfo.categories = (char[][]) this.nodesToCategories.get(methodDeclaration);
+			methodInfo.categories = this.nodesToCategories.get(methodDeclaration);
 			methodInfo.annotations = methodDeclaration.annotations;
 			methodInfo.declaringPackageName = currentPackage == null ? CharOperation.NO_CHAR : CharOperation.concatWith(currentPackage.tokens, '.');
 			methodInfo.declaringTypeModifiers = declaringType.modifiers;
@@ -365,7 +370,7 @@
 		methodInfo.exceptionTypes = thrownExceptionTypes;
 		methodInfo.typeParameters = getTypeParameterInfos(methodDeclaration.typeParameters());
 		methodInfo.parameterInfos = parameterInfos;
-		methodInfo.categories = (char[][]) this.nodesToCategories.get(methodDeclaration);
+		methodInfo.categories = this.nodesToCategories.get(methodDeclaration);
 		methodInfo.annotations = methodDeclaration.annotations;
 		methodInfo.node = methodDeclaration;
 		methodInfo.enclosingType = declaringType;
@@ -427,7 +432,8 @@
 		length =
 			(currentPackage == null ? 0 : 1)
 			+ (imports == null ? 0 : imports.length)
-			+ (types == null ? 0 : types.length);
+			+ (types == null ? 0 : types.length)
+			+ (parsedUnit.moduleDeclaration == null ? 0 : 1);
 		nodes = new ASTNode[length];
 		int index = 0;
 		if (currentPackage != null) {
@@ -443,6 +449,9 @@
 				nodes[index++] = types[i];
 			}
 		}
+		
+		if (parsedUnit.moduleDeclaration != null)
+			nodes[index++] = parsedUnit.moduleDeclaration;
 
 		// notify the nodes in the syntactical order
 		if (length > 0) {
@@ -456,8 +465,10 @@
 					} else {
 						notifySourceElementRequestor(importRef, false);
 					}
-				} else { // instanceof TypeDeclaration
+				} else if (node instanceof TypeDeclaration) {
 					notifySourceElementRequestor((TypeDeclaration)node, true, null, currentPackage);
+				} else if (node instanceof ModuleDeclaration) {
+					notifySourceElementRequestor(parsedUnit.moduleDeclaration);
 				}
 			}
 		}
@@ -522,7 +533,7 @@
 				fieldInfo.type = typeName;
 				fieldInfo.nameSourceStart = fieldDeclaration.sourceStart;
 				fieldInfo.nameSourceEnd = fieldDeclaration.sourceEnd;
-				fieldInfo.categories = (char[][]) this.nodesToCategories.get(fieldDeclaration);
+				fieldInfo.categories = this.nodesToCategories.get(fieldDeclaration);
 				fieldInfo.annotations = fieldDeclaration.annotations;
 				fieldInfo.node = fieldDeclaration;
 				this.requestor.enterField(fieldInfo);
@@ -576,6 +587,32 @@
 			importReference.modifiers);
 	}
 }
+protected void notifySourceElementRequestor(ModuleDeclaration moduleDeclaration) {
+	boolean isInRange =
+			this.initialPosition <= moduleDeclaration.declarationSourceStart
+			&& this.eofPosition >= moduleDeclaration.declarationSourceEnd;
+	ISourceElementRequestor.ModuleInfo info = new ISourceElementRequestor.ModuleInfo();
+	if (isInRange) {
+
+		int currentModifiers = moduleDeclaration.modifiers;
+
+		// remember deprecation so as to not lose it below
+		boolean deprecated = (currentModifiers & ClassFileConstants.AccDeprecated) != 0 || hasDeprecatedAnnotation(moduleDeclaration.annotations);
+
+		info.declarationStart = moduleDeclaration.declarationSourceStart;
+		info.modifiers = deprecated ? (currentModifiers & ExtraCompilerModifiers.AccJustFlag) | ClassFileConstants.AccDeprecated : currentModifiers & ExtraCompilerModifiers.AccJustFlag;
+		info.name = TypeConstants.MODULE_INFO_NAME;
+		info.nameSourceStart = moduleDeclaration.sourceStart;
+		info.nameSourceEnd = moduleDeclaration.sourceEnd;
+		info.moduleName = moduleDeclaration.moduleName;
+		info.annotations = moduleDeclaration.annotations;
+		info.node = moduleDeclaration;
+		info.categories = this.nodesToCategories.get(moduleDeclaration);
+		fillModuleInfo(moduleDeclaration, info);
+		this.requestor.enterModule(info);
+		this.requestor.exitModule(moduleDeclaration.declarationSourceEnd);
+	}
+}
 protected void notifySourceElementRequestor(TypeDeclaration typeDeclaration, boolean notifyTypePresence, TypeDeclaration declaringType, ImportReference currentPackage) {
 
 	if (CharOperation.equals(TypeConstants.PACKAGE_INFO_NAME, typeDeclaration.name)) return;
@@ -629,7 +666,7 @@
 			typeInfo.superclass = superclassName;
 			typeInfo.superinterfaces = interfaceNames;
 			typeInfo.typeParameters = getTypeParameterInfos(typeDeclaration.typeParameters);
-			typeInfo.categories = (char[][]) this.nodesToCategories.get(typeDeclaration);
+			typeInfo.categories = this.nodesToCategories.get(typeDeclaration);
 			typeInfo.secondary = typeDeclaration.isSecondary();
 			typeInfo.anonymousMember = typeDeclaration.allocation != null && typeDeclaration.allocation.enclosingInstance != null;
 			typeInfo.annotations = typeDeclaration.annotations;
@@ -711,6 +748,74 @@
 		this.nestedTypeIndex--;
 	}
 }
+private void fillModuleInfo(ModuleDeclaration mod, ISourceElementRequestor.ModuleInfo modInfo) {
+	if (mod.requiresCount > 0) {
+		ISourceElementRequestor.RequiresInfo reqs[] = new ISourceElementRequestor.RequiresInfo[mod.requiresCount];
+		for (int i = 0; i < mod.requiresCount; i++) {
+			ISourceElementRequestor.RequiresInfo req = new ISourceElementRequestor.RequiresInfo();
+			req.moduleName = CharOperation.concatWith(mod.requires[i].module.tokens, '.');
+			req.modifiers = mod.requires[i].modifiers;
+			reqs[i] = req;
+		}
+		modInfo.requires = reqs;
+	}
+	if (mod.exportsCount > 0) {
+		ISourceElementRequestor.PackageExportInfo exps[] = new ISourceElementRequestor.PackageExportInfo[mod.exportsCount];
+		for (int i = 0; i < mod.exportsCount; i++) {
+			ISourceElementRequestor.PackageExportInfo exp = new ISourceElementRequestor.PackageExportInfo();
+			ExportsStatement exportsStatement = mod.exports[i];
+			exp.pkgName = exportsStatement.pkgName;
+			if (exportsStatement.targets == null) {
+				exp.targets = CharOperation.NO_CHAR_CHAR;
+			} else {
+				exp.targets = new char[exportsStatement.targets.length][];
+				for(int j = 0; j < exp.targets.length; j++) {
+					exp.targets[j] = CharOperation.concatWith(exportsStatement.targets[j].tokens, '.');
+				}
+			}
+			exps[i] = exp;
+		}					
+		modInfo.exports = exps;
+	}
+	if (mod.servicesCount > 0) {
+		ISourceElementRequestor.ServicesInfo[] services = new ISourceElementRequestor.ServicesInfo[mod.servicesCount];
+		for (int i = 0; i < services.length; i++) {
+			ISourceElementRequestor.ServicesInfo ser = new ISourceElementRequestor.ServicesInfo();
+			ser.serviceName = CharOperation.concatWith(mod.services[i].serviceInterface.getParameterizedTypeName(), '.');
+			ser.implNames = new char[mod.services[i].implementations.length][];
+			for (int j = 0; j < ser.implNames.length; j++) {
+				ser.implNames[j] = CharOperation.concatWith(mod.services[i].implementations[j].getParameterizedTypeName(), '.');
+			}
+			services[i] = ser;
+		}
+		modInfo.services = services;
+	}
+	if (mod.usesCount > 0) {
+		char[][] uses = new char[mod.usesCount][];
+		for (int i = 0; i < uses.length; i++) {
+			uses[i] = CharOperation.concatWith(mod.uses[i].serviceInterface.getParameterizedTypeName(), '.');
+		}
+		modInfo.usedServices = uses;
+	}
+	if (mod.opensCount > 0) {
+		ISourceElementRequestor.PackageExportInfo opens[] = new ISourceElementRequestor.PackageExportInfo[mod.opensCount];
+		for (int i = 0; i < mod.opensCount; i++) {
+			ISourceElementRequestor.PackageExportInfo op = new ISourceElementRequestor.PackageExportInfo();
+			OpensStatement openStmt = mod.opens[i];
+			op.pkgName = openStmt.pkgName;
+			if (openStmt.targets == null) {
+				op.targets = CharOperation.NO_CHAR_CHAR;
+			} else {
+				op.targets = new char[openStmt.targets.length][];
+				for(int j = 0; j < op.targets.length; j++) {
+					op.targets[j] = CharOperation.concatWith(openStmt.targets[j].tokens, '.');
+				}
+			}
+			opens[i] = op;
+		}
+		modInfo.opens = opens;
+	}
+}
 /*
  * Sort the given ast nodes by their positions.
  */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.java
index b7414da..3dc1640 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementParser.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -87,6 +87,7 @@
 		DefaultErrorHandlingPolicies.exitAfterAllProblems(),
 		options,
 		problemFactory) {
+		@Override
 		public void record(CategorizedProblem problem, CompilationResult unitResult, ReferenceContext context, boolean mandatoryError) {
 			unitResult.record(problem, context, mandatoryError); // TODO (jerome) clients are trapping problems either through factory or requestor... is result storing needed?
 			SourceElementParser.this.requestor.acceptProblem(problem);
@@ -126,16 +127,17 @@
 		this.requestor.acceptUnknownReference(((QualifiedNameReference) nameRef).tokens, nameRef.sourceStart, nameRef.sourceEnd);
 	}
 }
+@Override
 public void checkComment() {
+	int lastComment = getCommentPtr();
 	// discard obsolete comments while inside methods or fields initializer (see bug 74369)
-	if (!(this.diet && this.dietInt==0) && this.scanner.commentPtr >= 0) {
+	if (!(this.diet && this.dietInt==0) && lastComment >= 0) {
 		flushCommentsDefinedPriorTo(this.endStatementPosition);
+		lastComment = getCommentPtr();
 	}
 
-	int lastComment = this.scanner.commentPtr;
-
 	if (this.modifiersSourceStart >= 0) {
-		// eliminate comments located after modifierSourceStart if positionned
+		// eliminate comments located after modifierSourceStart if positioned
 		while (lastComment >= 0) {
 			int commentSourceStart = this.scanner.commentStarts[lastComment];
 			if (commentSourceStart < 0) commentSourceStart = -commentSourceStart;
@@ -220,6 +222,7 @@
 		}
 	}
 }
+@Override
 protected void classInstanceCreation(boolean alwaysQualified) {
 
 	boolean previousFlag = this.reportReferenceInfo;
@@ -237,6 +240,7 @@
 			alloc.sourceStart);
 	}
 }
+@Override
 protected void consumeAnnotationAsModifier() {
 	super.consumeAnnotationAsModifier();
 	Annotation annotation = (Annotation)this.expressionStack[this.expressionPtr];
@@ -244,6 +248,7 @@
 		this.requestor.acceptAnnotationTypeReference(annotation.type.getTypeName(), annotation.sourceStart, annotation.sourceEnd);
 	}
 }
+@Override
 protected void consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() {
 	boolean previousFlag = this.reportReferenceInfo;
 	this.reportReferenceInfo = false; // not to see the type reference reported in super call to getTypeReference(...)
@@ -260,18 +265,21 @@
 			alloc.sourceStart);
 	}
 }
+@Override
 protected void consumeAnnotationTypeDeclarationHeaderName() {
 	int currentAstPtr = this.astPtr;
 	super.consumeAnnotationTypeDeclarationHeaderName();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
 protected void consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() {
 	int currentAstPtr = this.astPtr;
 	super.consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
 protected void consumeCatchFormalParameter() {
 	super.consumeCatchFormalParameter();
 
@@ -281,12 +289,21 @@
 	// the declarationSourceStart to be set
 	flushCommentsDefinedPriorTo(this.scanner.currentPosition);
 }
+@Override
 protected void consumeClassHeaderName1() {
 	int currentAstPtr = this.astPtr;
 	super.consumeClassHeaderName1();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
+protected void consumeModuleHeader() {
+	int currentAstPtr = this.astPtr;
+	super.consumeModuleHeader();
+	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
+		rememberCategories();
+}
+@Override
 protected void consumeClassInstanceCreationExpressionWithTypeArguments() {
 	boolean previousFlag = this.reportReferenceInfo;
 	this.reportReferenceInfo = false; // not to see the type reference reported in super call to getTypeReference(...)
@@ -303,6 +320,7 @@
 			alloc.sourceStart);
 	}
 }
+@Override
 protected void consumeConstructorHeaderName() {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -313,6 +331,7 @@
 		rememberCategories();
 	}
 }
+@Override
 protected void consumeConstructorHeaderNameWithTypeParameters() {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -323,6 +342,7 @@
 		rememberCategories();
 	}
 }
+@Override
 protected void consumeEnumConstantWithClassBody() {
 	super.consumeEnumConstantWithClassBody();
 	if ((this.currentToken == TokenNameCOMMA || this.currentToken == TokenNameSEMICOLON)
@@ -331,6 +351,7 @@
 		rememberCategories();
 	}
 }
+@Override
 protected void consumeEnumConstantNoClassBody() {
 	super.consumeEnumConstantNoClassBody();
 	if ((this.currentToken == TokenNameCOMMA || this.currentToken == TokenNameSEMICOLON)
@@ -339,18 +360,21 @@
 		rememberCategories();
 	}
 }
+@Override
 protected void consumeEnumHeaderName() {
 	int currentAstPtr = this.astPtr;
 	super.consumeEnumHeaderName();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
 protected void consumeEnumHeaderNameWithTypeParameters() {
 	int currentAstPtr = this.astPtr;
 	super.consumeEnumHeaderNameWithTypeParameters();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
 protected void consumeExitVariableWithInitialization() {
 	// ExitVariableWithInitialization ::= $empty
 	// the scanner is located after the comma or the semi-colon.
@@ -362,6 +386,7 @@
 		rememberCategories();
 	}
 }
+@Override
 protected void consumeExitVariableWithoutInitialization() {
 	// ExitVariableWithoutInitialization ::= $empty
 	// do nothing by default
@@ -376,6 +401,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeFieldAccess(boolean isSuperAccess) {
 	// FieldAccess ::= Primary '.' 'Identifier'
 	// FieldAccess ::= 'super' '.' 'Identifier'
@@ -385,6 +411,7 @@
 		this.requestor.acceptFieldReference(fr.token, fr.sourceStart);
 	}
 }
+@Override
 protected void consumeFormalParameter(boolean isVarArgs) {
 	super.consumeFormalParameter(isVarArgs);
 
@@ -394,16 +421,19 @@
 	// the declarationSourceStart to be set
 	flushCommentsDefinedPriorTo(this.scanner.currentPosition);
 }
+@Override
 protected void consumeTypeElidedLambdaParameter(boolean parenthesized) {
 	super.consumeTypeElidedLambdaParameter(parenthesized);
 	flushCommentsDefinedPriorTo(this.scanner.currentPosition);
 }
+@Override
 protected void consumeInterfaceHeaderName1() {
 	int currentAstPtr = this.astPtr;
 	super.consumeInterfaceHeaderName1();
 	if (this.astPtr > currentAstPtr) // if ast node was pushed on the ast stack
 		rememberCategories();
 }
+@Override
 protected void consumeMemberValuePair() {
 	super.consumeMemberValuePair();
 	MemberValuePair memberValuepair = (MemberValuePair) this.astStack[this.astPtr];
@@ -411,6 +441,7 @@
 		this.requestor.acceptMethodReference(memberValuepair.name, 0, memberValuepair.sourceStart);
 	}
 }
+@Override
 protected void consumeMarkerAnnotation(boolean isTypeAnnotation) {
 	super.consumeMarkerAnnotation(isTypeAnnotation);
 	Annotation annotation = (Annotation) (isTypeAnnotation ? this.typeAnnotationStack[this.typeAnnotationPtr] : this.expressionStack[this.expressionPtr]);
@@ -418,6 +449,7 @@
 		this.requestor.acceptAnnotationTypeReference(annotation.type.getTypeName(), annotation.sourceStart, annotation.sourceEnd);
 	}
 }
+@Override
 protected void consumeMethodHeaderName(boolean isAnnotationMethod) {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -430,6 +462,7 @@
 	flushCommentsDefinedPriorTo(this.scanner.currentPosition);
 }
 
+@Override
 protected void consumeMethodHeaderNameWithTypeParameters(boolean isAnnotationMethod) {
 	long selectorSourcePositions = this.identifierPositionStack[this.identifierPtr];
 	int selectorSourceEnd = (int) selectorSourcePositions;
@@ -443,6 +476,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodInvocationName() {
 	// MethodInvocation ::= Name '(' ArgumentListopt ')'
 	super.consumeMethodInvocationName();
@@ -457,6 +491,7 @@
 			(int)(messageSend.nameSourcePosition >>> 32));
 	}
 }
+@Override
 protected void consumeMethodInvocationNameWithTypeArguments() {
 	// MethodInvocation ::= Name '.' TypeArguments 'Identifier' '(' ArgumentListopt ')'
 	super.consumeMethodInvocationNameWithTypeArguments();
@@ -475,6 +510,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodInvocationPrimary() {
 	super.consumeMethodInvocationPrimary();
 	MessageSend messageSend = (MessageSend) this.expressionStack[this.expressionPtr];
@@ -490,6 +526,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodInvocationPrimaryWithTypeArguments() {
 	super.consumeMethodInvocationPrimaryWithTypeArguments();
 	MessageSend messageSend = (MessageSend) this.expressionStack[this.expressionPtr];
@@ -505,6 +542,7 @@
  *
  * INTERNAL USE-ONLY
  */
+@Override
 protected void consumeMethodInvocationSuper() {
 	// MethodInvocation ::= 'super' '.' 'Identifier' '(' ArgumentListopt ')'
 	super.consumeMethodInvocationSuper();
@@ -517,6 +555,7 @@
 			(int)(messageSend.nameSourcePosition >>> 32));
 	}
 }
+@Override
 protected void consumeMethodInvocationSuperWithTypeArguments() {
 	// MethodInvocation ::= 'super' '.' TypeArguments 'Identifier' '(' ArgumentListopt ')'
 	super.consumeMethodInvocationSuperWithTypeArguments();
@@ -529,6 +568,7 @@
 			(int)(messageSend.nameSourcePosition >>> 32));
 	}
 }
+@Override
 protected void consumeNormalAnnotation(boolean isTypeAnnotation) {
 	super.consumeNormalAnnotation(isTypeAnnotation);
 	Annotation annotation = (Annotation) (isTypeAnnotation ? this.typeAnnotationStack[this.typeAnnotationPtr] : this.expressionStack[this.expressionPtr]);
@@ -536,6 +576,14 @@
 		this.requestor.acceptAnnotationTypeReference(annotation.type.getTypeName(), annotation.sourceStart, annotation.sourceEnd);
 	}
 }
+@Override
+protected void consumeProvidesStatement() {
+	super.consumeProvidesStatement();
+	ProvidesStatement service = (ProvidesStatement) this.astStack[this.astPtr];
+	TypeReference ref = service.serviceInterface;
+	this.requestor.acceptTypeReference(ref.getTypeName(), ref.sourceStart, ref.sourceEnd);
+}
+@Override
 protected void consumeSingleMemberAnnotation(boolean isTypeAnnotation) {
 	super.consumeSingleMemberAnnotation(isTypeAnnotation);
 	SingleMemberAnnotation member = (SingleMemberAnnotation) (isTypeAnnotation ? this.typeAnnotationStack[this.typeAnnotationPtr] : this.expressionStack[this.expressionPtr]);
@@ -544,6 +592,7 @@
 		this.requestor.acceptMethodReference(TypeConstants.VALUE, 0, member.sourceStart);
 	}
 }
+@Override
 protected void consumeSingleStaticImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' 'static' Name
 	ImportReference impt;
@@ -602,6 +651,7 @@
 	}
 }
 
+@Override
 protected void consumeSingleTypeImportDeclarationName() {
 	// SingleTypeImportDeclarationName ::= 'import' Name
 	/* push an ImportRef build from the last name
@@ -636,6 +686,7 @@
 		this.requestor.acceptTypeReference(impt.tokens, impt.sourceStart, impt.sourceEnd);
 	}
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' 'static' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -682,6 +733,7 @@
 		this.requestor.acceptTypeReference(impt.tokens, impt.sourceStart, impt.sourceEnd);
 	}
 }
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	// TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*'
 	/* push an ImportRef build from the last name
@@ -718,6 +770,22 @@
 		this.requestor.acceptUnknownReference(impt.tokens, impt.sourceStart, impt.sourceEnd);
 	}
 }
+@Override
+protected void consumeUsesStatement() {
+	super.consumeUsesStatement();
+	UsesStatement ref = (UsesStatement) this.astStack[this.astPtr];
+	this.requestor.acceptTypeReference(ref.serviceInterface.getTypeName(), ref.sourceStart, ref.sourceEnd);
+}
+@Override
+protected void consumeWithClause() {
+	super.consumeWithClause();
+	ProvidesStatement service = (ProvidesStatement) this.astStack[this.astPtr];
+		for (int i = 0; i < service.implementations.length; i++) {
+			TypeReference ref = service.implementations[i];
+			this.requestor.acceptTypeReference(ref.getTypeName(), ref.sourceStart, ref.sourceEnd);
+		}
+}
+@Override
 public MethodDeclaration convertToMethodDeclaration(ConstructorDeclaration c, CompilationResult compilationResult) {
 	MethodDeclaration methodDeclaration = super.convertToMethodDeclaration(c, compilationResult);
 	int selectorSourceEnd = this.sourceEnds.removeKey(c);
@@ -729,6 +797,7 @@
 
 	return methodDeclaration;
 }
+@Override
 protected CompilationUnitDeclaration endParse(int act) {
 	if (this.scanner.recordLineSeparator) {
 		this.requestor.acceptLineSeparatorPositions(this.scanner.getLineEnds());
@@ -740,6 +809,7 @@
 		return null;
 	}
 }
+@Override
 public TypeReference getTypeReference(int dim) {
 	/* build a Reference on a variable that may be qualified or not
 	 * This variable is a type reference and dim will be its dimensions
@@ -851,6 +921,7 @@
 	}
 	return ref;
 }
+@Override
 public NameReference getUnspecifiedReference(boolean rejectTypeAnnotations) {
 	/* build a (unspecified) NameReference which may be qualified*/
     if (rejectTypeAnnotations) {
@@ -886,6 +957,7 @@
 		return ref;
 	}
 }
+@Override
 public NameReference getUnspecifiedReferenceOptimized() {
 	/* build a (unspecified) NameReference which may be qualified
 	The optimization occurs for qualified reference while we are
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.java
index d91adc0..bcf6fdd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceElementRequestorAdapter.java
@@ -19,6 +19,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptAnnotationTypeReference(char[][], int, int)
 	 */
+	@Override
 	public void acceptAnnotationTypeReference(
 		char[][] typeName,
 		int sourceStart,
@@ -29,6 +30,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptAnnotationTypeReference(char[], int)
 	 */
+	@Override
 	public void acceptAnnotationTypeReference(char[] typeName, int sourcePosition) {
 		// default implementation: do nothing
 	}
@@ -36,6 +38,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptConstructorReference(char[], int, int)
 	 */
+	@Override
 	public void acceptConstructorReference(
 		char[] typeName,
 		int argCount,
@@ -46,6 +49,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptFieldReference(char[], int)
 	 */
+	@Override
 	public void acceptFieldReference(char[] fieldName, int sourcePosition) {
 		// default implementation: do nothing
 	}
@@ -53,6 +57,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptImport(int, int, int, int, char[][], boolean, int)
 	 */
+	@Override
 	public void acceptImport(
 		int declarationStart,
 		int declarationEnd,
@@ -67,6 +72,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptLineSeparatorPositions(int[])
 	 */
+	@Override
 	public void acceptLineSeparatorPositions(int[] positions) {
 		// default implementation: do nothing
 	}
@@ -74,6 +80,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptMethodReference(char[], int, int)
 	 */
+	@Override
 	public void acceptMethodReference(
 		char[] methodName,
 		int argCount,
@@ -84,6 +91,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptPackage(ImportReference)
 	 */
+	@Override
 	public void acceptPackage(ImportReference importReference) {
 		// default implementation: do nothing
 	}
@@ -91,6 +99,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptProblem(CategorizedProblem)
 	 */
+	@Override
 	public void acceptProblem(CategorizedProblem problem) {
 		// default implementation: do nothing
 	}
@@ -98,6 +107,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptTypeReference(char[][], int, int)
 	 */
+	@Override
 	public void acceptTypeReference(
 		char[][] typeName,
 		int sourceStart,
@@ -108,6 +118,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptTypeReference(char[], int)
 	 */
+	@Override
 	public void acceptTypeReference(char[] typeName, int sourcePosition) {
 		// default implementation: do nothing
 	}
@@ -115,6 +126,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptUnknownReference(char[][], int, int)
 	 */
+	@Override
 	public void acceptUnknownReference(
 		char[][] name,
 		int sourceStart,
@@ -125,6 +137,7 @@
 	/**
 	 * @see ISourceElementRequestor#acceptUnknownReference(char[], int)
 	 */
+	@Override
 	public void acceptUnknownReference(char[] name, int sourcePosition) {
 		// default implementation: do nothing
 	}
@@ -132,10 +145,12 @@
 	/**
 	 * @see ISourceElementRequestor#enterCompilationUnit()
 	 */
+	@Override
 	public void enterCompilationUnit() {
 		// default implementation: do nothing
 	}
 
+	@Override
 	public void enterConstructor(MethodInfo methodInfo) {
 		// default implementation: do nothing
 	}
@@ -143,6 +158,7 @@
 	/**
 	 * @see ISourceElementRequestor#enterField(ISourceElementRequestor.FieldInfo)
 	 */
+	@Override
 	public void enterField(FieldInfo fieldInfo) {
 		// default implementation: do nothing
 	}
@@ -150,14 +166,17 @@
 	/**
 	 * @see ISourceElementRequestor#enterInitializer(int, int)
 	 */
+	@Override
 	public void enterInitializer(int declarationStart, int modifiers) {
 		// default implementation: do nothing
 	}
 
+	@Override
 	public void enterMethod(MethodInfo methodInfo) {
 		// default implementation: do nothing
 	}
 
+	@Override
 	public void enterType(TypeInfo typeInfo) {
 		// default implementation: do nothing
 	}
@@ -165,6 +184,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitCompilationUnit(int)
 	 */
+	@Override
 	public void exitCompilationUnit(int declarationEnd) {
 		// default implementation: do nothing
 	}
@@ -172,6 +192,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitConstructor(int)
 	 */
+	@Override
 	public void exitConstructor(int declarationEnd) {
 		// default implementation: do nothing
 	}
@@ -179,6 +200,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitField(int, int, int)
 	 */
+	@Override
 	public void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd) {
 		// default implementation: do nothing
 	}
@@ -186,6 +208,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitInitializer(int)
 	 */
+	@Override
 	public void exitInitializer(int declarationEnd) {
 		// default implementation: do nothing
 	}
@@ -193,6 +216,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitMethod(int, Expression)
 	 */
+	@Override
 	public void exitMethod(int declarationEnd, Expression defaultValue) {
 		// default implementation: do nothing
 	}
@@ -200,6 +224,7 @@
 	/**
 	 * @see ISourceElementRequestor#exitType(int)
 	 */
+	@Override
 	public void exitType(int declarationEnd) {
 		// default implementation: do nothing
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.java
index 70d7493..98d6e68 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/SourceJavadocParser.java
@@ -28,6 +28,7 @@
 	this.kind = SOURCE_PARSER | TEXT_VERIF;
 }
 
+@Override
 public boolean checkDeprecation(int commentPtr) {
 	this.categoriesPtr = -1;
 	boolean result = super.checkDeprecation(commentPtr);
@@ -39,9 +40,7 @@
 	return result;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseIdentifierTag()
- */
+@Override
 protected boolean parseIdentifierTag(boolean report) {
 	int end = this.lineEnd+1;
 	if (super.parseIdentifierTag(report) && this.index <= end) {
@@ -80,9 +79,7 @@
 	return false;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.JavadocParser#parseSimpleTag()
- */
+@Override
 protected void parseSimpleTag() {
 
 	// Read first char
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.java
index 94cd28a..8d12687 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/AnnotationDiscoveryVisitor.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -23,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
@@ -35,6 +36,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
@@ -123,6 +125,9 @@
 				return false;
 			}
 			((SourceTypeBinding) fieldBinding.declaringClass).resolveTypeFor(fieldBinding);
+			if (fieldDeclaration.binding == null) {
+				return false;
+			}
 			this.resolveAnnotations(scope, annotations, fieldBinding);
 		}
 		return false;
@@ -221,6 +226,16 @@
 		}
 		return true;
 	}
+	@Override
+	public boolean visit(ModuleDeclaration module, CompilationUnitScope scope) {
+		ModuleBinding binding = module.binding;
+		if (binding == null) {
+			return false;
+		}
+		module.resolveTypeDirectives(scope);
+		// The above call also resolvesAnnotations
+		return true;
+	}
 
 	private void resolveAnnotations(BlockScope scope, Annotation[] annotations, Binding currentBinding) {
 		
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.java
index aa6e35b..70dd7ec 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseAnnotationProcessorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2015 BEA Systems, Inc. 
+ * Copyright (c) 2007, 2018 BEA Systems, Inc. 
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -69,7 +69,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.AbstractAnnotationProcessorManager#configureFromPlatform(org.aspectj.org.eclipse.jdt.internal.compiler.Compiler, java.lang.Object)
 	 */
 	@Override
-	public void configureFromPlatform(Compiler compiler, Object compilationUnitLocator, Object javaProject) {
+	public void configureFromPlatform(Compiler compiler, Object compilationUnitLocator, Object javaProject, boolean isTestCode) {
 		// Implemented by IdeAnnotationProcessorManager.
 		throw new UnsupportedOperationException();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.java
index df7f956..627e36c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BaseProcessingEnvImpl.java
@@ -56,7 +56,7 @@
 		_addedUnits = new ArrayList<>();
 		_addedClassFiles = new ArrayList<>();
 		_deletedUnits = new ArrayList<>();
-		_elementUtils = new ElementsImpl(this);
+		_elementUtils = ElementsImpl.create(this);
 		_typeUtils = new TypesImpl(this);
 		_factory = new Factory(this);
 		_errorRaised = false;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.java
index 84fb77b..8b12226 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchAnnotationProcessorManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,9 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch;
 
+import java.io.File;
+import java.io.IOException;
+import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -17,6 +20,9 @@
 import java.util.ServiceLoader;
 
 import javax.annotation.processing.Processor;
+import javax.lang.model.SourceVersion;
+import javax.tools.JavaFileManager;
+import javax.tools.StandardJavaFileManager;
 import javax.tools.StandardLocation;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main;
@@ -68,7 +74,21 @@
 		}
 		BatchProcessingEnvImpl processingEnv = new BatchProcessingEnvImpl(this, (Main) batchCompiler, commandLineArguments);
 		_processingEnv = processingEnv;
-		_procLoader = processingEnv.getFileManager().getClassLoader(StandardLocation.ANNOTATION_PROCESSOR_PATH);
+		JavaFileManager fileManager = processingEnv.getFileManager();
+		if (fileManager instanceof StandardJavaFileManager) {
+			Iterable<? extends File> location = null;
+			if (SourceVersion.latest().compareTo(SourceVersion.RELEASE_8) > 0) {
+				location = ((StandardJavaFileManager) fileManager).getLocation(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH);
+			}
+			if (location != null) {
+				_procLoader = fileManager.getClassLoader(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH);
+			} else {
+				_procLoader = fileManager.getClassLoader(StandardLocation.ANNOTATION_PROCESSOR_PATH);
+			}
+		} else {
+			// Fall back to old code
+			_procLoader = fileManager.getClassLoader(StandardLocation.ANNOTATION_PROCESSOR_PATH);
+		}
 		parseCommandLine(commandLineArguments);
 		_round = 0;
 	}
@@ -232,5 +252,15 @@
 		_commandLineProcessors = null;
 		_commandLineProcessorIter = null;
 	}
-
+	@Override
+	public void reset() {
+		super.reset();
+		if (this._procLoader instanceof URLClassLoader) {
+			try {
+				((URLClassLoader) this._procLoader).close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchMessagerImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchMessagerImpl.java
index 78a2830..ef63367 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchMessagerImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchMessagerImpl.java
@@ -71,7 +71,7 @@
 		}
 		CategorizedProblem problem = createProblem(kind, msg, e, a, v);
 		if (problem != null) {
-            this._compiler.addExtraProblems(problem);
+			this._compiler.addExtraProblems(problem);
 		}
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.java
index 70a975c..84a87ee 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchProcessingEnvImpl.java
@@ -90,6 +90,7 @@
 			_fileManager = manager;
 		}
 		_processorOptions = Collections.unmodifiableMap(parseProcessorOptions(commandLineArguments));
+		// AspectJ: use AjBatchFilerImpl
 		_filer = new AjBatchFilerImpl(_dispatchManager, this);
 		_messager = new BatchMessagerImpl(this, _compilerOwner);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.java
index 54056d9..79a4c7b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/dispatch/RoundEnvImpl.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *    IBM Corporation - initial API and implementation
  *    IBM Corporation - Fix for bug 328575
@@ -51,7 +51,7 @@
 		_isLastRound = isLastRound;
 		_units = units;
 		_factory = _processingEnv.getFactory();
-		
+
 		// Discover the annotations that will be passed to Processor.process()
 		AnnotationDiscoveryVisitor visitor = new AnnotationDiscoveryVisitor(_processingEnv);
 		if (_units != null) {
@@ -74,7 +74,7 @@
 			}
 			AnnotationBinding[] annotationBindings = Factory.getPackedAnnotationBindings(referenceBinding.getAnnotations());
 			for (AnnotationBinding annotationBinding : annotationBindings) {
-				TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType()); 
+				TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType());
 				Element element = _factory.newElement(referenceBinding);
 				_annoToUnit.put(anno, element);
 			}
@@ -82,7 +82,7 @@
 			for (FieldBinding fieldBinding : fieldBindings) {
 				annotationBindings = Factory.getPackedAnnotationBindings(fieldBinding.getAnnotations());
 				for (AnnotationBinding annotationBinding : annotationBindings) {
-					TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType()); 
+					TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType());
 					Element element = _factory.newElement(fieldBinding);
 					_annoToUnit.put(anno, element);
 				}
@@ -91,7 +91,7 @@
 			for (MethodBinding methodBinding : methodBindings) {
 				annotationBindings = Factory.getPackedAnnotationBindings(methodBinding.getAnnotations());
 				for (AnnotationBinding annotationBinding : annotationBindings) {
-					TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType()); 
+					TypeElement anno = (TypeElement)_factory.newElement(annotationBinding.getAnnotationType());
 					Element element = _factory.newElement(methodBinding);
 					_annoToUnit.put(anno, element);
 				}
@@ -120,7 +120,7 @@
 
 	/**
 	 * From the set of root elements and their enclosed elements, return the subset that are annotated
-	 * with {@code a}.  If {@code a} is annotated with the {@link java.lang.annotation.Inherited} 
+	 * with {@code a}.  If {@code a} is annotated with the {@link java.lang.annotation.Inherited}
 	 * annotation, include those elements that inherit the annotation from their superclasses.
 	 * Note that {@link java.lang.annotation.Inherited} only applies to classes (i.e. TypeElements).
 	 */
@@ -144,7 +144,7 @@
 		}
 		return Collections.unmodifiableSet(_annoToUnit.getValues(a));
 	}
-	
+
 	/**
 	 * For every type in types that is a class and that is annotated with anno, either directly or by inheritance,
 	 * add that type to result.  Recursively descend on each types's child classes as well.
@@ -162,7 +162,7 @@
 			addAnnotatedElements(anno, element, result);
 		}
 	}
-	
+
 	/**
 	 * Check whether an element has a superclass that is annotated with an @Inherited annotation.
 	 * @param element must be a class (not an interface, enum, etc.).
@@ -185,7 +185,7 @@
 		} while (null != (searchedElement = searchedElement.superclass()));
 		return false;
 	}
-	
+
 	@Override
 	public Set<? extends Element> getElementsAnnotatedWith(Class<? extends Annotation> a)
 	{
@@ -210,6 +210,11 @@
 		if (_rootElements == null) {
 			Set<Element> elements = new HashSet<>(_units.length);
 			for (CompilationUnitDeclaration unit : _units) {
+				if (unit.moduleDeclaration != null && unit.moduleDeclaration.binding != null) {
+					Element m = _factory.newElement(unit.moduleDeclaration.binding);
+					elements.add(m);
+					continue;
+				}
 				if (null == unit.scope || null == unit.scope.topLevelTypes)
 					continue;
 				for (SourceTypeBinding binding : unit.scope.topLevelTypes) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.java
index 903d42a..f28f543 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationMemberValue.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Vladimir Piskarev and others.
+ * Copyright (c) 2009, 2017 Vladimir Piskarev and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,11 +11,7 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.apt.model;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BaseProcessingEnvImpl;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 
 public class AnnotationMemberValue extends AnnotationValueImpl {
 
@@ -24,14 +20,14 @@
 	/**
 	 * @param value
 	 *            The JDT representation of a compile-time constant. See
-	 *            {@link ElementValuePair#getValue()} for possible object types:
+	 *            {@link org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair#getValue()} for possible object types:
 	 *            <ul>
 	 *            <li>{@link org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant} for member
 	 *            of primitive type or String</li>
-	 *            <li>{@link TypeBinding} for a member value of type
+	 *            <li>{@link org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding} for a member value of type
 	 *            {@link java.lang.Class}</li>
-	 *            <li>{@link FieldBinding} for an enum constant</li>
-	 *            <li>{@link AnnotationBinding} for an annotation instance</li>
+	 *            <li>{@link org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding} for an enum constant</li>
+	 *            <li>{@link org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding} for an annotation instance</li>
 	 *            <li><code>Object[]</code> for a member value of array type, where the
 	 *            array entries are one of the above</li>
 	 *            </ul>
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.java
index b53a0d5..13f4952 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/AnnotationValueImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,7 +30,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
@@ -66,7 +65,7 @@
 	/**
 	 * @param value
 	 *            The JDT representation of a compile-time constant. See
-	 *            {@link ElementValuePair#getValue()} for possible object types:
+	 *            {@link org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair#getValue()} for possible object types:
 	 *            <ul>
 	 *            <li>{@link org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant} for member
 	 *            of primitive type or String</li>
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.java
index 85721ae..3465dbb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ArrayTypeImpl.java
@@ -47,7 +47,8 @@
 	public <R, P> R accept(TypeVisitor<R, P> v, P p) {
 		return v.visitArray(this, p);
 	}
-
+	
+	@Override
 	protected AnnotationBinding[] getAnnotationBindings() {
 		AnnotationBinding[] oldies = ((ArrayBinding)_binding).getTypeAnnotations();
 		AnnotationBinding[] newbies = Binding.NO_ANNOTATIONS;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.java
index 48694e4..d0193dd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/DeclaredTypeImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 BEA Systems, Inc. 
+ * Copyright (c) 2006, 2017 BEA Systems, Inc.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,7 +18,6 @@
 
 import javax.lang.model.element.Element;
 import javax.lang.model.element.ElementKind;
-import javax.lang.model.element.TypeElement;
 import javax.lang.model.type.DeclaredType;
 import javax.lang.model.type.TypeKind;
 import javax.lang.model.type.TypeMirror;
@@ -32,7 +31,7 @@
 
 /**
  * Implementation of DeclaredType, which refers to a particular usage or instance of a type.
- * Contrast with {@link TypeElement}, which is an element that potentially defines a family
+ * Contrast with {@link javax.lang.model.element.TypeElement}, which is an element that potentially defines a family
  * of DeclaredTypes.
  */
 public class DeclaredTypeImpl extends TypeMirrorImpl implements DeclaredType {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.java
index c395751..64c820c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2014 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,7 +23,6 @@
 import javax.lang.model.element.Name;
 import javax.lang.model.element.PackageElement;
 import javax.lang.model.type.TypeMirror;
-import javax.lang.model.util.Elements;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BaseProcessingEnvImpl;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
@@ -79,6 +78,7 @@
 		return _env.getFactory().getAnnotationMirrors(getPackedAnnotationBindings());
 	}
 
+	@Override
 	public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
 		A [] annotations = _env.getFactory().getAnnotationsByType(Factory.getUnpackedAnnotationBindings(getPackedAnnotationBindings()), annotationType);
 		if (annotations.length != 0 || this.getKind() != ElementKind.CLASS || annotationType.getAnnotation(Inherited.class) == null)
@@ -137,14 +137,15 @@
 
 	/**
 	 * @return the package containing this element.  The package of a PackageElement is itself.
-	 * @see javax.lang.model.util.Elements#getPackageOf(javax.lang.model.element.Element)
 	 */
-	abstract /* package */ PackageElement getPackage();
+	PackageElement getPackage() {
+		return null;
+	}
 
 	/**
 	 * Subclassed by VariableElementImpl, TypeElementImpl, and ExecutableElementImpl.
 	 * This base implementation suffices for other types.
-	 * @see Elements#hides
+	 * @see javax.lang.model.util.Elements#hides
 	 * @return true if this element hides {@code hidden}
 	 */
 	public boolean hides(Element hidden)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.java
index bb8230c..444f19d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 BEA Systems, Inc. and others
+ * Copyright (c) 2006, 2017 BEA Systems, Inc. and others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *    wharley@bea.com - initial API and implementation
  *    IBM Corporation - Fix for bug 341494
@@ -27,6 +27,7 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.lang.model.SourceVersion;
 import javax.lang.model.element.AnnotationMirror;
 import javax.lang.model.element.AnnotationValue;
 import javax.lang.model.element.Element;
@@ -58,24 +59,30 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 
 /**
- * Utilities for working with language elements.
+ * Utilities for working with java8 and earlier language elements.
  * There is one of these for every ProcessingEnvironment.
+ * 
+ * @see ElementsImpl9
  */
 public class ElementsImpl implements Elements {
 
 	// Used for parsing Javadoc comments: matches initial delimiter, followed by whitespace
 	private static final Pattern INITIAL_DELIMITER = Pattern.compile("^\\s*/\\*+"); //$NON-NLS-1$
 
-	private final BaseProcessingEnvImpl _env;
+	protected final BaseProcessingEnvImpl _env;
 
 	/*
 	 * The processing env creates and caches an ElementsImpl.  Other clients should
 	 * not create their own; they should ask the env for it.
 	 */
-	public ElementsImpl(BaseProcessingEnvImpl env) {
+	protected ElementsImpl(BaseProcessingEnvImpl env) {
 		_env = env;
 	}
 
+	public static ElementsImpl create(BaseProcessingEnvImpl env) {
+		return (SourceVersion.latest().compareTo(SourceVersion.RELEASE_8) <= 0)? new ElementsImpl(env): new ElementsImpl9(env);
+	}
+
 	/**
 	 * Return all the annotation mirrors on this element, including inherited annotations.
 	 * Annotations are inherited only if the annotation type is meta-annotated with @Inherited,
@@ -553,16 +560,16 @@
 
 	@Override
 	public PackageElement getPackageElement(CharSequence name) {
-		LookupEnvironment le = _env.getLookupEnvironment();
+		LookupEnvironment le = _env.getLookupEnvironment(); // FIXME(SHMOD): does this lookup need to be module-aware?
 		if (name.length() == 0) {
-			return new PackageElementImpl(_env, le.defaultPackage);
+			return (PackageElement) _env.getFactory().newElement(le.defaultPackage);
 		}
 		char[] packageName = name.toString().toCharArray();
 		PackageBinding packageBinding = le.createPackage(CharOperation.splitOn('.', packageName));
 		if (packageBinding == null) {
 			return null;
 		}
-		return new PackageElementImpl(_env, packageBinding);
+		return (PackageElement) _env.getFactory().newElement(packageBinding);
 	}
 
 	@Override
@@ -702,6 +709,7 @@
 		}
 	}
 
+	@Override
 	public boolean isFunctionalInterface(TypeElement type) {
 		if (type != null && type.getKind() == ElementKind.INTERFACE) {
 			ReferenceBinding binding = (ReferenceBinding)((TypeElementImpl) type)._binding;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.java
new file mode 100644
index 0000000..8cb7592
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ElementsImpl9.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2017 BEA Systems, Inc. and others
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *    Igor Fedorenko - extracted from ElementsImpl
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.apt.model;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.lang.model.AnnotatedConstruct;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.ModuleElement;
+import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.TypeElement;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BaseProcessingEnvImpl;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfModule;
+
+/**
+ * Utilities for working with java9 language elements.
+ * There is one of these for every ProcessingEnvironment.
+ */
+public class ElementsImpl9 extends ElementsImpl {
+
+	public ElementsImpl9(BaseProcessingEnvImpl env) {
+		super(env);
+	}
+
+	@Override
+	public TypeElement getTypeElement(CharSequence name) {
+		final char[][] compoundName = CharOperation.splitOn('.', name.toString().toCharArray());
+		Set<? extends ModuleElement> allModuleElements = getAllModuleElements();
+		for (ModuleElement moduleElement : allModuleElements) {
+			TypeElement t = getTypeElement(compoundName, ((ModuleElementImpl) moduleElement).binding);
+			if (t != null) {
+				return t;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public TypeElement getTypeElement(ModuleElement module, CharSequence name) {
+		ModuleBinding mBinding = ((ModuleElementImpl) module).binding;
+		final char[][] compoundName = CharOperation.splitOn('.', name.toString().toCharArray());
+		return getTypeElement(compoundName, mBinding);
+	}
+
+	private TypeElement getTypeElement(final char[][] compoundName, ModuleBinding mBinding) {
+		LookupEnvironment le = mBinding == null ? _env.getLookupEnvironment() : mBinding.environment;
+		ReferenceBinding binding = mBinding == null ? le.getType(compoundName) : le.getType(compoundName, mBinding);
+		// If we didn't find the binding, maybe it's a nested type;
+		// try finding the top-level type and then working downwards.
+		if (null == binding) {
+			ReferenceBinding topLevelBinding = null;
+			int topLevelSegments = compoundName.length;
+			while (--topLevelSegments > 0) {
+				char[][] topLevelName = new char[topLevelSegments][];
+				for (int i = 0; i < topLevelSegments; ++i) {
+					topLevelName[i] = compoundName[i];
+				}
+				topLevelBinding = le.getType(topLevelName);
+				if (null != topLevelBinding) {
+					break;
+				}
+			}
+			if (null == topLevelBinding) {
+				return null;
+			}
+			binding = topLevelBinding;
+			for (int i = topLevelSegments; null != binding && i < compoundName.length; ++i) {
+				binding = binding.getMemberType(compoundName[i]);
+			}
+		}
+		if (null == binding) {
+			return null;
+		}
+		return new TypeElementImpl(_env, binding, null);
+	}
+
+	
+	@Override
+	public Origin getOrigin(Element e) {
+		return Origin.EXPLICIT;
+	}
+
+	@Override
+	public Origin getOrigin(AnnotatedConstruct c, AnnotationMirror a) {
+		return Origin.EXPLICIT;
+	}
+
+	@Override
+	public Origin getOrigin(ModuleElement m, ModuleElement.Directive directive) {
+		return Origin.EXPLICIT;
+	}
+
+	@Override
+	public boolean isBridge(ExecutableElement e) {
+		MethodBinding methodBinding = (MethodBinding) ((ExecutableElementImpl) e)._binding;
+		return methodBinding.isBridge();
+	}
+
+	@Override
+	public ModuleElement getModuleOf(Element elem) {
+		if (elem instanceof ModuleElement) {
+			return (ModuleElement) elem;
+		}
+		Element parent = elem.getEnclosingElement();
+		while (parent != null) {
+			if (parent instanceof ModuleElement) {
+				return (ModuleElement) parent;
+			}
+			parent = parent.getEnclosingElement();
+		}
+		return null;
+	}
+
+	@Override
+	public ModuleElement getModuleElement(CharSequence name) {
+		LookupEnvironment lookup = _env.getLookupEnvironment();
+		ModuleBinding binding = lookup.getModule(name.length() == 0 ? ModuleBinding.UNNAMED : name.toString().toCharArray());
+		//TODO: Surely there has to be a better way than calling toString().toCharArray()?
+		if (binding == null) {
+			return null;
+		}
+		return new ModuleElementImpl(_env, binding);
+	}
+
+	@Override
+	public Set<? extends ModuleElement> getAllModuleElements() {
+		LookupEnvironment lookup = _env.getLookupEnvironment();
+		HashtableOfModule knownModules = lookup.knownModules;
+		ModuleBinding[] modules = knownModules.valueTable;
+		if (modules == null || modules.length == 0) {
+			return Collections.emptySet();
+		}
+		Set<ModuleElement> mods = new HashSet<>(modules.length);
+		for (ModuleBinding moduleBinding : modules) {
+			if (moduleBinding == null)
+				continue;
+			ModuleElement element = (ModuleElement) _env.getFactory().newElement(moduleBinding);
+			mods.add(element);
+		}
+		mods.add((ModuleElement) _env.getFactory().newElement(lookup.UnNamedModule));
+		return mods;
+	}
+
+	@Override
+	public
+	PackageElement getPackageElement(ModuleElement module, CharSequence name) {
+		ModuleBinding mBinding = ((ModuleElementImpl) module).binding;
+		final char[][] compoundName = CharOperation.splitOn('.', name.toString().toCharArray());
+		PackageBinding p = null;
+		if (mBinding != null) {
+			
+			int length = compoundName.length;
+			if (length > 1) {
+				char[][] parent = new char[compoundName.length - 1][];
+				System.arraycopy(compoundName, 0, parent, 0, length - 1);
+				p = mBinding.getPackage(parent, compoundName[length - 1]);
+			} else {
+				p = mBinding.getTopLevelPackage(compoundName[0]);
+			}
+		} else {
+			p = _env.getLookupEnvironment().createPackage(compoundName);
+		}
+		if (p == null || !p.isValidBinding())
+			return null;
+		return (PackageElement) _env.getFactory().newElement(p);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.java
index 0499057..e2dfa21 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2014 IBM Corporation and others.
+ * Copyright (c) 2007, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -111,6 +111,7 @@
 		return Collections.emptyList();
 	}
 	
+	@Override
 	@SuppressWarnings("unchecked")
 	public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
 		return (A[]) Array.newInstance(annotationType, 0);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.java
index aac040d..a39be78 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ErrorTypeImpl.java
@@ -88,15 +88,17 @@
 		return v.visitError(this, p);
 	}
 
+	@Override
 	public List<? extends AnnotationMirror> getAnnotationMirrors() {
 		return Factory.EMPTY_ANNOTATION_MIRRORS;
 	}
-
+	@Override
 	public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
 		return null;
 	}
 
 	@SuppressWarnings("unchecked")
+	@Override
 	public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
 		return (A[]) Array.newInstance(annotationType, 0);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.java
index 9730ef4..a19c78f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableElementImpl.java
@@ -314,10 +314,12 @@
 		return false;
 	}
 
+	@Override
 	public TypeMirror getReceiverType() {
 		return _env.getFactory().getReceiverType((MethodBinding) _binding);
 	}
 
+	@Override
 	public boolean isDefault() {
 		if (_binding != null) {
 			return ((MethodBinding)_binding).isDefaultMethod();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.java
index 8c0f0e5..ff88188 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ExecutableTypeImpl.java
@@ -51,11 +51,8 @@
 				&& binding.declaringClass.isBinaryBinding()
 				&& ((binding.modifiers & ExtraCompilerModifiers.AccGenericSignature) == 0);
 		if (isEnumConstructor) {
-			if (length == 2) {
-				return Collections.emptyList();
-			}
 			ArrayList<TypeMirror> list = new ArrayList<>();
-			for (int i = 2; i < length; i++) {
+			for (int i = 0; i < length; i++) {
 				list.add(_env.getFactory().newTypeMirror(parameters[i]));
 			}
 			return Collections.unmodifiableList(list);
@@ -77,7 +74,8 @@
 	public TypeMirror getReturnType() {
 		return _env.getFactory().newTypeMirror(((MethodBinding) this._binding).returnType);
 	}
-
+	
+	@Override
 	protected AnnotationBinding[] getAnnotationBindings() {
 		return ((MethodBinding) this._binding).returnType.getTypeAnnotations();
 	}
@@ -128,6 +126,7 @@
 		return TypeKind.EXECUTABLE;
 	}
 
+	@Override
 	public TypeMirror getReceiverType() {
 		return _env.getFactory().getReceiverType((MethodBinding) _binding);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.java
index a2131fd..91825b2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/Factory.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2016 BEA Systems, Inc. and others
+ * Copyright (c) 2007, 2017 BEA Systems, Inc. and others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *    wharley@bea.com - initial API and implementation
  *    IBM Corporation - fix for 342598
@@ -45,9 +45,11 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SplitPackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
@@ -319,6 +321,11 @@
 					ClassFileConstants.AccStrictfp
 				});
 				break;
+			case MODULE :
+				decodeModifiers(result, modifiers, new int[] {
+						ClassFileConstants.ACC_OPEN,
+						ClassFileConstants.ACC_TRANSITIVE
+				});
 			default:
 				break;
 		}
@@ -348,7 +355,7 @@
 				return new ErrorTypeElement(this._env, referenceBinding);
 			}
 			if (CharOperation.equals(referenceBinding.sourceName, TypeConstants.PACKAGE_INFO_NAME)) {
-				return new PackageElementImpl(_env, referenceBinding.fPackage);
+				return newPackageElement(referenceBinding.fPackage);
 			}
 			return new TypeElementImpl(_env, referenceBinding, kindHint);
 		case Binding.METHOD:
@@ -357,10 +364,12 @@
 		case Binding.PARAMETERIZED_TYPE:
 			return new TypeElementImpl(_env, ((ParameterizedTypeBinding)binding).genericType(), kindHint);
 		case Binding.PACKAGE:
-			return new PackageElementImpl(_env, (PackageBinding)binding);
+			return newPackageElement((PackageBinding)binding);
 		case Binding.TYPE_PARAMETER:
 			return new TypeParameterElementImpl(_env, (TypeVariableBinding)binding);
 			// TODO: fill in the rest of these
+		case Binding.MODULE:
+			return new ModuleElementImpl(_env, (ModuleBinding) binding);
 		case Binding.IMPORT:
 		case Binding.ARRAY_TYPE:
 		case Binding.BASE_TYPE:
@@ -380,6 +389,12 @@
 	 */
 	public PackageElement newPackageElement(PackageBinding binding)
 	{
+		if (binding instanceof SplitPackageBinding && binding.enclosingModule != null) {
+			binding = ((SplitPackageBinding) binding).getIncarnation(binding.enclosingModule);
+		}
+		if (binding == null) {
+			return null;
+		}
 		return new PackageElementImpl(_env, binding);
 	}
 	
@@ -396,6 +411,8 @@
 			return NoTypeImpl.NO_TYPE_VOID;
 		case PACKAGE:
 			return NoTypeImpl.NO_TYPE_PACKAGE;
+		case MODULE:
+			return new NoTypeImpl(kind);
 		default:
 			throw new IllegalArgumentException();
 		}
@@ -487,6 +504,8 @@
 
 		case Binding.TYPE_PARAMETER:
 			return new TypeVariableImpl(_env, (TypeVariableBinding) binding);
+		case Binding.MODULE:
+			return getNoType(TypeKind.MODULE);
 		}
 		return null;
 	}
@@ -571,9 +590,9 @@
 			case 'c':
 				return Character.valueOf((char) b); // narrowing.
 			case 'd':
-				return new Double(b); // widening.
+				return Double.valueOf(b); // widening.
 			case 'f':
-				return new Float(b); // widening.
+				return  Float.valueOf(b); // widening.
 			case 'i':
 				return Integer.valueOf(b); // widening.
 			case 'l':
@@ -599,9 +618,9 @@
 			case 'c':
 				return Character.valueOf((char) s); // narrowing.
 			case 'd':
-				return new Double(s); // widening.
+				return Double.valueOf(s); // widening.
 			case 'f':
-				return new Float(s); // widening.
+				return Float.valueOf(s); // widening.
 			case 'i':
 				return Integer.valueOf(s); // widening.
 			case 'l':
@@ -627,9 +646,9 @@
 			case 'c':
 				return value; // exact match
 			case 'd':
-				return new Double(c); // widening.
+				return Double.valueOf(c); // widening.
 			case 'f':
-				return new Float(c); // widening.
+				return Float.valueOf(c); // widening.
 			case 'i':
 				return Integer.valueOf(c); // widening.
 			case 'l':
@@ -656,9 +675,9 @@
 			case 'c':
 				return Character.valueOf((char) i); // narrowing
 			case 'd':
-				return new Double(i); // widening.
+				return Double.valueOf(i); // widening.
 			case 'f':
-				return new Float(i); // widening.
+				return Float.valueOf(i); // widening.
 			case 'i':
 				return value; // exact match
 			case 'l':
@@ -682,9 +701,9 @@
 				// completely wrong.
 				return avoidReflectException ? getMatchingDummyValue(expectedType) : value;
 			case 'd':
-				return new Double(l); // widening.
+				return Double.valueOf(l); // widening.
 			case 'f':
-				return new Float(l); // widening.			
+				return Float.valueOf(l); // widening.			
 			case 'l': 
 				return value; // exact match.
 		
@@ -707,7 +726,7 @@
 				// completely wrong.
 				return avoidReflectException ? getMatchingDummyValue(expectedType) : value;
 			case 'd':
-				return new Double(f); // widening.
+				return Double.valueOf(f); // widening.
 			case 'f':
 				return value; // exact match.
 			default:  				
@@ -877,6 +896,6 @@
 				}
 			}
 		}
-		return (AnnotationBinding[]) unpackedAnnotations.toArray(new AnnotationBinding [unpackedAnnotations.size()]);
+		return unpackedAnnotations.toArray(new AnnotationBinding [unpackedAnnotations.size()]);
 	}	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.java
new file mode 100644
index 0000000..7af1876
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * Copyright (c) 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.apt.model;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ElementVisitor;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.ModuleElement;
+import javax.lang.model.element.Name;
+import javax.lang.model.element.PackageElement;
+import javax.lang.model.element.TypeElement;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BaseProcessingEnvImpl;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SplitPackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+
+public class ModuleElementImpl extends ElementImpl implements ModuleElement {
+
+	ModuleBinding binding;
+	private List<Directive> directives;
+	private static List<Directive> EMPTY_DIRECTIVES = Collections.emptyList();
+
+	/**
+	 * In general, clients should call
+	 * {@link Factory#newDeclaredType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding)} or
+	 * {@link Factory#newElement(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding)}
+	 * to create new instances.
+	 */
+	ModuleElementImpl(BaseProcessingEnvImpl env, ModuleBinding binding) {
+		super(env, binding);
+		this.binding = binding;
+	}
+
+	private PackageBinding getModulesPackageBinding(PackageBinding binding) {
+		if (binding instanceof SplitPackageBinding) {
+			return ((SplitPackageBinding) binding).getIncarnation(this.binding);
+		}
+		return binding;
+	}
+
+	@Override
+	public ElementKind getKind() {
+		return ElementKind.MODULE;
+	}
+
+	@Override
+	public Set<Modifier> getModifiers() {
+		int modifiers = this.binding.modifiers;
+		return Factory.getModifiers(modifiers, getKind(), false);
+	}
+
+	@Override
+	public Name getQualifiedName() {
+		return new NameImpl(this.binding.moduleName);
+	}
+
+	@Override
+	public Name getSimpleName() {
+		return new NameImpl(this.binding.moduleName);
+	}
+
+	@Override
+	public List<? extends Element> getEnclosedElements() {
+		ModuleBinding module = this.binding;
+		PackageBinding[] packs = module.declaredPackages.valueTable;
+		Set<PackageBinding> unique = new HashSet<>();
+		for (PackageBinding p : packs) {
+			if (p == null)
+				continue;
+			if (!p.hasCompilationUnit(true))
+				continue;
+			unique.add(getModulesPackageBinding(p));
+		}
+		if (module.isUnnamed()) {
+			PackageBinding def = module.environment.defaultPackage;
+			// FIXME: Does it have any impact for unnamed modules - default package combo?
+			if (def != null && def.hasCompilationUnit(true)) {
+				unique.add(def);
+			}
+		} else {
+			packs = this.binding.getExports();
+			for (PackageBinding pBinding : packs) {
+				unique.add(getModulesPackageBinding(pBinding));
+			}
+			packs = this.binding.getOpens();
+			for (PackageBinding pBinding : packs) {
+				unique.add(getModulesPackageBinding(pBinding));
+			}
+		}
+		List<Element> enclosed = new ArrayList<>(unique.size());
+		for (PackageBinding p : unique) {
+			PackageElement pElement = (PackageElement) _env.getFactory().newElement(p);
+			enclosed.add(pElement);
+		}
+		return Collections.unmodifiableList(enclosed);
+	}
+
+	@Override
+	public boolean isOpen() {
+		return (this.binding.modifiers & ClassFileConstants.ACC_OPEN) != 0;
+	}
+
+	@Override
+	public boolean isUnnamed() {
+		return this.binding.moduleName.length == 0;
+	}
+
+	@Override
+	public Element getEnclosingElement() {
+		// As of today, modules have no enclosing element
+		return null;
+	}
+
+	@Override
+	public List<? extends Directive> getDirectives() {
+		if (isUnnamed()) {
+			return EMPTY_DIRECTIVES;
+		}
+		if (this.directives == null)
+			this.directives = new ArrayList<>();
+
+		PackageBinding[] packs = this.binding.getExports();
+		for (PackageBinding exp : packs) {
+			exp = getModulesPackageBinding(exp);
+			this.directives.add(new ExportsDirectiveImpl(exp));
+		}
+		Set<ModuleBinding> transitive = new HashSet<>();
+		for (ModuleBinding mBinding : this.binding.getRequiresTransitive()) {
+			transitive.add(mBinding);
+		}
+		ModuleBinding[] required = this.binding.getRequires();
+		for (ModuleBinding mBinding : required) {
+			if (transitive.contains(mBinding)) {
+				this.directives.add(new RequiresDirectiveImpl(mBinding, true));
+			} else {
+				this.directives.add(new RequiresDirectiveImpl(mBinding, false));
+			}
+		}
+
+		TypeBinding[] tBindings = this.binding.getUses();
+		for (TypeBinding tBinding : tBindings) {
+			this.directives.add(new UsesDirectiveImpl(tBinding));
+		}
+		tBindings = this.binding.getServices();
+		for (TypeBinding tBinding : tBindings) {
+			this.directives.add(new ProvidesDirectiveImpl(tBinding));
+		}
+		packs = this.binding.getOpens();
+		for (PackageBinding exp : packs) {
+			exp = getModulesPackageBinding(exp);
+			this.directives.add(new OpensDirectiveImpl(exp));
+		}
+		return this.directives;
+	}
+
+	@Override
+	public <R, P> R accept(ElementVisitor<R, P> visitor, P param) {
+		return visitor.visitModule(this, param);
+	}
+	@Override
+	protected AnnotationBinding[] getAnnotationBindings() {
+		return ((ModuleBinding) _binding).getAnnotations();
+	}
+
+	abstract class PackageDirectiveImpl {
+		PackageBinding binding;
+		List<ModuleElement> targets;
+
+		PackageDirectiveImpl(PackageBinding pBinding) {
+			this.binding = pBinding;
+		}
+
+		public PackageElement getPackage() {
+			return _env.getFactory().newPackageElement(binding);
+		}
+
+		public List<? extends ModuleElement> getTargetModules(String[] restrictions) {
+			if(this.targets != null) {
+				return targets;
+			}
+			if (restrictions.length == 0) {
+				return (this.targets = null);
+			}
+			List<ModuleElement> targets = new ArrayList<>(restrictions.length);
+			for (String string : restrictions) {
+				ModuleBinding target = ModuleElementImpl.this.binding.environment.getModule(string.toCharArray());
+				if (target != null) {
+					ModuleElement element = ((ModuleElement) _env.getFactory().newElement(target));
+					targets.add(element);
+				}
+			}
+			return (this.targets = Collections.unmodifiableList(targets));
+		}
+	}
+
+	class ExportsDirectiveImpl extends PackageDirectiveImpl implements ModuleElement.ExportsDirective {
+
+		ExportsDirectiveImpl(PackageBinding pBinding) {
+			super(pBinding);
+		}
+
+		@Override
+		public <R, P> R accept(DirectiveVisitor<R, P> visitor, P param) {
+			return visitor.visitExports(this, param);
+		}
+
+		@Override
+		public javax.lang.model.element.ModuleElement.DirectiveKind getKind() {
+			return DirectiveKind.EXPORTS;
+		}
+
+		@Override
+		public PackageElement getPackage() {
+			return _env.getFactory().newPackageElement(binding);
+		}
+		@Override
+		public List<? extends ModuleElement> getTargetModules() {
+			if(this.targets != null) {
+				return targets;
+			}
+			return getTargetModules(ModuleElementImpl.this.binding.getExportRestrictions(this.binding));
+		}
+
+	}
+
+	class RequiresDirectiveImpl implements ModuleElement.RequiresDirective {
+		ModuleBinding dependency;
+		boolean transitive;
+
+		RequiresDirectiveImpl(ModuleBinding dependency, boolean transitive) {
+			this.dependency = dependency;
+			this.transitive = transitive;
+		}
+
+		@Override
+		public <R, P> R accept(DirectiveVisitor<R, P> visitor, P param) {
+			return visitor.visitRequires(this, param);
+		}
+
+		@Override
+		public javax.lang.model.element.ModuleElement.DirectiveKind getKind() {
+			return DirectiveKind.REQUIRES;
+		}
+
+		@Override
+		public ModuleElement getDependency() {
+			return (ModuleElement) _env.getFactory().newElement(dependency, ElementKind.MODULE);
+		}
+
+		@Override
+		public boolean isStatic() {
+			// TODO: Yet to see this in ModuleBinding. Check again.
+			return false;
+		}
+
+		@Override
+		public boolean isTransitive() {
+			return this.transitive;
+		}
+	}
+
+	class OpensDirectiveImpl extends PackageDirectiveImpl implements ModuleElement.OpensDirective {
+
+		OpensDirectiveImpl(PackageBinding pBinding) {
+			super(pBinding);
+		}
+
+		@Override
+		public <R, P> R accept(DirectiveVisitor<R, P> visitor, P param) {
+			return visitor.visitOpens(this, param);
+		}
+
+		@Override
+		public javax.lang.model.element.ModuleElement.DirectiveKind getKind() {
+			return DirectiveKind.OPENS;
+		}
+		@Override
+		public List<? extends ModuleElement> getTargetModules() {
+			if(this.targets != null) {
+				return targets;
+			}
+			return getTargetModules(ModuleElementImpl.this.binding.getOpenRestrictions(this.binding));
+		}
+	}
+
+	class UsesDirectiveImpl implements ModuleElement.UsesDirective {
+		TypeBinding binding = null;
+
+		UsesDirectiveImpl(TypeBinding binding) {
+			this.binding = binding;
+		}
+
+		@Override
+		public <R, P> R accept(DirectiveVisitor<R, P> visitor, P param) {
+			return visitor.visitUses(this, param);
+		}
+
+		@Override
+		public DirectiveKind getKind() {
+			return DirectiveKind.USES;
+		}
+
+		@Override
+		public TypeElement getService() {
+			return (TypeElement) _env.getFactory().newElement(binding);
+		}
+
+	}
+
+	class ProvidesDirectiveImpl implements ModuleElement.ProvidesDirective {
+
+		TypeBinding service;
+		public List<? extends TypeElement> implementations;
+
+		ProvidesDirectiveImpl(TypeBinding service) {
+			this.service = service;
+		}
+
+		@Override
+		public <R, P> R accept(DirectiveVisitor<R, P> visitor, P param) {
+			return visitor.visitProvides(this, param);
+		}
+
+		@Override
+		public DirectiveKind getKind() {
+			return DirectiveKind.PROVIDES;
+		}
+
+		@Override
+		public List<? extends TypeElement> getImplementations() {
+			if (this.implementations != null)
+				return this.implementations;
+
+			TypeBinding[] implementations2 = ModuleElementImpl.this.binding.getImplementations(this.service);
+			if (implementations2.length == 0) {
+				return (this.implementations = Collections.emptyList());
+			}
+
+			List<TypeElement> list = new ArrayList<>(implementations2.length);
+			Factory factory = _env.getFactory();
+			for (TypeBinding type: implementations2) {
+				TypeElement element = (TypeElement) factory.newElement(type);
+				list.add(element);
+			}
+			return Collections.unmodifiableList(list);
+		}
+
+		@Override
+		public TypeElement getService() {
+			return (TypeElement) _env.getFactory().newElement(this.service);
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.java
index 11f7817..8fd71b5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/NoTypeImpl.java
@@ -22,20 +22,39 @@
 import javax.lang.model.type.TypeKind;
 import javax.lang.model.type.TypeVisitor;
 
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+
 /**
  * An implementation of NoType, which is used to represent certain pseudo-types.
  * @see NoType
  */
-public class NoTypeImpl implements NoType, NullType
+public class NoTypeImpl extends TypeMirrorImpl implements NoType, NullType
 {
 	private final TypeKind _kind;
 	
 	public static final NoType NO_TYPE_NONE = new NoTypeImpl(TypeKind.NONE);
-	public static final NoType NO_TYPE_VOID = new NoTypeImpl(TypeKind.VOID);
+	public static final NoType NO_TYPE_VOID = new NoTypeImpl(TypeKind.VOID, TypeBinding.VOID);
 	public static final NoType NO_TYPE_PACKAGE = new NoTypeImpl(TypeKind.PACKAGE);
-	public static final NullType NULL_TYPE = new NoTypeImpl(TypeKind.NULL);
+	public static final NullType NULL_TYPE = new NoTypeImpl(TypeKind.NULL, TypeBinding.NULL);
+	public static final Binding NO_TYPE_BINDING = new Binding() {
+		@Override
+		public int kind() {
+			throw new IllegalStateException();
+		}
 	
-	private NoTypeImpl(TypeKind kind) {
+		@Override
+		public char[] readableName() {
+			throw new IllegalStateException();
+		}
+	};
+	
+	public NoTypeImpl(TypeKind kind) {
+		super(null, NO_TYPE_BINDING);
+		_kind = kind;
+	}
+	public NoTypeImpl(TypeKind kind, Binding binding) {
+		super(null, binding);
 		_kind = kind;
 	}
 
@@ -57,6 +76,7 @@
 		return _kind;
 	}
 	
+	@Override
 	public String toString()
 	{
 		switch (_kind) {
@@ -69,17 +89,22 @@
 			return "void"; //$NON-NLS-1$
 		case PACKAGE:
 			return "package"; //$NON-NLS-1$
+		case MODULE:
+			return "module"; //$NON-NLS-1$
 		}
 	}
 
+	@Override
 	public List<? extends AnnotationMirror> getAnnotationMirrors() {
 		return Factory.EMPTY_ANNOTATION_MIRRORS;
 	}
 
+	@Override
 	public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
 		return null;
 	}
 
+	@Override
 	@SuppressWarnings("unchecked")
 	public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
 		return (A[]) Array.newInstance(annotationType, 0);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.java
index 4d29244..5ef042d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PackageElementImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2015 BEA Systems, Inc. 
+ * Copyright (c) 2007, 2017 BEA Systems, Inc. 
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,6 +16,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.lang.model.element.Element;
 import javax.lang.model.element.ElementKind;
@@ -26,9 +27,11 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BaseProcessingEnvImpl;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
@@ -71,11 +74,29 @@
 			typeNames = ((FileSystem) nameEnvironment).findTypeNames(binding.compoundName);
 		}
 		HashSet<Element> set = new HashSet<>(); 
+		Set<ReferenceBinding> types = new HashSet<>();
 		if (typeNames != null) {
 			for (char[][] typeName : typeNames) {
+				if (typeName == null) continue;
 				ReferenceBinding type = environment.getType(typeName);
 				if (type != null && type.isValidBinding()) {
-					set.add(_env.getFactory().newElement(type));
+					Element newElement = _env.getFactory().newElement(type);
+					if (newElement.getKind() != ElementKind.PACKAGE) {
+						set.add(newElement);
+						types.add(type);
+					}
+				}
+			}
+		}
+		if (binding.knownTypes != null) {
+			ReferenceBinding[] knownTypes = binding.knownTypes.valueTable;
+			for (ReferenceBinding referenceBinding : knownTypes) {
+				if (referenceBinding != null && referenceBinding.isValidBinding() && referenceBinding.enclosingType() == null) {
+					if (!types.contains(referenceBinding)) {
+						Element newElement = _env.getFactory().newElement(referenceBinding);
+						if (newElement.getKind() != ElementKind.PACKAGE)
+							set.add(newElement);
+					}
 				}
 			}
 		}
@@ -86,8 +107,14 @@
 
 	@Override
 	public Element getEnclosingElement() {
-		// packages have no enclosing element
-		return null;
+		if (super._env.getCompiler().options.sourceLevel < ClassFileConstants.JDK9) {
+			return null;
+		}
+		PackageBinding pBinding = (PackageBinding) _binding;
+		ModuleBinding module = pBinding.enclosingModule;
+		if (module == null)
+			return null;
+		return new ModuleElementImpl(_env, module);
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.java
index 09a5e69..55894eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/PrimitiveTypeImpl.java
@@ -56,9 +56,6 @@
 		return v.visitPrimitive(this, p);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.apt.model.TypeMirrorImpl#getKind()
-	 */
 	@Override
 	public TypeKind getKind() {
 		return getKind((BaseTypeBinding)_binding);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.java
index 20edb38..d94e05f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeElementImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,7 +41,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
@@ -263,7 +262,7 @@
 	PackageElement getPackage()
 	{
 		ReferenceBinding binding = (ReferenceBinding)_binding;
-		return _env.getFactory().newPackageElement((PackageBinding)binding.fPackage);
+		return _env.getFactory().newPackageElement(binding.fPackage);
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.java
index a546599..9a0b917 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypeMirrorImpl.java
@@ -126,15 +126,18 @@
 		return ((TypeBinding)_binding).getTypeAnnotations();
 	}
 
+	@Override
 	public List<? extends AnnotationMirror> getAnnotationMirrors() {
 		return _env == null ? Factory.EMPTY_ANNOTATION_MIRRORS : 
 								_env.getFactory().getAnnotationMirrors(getPackedAnnotationBindings());
 	}
 
+	@Override
 	public <A extends Annotation> A getAnnotation(Class<A> annotationType) {
 		return _env == null ? null : _env.getFactory().getAnnotation(getPackedAnnotationBindings(), annotationType);
 	}
 
+	@Override
 	@SuppressWarnings("unchecked")
 	public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) {
 		if (_env == null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.java
index e70daa2..de076bf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/TypesImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 - 2015 BEA Systems, Inc. and others
+ * Copyright (c) 2007 - 2017 BEA Systems, Inc. and others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -106,6 +106,33 @@
 				return typeMirror;
 			}
 			break;
+		case TYPE_PARAMETER:
+			typeMirror = findMemberInHierarchy(referenceBinding, elementImpl._binding, new MemberInTypeFinder() {
+				@Override
+				public TypeMirror find(ReferenceBinding typeBinding, Binding memberBinding) {
+					if (typeBinding instanceof ParameterizedTypeBinding) {
+						TypeVariableBinding variableBinding = ((TypeVariableBinding) memberBinding);
+						ReferenceBinding binding = ((ParameterizedTypeBinding) typeBinding).genericType();
+						if (variableBinding.declaringElement == binding) { // check in advance avoid looking into type parameters unnecessarily.
+							TypeVariableBinding[] typeVariables = binding.typeVariables();
+							TypeBinding[] typeArguments = ((ParameterizedTypeBinding) typeBinding).typeArguments();
+							if (typeVariables.length == typeArguments.length) {
+								for(int i = 0; i < typeVariables.length; i++) {
+									if (typeVariables[i] == memberBinding) {
+										return TypesImpl.this._env.getFactory().newTypeMirror(typeArguments[i]); 
+									}
+								}
+							}
+						}
+					}
+					return null;
+				}
+			});
+
+			if (typeMirror != null) {
+				return typeMirror;
+			}
+			break;
 		case FIELD:
 		case ENUM_CONSTANT:
 			typeMirror = findMemberInHierarchy(referenceBinding, elementImpl._binding, new MemberInTypeFinder() {
@@ -193,6 +220,21 @@
 
 		return null;
 	}
+	private void validateRealType(TypeMirror t) {
+		switch (t.getKind()) {
+			case EXECUTABLE:
+			case PACKAGE:
+			case MODULE:
+				throw new IllegalArgumentException(
+						"Executable, package and module are illegal argument for Types.contains(..)"); //$NON-NLS-1$
+			default:
+				break;
+		}
+	}
+	private void validateRealTypes(TypeMirror t1, TypeMirror t2) {
+		validateRealType(t1);
+		validateRealType(t2);
+	}
 
     @Override
     public TypeElement boxedClass(PrimitiveType p) {
@@ -204,37 +246,23 @@
 
     @Override
     public TypeMirror capture(TypeMirror t) {
-        throw new UnsupportedOperationException("NYI: TypesImpl.capture(...)"); //$NON-NLS-1$
+    	validateRealType(t);
+    	TypeMirrorImpl typeMirrorImpl = (TypeMirrorImpl) t;
+    	if (typeMirrorImpl._binding instanceof ParameterizedTypeBinding) {
+    		throw new UnsupportedOperationException("NYI: TypesImpl.capture(...)"); //$NON-NLS-1$
+    	}
+        return t;
     }
 
     @Override
     public boolean contains(TypeMirror t1, TypeMirror t2) {
-        switch(t1.getKind()) {
-        case EXECUTABLE :
-        case PACKAGE :
-            throw new IllegalArgumentException("Executable and package are illegal argument for Types.contains(..)"); //$NON-NLS-1$
-        default:
-            break;
-        }
-        switch(t2.getKind()) {
-        case EXECUTABLE :
-        case PACKAGE :
-            throw new IllegalArgumentException("Executable and package are illegal argument for Types.contains(..)"); //$NON-NLS-1$
-        default:
-            break;
-        }
+    	validateRealTypes(t1, t2);
         throw new UnsupportedOperationException("NYI: TypesImpl.contains(" + t1 + ", " + t2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     @Override
     public List<? extends TypeMirror> directSupertypes(TypeMirror t) {
-        switch(t.getKind()) {
-        case PACKAGE :
-        case EXECUTABLE :
-            throw new IllegalArgumentException("Invalid type mirror for directSupertypes"); //$NON-NLS-1$
-        default:
-            break;
-        }
+    	validateRealType(t);
         TypeMirrorImpl typeMirrorImpl = (TypeMirrorImpl) t;
         Binding binding = typeMirrorImpl._binding;
         if (binding instanceof ReferenceBinding) {
@@ -254,6 +282,7 @@
 
     @Override
     public TypeMirror erasure(TypeMirror t) {
+    	validateRealType(t);
         TypeMirrorImpl typeMirrorImpl = (TypeMirrorImpl) t;
         Binding binding = typeMirrorImpl._binding;
         if (binding instanceof ReferenceBinding) {
@@ -428,8 +457,9 @@
      */
     @Override
     public boolean isAssignable(TypeMirror t1, TypeMirror t2) {
+    	validateRealTypes(t1, t2);
         if (!(t1 instanceof TypeMirrorImpl) || !(t2 instanceof TypeMirrorImpl)) {
-            return false;
+        	return false;
         }
         Binding b1 = ((TypeMirrorImpl)t1).binding();
         Binding b2 = ((TypeMirrorImpl)t2).binding();
@@ -447,6 +477,14 @@
 
     @Override
     public boolean isSameType(TypeMirror t1, TypeMirror t2) {
+        if (t1 instanceof NoTypeImpl) {
+            if (t2 instanceof NoTypeImpl) {
+                return ((NoTypeImpl) t1).getKind() == ((NoTypeImpl) t2).getKind();
+            }
+            return false;
+        } else if (t2 instanceof NoTypeImpl) {
+            return false;
+        }
         if (t1.getKind() == TypeKind.WILDCARD || t2.getKind() == TypeKind.WILDCARD) {
             // Wildcard types are never equal, according to the spec of this method
             return false;
@@ -487,6 +525,7 @@
      */
     @Override
     public boolean isSubtype(TypeMirror t1, TypeMirror t2) {
+    	validateRealTypes(t1, t2);
         if (t1 instanceof NoTypeImpl) {
             if (t2 instanceof NoTypeImpl) {
                 return ((NoTypeImpl) t1).getKind() == ((NoTypeImpl) t2).getKind();
@@ -496,7 +535,7 @@
             return false;
         }
         if (!(t1 instanceof TypeMirrorImpl) || !(t2 instanceof TypeMirrorImpl)) {
-            return false;
+        	throw new IllegalArgumentException();
         }
         if (t1 == t2) {
             return true;
@@ -508,7 +547,7 @@
         }
         if (!(b1 instanceof TypeBinding) || !(b2 instanceof TypeBinding)) {
             // package, method, import, etc.
-            return false;
+        	 throw new IllegalArgumentException();
         }
         if (b1.kind() == Binding.BASE_TYPE || b2.kind() == Binding.BASE_TYPE) {
             if (b1.kind() != b2.kind()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.java
index f32be28..cadfb68 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/model/VariableElementImpl.java
@@ -14,6 +14,7 @@
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 
 import javax.lang.model.element.Element;
@@ -179,4 +180,16 @@
 	public String toString() {
 		return new String(((VariableBinding) _binding).name);
 	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		final VariableElementImpl other = (VariableElementImpl) obj;
+		return Objects.equals(this._binding, other._binding);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.java
index 5c21b1b..f026ffc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/Archive.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -33,9 +33,9 @@
 	ZipFile zipFile;
 	File file;
 
-	protected Hashtable<String, ArrayList<String>> packagesCache;
+	protected Hashtable<String, ArrayList<String[]>> packagesCache;
 	
-	private Archive() {
+	protected Archive() {
 		// used to construct UNKNOWN_ARCHIVE
 	}
 
@@ -56,23 +56,23 @@
 			// extract the package name
 			String packageName = fileName.substring(0, last + 1);
 			String typeName = fileName.substring(last + 1);
-			ArrayList<String> types = this.packagesCache.get(packageName);
+			ArrayList<String[]> types = this.packagesCache.get(packageName);
 			if (types == null) {
 				// might be empty if this is a directory entry
 				if (typeName.length() == 0) {
 					continue nextEntry;
 				}
 				types = new ArrayList<>();
-				types.add(typeName);
+				types.add(new String[]{typeName, null});
 				this.packagesCache.put(packageName, types);
 			} else {
-				types.add(typeName);
+				types.add(new String[]{typeName, null});
 			}
 		}
 	}
 	
-	public ArchiveFileObject getArchiveFileObject(String entryName, Charset charset) {
-		return new ArchiveFileObject(this.file, entryName, charset);
+	public ArchiveFileObject getArchiveFileObject(String fileName, String module, Charset charset) {
+		return new ArchiveFileObject(this.file, fileName, charset);
 	}
 	
 	public boolean contains(String entryName) {
@@ -86,13 +86,13 @@
 		return this.packagesCache.keySet();
 	}
 	
-	public List<String> getTypes(String packageName) {
+	public List<String[]> getTypes(String packageName) {
 		// package name is expected to ends with '/'
 		if (this.packagesCache == null) {
 			try {
 				this.zipFile = new ZipFile(this.file);
 			} catch(IOException e) {
-				return Collections.<String>emptyList();
+				return Collections.<String[]>emptyList();
 			}
 			this.initialize();
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.java
index 053e4bf..8fe42c7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ArchiveFileObject.java
@@ -34,10 +34,10 @@
  * Implementation of a Java file object that corresponds to an entry in a zip/jar file
  */
 public class ArchiveFileObject implements JavaFileObject {
-	private String entryName;
-	private File file;
-	private ZipFile zipFile;
-	private Charset charset;
+	protected String entryName;
+	protected File file;
+	protected ZipFile zipFile;
+	protected Charset charset;
 
 	public ArchiveFileObject(File file, String entryName, Charset charset) {
 		this.entryName = entryName;
@@ -66,16 +66,7 @@
 		if (getKind() != Kind.CLASS) {
 			return null;
 		}
-		ClassFileReader reader = null;
-		try {
-			try (ZipFile zip = new ZipFile(this.file)) {
-				reader = ClassFileReader.read(zip, this.entryName);
-			}
-		} catch (ClassFormatException e) {
-			// ignore
-		} catch (IOException e) {
-			// ignore
-		}
+		ClassFileReader reader = getClassReader();
 
 		if (reader == null) {
 			return null;
@@ -93,6 +84,20 @@
 		return null;
 	}
 
+	protected ClassFileReader getClassReader() {
+		ClassFileReader reader = null;
+		try {
+			try (ZipFile zip = new ZipFile(this.file)) {
+				reader = ClassFileReader.read(zip, this.entryName);
+			}
+		} catch (ClassFormatException e) {
+			// ignore
+		} catch (IOException e) {
+			// ignore
+		}
+		return reader;
+	}
+
 	/* (non-Javadoc)
 	 * @see javax.tools.JavaFileObject#getKind()
 	 */
@@ -118,16 +123,7 @@
 		case SOURCE :
 			return NestingKind.TOP_LEVEL;
 		case CLASS :
-			ClassFileReader reader = null;
-			try {
-				try (ZipFile zip = new ZipFile(this.file)) {
-					reader = ClassFileReader.read(zip, this.entryName);
-				}
-			} catch (ClassFormatException e) {
-				// ignore
-			} catch (IOException e) {
-				// ignore
-			}
+			ClassFileReader reader = getClassReader();
 			if (reader == null) {
 				return null;
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
index 69e2598..b505470 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,20 +18,27 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.nio.charset.Charset;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.ResourceBundle;
+import java.util.ServiceLoader;
 import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.zip.ZipException;
 
+import javax.lang.model.SourceVersion;
 import javax.tools.FileObject;
 import javax.tools.JavaFileObject;
 import javax.tools.JavaFileObject.Kind;
@@ -39,14 +46,25 @@
 import javax.tools.StandardLocation;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.util.JrtFileSystem.JrtFileObject;
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.util.ModuleLocationHandler.LocationContainer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.util.ModuleLocationHandler.LocationWrapper;
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.util.ModuleLocationHandler.ModuleLocationWrapper;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main.ResourceBundleFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.ModuleFinder;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
 /**
  * Implementation of the Standard Java File Manager
@@ -57,25 +75,30 @@
 	static final int HAS_BOOTCLASSPATH = 2;
 	static final int HAS_ENDORSED_DIRS = 4;
 	static final int HAS_PROCESSORPATH = 8;
+	static final int HAS_PROC_MODULEPATH = 16;
 
 	Map<File, Archive> archivesCache;
 	Charset charset;
 	Locale locale;
-	Map<String, Iterable<? extends File>> locations;
+	ModuleLocationHandler locationHandler;
+	final Map<Location, URLClassLoader> classloaders;
 	int flags;
+	boolean isOnJvm9;
+	File jrtHome;
+	JrtFileSystem jrtSystem;
 	public ResourceBundle bundle;
 	
 	public EclipseFileManager(Locale locale, Charset charset) {
 		this.locale = locale == null ? Locale.getDefault() : locale;
 		this.charset = charset == null ? Charset.defaultCharset() : charset;
-		this.locations = new HashMap<>();
+		this.locationHandler = new ModuleLocationHandler();
+		this.classloaders = new HashMap<>();
 		this.archivesCache = new HashMap<>();
+		this.isOnJvm9 = isRunningJvm9();
 		try {
-			this.setLocation(StandardLocation.PLATFORM_CLASS_PATH, getDefaultBootclasspath());
-			Iterable<? extends File> defaultClasspath = getDefaultClasspath();
-			this.setLocation(StandardLocation.CLASS_PATH, defaultClasspath);
-			this.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, defaultClasspath);
+			initialize(Util.getJavaHome());
 		} catch (IOException e) {
+			e.printStackTrace();
 			// ignore
 		}
 		try {
@@ -84,21 +107,82 @@
 			System.out.println("Missing resource : " + Main.bundleName.replace('.', '/') + ".properties for locale " + locale); //$NON-NLS-1$//$NON-NLS-2$
 		}
 	}
+	protected void initialize(File javahome) throws IOException {
+		if (this.isOnJvm9) {
+			this.jrtSystem = new JrtFileSystem(javahome);
+			this.archivesCache.put(javahome, this.jrtSystem);
+			this.jrtHome = javahome;
+			this.locationHandler.newSystemLocation(StandardLocation.SYSTEM_MODULES, this.jrtSystem);
+		} else {
+			this.setLocation(StandardLocation.PLATFORM_CLASS_PATH, getDefaultBootclasspath());
+		}
+		Iterable<? extends File> defaultClasspath = getDefaultClasspath();
+		this.setLocation(StandardLocation.CLASS_PATH, defaultClasspath);
+		// No annotation module path by default
+		this.setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, defaultClasspath);
+	}
 
 	/* (non-Javadoc)
 	 * @see javax.tools.JavaFileManager#close()
 	 */
 	@Override
 	public void close() throws IOException {
-		if (this.locations != null) this.locations.clear();
+		this.locationHandler.close();
 		for (Archive archive : this.archivesCache.values()) {
 			archive.close();
 		}
 		this.archivesCache.clear();
+		for (URLClassLoader cl : this.classloaders.values()) {
+			cl.close();
+		}
+		this.classloaders.clear();
 	}
 	
-	private void collectAllMatchingFiles(File file, String normalizedPackageName, Set<Kind> kinds, boolean recurse, ArrayList<JavaFileObject> collector) {
-		if (!isArchive(file)) {
+	private void collectAllMatchingFiles(Location location, File file, String normalizedPackageName, Set<Kind> kinds, boolean recurse, ArrayList<JavaFileObject> collector) {
+		if (file.equals(this.jrtHome)) {
+			if (location instanceof ModuleLocationWrapper) {
+				List<JrtFileObject> list = this.jrtSystem.list((ModuleLocationWrapper) location, normalizedPackageName, kinds, recurse, this.charset);
+				for (JrtFileObject fo : list) {
+					Kind kind = getKind(getExtension(fo.entryName));
+					if (kinds.contains(kind)) {
+						collector.add(fo);
+					}
+				}
+			}
+		} else if (isArchive(file)) {
+			Archive archive = this.getArchive(file);
+			if (archive == Archive.UNKNOWN_ARCHIVE) return;
+			String key = normalizedPackageName;
+			if (!normalizedPackageName.endsWith("/")) {//$NON-NLS-1$
+				key += '/';
+			}
+			// we have an archive file
+			if (recurse) {
+				for (String packageName : archive.allPackages()) {
+					if (packageName.startsWith(key)) {
+						List<String[]> types = archive.getTypes(packageName);
+						if (types != null) {
+							for (String[] entry : types) {
+								final Kind kind = getKind(getExtension(entry[0]));
+								if (kinds.contains(kind)) {
+									collector.add(archive.getArchiveFileObject(packageName + entry[0], entry[1], this.charset));
+								}
+							}
+						}
+					}
+				}
+			} else {
+				List<String[]> types = archive.getTypes(key);
+				if (types != null) {
+					for (String[] entry : types) {
+						final Kind kind = getKind(getExtension(entry[0]));
+						if (kinds.contains(kind)) {
+							collector.add(archive.getArchiveFileObject(key + entry[0], entry[1], this.charset));
+						}
+					}
+				}
+			}
+		} else {
 			// we must have a directory
 			File currentFile = new File(file, normalizedPackageName);
 			if (!currentFile.exists()) return;
@@ -116,7 +200,7 @@
 				// this was a directory
 				for (File f : files) {
 					if (f.isDirectory() && recurse) {
-						collectAllMatchingFiles(file, normalizedPackageName + '/' + f.getName(), kinds, recurse, collector);
+						collectAllMatchingFiles(location, file, normalizedPackageName + '/' + f.getName(), kinds, recurse, collector);
 					} else {
 						final Kind kind = getKind(f);
 						if (kinds.contains(kind)) {
@@ -125,39 +209,6 @@
 					}
 				}
 			}
-		} else {
-			Archive archive = this.getArchive(file);
-			if (archive == Archive.UNKNOWN_ARCHIVE) return;
-			String key = normalizedPackageName;
-			if (!normalizedPackageName.endsWith("/")) {//$NON-NLS-1$
-				key += '/';
-			}
-			// we have an archive file
-			if (recurse) {
-				for (String packageName : archive.allPackages()) {
-					if (packageName.startsWith(key)) {
-						List<String> types = archive.getTypes(packageName);
-						if (types != null) {
-							for (String typeName : types) {
-								final Kind kind = getKind(getExtension(typeName));
-								if (kinds.contains(kind)) {
-									collector.add(archive.getArchiveFileObject(packageName + typeName, this.charset));
-								}
-							}
-						}
-					}
-				}
-			} else {
-				List<String> types = archive.getTypes(key);
-				if (types != null) {
-					for (String typeName : types) {
-						final Kind kind = getKind(getExtension(typeName));
-						if (kinds.contains(kind)) {
-							collector.add(archive.getArchiveFileObject(key + typeName, this.charset));
-						}
-					}
-				}
-			}
 		}
 	}
 
@@ -211,22 +262,28 @@
 	 */
 	@Override
 	public ClassLoader getClassLoader(Location location) {
+		validateNonModuleLocation(location);
 		Iterable<? extends File> files = getLocation(location);
 		if (files == null) {
 			// location is unknown
 			return null;
 		}
-		ArrayList<URL> allURLs = new ArrayList<>();
-		for (File f : files) {
-			try {
-				allURLs.add(f.toURI().toURL());
-			} catch (MalformedURLException e) {
-				// the url is malformed - this should not happen
-				throw new RuntimeException(e);
+		URLClassLoader cl = this.classloaders.get(location);
+		if (cl == null) {
+			ArrayList<URL> allURLs = new ArrayList<>();
+			for (File f : files) {
+				try {
+					allURLs.add(f.toURI().toURL());
+				} catch (MalformedURLException e) {
+					// the url is malformed - this should not happen
+					throw new RuntimeException(e);
+				}
 			}
+			URL[] result = new URL[allURLs.size()];
+			cl = new URLClassLoader(allURLs.toArray(result), getClass().getClassLoader());
+			this.classloaders.put(location, cl);
 		}
-		URL[] result = new URL[allURLs.size()];
-		return new URLClassLoader(allURLs.toArray(result), getClass().getClassLoader());
+		return cl;
 	}
 
 	private Iterable<? extends File> getPathsFrom(String path) {
@@ -254,8 +311,8 @@
 			return null;
 		}
 
-		for (String fileName : org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.collectFilesNames()) {
-			files.add(new File(fileName));
+		for (FileSystem.Classpath classpath : org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.collectFilesNames()) {
+			files.add(new File(classpath.getPath()));
 		}
 		return files;
 	}
@@ -325,6 +382,7 @@
 	 */
 	@Override
 	public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException {
+		validateNonModuleLocation(location);
 		Iterable<? extends File> files = getLocation(location);
 		if (files == null) {
 			throw new IllegalArgumentException("Unknown location : " + location);//$NON-NLS-1$
@@ -344,7 +402,7 @@
 				Archive archive = getArchive(file);
 				if (archive != Archive.UNKNOWN_ARCHIVE) {
 					if (archive.contains(normalizedFileName)) {
-						return archive.getArchiveFileObject(normalizedFileName, this.charset);
+						return archive.getArchiveFileObject(normalizedFileName, null, this.charset);
 					}
 				}
 			}
@@ -368,6 +426,7 @@
 	@Override
 	public FileObject getFileForOutput(Location location, String packageName, String relativeName, FileObject sibling)
 			throws IOException {
+		validateOutputLocation(location);
 		Iterable<? extends File> files = getLocation(location);
 		if (files == null) {
 			throw new IllegalArgumentException("Unknown location : " + location);//$NON-NLS-1$
@@ -388,6 +447,7 @@
 	 */
 	@Override
 	public JavaFileObject getJavaFileForInput(Location location, String className, Kind kind) throws IOException {
+		validateNonModuleLocation(location);
 		if (kind != Kind.CLASS && kind != Kind.SOURCE) {
 			throw new IllegalArgumentException("Invalid kind : " + kind);//$NON-NLS-1$
 		}
@@ -411,7 +471,7 @@
 				Archive archive = getArchive(file);
 				if (archive != Archive.UNKNOWN_ARCHIVE) {
 					if (archive.contains(normalizedFileName)) {
-						return archive.getArchiveFileObject(normalizedFileName, this.charset);
+						return archive.getArchiveFileObject(normalizedFileName, null, this.charset);
 					}
 				}
 			}
@@ -425,6 +485,7 @@
 	@Override
 	public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling)
 			throws IOException {
+		validateOutputLocation(location);
 		if (kind != Kind.CLASS && kind != Kind.SOURCE) {
 			throw new IllegalArgumentException("Invalid kind : " + kind);//$NON-NLS-1$
 		}
@@ -537,8 +598,14 @@
 	 */
 	@Override
 	public Iterable<? extends File> getLocation(Location location) {
-		if (this.locations == null) return null;
-		return this.locations.get(location.getName());
+		if (location instanceof LocationWrapper) {
+			return getFiles(((LocationWrapper) location).paths);
+		}
+		LocationWrapper loc = this.locationHandler.getLocation(location, ""); //$NON-NLS-1$
+		if (loc == null) {
+			return null;
+		}
+		return getFiles(loc.getPaths());
 	}
 
 	private Iterable<? extends File> getOutputDir(String string) {
@@ -560,123 +627,193 @@
 	@Override
 	public boolean handleOption(String current, Iterator<String> remaining) {
 		try {
-			if ("-bootclasspath".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					final Iterable<? extends File> bootclasspaths = getPathsFrom(remaining.next());
-					if (bootclasspaths != null) {
-						Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
-						if ((this.flags & EclipseFileManager.HAS_ENDORSED_DIRS) == 0
-								&& (this.flags & EclipseFileManager.HAS_EXT_DIRS) == 0) {
-							// override default bootclasspath
-							setLocation(StandardLocation.PLATFORM_CLASS_PATH, bootclasspaths);
-						} else if ((this.flags & EclipseFileManager.HAS_ENDORSED_DIRS) != 0) {
-							// endorseddirs have been processed first
-							setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
-									concatFiles(iterable, bootclasspaths));
-						} else {
-							// extdirs have been processed first
-							setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
-									prependFiles(iterable, bootclasspaths));
+			switch(current) {
+				case "-bootclasspath": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> bootclasspaths = getPathsFrom(remaining.next());
+						if (bootclasspaths != null) {
+							Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
+							if ((this.flags & EclipseFileManager.HAS_ENDORSED_DIRS) == 0
+									&& (this.flags & EclipseFileManager.HAS_EXT_DIRS) == 0) {
+								// override default bootclasspath
+								setLocation(StandardLocation.PLATFORM_CLASS_PATH, bootclasspaths);
+							} else if ((this.flags & EclipseFileManager.HAS_ENDORSED_DIRS) != 0) {
+								// endorseddirs have been processed first
+								setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
+										concatFiles(iterable, bootclasspaths));
+							} else {
+								// extdirs have been processed first
+								setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
+										prependFiles(iterable, bootclasspaths));
+							}
 						}
+						this.flags |= EclipseFileManager.HAS_BOOTCLASSPATH;
+						return true;
+					} else {
+						throw new IllegalArgumentException();
 					}
-					this.flags |= EclipseFileManager.HAS_BOOTCLASSPATH;
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-classpath".equals(current) || "-cp".equals(current)) {//$NON-NLS-1$//$NON-NLS-2$
-				if (remaining.hasNext()) {
+				case "--system": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> classpaths = getPathsFrom(remaining.next());
+						if (classpaths != null) {
+							Iterable<? extends File> iterable = getLocation(StandardLocation.SYSTEM_MODULES);
+							if (iterable != null) {
+								setLocation(StandardLocation.SYSTEM_MODULES,
+									concatFiles(iterable, classpaths));
+							} else {
+								setLocation(StandardLocation.SYSTEM_MODULES, classpaths);
+							}
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "--upgrade-module-path": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> classpaths = getPathsFrom(remaining.next());
+						if (classpaths != null) {
+							Iterable<? extends File> iterable = getLocation(StandardLocation.UPGRADE_MODULE_PATH);
+							if (iterable != null) {
+								setLocation(StandardLocation.UPGRADE_MODULE_PATH,
+									concatFiles(iterable, classpaths));
+							} else {
+								setLocation(StandardLocation.UPGRADE_MODULE_PATH, classpaths);
+							}
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "-classpath": //$NON-NLS-1$
+				case "-cp": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> classpaths = getPathsFrom(remaining.next());
+						if (classpaths != null) {
+							Iterable<? extends File> iterable = getLocation(StandardLocation.CLASS_PATH);
+							if (iterable != null) {
+								setLocation(StandardLocation.CLASS_PATH,
+									concatFiles(iterable, classpaths));
+							} else {
+								setLocation(StandardLocation.CLASS_PATH, classpaths);
+							}
+							if ((this.flags & EclipseFileManager.HAS_PROCESSORPATH) == 0) {
+								setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, classpaths);
+							} else if ((this.flags & EclipseFileManager.HAS_PROC_MODULEPATH) == 0) {
+								if (this.isOnJvm9)
+									setLocation(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH, classpaths);
+							}
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "--module-path": //$NON-NLS-1$
+				case "-p": //$NON-NLS-1$
 					final Iterable<? extends File> classpaths = getPathsFrom(remaining.next());
 					if (classpaths != null) {
-						Iterable<? extends File> iterable = getLocation(StandardLocation.CLASS_PATH);
+						Iterable<? extends File> iterable = getLocation(StandardLocation.MODULE_PATH);
 						if (iterable != null) {
-							setLocation(StandardLocation.CLASS_PATH,
-								concatFiles(iterable, classpaths));
+							setLocation(StandardLocation.MODULE_PATH, concatFiles(iterable, classpaths));
 						} else {
-							setLocation(StandardLocation.CLASS_PATH, classpaths);
+							setLocation(StandardLocation.MODULE_PATH, classpaths);
 						}
 						if ((this.flags & EclipseFileManager.HAS_PROCESSORPATH) == 0) {
 							setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, classpaths);
+						} else if ((this.flags & EclipseFileManager.HAS_PROC_MODULEPATH) == 0) {
+							if (this.isOnJvm9)
+								setLocation(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH, classpaths);
 						}
 					}
 					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-encoding".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					this.charset = Charset.forName(remaining.next());
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-sourcepath".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					final Iterable<? extends File> sourcepaths = getPathsFrom(remaining.next());
-					if (sourcepaths != null) setLocation(StandardLocation.SOURCE_PATH, sourcepaths);
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-extdirs".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
-					setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
-							concatFiles(iterable, getExtdirsFrom(remaining.next())));
-					this.flags |= EclipseFileManager.HAS_EXT_DIRS;
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-endorseddirs".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
-					setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
-							prependFiles(iterable, getEndorsedDirsFrom(remaining.next())));
-					this.flags |= EclipseFileManager.HAS_ENDORSED_DIRS;
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-d".equals(current)) { //$NON-NLS-1$
-				if (remaining.hasNext()) {
-					final Iterable<? extends File> outputDir = getOutputDir(remaining.next());
-					if (outputDir != null) {
-						setLocation(StandardLocation.CLASS_OUTPUT, outputDir);
+				case "-encoding": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						this.charset = Charset.forName(remaining.next());
+						return true;
+					} else {
+						throw new IllegalArgumentException();
 					}
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
-			}
-			if ("-s".equals(current)) { //$NON-NLS-1$
-				if (remaining.hasNext()) {
-					final Iterable<? extends File> outputDir = getOutputDir(remaining.next());
-					if (outputDir != null) {
-						setLocation(StandardLocation.SOURCE_OUTPUT, outputDir);
+				case "-sourcepath": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> sourcepaths = getPathsFrom(remaining.next());
+						if (sourcepaths != null) setLocation(StandardLocation.SOURCE_PATH, sourcepaths);
+						return true;
+					} else {
+						throw new IllegalArgumentException();
 					}
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}				
-			}
-			if ("-processorpath".equals(current)) {//$NON-NLS-1$
-				if (remaining.hasNext()) {
-					final Iterable<? extends File> processorpaths = getPathsFrom(remaining.next());
-					if (processorpaths != null) {
-						setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, processorpaths);
+				case "--module-source-path": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> sourcepaths = getPathsFrom(remaining.next());
+						if (sourcepaths != null && this.isOnJvm9) 
+							setLocation(StandardLocation.MODULE_SOURCE_PATH, sourcepaths);
+						return true;
+					} else {
+						throw new IllegalArgumentException();
 					}
-					this.flags |= EclipseFileManager.HAS_PROCESSORPATH;
-					return true;
-				} else {
-					throw new IllegalArgumentException();
-				}
+				case "-extdirs": //$NON-NLS-1$
+					if (this.isOnJvm9) {
+						throw new IllegalArgumentException();
+					}
+					if (remaining.hasNext()) {
+						Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
+						setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
+								concatFiles(iterable, getExtdirsFrom(remaining.next())));
+						this.flags |= EclipseFileManager.HAS_EXT_DIRS;
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "-endorseddirs": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						Iterable<? extends File> iterable = getLocation(StandardLocation.PLATFORM_CLASS_PATH);
+						setLocation(StandardLocation.PLATFORM_CLASS_PATH, 
+								prependFiles(iterable, getEndorsedDirsFrom(remaining.next())));
+						this.flags |= EclipseFileManager.HAS_ENDORSED_DIRS;
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "-d": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> outputDir = getOutputDir(remaining.next());
+						if (outputDir != null) {
+							setLocation(StandardLocation.CLASS_OUTPUT, outputDir);
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "-s": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> outputDir = getOutputDir(remaining.next());
+						if (outputDir != null) {
+							setLocation(StandardLocation.SOURCE_OUTPUT, outputDir);
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "-processorpath": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> processorpaths = getPathsFrom(remaining.next());
+						if (processorpaths != null) {
+							setLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH, processorpaths);
+						}
+						this.flags |= EclipseFileManager.HAS_PROCESSORPATH;
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
+				case "--processor-module-path": //$NON-NLS-1$
+					if (remaining.hasNext()) {
+						final Iterable<? extends File> processorpaths = getPathsFrom(remaining.next());
+						if (processorpaths != null && this.isOnJvm9) {
+							setLocation(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH, processorpaths);
+							this.flags |= EclipseFileManager.HAS_PROC_MODULEPATH;
+						}
+						return true;
+					} else {
+						throw new IllegalArgumentException();
+					}
 			}
 		} catch (IOException e) {
 			// ignore
@@ -689,7 +826,12 @@
 	 */
 	@Override
 	public boolean hasLocation(Location location) {
-		return this.locations != null && this.locations.containsKey(location.getName());
+		try {
+			return getLocationForModule(location, "") != null; //$NON-NLS-1$
+		} catch (IOException e) {
+			// nothing to do
+		}
+		return false;
 	}
 
 	/* (non-Javadoc)
@@ -697,6 +839,7 @@
 	 */
 	@Override
 	public String inferBinaryName(Location location, JavaFileObject file) {
+		validateNonModuleLocation(location);
 		String name = file.getName();
 		JavaFileObject javaFileObject = null;
 		int index = name.lastIndexOf('.');
@@ -745,7 +888,7 @@
 	@Override
 	public Iterable<JavaFileObject> list(Location location, String packageName, Set<Kind> kinds, boolean recurse)
 			throws IOException {
-		
+		validateNonModuleLocation(location);
 		Iterable<? extends File> allFilesInLocations = getLocation(location);
 		if (allFilesInLocations == null) {
 			throw new IllegalArgumentException("Unknown location : " + location);//$NON-NLS-1$
@@ -754,7 +897,7 @@
 		ArrayList<JavaFileObject> collector = new ArrayList<>();
 		String normalizedPackageName = normalized(packageName);
 		for (File file : allFilesInLocations) {
-			collectAllMatchingFiles(file, normalizedPackageName, kinds, recurse, collector);
+			collectAllMatchingFiles(location, file, normalizedPackageName, kinds, recurse, collector);
 		}
 		return collector;
 	}
@@ -785,26 +928,26 @@
 		}
 		return list;
 	}
-
+	private boolean isRunningJvm9() {
+		return (SourceVersion.latest().compareTo(SourceVersion.RELEASE_8) > 0);
+	}
 	/* (non-Javadoc)
 	 * @see javax.tools.StandardJavaFileManager#setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable)
 	 */
 	@Override
-	public void setLocation(Location location, Iterable<? extends File> path) throws IOException {
-		if (path != null) {
-			if (location.isOutputLocation()) {
-				// output location
-				int count = 0;
-				for (Iterator<? extends File> iterator = path.iterator(); iterator.hasNext(); ) {
-					iterator.next();
-					count++;
-				}
-				if (count != 1) {
-					throw new IllegalArgumentException("output location can only have one path");//$NON-NLS-1$
-				}
+	public void setLocation(Location location, Iterable<? extends File> files) throws IOException {
+		if (location.isOutputLocation()) {
+			// output location
+			int count = 0;
+			for (Iterator<? extends File> iterator = files.iterator(); iterator.hasNext(); ) {
+				iterator.next();
+				count++;
 			}
-			this.locations.put(location.getName(), path);
+			if (count != 1) {
+				throw new IllegalArgumentException("output location can only have one path");//$NON-NLS-1$
+			}
 		}
+		this.locationHandler.setLocation(location, "", getPaths(files)); //$NON-NLS-1$
 	}
 	
 	public void setLocale(Locale locale) {
@@ -1093,4 +1236,226 @@
 		}
 		return MessageFormat.format(message, (Object[]) arguments);
 	}
+	private Iterable<? extends File> getFiles(final Iterable<? extends Path> paths) {
+		if (paths == null)
+			return null;
+		return () -> new Iterator<File>() {
+			Iterator<? extends Path> original = paths.iterator();
+			@Override
+			public boolean hasNext() {
+				return this.original.hasNext();
+			}
+			@Override
+			public File next() {
+				return this.original.next().toFile();
+			}
+		};
+	}
+	private Iterable<? extends Path> getPaths(final Iterable<? extends File> files) {
+		if (files == null)
+			return null;
+		return () -> new Iterator<Path>() {
+			Iterator<? extends File> original = files.iterator();
+			@Override
+			public boolean hasNext() {
+				return this.original.hasNext();
+			}
+			@Override
+			public Path next() {
+				return this.original.next().toPath();
+			}
+		};
+	}
+
+	private void validateFileObject(FileObject file) {
+		// FIXME: fill-up
+	}
+	private void validateModuleLocation(Location location, String modName) {
+		Objects.requireNonNull(location);
+		if (modName == null) {
+			throw new IllegalArgumentException("module must not be null"); //$NON-NLS-1$
+		}
+		if (this.isOnJvm9) {
+			if (!location.isModuleOrientedLocation() && !location.isOutputLocation()) {
+				throw new IllegalArgumentException("location is module related :" + location.getName()); //$NON-NLS-1$
+			}
+		}
+	}
+	private void validateNonModuleLocation(Location location) {
+		Objects.requireNonNull(location);
+		if (this.isOnJvm9) {
+			if (location.isModuleOrientedLocation() && location.isOutputLocation()) {
+				throw new IllegalArgumentException("location is module related :" + location.getName()); //$NON-NLS-1$
+			}
+		}
+	}
+	private void validateOutputLocation(Location location) {
+		Objects.requireNonNull(location);
+		if (!location.isOutputLocation()) {
+			throw new IllegalArgumentException("location is not output location :" + location.getName()); //$NON-NLS-1$
+		}
+	}
+	@Override
+	public Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
+		return getJavaFileObjectsFromPaths(Arrays.asList(paths));
+	}
+
+	@Override
+	public Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths) {
+		return getJavaFileObjectsFromFiles(getFiles(paths));
+	}
+
+	@Override
+	public Iterable<? extends Path> getLocationAsPaths(Location location) {
+		if (location instanceof LocationWrapper) {
+			return ((LocationWrapper) location).paths;
+		}
+		LocationWrapper loc = this.locationHandler.getLocation(location);
+		if (loc == null) {
+			return null;
+		}
+		return loc.getPaths();
+	}
+
+	@Override
+	public void setLocationFromPaths(Location location, Collection<? extends Path> paths) throws IOException {
+		setLocation(location, getFiles(paths));
+		if (location == StandardLocation.MODULE_PATH) { 
+			// FIXME: same for module source path?
+			Map<String, String> options = new HashMap<>();
+			// FIXME: Find a way to get the options from the EclipseCompiler and pass it to the parser.
+			// FIXME: need to be the latest and not hardcoded value
+			options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_9);
+			options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_9);
+			options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+			CompilerOptions compilerOptions = new CompilerOptions(options);
+			ProblemReporter problemReporter = 
+					new ProblemReporter(
+						DefaultErrorHandlingPolicies.proceedWithAllProblems(),
+						compilerOptions,
+						new DefaultProblemFactory());
+			for (Path path : paths) {
+				List<Classpath> mp = ModuleFinder.findModules(path.toFile(), null, 
+						new Parser(problemReporter, true), null, true);
+				for (Classpath cp : mp) {
+					Collection<String> moduleNames = cp.getModuleNames(null);
+					for (String string : moduleNames) {
+						Path p = Paths.get(cp.getPath());
+						setLocationForModule(StandardLocation.MODULE_PATH, string,  Collections.singletonList(p));
+					}
+				}
+			}
+		}
+	}
+
+	@Override
+	public boolean contains(Location location, FileObject fo) throws IOException {
+		validateFileObject(fo);
+		Iterable<? extends File> files = getLocation(location);
+		if (files == null) {
+			throw new IllegalArgumentException("Unknown location : " + location);//$NON-NLS-1$
+		}
+		for (File file : files) {
+			if (file.isDirectory()) {
+				if (fo instanceof EclipseFileObject) {
+					Path filepath = ((EclipseFileObject) fo).f.toPath();
+					if (filepath.startsWith(Paths.get(file.toURI()).toAbsolutePath())) {
+						return true;
+					}
+				}
+			} else if (isArchive(file)) {
+				if (fo instanceof ArchiveFileObject) {
+					Archive archive = getArchive(file);
+					if (archive != Archive.UNKNOWN_ARCHIVE) {
+						if (archive.contains(((ArchiveFileObject) fo ).entryName)) {
+							return true;
+						}
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	@Override
+	public Location getLocationForModule(Location location, String moduleName) throws IOException {
+		validateModuleLocation(location, moduleName);
+		return this.locationHandler.getLocation(location, moduleName);
+	}
+
+	@Override
+	public Location getLocationForModule(Location location, JavaFileObject fo) {
+		validateModuleLocation(location, ""); //$NON-NLS-1$
+		Path path = null;
+		if (fo instanceof ArchiveFileObject) {
+			path = ((ArchiveFileObject) fo).file.toPath();
+			return this.locationHandler.getLocation(location, path);
+		} else if (fo instanceof EclipseFileObject) {
+			path = ((EclipseFileObject) fo).f.toPath();
+			try {
+				path = path.toRealPath();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			LocationContainer container = this.locationHandler.getLocation(location);
+			while (path != null) {
+				Location loc = container.get(path);
+				if (loc != null)
+					return loc;
+				path = path.getParent();
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public <S> ServiceLoader<S> getServiceLoader(Location location, Class<S> service) throws IOException {
+		// FIXME: Need special handling in case of module class loaders.
+		return ServiceLoader.load(service, getClassLoader(location));
+	}
+
+	@Override
+	public String inferModuleName(Location location) throws IOException {
+		if (location instanceof ModuleLocationWrapper) {
+			ModuleLocationWrapper wrapper = (ModuleLocationWrapper) location;
+			return wrapper.modName;
+		}
+		return null;
+	}
+
+	@Override
+	public Iterable<Set<Location>> listLocationsForModules(Location location) {
+		validateModuleLocation(location, ""); //$NON-NLS-1$
+		return this.locationHandler.listLocationsForModules(location);
+	}
+
+	@Override
+	public Path asPath(FileObject file) {
+		validateFileObject(file);
+		EclipseFileObject eclFile = (EclipseFileObject) file;
+		if (eclFile.f != null) {
+			return eclFile.f.toPath();
+		}
+		return null;
+	}
+
+	@Override
+	public void setLocationForModule(Location location, String moduleName, Collection<? extends Path> paths) throws IOException {
+		validateModuleLocation(location, moduleName);
+		this.locationHandler.setLocation(location, moduleName, paths);
+		if (location == StandardLocation.MODULE_SOURCE_PATH) {
+			LocationWrapper wrapper = this.locationHandler.getLocation(StandardLocation.CLASS_OUTPUT, moduleName);
+			if (wrapper == null) {
+				wrapper = this.locationHandler.getLocation(StandardLocation.CLASS_OUTPUT, ""); //$NON-NLS-1$
+				if (wrapper != null) {
+					Iterator<? extends Path> iterator = wrapper.paths.iterator();
+					if (iterator.hasNext()) {
+						// Per module output location is always a singleton list
+						Path path = iterator.next().resolve(moduleName);
+						this.locationHandler.setLocation(StandardLocation.CLASS_OUTPUT, moduleName, Collections.singletonList(path));
+					}
+				}
+			}
+		}
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.java
index f2c5856..c6e1da2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileObject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,7 +37,7 @@
  * Implementation of a Java file object that corresponds to a file on the file system
  */
 public class EclipseFileObject extends SimpleJavaFileObject {
-	private File f;
+	File f;
 	private Charset charset;
 	private boolean parentsExist; // parent directories exist
 	
@@ -51,6 +51,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.JavaFileObject#getAccessLevel()
 	 */
+	@Override
 	public Modifier getAccessLevel() {
 		// cannot express multiple modifier
 		if (getKind() != Kind.CLASS) {
@@ -83,6 +84,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.JavaFileObject#getNestingKind()
 	 */
+	@Override
 	public NestingKind getNestingKind() {
 		switch(kind) {
 			case SOURCE :
@@ -117,10 +119,12 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#delete()
 	 */
+	@Override
 	public boolean delete() {
 		return this.f.delete();
 	}
 	
+	@Override
 	public boolean equals(Object o) {
 		if (!(o instanceof EclipseFileObject)) {
 			return false;
@@ -132,6 +136,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#getCharContent(boolean)
 	 */
+	@Override
 	public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
 		return Util.getCharContents(this, ignoreEncodingErrors, org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getFileByteContent(this.f), this.charset.name());
 	}
@@ -139,14 +144,17 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#getLastModified()
 	 */
+	@Override
 	public long getLastModified() {
 		return this.f.lastModified();
 	}
 
+	@Override
 	public String getName() {
         return this.f.getPath();
     }
     
+	@Override
 	public int hashCode() {
 		return f.hashCode();
 	}
@@ -154,6 +162,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#openInputStream()
 	 */
+	@Override
 	public InputStream openInputStream() throws IOException {
 		// TODO (olivier) should be used buffered input stream
 		return new FileInputStream(this.f);
@@ -162,6 +171,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#openOutputStream()
 	 */
+	@Override
 	public OutputStream openOutputStream() throws IOException {
 		ensureParentDirectoriesExist();
 		return new FileOutputStream(this.f);
@@ -170,6 +180,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#openReader(boolean)
 	 */
+	@Override
 	public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
 		return new FileReader(this.f);
 	}
@@ -177,6 +188,7 @@
 	/* (non-Javadoc)
 	 * @see javax.tools.FileObject#openWriter()
 	 */
+	@Override
 	public Writer openWriter() throws IOException {
 		ensureParentDirectoriesExist();
 		return new FileWriter(this.f);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java
new file mode 100644
index 0000000..f0fb9a9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/JrtFileSystem.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2017 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.apt.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.charset.Charset;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.zip.ZipException;
+
+import javax.tools.JavaFileObject;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.apt.util.ModuleLocationHandler.ModuleLocationWrapper;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+
+public class JrtFileSystem extends Archive {
+
+	private static URI JRT_URI = URI.create("jrt:/"); //$NON-NLS-1$
+	
+	static final String BOOT_MODULE = "jrt-fs.jar"; //$NON-NLS-1$
+	
+	public HashMap<String, Path> modulePathMap;
+	Path modules;
+	private java.nio.file.FileSystem jrtfs;
+	
+	public JrtFileSystem(File file) throws ZipException, IOException {
+		this.file = file;
+		initialize();
+	}
+	
+	public void initialize() throws IOException {
+		// initialize packages
+		this.modulePathMap = new HashMap<>();
+		URL jrtPath = null;
+
+		if (this.file.exists()) {
+			jrtPath = Paths.get(this.file.toPath().toString(), "lib", JRTUtil.JRT_FS_JAR).toUri().toURL(); //$NON-NLS-1$
+			try (URLClassLoader loader = new URLClassLoader(new URL[] { jrtPath })) {
+				HashMap<String, ?> env = new HashMap<>();
+				this.jrtfs = FileSystems.newFileSystem(JRT_URI, env, loader);
+				this.modules = this.jrtfs.getPath("/modules"); //$NON-NLS-1$
+			}
+		} else {
+			return;
+		}
+
+		org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(this.file,
+				new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<Path>() {
+
+			@Override
+			public FileVisitResult visitPackage(Path dir, Path mod, BasicFileAttributes attrs)
+					throws IOException {
+				return FileVisitResult.CONTINUE;
+			}
+
+			@Override
+			public FileVisitResult visitFile(Path f, Path mod, BasicFileAttributes attrs)
+					throws IOException {
+				return FileVisitResult.CONTINUE;
+			}
+
+			@Override
+			public FileVisitResult visitModule(Path mod) throws IOException {
+				JrtFileSystem.this.modulePathMap.put(mod.getFileName().toString(), mod);
+				return FileVisitResult.CONTINUE;
+			}
+		}, JRTUtil.NOTIFY_MODULES);
+	}
+
+	public List<JrtFileObject> list(ModuleLocationWrapper location, String packageName,
+			Set<JavaFileObject.Kind> kinds, boolean recurse, Charset charset) {
+    	String module = location.modName;
+    	Path mPath = this.modules.resolve(module);
+    	Path resolve = mPath.resolve(packageName);
+    	java.util.List<Path> files = null;
+        try (Stream<Path> p = Files.list(resolve)) {
+            files = p.filter((path) -> {
+            	if (Files.isDirectory(path))
+            		return false;
+            	else 
+            		return true;
+            }).collect(Collectors.toList());
+        } catch (IOException e) {
+        	// ignore
+        }
+        List<JrtFileObject> result = new ArrayList<>();
+        for (Path p: files) {
+        	result.add(new JrtFileObject(this.file, p, module, charset));
+        }
+        return result;
+    }
+	@Override
+	public ArchiveFileObject getArchiveFileObject(String fileName, String module, Charset charset) {
+		return new JrtFileObject(this.file, this.modules.resolve(module).resolve(fileName), module, charset);
+	}
+
+	@Override
+	public boolean contains(String entryName) {
+		// FIXME
+		return false;
+	}
+
+	@Override
+	public String toString() {
+		return "JRT: " + (this.file == null ? "UNKNOWN_ARCHIVE" : this.file.getAbsolutePath()); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	
+	class JrtFileObject extends ArchiveFileObject {
+		String module;
+		Path path;
+		private JrtFileObject(File file, Path path, String module, Charset charset) {
+			super(file, path.toString(), charset);
+			this.path = path;
+		}
+
+		@Override
+		protected void finalize() throws Throwable {
+			// Nothing to do here
+		}
+
+		@Override
+		protected ClassFileReader getClassReader() {
+			ClassFileReader reader = null;
+			try {
+				byte[] content = JRTUtil.getClassfileContent(this.file, this.entryName, this.module);
+				if (content == null) return null;
+				return new ClassFileReader(content, this.entryName.toCharArray());
+			} catch (ClassFormatException e) {
+				e.printStackTrace();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			return reader;
+		}
+		
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#getCharContent(boolean)
+		 */
+		@Override
+		public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
+			try {
+				return Util.getCharContents(this, ignoreEncodingErrors,
+						org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.getClassfileContent(this.file, this.entryName, this.module),
+						this.charset.name());
+			} catch (ClassFormatException e) {
+				e.printStackTrace();
+				return null;
+			}
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#getLastModified()
+		 */
+		@Override
+		public long getLastModified() {
+			return 0;
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#getName()
+		 */
+		@Override
+		public String getName() {
+			return this.path.toString();
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#openInputStream()
+		 */
+		@Override
+		public InputStream openInputStream() throws IOException {
+			return Files.newInputStream(this.path);
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#openOutputStream()
+		 */
+		@Override
+		public OutputStream openOutputStream() throws IOException {
+			throw new UnsupportedOperationException();
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#openReader(boolean)
+		 */
+		@Override
+		public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
+			throw new UnsupportedOperationException();
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#openWriter()
+		 */
+		@Override
+		public Writer openWriter() throws IOException {
+			throw new UnsupportedOperationException();
+		}
+
+		/* (non-Javadoc)
+		 * @see javax.tools.FileObject#toUri()
+		 */
+		@Override
+		public URI toUri() {
+			try {
+				return new URI("JRT:" + this.file.toURI().getPath() + "!" + this.entryName); //$NON-NLS-1$//$NON-NLS-2$
+			} catch (URISyntaxException e) {
+				return null;
+			}
+		}
+
+
+		@Override
+		public String toString() {
+			return this.file.getAbsolutePath() + "[" + this.entryName + "]";//$NON-NLS-1$//$NON-NLS-2$
+		}	
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.java
index 011f01b..e1a55ec 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ManyToMany.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2015 BEA Systems, Inc.
+ * Copyright (c) 2006, 2017 BEA Systems, Inc.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
  * Contributors:
  *    wharley@bea.com - initial API and implementation 
  *                      (originally in org.aspectj.org.eclipse.jdt.apt.core)
+ *    IBM Corporation - Bug 513790
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.apt.util;
 
@@ -311,7 +312,7 @@
 	 * @see #keyHasOtherValues(Object, Object)
 	 */
 	public synchronized boolean valueHasOtherKeys(T2 value, T1 key) {
-		Set<T1> keys = _reverse.get(key);
+		Set<T1> keys = _reverse.get(value);
 		if (keys == null)
 			return false;
 		int size = keys.size();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.java
new file mode 100644
index 0000000..241fc5f
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/apt/util/ModuleLocationHandler.java
@@ -0,0 +1,246 @@
+package org.aspectj.org.eclipse.jdt.internal.compiler.apt.util;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.tools.JavaFileManager.Location;
+import javax.tools.StandardLocation;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.ClasspathJrt;
+
+public class ModuleLocationHandler {
+
+	Map<Location, LocationContainer> containers;
+
+	ModuleLocationHandler() {
+		this.containers = new HashMap<>();
+	}
+
+	public void newSystemLocation(Location loc, ClasspathJrt cp) throws IOException {
+		SystemLocationContainer systemLocationWrapper = new SystemLocationContainer(StandardLocation.SYSTEM_MODULES, cp);
+		this.containers.put(loc, systemLocationWrapper);
+	}
+	public void newSystemLocation(Location loc, JrtFileSystem jrt) throws IOException {
+		SystemLocationContainer systemLocationWrapper = new SystemLocationContainer(StandardLocation.SYSTEM_MODULES, jrt);
+		this.containers.put(loc, systemLocationWrapper);
+	}
+
+	public LocationWrapper getLocation(Location loc, String moduleName) {
+		if (loc instanceof LocationWrapper) {
+			loc = ((LocationWrapper) loc).loc;
+		}
+		LocationContainer forwarder = this.containers.get(loc);
+		if (forwarder != null) {
+			return forwarder.get(moduleName);
+		}
+		return null;
+	}
+
+	public Location getLocation(Location loc, Path path) {
+		LocationContainer forwarder = this.containers.get(loc);
+		if (forwarder != null) {
+			return forwarder.get(path);
+		}
+		return null;
+	}
+	public LocationContainer getLocation(Location location) {
+		return this.containers.get(location);
+	}
+	public void setLocation(Location location, Iterable<? extends Path> paths) {
+		LocationContainer container = this.containers.get(location);
+		if (container == null) {
+			container = new LocationContainer(location);
+			this.containers.put(location, container);
+		}
+		container.setPaths(paths);
+	}
+	public void setLocation(Location location, String moduleName, Iterable<? extends Path> paths) {
+		LocationWrapper wrapper = null;
+		LocationContainer container = this.containers.get(location);
+		if (container != null) {
+			wrapper = container.get(moduleName);
+		} else {
+			container = new LocationContainer(location);
+			this.containers.put(location, container);
+		}
+		if (wrapper == null) {
+			// module name can't be null
+			// TODO: Check unnamed modules can have their own module specific path - probably not
+			if (moduleName.equals("")) { //$NON-NLS-1$
+				wrapper = new LocationWrapper(location, location.isOutputLocation(), paths);
+			} else {
+				wrapper = new ModuleLocationWrapper(location, moduleName, location.isOutputLocation(), paths);
+				for (Path path : paths) {
+					container.put(path, wrapper);
+				}
+			}
+		} else {
+			wrapper.setPaths(paths);
+		}
+		container.put(moduleName, wrapper);
+	}
+	public Iterable<Set<Location>> listLocationsForModules(Location location) {
+		LocationContainer locationContainer = this.containers.get(location);
+		if (locationContainer == null) {
+			return Collections.emptyList();
+		}
+		Set<Location> set = new HashSet<>(locationContainer.locationNames.values());
+		List<Set<Location>> singletonList = Collections.singletonList(set);
+		return singletonList;
+	}
+
+	class LocationContainer extends LocationWrapper {
+
+		Map<String, LocationWrapper> locationNames;
+		Map<Path, LocationWrapper> locationPaths;
+		LocationContainer(Location loc) {
+			super();
+			this.loc = loc;
+			this.locationNames = new HashMap<>();
+			this.locationPaths = new HashMap<>();
+		}
+
+		LocationWrapper get(String moduleName) {
+			return this.locationNames.get(moduleName);
+		}
+
+		void put(String moduleName, LocationWrapper impl) {
+			this.locationNames.put(moduleName, impl);
+			this.paths = null;
+		}
+
+		void put(Path path, LocationWrapper impl) {
+			this.locationPaths.put(path, impl);
+			this.paths = null;
+		}
+
+		Location get(Path path) {
+			return this.locationPaths.get(path);
+		}
+
+		@Override
+		void setPaths(Iterable<? extends Path> paths) {
+			 super.setPaths(paths);
+			 this.clear();
+		 }
+		@Override
+		Iterable<? extends Path> getPaths() {
+			if (this.paths != null)
+				return this.paths;
+			return this.locationPaths.keySet();
+		}
+
+		public void clear() {
+			this.locationNames.clear();
+			this.locationPaths.clear();
+		}
+	}
+
+	class SystemLocationContainer extends LocationContainer {
+
+		public SystemLocationContainer(Location loc, JrtFileSystem jrt) throws IOException {
+			super(loc);
+			jrt.initialize();
+			HashMap<String, Path> modulePathMap = jrt.modulePathMap;
+			Set<String> keySet = modulePathMap.keySet();
+			for (String mod : keySet) {
+				Path path = jrt.file.toPath();
+				ModuleLocationWrapper wrapper = new ModuleLocationWrapper(loc, mod, false,
+						Collections.singletonList(path));
+				this.locationNames.put(mod, wrapper);
+				this.locationPaths.put(path, wrapper);
+			}
+		}
+		public SystemLocationContainer(Location loc, ClasspathJrt cp) throws IOException {
+			this(loc, new JrtFileSystem(cp.file));
+		}
+	}
+
+	class LocationWrapper implements Location {
+
+		Location loc;
+		boolean output;
+		List<? extends Path> paths;
+		LocationWrapper() {
+		}
+		public LocationWrapper(Location loc, boolean output, Iterable<? extends Path> paths) {
+			this.loc = loc;
+			this.output = output;
+			setPaths(paths);
+		}
+
+		@Override
+		public String getName() {
+			return this.loc.getName();
+		}
+
+		@Override
+		public boolean isOutputLocation() {
+			return this.output;
+		}
+
+		Iterable<? extends Path> getPaths() {
+			return this.paths;
+		}
+
+		void setPaths(Iterable<? extends Path> paths) {
+			if (paths == null) {
+				this.paths = null;
+			} else {
+				List<Path> newPaths = new ArrayList<>();
+				for (Path file : paths) {
+					newPaths.add(file);
+				}
+				this.paths = Collections.unmodifiableList(newPaths);
+			}
+		}
+
+		@Override
+		public String toString() {
+			return this.loc.toString() + "[]"; //$NON-NLS-1$
+		}
+	}
+
+	class ModuleLocationWrapper extends LocationWrapper {
+		String modName;
+
+		public ModuleLocationWrapper(Location loc, String mod, boolean output, Iterable<? extends Path> paths) {
+			super(loc, output, paths);
+			this.modName = mod;
+		}
+
+		@Override
+		public String getName() {
+			return this.loc.getName() + "[" + this.modName + "]"; //$NON-NLS-1$//$NON-NLS-2$
+		}
+
+		@Override
+		public boolean isOutputLocation() {
+			return this.output;
+		}
+
+		@Override
+		Iterable<? extends Path> getPaths() {
+			return this.paths;
+		}
+
+		@Override
+		public String toString() {
+			return this.loc.toString() + "[" + this.modName + "]"; //$NON-NLS-1$//$NON-NLS-2$
+		}
+	}
+	public void close() {
+		Collection<LocationContainer> values = this.containers.values();
+		for (LocationContainer locationContainer : values) {
+			locationContainer.clear();
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.java
index 78b760e..532ab5b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AND_AND_Expression.java
@@ -31,6 +31,7 @@
 		super(left, right, operator);
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 		Constant cst = this.left.optimizedBooleanConstant();
@@ -83,6 +84,7 @@
 	/**
 	 * Code generation for a binary operation
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 
 		int pc = codeStream.position;
@@ -183,6 +185,7 @@
 	/**
 	 * Boolean operator code generation Optimized operations are: &&
 	 */
+	@Override
 	public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 
 		if (this.constant != Constant.NotAConstant) {
@@ -266,6 +269,7 @@
 		}
 	}
 
+	@Override
 	public boolean isCompactableOperation() {
 		return false;
 	}
@@ -273,6 +277,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.BinaryExpression#resolveType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		TypeBinding result = super.resolveType(scope);
 		// check whether comparing identical expressions
@@ -284,6 +289,7 @@
 		return result;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			this.left.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
index f6b124a..0d8e244 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ASTNode.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -61,9 +62,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InferenceContext18;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -104,7 +108,7 @@
 	public final static int Bit20 = 0x80000;			// contains syntax errors (method declaration, type declaration, field declarations, initializer), typeref: <> name ref: lambda capture)
 	public final static int Bit21 = 0x100000;
 	public final static int Bit22 = 0x200000;			// parenthesis count (expression) | used (import reference) shadows outer local (local declarations)
-	public final static int Bit23 = 0x400000;			// parenthesis count (expression)
+	public final static int Bit23 = 0x400000;			// parenthesis count (expression) | second or later declarator in declaration (local declarations)
 	public final static int Bit24 = 0x800000;			// parenthesis count (expression)
 	public final static int Bit25 = 0x1000000;		// parenthesis count (expression)
 	public final static int Bit26 = 0x2000000;		// parenthesis count (expression)
@@ -174,6 +178,7 @@
 	public static final int IsLocalDeclarationReachable = Bit31;
 	public static final int IsForeachElementVariable = Bit5;
 	public static final int ShadowsOuterLocal = Bit22;
+	public static final int IsAdditionalDeclarator = Bit23;
 
 	// for name refs or local decls
 	public static final int FirstAssignmentToLocal = Bit4;
@@ -284,6 +289,7 @@
 	// for import reference
 	public static final int OnDemand = Bit18;
 	public static final int Used = Bit2;
+	public static final int inModule = Bit19;
 
 	// for parameterized qualified/single type ref
 	public static final int DidResolve = Bit19;
@@ -470,8 +476,10 @@
 		}
 
 		if ((field.modifiers & ExtraCompilerModifiers.AccRestrictedAccess) != 0) {
+			ModuleBinding module = field.declaringClass.module();
+			LookupEnvironment env = (module == null) ? scope.environment() : module.environment;
 			AccessRestriction restriction =
-				scope.environment().getAccessRestriction(field.declaringClass.erasure());
+				env.getAccessRestriction(field.declaringClass.erasure());
 			if (restriction != null) {
 				scope.problemReporter().forbiddenReference(field, this,
 						restriction.classpathEntryType, restriction.classpathEntryName,
@@ -515,8 +523,10 @@
 		if (isExplicitUse && (method.modifiers & ExtraCompilerModifiers.AccRestrictedAccess) != 0) {
 			// note: explicit constructors calls warnings are kept despite the 'new C1()' case (two
 			//       warnings, one on type, the other on constructor), because of the 'super()' case.
+			ModuleBinding module = method.declaringClass.module();
+			LookupEnvironment env = (module == null) ? scope.environment() : module.environment;
 			AccessRestriction restriction =
-				scope.environment().getAccessRestriction(method.declaringClass.erasure());
+				env.getAccessRestriction(method.declaringClass.erasure());
 			if (restriction != null) {
 				scope.problemReporter().forbiddenReference(method, this,
 						restriction.classpathEntryType, restriction.classpathEntryName,
@@ -583,7 +593,9 @@
 		}
 
 		if (refType.hasRestrictedAccess()) {
-			AccessRestriction restriction = scope.environment().getAccessRestriction(type.erasure());
+			ModuleBinding module = refType.module();
+			LookupEnvironment env = (module == null) ? scope.environment() : module.environment;
+			AccessRestriction restriction = env.getAccessRestriction(type.erasure());
 			if (restriction != null) {
 				scope.problemReporter().forbiddenReference(type, this, restriction.classpathEntryType,
 						restriction.classpathEntryName, restriction.getProblemId());
@@ -702,6 +714,11 @@
 				}
 			}
 		}
+		if (method instanceof ParameterizedGenericMethodBinding) {
+			InferenceContext18 ic18 = invocation.getInferenceContext((ParameterizedMethodBinding) method);
+			if (ic18 != null)
+				ic18.flushBoundOutbox(); // overload resolution is done, now perform the push of bounds from inner to outer
+		}
 	}
 
 	public static void resolveAnnotations(BlockScope scope, Annotation[] sourceAnnotations, Binding recipient) {
@@ -732,7 +749,7 @@
 					type.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
 					if (length > 0) {
 						annotations = new AnnotationBinding[length];
-						type.setAnnotations(annotations);
+						type.setAnnotations(annotations, false);
 					}
 					break;
 				case Binding.METHOD :
@@ -741,7 +758,7 @@
 					method.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
 					if (length > 0) {
 						annotations = new AnnotationBinding[length];
-						method.setAnnotations(annotations);
+						method.setAnnotations(annotations, false);
 					}
 					break;
 				case Binding.FIELD :
@@ -750,7 +767,7 @@
 					field.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
 					if (length > 0) {
 						annotations = new AnnotationBinding[length];
-						field.setAnnotations(annotations);
+						field.setAnnotations(annotations, false);
 					}
 					break;
 				case Binding.LOCAL :
@@ -759,7 +776,7 @@
 					local.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
 					if (length > 0) {
 						annotations = new AnnotationBinding[length];
-						local.setAnnotations(annotations, scope);
+						local.setAnnotations(annotations, scope, false);
 					}
 					break;
 				case Binding.TYPE_PARAMETER :
@@ -767,6 +784,15 @@
 					// deliberately don't set the annotation resolved tagbits, it is not material and also we are working with a dummy static object.
 					annotations = new AnnotationBinding[length];
 					break;
+				case Binding.MODULE:
+					ModuleBinding module = (ModuleBinding)recipient;
+					if ((module.tagBits & TagBits.AnnotationResolved) != 0) return annotations;
+					module.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
+					if (length > 0) {
+						annotations = new AnnotationBinding[length];
+						module.setAnnotations(annotations, scope, false);
+					}
+					break;
 				default :
 					return annotations;
 			}
@@ -837,22 +863,17 @@
 				return annotations;
 			} else {
 				annotation.recipient = recipient;
-				// AspectJ Extension - do not re-resolve (211052)
-				if (annotation.resolvedType==null)
-				// End AspectJ Extension
-					annotation.resolveType(scope);
-
+				// MERGECONFLICT:
+//				// AspectJ Extension - don't re-resolve (pr211052)
+//			    // old code:
+//			    // annotationTypes[i] = annotation.resolveType(scope);
+//			    // new code:
+//			    annotationTypes[i] =(annotation.resolvedType==null?annotation.resolveType(scope):annotation.resolvedType);
+//			    // End AspectJ Extension
+				if (annotation.resolvedType==null) 
+				annotation.resolveType(scope);
 				// null if receiver is a package binding
 				if (annotations != null) {
-					// AspectJ Extension - even if already resolved, set this compilerAnnotation if necessary (485448)
-					if (annotation.compilerAnnotation == null) {
-						try {
-						    annotation.compilerAnnotation = scope.environment().createAnnotation((ReferenceBinding) annotation.resolvedType, annotation.computeElementValuePairs());
-						} catch (Exception e) {
-							new RuntimeException("Unexpected problem initialization compiler annotation: ",e).printStackTrace();
-						}
-					}
-					// End AspectJ Extension
 					annotations[i] = annotation.getCompilerAnnotation();
 				}
 			}
@@ -951,6 +972,44 @@
 		return scope.environment().createAnnotatedType(type, annotationBindings);
 	}
 
+	/**
+	 * "early" handling of NonNullByDefault because for local variables annotations are resolved after their type because of bug
+	 * 96991.
+	 * @param localDeclaration 
+	 */
+	public static void handleNonNullByDefault(BlockScope scope, Annotation[] sourceAnnotations, LocalDeclaration localDeclaration) {
+		if (sourceAnnotations == null || sourceAnnotations.length == 0) {
+			return;
+		}
+		int length = sourceAnnotations.length;
+
+		int defaultNullness = 0;
+		Annotation lastNNBDAnnotation = null;
+		for (int i = 0; i < length; i++) {
+			Annotation annotation = sourceAnnotations[i];
+			long value = annotation.handleNonNullByDefault(scope);
+			if (value != 0) {
+				defaultNullness |= value;
+				lastNNBDAnnotation = annotation;
+			}
+		}
+		if (defaultNullness != 0) {
+			// the actual localDeclaration.binding is not set yet. fake one for problemreporter.
+			LocalVariableBinding binding = new LocalVariableBinding(localDeclaration, null, 0, false);
+			Binding target = scope.checkRedundantDefaultNullness(defaultNullness, localDeclaration.sourceStart);
+			boolean recorded = scope.recordNonNullByDefault(binding, defaultNullness, lastNNBDAnnotation,
+					lastNNBDAnnotation.sourceStart, localDeclaration.declarationSourceEnd);
+			if (recorded) {
+				if (target != null) {
+					scope.problemReporter().nullDefaultAnnotationIsRedundant(localDeclaration,
+							new Annotation[] { lastNNBDAnnotation }, target);
+				}
+			}
+		}
+	}
+
+
+	
 	// When SE8 annotations feature in SE7 locations, they get attributed to the declared entity. Copy/move these to the type of the declared entity (field, local, argument etc.)
 	public static void copySE8AnnotationsToType(BlockScope scope, Binding recipient, Annotation[] annotations, boolean annotatingEnumerator) {
 		
@@ -1065,7 +1124,7 @@
 			}
 			if (newLength != length) {
 				System.arraycopy(recipientAnnotations, 0, recipientAnnotations = new AnnotationBinding[newLength],  0, newLength);
-				recipient.setAnnotations(recipientAnnotations, scope);
+				recipient.setAnnotations(recipientAnnotations, scope, false);
 			}
 		}
 	}
@@ -1078,6 +1137,14 @@
 		
 		// for arrays: @T X[] SE7 associates @T to the type, but in SE8 it affects the leaf component type
 		TypeBinding oldLeafType = (unionRef == null) ? existingType.leafComponentType() : unionRef.resolvedType;
+		if (se8nullBits != 0) {
+			if (typeRef instanceof ArrayTypeReference) { // NOTE: no corresponding code for ArrayQualifiedTypeReference is necessary
+				ArrayTypeReference arrayTypeReference = (ArrayTypeReference) typeRef;
+				if(arrayTypeReference.leafComponentTypeWithoutDefaultNullness != null) {
+					oldLeafType=arrayTypeReference.leafComponentTypeWithoutDefaultNullness;
+				}
+			}
+		}
 		if (se8nullBits != 0 && oldLeafType.isBaseType()) {
 			scope.problemReporter().illegalAnnotationForBaseType(typeRef, new Annotation[] { se8NullAnnotation }, se8nullBits);
 			return existingType;
@@ -1148,28 +1215,38 @@
 					if (!CharOperation.equals(TypeConstants.JAVA_LANG_DEPRECATED[2], annotationTypeRef.getLastToken())) continue;
 					TypeBinding annotationType = annotations[i].type.resolveType(scope);
 					if(annotationType != null && annotationType.isValidBinding() && annotationType.id == TypeIds.T_JavaLangDeprecated) {
+						long deprecationTagBits = TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved;
+						if (scope.compilerOptions().complianceLevel >= ClassFileConstants.JDK9) {
+							for (MemberValuePair memberValuePair : annotations[i].memberValuePairs()) {
+								if (CharOperation.equals(memberValuePair.name, TypeConstants.FOR_REMOVAL)) {
+									if (memberValuePair.value instanceof TrueLiteral)
+										deprecationTagBits |= TagBits.AnnotationTerminallyDeprecated;
+									break;
+								}
+							}
+						}
 						switch (kind) {
 							case Binding.PACKAGE :
 								PackageBinding packageBinding = (PackageBinding) recipient;
-								packageBinding.tagBits |= (TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved);
+								packageBinding.tagBits |= deprecationTagBits;
 								return;
 							case Binding.TYPE :
 							case Binding.GENERIC_TYPE :
 							case Binding.TYPE_PARAMETER :
 								ReferenceBinding type = (ReferenceBinding) recipient;
-								type.tagBits |= (TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved);
+								type.tagBits |= deprecationTagBits;
 								return;
 							case Binding.METHOD :
 								MethodBinding method = (MethodBinding) recipient;
-								method.tagBits |= (TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved);
+								method.tagBits |= deprecationTagBits;
 								return;
 							case Binding.FIELD :
 								FieldBinding field = (FieldBinding) recipient;
-								field.tagBits |= (TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved);
+								field.tagBits |= deprecationTagBits;
 								return;
 							case Binding.LOCAL :
 								LocalVariableBinding local = (LocalVariableBinding) recipient;
-								local.tagBits |= (TagBits.AnnotationDeprecated | TagBits.DeprecatedAnnotationResolved);
+								local.tagBits |= deprecationTagBits;
 								return;
 							default:
 								return;
@@ -1223,6 +1300,7 @@
 	public int sourceEnd() {
 		return this.sourceEnd;
 	}
+	@Override
 	public String toString() {
 
 		return print(0, new StringBuffer(30)).toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java
index 8d94134..5a314da 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractMethodDeclaration.java
@@ -82,6 +82,7 @@
 	/*
 	 *	We cause the compilation task to abort to a given extent.
 	 */
+	@Override
 	public void abort(int abortLevel, CategorizedProblem problem) {
 
 		switch (abortLevel) {
@@ -237,6 +238,7 @@
 		}
 	}
 
+	@Override
 	public CompilationResult compilationResult() {
 
 		return this.compilationResult;
@@ -388,6 +390,7 @@
 		}
 	}
 
+	@Override
 	public CompilationUnitDeclaration getCompilationUnitDeclaration() {
 		if (this.scope != null) {
 			return this.scope.compilationUnitScope().referenceContext;
@@ -395,6 +398,7 @@
 		return null;
 	}
 
+	@Override
 	public boolean hasErrors() {
 		return this.ignoreFurtherInvestigation;
 	}
@@ -461,6 +465,7 @@
 	 */
 	public abstract void parseStatements(Parser parser, CompilationUnitDeclaration unit);
 
+	@Override
 	public StringBuffer print(int tab, StringBuffer output) {
 
 		if (this.javadoc != null) {
@@ -645,10 +650,12 @@
 		}
 	}
 
+	@Override
 	public void tagAsHavingErrors() {
 		this.ignoreFurtherInvestigation = true;
 	}
 	
+	@Override
 	public void tagAsHavingIgnoredMandatoryErrors(int problemId) {
 		// Nothing to do for this context;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
index fa2bc80..585ac73 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java
@@ -41,6 +41,7 @@
 
 	public TypeReference type;
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		return flowInfo;
 	}
@@ -56,6 +57,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
 	 */
+	@Override
 	public TypeBinding[] genericTypeArguments() {
 		return null;
 	}
@@ -65,24 +67,22 @@
 	 */
 	public abstract int getKind();
 
+	@Override
 	public InferenceContext18 freshInferenceContext(Scope scope) {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#isSuperAccess()
-	 */
+	@Override
 	public boolean isSuperAccess() {
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#isTypeAccess()
-	 */
+	@Override
 	public boolean isTypeAccess() {
 		return false;
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		printAsExpression(indent, output);
 		switch(getKind()) {
@@ -120,28 +120,23 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		// do nothing by default (redefined for local variables)
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#setActualReceiverType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding)
-	 */
+	@Override
 	public void setActualReceiverType(ReferenceBinding receiverType) {
 		// do nothing by default
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#setDepth(int)
-	 */
+	@Override
 	public void setDepth(int depth) {
 
 		this.hiddenVariableDepth = depth;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#setFieldIndex(int)
-	 */
+	@Override
 	public void setFieldIndex(int depth) {
 		// do nothing by default
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
index ebc0fdc..998a9b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
@@ -1,6 +1,6 @@
-// ASPECTJ
+//AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -90,6 +90,7 @@
 	public TypeBinding[] argumentTypes = Binding.NO_PARAMETERS;
 	public boolean argumentsHaveErrors = false;
 	
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// check captured variables are initialized in current context (26134)
 	checkCapturedLocalInitializationIfNecessary((ReferenceBinding)this.binding.declaringClass.erasure(), currentScope, flowInfo);
@@ -173,6 +174,7 @@
 	return null;
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	cleanUpInferenceContexts();
 	if (!valueRequired)
@@ -255,14 +257,17 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return this.genericTypeArguments;
 }
 
+@Override
 public boolean isSuperAccess() {
 	return false;
 }
 
+@Override
 public boolean isTypeAccess() {
 	return true;
 }
@@ -321,6 +326,7 @@
 	}
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	if (this.type != null) { // type null for enum constant initializations
 		output.append("new "); //$NON-NLS-1$
@@ -348,6 +354,7 @@
 	return output.append(')');
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Propagate the type checking to the arguments, and check if the constructor is defined.
 	final boolean isDiamond = this.type != null && (this.type.bits & ASTNode.IsDiamond) != 0;
@@ -361,130 +368,138 @@
 		} else {
 			this.resolvedType = this.type.resolveType(scope, true /* check bounds*/);
 		}
-		if (this.type != null) {
-			checkIllegalNullAnnotation(scope, this.resolvedType);
-			checkParameterizedAllocation: {
-				if (this.type instanceof ParameterizedQualifiedTypeReference) { // disallow new X<String>.Y<Integer>()
-					ReferenceBinding currentType = (ReferenceBinding)this.resolvedType;
-					if (currentType == null) return currentType;
-					do {
-						// isStatic() is answering true for toplevel types
-						if ((currentType.modifiers & ClassFileConstants.AccStatic) != 0) break checkParameterizedAllocation;
-						if (currentType.isRawType()) break checkParameterizedAllocation;
-					} while ((currentType = currentType.enclosingType())!= null);
-					ParameterizedQualifiedTypeReference qRef = (ParameterizedQualifiedTypeReference) this.type;
-					for (int i = qRef.typeArguments.length - 2; i >= 0; i--) {
-						if (qRef.typeArguments[i] != null) {
-							scope.problemReporter().illegalQualifiedParameterizedTypeAllocation(this.type, this.resolvedType);
-							break;
-						}
+	if (this.type != null) {
+		checkIllegalNullAnnotation(scope, this.resolvedType);
+		checkParameterizedAllocation: {
+			if (this.type instanceof ParameterizedQualifiedTypeReference) { // disallow new X<String>.Y<Integer>()
+				ReferenceBinding currentType = (ReferenceBinding)this.resolvedType;
+				if (currentType == null) return currentType;
+				do {
+					// isStatic() is answering true for toplevel types
+					if ((currentType.modifiers & ClassFileConstants.AccStatic) != 0) break checkParameterizedAllocation;
+					if (currentType.isRawType()) break checkParameterizedAllocation;
+				} while ((currentType = currentType.enclosingType())!= null);
+				ParameterizedQualifiedTypeReference qRef = (ParameterizedQualifiedTypeReference) this.type;
+				for (int i = qRef.typeArguments.length - 2; i >= 0; i--) {
+					if (qRef.typeArguments[i] != null) {
+						scope.problemReporter().illegalQualifiedParameterizedTypeAllocation(this.type, this.resolvedType);
+						break;
 					}
 				}
 			}
 		}
-		// will check for null after args are resolved
+	}
+	// will check for null after args are resolved
 
-		// resolve type arguments (for generic constructor call)
-		if (this.typeArguments != null) {
-			int length = this.typeArguments.length;
+	// resolve type arguments (for generic constructor call)
+	if (this.typeArguments != null) {
+		int length = this.typeArguments.length;
 			this.argumentsHaveErrors = sourceLevel < ClassFileConstants.JDK1_5;
-			this.genericTypeArguments = new TypeBinding[length];
-			for (int i = 0; i < length; i++) {
-				TypeReference typeReference = this.typeArguments[i];
-				if ((this.genericTypeArguments[i] = typeReference.resolveType(scope, true /* check bounds*/)) == null) {
+		this.genericTypeArguments = new TypeBinding[length];
+		for (int i = 0; i < length; i++) {
+			TypeReference typeReference = this.typeArguments[i];
+			if ((this.genericTypeArguments[i] = typeReference.resolveType(scope, true /* check bounds*/)) == null) {
 					this.argumentsHaveErrors = true;
-				}
+			}
 				if (this.argumentsHaveErrors && typeReference instanceof Wildcard) {
-					scope.problemReporter().illegalUsageOfWildcard(typeReference);
-				}
-			}
-			if (isDiamond) {
-				scope.problemReporter().diamondNotWithExplicitTypeArguments(this.typeArguments);
-				return null;
-			}
-			if (this.argumentsHaveErrors) {
-				if (this.arguments != null) { // still attempt to resolve arguments
-					for (int i = 0, max = this.arguments.length; i < max; i++) {
-						this.arguments[i].resolveType(scope);
-					}
-				}
-				return null;
+				scope.problemReporter().illegalUsageOfWildcard(typeReference);
 			}
 		}
-
-		// buffering the arguments' types
-		if (this.arguments != null) {
-			this.argumentsHaveErrors = false;
-			int length = this.arguments.length;
-			this.argumentTypes = new TypeBinding[length];
-			for (int i = 0; i < length; i++) {
-				Expression argument = this.arguments[i];
-				if (argument instanceof CastExpression) {
-					argument.bits |= DisableUnnecessaryCastCheck; // will check later on
-					this.argsContainCast = true;
-				}
-				argument.setExpressionContext(INVOCATION_CONTEXT);
-				if (this.arguments[i].resolvedType != null) 
-					scope.problemReporter().genericInferenceError("Argument was unexpectedly found resolved", this); //$NON-NLS-1$
-				if ((this.argumentTypes[i] = argument.resolveType(scope)) == null) {
-					this.argumentsHaveErrors = true;
-				}
-			}
-			if (this.argumentsHaveErrors) {
-				/* https://bugs.eclipse.org/bugs/show_bug.cgi?id=345359, if arguments have errors, completely bail out in the <> case.
-			   No meaningful type resolution is possible since inference of the elided types is fully tied to argument types. Do
-			   not return the partially resolved type.
-				 */
-				if (isDiamond) {
-					return null; // not the partially cooked this.resolvedType
-				}
-				if (this.resolvedType instanceof ReferenceBinding) {
-					// record a best guess, for clients who need hint about possible constructor match
-					TypeBinding[] pseudoArgs = new TypeBinding[length];
-					for (int i = length; --i >= 0;) {
-						pseudoArgs[i] = this.argumentTypes[i] == null ? TypeBinding.NULL : this.argumentTypes[i]; // replace args with errors with null type
-					}
-					this.binding = scope.findMethod((ReferenceBinding) this.resolvedType, TypeConstants.INIT, pseudoArgs, this, false);
-					if (this.binding != null && !this.binding.isValidBinding()) {
-						MethodBinding closestMatch = ((ProblemMethodBinding)this.binding).closestMatch;
-						// record the closest match, for clients who may still need hint about possible method match
-						if (closestMatch != null) {
-							if (closestMatch.original().typeVariables != Binding.NO_TYPE_VARIABLES) { // generic method
-								// shouldn't return generic method outside its context, rather convert it to raw method (175409)
-								closestMatch = scope.environment().createParameterizedGenericMethod(closestMatch.original(), (RawTypeBinding)null);
-							}
-							this.binding = closestMatch;
-							MethodBinding closestMatchOriginal = closestMatch.original();
-							if (closestMatchOriginal.isOrEnclosedByPrivateType() && !scope.isDefinedInMethod(closestMatchOriginal)) {
-								// ignore cases where method is used from within inside itself (e.g. direct recursions)
-								closestMatchOriginal.modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
-							}
-						}
-					}
-				}
-				return this.resolvedType;
-			}
-		}
-		if (this.resolvedType == null || !this.resolvedType.isValidBinding()) {
+		if (isDiamond) {
+			scope.problemReporter().diamondNotWithExplicitTypeArguments(this.typeArguments);
 			return null;
 		}
+		if (this.argumentsHaveErrors) {
+			if (this.arguments != null) { // still attempt to resolve arguments
+				for (int i = 0, max = this.arguments.length; i < max; i++) {
+					this.arguments[i].resolveType(scope);
+				}
+			}
+			return null;
+		}
+	}
 
-		// null type denotes fake allocation for enum constant inits
-		if (this.type != null && !this.resolvedType.canBeInstantiated()) {
-			scope.problemReporter().cannotInstantiate(this.type, this.resolvedType);
+	// buffering the arguments' types
+	if (this.arguments != null) {
+		this.argumentsHaveErrors = false;
+		int length = this.arguments.length;
+		this.argumentTypes = new TypeBinding[length];
+		for (int i = 0; i < length; i++) {
+			Expression argument = this.arguments[i];
+			if (argument instanceof CastExpression) {
+				argument.bits |= DisableUnnecessaryCastCheck; // will check later on
+				this.argsContainCast = true;
+			}
+			argument.setExpressionContext(INVOCATION_CONTEXT);
+			if (this.arguments[i].resolvedType != null) 
+				scope.problemReporter().genericInferenceError("Argument was unexpectedly found resolved", this); //$NON-NLS-1$
+				if ((this.argumentTypes[i] = argument.resolveType(scope)) == null) {
+					this.argumentsHaveErrors = true;
+			}
+		}
+		if (this.argumentsHaveErrors) {
+			/* https://bugs.eclipse.org/bugs/show_bug.cgi?id=345359, if arguments have errors, completely bail out in the <> case.
+			   No meaningful type resolution is possible since inference of the elided types is fully tied to argument types. Do
+			   not return the partially resolved type.
+			 */
+			if (isDiamond) {
+				return null; // not the partially cooked this.resolvedType
+			}
+			if (this.resolvedType instanceof ReferenceBinding) {
+				// record a best guess, for clients who need hint about possible constructor match
+				TypeBinding[] pseudoArgs = new TypeBinding[length];
+				for (int i = length; --i >= 0;) {
+					pseudoArgs[i] = this.argumentTypes[i] == null ? TypeBinding.NULL : this.argumentTypes[i]; // replace args with errors with null type
+				}
+				this.binding = scope.findMethod((ReferenceBinding) this.resolvedType, TypeConstants.INIT, pseudoArgs, this, false);
+				if (this.binding != null && !this.binding.isValidBinding()) {
+					MethodBinding closestMatch = ((ProblemMethodBinding)this.binding).closestMatch;
+					// record the closest match, for clients who may still need hint about possible method match
+					if (closestMatch != null) {
+						if (closestMatch.original().typeVariables != Binding.NO_TYPE_VARIABLES) { // generic method
+							// shouldn't return generic method outside its context, rather convert it to raw method (175409)
+							closestMatch = scope.environment().createParameterizedGenericMethod(closestMatch.original(), (RawTypeBinding)null);
+						}
+						this.binding = closestMatch;
+						MethodBinding closestMatchOriginal = closestMatch.original();
+						if (closestMatchOriginal.isOrEnclosedByPrivateType() && !scope.isDefinedInMethod(closestMatchOriginal)) {
+							// ignore cases where method is used from within inside itself (e.g. direct recursions)
+							closestMatchOriginal.modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
+						}
+					}
+				}
+			}
 			return this.resolvedType;
 		}
-	} 
+	}
+	if (this.resolvedType == null || !this.resolvedType.isValidBinding()) {
+		return null;
+	}
+
+	// null type denotes fake allocation for enum constant inits
+	if (this.type != null && !this.resolvedType.canBeInstantiated()) {
+		scope.problemReporter().cannotInstantiate(this.type, this.resolvedType);
+		return this.resolvedType;
+	}
+		}
 	if (isDiamond) {
 		this.binding = inferConstructorOfElidedParameterizedType(scope);
 		if (this.binding == null || !this.binding.isValidBinding()) {
 			scope.problemReporter().cannotInferElidedTypes(this);
 			return this.resolvedType = null;
-		}
+ 	}
 		if (this.typeExpected == null && compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8 && this.expressionContext.definesTargetType()) {
 			return new PolyTypeBinding(this);
-		}
+}
 		this.resolvedType = this.type.resolvedType = this.binding.declaringClass;
+		// 15.9.3 - If the compile-time declaration is applicable by variable arity invocation...
+		if (this.binding.isVarargs()) {
+			TypeBinding lastArg = this.binding.parameters[this.binding.parameters.length - 1].leafComponentType();
+			if (!lastArg.erasure().canBeSeenBy(scope)) {
+				scope.problemReporter().invalidType(this, new ProblemReferenceBinding(new char[][] {lastArg.readableName()}, (ReferenceBinding)lastArg, ProblemReasons.NotVisible));
+				return this.resolvedType = null;
+			}
+		}
 		resolvePolyExpressionArguments(this, this.binding, this.argumentTypes, scope);
 	} else {
 		this.binding = findConstructorBinding(scope, this, (ReferenceBinding) this.resolvedType, this.argumentTypes);
@@ -515,17 +530,14 @@
  		checkTypeArgumentRedundancy((ParameterizedTypeBinding) this.resolvedType, scope);
  	}
 	if (compilerOptions.isAnnotationBasedNullAnalysisEnabled) {
-		if ((this.binding.tagBits & TagBits.IsNullnessKnown) == 0) {
-			new ImplicitNullAnnotationVerifier(scope.environment(), compilerOptions.inheritNullAnnotations)
-					.checkImplicitNullAnnotations(this.binding, null/*srcMethod*/, false, scope);
-		}
+		ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(this.binding, scope);
 		if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8) {
 			if (this.binding instanceof ParameterizedGenericMethodBinding && this.typeArguments != null) {
 				TypeVariableBinding[] typeVariables = this.binding.original().typeVariables();
 				for (int i = 0; i < this.typeArguments.length; i++)
 					this.typeArguments[i].checkNullConstraints(scope, (ParameterizedGenericMethodBinding) this.binding, typeVariables, i);
 			}
-		}
+}
 	}
 	if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8 &&
 			this.binding.getTypeAnnotations() != Binding.NO_ANNOTATIONS) {
@@ -550,10 +562,12 @@
 }
 
 // For allocation expressions, boxing compatibility is same as vanilla compatibility, since java.lang's wrapper types are not generic.
+@Override
 public boolean isBoxingCompatibleWith(TypeBinding targetType, Scope scope) {
 	return isPolyExpression() ? false : isCompatibleWith(scope.boxing(targetType), scope);
 }
 
+@Override
 public boolean isCompatibleWith(TypeBinding targetType, final Scope scope) {
 	if (this.argumentsHaveErrors || this.binding == null || !this.binding.isValidBinding() || targetType == null || scope == null)
 		return false;
@@ -613,22 +627,29 @@
 		if (constructorTypeArguments.length > 0)
 			System.arraycopy(((ParameterizedGenericMethodBinding)factory).typeArguments, sfmb.typeVariables().length - constructorTypeArguments.length , 
 												constructorTypeArguments, 0, constructorTypeArguments.length);
-		return sfmb.applyTypeArgumentsOnConstructor(((ParameterizedTypeBinding)factory.returnType).arguments, constructorTypeArguments, genericFactory.inferredWithUncheckedConversion);
+		if (allocationType.isInterface()) {
+			ParameterizedTypeBinding parameterizedType = (ParameterizedTypeBinding) factory.returnType;
+			return new ParameterizedMethodBinding(parameterizedType, sfmb.getConstructor());
+		}
+		return sfmb.applyTypeArgumentsOnConstructor(((ParameterizedTypeBinding)factory.returnType).arguments, constructorTypeArguments, genericFactory.inferredWithUncheckedConversion, site.invocationTargetType());
 	}
 	return null;
 }
 
 public TypeBinding[] inferElidedTypes(final Scope scope) {
+	return inferElidedTypes((ParameterizedTypeBinding) this.resolvedType, scope);
+}
+public TypeBinding[] inferElidedTypes(ParameterizedTypeBinding parameterizedType, final Scope scope) {
 	
-	ReferenceBinding genericType = ((ParameterizedTypeBinding) this.resolvedType).genericType();
-	ReferenceBinding enclosingType = this.resolvedType.enclosingType();
+	ReferenceBinding genericType = parameterizedType.genericType();
+	ReferenceBinding enclosingType = parameterizedType.enclosingType();
 	ParameterizedTypeBinding allocationType = scope.environment().createParameterizedType(genericType, genericType.typeVariables(), enclosingType);
 	
 	/* Given the allocation type and the arguments to the constructor, see if we can synthesize a generic static factory
 	   method that would, given the argument types and the invocation site, manufacture a parameterized object of type allocationType.
 	   If we are successful then by design and construction, the parameterization of the return type of the factory method is identical
 	   to the types elided in the <>.
-	*/
+	 */   
 	MethodBinding factory = scope.getStaticFactory(allocationType, enclosingType, this.argumentTypes, this);
 	if (factory instanceof ParameterizedGenericMethodBinding && factory.isValidBinding()) {
 		ParameterizedGenericMethodBinding genericFactory = (ParameterizedGenericMethodBinding) factory;
@@ -665,7 +686,7 @@
 		// checking for redundant type parameters must fake a diamond, 
 		// so we infer the same results as we would get with a diamond in source code:
 		this.type.bits |= IsDiamond;
-		inferredTypes = inferElidedTypes(scope);
+		inferredTypes = inferElidedTypes(allocationType, scope);
 	} finally {
 		// reset effects of inference
 		this.type.bits = previousBits;
@@ -680,18 +701,22 @@
 	scope.problemReporter().redundantSpecificationOfTypeArguments(this.type, allocationType.arguments);
 }
 
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	// ignored
 }
 
+@Override
 public void setDepth(int i) {
 	// ignored
 }
 
+@Override
 public void setFieldIndex(int i) {
 	// ignored
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		if (this.typeArguments != null) {
@@ -712,17 +737,21 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#setExpectedType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void setExpectedType(TypeBinding expectedType) {
 	this.typeExpected = expectedType;
 }
 
+@Override
 public void setExpressionContext(ExpressionContext context) {
 	this.expressionContext = context;
 }
 
+@Override
 public boolean isPolyExpression() {
 	return isPolyExpression(this.binding);
 }
+@Override
 public boolean isPolyExpression(MethodBinding method) {
 	return (this.expressionContext == ASSIGNMENT_CONTEXT || this.expressionContext == INVOCATION_CONTEXT) &&
 			this.type != null && (this.type.bits & ASTNode.IsDiamond) != 0;
@@ -731,27 +760,32 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#invocationTargetType()
  */
+@Override
 public TypeBinding invocationTargetType() {
 	return this.typeExpected;
 }
 
+@Override
 public boolean statementExpression() {
 	return ((this.bits & ASTNode.ParenthesizedMASK) == 0);
 }
 
 //-- interface Invocation: --
+@Override
 public MethodBinding binding() {
 	return this.binding;
 }
+@Override
 public Expression[] arguments() {
 	return this.arguments;
 }
 
+@Override
 public void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18) {
 	if (this.inferenceContexts == null)
 		this.inferenceContexts = new SimpleLookupTable();
 	this.inferenceContexts.put(method, infCtx18);
-}
+	}
 
 @Override
 public void registerResult(TypeBinding targetType, MethodBinding method) {
@@ -759,9 +793,10 @@
 		if (this.solutionsPerTargetType == null)
 			this.solutionsPerTargetType = new HashMap<>();
 		this.solutionsPerTargetType.put(targetType, method);
-	}
+}
 }
 
+@Override
 public InferenceContext18 getInferenceContext(ParameterizedMethodBinding method) {
 	if (this.inferenceContexts == null)
 		return null;
@@ -781,10 +816,12 @@
 }
 
 //-- interface InvocationSite: --
+@Override
 public ExpressionContext getExpressionContext() {
 	return this.expressionContext;
 }
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return new InferenceContext18(scope, this.arguments, this, this.outerInferenceContext);
 }
-}
\ No newline at end of file
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.java
index ed662a9..095210f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Annotation.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contributions for
@@ -143,30 +143,37 @@
 				}
 				return false; // if annotation is not found in the type reference, it must be one from SE7 location, typePathEntries captures the proper path entries for them. 
 			}	
+			@Override
 			public boolean visit(SingleTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 			
+			@Override
 			public boolean visit(ArrayTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 			
+			@Override
 			public boolean visit(ParameterizedSingleTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 
+			@Override
 			public boolean visit(QualifiedTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 			
+			@Override
 			public boolean visit(ArrayQualifiedTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 			
+			@Override
 			public boolean visit(ParameterizedQualifiedTypeReference typeReference, BlockScope scope) {
 				return visit((TypeReference) typeReference, scope);
 			}
 			
+			@Override
 			public boolean visit(Wildcard typeReference, BlockScope scope) {
 				visit((TypeReference) typeReference, scope);
 				if (this.continueSearch) {
@@ -182,6 +189,7 @@
 				return false;
 			}
 
+			@Override
 			public boolean visit(ArrayAllocationExpression allocationExpression, BlockScope scope) {
 				if (this.continueSearch) {
 					inspectArrayDimensions(allocationExpression.getAnnotationsOnDimensions(), allocationExpression.dimensions.length);
@@ -193,6 +201,7 @@
 				return false;
 			}
 						
+			@Override
 			public String toString() {
 				StringBuffer buffer = new StringBuffer();
 				buffer
@@ -286,6 +295,8 @@
 			case 'M' :
 				if (CharOperation.equals(elementName, TypeConstants.UPPER_METHOD))
 					return TagBits.AnnotationForMethod;
+				else if (CharOperation.equals(elementName, TypeConstants.UPPER_MODULE))
+					return TagBits.AnnotationForModule;
 				break;
 			case 'P' :
 				if (CharOperation.equals(elementName, TypeConstants.UPPER_PARAMETER))
@@ -320,13 +331,11 @@
 			case TypeIds.T_JavaLangAnnotationRetention :
 				if (valueAttribute != null) {
 					Expression expr = valueAttribute.value;
-					if ((expr.bits & Binding.VARIABLE) == Binding.FIELD) {
-						if (expr instanceof Reference) { // New AspectJ Extension (pr148537)
+					if ((expr.bits & Binding.VARIABLE) == Binding.FIELD && expr instanceof Reference) { // anything but Reference would be a type error anyway
 						FieldBinding field = ((Reference)expr).fieldBinding();
 						if (field != null && field.declaringClass.id == T_JavaLangAnnotationRetentionPolicy) {
 							tagBits |= getRetentionPolicy(field.name);
 						}
-						} // New AspectJ Extension - end of if()
 					}
 				}
 				break;
@@ -365,6 +374,15 @@
 			// marker annotations
 			case TypeIds.T_JavaLangDeprecated :
 				tagBits |= TagBits.AnnotationDeprecated;
+				if (scope.compilerOptions().complianceLevel >= ClassFileConstants.JDK9) {
+					for (MemberValuePair memberValuePair : memberValuePairs()) {
+						if (CharOperation.equals(memberValuePair.name, TypeConstants.FOR_REMOVAL)) {
+							if (memberValuePair.value instanceof TrueLiteral)
+								tagBits |= TagBits.AnnotationTerminallyDeprecated;
+							break;
+						}
+					}
+				}
 				break;
 			case TypeIds.T_JavaLangAnnotationDocumented :
 				tagBits |= TagBits.AnnotationDocumented;
@@ -396,29 +414,40 @@
 		} else if (annotationType.hasNullBit(TypeIds.BitNonNullAnnotation)) {
 			tagBits |= TagBits.AnnotationNonNull;
 		} else if (annotationType.hasNullBit(TypeIds.BitNonNullByDefaultAnnotation)) {
-			Object value = null;
-			if (valueAttribute != null) {
-				if (valueAttribute.compilerElementPair != null)
-					value = valueAttribute.compilerElementPair.value;
-			} else { // fetch default value  - TODO: cache it?
-				MethodBinding[] methods = annotationType.methods();
-				if (methods != null && methods.length == 1)
-					value = methods[0].getDefaultValue();
-				else
-					tagBits |= TagBits.AnnotationNonNullByDefault; // custom unconfigurable NNBD
-			}
-			if (value instanceof BooleanConstant) {
-				// boolean value is used for declaration annotations, signal using the annotation tag bit:
-				tagBits |= ((BooleanConstant)value).booleanValue() ? TagBits.AnnotationNonNullByDefault : TagBits.AnnotationNullUnspecifiedByDefault;
-			} else if (value != null) {
-				// non-boolean value signals type annotations, evaluate from DefaultLocation[] to bitvector a la Binding#NullnessDefaultMASK:
-				tagBits |= nullLocationBitsFromAnnotationValue(value);
-			}
+			tagBits |= determineNonNullByDefaultTagBits(annotationType, valueAttribute);
 		}
 		
 		return tagBits;
 	}
 
+	private long determineNonNullByDefaultTagBits(ReferenceBinding annotationType, MemberValuePair valueAttribute) {
+		long tagBits = 0;
+		Object value = null;
+		if (valueAttribute != null) {
+			if (valueAttribute.compilerElementPair != null)
+				value = valueAttribute.compilerElementPair.value;
+		} else { // fetch default value  - TODO: cache it?
+			MethodBinding[] methods = annotationType.methods();
+			if (methods != null && methods.length == 1)
+				value = methods[0].getDefaultValue();
+			else
+				tagBits |= Binding.DefaultLocationsForTrueValue; // custom unconfigurable NNBD
+		}
+		if (value instanceof BooleanConstant) {
+			// boolean value is used for declaration annotations, signal using the annotation tag bit:
+			tagBits |= ((BooleanConstant)value).booleanValue() ? Binding.DefaultLocationsForTrueValue : Binding.NULL_UNSPECIFIED_BY_DEFAULT;
+		} else if (value != null) {
+			// non-boolean value signals type annotations, evaluate from DefaultLocation[] to bitvector a la Binding#NullnessDefaultMASK:
+			tagBits |= nullLocationBitsFromAnnotationValue(value);
+		} else {
+			int result = BinaryTypeBinding.evaluateTypeQualifierDefault(annotationType);
+			if(result != 0) {
+				return result;
+			}
+		}
+		return tagBits;
+	}
+
 	/**
 	 * Convert the value() attribute of @NonNullByDefault into a bitvector a la {@link Binding#NullnessDefaultMASK}.
 	 * This method understands value encodings from source and binary types.
@@ -449,7 +478,7 @@
 		} else if (value instanceof ElementValuePair.UnresolvedEnumConstant) {
 			name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
 		} else if (value instanceof BooleanConstant) {
-			return ((BooleanConstant)value).booleanValue() ? Binding.NONNULL_BY_DEFAULT : Binding.NULL_UNSPECIFIED_BY_DEFAULT;
+			return ((BooleanConstant)value).booleanValue() ? Binding.DefaultLocationsForTrueValue : Binding.NULL_UNSPECIFIED_BY_DEFAULT;
 		}
 		if (name != null) {
 			switch (name.length) {
@@ -484,6 +513,50 @@
 		return 0;
 	}
 	
+	public static int nullLocationBitsFromElementTypeAnnotationValue(Object value) {
+		if (value instanceof Object[]) {
+			if (((Object[]) value).length == 0) {					// ({})
+				return Binding.NULL_UNSPECIFIED_BY_DEFAULT;
+			} else {												// ({vals...})
+				int bits = 0;
+				for (Object single : (Object[])value)
+					bits |= evaluateElementTypeNullnessLocation(single);
+				return bits;
+			}
+		} else {													// (val)
+			return evaluateElementTypeNullnessLocation(value);
+		}
+	}
+
+	private static int evaluateElementTypeNullnessLocation(Object value) {
+		char[] name = null;
+		if (value instanceof FieldBinding) {
+			name = ((FieldBinding) value).name;
+		} else if (value instanceof EnumConstantSignature) {
+			name = ((EnumConstantSignature) value).getEnumConstantName();
+		} else if (value instanceof ElementValuePair.UnresolvedEnumConstant) {
+			name = ((ElementValuePair.UnresolvedEnumConstant) value).getEnumConstantName();
+		}
+		if (name != null) {
+			switch (name.length) {
+				case 5:
+					if (CharOperation.equals(name, TypeConstants.UPPER_FIELD))
+						return Binding.DefaultLocationField;
+					break;
+				case 6:
+					if (CharOperation.equals(name, TypeConstants.UPPER_METHOD))
+						return Binding.DefaultLocationReturnType;
+					break;
+				case 9:
+					if (CharOperation.equals(name, TypeConstants.UPPER_PARAMETER))
+						return Binding.DefaultLocationParameter;
+					break;
+			}
+		}
+		return 0;
+	}
+
+	
 	static String getRetentionName(long tagBits) {
 		if ((tagBits & TagBits.AnnotationRuntimeRetention) == TagBits.AnnotationRuntimeRetention) {
 			// TagBits.AnnotationRuntimeRetention combines both TagBits.AnnotationClassRetention & TagBits.AnnotationSourceRetention
@@ -611,6 +684,7 @@
 					}
 					this.targetBuffer.append(targetName);
 				}
+				@Override
 				public String toString() {
 					return this.targetBuffer.toString();
 				}
@@ -630,6 +704,7 @@
 			builder.check(TagBits.AnnotationForPackage, TypeConstants.UPPER_PACKAGE);
 			builder.check(TagBits.AnnotationForTypeParameter, TypeConstants.TYPE_PARAMETER_TARGET);
 			builder.check(TagBits.AnnotationForTypeUse, TypeConstants.TYPE_USE_TARGET);
+			builder.check(TagBits.AnnotationForModule, TypeConstants.UPPER_MODULE);
 			if (builder.hasError()) {
 				repeatableAnnotationType.tagAsHavingDefectiveContainerType();
 				scope.problemReporter().repeatableAnnotationTypeTargetMismatch(culpritNode, repeatableAnnotationType, containerType, builder.toString());
@@ -732,6 +807,7 @@
 
 	public abstract MemberValuePair[] memberValuePairs();
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append('@');
 		this.type.printExpression(0, output);
@@ -785,17 +861,24 @@
 		}
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		if (this.compilerAnnotation != null)
 			return this.resolvedType;
 		this.constant = Constant.NotAConstant;
 
-		TypeBinding typeBinding = this.type.resolveType(scope);
-		if (typeBinding == null) {
-			return null;
+		TypeBinding typeBinding;
+		if (this.resolvedType == null) {
+			typeBinding = this.type.resolveType(scope);
+			if (typeBinding == null) {
+				this.resolvedType = new ProblemReferenceBinding(this.type.getTypeName(), null, ProblemReasons.NotFound);
+				return null;
+			}
+			this.resolvedType = typeBinding;
+		} else {
+			typeBinding = this.resolvedType;
 		}
-		this.resolvedType = typeBinding;
 		// ensure type refers to an annotation type
 		if (!typeBinding.isAnnotationType() && typeBinding.isValidBinding()) {
 			scope.problemReporter().notAnnotationType(typeBinding, this.type);
@@ -867,12 +950,15 @@
 				pairs[i].resolveTypeExpecting(scope, null); // resilient
 			}
 		}
-//		if (scope.compilerOptions().storeAnnotations)
 		this.compilerAnnotation = scope.environment().createAnnotation((ReferenceBinding) this.resolvedType, computeElementValuePairs());
 		// recognize standard annotations ?
 		long tagBits = detectStandardAnnotation(scope, annotationType, valueAttribute);
 		int defaultNullness = (int)(tagBits & Binding.NullnessDefaultMASK);
 		tagBits &= ~Binding.NullnessDefaultMASK;
+		CompilerOptions compilerOptions = scope.compilerOptions();
+		if ((tagBits & TagBits.AnnotationDeprecated) != 0 && compilerOptions.complianceLevel >= ClassFileConstants.JDK9 && !compilerOptions.storeAnnotations) {
+			this.recipient.setAnnotations(new AnnotationBinding[] {this.compilerAnnotation}, true); // force storing enhanced deprecation
+		}
 
 		// record annotation positions in the compilation result
 		scope.referenceCompilationUnit().recordSuppressWarnings(IrritantSet.NLS, null, this.sourceStart, this.declarationSourceEnd, scope.referenceContext());
@@ -881,6 +967,15 @@
 			if (tagBits != 0 || defaultNullness != 0) {
 				// tag bits onto recipient
 				switch (kind) {
+					case Binding.MODULE :
+						SourceModuleBinding module = (SourceModuleBinding) this.recipient;
+						module.tagBits |= tagBits;
+						if ((tagBits & TagBits.AnnotationSuppressWarnings) != 0) {
+							ModuleDeclaration moduleDeclaration =  module.scope.referenceContext.moduleDeclaration;
+							recordSuppressWarnings(scope, 0, moduleDeclaration.declarationSourceEnd, compilerOptions.suppressWarnings);
+						}
+						module.defaultNullness |= defaultNullness;
+						break;
 					case Binding.PACKAGE :
 						((PackageBinding)this.recipient).tagBits |= tagBits;
 						break;
@@ -897,7 +992,7 @@
 							} else {
 								start = typeDeclaration.declarationSourceStart;
 							}
-							recordSuppressWarnings(scope, start, typeDeclaration.declarationSourceEnd, scope.compilerOptions().suppressWarnings);
+							recordSuppressWarnings(scope, start, typeDeclaration.declarationSourceEnd, compilerOptions.suppressWarnings);
 						}
 						sourceType.defaultNullness |= defaultNullness;
 						break;
@@ -907,7 +1002,7 @@
 						if ((tagBits & TagBits.AnnotationSuppressWarnings) != 0) {
 							sourceType = (SourceTypeBinding) sourceMethod.declaringClass;
 							AbstractMethodDeclaration methodDeclaration = sourceType.scope.referenceContext.declarationOf(sourceMethod);
-							recordSuppressWarnings(scope, methodDeclaration.declarationSourceStart, methodDeclaration.declarationSourceEnd, scope.compilerOptions().suppressWarnings);
+							recordSuppressWarnings(scope, methodDeclaration.declarationSourceStart, methodDeclaration.declarationSourceEnd, compilerOptions.suppressWarnings);
 						}
 						long nullBits = sourceMethod.tagBits & TagBits.AnnotationNullMASK;
 						if (nullBits == TagBits.AnnotationNullMASK) {
@@ -915,7 +1010,7 @@
 							sourceMethod.tagBits &= ~TagBits.AnnotationNullMASK; // avoid secondary problems
 						}
 						if (nullBits != 0 && sourceMethod.isConstructor()) {
-							if (scope.compilerOptions().sourceLevel >= ClassFileConstants.JDK1_8)
+							if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8)
 								scope.problemReporter().nullAnnotationUnsupportedLocation(this);
 							// for declaration annotations the inapplicability will be reported below
 							sourceMethod.tagBits &= ~TagBits.AnnotationNullMASK;
@@ -928,7 +1023,20 @@
 						if ((tagBits & TagBits.AnnotationSuppressWarnings) != 0) {
 							sourceType = (SourceTypeBinding) sourceField.declaringClass;
 							FieldDeclaration fieldDeclaration = sourceType.scope.referenceContext.declarationOf(sourceField);
-							recordSuppressWarnings(scope, fieldDeclaration.declarationSourceStart, fieldDeclaration.declarationSourceEnd, scope.compilerOptions().suppressWarnings);
+							recordSuppressWarnings(scope, fieldDeclaration.declarationSourceStart, fieldDeclaration.declarationSourceEnd, compilerOptions.suppressWarnings);
+						}
+						if (defaultNullness != 0) {
+							sourceType = (SourceTypeBinding) sourceField.declaringClass;
+							FieldDeclaration fieldDeclaration = sourceType.scope.referenceContext.declarationOf(sourceField);
+							// test merged value of defaultNullness contributed by this annotation and previous annotations on same target is redundant w.r.t. containing value
+							// (for targets other than fields the resulting value is tested only once after processing all annotations, but this is hard to do for fields)
+							Binding target = scope.parent.checkRedundantDefaultNullness(
+									defaultNullness | scope.localNonNullByDefaultValue(fieldDeclaration.sourceStart),
+									fieldDeclaration.sourceStart);
+							scope.recordNonNullByDefault(fieldDeclaration.binding, defaultNullness, this, fieldDeclaration.declarationSourceStart, fieldDeclaration.declarationSourceEnd);
+							if (target != null) {
+								scope.problemReporter().nullDefaultAnnotationIsRedundant(fieldDeclaration, new Annotation[]{this}, target);
+							}
 						}
 						// fields don't yet have their type resolved, in 1.8 null annotations
 						// will be transfered from the field to its type during STB.resolveTypeFor().
@@ -946,8 +1054,9 @@
 						}
 						if ((tagBits & TagBits.AnnotationSuppressWarnings) != 0) {
 							LocalDeclaration localDeclaration = variable.declaration;
-							recordSuppressWarnings(scope, localDeclaration.declarationSourceStart, localDeclaration.declarationSourceEnd, scope.compilerOptions().suppressWarnings);
+							recordSuppressWarnings(scope, localDeclaration.declarationSourceStart, localDeclaration.declarationSourceEnd, compilerOptions.suppressWarnings);
 						}
+						// note: defaultNullness for local declarations has been already been handled earlier by handleNonNullByDefault() 
 						break;
 				}
 			} 
@@ -961,6 +1070,52 @@
 		return this.resolvedType;
 	}
 
+	public long handleNonNullByDefault(BlockScope scope) {
+		TypeBinding typeBinding = this.resolvedType;
+		if (typeBinding == null) {
+			typeBinding = this.type.resolveType(scope);
+			if (typeBinding == null) {
+				return 0;
+			}
+			this.resolvedType = typeBinding;
+		}
+		if (!typeBinding.isAnnotationType()) {
+			return 0;
+		}
+
+		ReferenceBinding annotationType = (ReferenceBinding) typeBinding;
+		
+		if (!annotationType.hasNullBit(TypeIds.BitNonNullByDefaultAnnotation)) {
+			return 0;
+		}
+
+		MethodBinding[] methods = annotationType.methods();
+		// clone valuePairs to keep track of unused ones
+		MemberValuePair[] pairs = memberValuePairs();
+		MemberValuePair valueAttribute = null; // remember the first 'value' pair
+		int pairsLength = pairs.length;
+
+		for (int i = 0, requiredLength = methods.length; i < requiredLength; i++) {
+			MethodBinding method = methods[i];
+			char[] selector = method.selector;
+			nextPair: for (int j = 0; j < pairsLength; j++) {
+				MemberValuePair pair = pairs[j];
+				if (pair == null) continue nextPair;
+				char[] name = pair.name;
+				if (CharOperation.equals(name, selector)) {
+					if (valueAttribute == null && CharOperation.equals(name, TypeConstants.VALUE)) {
+						valueAttribute = pair;
+						pair.binding = method;
+						pair.resolveTypeExpecting(scope, method.returnType);
+					}
+				}
+			}
+		}
+		// recognize standard annotations ?
+		long tagBits = determineNonNullByDefaultTagBits(annotationType, valueAttribute);
+		return (int) (tagBits & Binding.NullnessDefaultMASK);
+	}
+	
 	public enum AnnotationTargetAllowed {
 		YES, TYPE_ANNOTATION_ON_QUALIFIED_NAME, NO;
 	}
@@ -1044,7 +1199,9 @@
 				} else if ((annotationType.tagBits & TagBits.AnnotationForLocalVariable) != 0) {
 					return AnnotationTargetAllowed.YES;
 				} else if ((metaTagBits & TagBits.AnnotationForTypeUse) != 0) {
-					if (isTypeUseCompatible(localVariableBinding.declaration.type, scope)) {
+					if (localVariableBinding.declaration.isTypeNameVar(scope)) {
+						return AnnotationTargetAllowed.NO;
+					} else if (isTypeUseCompatible(localVariableBinding.declaration.type, scope)) {
 						return AnnotationTargetAllowed.YES;
 					} else {
 						return AnnotationTargetAllowed.TYPE_ANNOTATION_ON_QUALIFIED_NAME;
@@ -1056,6 +1213,12 @@
 				if ((metaTagBits & (TagBits.AnnotationForTypeParameter | TagBits.AnnotationForTypeUse)) != 0) {
 					return AnnotationTargetAllowed.YES;
 				}
+				break;
+			case Binding.MODULE:
+				if ((metaTagBits & (TagBits.AnnotationForModule)) != 0) {
+					return AnnotationTargetAllowed.YES;
+				}
+				break;
 		}
 		return AnnotationTargetAllowed.NO;
 	}
@@ -1073,6 +1236,8 @@
 		long metaTagBits = annotationType.getAnnotationTagBits(); // could be forward reference
 		if ((metaTagBits & TagBits.AnnotationTargetMASK) == 0) {
 			// does not specify any target restriction - all locations supported in Java 7 and before are possible
+			// TBD - revisit for modules - as per 9.6.4.1, annotation without target is applicable for module declaration
+			// which is listed as a declaration context, but javac does not allow this
 			if (kind == Binding.TYPE_PARAMETER || kind == Binding.TYPE_USE) {
 				scope.problemReporter().explitAnnotationTargetRequired(annotation);
 			}
@@ -1192,8 +1357,10 @@
 		return this.resolvedType instanceof ReferenceBinding && ((ReferenceBinding) this.resolvedType).hasNullBit(bit);
 	}
 
+	@Override
 	public abstract void traverse(ASTVisitor visitor, BlockScope scope);
 
+	@Override
 	public abstract void traverse(ASTVisitor visitor, ClassScope scope);
 
 	public Annotation getPersistibleAnnotation() {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.java
index a33775a..bc85783 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AnnotationMethodDeclaration.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -29,6 +29,7 @@
 		super(compilationResult);
 	}
 
+	@Override
 	public void generateCode(ClassFile classFile) {
 		classFile.generateMethodInfoHeader(this.binding);
 		int methodAttributeOffset = classFile.contentsOffset;
@@ -36,21 +37,25 @@
 		classFile.completeMethodInfo(this.binding, methodAttributeOffset, attributeNumber);
 	}
 
+	@Override
 	public boolean isAnnotationMethod() {
 
 		return true;
 	}
 
+	@Override
 	public boolean isMethod() {
 
 		return false;
 	}
 
+	@Override
 	public void parseStatements(Parser parser, CompilationUnitDeclaration unit) {
 		// nothing to do
 		// annotation type member declaration don't have any body
 	}
 
+	@Override
 	public StringBuffer print(int tab, StringBuffer output) {
 
 		printIndent(tab, output);
@@ -97,10 +102,11 @@
 		return output;
 	}
 
+	@Override
 	public void resolveStatements() {
 
 		super.resolveStatements();
-		if (this.arguments != null) {
+		if (this.arguments != null || this.receiver != null) {
 			this.scope.problemReporter().annotationMembersCannotHaveParameters(this);
 		}
 		if (this.typeParameters != null) {
@@ -147,6 +153,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		ClassScope classScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.java
index f4048ae..c53e95d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Argument.java
@@ -121,10 +121,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return (this.bits & ASTNode.IsArgument) != 0 ? PARAMETER : LOCAL_VARIABLE;
 	}
 
+	@Override
 	public boolean isArgument() {
 		return true;
 	}
@@ -143,6 +145,7 @@
 				(this.type != null && this.type.hasNullTypeAnnotation(position)); // just in case
 	}
 
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		printIndent(indent, output);
@@ -160,6 +163,7 @@
 		return output.append(this.name);
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 
 		return print(indent, output).append(';');
@@ -225,6 +229,7 @@
 		return exceptionType;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 		if (visitor.visit(this, scope)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.java
index 3983caa..8a6f338 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayAllocationExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,6 +39,7 @@
 	public Annotation [][] annotationsOnDimensions; // jsr308 style annotations.
 	public ArrayInitializer initializer;
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		for (int i = 0, max = this.dimensions.length; i < max; i++) {
 			Expression dim;
@@ -58,6 +59,7 @@
 	/**
 	 * Code generation for a array allocation expression
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, 	CodeStream codeStream, boolean valueRequired) {
 
 		int pc = codeStream.position;
@@ -92,6 +94,7 @@
 	}
 
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("new "); //$NON-NLS-1$
 		this.type.print(0, output);
@@ -113,6 +116,7 @@
 		return output;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		// Build an array type reference using the current dimensions
 		// The parser does not check for the fact that dimension may be null
@@ -192,6 +196,7 @@
 
 			// check the initializer
 			if (this.initializer != null) {
+				this.resolvedType = ArrayTypeReference.maybeMarkArrayContentsNonNull(scope, this.resolvedType, this.sourceStart, this.dimensions.length, null);
 				if ((this.initializer.resolveTypeExpecting(scope, this.resolvedType)) != null)
 					this.initializer.binding = (ArrayBinding)this.resolvedType;
 			}
@@ -202,7 +207,7 @@
 		return this.resolvedType;
 	}
 
-
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			int dimensionsLength = this.dimensions.length;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.java
index 304bacc..47efb33 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayInitializer.java
@@ -41,6 +41,7 @@
 		super();
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 		if (this.expressions != null) {
@@ -61,6 +62,7 @@
 		return flowInfo;
 	}
 
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		generateCode(null, null, currentScope, codeStream, valueRequired);
 	}
@@ -136,6 +138,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		output.append('{');
@@ -155,6 +158,7 @@
 		return output.append('}');
 	}
 
+	@Override
 	public TypeBinding resolveTypeExpecting(BlockScope scope, TypeBinding expectedType) {
 		// Array initializers can only occur on the right hand side of an assignment
 		// expression, therefore the expected type contains the valid information
@@ -238,6 +242,7 @@
 		return null;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 		if (visitor.visit(this, scope)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
index 588bd31..8370b6d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayQualifiedTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,11 +36,13 @@
 			this.bits |= ASTNode.HasTypeAnnotations;
 	}
 
+	@Override
 	public int dimensions() {
 
 		return this.dimensions;
 	}
 	
+	@Override
 	public int extraDimensions() {
 		return this.extendedDimensions;
 	}
@@ -48,6 +50,7 @@
 	/**
 	 @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getAnnotationsOnDimensions(boolean)
 	*/
+	@Override
 	public Annotation[][] getAnnotationsOnDimensions(boolean useSourceOrder) {
 		if (useSourceOrder || this.annotationsOnDimensions == null || this.annotationsOnDimensions.length == 0 || this.extendedDimensions == 0 || this.extendedDimensions == this.dimensions)
 			return this.annotationsOnDimensions;
@@ -58,6 +61,7 @@
 		return externalAnnotations;
 	}
 	
+	@Override
 	public void setAnnotationsOnDimensions(Annotation [][] annotationsOnDimensions) {
 		this.annotationsOnDimensions = annotationsOnDimensions;
 	}
@@ -65,6 +69,7 @@
 	/**
 	 * @return char[][]
 	 */
+	@Override
 	public char [][] getParameterizedTypeName(){
 		int dim = this.dimensions;
 		char[] dimChars = new char[dim*2];
@@ -80,6 +85,7 @@
 		return qParamName;
 	}
 
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 
 		if (this.resolvedType != null)
@@ -103,11 +109,15 @@
 		}
 	}
 
+	@Override
 	protected TypeBinding internalResolveType(Scope scope, int location) {
 		TypeBinding internalResolveType = super.internalResolveType(scope, location);
+		internalResolveType = ArrayTypeReference.maybeMarkArrayContentsNonNull(scope, internalResolveType, this.sourceStart, this.dimensions, null);
+
 		return internalResolveType;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		super.printExpression(indent, output);
@@ -139,6 +149,7 @@
 		return output;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -162,6 +173,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.java
index ddb4ced..38a5026 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayReference.java
@@ -37,6 +37,7 @@
 	this.sourceStart = rec.sourceStart;
 }
 
+@Override
 public FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean compoundAssignment) {
 	// TODO (maxime) optimization: unconditionalInits is applied to all existing calls
 	// account for potential ArrayIndexOutOfBoundsException:
@@ -50,16 +51,13 @@
 			currentScope,
 			flowContext,
 			analyseCode(currentScope, flowContext, flowInfo).unconditionalInits());
-		if ((this.resolvedType.tagBits & TagBits.AnnotationNonNull) != 0 || 
-				(this.resolvedType.isFreeTypeVariable() && !assignment.expression.resolvedType.isFreeTypeVariable())) {
-			int nullStatus = assignment.expression.nullStatus(flowInfo, flowContext);
-		if (nullStatus != FlowInfo.NON_NULL) {
-			currentScope.problemReporter().nullityMismatch(this, assignment.expression.resolvedType, this.resolvedType, nullStatus, currentScope.environment().getNonNullAnnotationName());
-		}
+	if (currentScope.environment().usesNullTypeAnnotations()) {
+		checkAgainstNullTypeAnnotation(currentScope, this.resolvedType, assignment.expression, flowContext, flowInfo);
 	}
 	return flowInfo;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	flowInfo = this.receiver.analyseCode(currentScope, flowContext, flowInfo);
 	this.receiver.checkNPE(currentScope, flowContext, flowInfo, 1);
@@ -70,6 +68,7 @@
 	return flowInfo;
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if ((this.resolvedType.tagBits & TagBits.AnnotationNullable) != 0) {
 		scope.problemReporter().arrayReferencePotentialNullReference(this);
@@ -79,6 +78,7 @@
 	}
 }
 
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	int pc = codeStream.position;
 	this.receiver.generateCode(currentScope, codeStream, true);
@@ -98,6 +98,7 @@
 /**
  * Code generation for a array reference
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	this.receiver.generateCode(currentScope, codeStream, true);
@@ -126,6 +127,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	this.receiver.generateCode(currentScope, codeStream, true);
 	if (this.receiver instanceof CastExpression	// ((type[])null)[0]
@@ -159,6 +161,7 @@
 	codeStream.arrayAtPut(this.resolvedType.id, valueRequired);
 }
 
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	this.receiver.generateCode(currentScope, codeStream, true);
 	if (this.receiver instanceof CastExpression	// ((type[])null)[0]
@@ -189,11 +192,13 @@
 	codeStream.arrayAtPut(this.resolvedType.id, false);
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	this.receiver.printExpression(0, output).append('[');
 	return this.position.printExpression(0, output).append(']');
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	this.constant = Constant.NotAConstant;
 	if (this.receiver instanceof CastExpression	// no cast check for ((type[])null)[0]
@@ -217,6 +222,7 @@
 	return this.resolvedType;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.receiver.traverse(visitor, scope);
@@ -224,4 +230,12 @@
 	}
 	visitor.endVisit(this, scope);
 }
+
+@Override
+public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
+	if (this.resolvedType != null && (this.resolvedType.tagBits & TagBits.AnnotationNullMASK) == 0L && this.resolvedType.isFreeTypeVariable()) {
+		return FlowInfo.FREE_TYPEVARIABLE;
+	}
+	return super.nullStatus(flowInfo, flowContext);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.java
index 2cf0c4c..373a5bd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ArrayTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,18 +14,26 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
+import java.util.function.Consumer;
+
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 
 public class ArrayTypeReference extends SingleTypeReference {
 	public int dimensions;
 	private Annotation[][] annotationsOnDimensions; // jsr308 style type annotations on dimensions.
 	public int originalSourceEnd;
 	public int extendedDimensions;
+	public TypeBinding leafComponentTypeWithoutDefaultNullness;
 
 	/**
 	 * ArrayTypeReference constructor comment.
@@ -49,11 +57,13 @@
 		this.annotationsOnDimensions = annotationsOnDimensions;
 	}
 
+	@Override
 	public int dimensions() {
 
 		return this.dimensions;
 	}
 	
+	@Override
 	public int extraDimensions() {
 		return this.extendedDimensions;
 	}
@@ -61,6 +71,7 @@
 	/**
 	 @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getAnnotationsOnDimensions(boolean)
 	*/
+	@Override
 	public Annotation[][] getAnnotationsOnDimensions(boolean useSourceOrder) {
 		if (useSourceOrder || this.annotationsOnDimensions == null || this.annotationsOnDimensions.length == 0 || this.extendedDimensions == 0 || this.extendedDimensions == this.dimensions)
 			return this.annotationsOnDimensions;
@@ -71,12 +82,14 @@
 		return externalAnnotations;
 	}
 	
+	@Override
 	public void setAnnotationsOnDimensions(Annotation [][] annotationsOnDimensions) {
 		this.annotationsOnDimensions = annotationsOnDimensions;
 	}
 	/**
 	 * @return char[][]
 	 */
+	@Override
 	public char [][] getParameterizedTypeName(){
 		int dim = this.dimensions;
 		char[] dimChars = new char[dim*2];
@@ -87,6 +100,7 @@
 		}
 		return new char[][]{ CharOperation.concat(this.token, dimChars) };
 	}
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 
 		if (this.resolvedType != null) {
@@ -100,6 +114,7 @@
 
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		super.printExpression(indent, output);
@@ -131,6 +146,7 @@
 		return output;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -154,6 +170,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -177,10 +194,77 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	protected TypeBinding internalResolveType(Scope scope, int location) {
 		TypeBinding internalResolveType = super.internalResolveType(scope, location);
+		internalResolveType = maybeMarkArrayContentsNonNull(scope, internalResolveType, this.sourceStart, this.dimensions,
+									leafType -> this.leafComponentTypeWithoutDefaultNullness = leafType);
+
 		return internalResolveType;
 	}
+
+	static TypeBinding maybeMarkArrayContentsNonNull(Scope scope, TypeBinding typeBinding, int sourceStart, int dimensions, Consumer<TypeBinding> leafConsumer) {
+		LookupEnvironment environment = scope.environment();
+		if (environment.usesNullTypeAnnotations()
+				&& scope.hasDefaultNullnessFor(Binding.DefaultLocationArrayContents, sourceStart)) {
+			AnnotationBinding nonNullAnnotation = environment.getNonNullAnnotation();
+			typeBinding = addNonNullToDimensions(scope, typeBinding, nonNullAnnotation, dimensions);
+
+			TypeBinding leafComponentType = typeBinding.leafComponentType();
+			if ((leafComponentType.tagBits & TagBits.AnnotationNullMASK) == 0 && leafComponentType.acceptsNonNullDefault()) {
+				if (leafConsumer != null)
+					leafConsumer.accept(leafComponentType);
+				TypeBinding nonNullLeafComponentType = scope.environment().createAnnotatedType(leafComponentType,
+						new AnnotationBinding[] { nonNullAnnotation });
+				typeBinding = scope.createArrayType(nonNullLeafComponentType, typeBinding.dimensions(),
+						typeBinding.getTypeAnnotations());
+			}
+		}
+		return typeBinding;
+	}
+
+	static TypeBinding addNonNullToDimensions(Scope scope, TypeBinding typeBinding,
+			AnnotationBinding nonNullAnnotation, int dimensions2) {
+		AnnotationBinding[][] newAnnots = new AnnotationBinding[dimensions2][];
+		AnnotationBinding[] oldAnnots = typeBinding.getTypeAnnotations();
+		if (oldAnnots == null) {
+			for (int i = 1; i < dimensions2; i++) {
+				newAnnots[i] = new AnnotationBinding[] { nonNullAnnotation };
+			}
+		} else {
+			int j = 0;
+			for (int i = 0; i < dimensions2; i++) {
+				if (j >= oldAnnots.length || oldAnnots[j] == null) {
+					if (i != 0) {
+						newAnnots[i] = new AnnotationBinding[] { nonNullAnnotation };
+					}
+					j++;
+				} else {
+					int k = j;
+					boolean seen = false;
+					while (oldAnnots[k] != null) {
+						seen |= oldAnnots[k].getAnnotationType()
+								.hasNullBit(TypeIds.BitNonNullAnnotation | TypeIds.BitNullableAnnotation);
+						k++;
+					}
+					if (seen || i == 0) {
+						if (k > j) {
+							AnnotationBinding[] annotationsForDimension = new AnnotationBinding[k - j];
+							System.arraycopy(oldAnnots, j, annotationsForDimension, 0, k - j);
+							newAnnots[i] = annotationsForDimension;
+						}
+					} else {
+						AnnotationBinding[] annotationsForDimension = new AnnotationBinding[k - j + 1];
+						annotationsForDimension[0] = nonNullAnnotation;
+						System.arraycopy(oldAnnots, j, annotationsForDimension, 1, k - j);
+						newAnnots[i] = annotationsForDimension;
+					}
+					j = k + 1;
+				}
+			}
+		}
+		return scope.environment().createAnnotatedType(typeBinding, newAnnots);
+	}
 	
 	@Override
 	public boolean hasNullTypeAnnotation(AnnotationPosition position) {
@@ -194,7 +278,8 @@
 					Annotation[] innerAnnotations = this.annotationsOnDimensions[0];
 					return containsNullAnnotation(innerAnnotations);
 				}
-				break;
+				// e.g. subclass ParameterizedSingleTypeReference is not only used for arrays
+				return super.hasNullTypeAnnotation(position);
 			case ANY:
 				if (super.hasNullTypeAnnotation(position))
 					return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java
index cd4eabe..2b9252c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/AssertStatement.java
@@ -1,3 +1,4 @@
+// AspectJ
 /*******************************************************************************
  * Copyright (c) 2000, 2013 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -44,6 +45,7 @@
 	this.sourceEnd = assertExpression.sourceEnd;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	this.preAssertInitStateIndex = currentScope.methodScope().recordInitializationStates(flowInfo);
 
@@ -102,6 +104,7 @@
 	}
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & IsReachable) == 0) {
 		return;
@@ -140,6 +143,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	this.assertExpression.resolveTypeExpecting(scope, TypeBinding.BOOLEAN);
 	if (this.exceptionArgument != null) {
@@ -168,6 +172,7 @@
 	}
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.assertExpression.traverse(visitor, scope);
@@ -203,6 +208,7 @@
 	}
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	printIndent(tab, output);
 	output.append("assert "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.java
index e22294e..6a28104 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Assignment.java
@@ -48,8 +48,6 @@
 	public Expression expression;
 
 public Assignment(Expression lhs, Expression expression, int sourceEnd) {
-	//lhs is always a reference by construction ,
-	//but is build as an expression ==> the checkcast cannot fail
 	this.lhs = lhs;
 	lhs.bits |= IsStrictlyAssigned; // tag lhs as assigned
 	this.expression = expression;
@@ -57,6 +55,7 @@
 	this.sourceEnd = sourceEnd;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// record setting a variable: various scenarii are possible, setting an array reference,
 // a field reference, a blank final field reference, a field of an enclosing instance or
@@ -127,6 +126,7 @@
 	}
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	// various scenarii are possible, setting an array reference,
 	// a field reference, a blank final field reference, a field of an enclosing instance or
@@ -159,17 +159,20 @@
     return null;
 }
 
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	if ((this.implicitConversion & TypeIds.BOXING) != 0)
 		return FlowInfo.NON_NULL;
 	return this.expression.nullStatus(flowInfo, flowContext);
 }
 
+@Override
 public StringBuffer print(int indent, StringBuffer output) {
 	//no () when used as a statement
 	printIndent(indent, output);
 	return printExpressionNoParenthesis(indent, output);
 }
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	//subclass redefine printExpressionNoParenthesis()
 	output.append('(');
@@ -181,11 +184,13 @@
 	return this.expression.printExpression(0, output);
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	//no () when used as a statement
 	return print(indent, output).append(';');
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// due to syntax lhs may be only a NameReference, a FieldReference or an ArrayReference
 	this.constant = Constant.NotAConstant;
@@ -242,6 +247,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#resolveTypeExpecting(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public TypeBinding resolveTypeExpecting(BlockScope scope, TypeBinding expectedType) {
 
 	TypeBinding type = super.resolveTypeExpecting(scope, expectedType);
@@ -258,6 +264,7 @@
 	return type;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.lhs.traverse(visitor, scope);
@@ -265,9 +272,11 @@
 	}
 	visitor.endVisit(this, scope);
 }
+@Override
 public LocalVariableBinding localVariableBinding() {
 	return this.lhs.localVariableBinding();
 }
+@Override
 public boolean statementExpression() {
 	return ((this.bits & ASTNode.ParenthesizedMASK) == 0);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.java
index 74a552c..806a68e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BinaryExpression.java
@@ -59,6 +59,7 @@
 	this.sourceStart = expression.sourceStart;
 	this.sourceEnd = expression.sourceEnd;
 }
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// keep implementation in sync with CombinedBinaryExpression#analyseCode
 	try {
@@ -113,6 +114,7 @@
 	}
 }
 
+@Override
 public Constant optimizedBooleanConstant() {
 	return this.optimizedBooleanConstant == null ? this.constant : this.optimizedBooleanConstant;
 }
@@ -123,6 +125,7 @@
 // given the current focus of CombinedBinaryExpression on strings concatenation,
 // we do not provide a general, non-recursive implementation of generateCode,
 // but rely upon generateOptimizedStringConcatenationCreation instead
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -582,6 +585,7 @@
  * Boolean operator code generation
  *	Optimized operations are: <, <=, >, >=, &, |, ^
  */
+@Override
 public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 	if ((this.constant != Constant.NotAConstant) && (this.constant.typeID() == TypeIds.T_boolean)) {
 		super.generateOptimizedBoolean(
@@ -1547,6 +1551,7 @@
 	codeStream.recordPositionsFrom(codeStream.position, this.sourceEnd);
 }
 
+@Override
 public void generateOptimizedStringConcatenation(BlockScope blockScope, CodeStream codeStream, int typeID) {
 	// keep implementation in sync with CombinedBinaryExpression
 	// #generateOptimizedStringConcatenation
@@ -1579,6 +1584,7 @@
 	}
 }
 
+@Override
 public void generateOptimizedStringConcatenationCreation(BlockScope blockScope, CodeStream codeStream, int typeID) {
 	// keep implementation in sync with CombinedBinaryExpression
 	// #generateOptimizedStringConcatenationCreation
@@ -1613,6 +1619,7 @@
 	}
 }
 
+@Override
 public boolean isCompactableOperation() {
 	return true;
 }
@@ -1784,6 +1791,7 @@
 	}
 }
 
+@Override
 public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 	// keep implementation in sync with
 	// CombinedBinaryExpression#printExpressionNoParenthesis
@@ -1791,6 +1799,7 @@
 	return this.right.printExpression(0, output);
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// keep implementation in sync with CombinedBinaryExpression#resolveType
 	// and nonRecursiveResolveTypeUpwards
@@ -1901,6 +1910,7 @@
 	return this.resolvedType;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.left.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.java
index 50d14b3..3ef1d67 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Block.java
@@ -33,6 +33,7 @@
 	this.explicitDeclarations = explicitDeclarations;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// empty block
 	if (this.statements == null)	return flowInfo;
@@ -68,6 +69,7 @@
 /**
  * Code generation for a block
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & IsReachable) == 0) {
 		return;
@@ -84,6 +86,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public boolean isEmptyBlock() {
 	return this.statements == null;
 }
@@ -97,6 +100,7 @@
 	return output;
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	printIndent(indent, output);
 	output.append("{\n"); //$NON-NLS-1$
@@ -104,6 +108,7 @@
 	return printIndent(indent, output).append('}');
 }
 
+@Override
 public void resolve(BlockScope upperScope) {
 	if ((this.bits & UndocumentedEmptyBlock) != 0) {
 		upperScope.problemReporter().undocumentedEmptyBlock(this.sourceStart, this.sourceEnd);
@@ -132,6 +137,7 @@
 	}
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		if (this.statements != null) {
@@ -145,6 +151,7 @@
 /**
  * Dispatch the call on its last statement.
  */
+@Override
 public void branchChainTo(BranchLabel label) {
 	if (this.statements != null) {
 		this.statements[this.statements.length - 1].branchChainTo(label);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.java
index c00f88b..d829e2d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BranchStatement.java
@@ -34,6 +34,7 @@
  *
  *   generate the finallyInvocationSequence.
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -66,6 +67,7 @@
 	}
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	// nothing to do during name resolution
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.java
index c035abc..5d4f9f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/BreakStatement.java
@@ -22,6 +22,7 @@
 	super(label, sourceStart, e);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 	// here requires to generate a sequence of finally blocks invocations depending corresponding
@@ -86,12 +87,14 @@
 	return FlowInfo.DEAD_END;
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	printIndent(tab, output).append("break"); //$NON-NLS-1$
 	if (this.label != null) output.append(' ').append(this.label);
 	return output.append(';');
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockscope) {
 	visitor.visit(this, blockscope);
 	visitor.endVisit(this, blockscope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java
index 968b85c..9c09930 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java
@@ -35,6 +35,7 @@
 	this.sourceStart = sourceStart;
 }
 
+@Override
 public FlowInfo analyseCode(
 	BlockScope currentScope,
 	FlowContext flowContext,
@@ -50,6 +51,7 @@
 	return flowInfo;
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	printIndent(tab, output);
 	if (this.constantExpression == null) {
@@ -65,6 +67,7 @@
  * Case code generation
  *
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -77,6 +80,7 @@
 /**
  * No-op : should use resolveCase(...) instead.
  */
+@Override
 public void resolve(BlockScope scope) {
 	// no-op : should use resolveCase(...) instead.
 }
@@ -85,6 +89,7 @@
  * Returns the constant intValue or ordinal for enum constants. If constant is NotAConstant, then answers Float.MIN_VALUE
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement#resolveCase(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.aspectj.org.eclipse.jdt.internal.compiler.ast.SwitchStatement)
  */
+@Override
 public Constant resolveCase(BlockScope scope, TypeBinding switchExpressionType, SwitchStatement switchStatement) {
 	// switchExpressionType maybe null in error case
 	scope.enclosingCase = this; // record entering in a switch case block
@@ -135,6 +140,7 @@
 	return Constant.NotAConstant;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, 	BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		if (this.constantExpression != null) this.constantExpression.traverse(visitor, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.java
index 78bf725..e10ffa6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CastExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,6 +37,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.IrritantSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
@@ -68,6 +69,7 @@
 	type.bits |= ASTNode.IgnoreRawTypeCheck; // no need to worry about raw type usage
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	FlowInfo result = this.expression
 		.analyseCode(currentScope, flowContext, flowInfo)
@@ -266,6 +268,7 @@
 	}
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if((this.resolvedType.tagBits & TagBits.AnnotationNonNull) != 0) {
 		return true;
@@ -276,20 +279,35 @@
 
 private static void checkAlternateBinding(BlockScope scope, Expression receiver, TypeBinding receiverType, MethodBinding binding, Expression[] arguments, TypeBinding[] originalArgumentTypes, TypeBinding[] alternateArgumentTypes, final InvocationSite invocationSite) {
 		InvocationSite fakeInvocationSite = new InvocationSite(){
+			@Override
 			public TypeBinding[] genericTypeArguments() { return null; }
+			@Override
 			public boolean isSuperAccess(){ return invocationSite.isSuperAccess(); }
+			@Override
 			public boolean isTypeAccess() { return invocationSite.isTypeAccess(); }
+			@Override
 			public void setActualReceiverType(ReferenceBinding actualReceiverType) { /* ignore */}
+			@Override
 			public void setDepth(int depth) { /* ignore */}
+			@Override
 			public void setFieldIndex(int depth){ /* ignore */}
+			@Override
 			public int sourceStart() { return 0; }
+			@Override
 			public int sourceEnd() { return 0; }
+			@Override
 			public TypeBinding invocationTargetType() { return invocationSite.invocationTargetType(); }
+			@Override
 			public boolean receiverIsImplicitThis() { return invocationSite.receiverIsImplicitThis();}
+			@Override
 			public InferenceContext18 freshInferenceContext(Scope someScope) { return invocationSite.freshInferenceContext(someScope); }
+			@Override
 			public ExpressionContext getExpressionContext() { return invocationSite.getExpressionContext(); }
+			@Override
 			public boolean isQualifiedSuper() { return invocationSite.isQualifiedSuper(); }
+			@Override
 			public boolean checkingPotentialCompatibility() { return false; }
+			@Override
 			public void acceptPotentiallyCompatibleMethods(MethodBinding[] methods) {/* ignore */}
 		};
 		MethodBinding bindingIfNoCast;
@@ -322,12 +340,32 @@
 			for (int i = 0; i < argumentLength; i++) {
 				if (TypeBinding.notEquals(originalArgumentTypes[i], alternateArgumentTypes[i])
                        /*&& !originalArgumentTypes[i].needsUncheckedConversion(alternateArgumentTypes[i])*/) {
-					scope.problemReporter().unnecessaryCast((CastExpression)arguments[i]);
+					if (!preventsUnlikelyTypeWarning(originalArgumentTypes[i], alternateArgumentTypes[i], receiverType, binding, scope))
+						scope.problemReporter().unnecessaryCast((CastExpression)arguments[i]);
 				}
 			}
 		}
 }
 
+private static boolean preventsUnlikelyTypeWarning(TypeBinding castedType, TypeBinding uncastedType, TypeBinding receiverType, MethodBinding binding, BlockScope scope) {
+	if (!scope.compilerOptions().isAnyEnabled(IrritantSet.UNLIKELY_ARGUMENT_TYPE))
+		return false;
+	if (binding.isStatic() || binding.parameters.length != 1)
+		return false;
+	// would using the uncastedType be considered as dangerous?
+	UnlikelyArgumentCheck argumentChecks = UnlikelyArgumentCheck.determineCheckForNonStaticSingleArgumentMethod(
+			uncastedType, scope, binding.selector, receiverType, binding.parameters);
+	if (argumentChecks != null && argumentChecks.isDangerous(scope)) {
+		// does the cast help?
+		argumentChecks = UnlikelyArgumentCheck.determineCheckForNonStaticSingleArgumentMethod(
+				castedType, scope, binding.selector, receiverType, binding.parameters);
+		if (argumentChecks == null || !argumentChecks.isDangerous(scope))
+			return true;
+	}
+	return false;
+}
+
+@Override
 public boolean checkUnsafeCast(Scope scope, TypeBinding castType, TypeBinding expressionType, TypeBinding match, boolean isNarrowing) {
 	if (TypeBinding.equalsEquals(match, castType)) {
 		if (!isNarrowing && TypeBinding.equalsEquals(match, this.resolvedType.leafComponentType()) // do not tag as unnecessary when recursing through upper bounds
@@ -442,6 +480,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	boolean annotatedCast = (this.type.bits & ASTNode.HasTypeAnnotations) != 0;
@@ -491,10 +530,12 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#localVariableBinding()
  */
+@Override
 public LocalVariableBinding localVariableBinding() {
 	return this.expression.localVariableBinding();
 }
 
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	if ((this.implicitConversion & TypeIds.BOXING) != 0)
 		return FlowInfo.NON_NULL;
@@ -504,6 +545,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#optimizedBooleanConstant()
  */
+@Override
 public Constant optimizedBooleanConstant() {
 	switch(this.resolvedType.id) {
 		case T_boolean :
@@ -513,6 +555,7 @@
 	return Constant.NotAConstant;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	int parenthesesCount = (this.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT;
 	String suffix = ""; //$NON-NLS-1$
@@ -525,6 +568,7 @@
 	return this.expression.printExpression(0, output).append(suffix);
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// compute a new constant if the cast is effective
 
@@ -601,6 +645,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#setExpectedType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void setExpectedType(TypeBinding expectedType) {
 	this.expectedType = expectedType;
 }
@@ -630,6 +675,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#tagAsNeedCheckCast()
  */
+@Override
 public void tagAsNeedCheckCast() {
 	this.bits |= ASTNode.GenerateCheckcast;
 }
@@ -637,10 +683,12 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#tagAsUnnecessaryCast(Scope, TypeBinding)
  */
+@Override
 public void tagAsUnnecessaryCast(Scope scope, TypeBinding castType) {
 	this.bits |= ASTNode.UnnecessaryCast;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		this.type.traverse(visitor, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
index 47d75ea..98fae88 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CharLiteral.java
@@ -25,6 +25,7 @@
 	computeValue();
 }
 
+@Override
 public void computeConstant() {
 	//The source is a  char[3] first and last char are '
 	//This is true for both regular char AND unicode char
@@ -86,6 +87,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -94,10 +96,12 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.CHAR;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	visitor.visit(this, blockScope);
 	visitor.endVisit(this, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.java
index 7fb0d88..63add10 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ClassLiteralAccess.java
@@ -1,5 +1,6 @@
+//AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,13 +31,14 @@
 		this.sourceEnd = sourceEnd;
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
 		FlowInfo flowInfo) {
 
 		// if reachable, request the addition of a synthetic field for caching the class descriptor
-		SourceTypeBinding sourceType = currentScope.outerMostClassScope().enclosingSourceType();
+		SourceTypeBinding sourceType = currentScope.outerMostClassScope().invocationType(); // AspectJ Extension - was .enclosingSourceType()
 		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=22334
 		if (!sourceType.isInterface()
 				&& !this.targetType.isBaseType()
@@ -53,6 +55,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	 */
+	@Override
 	public void generateCode(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -67,11 +70,13 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		return this.type.print(0, output).append(".class"); //$NON-NLS-1$
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.constant = Constant.NotAConstant;
@@ -107,7 +112,7 @@
 			// Integer.class --> Class<Integer>, perform boxing of base types (int.class --> Class<Integer>)
 			TypeBinding boxedType = null;
 			if (this.targetType.id == T_void) {
-				boxedType = environment.getResolvedType(JAVA_LANG_VOID, scope);
+				boxedType = environment.getResolvedJavaBaseType(JAVA_LANG_VOID, scope);
 			} else {
 				boxedType = scope.boxing(this.targetType);
 			}
@@ -120,6 +125,7 @@
 		return this.resolvedType;
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.java
index 33c3d92..26c7b5c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Clinit.java
@@ -1,5 +1,6 @@
+//AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +18,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.BranchLabel;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool;
@@ -107,6 +109,7 @@
 	 * @param classScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope
 	 * @param classFile org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ClassFile
 	 */
+	@Override
 	public void generateCode(ClassScope classScope, ClassFile classFile) {
 
 		int clinitOffset = 0;
@@ -218,6 +221,7 @@
 		//}
 		generateSyntheticCode(classScope, codeStream);
 		// End AspectJ Extension
+		boolean isJava9 = classScope.compilerOptions().complianceLevel >= ClassFileConstants.JDK9;
 		
 		// generate static fields/initializers/enum constants
 		final FieldDeclaration[] fieldDeclarations = declaringType.fields;
@@ -225,7 +229,7 @@
 		int remainingFieldCount = 0;
 		if (TypeDeclaration.kind(declaringType.modifiers) == TypeDeclaration.ENUM_DECL) {
 			int enumCount = declaringType.enumConstantsCounter;
-			if (enumCount > ENUM_CONSTANTS_THRESHOLD) {
+			if (!isJava9 && enumCount > ENUM_CONSTANTS_THRESHOLD) {
 				// generate synthetic methods to initialize all the enum constants
 				int begin = -1;
 				int count = 0;
@@ -333,6 +337,9 @@
 					}
 				}
 			}
+			if (isJava9) {
+				declaringType.binding.generateSyntheticFinalFieldInitialization(codeStream);
+			}
 		}
 
 		// AspectJ Extension
@@ -389,25 +396,30 @@
 		}
 	// End AspectJ Extension
 
+	@Override
 	public boolean isClinit() {
 
 		return true;
 	}
 
+	@Override
 	public boolean isInitializationMethod() {
 
 		return true;
 	}
 
+	@Override
 	public boolean isStatic() {
 
 		return true;
 	}
 
+	@Override
 	public void parseStatements(Parser parser, CompilationUnitDeclaration unit) {
 		//the clinit is filled by hand ....
 	}
 
+	@Override
 	public StringBuffer print(int tab, StringBuffer output) {
 
 		printIndent(tab, output).append("<clinit>()"); //$NON-NLS-1$
@@ -415,11 +427,13 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(ClassScope classScope) {
 
 		this.scope = new MethodScope(classScope, classScope.referenceContext, true);
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		ClassScope classScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.java
index 7a57071..ad6c05f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CombinedBinaryExpression.java
@@ -117,6 +117,7 @@
 	initArity(expression.left, expression.arity);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext,
 		FlowInfo flowInfo) {
 	// keep implementation in sync with BinaryExpression#analyseCode
@@ -151,6 +152,7 @@
 	}
 }
 
+@Override
 public void generateOptimizedStringConcatenation(BlockScope blockScope,
 		CodeStream codeStream, int typeID) {
 	// keep implementation in sync with BinaryExpression and Expression
@@ -231,6 +233,7 @@
 	}
 }
 
+@Override
 public void generateOptimizedStringConcatenationCreation(BlockScope blockScope,
 		CodeStream codeStream, int typeID) {
 	// keep implementation in sync with BinaryExpression
@@ -313,6 +316,7 @@
 	}
 }
 
+@Override
 public StringBuffer printExpressionNoParenthesis(int indent,
 		StringBuffer output) {
 	// keep implementation in sync with
@@ -338,6 +342,7 @@
 	return this.right.printExpression(0, output);
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// keep implementation in sync with BinaryExpression#resolveType
 	if (this.referencesTable == null) {
@@ -356,6 +361,7 @@
 	return this.resolvedType;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (this.referencesTable == null) {
 		super.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
index 15c0b46..40d05a6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompilationUnitDeclaration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +22,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.IrritantSet;
@@ -29,13 +30,16 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ImportBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.NLSTag;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortMethod;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblem;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashSetOfInt;
@@ -44,6 +48,7 @@
 public class CompilationUnitDeclaration extends ASTNode implements ProblemSeverities, ReferenceContext {
 
 	private static final Comparator STRING_LITERAL_COMPARATOR = new Comparator() {
+		@Override
 		public int compare(Object o1, Object o2) {
 			StringLiteral literal1 = (StringLiteral) o1;
 			StringLiteral literal2 = (StringLiteral) o2;
@@ -55,6 +60,7 @@
 	public ImportReference currentPackage;
 	public ImportReference[] imports;
 	public TypeDeclaration[] types;
+	public ModuleDeclaration moduleDeclaration;
 	public int[][] comments;
 
 	public boolean ignoreFurtherInvestigation = false; // once pointless to investigate due to errors
@@ -95,6 +101,7 @@
 /*
  *	We cause the compilation task to abort to a given extent.
  */
+@Override
 public void abort(int abortLevel, CategorizedProblem problem) {
 	switch (abortLevel) {
 		case AbortType :
@@ -118,6 +125,9 @@
 				this.types[i].analyseCode(this.scope);
 			}
 		}
+		if (this.moduleDeclaration != null) {
+			this.moduleDeclaration.analyseCode(this.scope);
+		}
 		// request inner emulation propagation
 		propagateInnerEmulationForAllLocalTypes();
 	} catch (AbortCompilationUnit e) {
@@ -142,6 +152,11 @@
 			localType.enclosingCase = null;
 		}
 	}
+	if (this.functionalExpressionsCount > 0) {
+		for (int i = 0, max = this.functionalExpressionsCount; i < max; i++) {
+			this.functionalExpressions[i].cleanUp();
+		}
+	}
 
 	this.compilationResult.recoveryScannerData = null; // recovery is already done
 
@@ -189,6 +204,7 @@
 	}
 }
 
+@Override
 public CompilationResult compilationResult() {
 	return this.compilationResult;
 }
@@ -218,10 +234,17 @@
 }
 
 public void finalizeProblems() {
-	if (this.suppressWarningsCount == 0) return;
-	int removed = 0;
-	CategorizedProblem[] problems = this.compilationResult.problems;
 	int problemCount = this.compilationResult.problemCount;
+	CategorizedProblem[] problems = this.compilationResult.problems;
+	if (this.suppressWarningsCount == 0) {
+		 for (int iProblem = 0, length = problemCount; iProblem < length; iProblem++) {
+			 if (problems[iProblem] instanceof DefaultProblem) {
+				 ((DefaultProblem)problems[iProblem]).reportError();
+			 }
+		 }
+		return;
+	}
+	int removed = 0;
 	IrritantSet[] foundIrritants = new IrritantSet[this.suppressWarningsCount];
 	CompilerOptions options = this.scope.compilerOptions();
 	boolean hasMandatoryErrors = false;
@@ -248,8 +271,12 @@
 			int endSuppress = (int) position;
 			if (start < startSuppress) continue nextSuppress;
 			if (end > endSuppress) continue nextSuppress;
-			if (!this.suppressWarningIrritants[iSuppress].isSet(irritant))
+			if (!this.suppressWarningIrritants[iSuppress].isSet(irritant)) {
+				if (problem instanceof DefaultProblem) {
+					((DefaultProblem) problem).reportError();
+				}
 				continue nextSuppress;
+			}
 			// discard suppressed warning
 			removed++;
 			problems[iProblem] = null;
@@ -382,11 +409,15 @@
 			for (int i = 0, count = this.types.length; i < count; i++)
 				this.types[i].generateCode(this.scope);
 		}
+		if (this.moduleDeclaration != null) {
+			this.moduleDeclaration.generateCode();
+		}
 	} catch (AbortCompilationUnit e) {
 		// ignore
 	}
 }
 
+@Override
 public CompilationUnitDeclaration getCompilationUnitDeclaration() {
 	return this;
 }
@@ -421,6 +452,10 @@
 	return CharOperation.equals(getMainTypeName(), TypeConstants.PACKAGE_INFO_NAME);
 }
 
+public boolean isModuleInfo() {
+	return CharOperation.equals(getMainTypeName(), TypeConstants.MODULE_INFO_NAME);
+}
+
 public boolean isSuppressed(CategorizedProblem problem) {
 	if (this.suppressWarningsCount == 0) return false;
 	int irritant = ProblemReporter.getIrritant(problem.getID());
@@ -443,10 +478,12 @@
 	return this.compilationResult.hasFunctionalTypes;
 }
 
+@Override
 public boolean hasErrors() {
 	return this.ignoreFurtherInvestigation;
 }
 
+@Override
 public StringBuffer print(int indent, StringBuffer output) {
 	if (this.currentPackage != null) {
 		printIndent(indent, output).append("package "); //$NON-NLS-1$
@@ -461,8 +498,9 @@
 			}
 			currentImport.print(0, output).append(";\n"); //$NON-NLS-1$
 		}
-
-	if (this.types != null) {
+	if (this.moduleDeclaration != null) {
+		this.moduleDeclaration.print(indent, output).append("\n"); //$NON-NLS-1$
+	} else if (this.types != null) {
 		for (int i = 0; i < this.types.length; i++) {
 			this.types[i].print(indent, output).append("\n"); //$NON-NLS-1$
 		}
@@ -712,10 +750,12 @@
 	}
 }
 
+@Override
 public void tagAsHavingErrors() {
 	this.ignoreFurtherInvestigation = true;
 }
 
+@Override
 public void tagAsHavingIgnoredMandatoryErrors(int problemId) {
 	// Nothing to do for this context;
 }
@@ -763,10 +803,26 @@
 					this.types[i].traverse(visitor, this.scope);
 				}
 			}
+			if (this.isModuleInfo() && this.moduleDeclaration != null) {
+				this.moduleDeclaration.traverse(visitor, this.scope);
+			}
 		}
 		visitor.endVisit(this, this.scope);
 	} catch (AbortCompilationUnit e) {
 		// ignore
 	}
 }
+public ModuleBinding module(LookupEnvironment environment) {
+	if (this.moduleDeclaration != null) {
+		ModuleBinding binding = this.moduleDeclaration.binding;
+		if (binding != null)
+			return binding;
+	}
+	if (this.compilationResult != null) {
+		ICompilationUnit compilationUnit = this.compilationResult.compilationUnit;
+		if (compilationUnit != null)
+			return compilationUnit.module(environment);
+	}
+	return environment.module;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.java
index 695b5a0..cb77101 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/CompoundAssignment.java
@@ -40,6 +40,7 @@
 		this.operator = operator ;
 	}
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext,
 		FlowInfo flowInfo) {
 	// record setting a variable: various scenarii are possible, setting an array reference,
@@ -66,6 +67,7 @@
 	public boolean checkCastCompatibility() {
 		return true;
 	}
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 
 		// various scenarii are possible, setting an array reference,
@@ -80,6 +82,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	return FlowInfo.NON_NULL;
 	// we may have complained on checkNPE, but we avoid duplicate error
@@ -113,12 +116,14 @@
 		return "unknown operator"; //$NON-NLS-1$
 	}
 
+	@Override
 	public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 
 		this.lhs.printExpression(indent, output).append(' ').append(operatorToString()).append(' ');
 		return this.expression.printExpression(0, output) ;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		this.constant = Constant.NotAConstant;
 		if (!(this.lhs instanceof Reference) || this.lhs.isThis()) {
@@ -210,6 +215,7 @@
 		return false ;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			this.lhs.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
index 81f992d..a3e30b7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java
@@ -68,6 +68,7 @@
 		this.sourceEnd = valueIfFalse.sourceEnd;
 	}
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext,
 			FlowInfo flowInfo) {
 		int initialComplaintLevel = (flowInfo.reachMode() & FlowInfo.UNREACHABLE) != 0 ? Statement.COMPLAINED_FAKE_REACHABLE : Statement.NOT_COMPLAINED;
@@ -187,6 +188,7 @@
 		return mergedInfo;
 	}
 
+	@Override
 	public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 		if ((this.nullStatus & FlowInfo.NULL) != 0)
 			scope.problemReporter().expressionNullReference(this);
@@ -237,6 +239,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	*/
+	@Override
 	public void generateCode(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -327,6 +330,7 @@
 	/**
 	 * Optimized boolean code generation for the conditional operator ?:
 	*/
+	@Override
 	public void generateOptimizedBoolean(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -419,17 +423,20 @@
 		codeStream.recordPositionsFrom(pc, this.sourceEnd);
 	}
 
+	@Override
 	public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 		if ((this.implicitConversion & TypeIds.BOXING) != 0)
 			return FlowInfo.NON_NULL;
 		return this.nullStatus;
 	}
 
+	@Override
 	public Constant optimizedBooleanConstant() {
 
 		return this.optimizedBooleanConstant == null ? this.constant : this.optimizedBooleanConstant;
 	}
 
+	@Override
 	public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 
 		this.condition.printExpression(indent, output).append(" ? "); //$NON-NLS-1$
@@ -437,6 +444,7 @@
 		return this.valueIfFalse.printExpression(0, output);
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		// JLS3 15.25
 		LookupEnvironment env = scope.environment();
@@ -707,14 +715,17 @@
 		return ok;
 	}
 
+	@Override
 	public void setExpectedType(TypeBinding expectedType) {
 		this.expectedType = expectedType;
 	}
 	
+	@Override
 	public void setExpressionContext(ExpressionContext context) {
 		this.expressionContext = context;
 	}
 
+	@Override
 	public ExpressionContext getExpressionContext() {
 		return this.expressionContext;
 	}
@@ -733,6 +744,7 @@
 		return allPolys;
 	}
 
+	@Override
 	public boolean isPertinentToApplicability(TypeBinding targetType, MethodBinding method) {
 		return this.valueIfTrue.isPertinentToApplicability(targetType, method) 
 				&& this.valueIfFalse.isPertinentToApplicability(targetType, method);
@@ -749,6 +761,7 @@
 		return this.valueIfTrue.isFunctionalType() || this.valueIfFalse.isFunctionalType(); // Even if only one arm is functional type, this will require a functional interface target
 	}
 	
+	@Override
 	public boolean isPolyExpression() throws UnsupportedOperationException {
 		
 		if (!this.use18specifics)
@@ -776,6 +789,7 @@
 		return this.isPolyExpression = true;
 	}
 	
+	@Override
 	public boolean isCompatibleWith(TypeBinding left, Scope scope) {
 		return isPolyExpression() ? this.valueIfTrue.isCompatibleWith(left, scope) && this.valueIfFalse.isCompatibleWith(left, scope) :
 			super.isCompatibleWith(left, scope);
@@ -791,6 +805,7 @@
 			super.isBoxingCompatibleWith(targetType, scope);
 	}	
 	
+	@Override
 	public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope) {
 		if (super.sIsMoreSpecific(s, t, scope))
 			return true;
@@ -799,6 +814,7 @@
 				false;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			this.condition.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
index ab5002f..119b476 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ConstructorDeclaration.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -263,6 +264,7 @@
  * @param classScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope
  * @param classFile org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ClassFile
  */
+@Override
 public void generateCode(ClassScope classScope, ClassFile classFile) {
 	int problemResetPC = 0;
 	if (this.ignoreFurtherInvestigation) {
@@ -414,7 +416,7 @@
 
 		if (needFieldInitializations && preInitSyntheticFields){
 			generateSyntheticFieldInitializationsIfNecessary(this.scope, codeStream, declaringClass);
-			codeStream.recordPositionsFrom(0, this.bodyStart);
+			codeStream.recordPositionsFrom(0, this.bodyStart > 0 ? this.bodyStart : this.sourceStart);
 		}
 		// generate constructor call
 		if (this.constructorCall != null) {
@@ -450,7 +452,7 @@
 		}
 		// local variable attributes
 		codeStream.exitUserScope(this.scope);
-		codeStream.recordPositionsFrom(0, this.bodyEnd);
+		codeStream.recordPositionsFrom(0, this.bodyEnd > 0 ? this.bodyEnd : this.sourceStart);
 		try {
 			classFile.completeCodeAttribute(codeAttributeOffset);
 		} catch(NegativeArraySizeException e) {
@@ -466,6 +468,7 @@
 	classFile.completeMethodInfo(this.binding, methodAttributeOffset, attributeNumber);
 }
 
+@Override
 public void getAllAnnotationContexts(int targetType, List allAnnotationContexts) {
 	TypeReference fakeReturnType = new SingleTypeReference(this.selector, 0);
 	fakeReturnType.resolvedType = this.binding.declaringClass;
@@ -476,14 +479,17 @@
 	}
 }
 
+@Override
 public boolean isConstructor() {
 	return true;
 }
 
+@Override
 public boolean isDefaultConstructor() {
 	return (this.bits & ASTNode.IsDefaultConstructor) != 0;
 }
 
+@Override
 public boolean isInitializationMethod() {
 	return true;
 }
@@ -522,6 +528,7 @@
 	return targetConstructor.isRecursive(visited);
 }
 
+@Override
 public void parseStatements(Parser parser, CompilationUnitDeclaration unit) {
 	//fill up the constructor body with its statements
 	if (((this.bits & ASTNode.IsDefaultConstructor) != 0) && this.constructorCall == null){
@@ -534,6 +541,7 @@
 
 }
 
+@Override
 public StringBuffer printBody(int indent, StringBuffer output) {
 	output.append(" {"); //$NON-NLS-1$
 	if (this.constructorCall != null) {
@@ -551,6 +559,7 @@
 	return output;
 }
 
+@Override
 public void resolveJavadoc() {
 	if (this.binding == null || this.javadoc != null) {
 		super.resolveJavadoc();
@@ -576,6 +585,7 @@
  * Type checking for constructor, just another method, except for special check
  * for recursive constructor invocations.
  */
+@Override
 public void resolveStatements() {
 	SourceTypeBinding sourceType = this.scope.enclosingSourceType();
 	if (!CharOperation.equals(sourceType.sourceName, this.selector)){
@@ -604,6 +614,7 @@
 	super.resolveStatements();
 }
 
+@Override
 public void traverse(ASTVisitor visitor, ClassScope classScope) {
 	if (visitor.visit(this, classScope)) {
 		if (this.javadoc != null) {
@@ -640,6 +651,7 @@
 	}
 	visitor.endVisit(this, classScope);
 }
+@Override
 public TypeParameter[] typeParameters() {
     return this.typeParameters;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.java
index 7841b06..3c61e37 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContainerAnnotation.java
@@ -51,6 +51,7 @@
 	}
 	
 	// Resolve the compiler synthesized container annotation.
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		if (this.compilerAnnotation != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.java
index cd69437..00afe9d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ContinueStatement.java
@@ -22,6 +22,7 @@
 	super(label, sourceStart, sourceEnd);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 	// here requires to generate a sequence of finally blocks invocations depending corresponding
@@ -89,12 +90,14 @@
 	return FlowInfo.DEAD_END;
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	printIndent(tab, output).append("continue "); //$NON-NLS-1$
 	if (this.label != null) output.append(this.label);
 	return output.append(';');
 }
 
+@Override
 public void traverse(ASTVisitor visitor, 	BlockScope blockScope) {
 	visitor.visit(this, blockScope);
 	visitor.endVisit(this, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.java
index 408d4cb..f24a052 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoStatement.java
@@ -42,6 +42,7 @@
 	if (action instanceof EmptyStatement) action.bits |= ASTNode.IsUsefulEmptyStatement;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	this.breakLabel = new BranchLabel();
 	this.continueLabel = new BranchLabel();
@@ -153,6 +154,7 @@
  * Do statement code generation
  *
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -207,6 +209,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	printIndent(indent, output).append("do"); //$NON-NLS-1$
 	if (this.action == null)
@@ -219,6 +222,7 @@
 	return this.condition.printExpression(0, output).append(");"); //$NON-NLS-1$
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	TypeBinding type = this.condition.resolveTypeExpecting(scope, TypeBinding.BOOLEAN);
 	this.condition.computeConversion(scope, type, type);
@@ -226,6 +230,7 @@
 		this.action.resolve(scope);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		if (this.action != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.java
index a8b2ef5..316a330 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/DoubleLiteral.java
@@ -25,6 +25,7 @@
 	super(token, s, e);
 }
 
+@Override
 public void computeConstant() {
 	Double computedValue;
 	boolean containsUnderscores = CharOperation.indexOf('_', this.source) > 0;
@@ -105,6 +106,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -113,10 +115,12 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.DOUBLE;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.java
index 5116607..023dbbe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EmptyStatement.java
@@ -25,11 +25,13 @@
 		this.sourceEnd = endPosition;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		return flowInfo;
 	}
 
 	// Report an error if necessary
+	@Override
 	public int complainIfUnreachable(FlowInfo flowInfo, BlockScope scope, int complaintLevel, boolean endOfBlock) {
 		// before 1.4, empty statements are tolerated anywhere
 		if (scope.compilerOptions().complianceLevel < ClassFileConstants.JDK1_4) {
@@ -38,14 +40,17 @@
 		return super.complainIfUnreachable(flowInfo, scope, complaintLevel, endOfBlock);
 	}
 
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream){
 		// no bytecode, no need to check for reachability or recording source positions
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 		return printIndent(tab, output).append(';');
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		if ((this.bits & IsUsefulEmptyStatement) == 0) {
 			scope.problemReporter().superfluousSemicolon(this.sourceStart, this.sourceEnd);
@@ -54,6 +59,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
index 296a5fd..4d6ed46 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/EqualExpression.java
@@ -127,6 +127,7 @@
 		// does not preclude the variable from being null in an enclosing scope
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		FlowInfo result;
 		if (((this.bits & OperatorMASK) >> OperatorSHIFT) == EQUAL_EQUAL) {
@@ -211,6 +212,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 
 		int pc = codeStream.position;
@@ -235,6 +237,7 @@
 	 * Boolean operator code generation
 	 *	Optimized operations are: == and !=
 	 */
+	@Override
 	public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 
 		if (this.constant != Constant.NotAConstant) {
@@ -817,9 +820,11 @@
 		}
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
+	@Override
 	public boolean isCompactableOperation() {
 		return false;
 	}
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 			boolean leftIsCast, rightIsCast;
@@ -934,6 +939,7 @@
 		scope.problemReporter().notCompatibleTypesError(this, leftType, rightType);
 		return null;
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			this.left.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java
index 052ab62..28696a9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java
@@ -1,3 +1,4 @@
+// AspectJ
 /*******************************************************************************
  * Copyright (c) 2000, 2014 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -84,6 +85,7 @@
 		this.accessMode = accessMode;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		// must verify that exceptions potentially thrown by this expression are caught in the method.
 
@@ -143,6 +145,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 		if ((this.bits & ASTNode.IsReachable) == 0) {
 			return;
@@ -201,6 +204,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
 	 */
+	@Override
 	public TypeBinding[] genericTypeArguments() {
 		return this.genericTypeArguments;
 	}
@@ -209,10 +213,12 @@
 		return (this.accessMode == ExplicitConstructorCall.ImplicitSuper);
 	}
 
+	@Override
 	public boolean isSuperAccess() {
 		return this.accessMode != ExplicitConstructorCall.This;
 	}
 
+	@Override
 	public boolean isTypeAccess() {
 		return true;
 	}
@@ -271,6 +277,7 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		printIndent(indent, output);
 		if (this.qualification != null) this.qualification.printExpression(0, output).append('.');
@@ -298,6 +305,7 @@
 		return output.append(");"); //$NON-NLS-1$
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		// the return type should be void for a constructor.
 		// the test is made into getConstructor
@@ -407,7 +415,7 @@
 					if ((argumentTypes[i] = argument.resolveType(scope)) == null) {
 						argHasError = true;
 					}
-				}
+					}
 				if (argHasError) {
 					if (receiverType == null) {
 						return;
@@ -477,18 +485,22 @@
 		}
 	}
 
+	@Override
 	public void setActualReceiverType(ReferenceBinding receiverType) {
 		// ignored
 	}
 
+	@Override
 	public void setDepth(int depth) {
 		// ignore for here
 	}
 
+	@Override
 	public void setFieldIndex(int depth) {
 		// ignore for here
 	}
 	
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.qualification != null) {
@@ -508,10 +520,12 @@
 	}
 
 	// -- interface Invocation
+	@Override
 	public MethodBinding binding() {
 		return this.binding;
 	}
 
+	@Override
 	public void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18) {
 		// Nothing to do.
 	}
@@ -521,8 +535,9 @@
 		// Nothing to do.
 	}
 	
+	@Override
 	public InferenceContext18 getInferenceContext(ParameterizedMethodBinding method) {
-		return null;
+			return null;
 	}
 	
 	@Override
@@ -530,10 +545,12 @@
 		// Nothing to do.
 	}
 
+	@Override
 	public Expression[] arguments() {
 		return this.arguments;
 	}
 	// -- interface InvocationSite: --
+	@Override
 	public InferenceContext18 freshInferenceContext(Scope scope) {
 		return new InferenceContext18(scope, this.arguments, this, null);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.java
new file mode 100644
index 0000000..51094e3
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExportsStatement.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+public class ExportsStatement extends PackageVisibilityStatement {
+
+	public ExportsStatement(ImportReference pkgRef) {
+		this(pkgRef, null);
+	}
+	public ExportsStatement(ImportReference pkgRef, ModuleReference[] targets) {
+		super(pkgRef, targets);
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		printIndent(indent, output);
+		output.append("exports "); //$NON-NLS-1$
+		super.print(0, output);
+		output.append(";"); //$NON-NLS-1$
+		return output;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.java
index 2884bfb..caa9a87 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Expression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -234,6 +234,7 @@
 	super();
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return flowInfo;
 }
@@ -663,7 +664,7 @@
 		TypeBinding boxedType = scope.environment().computeBoxingType(runtimeType);
 		if (TypeBinding.equalsEquals(boxedType, runtimeType)) // Object o = 12;
 			boxedType = compileTimeType;
-		if (boxedType.id >= TypeIds.T_LastWellKnownTypeId) {  // (Comparable & Serializable) 0
+		if (boxedType.id > TypeIds.T_JavaLangBoolean) {       // (Comparable & Serializable) 0
 			boxedType = compileTimeType;
 		}
 		this.implicitConversion = TypeIds.BOXING | (boxedType.id << 4) + compileTimeType.id;
@@ -712,6 +713,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -1010,6 +1012,7 @@
 	return convertedType;
 }
 
+@Override
 public StringBuffer print(int indent, StringBuffer output) {
 	printIndent(indent, output);
 	return printExpression(indent, output);
@@ -1017,10 +1020,12 @@
 
 public abstract StringBuffer printExpression(int indent, StringBuffer output);
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	return print(indent, output).append(";"); //$NON-NLS-1$
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	// drops the returning expression's type whatever the type is.
 	this.resolveType(scope);
@@ -1087,7 +1092,10 @@
 			if (field.type.isRawType()) {
 				if (referenceContext instanceof AbstractMethodDeclaration) {
 					AbstractMethodDeclaration methodDecl = (AbstractMethodDeclaration) referenceContext;
-					if (TypeBinding.notEquals(field.declaringClass, methodDecl.binding.declaringClass)) { // inherited raw field, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=337962
+					ReferenceBinding declaringClass = methodDecl.binding != null 
+							? methodDecl.binding.declaringClass
+							: methodDecl.scope.enclosingReceiverType();
+					if (TypeBinding.notEquals(field.declaringClass, declaringClass)) { // inherited raw field, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=337962
 						return true;
 					}
 				} else if (referenceContext instanceof TypeDeclaration) {
@@ -1219,6 +1227,7 @@
  * @param visitor
  * @param scope
  */
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	// nothing to do
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.java
index 47d3fde..1f80c9f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExpressionContext.java
@@ -21,9 +21,11 @@
 	   Context induced by: ReturnStatement, ArrayInitializer, Assignment, FieldDeclaration and LocalDeclaration. 
 	*/
 	ASSIGNMENT_CONTEXT { 
+		@Override
 		public String toString() {
 			return "assignment context"; //$NON-NLS-1$
 		}
+		@Override
 		public boolean definesTargetType() {
 			return true;
 		}
@@ -37,9 +39,11 @@
 	   CodeSnippetAllocationExpression and CodeSnippetMessageSend.
 	*/													
 	INVOCATION_CONTEXT {
+		@Override
 		public String toString() {
 			return "invocation context"; //$NON-NLS-1$
 		}
+		@Override
 		public boolean definesTargetType() {
 			return true;
 		}
@@ -49,9 +53,11 @@
 	   Context induced by: CastExpression.
 	*/
 	CASTING_CONTEXT {
+		@Override
 		public String toString() {
 			return "casting context"; //$NON-NLS-1$
 		}
+		@Override
 		public boolean definesTargetType() {
 			return false;
 		}
@@ -61,9 +67,11 @@
 	   expressions get evaluated, unless they feature in one of the above contexts. 
 	*/
 	VANILLA_CONTEXT {
+		@Override
 		public String toString() {
 			return "vanilla context"; //$NON-NLS-1$
 		}
+		@Override
 		public boolean definesTargetType() {
 			return false;
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.java
index 5bd336b..711b8fb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ExtendedStringLiteral.java
@@ -36,6 +36,7 @@
 	/**
 	 * Add the lit source to mine, just as if it was mine
 	 */
+	@Override
 	public ExtendedStringLiteral extendWith(CharLiteral lit) {
 
 		//update the source
@@ -50,6 +51,7 @@
 	/**
 	 *  Add the lit source to mine, just as if it was mine
 	 */
+	@Override
 	public ExtendedStringLiteral extendWith(StringLiteral lit) {
 
 		//uddate the source
@@ -66,6 +68,7 @@
 		return this;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		// AspectJ extension - replaced this line (pr255421)
 		// return output.append("ExtendedStringLiteral{").append(this.source).append('}'); //$NON-NLS-1$
@@ -74,6 +77,7 @@
 		// End AspectJ extension
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 		visitor.visit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java
index 1fbfafa..5551b38 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java
@@ -133,9 +133,11 @@
 			flowInfo.markNullStatus(this.binding, nullStatus); // mark that this flow has seen the resource
 	}
 	
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream)
 	{ /* NOP - this variable is completely dummy, ie. for analysis only. */ }
 
+	@Override
 	public void resolve (BlockScope scope) {
 		// only need the binding, which is used as reference in FlowInfo methods.
 		this.binding = new LocalVariableBinding(
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.java
index d293f9c..04f1ae0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FalseLiteral.java
@@ -24,6 +24,7 @@
 public FalseLiteral(int s , int e) {
 	super(s,e);
 }
+@Override
 public void computeConstant() {
 	this.constant = BooleanConstant.fromValue(false);
 }
@@ -34,6 +35,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -41,6 +43,7 @@
 	}
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
+@Override
 public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 
 	// falseLabel being not nil means that we will not fall through into the FALSE case
@@ -56,15 +59,18 @@
 	}
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.BOOLEAN;
 }
 /**
  *
  */
+@Override
 public char[] source() {
 	return source;
 }
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
index 4eb5543..1a4808e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java
@@ -111,6 +111,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & IsReachable) == 0) {
 		return;
@@ -145,6 +146,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration#getKind()
  */
+@Override
 public int getKind() {
 	return this.type == null ? ENUM_CONSTANT : FIELD;
 }
@@ -161,6 +163,7 @@
 	return (this.modifiers & ClassFileConstants.AccFinal) != 0;
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	if (this.javadoc != null) {
 		this.javadoc.print(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
index 5f27886..d2a462a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FieldReference.java
@@ -1,3 +1,4 @@
+// AspectJ
 /*******************************************************************************
  * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -76,6 +77,7 @@
 
 }
 
+@Override
 public FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) {
 	// compound assignment extra work
 	if (isCompound) { // check the variable part is initialized if blank final
@@ -140,10 +142,12 @@
 	return flowInfo;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return analyseCode(currentScope, flowContext, flowInfo, true);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) {
 	boolean nonStatic = !this.binding.isStatic();
 	this.receiver.analyseCode(currentScope, flowContext, flowInfo, nonStatic);
@@ -166,6 +170,7 @@
 	return flowInfo;
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if (flowContext.isNullcheckedFieldAccess(this)) {
 		return true; // enough seen
@@ -176,6 +181,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#computeConversion(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) {
 	if (runtimeTimeType == null || compileTimeType == null)
 		return;
@@ -204,10 +210,12 @@
 	super.computeConversion(scope, runtimeTimeType, compileTimeType);
 }
 
+@Override
 public FieldBinding fieldBinding() {
 	return this.binding;
 }
 
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	int pc = codeStream.position;
 	FieldBinding codegenBinding = this.binding.original();
@@ -228,6 +236,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -334,6 +343,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceEnd);
 }
 
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	boolean isStatic;
 	// check if compound assignment is the only usage of a private field
@@ -383,6 +393,7 @@
 	// no need for generic cast as value got dupped
 }
 
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	boolean isStatic;
 	// check if postIncrement is the only usage of a private field
@@ -448,14 +459,17 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return null;
 }
 
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return null;
 }
 
+@Override
 public boolean isEquivalent(Reference reference) {
 	// only consider field references relative to "this":
 	if (this.receiver.isThis() && !(this.receiver instanceof QualifiedThisReference)) {
@@ -507,6 +521,7 @@
 	return result;
 }
 
+@Override
 public boolean isSuperAccess() {
 	return this.receiver.isSuper();
 }
@@ -516,10 +531,12 @@
 	return this.receiver.isQualifiedSuper();
 }
 
+@Override
 public boolean isTypeAccess() {
 	return this.receiver != null && this.receiver.isTypeReference();
 }
 
+@Override
 public FieldBinding lastFieldBinding() {
 	return this.binding;
 }
@@ -580,6 +597,7 @@
 	}
 }
 
+@Override
 public Constant optimizedBooleanConstant() {
 	if (this.resolvedType == null)
 		return Constant.NotAConstant;
@@ -595,6 +613,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#postConversionType(Scope)
  */
+@Override
 public TypeBinding postConversionType(Scope scope) {
 	TypeBinding convertedType = this.resolvedType;
 	if (this.genericCast != null)
@@ -633,10 +652,12 @@
 	return convertedType;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	return this.receiver.printExpression(0, output).append('.').append(this.token);
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Answer the signature type of the field.
 	// constants are propaged when the field is final
@@ -745,10 +766,12 @@
 	return fieldType;
 }
 
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	this.actualReceiverType = receiverType;
 }
 
+@Override
 public void setDepth(int depth) {
 	this.bits &= ~ASTNode.DepthMASK; // flush previous depth if any
 	if (depth > 0) {
@@ -756,10 +779,12 @@
 	}
 }
 
+@Override
 public void setFieldIndex(int index) {
 	// ignored
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.receiver.traverse(visitor, scope);
@@ -767,6 +792,7 @@
 	visitor.endVisit(this, scope);
 }
 
+@Override
 public VariableBinding nullAnnotatedVariableBinding(boolean supportTypeAnnotations) {
 	if (this.binding != null) {
 		if (supportTypeAnnotations
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.java
index 2747486..533135d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FloatLiteral.java
@@ -26,6 +26,7 @@
 	super(token, s, e);
 }
 
+@Override
 public void computeConstant() {
 	Float computedValue;
 	boolean containsUnderscores = CharOperation.indexOf('_', this.source) > 0;
@@ -106,6 +107,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -114,10 +116,12 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.FLOAT;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.java
index b0a6c2b..5e5c6c1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForStatement.java
@@ -64,6 +64,7 @@
 		}
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		this.breakLabel = new BranchLabel();
 		this.continueLabel = new BranchLabel();
@@ -242,6 +243,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		if ((this.bits & IsReachable) == 0) {
@@ -353,6 +355,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output).append("for ("); //$NON-NLS-1$
@@ -386,6 +389,7 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(BlockScope upperScope) {
 
 		// use the scope that will hold the init declarations
@@ -404,6 +408,7 @@
 			this.action.resolve(this.scope);
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.java
index f82bd3a..30987b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ForeachStatement.java
@@ -1,10 +1,11 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
@@ -19,6 +20,7 @@
  *								Bug 415790 - [compiler][resource]Incorrect potential resource leak warning in for loop with close in try/catch
  *     Jesper S Moller -  Contribution for
  *								bug 401853 - Eclipse Java compiler creates invalid bytecode (java.lang.VerifyError)
+ *                               bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
@@ -87,6 +89,7 @@
 		this.kind = -1;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		// initialize break and continue labels
 		this.breakLabel = new BranchLabel();
@@ -197,6 +200,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		if ((this.bits & IsReachable) == 0) {
@@ -395,6 +399,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 
 		printIndent(indent, output).append("for ("); //$NON-NLS-1$
@@ -415,6 +420,47 @@
 		return output;
 	}
 
+	private TypeBinding getCollectionElementType(TypeBinding collectionType) {
+		if (collectionType == null) return null;
+		
+		boolean isTargetJsr14 = this.scope.compilerOptions().targetJDK == ClassFileConstants.JDK1_4;
+		if (collectionType.isCapture()) {
+			TypeBinding upperBound = ((CaptureBinding)collectionType).firstBound;
+			if (upperBound != null && upperBound.isArrayType())
+				collectionType = upperBound; // partially anticipating the fix for https://bugs.openjdk.java.net/browse/JDK-8013843
+		}
+		if (collectionType.isArrayType()) { // for(E e : E[])
+			return ((ArrayBinding) collectionType).elementsType();
+		} else if (collectionType instanceof ReferenceBinding) {
+			ReferenceBinding iterableType = ((ReferenceBinding)collectionType).findSuperTypeOriginatingFrom(T_JavaLangIterable, false /*Iterable is not a class*/);
+			if (iterableType == null && isTargetJsr14) {
+				iterableType = ((ReferenceBinding)collectionType).findSuperTypeOriginatingFrom(T_JavaUtilCollection, false /*Iterable is not a class*/);
+			}
+			if (iterableType == null) return null;
+
+			TypeBinding[] arguments = null;
+			switch (iterableType.kind()) {
+				case Binding.RAW_TYPE : // for(Object o : Iterable)
+					return this.scope.getJavaLangObject();
+
+				case Binding.GENERIC_TYPE : // for (T t : Iterable<T>) - in case used inside Iterable itself
+					arguments = iterableType.typeVariables();
+					break;
+
+				case Binding.PARAMETERIZED_TYPE : // for(E e : Iterable<E>)
+					arguments = ((ParameterizedTypeBinding)iterableType).arguments;
+					break;
+
+				default:
+					return null;
+			}
+			// generic or parameterized case
+			if (arguments.length != 1) return null; // per construction can only be one
+			return arguments[0];
+		}
+		return null;
+	}
+	@Override
 	public void resolve(BlockScope upperScope) {
 		// use the scope that will hold the init declarations
 		this.scope = new BlockScope(upperScope);
@@ -422,6 +468,25 @@
 		TypeBinding elementType = this.elementVariable.type.resolvedType;
 		TypeBinding collectionType = this.collection == null ? null : this.collection.resolveType(upperScope);
 
+		// Patch the resolved type
+		if (this.elementVariable.isTypeNameVar(upperScope)) {
+			if (this.elementVariable.type.dimensions() > 0 || this.elementVariable.type.extraDimensions() > 0) {
+				upperScope.problemReporter().varLocalCannotBeArray(this.elementVariable);
+			}
+			if (TypeBinding.equalsEquals(TypeBinding.NULL, collectionType)) {
+				upperScope.problemReporter().varLocalInitializedToNull(this.elementVariable);
+				elementType = collectionType;
+			} else if (TypeBinding.equalsEquals(TypeBinding.VOID, collectionType)) {
+				upperScope.problemReporter().varLocalInitializedToVoid(this.elementVariable);
+				elementType = collectionType;
+			}
+			if ((elementType = getCollectionElementType(collectionType)) == null) {
+				elementType = collectionType;
+			} else {
+				elementType = this.elementVariable.patchType(elementType);
+			}
+		}
+
 		TypeBinding expectedCollectionType = null;
 		if (elementType != null && collectionType != null) {
 			boolean isTargetJsr14 = this.scope.compilerOptions().targetJDK == ClassFileConstants.JDK1_4;
@@ -578,6 +643,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.java
index 834b6c3..6f2dc91 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/FunctionalExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2016 IBM Corporation and others.
+ * Copyright (c) 2013, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,7 +35,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ImplicitNullAnnotationVerifier;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
@@ -46,7 +45,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
@@ -67,6 +65,7 @@
 	protected static IErrorHandlingPolicy silentErrorHandlingPolicy = DefaultErrorHandlingPolicies.ignoreAllProblems();
 	private boolean hasReportedSamProblem = false;
 	public boolean isSerializable;
+	public int ordinal;
 
 	public FunctionalExpression(CompilationResult compilationResult) {
 		this.compilationResult = compilationResult;
@@ -76,6 +75,7 @@
 		super();
 	}
 	
+	@Override
 	public boolean isBoxingCompatibleWith(TypeBinding targetType, Scope scope) {
 		return false;
 	}
@@ -89,21 +89,26 @@
 		return null;
 	}
 
+	@Override
 	public void setExpectedType(TypeBinding expectedType) {
 		this.expectedType = expectedType;
 	}
 	
+	@Override
 	public void setExpressionContext(ExpressionContext context) {
 		this.expressionContext = context;
 	}
 
+	@Override
 	public ExpressionContext getExpressionContext() {
 		return this.expressionContext;
 	}
 
+	@Override
 	public boolean isPolyExpression(MethodBinding candidate) {
 		return true;
 	}
+	@Override
 	public boolean isPolyExpression() {
 		return true; // always as per introduction of part D, JSR 335
 	}
@@ -113,6 +118,7 @@
 		return true;
 	}
 	
+	@Override
 	public boolean isPertinentToApplicability(TypeBinding targetType, MethodBinding method) {
 		if (targetType instanceof TypeVariableBinding) {
 			TypeVariableBinding typeVariable = (TypeVariableBinding) targetType;
@@ -129,6 +135,7 @@
 		return true;
 	}
 
+	@Override
 	public TypeBinding invocationTargetType() {
 		if (this.expectedType == null) return null;
 		// when during inference this expression mimics as an invocationSite,
@@ -144,6 +151,7 @@
 		return null;
 	}
 
+	@Override
 	public TypeBinding expectedType() {
 		return this.expectedType;
 	}
@@ -171,6 +179,7 @@
 		return 0; // not reached.
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope blockScope) {
 		return resolveType(blockScope, false);
 	}
@@ -202,10 +211,6 @@
 			}
 			LookupEnvironment environment = blockScope.environment();
 			if (environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
-				if ((sam.tagBits & TagBits.IsNullnessKnown) == 0) {
-					new ImplicitNullAnnotationVerifier(environment, environment.globalOptions.inheritNullAnnotations)
-							.checkImplicitNullAnnotations(sam, null, false, blockScope);
-				}
 				NullAnnotationMatching.checkForContradictions(sam, this, blockScope);
 			}
 			return this.resolvedType = this.expectedType;		
@@ -251,17 +256,20 @@
 			}
 		}
 		
+		@Override
 		public boolean visit(ReferenceBinding referenceBinding) {
 			checkVisibility(referenceBinding);
 			return true;
 		}
 
 		
+		@Override
 		public boolean visit(ParameterizedTypeBinding parameterizedTypeBinding) {
 			checkVisibility(parameterizedTypeBinding);
 			return true;
 		}
 		
+		@Override
 		public boolean visit(RawTypeBinding rawTypeBinding) {
 			checkVisibility(rawTypeBinding);
 			return true;
@@ -375,4 +383,7 @@
 	boolean requiresBridges() {
 		return getRequiredBridges() != null; 
 	}
+	public void cleanUp() {
+		// to be overridden by sub-classes
+	}
 }
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.java
index d04417d..3397a68 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IfStatement.java
@@ -57,6 +57,7 @@
 	this.sourceEnd = sourceEnd;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// process the condition
 	FlowInfo conditionFlowInfo = this.condition.analyseCode(currentScope, flowContext, flowInfo);
@@ -159,6 +160,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & IsReachable) == 0) {
 		return;
@@ -256,6 +258,7 @@
 
 
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	printIndent(indent, output).append("if ("); //$NON-NLS-1$
 	this.condition.printExpression(0, output).append(")\n");	//$NON-NLS-1$
@@ -269,6 +272,7 @@
 	return output;
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	TypeBinding type = this.condition.resolveTypeExpecting(scope, TypeBinding.BOOLEAN);
 	this.condition.computeConversion(scope, type, type);
@@ -278,6 +282,7 @@
 		this.elseStatement.resolve(scope);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		this.condition.traverse(visitor, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.java
index adab7ec..e594520 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ImportReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,9 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
@@ -54,6 +57,22 @@
 		return this.tokens;
 	}
 
+	public void checkPackageConflict(CompilationUnitScope scope) {
+		ModuleBinding module = scope.module();
+		PackageBinding visiblePackage = module.getVisiblePackage(this.tokens);
+		if (visiblePackage instanceof SplitPackageBinding) {
+			Set<ModuleBinding> declaringMods = new HashSet<>();
+			for (PackageBinding incarnation : ((SplitPackageBinding) visiblePackage).incarnations) {
+				if (incarnation.enclosingModule != module && module.canAccess(incarnation))
+					declaringMods.add(incarnation.enclosingModule);
+			}
+			if (!declaringMods.isEmpty()) {
+				scope.problemReporter().conflictingPackagesFromOtherModules(this, declaringMods);
+			}
+		}
+	}
+
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		return print(indent, output, true);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.java
index b9aaa73..01074d6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Initializer.java
@@ -37,6 +37,7 @@
 		}
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		MethodScope currentScope,
 		FlowContext flowContext,
@@ -55,6 +56,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		if ((this.bits & IsReachable) == 0) {
@@ -68,10 +70,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return INITIALIZER;
 	}
 
+	@Override
 	public boolean isStatic() {
 
 		return (this.modifiers & ClassFileConstants.AccStatic) != 0;
@@ -86,6 +90,7 @@
 		parser.parse(this, typeDeclaration, unit);
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 
 		if (this.modifiers != 0) {
@@ -109,6 +114,7 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(MethodScope scope) {
 
 		FieldBinding previousField = scope.initializedField;
@@ -141,6 +147,7 @@
 		return this.methodBinding;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, MethodScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.block != null) this.block.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.java
index 2927e65..eaf7b18 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/InstanceOfExpression.java
@@ -42,6 +42,7 @@
 	this.sourceEnd = type.sourceEnd;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	LocalVariableBinding local = this.expression.localVariableBinding();
 	if (local != null && (local.type.tagBits & TagBits.IsBaseType) == 0) {
@@ -71,6 +72,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
 */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	this.expression.generateCode(currentScope, codeStream, true);
@@ -83,11 +85,13 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 	this.expression.printExpression(indent, output).append(" instanceof "); //$NON-NLS-1$
 	return this.type.print(0, output);
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	this.constant = Constant.NotAConstant;
 	TypeBinding expressionType = this.expression.resolveType(scope);
@@ -115,12 +119,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#tagAsUnnecessaryCast(Scope,TypeBinding)
  */
+@Override
 public void tagAsUnnecessaryCast(Scope scope, TypeBinding castType) {
 	// null is not instanceof Type, recognize direct scenario
 	if (this.expression.resolvedType != TypeBinding.NULL)
 		scope.problemReporter().unnecessaryInstanceof(this, castType);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.expression.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java
index 7cf3af9..9169852 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java
@@ -63,6 +63,7 @@
 	this.value = value;
 	this.constant = constant;
 }
+@Override
 public void computeConstant() {
 	char[] token = this.reducedForm != null ? this.reducedForm : this.source;
 	int tokenLength = token.length;
@@ -158,6 +159,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -166,9 +168,11 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.INT;
 }
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java
index ca0a9f4..e92aa91 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java
@@ -20,6 +20,7 @@
 	super(token, reducedToken, start, end, Integer.MIN_VALUE, IntConstant.fromValue(Integer.MIN_VALUE));
 }
 
+@Override
 public void computeConstant(){
 	/*precomputed at creation time*/ }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.java
index a85e637..03a31ad 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/IntersectionCastTypeReference.java
@@ -43,13 +43,12 @@
 		}
 	}
 
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		throw new UnsupportedOperationException(); // no syntax for this.
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getLastToken()
-	 */
+	@Override
 	public char[] getLastToken() {
 		return null;
 	}
@@ -57,17 +56,17 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
 	 */
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 		return null; // not supported here - combined with resolveType(...)
 	}
 
+	@Override
 	public TypeReference[] getTypeReferences() {
 		return this.typeReferences;
 	}
 	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
-	 */
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 
 		int length = this.typeReferences.length;
@@ -156,17 +155,13 @@
 		return (this.resolvedType = intersectionType);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeName()
-	 */
+	@Override
 	public char[][] getTypeName() {
 		// we need to keep a return value that is a char[][]
 		return this.typeReferences[0].getTypeName();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
-	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			int length = this.typeReferences == null ? 0 : this.typeReferences.length;
@@ -177,16 +172,12 @@
 		visitor.endVisit(this, scope);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope)
-	 */
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		throw new UnsupportedOperationException("Unexpected traversal request: IntersectionTypeReference in class scope"); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		int length = this.typeReferences == null ? 0 : this.typeReferences.length;
 		printIndent(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.java
index cb973fc..8c2bfc2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Javadoc.java
@@ -150,6 +150,7 @@
 	/*
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#print(int, java.lang.StringBuffer)
 	 */
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		printIndent(indent, output).append("/**\n"); //$NON-NLS-1$
 		if (this.paramReferences != null) {
@@ -895,6 +896,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.paramReferences != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.java
index 6fd34e6..f791f36 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocAllocationExpression.java
@@ -147,17 +147,21 @@
 		return allocationType;
 	}
 
+	@Override
 	public boolean isSuperAccess() {
 		return (this.bits & ASTNode.SuperAccess) != 0;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		return internalResolveType(scope);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope) {
 		return internalResolveType(scope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.typeArguments != null) {
@@ -175,6 +179,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.typeArguments != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
index fae768d..dd1e043 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
@@ -78,6 +78,7 @@
 		return null;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		if (this.argument == null) {
 			if (this.token != null) {
@@ -90,16 +91,19 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		if (this.argument != null) {
 			this.argument.resolve(scope);
 		}
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		return internalResolveType(scope);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope) {
 		return internalResolveType(scope);
 	}
@@ -108,6 +112,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 		if (visitor.visit(this, blockScope)) {
 			if (this.argument != null) {
@@ -116,6 +121,7 @@
 		}
 		visitor.endVisit(this, blockScope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope blockScope) {
 		if (visitor.visit(this, blockScope)) {
 			if (this.argument != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.java
index 382c993..24f3de8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArrayQualifiedTypeReference.java
@@ -26,9 +26,11 @@
 		super(typeRef.tokens, dim, typeRef.sourcePositions);
 	}
 
+	@Override
 	protected void reportInvalidType(Scope scope) {
 		scope.problemReporter().javadocInvalidType(this, this.resolvedType, scope.getDeclarationModifiers());
 	}
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers());
 	}
@@ -37,11 +39,13 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.java
index ec9721b..f753562 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocArraySingleTypeReference.java
@@ -24,9 +24,11 @@
 		this.bits |= InsideJavadoc;
 	}
 
+	@Override
 	protected void reportInvalidType(Scope scope) {
 		scope.problemReporter().javadocInvalidType(this, this.resolvedType, scope.getDeclarationModifiers());
 	}
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers());
 	}
@@ -35,11 +37,13 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.java
index c6f8542..2921ec3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocFieldReference.java
@@ -111,10 +111,12 @@
 		return this.resolvedType = this.binding.type;
 	}
 
+	@Override
 	public boolean isSuperAccess() {
 		return (this.bits & ASTNode.SuperAccess) != 0;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		if (this.receiver != null) {
@@ -124,10 +126,12 @@
 		return output;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		return internalResolveType(scope);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope) {
 		return internalResolveType(scope);
 	}
@@ -136,6 +140,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 		if (visitor.visit(this, scope)) {
@@ -145,6 +150,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 
 		if (visitor.visit(this, scope)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.java
index 5db2571..152acbd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocImplicitTypeReference.java
@@ -27,25 +27,23 @@
 		this.sourceEnd = pos;
 	}
 	
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
-	 */
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 		this.constant = Constant.NotAConstant;
 		return this.resolvedType = scope.enclosingReceiverType();
 	}
 
+	@Override
 	public char[] getLastToken() {
 		return this.token;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeName()
-	 */
+	@Override
 	public char[][] getTypeName() {
 		if (this.token != null) {
 			char[][] tokens = { this.token };
@@ -53,6 +51,7 @@
 		}
 		return null;
 	}
+	@Override
 	public boolean isThis() {
 		return true;
 	}
@@ -61,6 +60,7 @@
 	 * Resolves type on a Block, Class or CompilationUnit scope.
 	 * We need to modify resoling behavior to avoid raw type creation.
 	 */
+	@Override
 	protected TypeBinding internalResolveType(Scope scope, int location) {
 		// handle the error here
 		this.constant = Constant.NotAConstant;
@@ -114,23 +114,28 @@
 		return this.resolvedType = type;
 	}
 
+	@Override
 	protected void reportInvalidType(Scope scope) {
 		scope.problemReporter().javadocInvalidType(this, this.resolvedType, scope.getDeclarationModifiers());
 	}
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers());
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		return new StringBuffer();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.java
index 2243f33..35448e2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocMessageSend.java
@@ -176,13 +176,12 @@
 		return this.resolvedType = this.binding.returnType;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#isSuperAccess()
-	 */
+	@Override
 	public boolean isSuperAccess() {
 		return (this.bits & ASTNode.SuperAccess) != 0;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		if (this.receiver != null) {
@@ -198,10 +197,12 @@
 		return output.append(')');
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		return internalResolveType(scope);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope) {
 		return internalResolveType(scope);
 	}
@@ -210,6 +211,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 		if (visitor.visit(this, blockScope)) {
 			if (this.receiver != null) {
@@ -227,6 +229,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.receiver != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.java
index c1be056..e37792b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocQualifiedTypeReference.java
@@ -65,21 +65,26 @@
 		}
 		return this.resolvedType;
 	}
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers());
 	}
 	
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope, int index) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers(), index);
 	}
 
+	@Override
 	protected void reportInvalidType(Scope scope) {
 		scope.problemReporter().javadocInvalidType(this, this.resolvedType, scope.getDeclarationModifiers());
 	}
+	@Override
 	public TypeBinding resolveType(BlockScope blockScope, boolean checkBounds, int location) {
 		return internalResolveType(blockScope, checkBounds);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope classScope, int location) {
 		return internalResolveType(classScope, false);
 	}
@@ -88,11 +93,13 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.java
index 6f97405..1065bbd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocReturnStatement.java
@@ -21,9 +21,7 @@
 		this.bits |= (ASTNode.InsideJavadoc | ASTNode.Empty);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement#resolve(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
-	 */
+	@Override
 	public void resolve(BlockScope scope) {
 		MethodScope methodScope = scope.methodScope();
 		MethodBinding methodBinding = null;
@@ -40,9 +38,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement#printStatement(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 		printIndent(tab, output).append("return"); //$NON-NLS-1$
 		if ((this.bits & ASTNode.Empty) == 0)
@@ -54,6 +50,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.java
index a1bd12b..a389c84 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleNameReference.java
@@ -24,6 +24,7 @@
 		this.bits |= InsideJavadoc;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		resolve(scope, true, scope.compilerOptions().reportUnusedParameterIncludeDocCommentReference);
 	}
@@ -56,6 +57,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
@@ -64,6 +66,7 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.java
index 7c1fa05..4aec1c4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/JavadocSingleTypeReference.java
@@ -38,6 +38,7 @@
 	/*
 	 * We need to modify resolving behavior to handle package references
 	 */
+	@Override
 	protected TypeBinding internalResolveType(Scope scope, int location) {
 		// handle the error here
 		this.constant = Constant.NotAConstant;
@@ -89,10 +90,12 @@
 		}
 		return this.resolvedType;
 	}
+	@Override
 	protected void reportDeprecatedType(TypeBinding type, Scope scope) {
 		scope.problemReporter().javadocDeprecatedType(type, this, scope.getDeclarationModifiers());
 	}
 
+	@Override
 	protected void reportInvalidType(Scope scope) {
 		scope.problemReporter().javadocInvalidType(this, this.resolvedType, scope.getDeclarationModifiers());
 	}
@@ -101,11 +104,13 @@
 	 * Redefine to capture javadoc specific signatures
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.java
index 0bb3687..c2dc548 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LabeledStatement.java
@@ -39,6 +39,7 @@
 		this.sourceEnd = sourceEnd;
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -78,6 +79,7 @@
 		}
 	}
 
+	@Override
 	public ASTNode concreteStatement() {
 
 		// return statement.concreteStatement(); // for supporting nested labels:   a:b:c: someStatement (see 21912)
@@ -92,6 +94,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		if ((this.bits & IsReachable) == 0) {
@@ -113,6 +116,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output).append(this.label).append(": "); //$NON-NLS-1$
@@ -123,6 +127,7 @@
 		return output;
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		if (this.statement != null) {
@@ -131,6 +136,7 @@
 	}
 
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.java
index 5c5dcf6..54ee11e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LambdaExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2016 IBM Corporation and others.
+ * Copyright (c) 2012, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,6 +65,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
@@ -92,6 +93,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.WildcardBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
@@ -118,7 +120,6 @@
 	private boolean assistNode = false;
 	private boolean hasIgnoredMandatoryErrors = false;
 	private ReferenceBinding classType;
-	public int ordinal;
 	private Set thrownExceptions;
 	public char[] text;  // source representation of the lambda.
 	private static final SyntheticArgumentBinding [] NO_SYNTHETIC_ARGUMENTS = new SyntheticArgumentBinding[0];
@@ -176,6 +177,7 @@
 		return this.original;
 	}
 	
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		if (this.shouldCaptureInstance) {
 			this.binding.modifiers &= ~ClassFileConstants.AccStatic;
@@ -215,6 +217,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);		
 	}
 
+	@Override
 	public boolean kosherDescriptor(Scope currentScope, MethodBinding sam, boolean shouldChatter) {
 		if (sam.typeVariables != Binding.NO_TYPE_VARIABLES) {
 			if (shouldChatter)
@@ -230,6 +233,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypesFor(MethodBinding)
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(ClassScope)
 	 */
+	@Override
 	public TypeBinding resolveType(BlockScope blockScope, boolean skipKosherCheck) {
 		
 		boolean argumentsTypeElided = argumentsTypeElided();
@@ -332,13 +336,18 @@
 					if (groundType != expectedSAMType) { //$IDENTITY-COMPARISON$
 						if (!groundType.isCompatibleWith(expectedSAMType, this.scope)) { // the ground has shifted, are we still on firm grounds ? 
 							blockScope.problemReporter().typeMismatchError(groundType, this.expectedType, this, null); // report deliberately against block scope so as not to blame the lambda.
-							return this.resolvedType = null;
+							return null;
 						}
 					}
 					this.resolvedType = groundType;
 				}
+			} else {
+				this.binding = new ProblemMethodBinding(TypeConstants.ANONYMOUS_METHOD, null, ProblemReasons.NotAWellFormedParameterizedType);
+				reportSamProblem(blockScope, this.binding);
+				return this.resolvedType = null;
 			}
 		}
+		boolean parametersHaveErrors = false;
 		boolean genericSignatureNeeded = this.requiresGenericSignature || blockScope.compilerOptions().generateGenericSignatureForLambdaExpressions;
 		for (int i = 0; i < argumentsLength; i++) {
 			Argument argument = this.arguments[i];
@@ -348,8 +357,10 @@
 			if (argumentType != null && argumentType != TypeBinding.VOID) {
 				if (haveDescriptor && expectedParameterType != null && argumentType.isValidBinding() && TypeBinding.notEquals(argumentType, expectedParameterType)) {
 					if (expectedParameterType.isProperType(true)) {
-						this.scope.problemReporter().lambdaParameterTypeMismatched(argument, argument.type, expectedParameterType);
-						this.resolvedType = null; // continue to type check.
+						if (!isOnlyWildcardMismatch(expectedParameterType, argumentType)) {
+							this.scope.problemReporter().lambdaParameterTypeMismatched(argument, argument.type, expectedParameterType);
+							parametersHaveErrors = true; // continue to type check, but don't signal success
+						}
 					}
 				}
 				if (genericSignatureNeeded) {
@@ -439,9 +450,33 @@
 		if (this.shouldCaptureInstance && this.scope.isConstructorCall) {
 			this.scope.problemReporter().fieldsOrThisBeforeConstructorInvocation(this);
 		}
-		return argumentsHaveErrors ? this.resolvedType = null : this.resolvedType;
+		return (argumentsHaveErrors|parametersHaveErrors) ? null : this.resolvedType;
 	}
 
+	// check if the given types are parameterized types and if their type arguments
+	// differ only in a wildcard
+	// ? and ? extends Object
+	private boolean isOnlyWildcardMismatch(TypeBinding expected, TypeBinding argument) {
+		boolean onlyWildcardMismatch = false;
+		if (expected.isParameterizedType() && argument.isParameterizedType()) {
+			TypeBinding[] expectedArgs = ((ParameterizedTypeBinding)expected).typeArguments();
+			TypeBinding[] args = ((ParameterizedTypeBinding)argument).typeArguments();
+			for (int j = 0; j < args.length; j++) {
+				if (TypeBinding.notEquals(expectedArgs[j], args[j])) {
+					if (expectedArgs[j].isWildcard() && args[j].isUnboundWildcard()) {
+						WildcardBinding wc = (WildcardBinding)expectedArgs[j];
+						TypeBinding bound = wc.allBounds();
+						if (bound != null && wc.boundKind == Wildcard.EXTENDS && bound.id == TypeIds.T_JavaLangObject)
+							onlyWildcardMismatch = true;
+					} else {
+						onlyWildcardMismatch = false;
+						break;
+					}
+				}
+			}
+		}
+		return onlyWildcardMismatch;
+	}
 	private ReferenceBinding findGroundTargetType(BlockScope blockScope, TypeBinding targetType, TypeBinding expectedSAMType, boolean argumentTypesElided) {
 		
 		if (expectedSAMType instanceof IntersectionTypeBinding18)
@@ -476,12 +511,16 @@
 		return blockScope.environment().createParameterizedType(genericType, types, withWildCards.enclosingType());
 	}
 
+	@Override
 	public boolean argumentsTypeElided() {
 		return this.arguments.length > 0 && this.arguments[0].hasElidedType();
 	}
 
 	private void analyzeExceptions() {
 		ExceptionHandlingFlowContext ehfc;
+		CompilerOptions compilerOptions = this.scope.compilerOptions();
+		boolean oldAnalyseResources = compilerOptions.analyseResourceLeaks;
+		compilerOptions.analyseResourceLeaks = false;
 		try {
 			this.body.analyseCode(this.scope, 
 									 ehfc = new ExceptionInferenceFlowContext(null, this, Binding.NO_EXCEPTIONS, null, this.scope, FlowInfo.DEAD_END), 
@@ -489,8 +528,11 @@
 			this.thrownExceptions = ehfc.extendedExceptions == null ? Collections.emptySet() : new HashSet<TypeBinding>(ehfc.extendedExceptions);
 		} catch (Exception e) {
 			// drop silently.
+		} finally {
+			compilerOptions.analyseResourceLeaks = oldAnalyseResources;
 		}
 	}
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, final FlowInfo flowInfo) {
 		
 		if (this.ignoreFurtherInvestigation) 
@@ -596,22 +638,27 @@
 		}
 	}
 
+	@Override
 	public boolean isPertinentToApplicability(final TypeBinding targetType, final MethodBinding method) {
 
 		class NotPertientToApplicability extends RuntimeException {
 			private static final long serialVersionUID = 1L;
 		}
 		class ResultsAnalyser extends ASTVisitor {
+			@Override
 			public boolean visit(TypeDeclaration type, BlockScope skope) {
 				return false;
 			}
+			@Override
 			public boolean visit(TypeDeclaration type, ClassScope skope) {
 				return false;
 			}
+			@Override
 			public boolean visit(LambdaExpression type, BlockScope skope) {
 				return false;
 			}
-		    public boolean visit(ReturnStatement returnStatement, BlockScope skope) {
+		    @Override
+			public boolean visit(ReturnStatement returnStatement, BlockScope skope) {
 		    	if (returnStatement.expression != null) {
 					if (!returnStatement.expression.isPertinentToApplicability(targetType, method))
 						throw new NotPertientToApplicability();
@@ -660,6 +707,7 @@
 		return this.valueCompatible;
 	}
 	
+	@Override
 	public StringBuffer printExpression(int tab, StringBuffer output) {
 		return printExpression(tab, output, false);
 	}
@@ -694,6 +742,7 @@
 		return this.descriptor != null && this.descriptor.isValidBinding() ? this.descriptor.returnType : null;
 	}
 	
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 
 			if (visitor.visit(this, blockScope)) {
@@ -727,16 +776,20 @@
 		
 	private void analyzeShape() { // Simple minded analysis for code assist & potential compatibility.
 		class ShapeComputer extends ASTVisitor {
+			@Override
 			public boolean visit(TypeDeclaration type, BlockScope skope) {
 				return false;
 			}
+			@Override
 			public boolean visit(TypeDeclaration type, ClassScope skope) {
 				return false;
 			}
+			@Override
 			public boolean visit(LambdaExpression type, BlockScope skope) {
 				return false;
 			}
-		    public boolean visit(ReturnStatement returnStatement, BlockScope skope) {
+		    @Override
+			public boolean visit(ReturnStatement returnStatement, BlockScope skope) {
 		    	if (returnStatement.expression != null) {
 		    		LambdaExpression.this.valueCompatible = true;
 		    		LambdaExpression.this.voidCompatible = false;
@@ -795,6 +848,7 @@
 		return true;
 	}
 	
+	@Override
 	public boolean isCompatibleWith(TypeBinding targetType, final Scope skope) {
 		
 		if (!super.isPertinentToApplicability(targetType, null))
@@ -905,6 +959,7 @@
 	 * @param targetType the target functional type against which inference is attempted, must be a non-null valid functional type 
 	 * @return a resolved copy of 'this' or null if significant errors where encountered
 	 */
+	@Override
 	public LambdaExpression resolveExpressionExpecting(TypeBinding targetType, Scope skope, InferenceContext18 context) {
 		LambdaExpression copy = null;
 		try {
@@ -915,6 +970,7 @@
 		return copy;
 	}
 
+	@Override
 	public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope skope) {
 		
 		// 15.12.2.5 
@@ -924,15 +980,28 @@
 		
 		if (argumentsTypeElided() || t.findSuperTypeOriginatingFrom(s) != null)
 			return false;
-		
+		TypeBinding sPrime = s; // uncaptured
 		s = s.capture(this.enclosingScope, this.sourceStart, this.sourceEnd);
 		MethodBinding sSam = s.getSingleAbstractMethod(this.enclosingScope, true);
 		if (sSam == null || !sSam.isValidBinding())
 			return false;
-		TypeBinding r1 = sSam.returnType;
 		MethodBinding tSam = t.getSingleAbstractMethod(this.enclosingScope, true);
 		if (tSam == null || !tSam.isValidBinding())
 			return true; // See ORT8.test450415a for a case that slips through isCompatibleWith.
+		MethodBinding adapted = tSam.computeSubstitutedMethod(sSam, skope.environment());
+		if (adapted == null) // not same type params
+			return false;
+		MethodBinding sSamPrime = sPrime.getSingleAbstractMethod(this.enclosingScope, true);
+		TypeBinding[] ps = adapted.parameters; // parameters of S adapted to type parameters of T
+		// parameters of S (without capture), adapted to type params of T
+		MethodBinding prime = tSam.computeSubstitutedMethod(sSamPrime, skope.environment());
+		TypeBinding[] pPrimes = prime.parameters;
+		TypeBinding[] qs = tSam.parameters;
+		for (int i = 0; i < ps.length; i++) {
+			if (!qs[i].isCompatibleWith(ps[i]) || TypeBinding.notEquals(qs[i], pPrimes[i]))
+				return false;
+		}
+		TypeBinding r1 = adapted.returnType; // return type of S adapted to type parameters of T
 		TypeBinding r2 = tSam.returnType;
 		
 		if (r2.id == TypeIds.T_void)
@@ -945,7 +1014,14 @@
 		if (r1.isCompatibleWith(r2, skope))
 			return true;
 		
-		LambdaExpression copy = cachedResolvedCopy(s, true /* any resolved copy is good */, false, null); // we expect a cached copy - otherwise control won't reach here.
+		LambdaExpression copy;
+		try {
+			copy = cachedResolvedCopy(s, true /* any resolved copy is good */, false, null); // we expect a cached copy - otherwise control won't reach here.
+		} catch (CopyFailureException cfe) {
+			if (this.assistNode)
+				return false;
+			throw cfe;
+		}
 		Expression [] returnExpressions = copy.resultExpressions;
 		int returnExpressionsLength = returnExpressions == null ? 0 : returnExpressions.length;
 		if (returnExpressionsLength > 0) {
@@ -1020,10 +1096,12 @@
 		}
 	}
 	
+	@Override
 	public CompilationResult compilationResult() {
 		return this.compilationResult;
 	}
 
+	@Override
 	public void abort(int abortLevel, CategorizedProblem problem) {
 	
 		switch (abortLevel) {
@@ -1038,14 +1116,17 @@
 		}
 	}
 
+	@Override
 	public CompilationUnitDeclaration getCompilationUnitDeclaration() {
 		return this.enclosingScope == null ? null : this.enclosingScope.compilationUnitScope().referenceContext;
 	}
 
+	@Override
 	public boolean hasErrors() {
 		return this.ignoreFurtherInvestigation;
 	}
 
+	@Override
 	public void tagAsHavingErrors() {
 		this.ignoreFurtherInvestigation = true;
 		Scope parent = this.enclosingScope.parent;
@@ -1066,6 +1147,7 @@
 		}
 	}
 	
+	@Override
 	public void tagAsHavingIgnoredMandatoryErrors(int problemId) {
 		switch (problemId) {
 			// 15.27.3 requires exception throw related errors to not influence congruence. Other errors should. Also don't abort shape analysis.
@@ -1231,6 +1313,7 @@
 	}
 
 	// Return the actual method binding devoid of synthetics. 
+	@Override
 	public MethodBinding getMethodBinding() {
 		if (this.actualMethodBinding == null) {
 			if (this.binding != null) {
@@ -1252,6 +1335,7 @@
 		return this.actualMethodBinding;
 	}
 
+	@Override
 	public int diagnosticsSourceEnd() {
 		return this.body instanceof Block ? this.arrowPosition : this.sourceEnd;
 	}
@@ -1285,15 +1369,19 @@
 			return null;
 		
 		class LambdaTypeBinding extends ReferenceBinding {
+			@Override
 			public MethodBinding[] methods() {
 				return new MethodBinding [] { getMethodBinding() };
 			}
+			@Override
 			public char[] sourceName() {
 				return TypeConstants.LAMBDA_TYPE;
 			}
+			@Override
 			public ReferenceBinding superclass() {
 				return LambdaExpression.this.scope.getJavaLangObject();
 			}
+			@Override
 			public ReferenceBinding[] superInterfaces() {
 				return new ReferenceBinding[] { (ReferenceBinding) LambdaExpression.this.resolvedType };
 			}
@@ -1301,6 +1389,7 @@
 			public char[] computeUniqueKey() {
 				return LambdaExpression.this.descriptor.declaringClass.computeUniqueKey();
 			}
+			@Override
 			public String toString() {
 				StringBuffer output = new StringBuffer("()->{} implements "); //$NON-NLS-1$
 				output.append(LambdaExpression.this.descriptor.declaringClass.sourceName());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.java
index 55bfdba..f3806b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Literal.java
@@ -23,6 +23,7 @@
 		this.sourceEnd = e;
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -35,11 +36,13 @@
 
 	public abstract TypeBinding literalType(BlockScope scope);
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		return output.append(source());
 	 }
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		// compute the real value, which must range its type's range
 		this.resolvedType = literalType(scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
index cb3fc4b..9e04811 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java
@@ -1,10 +1,11 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann <stephan@cs.tu-berlin.de> - Contributions for
@@ -28,6 +29,8 @@
  *							Bug 453483 - [compiler][null][loop] Improve null analysis for loops
  *     Jesper S Moller - Contributions for
  *							Bug 378674 - "The method can be declared as static" is wrong
+ *							Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
+ *							Bug 529556 - [18.3] Add content assist support for 'var' as a type
  *        Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for
  *							Bug 409250 - [1.8][compiler] Various loose ends in 308 code generation
  *							Bug 426616 - [1.8][compiler] Type Annotations, multiple problems 
@@ -35,8 +38,11 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
 import static org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExpressionContext.ASSIGNMENT_CONTEXT;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExpressionContext.VANILLA_CONTEXT;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.*;
@@ -63,6 +69,7 @@
 		this.declarationEnd = sourceEnd;
 	}
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	// record variable initialization if any
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
@@ -127,6 +134,7 @@
 	 * Code generation for a local declaration:
 	 *	i.e.&nbsp;normal assignment to a local variable + unused variable handling
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		// even if not reachable, variable must be added to visible if allocated (28298)
@@ -181,6 +189,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return LOCAL_VARIABLE;
 	}
@@ -203,10 +212,75 @@
 	public boolean isReceiver() {
 		return false;
 	}
+	public TypeBinding patchType(TypeBinding newType) {
+		// Perform upwards projection on type wrt mentioned type variables
+		TypeBinding[] mentionedTypeVariables= findCapturedTypeVariables(newType);
+		if (mentionedTypeVariables != null && mentionedTypeVariables.length > 0) {
+			newType = newType.upwardsProjection(this.binding.declaringScope, mentionedTypeVariables); 	
+		}
+		this.type.resolvedType = newType;
+		if (this.binding != null) {
+			this.binding.type = newType;
+			this.binding.markInitialized();
+		}
+		return this.type.resolvedType;
+	}
+
+	private TypeVariableBinding[] findCapturedTypeVariables(TypeBinding typeBinding) {
+		final Set<TypeVariableBinding> mentioned = new HashSet<>();
+		TypeBindingVisitor.visit(new TypeBindingVisitor() {
+			@Override
+			public boolean visit(TypeVariableBinding typeVariable) {
+				if (typeVariable.isCapture())
+					mentioned.add(typeVariable);
+				return super.visit(typeVariable);
+			}
+		}, typeBinding);
+		if (mentioned.isEmpty()) return null;
+		return mentioned.toArray(new TypeVariableBinding[mentioned.size()]);
+	}
+	
+	private static Expression findPolyExpression(Expression e) {
+		// This is simpler than using an ASTVisitor, since we only care about a very few select cases.
+		if (e instanceof FunctionalExpression) {
+			return e;
+		}
+		if (e instanceof ConditionalExpression) {
+			ConditionalExpression ce = (ConditionalExpression)e;
+			Expression candidate = findPolyExpression(ce.valueIfTrue);
+			if (candidate == null) {
+				candidate = findPolyExpression(ce.valueIfFalse);
+			}
+			if (candidate != null) return candidate;
+		}
+		return null;
+	}
+	
+	@Override
 	public void resolve(BlockScope scope) {
 
-		// create a binding and add it to the scope
-		TypeBinding variableType = this.type.resolveType(scope, true /* check bounds*/);
+		// prescan NNBD
+		handleNonNullByDefault(scope, this.annotations, this);
+
+		TypeBinding variableType = null;
+		boolean variableTypeInferenceError = false;
+		boolean isTypeNameVar = isTypeNameVar(scope);
+		if (isTypeNameVar) {
+			if ((this.bits & ASTNode.IsForeachElementVariable) == 0) {
+				// infer a type from the initializer
+				if (this.initialization != null) {
+					variableType = checkInferredLocalVariableInitializer(scope);
+					variableTypeInferenceError = variableType != null;
+				} else {
+					// That's always an error
+					scope.problemReporter().varLocalWithoutInitizalier(this);
+					variableType = scope.getJavaLangObject();
+					variableTypeInferenceError = true;
+				}
+			}
+		} else {
+			variableType = this.type.resolveType(scope, true /* check bounds*/);
+		}
 
 		this.bits |= (this.type.bits & ASTNode.HasTypeAnnotations);
 		checkModifiers();
@@ -236,15 +310,53 @@
 		if ((this.modifiers & ClassFileConstants.AccFinal)!= 0 && this.initialization == null) {
 			this.modifiers |= ExtraCompilerModifiers.AccBlankFinal;
 		}
-		this.binding = new LocalVariableBinding(this, variableType, this.modifiers, false /*isArgument*/);
+		if (isTypeNameVar) {
+			// Create binding for the initializer's type
+			// In order to resolve self-referential initializers, we must declare the variable with a placeholder type (j.l.Object), and then patch it later 
+			this.binding = new LocalVariableBinding(this, variableType != null ? variableType : scope.getJavaLangObject(), this.modifiers, false) {
+				private boolean isInitialized = false;
+				
+				@Override
+				public void markReferenced() {
+					if (! this.isInitialized) {
+						scope.problemReporter().varLocalReferencesItself(LocalDeclaration.this);
+						this.type = null;
+						this.isInitialized = true; // Quell additional type errors
+					}
+				}
+				@Override
+				public void markInitialized() {
+					this.isInitialized = true;
+				}
+			};
+		} else {
+			// create a binding from the specified type
+			this.binding = new LocalVariableBinding(this, variableType, this.modifiers, false /*isArgument*/);
+		}
 		scope.addLocalVariable(this.binding);
 		this.binding.setConstant(Constant.NotAConstant);
 		// allow to recursivelly target the binding....
 		// the correct constant is harmed if correctly computed at the end of this method
 
 		if (variableType == null) {
-			if (this.initialization != null)
+			if (this.initialization != null) {
 				this.initialization.resolveType(scope); // want to report all possible errors
+				if (isTypeNameVar && this.initialization.resolvedType != null) {
+					if (TypeBinding.equalsEquals(TypeBinding.NULL, this.initialization.resolvedType)) {
+						scope.problemReporter().varLocalInitializedToNull(this);
+						variableTypeInferenceError = true;
+					} else if (TypeBinding.equalsEquals(TypeBinding.VOID, this.initialization.resolvedType)) {
+						scope.problemReporter().varLocalInitializedToVoid(this);
+						variableTypeInferenceError = true;
+					}
+					variableType = patchType(this.initialization.resolvedType);
+				} else {
+					variableTypeInferenceError = true;
+				}
+			}
+		}
+		this.binding.markInitialized();
+		if (variableTypeInferenceError) {
 			return;
 		}
 
@@ -257,9 +369,9 @@
 					this.initialization.computeConversion(scope, variableType, initializationType);
 				}
 			} else {
-				this.initialization.setExpressionContext(ASSIGNMENT_CONTEXT);
+				this.initialization.setExpressionContext(isTypeNameVar ? VANILLA_CONTEXT : ASSIGNMENT_CONTEXT);
 				this.initialization.setExpectedType(variableType);
-				TypeBinding initializationType = this.initialization.resolveType(scope);
+				TypeBinding initializationType = this.initialization.resolvedType != null ? this.initialization.resolvedType : this.initialization.resolveType(scope);
 				if (initializationType != null) {
 					if (TypeBinding.notEquals(variableType, initializationType)) // must call before computeConversion() and typeMismatchError()
 						scope.compilationUnitScope().recordTypeConversion(variableType, initializationType);
@@ -306,6 +418,38 @@
 			this.binding.tagBits &= ~TagBits.AnnotationNullMASK;
 	}
 
+	/*
+	 * Checks the initializer for simple errors, and reports an error as needed. If error is found,
+	 * returns a reasonable match for further type checking.
+	 */
+	private TypeBinding checkInferredLocalVariableInitializer(BlockScope scope) {
+		TypeBinding errorType = null;
+		if (this.initialization instanceof ArrayInitializer) {
+			scope.problemReporter().varLocalCannotBeArrayInitalizers(this);
+			errorType = scope.createArrayType(scope.getJavaLangObject(), 1); // Treat as array of anything
+		} else {
+			// Catch-22: isPolyExpression() is not reliable BEFORE resolveType, so we need to peek to suppress the errors
+			Expression polyExpression = findPolyExpression(this.initialization);
+			if (polyExpression instanceof ReferenceExpression) {
+				scope.problemReporter().varLocalCannotBeMethodReference(this);
+				errorType = TypeBinding.NULL;
+			} else if (polyExpression != null) { // Should be instanceof LambdaExpression, but this is safer
+				scope.problemReporter().varLocalCannotBeLambda(this);
+				errorType = TypeBinding.NULL;
+			}
+		}
+		if (this.type.dimensions() > 0 || this.type.extraDimensions() > 0) {
+			scope.problemReporter().varLocalCannotBeArray(this);
+			errorType = scope.createArrayType(scope.getJavaLangObject(), 1); // This is just to quell some warnings
+		}
+		if ((this.bits & ASTNode.IsAdditionalDeclarator) != 0) {
+			scope.problemReporter().varLocalMultipleDeclarators(this);
+			errorType = this.initialization.resolveType(scope);
+		}
+		return errorType;
+	}
+
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 		if (visitor.visit(this, scope)) {
@@ -337,4 +481,9 @@
 		return this.name == RecoveryScanner.FAKE_IDENTIFIER && 
 				(this.type instanceof SingleTypeReference || (this.type instanceof QualifiedTypeReference && !(this.type instanceof ArrayQualifiedTypeReference))) && this.initialization == null && !this.type.isBaseTypeReference();
 	}
+	
+	public boolean isTypeNameVar(Scope scope) {
+		return this.type != null && this.type.isTypeNameVar(scope);
+	}
+	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java
index 867413a..82592ce 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java
@@ -68,6 +68,7 @@
 	}
 	return this;
 }
+@Override
 public void computeConstant() {
 	char[] token = this.reducedForm != null ? this.reducedForm : this.source;
 	int tokenLength = token.length;
@@ -146,6 +147,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -154,9 +156,11 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.LONG;
 }
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java
index be671d2..8eea07a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java
@@ -20,6 +20,7 @@
 	super(token, reducedForm, start, end);
 	this.constant = LongConstant.fromValue(Long.MIN_VALUE);
 }
+@Override
 public void computeConstant() {
 	/*precomputed at creation time*/}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.java
index cb2c29f..d78ab3c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MagicLiteral.java
@@ -17,11 +17,13 @@
 		super(start,end);
 	}
 
+	@Override
 	public boolean isValidJavaStatement(){
 
 		return false ;
 	}
 
+	@Override
 	public char[] source() {
 
 		return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.java
index afa5ebf..1ee634d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MarkerAnnotation.java
@@ -30,10 +30,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation#memberValuePairs()
 	 */
+	@Override
 	public MemberValuePair[] memberValuePairs() {
 		return NoValuePairs;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
@@ -42,6 +44,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.java
index 0b8f865..9dbbccc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MemberValuePair.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,9 +48,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode#print(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 		output
 			.append(this.name)
@@ -60,6 +58,9 @@
 	}
 
 	public void resolveTypeExpecting(final BlockScope scope, final TypeBinding requiredType) {
+		if (this.compilerElementPair != null) {
+			return;
+		}
 
 		if (this.value == null) {
 			this.compilerElementPair = new ElementValuePair(this.name, this.value, this.binding);
@@ -89,6 +90,7 @@
 			valueType = this.value.resolveType(scope);
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=248897
 			ASTVisitor visitor = new ASTVisitor() {
+				@Override
 				public boolean visit(SingleNameReference reference, BlockScope scop) {
 					if (reference.binding instanceof LocalVariableBinding) {
 						((LocalVariableBinding) reference.binding).useFlag = LocalVariableBinding.USED;
@@ -248,6 +250,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.value != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
index 70d78b5..a685508 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -54,6 +55,7 @@
  *								Bug 407414 - [compiler][null] Incorrect warning on a primitive type being null
  *								Bug 472618 - [compiler][null] assertNotNull vs. Assert.assertNotNull
  *								Bug 470958 - [1.8] Unable to convert lambda 
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *     Jesper S Moller - Contributions for
  *								Bug 378674 - "The method can be declared as static" is wrong
  *        Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for
@@ -67,6 +69,7 @@
 import java.util.HashMap;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
@@ -76,6 +79,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.IrritantSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
@@ -141,6 +145,7 @@
 	public boolean argumentsHaveErrors = false;
 	
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	boolean nonStatic = !this.binding.isStatic();
 	boolean wasInsideAssert = ((flowContext.tagBits & FlowContext.HIDE_NULL_COMPARISON_WARNING) != 0);
@@ -170,6 +175,27 @@
 			}
 		}
 	}
+	if (compilerOptions.isAnyEnabled(IrritantSet.UNLIKELY_ARGUMENT_TYPE) && this.binding.isValidBinding()
+			&& this.arguments != null) {
+		if (this.arguments.length == 1 && !this.binding.isStatic()) {
+			UnlikelyArgumentCheck argumentChecks = UnlikelyArgumentCheck.determineCheckForNonStaticSingleArgumentMethod(
+				this.argumentTypes[0], currentScope, this.selector, this.actualReceiverType, this.binding.parameters);
+
+			if (argumentChecks != null && argumentChecks.isDangerous(currentScope)) {
+				currentScope.problemReporter().unlikelyArgumentType(this.arguments[0], this.binding,
+						this.argumentTypes[0], argumentChecks.typeToReport, argumentChecks.dangerousMethod);
+			}
+ 		} else if (this.arguments.length == 2 && this.binding.isStatic()) {
+			UnlikelyArgumentCheck argumentChecks = UnlikelyArgumentCheck.determineCheckForStaticTwoArgumentMethod(
+				this.argumentTypes[1], currentScope, this.selector, this.argumentTypes[0],
+				this.binding.parameters, this.actualReceiverType);
+
+			if (argumentChecks != null && argumentChecks.isDangerous(currentScope)) {
+				currentScope.problemReporter().unlikelyArgumentType(this.arguments[1], this.binding,
+						this.argumentTypes[1], argumentChecks.typeToReport, argumentChecks.dangerousMethod);
+			}
+ 		}
+	}
 
 	if (nonStatic) {
 		int timeToLive = ((this.bits & ASTNode.InsideExpressionStatement) != 0) ? 3 : 2;
@@ -380,6 +406,7 @@
 	return flowInfo;
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	// message send as a receiver
 	int nullStatus = nullStatus(flowInfo, flowContext); // note that flowInfo is not used inside nullStatus(..)
@@ -399,6 +426,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#computeConversion(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) {
 	if (runtimeTimeType == null || compileTimeType == null)
 		return;
@@ -410,7 +438,7 @@
 		if (ArrayBinding.isArrayClone(this.actualReceiverType, this.binding)
 				&& runtimeTimeType.id != TypeIds.T_JavaLangObject
 				&& scope.compilerOptions().sourceLevel >= ClassFileConstants.JDK1_5) {
-			// from 1.5 source level on, array#clone() resolves to array type, but codegen to #clone()Object - thus require extra inserted cast
+					// from 1.5 source level on, array#clone() resolves to array type, but codegen to #clone()Object - thus require extra inserted cast
 			this.valueCast = runtimeTimeType;
 		} else if (originalType.leafComponentType().isTypeVariable()) {
 	    	TypeBinding targetType = (!compileTimeType.isBaseType() && runtimeTimeType.isBaseType())
@@ -439,6 +467,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	cleanUpInferenceContexts();
 	int pc = codeStream.position;
@@ -476,20 +505,14 @@
 		}
 	} else {
 		// AspectJ Extension
-	    // replaced this one line:
-		// 33was:
-		// codeStream.invokestatic(this.syntheticAccessor);
-		// 37is:
-		// codeStream.invoke(Opcodes.OPC_invokestatic, this.syntheticAccessor, null /* default declaringClass */);
-	    // with
 		// Although all JDT based accessors are static, that is not true of
 		// AspectJ accessors.  For example: ajc$privMethod for accessing private
 		// methods on types from a privileged aspect.
 		if (syntheticAccessor.isStatic()) {
-		codeStream.invoke(Opcodes.OPC_invokestatic, this.syntheticAccessor, null /* default declaringClass */, this.typeArguments);
+			codeStream.invoke(Opcodes.OPC_invokestatic, this.syntheticAccessor, null /* default declaringClass */, this.typeArguments);
 		} else {
 			codeStream.invoke(Opcodes.OPC_invokevirtual, this.syntheticAccessor, null /* default declaringClass */, this.typeArguments);
-		    }
+		}
 		// End AspectJ extension
 	}
 	// required cast must occur even if no value is required
@@ -517,13 +540,16 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return this.genericTypeArguments;
 }
 
+@Override
 public boolean isSuperAccess() {
 	return this.receiver.isSuper();
 }
+@Override
 public boolean isTypeAccess() {
 	return this.receiver != null && this.receiver.isTypeReference();
 }
@@ -587,6 +613,7 @@
 		}
 	}
 }
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	if ((this.implicitConversion & TypeIds.BOXING) != 0)
 		return FlowInfo.NON_NULL;
@@ -605,6 +632,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#postConversionType(Scope)
  */
+@Override
 public TypeBinding postConversionType(Scope scope) {
 	TypeBinding convertedType = this.resolvedType;
 	if (this.valueCast != null)
@@ -643,6 +671,7 @@
 	return convertedType;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output){
 
 	if (!this.receiver.isImplicitThis()) this.receiver.printExpression(0, output).append('.');
@@ -666,6 +695,7 @@
 	return output.append(')');
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Answer the signature return type, answers PolyTypeBinding if a poly expression and there is no target type  
 	// Base type promotion
@@ -683,99 +713,100 @@
 //		scope.problemReporter().genericInferenceError("Receiver was unexpectedly found resolved", this); //$NON-NLS-1$
 	// AspectJ Extension: End
 	this.actualReceiverType = this.receiver.resolveType(scope);
-	if (this.actualReceiverType instanceof InferenceVariable) {
-		return null; // not yet ready for resolving
-	}
-	this.receiverIsType = this.receiver instanceof NameReference && (((NameReference) this.receiver).bits & Binding.TYPE) != 0;
+		if (this.actualReceiverType instanceof InferenceVariable) {
+			scope.referenceContext().tagAsHavingIgnoredMandatoryErrors(IProblem.UndefinedMethod);
+			return null; // not yet ready for resolving
+		}
+		this.receiverIsType = this.receiver instanceof NameReference && (((NameReference) this.receiver).bits & Binding.TYPE) != 0;
 	if (receiverCast && this.actualReceiverType != null) {
 		 // due to change of declaring class with receiver type, only identity cast should be notified
 			TypeBinding resolvedType2 = ((CastExpression)this.receiver).expression.resolvedType;
 			if (TypeBinding.equalsEquals(resolvedType2, this.actualReceiverType)) {
 				if (!scope.environment().usesNullTypeAnnotations() || !NullAnnotationMatching.analyse(this.actualReceiverType, resolvedType2, -1).isAnyMismatch()) {
-				scope.problemReporter().unnecessaryCast((CastExpression)this.receiver);
-			}
-		}
-	}
-	// resolve type arguments (for generic constructor call)
-	if (this.typeArguments != null) {
-		int length = this.typeArguments.length;
-			this.argumentsHaveErrors = sourceLevel < ClassFileConstants.JDK1_5; // typeChecks all arguments
-		this.genericTypeArguments = new TypeBinding[length];
-		for (int i = 0; i < length; i++) {
-			TypeReference typeReference = this.typeArguments[i];
-				if ((this.genericTypeArguments[i] = typeReference.resolveType(scope, true /* check bounds*/, Binding.DefaultLocationTypeArgument)) == null) {
-					this.argumentsHaveErrors = true;
-			}
-				if (this.argumentsHaveErrors && typeReference instanceof Wildcard) {
-				scope.problemReporter().illegalUsageOfWildcard(typeReference);
-			}
-		}
-			if (this.argumentsHaveErrors) {
-			if (this.arguments != null) { // still attempt to resolve arguments
-				for (int i = 0, max = this.arguments.length; i < max; i++) {
-					this.arguments[i].resolveType(scope);
+					scope.problemReporter().unnecessaryCast((CastExpression)this.receiver);
 				}
 			}
-			return null;
 		}
-	}
-	// will check for null after args are resolved
-	if (this.arguments != null) {
-			this.argumentsHaveErrors = false; // typeChecks all arguments
-		int length = this.arguments.length;
-			this.argumentTypes = new TypeBinding[length];
-		for (int i = 0; i < length; i++){
-			Expression argument = this.arguments[i];
-			if (this.arguments[i].resolvedType != null) 
-				scope.problemReporter().genericInferenceError("Argument was unexpectedly found resolved", this); //$NON-NLS-1$
-			if (argument instanceof CastExpression) {
-				argument.bits |= ASTNode.DisableUnnecessaryCastCheck; // will check later on
-					this.argsContainCast = true;
+		// resolve type arguments (for generic constructor call)
+		if (this.typeArguments != null) {
+			int length = this.typeArguments.length;
+			this.argumentsHaveErrors = sourceLevel < ClassFileConstants.JDK1_5; // typeChecks all arguments
+			this.genericTypeArguments = new TypeBinding[length];
+			for (int i = 0; i < length; i++) {
+				TypeReference typeReference = this.typeArguments[i];
+				if ((this.genericTypeArguments[i] = typeReference.resolveType(scope, true /* check bounds*/, Binding.DefaultLocationTypeArgument)) == null) {
+					this.argumentsHaveErrors = true;
+				}
+				if (this.argumentsHaveErrors && typeReference instanceof Wildcard) {
+					scope.problemReporter().illegalUsageOfWildcard(typeReference);
+				}
 			}
-			argument.setExpressionContext(INVOCATION_CONTEXT);
+			if (this.argumentsHaveErrors) {
+				if (this.arguments != null) { // still attempt to resolve arguments
+					for (int i = 0, max = this.arguments.length; i < max; i++) {
+						this.arguments[i].resolveType(scope);
+					}
+				}
+				return null;
+			}
+		}
+		// will check for null after args are resolved
+		if (this.arguments != null) {
+			this.argumentsHaveErrors = false; // typeChecks all arguments
+			int length = this.arguments.length;
+			this.argumentTypes = new TypeBinding[length];
+			for (int i = 0; i < length; i++){
+				Expression argument = this.arguments[i];
+				if (this.arguments[i].resolvedType != null) 
+					scope.problemReporter().genericInferenceError("Argument was unexpectedly found resolved", this); //$NON-NLS-1$
+				if (argument instanceof CastExpression) {
+					argument.bits |= ASTNode.DisableUnnecessaryCastCheck; // will check later on
+					this.argsContainCast = true;
+				}
+				argument.setExpressionContext(INVOCATION_CONTEXT);
 				if ((this.argumentTypes[i] = argument.resolveType(scope)) == null){
 					this.argumentsHaveErrors = true;
+				}
 			}
-		}
 			if (this.argumentsHaveErrors) {
-			if (this.actualReceiverType instanceof ReferenceBinding) {
-				//  record a best guess, for clients who need hint about possible method match
-				TypeBinding[] pseudoArgs = new TypeBinding[length];
-				for (int i = length; --i >= 0;)
+				if (this.actualReceiverType instanceof ReferenceBinding) {
+					//  record a best guess, for clients who need hint about possible method match
+					TypeBinding[] pseudoArgs = new TypeBinding[length];
+					for (int i = length; --i >= 0;)
 						pseudoArgs[i] = this.argumentTypes[i] == null ? TypeBinding.NULL : this.argumentTypes[i]; // replace args with errors with null type
 
 					this.binding = this.receiver.isImplicitThis() ?
 								scope.getImplicitMethod(this.selector, pseudoArgs, this) :
 									scope.findMethod((ReferenceBinding) this.actualReceiverType, this.selector, pseudoArgs, this, false);
 
-				if (this.binding != null && !this.binding.isValidBinding()) {
-					MethodBinding closestMatch = ((ProblemMethodBinding)this.binding).closestMatch;
-					// record the closest match, for clients who may still need hint about possible method match
-					if (closestMatch != null) {
-						if (closestMatch.original().typeVariables != Binding.NO_TYPE_VARIABLES) { // generic method
-							// shouldn't return generic method outside its context, rather convert it to raw method (175409)
-							closestMatch = scope.environment().createParameterizedGenericMethod(closestMatch.original(), (RawTypeBinding)null);
-						}
-						this.binding = closestMatch;
-						MethodBinding closestMatchOriginal = closestMatch.original();
-						if (closestMatchOriginal.isOrEnclosedByPrivateType() && !scope.isDefinedInMethod(closestMatchOriginal)) {
-							// ignore cases where method is used from within inside itself (e.g. direct recursions)
-							closestMatchOriginal.modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
+					if (this.binding != null && !this.binding.isValidBinding()) {
+						MethodBinding closestMatch = ((ProblemMethodBinding)this.binding).closestMatch;
+						// record the closest match, for clients who may still need hint about possible method match
+						if (closestMatch != null) {
+							if (closestMatch.original().typeVariables != Binding.NO_TYPE_VARIABLES) { // generic method
+								// shouldn't return generic method outside its context, rather convert it to raw method (175409)
+								closestMatch = scope.environment().createParameterizedGenericMethod(closestMatch.original(), (RawTypeBinding)null);
+							}
+							this.binding = closestMatch;
+							MethodBinding closestMatchOriginal = closestMatch.original();
+							if (closestMatchOriginal.isOrEnclosedByPrivateType() && !scope.isDefinedInMethod(closestMatchOriginal)) {
+								// ignore cases where method is used from within inside itself (e.g. direct recursions)
+								closestMatchOriginal.modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
+							}
 						}
 					}
 				}
+				return null;
 			}
+		}
+		if (this.actualReceiverType == null) {
 			return null;
 		}
-	}
-	if (this.actualReceiverType == null) {
-		return null;
-	}
-	// base type cannot receive any message
-	if (this.actualReceiverType.isBaseType()) {
+		// base type cannot receive any message
+		if (this.actualReceiverType.isBaseType()) {
 			scope.problemReporter().errorNoMethodFor(this, this.actualReceiverType, this.argumentTypes);
-		return null;
-	}
+			return null;
+		}
 	}
 	// AspectJ Extension
 	// MERGECONFLICT - very different to how it used to be, what is that findMethodBinding() call?
@@ -852,11 +883,7 @@
 	}
 
 	if (compilerOptions.isAnnotationBasedNullAnalysisEnabled) {
-		if ((this.binding.tagBits & TagBits.IsNullnessKnown) == 0) {
-			// not interested in reporting problems against this.binding:
-			new ImplicitNullAnnotationVerifier(scope.environment(), compilerOptions.inheritNullAnnotations)
-					.checkImplicitNullAnnotations(this.binding, null/*srcMethod*/, false, scope);
-		}
+		ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(this.binding, scope);
 		if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8) {
 			if (this.binding instanceof ParameterizedGenericMethodBinding && this.typeArguments != null) {
 				TypeVariableBinding[] typeVariables = this.binding.original().typeVariables();
@@ -895,7 +922,9 @@
 		}
 	} else {
 		// static message invoked through receiver? legal but unoptimal (optional warning).
-		if (!(this.receiver.isImplicitThis() || this.receiver.isSuper() || this.receiverIsType)) {
+		if (this.binding.declaringClass.isInterface() && !((isTypeAccess() || this.receiver.isImplicitThis()) && TypeBinding.equalsEquals(this.binding.declaringClass, this.actualReceiverType))) {
+			scope.problemReporter().nonStaticOrAlienTypeReceiver(this, this.binding);
+		} else if (!(this.receiver.isImplicitThis() || this.receiver.isSuper() || this.receiverIsType)) {
 			scope.problemReporter().nonStaticAccessToStaticMethod(this, this.binding);
 		}
 		if (!this.receiver.isImplicitThis() && TypeBinding.notEquals(this.binding.declaringClass, this.actualReceiverType)) {
@@ -953,16 +982,16 @@
 				? this.resolvedType
 				: null;
 }
-	
+
 protected TypeBinding findMethodBinding(BlockScope scope) {
 	ReferenceContext referenceContext = scope.methodScope().referenceContext;
 	if (referenceContext instanceof LambdaExpression) {
 		this.outerInferenceContext = ((LambdaExpression) referenceContext).inferenceContext;
-}
-
+	}
+	
 	if (this.expectedType != null && this.binding instanceof PolyParameterizedGenericMethodBinding) {
 		this.binding = this.solutionsPerTargetType.get(this.expectedType);
-			}
+	}
 	if (this.binding == null) { // first look up or a "cache miss" somehow.
 		this.binding = this.receiver.isImplicitThis() ? 
 				scope.getImplicitMethod(this.selector, this.argumentTypes, this) 
@@ -971,16 +1000,18 @@
 	    if (this.binding instanceof PolyParameterizedGenericMethodBinding) {
 		    this.solutionsPerTargetType = new HashMap<TypeBinding, MethodBinding>();
 		    return new PolyTypeBinding(this);
-		}
+	    }
 	}
 	resolvePolyExpressionArguments(this, this.binding, this.argumentTypes, scope);
 	return this.binding.returnType;
 }
 
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	if (receiverType == null) return; // error scenario only
 	this.actualReceiverType = receiverType;
 }
+@Override
 public void setDepth(int depth) {
 	this.bits &= ~ASTNode.DepthMASK; // flush previous depth if any
 	if (depth > 0) {
@@ -991,14 +1022,17 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#setExpectedType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void setExpectedType(TypeBinding expectedType) {
     this.expectedType = expectedType;
 }
 
+@Override
 public void setExpressionContext(ExpressionContext context) {
 	this.expressionContext = context;
 }
 
+@Override
 public boolean isPolyExpression() {
 	
 	/* 15.12 has four requirements: 1) The invocation appears in an assignment context or an invocation context
@@ -1011,6 +1045,7 @@
 	return isPolyExpression(this.binding);
 }
 
+@Override
 public boolean isBoxingCompatibleWith(TypeBinding targetType, Scope scope) {
 	if (this.argumentsHaveErrors || this.binding == null || !this.binding.isValidBinding() || targetType == null || scope == null)
 		return false;
@@ -1033,6 +1068,7 @@
 	}
 }
 
+@Override
 public boolean isCompatibleWith(TypeBinding targetType, final Scope scope) {
 	if (this.argumentsHaveErrors || this.binding == null || !this.binding.isValidBinding() || targetType == null || scope == null)
 		return false;
@@ -1048,6 +1084,8 @@
 		TypeBinding returnType;
 		if (method == null || !method.isValidBinding() || (returnType = method.returnType) == null || !returnType.isValidBinding())
 			return false;
+		if ((this.bits & ASTNode.Unchecked) != 0 && this.genericTypeArguments == null)
+			returnType = scope.environment().convertToRawType(returnType.erasure(), true);
 		return returnType.capture(scope, this.sourceStart, this.sourceEnd).isCompatibleWith(targetType, scope);
 	} finally {
 		this.expectedType = originalExpectedType;
@@ -1055,6 +1093,7 @@
 }
 
 /** Variant of isPolyExpression() to be used during type inference, when a resolution candidate exists. */
+@Override
 public boolean isPolyExpression(MethodBinding resolutionCandidate) {
 	if (this.expressionContext != ASSIGNMENT_CONTEXT && this.expressionContext != INVOCATION_CONTEXT)
 		return false;
@@ -1081,19 +1120,23 @@
 	return false;
 }
 
+@Override
 public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope) {
 	if (super.sIsMoreSpecific(s, t, scope))
 		return true;
 	return isPolyExpression() ? !s.isBaseType() && t.isBaseType() : false;
 }
 
+@Override
 public void setFieldIndex(int depth) {
 	// ignore for here
 }
+@Override
 public TypeBinding invocationTargetType() {
 	return this.expectedType;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		this.receiver.traverse(visitor, blockScope);
@@ -1110,17 +1153,21 @@
 	}
 	visitor.endVisit(this, blockScope);
 }
+@Override
 public boolean statementExpression() {
 	return ((this.bits & ASTNode.ParenthesizedMASK) == 0);
 }
+@Override
 public boolean receiverIsImplicitThis() {
 	return this.receiver.isImplicitThis();
 }
 // -- interface Invocation: --
+@Override
 public MethodBinding binding() {
 	return this.binding;
 }
 
+@Override
 public void registerInferenceContext(ParameterizedGenericMethodBinding method, InferenceContext18 infCtx18) {
 	if (this.inferenceContexts == null)
 		this.inferenceContexts = new SimpleLookupTable();
@@ -1134,6 +1181,7 @@
 	this.solutionsPerTargetType.put(targetType, method);
 }
 
+@Override
 public InferenceContext18 getInferenceContext(ParameterizedMethodBinding method) {
 	if (this.inferenceContexts == null)
 		return null;
@@ -1150,13 +1198,16 @@
 	this.outerInferenceContext = null;
 	this.solutionsPerTargetType = null;
 }
+@Override
 public Expression[] arguments() {
 	return this.arguments;
 }
+@Override
 public ExpressionContext getExpressionContext() {
 	return this.expressionContext;
 }
 // -- Interface InvocationSite: --
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return new InferenceContext18(scope, this.arguments, this, this.outerInferenceContext);
 }
@@ -1164,7 +1215,6 @@
 public boolean isQualifiedSuper() {
 	return this.receiver.isQualifiedSuper();
 }
-
 // AspectJ Extension
 protected void resolveMethodBinding(
 	BlockScope scope,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java
index f811b69..95a67c5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -164,6 +164,7 @@
 		}
 	}
 
+	@Override
 	public void getAllAnnotationContexts(int targetType, List allAnnotationContexts) {
 		AnnotationCollector collector = new AnnotationCollector(this.returnType, targetType, allAnnotationContexts);
 		for (int i = 0, max = this.annotations.length; i < max; i++) {
@@ -178,24 +179,29 @@
 				(this.returnType != null && this.returnType.hasNullTypeAnnotation(position)); // just in case
 	}
 
+	@Override
 	public boolean isDefaultMethod() {
 		return (this.modifiers & ExtraCompilerModifiers.AccDefaultMethod) != 0;
 	}
 
+	@Override
 	public boolean isMethod() {
 		return true;
 	}
 
+	@Override
 	public void parseStatements(Parser parser, CompilationUnitDeclaration unit) {
 		//fill up the method body with statement
 		parser.parse(this, unit);
 	}
 
+	@Override
 	public StringBuffer printReturnType(int indent, StringBuffer output) {
 		if (this.returnType == null) return output;
 		return this.returnType.printExpression(0, output).append(' ');
 	}
 
+	@Override
 	public void resolveStatements() {
 		// ========= abort on fatal error =============
 		if (this.returnType != null && this.binding != null) {
@@ -297,7 +303,8 @@
 			case TypeDeclaration.INTERFACE_DECL :
 				if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8
 						&& (this.modifiers & (ExtraCompilerModifiers.AccSemicolonBody | ClassFileConstants.AccAbstract)) == ExtraCompilerModifiers.AccSemicolonBody) {
-					if ((this.modifiers & (ClassFileConstants.AccStatic | ExtraCompilerModifiers.AccDefaultMethod)) != 0) {
+					boolean isPrivateMethod = compilerOptions.sourceLevel >= ClassFileConstants.JDK9 && (this.modifiers & ClassFileConstants.AccPrivate) != 0;
+					if (isPrivateMethod || ((this.modifiers & (ClassFileConstants.AccStatic | ExtraCompilerModifiers.AccDefaultMethod)) != 0)) {
 							this.scope.problemReporter().methodNeedBody(this);
 					}
 				}
@@ -317,6 +324,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		ClassScope classScope) {
@@ -356,6 +364,7 @@
 		}
 		visitor.endVisit(this, classScope);
 	}
+	@Override
 	public TypeParameter[] typeParameters() {
 	    return this.typeParameters;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java
new file mode 100644
index 0000000..e93375c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleDeclaration.java
@@ -0,0 +1,448 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import static org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities.*;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SplitPackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortMethod;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
+
+public class ModuleDeclaration extends ASTNode implements ReferenceContext {
+
+	public ExportsStatement[] exports;
+	public RequiresStatement[] requires;
+	public UsesStatement[] uses;
+	public ProvidesStatement[] services;
+	public OpensStatement[] opens;
+	public Annotation[] annotations;
+	public int exportsCount;
+	public int requiresCount;
+	public int usesCount;
+	public int servicesCount;
+	public int opensCount;
+	public SourceModuleBinding binding;
+	public int declarationSourceStart;
+	public int declarationSourceEnd;
+	public int bodyStart;
+	public int bodyEnd; // doesn't include the trailing comment if any.
+	public int modifiersSourceStart;
+	public BlockScope scope;
+	public char[][] tokens;
+	public char[] moduleName;
+	public long[] sourcePositions;
+	public int modifiers = ClassFileConstants.AccDefault;
+	boolean ignoreFurtherInvestigation;
+	boolean hasResolvedModuleDirectives;
+	boolean hasResolvedPackageDirectives;
+	boolean hasResolvedTypeDirectives;
+	CompilationResult compilationResult;
+
+	public ModuleDeclaration(CompilationResult compilationResult, char[][] tokens, long[] positions) {
+		this.compilationResult = compilationResult;
+		this.exportsCount = 0;
+		this.requiresCount = 0;
+		this.tokens = tokens;
+		this.moduleName = CharOperation.concatWith(tokens, '.');
+		this.sourcePositions = positions;
+		this.sourceEnd = (int) (positions[positions.length-1] & 0x00000000FFFFFFFF);
+		this.sourceStart = (int) (positions[0] >>> 32);
+	}
+
+	public ModuleBinding setBinding(SourceModuleBinding sourceModuleBinding) {
+		this.binding = sourceModuleBinding;
+		return sourceModuleBinding;
+	}
+
+	public void checkAndSetModifiers() {
+		int realModifiers = this.modifiers & ExtraCompilerModifiers.AccJustFlag;
+		int expectedModifiers = ClassFileConstants.ACC_OPEN | ClassFileConstants.ACC_SYNTHETIC;
+		if ((realModifiers & ~(expectedModifiers)) != 0) {
+			this.scope.problemReporter().illegalModifierForModule(this);
+			realModifiers &= expectedModifiers;
+		}
+		int effectiveModifiers = ClassFileConstants.AccModule | realModifiers;
+		this.modifiers = this.binding.modifiers = effectiveModifiers;
+	}
+
+	public boolean isOpen() {
+		return (this.modifiers & ClassFileConstants.ACC_OPEN) != 0;
+	}
+
+	public void createScope(final Scope parentScope) {
+		this.scope = new MethodScope(parentScope, null, true) {
+			@Override
+			public ProblemReporter problemReporter() {
+				// this method scope has no reference context so we better deletegate to the 'real' cuScope:
+				return parentScope.problemReporter();
+			}
+			@Override
+			public ReferenceContext referenceContext() {
+				return ModuleDeclaration.this;
+			}
+		};
+	}
+
+	public void generateCode() {
+		if ((this.bits & ASTNode.HasBeenGenerated) != 0)
+			return;
+		this.bits |= ASTNode.HasBeenGenerated;
+		if (this.ignoreFurtherInvestigation) {
+			return;
+		}
+		try {
+			// create the result for a compiled type
+			LookupEnvironment env = this.scope.environment();
+			ClassFile classFile = env.classFilePool.acquireForModule(this.binding, env.globalOptions);
+			classFile.initializeForModule(this.binding);
+
+			// finalize the compiled type result
+			classFile.addModuleAttributes(this.binding, this.annotations, this.scope.referenceCompilationUnit());
+			this.scope.referenceCompilationUnit().compilationResult.record(
+				this.binding.moduleName,
+				classFile);
+		} catch (AbortType e) {
+			if (this.binding == null)
+				return;
+		}
+	}
+
+	/** Resolve those module directives that relate to modules (requires). */
+	public void resolveModuleDirectives(CompilationUnitScope cuScope) {
+		if (this.binding == null) {
+			this.ignoreFurtherInvestigation = true;
+			return;
+		}
+		if (this.hasResolvedModuleDirectives)
+			return;
+
+		this.hasResolvedModuleDirectives = true;
+
+		Set<ModuleBinding> requiredModules = new HashSet<ModuleBinding>();
+		Set<ModuleBinding> requiredTransitiveModules = new HashSet<ModuleBinding>();
+		for(int i = 0; i < this.requiresCount; i++) {
+			RequiresStatement ref = this.requires[i];
+			if (ref != null && ref.resolve(cuScope) != null) {
+				if (!requiredModules.add(ref.resolvedBinding)) {
+					cuScope.problemReporter().duplicateModuleReference(IProblem.DuplicateRequires, ref.module);
+				}
+				if (ref.isTransitive())
+					requiredTransitiveModules.add(ref.resolvedBinding);
+				Collection<ModuleBinding> deps = ref.resolvedBinding.dependencyGraphCollector().get();
+				if (deps.contains(this.binding)) {
+					cuScope.problemReporter().cyclicModuleDependency(this.binding, ref.module);
+					requiredModules.remove(ref.module.binding);
+				}
+			}
+		}
+		this.binding.setRequires(requiredModules.toArray(new ModuleBinding[requiredModules.size()]),
+								 requiredTransitiveModules.toArray(new ModuleBinding[requiredTransitiveModules.size()]));
+	}
+
+	/** Resolve those module directives that relate to packages (exports, opens). */
+	public void resolvePackageDirectives(CompilationUnitScope cuScope) {
+		if (this.binding == null) {
+			this.ignoreFurtherInvestigation = true;
+			return;
+		}
+		if (this.hasResolvedPackageDirectives)
+			return;
+
+		this.hasResolvedPackageDirectives = true;
+
+		Set<PackageBinding> exportedPkgs = new HashSet<>();
+		for (int i = 0; i < this.exportsCount; i++) {
+			ExportsStatement ref = this.exports[i];
+ 			if (ref != null && ref.resolve(cuScope)) {
+				if (!exportedPkgs.add(ref.resolvedPackage)) {
+					cuScope.problemReporter().invalidPackageReference(IProblem.DuplicateExports, ref);
+				}
+				char[][] targets = null;
+				if (ref.targets != null) {
+					targets = new char[ref.targets.length][];
+					for (int j = 0; j < targets.length; j++)
+						targets[j] = ref.targets[j].moduleName;
+				}
+				this.binding.addResolvedExport(ref.resolvedPackage, targets);
+			}
+		}
+
+		HashtableOfObject openedPkgs = new HashtableOfObject();
+		for (int i = 0; i < this.opensCount; i++) {
+			OpensStatement ref = this.opens[i];
+			if (isOpen()) {
+				cuScope.problemReporter().invalidOpensStatement(ref, this);
+			} else {
+				if (openedPkgs.containsKey(ref.pkgName)) {
+					cuScope.problemReporter().invalidPackageReference(IProblem.DuplicateOpens, ref);
+				} else {
+					openedPkgs.put(ref.pkgName, ref);
+					ref.resolve(cuScope);
+				}
+				char[][] targets = null;
+				if (ref.targets != null) {
+					targets = new char[ref.targets.length][];
+					for (int j = 0; j < targets.length; j++)
+						targets[j] = ref.targets[j].moduleName;
+				}
+				this.binding.addResolvedOpens(ref.resolvedPackage, targets);
+			}
+		}
+	}
+
+	/** Resolve those module directives that relate to types (provides / uses). */
+	public void resolveTypeDirectives(CompilationUnitScope cuScope) {
+		if (this.binding == null) {
+			this.ignoreFurtherInvestigation = true;
+			return;
+		}
+		if (this.hasResolvedTypeDirectives)
+			return;
+
+		this.hasResolvedTypeDirectives = true;
+		ASTNode.resolveAnnotations(this.scope, this.annotations, this.binding);
+
+		Set<TypeBinding> allTypes = new HashSet<TypeBinding>();
+		for(int i = 0; i < this.usesCount; i++) {
+			TypeBinding serviceBinding = this.uses[i].serviceInterface.resolveType(this.scope);
+			if (serviceBinding != null && serviceBinding.isValidBinding()) {
+				if (!(serviceBinding.isClass() || serviceBinding.isInterface() || serviceBinding.isAnnotationType())) {
+					cuScope.problemReporter().invalidServiceRef(IProblem.InvalidServiceIntfType, this.uses[i].serviceInterface);
+				}
+				if (!allTypes.add(this.uses[i].serviceInterface.resolvedType)) {
+					cuScope.problemReporter().duplicateTypeReference(IProblem.DuplicateUses, this.uses[i].serviceInterface);
+				}
+			}
+		}
+		this.binding.setUses(allTypes.toArray(new TypeBinding[allTypes.size()]));
+		
+		Set<TypeBinding> interfaces = new HashSet<>();
+		for(int i = 0; i < this.servicesCount; i++) {
+			this.services[i].resolve(this.scope);
+			TypeBinding infBinding = this.services[i].serviceInterface.resolvedType;
+			if (infBinding != null && infBinding.isValidBinding()) {
+				if (!interfaces.add(this.services[i].serviceInterface.resolvedType)) { 
+					cuScope.problemReporter().duplicateTypeReference(IProblem.DuplicateServices,
+							this.services[i].serviceInterface);
+				}
+				this.binding.setImplementations(infBinding, this.services[i].getResolvedImplementations());
+			}
+		}
+		this.binding.setServices(interfaces.toArray(new TypeBinding[interfaces.size()]));
+	}
+
+	public void analyseCode(CompilationUnitScope skope) {
+		analyseModuleGraph(skope);
+		analyseReferencedPackages(skope);
+	}
+	
+	private void analyseReferencedPackages(CompilationUnitScope skope) {
+		if (this.exports != null) {
+			for (ExportsStatement export : this.exports) {
+				PackageBinding pb = analysePackageStatement(skope, export);
+				if (pb != null && !pb.hasCompilationUnit(true))
+					skope.problemReporter().invalidPackageReference(IProblem.PackageDoesNotExistOrIsEmpty, export);					
+			}
+		}
+		if (this.opens != null) {
+			for (OpensStatement opensStat : this.opens)
+				analysePackageStatement(skope, opensStat);
+			// it is legal for opens to refer to a "non-existing" or empty package
+		}
+	}
+
+	protected PackageBinding analysePackageStatement(CompilationUnitScope skope, PackageVisibilityStatement statement) {
+		PackageBinding pb = statement.resolvedPackage;
+		if (pb != null) {
+			if (pb instanceof SplitPackageBinding)
+				pb = ((SplitPackageBinding) pb).getIncarnation(this.binding);
+			if (pb.isViewedAsDeprecated()) {
+				TypeBinding packageInfo = pb.getType(PACKAGE_INFO_NAME, this.binding); // for annotations with details
+				skope.problemReporter().deprecatedPackage(statement.pkgRef, pb, packageInfo);
+			}
+		}
+		return pb;
+	}
+
+	public void analyseModuleGraph(CompilationUnitScope skope) {
+		if (this.requires != null) {
+			// collect transitively:
+			Map<String, Set<ModuleBinding>> pack2mods = new HashMap<>();
+			for (ModuleBinding requiredModule : this.binding.getAllRequiredModules()) {
+				for (PackageBinding exportedPackage : requiredModule.getExports()) {
+					if (this.binding.canAccess(exportedPackage)) {
+						String packName = String.valueOf(exportedPackage.readableName());
+						Set<ModuleBinding> mods = pack2mods.get(packName);
+						if (mods == null)
+							pack2mods.put(packName, mods = new HashSet<>());
+						mods.add(requiredModule);
+					}
+				}
+			}
+			// report against the causing requires directives:
+			for (RequiresStatement requiresStat : this.requires) {
+				ModuleBinding requiredModule = requiresStat.resolvedBinding;
+				if (requiredModule != null) {
+					if (requiredModule.isDeprecated())
+						skope.problemReporter().deprecatedModule(requiresStat.module, requiredModule);
+					analyseOneDependency(requiresStat, requiredModule, skope, pack2mods);
+					if (requiresStat.isTransitive()) {
+						for (ModuleBinding secondLevelModule : requiredModule.getAllRequiredModules())
+							analyseOneDependency(requiresStat, secondLevelModule, skope, pack2mods);
+					}
+				}
+			}
+		}
+	}
+
+	private void analyseOneDependency(RequiresStatement requiresStat, ModuleBinding requiredModule, CompilationUnitScope skope,
+			Map<String, Set<ModuleBinding>> pack2mods)
+	{
+		for (PackageBinding pack : requiredModule.getExports()) {
+			Set<ModuleBinding> mods = pack2mods.get(String.valueOf(pack.readableName()));
+			if (mods != null && mods.size() > 1)
+				skope.problemReporter().conflictingPackagesFromModules(pack, mods, requiresStat.sourceStart, requiresStat.sourceEnd);
+		}
+	}
+
+	public void traverse(ASTVisitor visitor, CompilationUnitScope unitScope) {
+		visitor.visit(this, unitScope);
+	}
+
+	public StringBuffer printHeader(int indent, StringBuffer output) {
+		if (this.annotations != null) {
+			for (int i = 0; i < this.annotations.length; i++) {
+				this.annotations[i].print(indent, output);
+				if (i != this.annotations.length - 1)
+					output.append(" "); //$NON-NLS-1$
+			}
+			output.append('\n');
+		}
+		if (isOpen()) {
+			output.append("open "); //$NON-NLS-1$
+		}
+		output.append("module "); //$NON-NLS-1$
+		output.append(CharOperation.charToString(this.moduleName));
+		return output;
+	}
+	public StringBuffer printBody(int indent, StringBuffer output) {
+		output.append(" {"); //$NON-NLS-1$
+		if (this.requires != null) {
+			for(int i = 0; i < this.requiresCount; i++) {
+				output.append('\n');
+				printIndent(indent + 1, output);
+				this.requires[i].print(0, output);
+			}
+		}
+		if (this.exports != null) {
+			for(int i = 0; i < this.exportsCount; i++) {
+				output.append('\n');
+				this.exports[i].print(indent + 1, output);
+			}
+		}
+		if (this.opens != null) {
+			for(int i = 0; i < this.opensCount; i++) {
+				output.append('\n');
+				this.opens[i].print(indent + 1, output);
+			}
+		}
+		if (this.uses != null) {
+			for(int i = 0; i < this.usesCount; i++) {
+				output.append('\n');
+				this.uses[i].print(indent + 1, output);
+			}
+		}
+		if (this.servicesCount != 0) {
+			for(int i = 0; i < this.servicesCount; i++) {
+				output.append('\n');
+				this.services[i].print(indent + 1, output);
+			}
+		}
+		output.append('\n');
+		return printIndent(indent, output).append('}');
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		//
+		printIndent(indent, output);
+		printHeader(0, output);
+		return printBody(indent, output);
+	}
+
+	@Override
+	public void abort(int abortLevel, CategorizedProblem problem) {
+		switch (abortLevel) {
+			case AbortCompilation :
+				throw new AbortCompilation(this.compilationResult, problem);
+			case AbortCompilationUnit :
+				throw new AbortCompilationUnit(this.compilationResult, problem);
+			case AbortMethod :
+				throw new AbortMethod(this.compilationResult, problem);
+			default :
+				throw new AbortType(this.compilationResult, problem);
+		}
+	}
+
+	@Override
+	public CompilationResult compilationResult() {
+		return this.compilationResult;
+	}
+
+	@Override
+	public CompilationUnitDeclaration getCompilationUnitDeclaration() {
+		return this.scope.referenceCompilationUnit();
+	}
+
+	@Override
+	public boolean hasErrors() {
+		return this.ignoreFurtherInvestigation;
+	}
+
+	@Override
+	public void tagAsHavingErrors() {
+		this.ignoreFurtherInvestigation = true;
+	}
+
+	@Override
+	public void tagAsHavingIgnoredMandatoryErrors(int problemId) {
+		// Nothing to do for this context;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.java
new file mode 100644
index 0000000..194dac7
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleReference.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+
+public class ModuleReference extends ASTNode {
+	public char[][] tokens;
+	public long[] sourcePositions; //each entry is using the code : (start<<32) + end
+	public char[] moduleName;
+	public ModuleBinding binding = null;
+
+	public ModuleReference(char[][] tokens, long[] sourcePositions) {
+		this.tokens = tokens;
+		this.sourcePositions = sourcePositions;
+		this.sourceEnd = (int) (sourcePositions[sourcePositions.length - 1] & 0x00000000FFFFFFFF);
+		this.sourceStart = (int) (sourcePositions[0] >>> 32);
+		this.moduleName = CharOperation.concatWith(tokens, '.');
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		for (int i = 0; i < this.tokens.length; i++) {
+			if (i > 0) output.append('.');
+			output.append(this.tokens[i]);
+		}
+		return output;
+	}
+
+	public ModuleBinding resolve(Scope scope) {
+		if (scope == null || this.binding != null)
+			return this.binding;
+		return this.binding = scope.environment().getModule(this.moduleName);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.java
new file mode 100644
index 0000000..f977147
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ModuleStatement.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+/**
+ * Just a marker class to represent statements that can occur in a module declaration
+ *
+ */
+public abstract class ModuleStatement extends ASTNode {
+
+	public int declarationEnd;
+	public int declarationSourceStart;
+	public int declarationSourceEnd;
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.java
index 853a28b..c1ae689 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NameReference.java
@@ -41,40 +41,48 @@
  * a chain of several fields (QualifiedNameReference with more than one field).
  * Otherwise use {@link #lastFieldBinding()}.
  */
+@Override
 public FieldBinding fieldBinding() {
 	//this method should be sent ONLY after a check against isFieldReference()
 	//check its use doing senders.........
 	return (FieldBinding) this.binding ;
 }
 
+@Override
 public FieldBinding lastFieldBinding() {
 	if ((this.bits & ASTNode.RestrictiveFlagMASK) == Binding.FIELD)
 		return fieldBinding(); // most subclasses only refer to one field anyway
 	return null;
 }
 
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return null;
 }
 
+@Override
 public boolean isSuperAccess() {
 	return false;
 }
 
+@Override
 public boolean isTypeAccess() {
 	// null is acceptable when we are resolving the first part of a reference
 	return this.binding == null || this.binding instanceof ReferenceBinding;
 }
 
+@Override
 public boolean isTypeReference() {
 	return this.binding instanceof ReferenceBinding;
 }
 
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	if (receiverType == null) return; // error scenario only
 	this.actualReceiverType = receiverType;
 }
 
+@Override
 public void setDepth(int depth) {
 	this.bits &= ~DepthMASK; // flush previous depth if any
 	if (depth > 0) {
@@ -82,6 +90,7 @@
 	}
 }
 
+@Override
 public void setFieldIndex(int index){
 	// ignored
 }
@@ -94,7 +103,7 @@
    Aborts if constraints are violated. Due to various complexities, this check is not conveniently
    implementable in resolve/analyze phases.
 */
-protected void checkEffectiveFinality(LocalVariableBinding localBinding, Scope scope) {
+public void checkEffectiveFinality(VariableBinding localBinding, Scope scope) {
 	if ((this.bits & ASTNode.IsCapturedOuterLocal) != 0) {
 		if (!localBinding.isFinal() && !localBinding.isEffectivelyFinal()) {
 			scope.problemReporter().cannotReferToNonEffectivelyFinalOuterLocal(localBinding, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.java
index bbf60be..55bf488 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NormalAnnotation.java
@@ -26,6 +26,7 @@
 		this.sourceEnd = type.sourceEnd;
 	}
 
+	@Override
 	public ElementValuePair[] computeElementValuePairs() {
 		int numberOfPairs = this.memberValuePairs == null ? 0 : this.memberValuePairs.length;
 		if (numberOfPairs == 0)
@@ -40,9 +41,11 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation#memberValuePairs()
 	 */
+	@Override
 	public MemberValuePair[] memberValuePairs() {
 		return this.memberValuePairs == null ? NoValuePairs : this.memberValuePairs;
 	}
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		super.printExpression(indent, output);
 		output.append('(');
@@ -58,6 +61,7 @@
 		return output;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
@@ -71,6 +75,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.java
index cdaf354..57247f9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NullLiteral.java
@@ -28,6 +28,7 @@
 		super(s,e);
 	}
 
+	@Override
 	public void computeConstant() {
 
 		this.constant = Constant.NotAConstant;
@@ -40,6 +41,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		int pc = codeStream.position;
 		if (valueRequired) {
@@ -48,22 +50,27 @@
 		}
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
+	@Override
 	public TypeBinding literalType(BlockScope scope) {
 		return TypeBinding.NULL;
 	}
 
+	@Override
 	public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 		return FlowInfo.NULL;
 	}
 
+	@Override
 	public Object reusableJSRTarget() {
 		return TypeBinding.NULL;
 	}
 
+	@Override
 	public char[] source() {
 		return source;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.java
index 5bf0db4..10083a6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/NumberLiteral.java
@@ -23,10 +23,12 @@
 		super (s,e) ;
 	}
 
+	@Override
 	public boolean isValidJavaStatement(){
 		return false ;
 	}
 
+	@Override
 	public char[] source(){
 		return this.source;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.java
index 452370f..27b2a94 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OR_OR_Expression.java
@@ -32,6 +32,7 @@
 		super(left, right, operator);
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -92,6 +93,7 @@
 	/**
 	 * Code generation for a binary operation
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		int pc = codeStream.position;
 		if (this.constant != Constant.NotAConstant) {
@@ -193,6 +195,7 @@
 	/**
 	 * Boolean operator code generation Optimized operations are: ||
 	 */
+	@Override
 	public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 		if (this.constant != Constant.NotAConstant) {
 			super.generateOptimizedBoolean(currentScope, codeStream, trueLabel, falseLabel, valueRequired);
@@ -271,6 +274,7 @@
 		}
 	}
 
+	@Override
 	public boolean isCompactableOperation() {
 		return false;
 	}
@@ -278,6 +282,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.BinaryExpression#resolveType(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 	 */
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		TypeBinding result = super.resolveType(scope);
 		// check whether comparing identical expressions
@@ -289,6 +294,7 @@
 		return result;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			this.left.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.java
new file mode 100644
index 0000000..42b6ca6
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OpensStatement.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
+
+public class OpensStatement extends PackageVisibilityStatement {
+
+	public OpensStatement(ImportReference pkgRef) {
+		this(pkgRef, null);
+	}
+	public OpensStatement(ImportReference pkgRef, ModuleReference[] targets) {
+		super(pkgRef, targets);
+	}
+	@Override
+	protected int computeSeverity(int problemId) {
+		return ProblemSeverities.Warning;
+	}
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		printIndent(indent, output);
+		output.append("opens "); //$NON-NLS-1$
+		super.print(0, output);
+		output.append(";"); //$NON-NLS-1$
+		return output;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.java
index 48f4a7b..7d7c949 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/OperatorExpression.java
@@ -1557,6 +1557,7 @@
 		return "unknown operator"; //$NON-NLS-1$
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		output.append('(');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.java
new file mode 100644
index 0000000..2bd01b1
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PackageVisibilityStatement.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
+
+public abstract class PackageVisibilityStatement extends ModuleStatement {
+	public ImportReference pkgRef;
+	public ModuleReference[] targets;
+	public char[] pkgName;
+	public PackageBinding resolvedPackage;
+
+	public PackageVisibilityStatement(ImportReference pkgRef, ModuleReference[] targets) {
+		this.pkgRef = pkgRef;
+		this.pkgName = CharOperation.concatWith(this.pkgRef.tokens, '.');
+		this.targets = targets;
+	}
+	public boolean isQualified() {
+		return this.targets != null && this.targets.length > 0;
+	}
+	
+	public ModuleReference[] getTargetedModules() {
+		return this.targets;
+	}
+
+	public boolean resolve(Scope scope) {
+		boolean errorsExist = resolvePackageReference(scope) == null;
+		if (this.isQualified()) {
+			HashtableOfObject modules = new HashtableOfObject(this.targets.length);
+			for (int i = 0; i < this.targets.length; i++) {
+				ModuleReference ref = this.targets[i];
+				if (modules.containsKey(ref.moduleName)) {
+					scope.problemReporter().duplicateModuleReference(IProblem.DuplicateModuleRef, ref);
+					errorsExist = true;
+				} else {
+					ref.resolve(scope.compilationUnitScope());
+					modules.put(ref.moduleName, ref);
+				}
+			}
+		}
+		return !errorsExist;
+	}
+	protected int computeSeverity(int problemId) {
+		return ProblemSeverities.Error;
+	}
+	protected PackageBinding resolvePackageReference(Scope scope) {
+		if (this.resolvedPackage != null)
+			return this.resolvedPackage;
+		ModuleDeclaration exportingModule = scope.compilationUnitScope().referenceContext.moduleDeclaration;
+		ModuleBinding src = exportingModule.binding;
+		this.resolvedPackage = src != null ? src.getVisiblePackage(this.pkgRef.tokens) : null;
+		int problemId = IProblem.PackageDoesNotExistOrIsEmpty;
+		if (this.resolvedPackage == null) {
+			// TODO: need a check for empty package as well
+			scope.problemReporter().invalidPackageReference(problemId, this, computeSeverity(problemId));
+		} else {
+			if (!this.resolvedPackage.isDeclaredIn(src)) {
+				this.resolvedPackage = null;
+				// TODO(SHMOD): specific error?
+				scope.problemReporter().invalidPackageReference(problemId, this, computeSeverity(problemId));
+			}
+		}
+		
+		return this.resolvedPackage;
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		this.pkgRef.print(indent, output);
+		if (this.isQualified()) {
+			output.append(" to "); //$NON-NLS-1$
+			for (int i = 0; i < this.targets.length; i++) {
+				if (i > 0) output.append(", "); //$NON-NLS-1$
+				this.targets[i].print(0, output);
+			}
+		}
+		return output;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.java
index 11dd679..805ac3c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedQualifiedTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,6 +65,7 @@
 			this.bits |= ASTNode.HasTypeAnnotations;
 		}
 	}
+	@Override
 	public void checkBounds(Scope scope) {
 		if (this.resolvedType == null || !this.resolvedType.isValidBinding()) return;
 
@@ -89,6 +90,7 @@
 			}
 		}
 	}
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		int totalDimensions = this.dimensions() + additionalDimensions;
 		Annotation [][] allAnnotations = getMergedAnnotationsOnDimensions(additionalDimensions, additionalAnnotations);
@@ -99,6 +101,7 @@
 			pqtr.extendedDimensions = additionalDimensions;
 		return pqtr;
 	}
+	@Override
 	public boolean isParameterizedTypeReference() {
 		return true;
 	}
@@ -128,6 +131,7 @@
 	/**
 	 * @return char[][]
 	 */
+	@Override
 	public char [][] getParameterizedTypeName(){
 		int length = this.tokens.length;
 		char[][] qParamName = new char[length][];
@@ -162,14 +166,13 @@
 		return qParamName;
 	}
 
+	@Override
 	public TypeReference[][] getTypeArguments() {
 		return this.typeArguments;
 	}
 	
-	/* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
-     */
-    protected TypeBinding getTypeBinding(Scope scope) {
+    @Override
+	protected TypeBinding getTypeBinding(Scope scope) {
         return null; // not supported here - combined with resolveType(...)
     }
 
@@ -200,6 +203,10 @@
 		TypeBinding type = internalResolveLeafType(scope, checkBounds);
 		createArrayType(scope);
 		resolveAnnotations(scope, location);
+		if(this.dimensions > 0) {
+			this.resolvedType = ArrayTypeReference.maybeMarkArrayContentsNonNull(scope, this.resolvedType, this.sourceStart, this.dimensions, null);
+		}
+
 		if (this.typeArguments != null)
 			// relevant null annotations are on the inner most type:
 			checkIllegalNullAnnotations(scope, this.typeArguments[this.typeArguments.length-1]);
@@ -383,6 +390,7 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		int length = this.tokens.length;
 		for (int i = 0; i < length - 1; i++) {
@@ -456,12 +464,15 @@
 		return output;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 	    return internalResolveType(scope, checkBounds, location);
 	}
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 	    return internalResolveType(scope, false, location);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -493,6 +504,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.java
index e5abad1..1b09e16 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ParameterizedSingleTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -56,6 +56,7 @@
 			this.bits |= ASTNode.HasTypeAnnotations;
 		}
 	}
+	@Override
 	public void checkBounds(Scope scope) {
 		if (this.resolvedType == null) return;
 
@@ -68,6 +69,7 @@
 		}
 	}
 	
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation [][] additionalAnnotations, boolean isVarargs) {
 		int totalDimensions = this.dimensions() + additionalDimensions;
 		Annotation [][] allAnnotations = getMergedAnnotationsOnDimensions(additionalDimensions, additionalAnnotations);
@@ -82,6 +84,7 @@
 	/**
 	 * @return char[][]
 	 */
+	@Override
 	public char [][] getParameterizedTypeName(){
 		StringBuffer buffer = new StringBuffer(5);
 		buffer.append(this.token).append('<');
@@ -106,6 +109,7 @@
 		return new char[][]{ name };
 	}
 	
+	@Override
 	public TypeReference[][] getTypeArguments() {
 		return new TypeReference[][] { this.typeArguments };
 	}
@@ -113,11 +117,13 @@
 	/**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
      */
-    protected TypeBinding getTypeBinding(Scope scope) {
+    @Override
+	protected TypeBinding getTypeBinding(Scope scope) {
         return null; // not supported here - combined with resolveType(...)
     }
     
-    public boolean isParameterizedTypeReference() {
+    @Override
+	public boolean isParameterizedTypeReference() {
     	return true;
     }
 
@@ -177,6 +183,10 @@
 			} else {
 				this.resolvedType = type; 			// (3) no complaint, keep fully resolved type (incl. dimensions)
 				resolveAnnotations(scope, location);
+				if(this.dimensions > 0) {
+					this.resolvedType = ArrayTypeReference.maybeMarkArrayContentsNonNull(scope, this.resolvedType, this.sourceStart, this.dimensions,
+																leafType -> this.leafComponentTypeWithoutDefaultNullness = leafType);
+				}
 				return this.resolvedType; // pick up any annotated type.
 			}
 		}
@@ -325,6 +335,7 @@
 		return type;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 		if (this.annotations != null && this.annotations[0] != null) {
 			printAnnotations(this.annotations[0], output);
@@ -371,18 +382,22 @@
 		return output;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 	    return internalResolveType(scope, null, checkBounds, location);
 	}
 
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 	    return internalResolveType(scope, null, false /*no bounds check in classScope*/, location);
 	}
 
+	@Override
 	public TypeBinding resolveTypeEnclosing(BlockScope scope, ReferenceBinding enclosingType) {
 	    return internalResolveType(scope, enclosingType, true/*check bounds*/, 0);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -410,6 +425,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.java
index 089b9be..bc19334 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PostfixExpression.java
@@ -21,6 +21,7 @@
 	this.sourceStart = lhs.sourceStart;
 	this.sourceEnd = pos;
 }
+@Override
 public boolean checkCastCompatibility() {
 	return false;
 }
@@ -31,6 +32,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	// various scenarii are possible, setting an array reference,
 	// a field reference, a blank final field reference, a field of an enclosing instance or
@@ -44,6 +46,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public String operatorToString() {
 	switch (this.operator) {
 		case PLUS :
@@ -54,14 +57,17 @@
 	return "unknown operator"; //$NON-NLS-1$
 }
 
+@Override
 public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 	return this.lhs.printExpression(indent, output).append(' ').append(operatorToString());
 }
 
+@Override
 public boolean restrainUsageToNumericTypes() {
 	return true;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 
 	if (visitor.visit(this, scope)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.java
index dcada80..8b7cd68 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/PrefixExpression.java
@@ -26,9 +26,11 @@
 	this.sourceStart = pos;
 	this.sourceEnd = lhs.sourceEnd;
 }
+@Override
 public boolean checkCastCompatibility() {
 	return false;
 }
+@Override
 public String operatorToString() {
 	switch (this.operator) {
 		case PLUS :
@@ -39,16 +41,19 @@
 	return "unknown operator"; //$NON-NLS-1$
 }
 
+@Override
 public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 
 	output.append(operatorToString()).append(' ');
 	return this.lhs.printExpression(0, output);
 }
 
+@Override
 public boolean restrainUsageToNumericTypes() {
 	return true;
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		this.lhs.traverse(visitor, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.java
new file mode 100644
index 0000000..c9b8ff6
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ProvidesStatement.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+
+public class ProvidesStatement extends ModuleStatement {
+
+	public TypeReference serviceInterface;
+	public TypeReference[] implementations;
+
+	public boolean resolve(BlockScope scope) {
+		ModuleDeclaration module = scope.referenceCompilationUnit().moduleDeclaration;
+		ModuleBinding src = module.binding;
+		TypeBinding infBinding = this.serviceInterface.resolveType(scope);
+		boolean hasErrors = false;
+		if (infBinding == null || !infBinding.isValidBinding()) {
+			return false;
+		}
+		if (!(infBinding.isClass() || infBinding.isInterface() || infBinding.isAnnotationType())) {
+			scope.problemReporter().invalidServiceRef(IProblem.InvalidServiceIntfType, this.serviceInterface);
+		}
+		ReferenceBinding intf = (ReferenceBinding) this.serviceInterface.resolvedType;
+		Set<TypeBinding> impls = new HashSet<>();
+		for (int i = 0; i < this.implementations.length; i++) {
+			ReferenceBinding impl = (ReferenceBinding) this.implementations[i].resolveType(scope);
+			if (impl == null || !impl.isValidBinding() || !impl.canBeSeenBy(scope)) {
+				hasErrors = true;
+				continue;
+			}
+			if (!impls.add(impl)) {
+				scope.problemReporter().duplicateTypeReference(IProblem.DuplicateServices, this.implementations[i]);
+				continue;
+			}
+			int problemId = ProblemReasons.NoError;
+			ModuleBinding declaringModule = impl.module();
+			
+			if (declaringModule != src) {
+				problemId = IProblem.ServiceImplNotDefinedByModule;
+			} else if (!impl.isClass() && !impl.isInterface()) {
+				problemId = IProblem.InvalidServiceImplType;
+			} else if (impl.isNestedType() && !impl.isStatic()) {
+				problemId = IProblem.NestedServiceImpl;
+			} else {
+				MethodBinding provider = impl.getExactMethod(TypeConstants.PROVIDER, Binding.NO_PARAMETERS, scope.compilationUnitScope());
+				if (provider != null && (!provider.isValidBinding() || !(provider.isPublic() && provider.isStatic()))) {
+					provider = null;
+				}
+				TypeBinding implType = impl;
+				if (provider != null) {
+					implType = provider.returnType;
+					if (implType instanceof ReferenceBinding && !implType.canBeSeenBy(scope)) {
+						ReferenceBinding referenceBinding = (ReferenceBinding) implType;
+						scope.problemReporter().invalidType(this.implementations[i], new ProblemReferenceBinding(
+								referenceBinding.compoundName, referenceBinding, ProblemReasons.NotVisible));
+						hasErrors = true;
+					}
+				} else {
+					if (impl.isAbstract()) {
+						problemId = IProblem.AbstractServiceImplementation;
+					} else {
+						MethodBinding defaultConstructor = impl.getExactConstructor(Binding.NO_PARAMETERS);
+						if (defaultConstructor == null || !defaultConstructor.isValidBinding()) {
+							problemId = IProblem.ProviderMethodOrConstructorRequiredForServiceImpl;
+						} else if (!defaultConstructor.isPublic()) {
+							problemId = IProblem.ServiceImplDefaultConstructorNotPublic;
+						}
+					}
+				}
+				if (implType.findSuperTypeOriginatingFrom(intf) == null) {
+					scope.problemReporter().typeMismatchError(implType, intf, this.implementations[i], null);
+					hasErrors = true;
+				}
+			}
+			if (problemId != ProblemReasons.NoError) {
+				scope.problemReporter().invalidServiceRef(problemId, this.implementations[i]);
+				hasErrors = true;
+			}
+		}
+		return hasErrors;
+	}
+
+	public List<TypeBinding> getResolvedImplementations() {
+		List<TypeBinding> resolved = new ArrayList<>();
+		if (this.implementations != null) {
+			for (TypeReference implRef : this.implementations) {
+				TypeBinding one = implRef.resolvedType;
+				if (one != null)
+					resolved.add(one);
+			}
+		}
+		return resolved;
+	}
+
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		printIndent(indent, output);
+		output.append("provides "); //$NON-NLS-1$
+		this.serviceInterface.print(0, output);
+		//output.append(" "); //$NON-NLS-1$
+		//printIndent(indent + 1, output);
+		output.append(" with "); //$NON-NLS-1$
+		for (int i = 0; i < this.implementations.length; i++) {
+			this.implementations[i].print(0, output);
+			if (i < this.implementations.length - 1)
+				output.append(", "); //$NON-NLS-1$
+		}
+		output.append(";"); //$NON-NLS-1$
+		return output;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java
index 4899844..739ce19 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,6 +36,8 @@
 
 import static org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExpressionContext.INVOCATION_CONTEXT;
 
+import java.util.Arrays;
+
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
@@ -48,7 +50,9 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ImplicitNullAnnotationVerifier;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.IntersectionTypeBinding18;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LocalTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
@@ -58,8 +62,10 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
@@ -85,6 +91,7 @@
 		anonymousType.allocation = this;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		// analyse the enclosing instance
 		if (this.enclosingInstance != null) {
@@ -161,11 +168,13 @@
 		return flowInfo;
 	}
 
+	@Override
 	public Expression enclosingInstance() {
 
 		return this.enclosingInstance;
 	}
 
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		cleanUpInferenceContexts();
 		if (!valueRequired)
@@ -238,6 +247,7 @@
 		}
 	}
 
+	@Override
 	public boolean isSuperAccess() {
 
 		// necessary to lookup super constructor of anonymous type
@@ -251,6 +261,7 @@
 	 * types, since by the time we reach them, we might not yet know their
 	 * exact need.
 	 */
+	@Override
 	public void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) {
 		if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0)	{
 		ReferenceBinding allocatedTypeErasure = (ReferenceBinding) this.binding.declaringClass.erasure();
@@ -269,6 +280,7 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		if (this.enclosingInstance != null)
 			this.enclosingInstance.printExpression(0, output).append('.');
@@ -279,6 +291,7 @@
 		return output;
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		// added for code assist...cannot occur with 'normal' code
 		if (this.anonymousType == null && this.enclosingInstance == null) {
@@ -288,10 +301,7 @@
 		if (result != null && !result.isPolyType() && this.binding != null) {
 			final CompilerOptions compilerOptions = scope.compilerOptions();
 			if (compilerOptions.isAnnotationBasedNullAnalysisEnabled) {
-				if ((this.binding.tagBits & TagBits.IsNullnessKnown) == 0) {
-					new ImplicitNullAnnotationVerifier(scope.environment(), compilerOptions.inheritNullAnnotations)
-							.checkImplicitNullAnnotations(this.binding, null/*srcMethod*/, false, scope);
-				}
+				ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(this.binding, scope);
 				if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8) {
 					if (this.binding instanceof ParameterizedGenericMethodBinding && this.typeArguments != null) {
 						TypeVariableBinding[] typeVariables = this.binding.original().typeVariables();
@@ -482,8 +492,10 @@
 				}
 			} else {
 				if (isDiamond) {
-					scope.problemReporter().diamondNotWithAnoymousClasses(this.type);
-					return null;
+					if (sourceLevel < ClassFileConstants.JDK9) {
+						scope.problemReporter().diamondNotWithAnoymousClasses(this.type);
+						return null;
+					}
 				}	
 				ReferenceBinding superType = (ReferenceBinding) receiverType;
 				if (superType.isTypeVariable()) {
@@ -494,56 +506,7 @@
 					scope.problemReporter().cannotInstantiate(this.type, superType);
 					return this.resolvedType = superType;
 				}
-				// anonymous type scenario
-				// an anonymous class inherits from java.lang.Object when declared "after" an interface
-				ReferenceBinding anonymousSuperclass = superType.isInterface() ? scope.getJavaLangObject() : superType;
-				// insert anonymous type in scope
-				scope.addAnonymousType(this.anonymousType, superType);
-				this.anonymousType.resolve(scope);
-
-				// find anonymous super constructor
-				this.resolvedType = this.anonymousType.binding; // 1.2 change
-				if ((this.resolvedType.tagBits & TagBits.HierarchyHasProblems) != 0) {
-					return null; // stop secondary errors
-				}
-				MethodBinding inheritedBinding = findConstructorBinding(scope, this, anonymousSuperclass, this.argumentTypes);
-
-				if (!inheritedBinding.isValidBinding()) {
-					if (inheritedBinding.declaringClass == null) {
-						inheritedBinding.declaringClass = anonymousSuperclass;
-					}
-					if (this.type != null && !this.type.resolvedType.isValidBinding()) {
-						// problem already got signaled on type reference, do not report secondary problem
-						return null;
-					}
-					scope.problemReporter().invalidConstructor(this, inheritedBinding);
-					return this.resolvedType;
-				}
-				if ((inheritedBinding.tagBits & TagBits.HasMissingType) != 0) {
-					scope.problemReporter().missingTypeInConstructor(this, inheritedBinding);
-				}
-				if (this.enclosingInstance != null) {
-					ReferenceBinding targetEnclosing = inheritedBinding.declaringClass.enclosingType();
-					if (targetEnclosing == null) {
-						scope.problemReporter().unnecessaryEnclosingInstanceSpecification(this.enclosingInstance, superType);
-						return this.resolvedType;
-					} else if (!enclosingInstanceType.isCompatibleWith(targetEnclosing) && !scope.isBoxingCompatibleWith(enclosingInstanceType, targetEnclosing)) {
-						scope.problemReporter().typeMismatchError(enclosingInstanceType, targetEnclosing, this.enclosingInstance, null);
-						return this.resolvedType;
-					}
-					this.enclosingInstance.computeConversion(scope, targetEnclosing, enclosingInstanceType);
-				}
-				if (this.arguments != null) {
-					if (checkInvocationArguments(scope, null, anonymousSuperclass, inheritedBinding, this.arguments, this.argumentTypes, this.argsContainCast, this)) {
-						this.bits |= ASTNode.Unchecked;
-					}
-				}
-				if (this.typeArguments != null && inheritedBinding.original().typeVariables == Binding.NO_TYPE_VARIABLES) {
-					scope.problemReporter().unnecessaryTypeArgumentsForMethodInvocation(inheritedBinding, this.genericTypeArguments, this.typeArguments);
-				}
-				// Update the anonymous inner class : superclass, interface
-				this.binding = this.anonymousType.createDefaultConstructorWithBinding(inheritedBinding, 	(this.bits & ASTNode.Unchecked) != 0 && this.genericTypeArguments == null);
-				return this.resolvedType;
+				this.resolvedType = receiverType;
 			}
 		} else {
 			if (this.enclosingInstance != null) {
@@ -551,8 +514,9 @@
 				this.resolvedType = receiverType = this.type.resolvedType;
 			}
 		}
+		MethodBinding constructorBinding = null;
 		if (isDiamond) {
-			this.binding = inferConstructorOfElidedParameterizedType(scope);
+			this.binding = constructorBinding = inferConstructorOfElidedParameterizedType(scope);
 			if (this.binding == null || !this.binding.isValidBinding()) {
 				scope.problemReporter().cannotInferElidedTypes(this);
 				return this.resolvedType = null;
@@ -561,50 +525,147 @@
 				return new PolyTypeBinding(this);
 			}
 			this.resolvedType = this.type.resolvedType = receiverType = this.binding.declaringClass;
+			if (this.anonymousType != null) {
+				constructorBinding = getAnonymousConstructorBinding((ReferenceBinding) receiverType, scope);
+				if (constructorBinding == null)
+					return null;
+				this.resolvedType = this.anonymousType.binding;
+				// Check that inferred type is valid
+				if (!validate((ParameterizedTypeBinding) receiverType, scope)) {
+					return this.resolvedType;
+				}
+			} else {
+				// 15.9.3 - If the compile-time declaration is applicable by variable arity invocation...
+				if (this.binding.isVarargs()) {
+					TypeBinding lastArg = this.binding.parameters[this.binding.parameters.length - 1].leafComponentType();
+					if (!lastArg.erasure().canBeSeenBy(scope)) {
+						scope.problemReporter().invalidType(this, new ProblemReferenceBinding(new char[][] {lastArg.readableName()}, (ReferenceBinding)lastArg, ProblemReasons.NotVisible));
+						return this.resolvedType = null;
+					}
+				}
+			}
 			resolvePolyExpressionArguments(this, this.binding, this.argumentTypes, scope);
 		} else {
-			this.binding = findConstructorBinding(scope, this, (ReferenceBinding) receiverType, this.argumentTypes);
-		}
-
-		if (this.binding.isValidBinding()) {	
-			if (isMethodUseDeprecated(this.binding, scope, true)) {
-				scope.problemReporter().deprecatedMethod(this.binding, this);
+			if (this.anonymousType != null) {
+				constructorBinding = getAnonymousConstructorBinding((ReferenceBinding) receiverType, scope);
+				if (constructorBinding == null)
+					return null;
+				this.resolvedType = this.anonymousType.binding;
+			} else {
+				this.binding = constructorBinding = findConstructorBinding(scope, this, (ReferenceBinding) receiverType, this.argumentTypes);
 			}
-			if (checkInvocationArguments(scope, null, receiverType, this.binding, this.arguments, this.argumentTypes, this.argsContainCast, this)) {
+		}
+		ReferenceBinding receiver = (ReferenceBinding) receiverType;
+		ReferenceBinding superType = receiver.isInterface() ? scope.getJavaLangObject() : receiver;
+		if (constructorBinding.isValidBinding()) {
+			if (isMethodUseDeprecated(constructorBinding, scope, true)) {
+				scope.problemReporter().deprecatedMethod(constructorBinding, this);
+			}
+			if (checkInvocationArguments(scope, null, superType, constructorBinding, this.arguments,
+					this.argumentTypes, this.argsContainCast, this)) {
 				this.bits |= ASTNode.Unchecked;
 			}
-			if (this.typeArguments != null && this.binding.original().typeVariables == Binding.NO_TYPE_VARIABLES) {
-				scope.problemReporter().unnecessaryTypeArgumentsForMethodInvocation(this.binding, this.genericTypeArguments, this.typeArguments);
+			if (this.typeArguments != null && constructorBinding.original().typeVariables == Binding.NO_TYPE_VARIABLES) {
+				scope.problemReporter().unnecessaryTypeArgumentsForMethodInvocation(constructorBinding,
+						this.genericTypeArguments, this.typeArguments);
 			}
 		} else {
-			if (this.binding.declaringClass == null) {
-				this.binding.declaringClass = (ReferenceBinding) receiverType;
+			if (constructorBinding.declaringClass == null) {
+				constructorBinding.declaringClass = superType;
 			}
 			if (this.type != null && !this.type.resolvedType.isValidBinding()) {
 				// problem already got signaled on type reference, do not report secondary problem
 				return null;
 			}
-			scope.problemReporter().invalidConstructor(this, this.binding);
+			scope.problemReporter().invalidConstructor(this, constructorBinding);
+			return this.resolvedType;
+		}
+		if ((constructorBinding.tagBits & TagBits.HasMissingType) != 0) {
+			scope.problemReporter().missingTypeInConstructor(this, constructorBinding);
+		}
+		if (this.enclosingInstance != null) {
+			ReferenceBinding targetEnclosing = constructorBinding.declaringClass.enclosingType();
+			if (targetEnclosing == null) {
+				scope.problemReporter().unnecessaryEnclosingInstanceSpecification(this.enclosingInstance, receiver);
+				return this.resolvedType;
+			} else if (!enclosingInstanceType.isCompatibleWith(targetEnclosing) && !scope.isBoxingCompatibleWith(enclosingInstanceType, targetEnclosing)) {
+				scope.problemReporter().typeMismatchError(enclosingInstanceType, targetEnclosing, this.enclosingInstance, null);
+				return this.resolvedType;
+			}
+			this.enclosingInstance.computeConversion(scope, targetEnclosing, enclosingInstanceType);
+		}
+		if (!isDiamond && receiverType.isParameterizedTypeWithActualArguments() && 
+				(this.anonymousType == null || sourceLevel >= ClassFileConstants.JDK9)) {
+			checkTypeArgumentRedundancy((ParameterizedTypeBinding) receiverType, scope);
+		}
+		if (this.anonymousType != null) {
+			// anonymous type scenario
+			// Update the anonymous inner class : superclass, interface
+			LookupEnvironment environment=scope.environment();
+			if (environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
+				ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(constructorBinding, scope);
+			}
+			this.binding = this.anonymousType.createDefaultConstructorWithBinding(constructorBinding, (this.bits & ASTNode.Unchecked) != 0 && this.genericTypeArguments == null);
+			return this.resolvedType;
+		} else {
 			return this.resolvedType = receiverType;
 		}
-		if ((this.binding.tagBits & TagBits.HasMissingType) != 0) {
-			scope.problemReporter().missingTypeInConstructor(this, this.binding);
-		}
-		if (!isDiamond && receiverType.isParameterizedTypeWithActualArguments()) {
-			checkTypeArgumentRedundancy((ParameterizedTypeBinding)receiverType, scope);
-		}
-		// The enclosing instance must be compatible with the innermost enclosing type
-		ReferenceBinding expectedType = this.binding.declaringClass.enclosingType();
-		if (TypeBinding.notEquals(expectedType, enclosingInstanceType)) // must call before computeConversion() and typeMismatchError()
-			scope.compilationUnitScope().recordTypeConversion(expectedType, enclosingInstanceType);
-		if (enclosingInstanceType.isCompatibleWith(expectedType) || scope.isBoxingCompatibleWith(enclosingInstanceType, expectedType)) {
-			this.enclosingInstance.computeConversion(scope, expectedType, enclosingInstanceType);
-			return this.resolvedType = receiverType;
-		}
-		scope.problemReporter().typeMismatchError(enclosingInstanceType, expectedType, this.enclosingInstance, null);
-		return this.resolvedType = receiverType;
 	}
 
+	private boolean validate(final ParameterizedTypeBinding allocationType, final Scope scope) {
+		class ValidityInspector extends TypeBindingVisitor {
+			private boolean noErrors;
+
+			public ValidityInspector() {
+				this.noErrors = true;
+			}
+
+			@Override
+			public boolean visit(IntersectionTypeBinding18 intersectionTypeBinding18) {
+				Arrays.sort(intersectionTypeBinding18.intersectingTypes, (t1, t2) -> t1.id - t2.id);
+				scope.problemReporter().anonymousDiamondWithNonDenotableTypeArguments(QualifiedAllocationExpression.this.type, allocationType);
+				return this.noErrors = false;  // stop traversal
+			}
+			@Override
+			public boolean visit(TypeVariableBinding typeVariable) {
+				if (typeVariable.isCapture()) {
+					scope.problemReporter().anonymousDiamondWithNonDenotableTypeArguments(QualifiedAllocationExpression.this.type, allocationType);
+					return this.noErrors = false;  // stop traversal
+				}
+				return true; // continue traversal
+			}
+			@Override
+			public boolean visit(ReferenceBinding ref) {
+				if (!ref.canBeSeenBy(scope)) {
+					scope.problemReporter().invalidType(QualifiedAllocationExpression.this.anonymousType, new ProblemReferenceBinding(ref.compoundName, ref, ProblemReasons.NotVisible));
+					return this.noErrors = false;
+				}
+				return true;
+			}
+			public boolean isValid() {
+				TypeBindingVisitor.visit(this, allocationType);
+				return this.noErrors;
+			}
+		}
+		
+		return new ValidityInspector().isValid();
+	}
+	private MethodBinding getAnonymousConstructorBinding(ReferenceBinding receiverType, BlockScope scope) {
+		ReferenceBinding superType = receiverType;
+		// an anonymous class inherits from java.lang.Object when declared "after" an interface
+		ReferenceBinding anonymousSuperclass = superType.isInterface() ? scope.getJavaLangObject() : superType;
+		// insert anonymous type in scope
+		scope.addAnonymousType(this.anonymousType, superType);
+		this.anonymousType.resolve(scope);
+
+		// find anonymous super constructor
+		this.resolvedType = this.anonymousType.binding; // 1.2 change
+		if ((this.resolvedType.tagBits & TagBits.HierarchyHasProblems) != 0) {
+			return null; // stop secondary errors
+		}
+		return findConstructorBinding(scope, this, anonymousSuperclass, this.argumentTypes);
+	}
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.enclosingInstance != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java
index 6f90758..0cb696b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedNameReference.java
@@ -1,3 +1,4 @@
+// AspectJ
 /*******************************************************************************
  * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -77,6 +78,7 @@
 	this.sourceEnd = sourceEnd;
 }
 
+@Override
 public FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) {
 	// determine the rank until which we now we do not need any actual value for the field access
 	int otherBindingsCount = this.otherBindings == null ? 0 : this.otherBindings.length;
@@ -179,10 +181,12 @@
 	return flowInfo;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return analyseCode(currentScope, flowContext, flowInfo, true);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) {
 	// determine the rank until which we now we do not need any actual value for the field access
 	int otherBindingsCount = this.otherBindings == null ? 0 : this.otherBindings.length;
@@ -264,6 +268,7 @@
 	}
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if (super.checkNPE(scope, flowContext, flowInfo, ttlForFieldCheck)) {
 		return true;
@@ -288,6 +293,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#computeConversion(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) {
 	if (runtimeTimeType == null || compileTimeType == null)
 		return;
@@ -326,6 +332,7 @@
 	super.computeConversion(scope, runtimeTimeType, compileTimeType);
 }
 
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	int pc = codeStream.position;
 	FieldBinding lastFieldBinding = generateReadSequence(currentScope, codeStream);
@@ -338,6 +345,7 @@
 	}
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -420,6 +428,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	FieldBinding lastFieldBinding = generateReadSequence(currentScope, codeStream);
 	// check if compound assignment is the only usage of a private field
@@ -473,6 +482,7 @@
 	// equivalent to valuesRequired[maxOtherBindings]
 }
 
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	FieldBinding lastFieldBinding = generateReadSequence(currentScope, codeStream);
 	// check if this post increment is the only usage of a private field
@@ -682,6 +692,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return null;
 }
@@ -818,6 +829,7 @@
 			: type;
 }
 
+@Override
 public boolean isEquivalent(Reference reference) {
 	if (reference instanceof FieldReference) {
 		return reference.isEquivalent(this); // comparison FR <-> QNR is implemented only once
@@ -847,6 +859,7 @@
 	return (this.bits & ASTNode.RestrictiveFlagMASK) == Binding.FIELD;
 }
 
+@Override
 public FieldBinding lastFieldBinding() {
 	if (this.otherBindings != null) {
 		return this.otherBindings[this.otherBindings.length - 1];		
@@ -940,6 +953,7 @@
 	}
 }
 
+@Override
 public Constant optimizedBooleanConstant() {
 	switch (this.resolvedType.id) {
 		case T_boolean :
@@ -960,6 +974,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#postConversionType(Scope)
  */
+@Override
 public TypeBinding postConversionType(Scope scope) {
 	TypeBinding convertedType = this.resolvedType;
 	TypeBinding requiredGenericCast = getGenericCast(this.otherBindings == null ? 0 : this.otherBindings.length);
@@ -999,6 +1014,7 @@
 	return convertedType;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	for (int i = 0; i < this.tokens.length; i++) {
 		if (i > 0) output.append('.');
@@ -1021,6 +1037,7 @@
 	return null;
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
     if (resolvedType != null) return resolvedType; // already done it! // AspectJ Extension - prevents erroring when
                                                     // called twice
@@ -1134,6 +1151,7 @@
 	return this.resolvedType = reportError(scope);
 }
 
+@Override
 public void setFieldIndex(int index) {
 	this.indexOfFirstFieldBinding = index;
 }
@@ -1163,24 +1181,29 @@
     }
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, ClassScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
 }
 
+@Override
 public String unboundReferenceErrorName() {
 	return new String(this.tokens[0]);
 }
 
+@Override
 public char[][] getName() {
 	return this.tokens;
 }
 
+@Override
 public VariableBinding nullAnnotatedVariableBinding(boolean supportTypeAnnotations) {
 	if (this.binding != null && isFieldAccess()) {
 		FieldBinding fieldBinding;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.java
index da8a197..f353626 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedSuperReference.java
@@ -1,3 +1,4 @@
+// ASPECTJ
 /*******************************************************************************
  * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -17,12 +18,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReasons;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemReferenceBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
 
 public class QualifiedSuperReference extends QualifiedThisReference {
 
@@ -30,22 +26,27 @@
 	super(name, pos, sourceEnd);
 }
 
+@Override
 public boolean isSuper() {
 	return true;
 }
 
+@Override
 public boolean isQualifiedSuper() {
 	return true;
 }
 
+@Override
 public boolean isThis() {
 	return false;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output) {
 	return this.qualification.print(0, output).append(".super"); //$NON-NLS-1$
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	if ((this.bits & ParenthesizedMASK) != 0) {
 		scope.problemReporter().invalidParenthesizedExpression(this);
@@ -68,6 +69,7 @@
 			: this.currentCompatibleType.superclass());
 }
 
+@Override
 int findCompatibleEnclosing(ReferenceBinding enclosingType, TypeBinding type, BlockScope scope) {
 	if (type.isInterface()) {
 		// super call to an overridden default method? (not considering outer enclosings)
@@ -89,19 +91,8 @@
 				// keep looking to ensure we always find the referenced type (even if illegal) 
 			}
 		}
-		if (!isLegal) {// || !isJava8) {
-			// AspectJ
-//			if (isJava8) {
-//				// Allowed inside ITDs
-//				Scope s = scope;
-//				boolean isOK = false;
-//				while (s!=null) {
-//					if (s instanceof InterTypeScope)
-//					s = s.parent;
-//				}
-//				break;
-//			}
-			// End AspectJ
+		// AspectJ
+		if (!isLegal || (!isJava8 && !isWithinInterTypeScope(scope))) {
 			this.currentCompatibleType = null;
 			// Please note the slightly unconventional use of the ProblemReferenceBinding:
 			// we use the problem's compoundName to report the type being illegally bypassed,
@@ -118,6 +109,24 @@
 	return super.findCompatibleEnclosing(enclosingType, type, scope);
 }
 
+// AspectJ - start
+/**
+ * @param scope the scope to check
+ * @return true if the specified scope is nested within an inter type declaration scope
+ */
+private boolean isWithinInterTypeScope(Scope scope) {
+	Scope s = scope;
+	while (s != null) {
+		if (s.isInterTypeScope()) {
+			return true;
+		}
+		s = s.parent;
+	}
+	return false;
+}
+//AspectJ - end
+
+@Override
 public void traverse(
 	ASTVisitor visitor,
 	BlockScope blockScope) {
@@ -127,6 +136,7 @@
 	}
 	visitor.endVisit(this, blockScope);
 }
+@Override
 public void traverse(
 		ASTVisitor visitor,
 		ClassScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.java
index 668dbec..eb508d5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedThisReference.java
@@ -33,6 +33,7 @@
 		this.sourceStart = name.sourceStart;
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -41,6 +42,7 @@
 		return flowInfo;
 	}
 
+	@Override
 	public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -57,6 +59,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	 */
+	@Override
 	public void generateCode(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -76,6 +79,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.constant = Constant.NotAConstant;
@@ -138,11 +142,13 @@
 		return depth;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		return this.qualification.print(0, output).append(".this"); //$NON-NLS-1$
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
@@ -153,6 +159,7 @@
 		visitor.endVisit(this, blockScope);
 	}
 
+	@Override
 	public void traverse(
 			ASTVisitor visitor,
 			ClassScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
index bcb4048..c109f13 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/QualifiedTypeReference.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,6 +28,7 @@
 		this.sourceEnd = (int)(this.sourcePositions[this.sourcePositions.length-1] & 0x00000000FFFFFFFFL ) ;
 	}
 
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		int totalDimensions = this.dimensions() + additionalDimensions;
 		Annotation [][] allAnnotations = getMergedAnnotationsOnDimensions(additionalDimensions, additionalAnnotations);
@@ -63,6 +64,7 @@
 		}
 	}
 
+	@Override
 	public char[] getLastToken() {
 		return this.tokens[this.tokens.length-1];
 	}
@@ -96,6 +98,7 @@
 		}
 	}
 
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 
 		if (this.resolvedType != null) {
@@ -111,11 +114,22 @@
 			return (ReferenceBinding) binding; // not found
 		}
 	    PackageBinding packageBinding = binding == null ? null : (PackageBinding) binding;
+	    int typeStart = packageBinding == null ? 0 : packageBinding.compoundName.length;
+	    
+	    if (packageBinding != null) {
+	    	PackageBinding uniquePackage = packageBinding.getVisibleFor(scope.module());
+	    	if (uniquePackage instanceof SplitPackageBinding) {
+	    		SplitPackageBinding splitPackage = (SplitPackageBinding) uniquePackage;
+    			scope.problemReporter().conflictingPackagesFromModules(splitPackage, this.sourceStart, (int)this.sourcePositions[typeStart-1]);
+    			this.resolvedType = new ProblemReferenceBinding(this.tokens, null, ProblemReasons.Ambiguous);
+    			return null;
+	    	}
+	    }
 	    rejectAnnotationsOnPackageQualifiers(scope, packageBinding);
 
 	    boolean isClassScope = scope.kind == Scope.CLASS_SCOPE;
 	    ReferenceBinding qualifiedType = null;
-		for (int i = packageBinding == null ? 0 : packageBinding.compoundName.length, max = this.tokens.length, last = max-1; i < max; i++) {
+		for (int i = typeStart, max = this.tokens.length, last = max-1; i < max; i++) {
 			findNextTypeBinding(i, scope, packageBinding);
 			if (!this.resolvedType.isValidBinding())
 				return this.resolvedType;
@@ -162,17 +176,22 @@
 	}
 
 	void recordResolution(LookupEnvironment env, TypeBinding typeFound) {
-		if (typeFound != null && typeFound.isValidBinding())
-			for (int i = 0; i < env.resolutionListeners.length; i++) {
-				env.resolutionListeners[i].recordResolution(this, typeFound);
+		if (typeFound != null && typeFound.isValidBinding()) {
+			synchronized (env.root) {
+				for (int i = 0; i < env.root.resolutionListeners.length; i++) {
+					env.root.resolutionListeners[i].recordResolution(this, typeFound);
+				}
 			}
+		}
 	}
 
+	@Override
 	public char[][] getTypeName(){
 
 		return this.tokens;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		for (int i = 0; i < this.tokens.length; i++) {
 			if (i > 0) output.append('.');
@@ -185,6 +204,7 @@
 		return output;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -199,6 +219,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -212,6 +233,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public int getAnnotatableLevels() {
 		return this.tokens.length;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.java
index e811a1c..5c75c7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Receiver.java
@@ -17,10 +17,12 @@
 		super(name, posNom, typeReference, modifiers);
 		this.qualifyingName = qualifyingName;
 	}
+	@Override
 	public boolean isReceiver() {
 		return true;
 	}
 	
+	@Override
 	public StringBuffer print(int indent, StringBuffer output) {
 
 		printIndent(indent, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.java
index d52be2a..0e16964 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Reference.java
@@ -43,10 +43,12 @@
 }
 public abstract FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound);
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return flowInfo;
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if (flowContext.isNullcheckedFieldAccess(this)) {
 		return true; // enough seen
@@ -144,6 +146,7 @@
 	return null;
 }
 
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	if ((this.implicitConversion & TypeIds.BOXING) != 0)
 		return FlowInfo.NON_NULL;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.java
index ab6adef..615ac9a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReferenceExpression.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -54,6 +54,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool;
+import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.Opcodes;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FieldInitsFakingFlowContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext;
@@ -61,6 +62,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.IrritantSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
@@ -87,7 +89,9 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 
 public class ReferenceExpression extends FunctionalExpression implements IPolyExpression, InvocationSite {
 	// secret variable name
@@ -117,10 +121,15 @@
 	private HashMap<TypeBinding, ReferenceExpression> copiesPerTargetType;
 	public char[] text; // source representation of the expression.
 	private HashMap<ParameterizedGenericMethodBinding, InferenceContext18> inferenceContexts;
+
+	// the scanner used when creating this expression, may be a RecoveryScanner (with proper RecoveryScannerData),
+	// need to keep it so copy() can parse in the same mode (normal/recovery):
+	private Scanner scanner; 
 	
-	public ReferenceExpression() {
+	public ReferenceExpression(Scanner scanner) {
 		super();
 		this.original = this;
+		this.scanner = scanner;
 	}
 	
 	public void initialize(CompilationResult result, Expression expression, TypeReference [] optionalTypeArguments, char [] identifierOrNew, int sourceEndPosition) {
@@ -136,6 +145,7 @@
 		final Parser parser = new Parser(this.enclosingScope.problemReporter(), false);
 		final ICompilationUnit compilationUnit = this.compilationResult.getCompilationUnit();
 		final char[] source = compilationUnit != null ? compilationUnit.getContents() : this.text;
+		parser.scanner = this.scanner;
 		ReferenceExpression copy =  (ReferenceExpression) parser.parseExpression(source, compilationUnit != null ? this.sourceStart : 0, this.sourceEnd - this.sourceStart + 1, 
 										this.enclosingScope.referenceCompilationUnit(), false /* record line separators */);
 		copy.original = this;
@@ -152,6 +162,7 @@
 				return new ASTVisitor() {
 					boolean accessesnonFinalOuterLocals;
 
+					@Override
 					public boolean visit(SingleNameReference name, BlockScope skope) {
 						Binding local = skope.getBinding(name.getName(), ReferenceExpression.this);
 						if (local instanceof LocalVariableBinding) {
@@ -239,23 +250,23 @@
 		}
 		
 		// Process the lambda, taking care not to double report diagnostics. Don't expect any from resolve, Any from code generation should surface, but not those from flow analysis.
-		implicitLambda.resolveType(currentScope, true);
-		IErrorHandlingPolicy oldPolicy = currentScope.problemReporter().switchErrorHandlingPolicy(silentErrorHandlingPolicy);
+		BlockScope lambdaScope = this.receiverVariable != null ? this.receiverVariable.declaringScope : currentScope;
+		IErrorHandlingPolicy oldPolicy = lambdaScope.problemReporter().switchErrorHandlingPolicy(silentErrorHandlingPolicy);
 		try {
-			implicitLambda.analyseCode(currentScope, 
-					new FieldInitsFakingFlowContext(null, this, Binding.NO_EXCEPTIONS, null, currentScope, FlowInfo.DEAD_END), 
-					UnconditionalFlowInfo.fakeInitializedFlowInfo(currentScope.outerMostMethodScope().analysisIndex, currentScope.referenceType().maxFieldCount));
+			implicitLambda.resolveType(lambdaScope, true);
+			implicitLambda.analyseCode(lambdaScope, 
+					new FieldInitsFakingFlowContext(null, this, Binding.NO_EXCEPTIONS, null, lambdaScope, FlowInfo.DEAD_END), 
+					UnconditionalFlowInfo.fakeInitializedFlowInfo(lambdaScope.outerMostMethodScope().analysisIndex, lambdaScope.referenceType().maxFieldCount));
 		} finally {
-			currentScope.problemReporter().switchErrorHandlingPolicy(oldPolicy);
+			lambdaScope.problemReporter().switchErrorHandlingPolicy(oldPolicy);
 		}
 		SyntheticArgumentBinding[] outerLocals = this.receiverType.syntheticOuterLocalVariables();
 		for (int i = 0, length = outerLocals == null ? 0 : outerLocals.length; i < length; i++)
 			implicitLambda.addSyntheticArgument(outerLocals[i].actualOuterLocalVariable);
 		
-		implicitLambda.generateCode(currentScope, codeStream, valueRequired);
+		implicitLambda.generateCode(lambdaScope, codeStream, valueRequired);
 		if (generateSecretReceiverVariable) {
 			codeStream.removeVariable(this.receiverVariable);
-			this.receiverVariable = null;
 		}
 	}	
 	
@@ -263,10 +274,39 @@
 		// these cases are either too complicated, impossible to handle or result in significant code duplication 
 		return (this.binding.isVarargs() || 
 				(isConstructorReference() && this.receiverType.syntheticOuterLocalVariables() != null && this.shouldCaptureInstance) ||
-				this.requiresBridges()); // bridges.
+				this.requiresBridges() || // bridges.
+				!isDirectCodeGenPossible());
 		// To fix: We should opt for direct code generation wherever possible.
 	}
-	
+	private boolean isDirectCodeGenPossible() {
+		if (this.binding != null) {
+			if (isMethodReference() && this.syntheticAccessor == null) {
+				if (TypeBinding.notEquals(this.binding.declaringClass, this.lhs.resolvedType.erasure())) {
+					// reference to a method declared by an inaccessible type accessed via a
+					// subtype - normally a bridge method would be present to facilitate
+					// this access, unless the method is final/static, in which case, direct access to
+					// the method is not possible, an implicit lambda is needed
+					if (!this.binding.declaringClass.canBeSeenBy(this.enclosingScope)) {
+						return !(this.binding.isFinal() || this.binding.isStatic());
+					}
+				}
+			}
+			TypeBinding[] descriptorParams = this.descriptor.parameters;
+			TypeBinding[] origParams = this.binding.original().parameters;
+			TypeBinding[] origDescParams = this.descriptor.original().parameters;
+			int offset = this.receiverPrecedesParameters ? 1 : 0;
+			for (int i = 0; i < descriptorParams.length - offset; i++) {
+				TypeBinding descType = descriptorParams[i + offset];
+				TypeBinding origDescType = origDescParams[i + offset];
+				if (descType.isIntersectionType18() || 
+						(descType.isTypeVariable() && ((TypeVariableBinding) descType).boundsCount() > 1)) {
+					return CharOperation.equals(origDescType.signature(), origParams[i].signature());
+				}
+			}
+		}
+		return true;
+	}
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		this.actualMethodBinding = this.binding; // grab before synthetics come into play.
 		// Handle some special cases up front and transform them into implicit lambdas.
@@ -276,10 +316,11 @@
 		}
 		SourceTypeBinding sourceType = currentScope.enclosingSourceType();
 		if (this.receiverType.isArrayType()) {
+			char [] lambdaName = CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.ordinal).toCharArray());
 			if (isConstructorReference()) {
-				this.actualMethodBinding = this.binding = sourceType.addSyntheticArrayMethod((ArrayBinding) this.receiverType, SyntheticMethodBinding.ArrayConstructor);
+				this.actualMethodBinding = this.binding = sourceType.addSyntheticArrayMethod((ArrayBinding) this.receiverType, SyntheticMethodBinding.ArrayConstructor, lambdaName);
 			} else if (CharOperation.equals(this.selector, TypeConstants.CLONE)) {
-				this.actualMethodBinding = this.binding = sourceType.addSyntheticArrayMethod((ArrayBinding) this.receiverType, SyntheticMethodBinding.ArrayClone);
+				this.actualMethodBinding = this.binding = sourceType.addSyntheticArrayMethod((ArrayBinding) this.receiverType, SyntheticMethodBinding.ArrayClone, lambdaName);
 			}
 		} else if (this.syntheticAccessor != null) {
 			if (this.lhs.isSuper() || isMethodReference())
@@ -299,6 +340,13 @@
 		buffer.append('(');
 		if (this.haveReceiver) {
 			this.lhs.generateCode(currentScope, codeStream, true);
+			if (isMethodReference() && !this.lhs.isThis() && !this.lhs.isSuper()) {
+				MethodBinding mb = currentScope.getJavaLangObject().getExactMethod(TypeConstants.GETCLASS,
+						Binding.NO_PARAMETERS, currentScope.compilationUnitScope());
+				codeStream.dup();
+				codeStream.invoke(Opcodes.OPC_invokevirtual, mb, mb.declaringClass);
+				codeStream.pop();
+			}
 			if (this.lhs.isSuper() && !this.actualMethodBinding.isPrivate()) {
 				if (this.lhs instanceof QualifiedSuperReference) {
 					QualifiedSuperReference qualifiedSuperReference = (QualifiedSuperReference) this.lhs;
@@ -337,14 +385,19 @@
 					}
 				}
 				if (this.syntheticAccessor != null) {
-					this.binding = sourceType.addSyntheticFactoryMethod(this.binding, this.syntheticAccessor, enclosingInstances);
+					char [] lambdaName = CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.ordinal).toCharArray());
+					this.binding = sourceType.addSyntheticFactoryMethod(this.binding, this.syntheticAccessor, enclosingInstances, lambdaName);
 					this.syntheticAccessor = null; // add only once
 				}
 			}
 		}
 		buffer.append(')');
 		buffer.append('L');
-		buffer.append(this.resolvedType.constantPoolName());
+		if (this.resolvedType.isIntersectionType18()) {
+			buffer.append(this.descriptor.declaringClass.constantPoolName());
+		} else {
+			buffer.append(this.resolvedType.constantPoolName());
+		}
 		buffer.append(';');
 		if (this.isSerializable) {
 			sourceType.addSyntheticMethod(this);
@@ -357,6 +410,20 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 	
+	@Override
+	public void cleanUp() {
+		// no more rescanning needed beyond this point, so free the memory:
+		if (this.copiesPerTargetType != null) {
+			for (ReferenceExpression copy : this.copiesPerTargetType.values())
+				copy.scanner = null;
+		}
+		if (this.original != null && this.original != this) {
+			this.original.cleanUp();
+		}
+		this.scanner = null;
+		this.receiverVariable = null;
+	}
+
 	public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) {
 		
 		if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) != 0 || this.binding == null || !this.binding.isValidBinding()) 
@@ -412,6 +479,7 @@
 		}
 	}
 	
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		// static methods with receiver value never get here
 		if (this.haveReceiver) {
@@ -430,6 +498,33 @@
 				}
 			}
 		}
+		if (currentScope.compilerOptions().isAnyEnabled(IrritantSet.UNLIKELY_ARGUMENT_TYPE) && this.binding.isValidBinding()
+				&& this.binding != null && this.binding.parameters != null) {
+			if (this.binding.parameters.length == 1
+					&& this.descriptor.parameters.length == (this.receiverPrecedesParameters ? 2 : 1)
+					&& !this.binding.isStatic()) {
+				final TypeBinding argumentType = this.descriptor.parameters[this.receiverPrecedesParameters ? 1 : 0];
+				final TypeBinding actualReceiverType = this.receiverPrecedesParameters ? this.descriptor.parameters[0] : this.binding.declaringClass;
+				UnlikelyArgumentCheck argumentCheck = UnlikelyArgumentCheck
+						.determineCheckForNonStaticSingleArgumentMethod(argumentType, currentScope, this.selector,
+								actualReceiverType, this.binding.parameters);
+				if (argumentCheck != null && argumentCheck.isDangerous(currentScope)) {
+					currentScope.problemReporter().unlikelyArgumentType(this, this.binding, argumentType,
+							argumentCheck.typeToReport, argumentCheck.dangerousMethod);
+				}
+			} else if (this.binding.parameters.length == 2 && this.descriptor.parameters.length == 2 && this.binding.isStatic()) {
+				final TypeBinding argumentType1 = this.descriptor.parameters[0];
+				final TypeBinding argumentType2 = this.descriptor.parameters[1];
+				UnlikelyArgumentCheck argumentCheck = UnlikelyArgumentCheck
+						.determineCheckForStaticTwoArgumentMethod(argumentType2, currentScope, this.selector,
+								argumentType1, this.binding.parameters, this.receiverType);
+				if (argumentCheck != null && argumentCheck.isDangerous(currentScope)) {
+					currentScope.problemReporter().unlikelyArgumentType(this, this.binding, argumentType2,
+							argumentCheck.typeToReport, argumentCheck.dangerousMethod);
+				}			
+			}
+		}
+		
 		manageSyntheticAccessIfNecessary(currentScope, flowInfo);
 		return flowInfo;
 	}
@@ -445,6 +540,7 @@
 			this.potentialMethods = methods;
 	}
 	
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		
 		final CompilerOptions compilerOptions = scope.compilerOptions();
@@ -453,7 +549,7 @@
     		this.constant = Constant.NotAConstant;
     		this.enclosingScope = scope;
     		if (this.original == this)
-    			recordFunctionalType(scope);
+    			this.ordinal = recordFunctionalType(scope);
 
     		this.lhs.bits |= ASTNode.IgnoreRawTypeCheck;
     		lhsType = this.lhs.resolveType(scope);
@@ -755,17 +851,21 @@
 		CompilerOptions compilerOptions = scope.compilerOptions();
 		if (compilerOptions.isAnnotationBasedNullAnalysisEnabled) {
         	if (this.expectedType == null || !NullAnnotationMatching.hasContradictions(this.expectedType)) { // otherwise assume it has been reported and we can do nothing here
-        		if ((this.binding.tagBits & TagBits.IsNullnessKnown) == 0) {
-        			// not interested in reporting problems against this.binding:
-        			new ImplicitNullAnnotationVerifier(scope.environment(), compilerOptions.inheritNullAnnotations)
-        					.checkImplicitNullAnnotations(this.binding, null/*srcMethod*/, false, scope);
-        		}
+        		ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(this.binding, scope);
 	        	// TODO: simplify by using this.freeParameters?
 	        	int len;
 	        	int expectedlen = this.binding.parameters.length;
 	        	int providedLen = this.descriptor.parameters.length;
-	        	if (this.receiverPrecedesParameters)
+	        	if (this.receiverPrecedesParameters) {
 	        		providedLen--; // one parameter is 'consumed' as the receiver
+
+	        		TypeBinding descriptorParameter = this.descriptor.parameters[0];
+	    			if((descriptorParameter.tagBits & TagBits.AnnotationNullable) != 0) { // Note: normal dereferencing of 'unchecked' values is not reported, either
+		    			final TypeBinding receiver = scope.environment().createAnnotatedType(this.binding.declaringClass,
+								new AnnotationBinding[] { scope.environment().getNonNullAnnotation() });
+    					scope.problemReporter().referenceExpressionArgumentNullityMismatch(this, receiver, descriptorParameter, this.descriptor, -1, NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH);
+	    			}	        		
+	        	}
 	        	boolean isVarArgs = false;
 	        	if (this.binding.isVarargs()) {
 	        		isVarArgs = (providedLen == expectedlen)
@@ -778,20 +878,30 @@
 	    		for (int i = 0; i < len; i++) {
 	    			TypeBinding descriptorParameter = this.descriptor.parameters[i + (this.receiverPrecedesParameters ? 1 : 0)];
 	    			TypeBinding bindingParameter = InferenceContext18.getParameter(this.binding.parameters, i, isVarArgs);
-	    			NullAnnotationMatching annotationStatus = NullAnnotationMatching.analyse(bindingParameter, descriptorParameter, FlowInfo.UNKNOWN);
+					TypeBinding bindingParameterToCheck;
+					if (bindingParameter.isPrimitiveType() && !descriptorParameter.isPrimitiveType()) {
+						// replace primitive types by boxed equivalent for checking, e.g. int -> @NonNull Integer
+						bindingParameterToCheck = scope.environment().createAnnotatedType(scope.boxing(bindingParameter),
+								new AnnotationBinding[] { scope.environment().getNonNullAnnotation() });
+					} else {
+						bindingParameterToCheck = bindingParameter;
+					}
+	    			NullAnnotationMatching annotationStatus = NullAnnotationMatching.analyse(bindingParameterToCheck, descriptorParameter, FlowInfo.UNKNOWN);
 	    			if (annotationStatus.isAnyMismatch()) {
 	    				// immediate reporting:
 	    				scope.problemReporter().referenceExpressionArgumentNullityMismatch(this, bindingParameter, descriptorParameter, this.descriptor, i, annotationStatus);
 	    			}
 	    		}
 	    		TypeBinding returnType = this.binding.returnType;
-	    		if (this.binding.isConstructor()) {
-	    			returnType = scope.environment().createAnnotatedType(this.receiverType, new AnnotationBinding[]{ scope.environment().getNonNullAnnotation() });
+	    		if(!returnType.isPrimitiveType()) {
+		    		if (this.binding.isConstructor()) {
+		    			returnType = scope.environment().createAnnotatedType(this.receiverType, new AnnotationBinding[]{ scope.environment().getNonNullAnnotation() });
+		    		}
+		    		NullAnnotationMatching annotationStatus = NullAnnotationMatching.analyse(this.descriptor.returnType, returnType, FlowInfo.UNKNOWN);
+		        	if (annotationStatus.isAnyMismatch()) {
+	        			scope.problemReporter().illegalReturnRedefinition(this, this.descriptor, annotationStatus.isUnchecked(), returnType);
+		        	}
 	    		}
-	    		NullAnnotationMatching annotationStatus = NullAnnotationMatching.analyse(this.descriptor.returnType, returnType, FlowInfo.UNKNOWN);
-	        	if (annotationStatus.isAnyMismatch()) {
-        			scope.problemReporter().illegalReturnRedefinition(this, this.descriptor, annotationStatus.isUnchecked(), returnType);
-	        	}
         	}
         }
 	}
@@ -854,6 +964,7 @@
 		return this.inferenceContexts.get(method);
 	}
 	
+	@Override
 	public ReferenceExpression resolveExpressionExpecting(TypeBinding targetType, Scope scope, InferenceContext18 inferenceContext) {
 		if (this.exactMethodBinding != null) { // We may see inference variables in target type.
 			MethodBinding functionType = targetType.getSingleAbstractMethod(scope, true);
@@ -876,6 +987,7 @@
 		return CharOperation.equals(this.selector,  ConstantPool.Init);
 	}
 	
+	@Override
 	public boolean isExactMethodReference() {
 		return this.exactMethodBinding != null;
 	}
@@ -888,6 +1000,7 @@
 		return !CharOperation.equals(this.selector,  ConstantPool.Init);
 	}
 	
+	@Override
 	public boolean isPertinentToApplicability(TypeBinding targetType, MethodBinding method) {
 		if (!this.isExactMethodReference()) {
 			return false;
@@ -895,10 +1008,12 @@
 		return super.isPertinentToApplicability(targetType, method);
 	}
 	
+	@Override
 	public TypeBinding[] genericTypeArguments() {
 		return this.resolvedTypeArguments;
 	}
 
+	@Override
 	public InferenceContext18 freshInferenceContext(Scope scope) {
 		if (this.expressionContext != ExpressionContext.VANILLA_CONTEXT) {
 			Expression[] arguments = createPseudoExpressions(this.freeParameters);
@@ -907,26 +1022,32 @@
 		return null; // shouldn't happen, actually
 	}
 
+	@Override
 	public boolean isSuperAccess() {
 		return this.lhs.isSuper();
 	}
 
+	@Override
 	public boolean isTypeAccess() {
 		return !this.haveReceiver;
 	}
 
+	@Override
 	public void setActualReceiverType(ReferenceBinding receiverType) {
 		return;
 	}
 
+	@Override
 	public void setDepth(int depth) {
 		this.depth = depth;
 	}
 
+	@Override
 	public void setFieldIndex(int depth) {
 		return;
 	}
 
+	@Override
 	public StringBuffer printExpression(int tab, StringBuffer output) {
 		
 		this.lhs.print(0, output);
@@ -949,6 +1070,7 @@
 		return output;
 	}
 		
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 
 		if (visitor.visit(this, blockScope)) {
@@ -1008,12 +1130,15 @@
 				{
 					this.compoundName = CharOperation.NO_CHAR_CHAR;
 				}
+				@Override
 				public boolean isCompatibleWith(TypeBinding otherType, Scope captureScope) {
 					return true;
 				}
+				@Override
 				public TypeBinding findSuperTypeOriginatingFrom(TypeBinding otherType) {
 					return otherType;
 				}
+				@Override
 				public String toString() {
 					return "(wildcard)"; //$NON-NLS-1$
 				}
@@ -1056,6 +1181,7 @@
 
         	System.arraycopy(descriptorParameters, 1, descriptorParameters = new TypeBinding[parametersLength - 1], 0, parametersLength - 1);
         	this.freeParameters = descriptorParameters;
+        	this.potentialMethods = Binding.NO_METHODS;
         	compileTimeDeclaration = getCompileTimeDeclaration(scope, false, descriptorParameters);
         
         	if (compileTimeDeclaration != null && compileTimeDeclaration.isValidBinding()) // we have the mSMB.
@@ -1066,7 +1192,7 @@
         		*/
         	}
         	for (int i = 0, length = this.potentialMethods.length; i < length; i++) {
-        		if (!this.potentialMethods[i].isStatic()) {
+			if (!this.potentialMethods[i].isStatic() && !this.potentialMethods[i].isConstructor()) {
         			return true;
         		}
         	}
@@ -1089,11 +1215,13 @@
 			return scope.getMethod(this.receiverType, this.selector, parameters, this);
 	}
 
+	@Override
 	public boolean isCompatibleWith(TypeBinding targetType, Scope scope) {
 		ReferenceExpression copy = cachedResolvedCopy(targetType);
 		return copy != null && copy.resolvedType != null && copy.resolvedType.isValidBinding() && copy.binding != null && copy.binding.isValidBinding();
 	}
 	
+	@Override
 	public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope) {
 		
 		if (super.sIsMoreSpecific(s, t, scope))
@@ -1133,6 +1261,7 @@
 		return r1.isBaseType() != r2.isBaseType() && r1.isBaseType() == this.exactMethodBinding.returnType.isBaseType();
 	}
 
+	@Override
 	public org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding getMethodBinding() {
 		if (this.actualMethodBinding == null)  // array new/clone, no real binding.
 			this.actualMethodBinding = this.binding;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.java
new file mode 100644
index 0000000..1e8a719
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/RequiresStatement.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+
+public class RequiresStatement extends ModuleStatement {
+
+	public ModuleReference module;
+	public ModuleBinding resolvedBinding;
+	public int modifiers = ClassFileConstants.AccDefault;
+	public int modifiersSourceStart;
+
+	public RequiresStatement(ModuleReference module) {
+		this.module = module;
+	}
+	public boolean isTransitive() {
+		return (this.modifiers & ClassFileConstants.ACC_TRANSITIVE) != 0;
+	}
+	public boolean isStatic() {
+		return (this.modifiers & ClassFileConstants.ACC_STATIC_PHASE) != 0;
+	}
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		output.append("requires "); //$NON-NLS-1$
+		if (isTransitive())
+			output.append("transitive "); //$NON-NLS-1$
+		if (isStatic())
+			output.append("static "); //$NON-NLS-1$
+		this.module.print(indent, output);
+		output.append(";"); //$NON-NLS-1$
+	return output;
+	}
+	public ModuleBinding resolve(Scope scope) {
+		if (this.resolvedBinding != null)
+			return this.resolvedBinding;
+		this.resolvedBinding = this.module.resolve(scope);
+		if (scope != null) {
+			if (this.resolvedBinding == null) {
+				scope.problemReporter().invalidModule(this.module);
+			} else if (this.resolvedBinding.hasUnstableAutoName()) {
+				scope.problemReporter().autoModuleWithUnstableName(this.module);
+			}
+		}
+		return this.resolvedBinding;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java
index efddfea..cc3f3e9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ReturnStatement.java
@@ -66,6 +66,7 @@
 	this.implicitReturn = implicitReturn;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {	// here requires to generate a sequence of finally blocks invocations depending corresponding
 	// to each of the traversed try statements, so that execution will terminate properly.
 
@@ -209,6 +210,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -288,6 +290,7 @@
 	this.saveValueVariable = targetTryStatement.secretReturnValue;
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output){
 	printIndent(tab, output).append("return "); //$NON-NLS-1$
 	if (this.expression != null )
@@ -295,6 +298,7 @@
 	return output.append(';');
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	MethodScope methodScope = scope.methodScope();
 	MethodBinding methodBinding;
@@ -383,6 +387,7 @@
 	}
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	if (visitor.visit(this, scope)) {
 		if (this.expression != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.java
index 259d21e..60b031a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleMemberAnnotation.java
@@ -33,6 +33,7 @@
 		// for subclasses.
 	}
 
+	@Override
 	public ElementValuePair[] computeElementValuePairs() {
 		return new ElementValuePair[] {memberValuePairs()[0].compilerElementPair};
 	}
@@ -40,6 +41,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation#memberValuePairs()
 	 */
+	@Override
 	public MemberValuePair[] memberValuePairs() {
 		if (this.singlePairs == null) {
 			this.singlePairs =
@@ -50,6 +52,7 @@
 		return this.singlePairs;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		super.printExpression(indent, output);
 		output.append('(');
@@ -57,6 +60,7 @@
 		return output.append(')');
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
@@ -69,6 +73,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.type != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java
index 95f1cc3..7460705 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java
@@ -1,10 +1,11 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann <stephan@cs.tu-berlin.de> - Contributions for
@@ -19,6 +20,7 @@
  *     							bug 382721 - [1.8][compiler] Effectively final variables needs special treatment
  *								bug 378674 - "The method can be declared as static" is wrong
  *								bug 404657 - [1.8][compiler] Analysis for effectively final variables fails to consider loops
+ *								bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
@@ -67,6 +69,7 @@
 	this.sourceEnd = (int) pos;
 }
 
+@Override
 public FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) {
 	boolean isReachable = (flowInfo.tagBits & FlowInfo.UNREACHABLE) == 0;
 	// compound assignment extra work
@@ -171,10 +174,12 @@
 	return flowInfo;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return analyseCode(currentScope, flowContext, flowInfo, true);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) {
 	switch (this.bits & ASTNode.RestrictiveFlagMASK) {
 		case Binding.FIELD : // reading a field
@@ -254,6 +259,7 @@
 
 }
 
+@Override
 public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 	if (!super.checkNPE(scope, flowContext, flowInfo, ttlForFieldCheck)) {
 		CompilerOptions compilerOptions = scope.compilerOptions();
@@ -269,15 +275,17 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#computeConversion(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding)
  */
+@Override
 public void computeConversion(Scope scope, TypeBinding runtimeTimeType, TypeBinding compileTimeType) {
 	if (runtimeTimeType == null || compileTimeType == null)
 		return;
 	if (this.binding != null && this.binding.isValidBinding()) {
 		TypeBinding originalType = null;
-		if ((this.bits & Binding.FIELD) != 0 && (this.binding instanceof FieldBinding)) { // AspectJ extension - - new guard (ajc_aroundClosure does this) ??
-		// set the generic cast after the fact, once the type expectation is fully known (no need for strict cast)
-		FieldBinding field = (FieldBinding) this.binding;
-		FieldBinding originalBinding = field.original();
+			if (this.binding instanceof FieldBinding) { // AspectJ Extension - new guard (ajc_aroundClosure does this) ??
+		if ((this.bits & Binding.FIELD) != 0) {
+			// set the generic cast after the fact, once the type expectation is fully known (no need for strict cast)
+			FieldBinding field = (FieldBinding) this.binding;
+			FieldBinding originalBinding = field.original();
 			originalType = originalBinding.type;
 		} else if ((this.bits & Binding.LOCAL) != 0) {
 			LocalVariableBinding local = (LocalVariableBinding) this.binding;
@@ -285,25 +293,27 @@
 		}
 		// extra cast needed if field/local type is type variable
 		if (originalType != null && originalType.leafComponentType().isTypeVariable()) {
-	    	TypeBinding targetType = (!compileTimeType.isBaseType() && runtimeTimeType.isBaseType())
-	    		? compileTimeType  // unboxing: checkcast before conversion
-	    		: runtimeTimeType;
-	        this.genericCast = originalType.genericCast(scope.boxing(targetType));
-	        if (this.genericCast instanceof ReferenceBinding) {
+			TypeBinding targetType = (!compileTimeType.isBaseType() && runtimeTimeType.isBaseType())
+					? compileTimeType  // unboxing: checkcast before conversion
+							: runtimeTimeType;
+			this.genericCast = originalType.genericCast(scope.boxing(targetType));
+			if (this.genericCast instanceof ReferenceBinding) {
 				ReferenceBinding referenceCast = (ReferenceBinding) this.genericCast;
 				if (!referenceCast.canBeSeenBy(scope)) {
-		        	scope.problemReporter().invalidType(this,
-		        			new ProblemReferenceBinding(
-								CharOperation.splitOn('.', referenceCast.shortReadableName()),
-								referenceCast,
-								ProblemReasons.NotVisible));
+					scope.problemReporter().invalidType(this,
+							new ProblemReferenceBinding(
+									CharOperation.splitOn('.', referenceCast.shortReadableName()),
+									referenceCast,
+									ProblemReasons.NotVisible));
 				}
-	        }
+			}
+		    }// AspectJ Extension - close the new if()		        
 		}
 	}
 	super.computeConversion(scope, runtimeTimeType, compileTimeType);
 }
 
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	// optimizing assignment like: i = i + 1 or i = 1 + i
 	if (assignment.expression.isCompactableOperation()) {
@@ -402,6 +412,7 @@
 	}
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -523,6 +534,7 @@
  * The APIs with an extra argument is used whenever there are two references to the same variable which
  * are optimized in one access: e.g "a = a + 1" optimized into "a++".
  */
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=185682
 	switch (this.bits & ASTNode.RestrictiveFlagMASK) {
@@ -701,6 +713,7 @@
 	}
 }
 
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	switch (this.bits & ASTNode.RestrictiveFlagMASK) {
 		case Binding.FIELD : // assigning to a field
@@ -822,10 +835,12 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return null;
 }
 
+@Override
 public boolean isEquivalent(Reference reference) {
 	char[] otherToken = null;
 	if (reference instanceof SingleNameReference) {
@@ -843,6 +858,7 @@
  * Returns the local variable referenced by this node. Can be a direct reference (SingleNameReference)
  * or thru a cast expression etc...
  */
+@Override
 public LocalVariableBinding localVariableBinding() {
 	switch (this.bits & ASTNode.RestrictiveFlagMASK) {
 		case Binding.FIELD : // reading a field
@@ -853,6 +869,7 @@
 	return null;
 }
 
+@Override
 public VariableBinding nullAnnotatedVariableBinding(boolean supportTypeAnnotations) {
 	switch (this.bits & ASTNode.RestrictiveFlagMASK) {
 		case Binding.FIELD : // reading a field
@@ -864,6 +881,7 @@
 	return null;
 }
 
+@Override
 public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 	if ((this.implicitConversion & TypeIds.BOXING) != 0)
 		return FlowInfo.NON_NULL;
@@ -886,6 +904,10 @@
 				// local was tagged as uninitialized
 				return;
 			}
+			if ((localVariableBinding.tagBits & TagBits.IsEffectivelyFinal) == 0) {
+				// local was tagged as not effectively final
+				return;
+			}
 			switch(localVariableBinding.useFlag) {
 				case LocalVariableBinding.FAKE_USED :
 				case LocalVariableBinding.USED :
@@ -946,6 +968,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#postConversionType(Scope)
  */
+@Override
 public TypeBinding postConversionType(Scope scope) {
 	TypeBinding convertedType = this.resolvedType;
 	if (this.genericCast != null)
@@ -984,6 +1007,7 @@
 	return convertedType;
 }
 
+@Override
 public StringBuffer printExpression(int indent, StringBuffer output){
 	return output.append(this.token);
 }
@@ -1000,6 +1024,7 @@
 	return null;
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// for code gen, harm the restrictiveFlag
 
@@ -1019,6 +1044,7 @@
 					if (this.binding instanceof LocalVariableBinding) {
 						this.bits &= ~ASTNode.RestrictiveFlagMASK;  // clear bits
 						this.bits |= Binding.LOCAL;
+						((LocalVariableBinding) this.binding).markReferenced();
 						if (!variable.isFinal() && (this.bits & ASTNode.IsCapturedOuterLocal) != 0) {
 							if (scope.compilerOptions().sourceLevel < ClassFileConstants.JDK1_8) // for 8, defer till effective finality could be ascertained.
 								scope.problemReporter().cannotReferToNonFinalOuterLocal((LocalVariableBinding)variable, this);
@@ -1063,20 +1089,24 @@
 	return this.resolvedType = reportError(scope);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, ClassScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
 }
 
+@Override
 public String unboundReferenceErrorName(){
 	return new String(this.token);
 }
 
+@Override
 public char[][] getName() {
 	return new char[][] {this.token};
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
index 26c748a..0a60da2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SingleTypeReference.java
@@ -30,6 +30,7 @@
 
 	}
 
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		int totalDimensions = this.dimensions() + additionalDimensions;
 		Annotation [][] allAnnotations = getMergedAnnotationsOnDimensions(additionalDimensions, additionalAnnotations);
@@ -41,9 +42,11 @@
 		return arrayTypeReference;
 	}
 
+	@Override
 	public char[] getLastToken() {
 		return this.token;
 	}
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 		if (this.resolvedType != null)
 			return this.resolvedType;
@@ -69,6 +72,7 @@
 		return this.resolvedType;
 	}
 
+	@Override
 	public char [][] getTypeName() {
 		return new char[][] { this.token };
 	}
@@ -87,6 +91,7 @@
 			   this.token == VOID;	    
 	}
 	
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 		if (this.annotations != null && this.annotations[0] != null) {
 			printAnnotations(this.annotations[0], output);
@@ -124,6 +129,7 @@
 		return this.resolvedType = memberType;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -135,6 +141,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.java
index 2846a1d..ef921f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Statement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -125,8 +125,8 @@
 			if (methodBinding.isVarargs()) {
 				varArgPos = numParamsToCheck-1;
 				// this if-block essentially copied from generateArguments(..):
+				varArgsType = methodBinding.parameters[varArgPos];
 				if (numParamsToCheck == arguments.length) {
-					varArgsType = methodBinding.parameters[varArgPos];
 					TypeBinding lastType = arguments[varArgPos].resolvedType;
 					if (lastType == TypeBinding.NULL
 							|| (varArgsType.dimensions() == lastType.dimensions()
@@ -240,15 +240,24 @@
 	return new ASTVisitor() {
 		
 		boolean breaksOut;
+		@Override
 		public boolean visit(TypeDeclaration type, BlockScope skope) { return label != null; }
+		@Override
 		public boolean visit(TypeDeclaration type, ClassScope skope) { return label != null; }
+		@Override
 		public boolean visit(LambdaExpression lambda, BlockScope skope) { return label != null;}
+		@Override
 		public boolean visit(WhileStatement whileStatement, BlockScope skope) { return label != null; }
+		@Override
 		public boolean visit(DoStatement doStatement, BlockScope skope) { return label != null; }
+		@Override
 		public boolean visit(ForeachStatement foreachStatement, BlockScope skope) { return label != null; }
+		@Override
 		public boolean visit(ForStatement forStatement, BlockScope skope) { return label != null; }
+		@Override
 		public boolean visit(SwitchStatement switchStatement, BlockScope skope) { return label != null; }
 		
+		@Override
 		public boolean visit(BreakStatement breakStatement, BlockScope skope) {
 			if (label == null || CharOperation.equals(label,  breakStatement.label))
 				this.breaksOut = true;
@@ -269,6 +278,7 @@
 public boolean continuesAtOuterLabel() {
 	return new ASTVisitor() {
 		boolean continuesToLabel;
+		@Override
 		public boolean visit(ContinueStatement continueStatement, BlockScope skope) {
 			if (continueStatement.label != null)
 				this.continuesToLabel = true;
@@ -399,6 +409,7 @@
 	return true;
 }
 
+@Override
 public StringBuffer print(int indent, StringBuffer output) {
 	return printStatement(indent, output);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.java
index 7fca427..6ea10c3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteral.java
@@ -34,6 +34,7 @@
 		super(s,e);
 	}
 
+	@Override
 	public void computeConstant() {
 
 		this.constant = StringConstant.fromValue(String.valueOf(this.source));
@@ -60,6 +61,7 @@
 	/**
 	 * Code generation for string literal
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 
 		int pc = codeStream.position;
@@ -68,11 +70,13 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public TypeBinding literalType(BlockScope scope) {
 
 		return scope.getJavaLangString();
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 
 		// handle some special char.....
@@ -84,11 +88,13 @@
 		return output;
 	}
 
+	@Override
 	public char[] source() {
 
 		return this.source;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		visitor.visit(this, scope);
 		visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.java
index 102423f..a496e45 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/StringLiteralConcatenation.java
@@ -35,6 +35,7 @@
 	/**
 	 *  Add the lit source to mine, just as if it was mine
 	 */
+	@Override
 	public StringLiteralConcatenation extendsWith(StringLiteral lit) {
 		this.sourceEnd = lit.sourceEnd;
 		final int literalsLength = this.literals.length;
@@ -55,6 +56,7 @@
 		return this;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		output.append("StringLiteralConcatenation{"); //$NON-NLS-1$
 		for (int i = 0, max = this.counter; i < max; i++) {
@@ -64,10 +66,12 @@
 		return output.append('}');
 	}
 
+	@Override
 	public char[] source() {
 		return this.source;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			for (int i = 0, max = this.counter; i < max; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.java
index e983442..3c77330 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SuperReference.java
@@ -30,11 +30,13 @@
 		return new ExplicitConstructorCall(ExplicitConstructorCall.ImplicitSuper);
 	}
 
+	@Override
 	public boolean isImplicitThis() {
 
 		return false;
 	}
 
+	@Override
 	public boolean isSuper() {
 
 		return true;
@@ -45,17 +47,20 @@
 		return true;
 	}
 
+	@Override
 	public boolean isThis() {
 
 		return false ;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		return output.append("super"); //$NON-NLS-1$
 
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.constant = Constant.NotAConstant;
@@ -69,6 +74,7 @@
 		return this.resolvedType = enclosingReceiverType.superclass();
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 		visitor.visit(this, blockScope);
 		visitor.endVisit(this, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java
index 6dee3e8..d08334f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -74,6 +75,7 @@
 	int duplicateCaseStatementsCounter = 0;
 	private LocalVariableBinding dispatchStringCopy = null;
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 		try {
 			flowInfo = this.expression.analyseCode(currentScope, flowContext, flowInfo);
@@ -83,7 +85,7 @@
 				this.expression.checkNPE(currentScope, flowContext, flowInfo, 1);
 			}
 			SwitchFlowContext switchContext =
-				new SwitchFlowContext(flowContext, this, (this.breakLabel = new BranchLabel()), true);
+				new SwitchFlowContext(flowContext, this, (this.breakLabel = new BranchLabel()), true, true);
 
 			// analyse the block by considering specially the case/default statements (need to bind them
 			// to the entry point)
@@ -186,6 +188,7 @@
 					this.string = string;
 					this.label = label;
 				}
+				@Override
 				public int compareTo(Object o) {
 					StringSwitchCase that = (StringSwitchCase) o;
 					if (this.hashCode == that.hashCode) {
@@ -196,6 +199,7 @@
 					}
 					return -1;
 				}
+				@Override
 				public String toString() {
 					return "StringSwitchCase :\n" + //$NON-NLS-1$
 					       "case " + this.hashCode + ":(" + this.string + ")\n"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$	       
@@ -327,6 +331,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 		if (this.expression.resolvedType.id == TypeIds.T_JavaLangString) {
 			generateCodeForStringSwitch(currentScope, codeStream);
@@ -450,6 +455,7 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 
 		printIndent(indent, output).append("switch ("); //$NON-NLS-1$
@@ -468,6 +474,7 @@
 		return printIndent(indent, output).append('}');
 	}
 
+	@Override
 	public void resolve(BlockScope upperScope) {
 		try {
 			boolean isEnumSwitch = false;
@@ -621,6 +628,7 @@
 		}
 	}
 
+	@Override
 	public void traverse(
 			ASTVisitor visitor,
 			BlockScope blockScope) {
@@ -639,6 +647,7 @@
 	/**
 	 * Dispatch the call on its last statement.
 	 */
+	@Override
 	public void branchChainTo(BranchLabel label) {
 
 		// in order to improve debug attributes for stepping (11431)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.java
index c526dc9..3dea58c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/SynchronizedStatement.java
@@ -42,6 +42,7 @@
 	this.sourceStart = s;
 }
 
+@Override
 public FlowInfo analyseCode(
 	BlockScope currentScope,
 	FlowContext flowContext,
@@ -72,6 +73,7 @@
 	return flowInfo;
 }
 
+@Override
 public boolean isSubRoutineEscaping() {
 	return false;
 }
@@ -82,6 +84,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & IsReachable) == 0) {
 		return;
@@ -160,6 +163,7 @@
 /**
  * @see SubRoutineStatement#generateSubRoutineInvocation(BlockScope, CodeStream, Object, int, LocalVariableBinding)
  */
+@Override
 public boolean generateSubRoutineInvocation(BlockScope currentScope, CodeStream codeStream, Object targetLocation, int stateIndex, LocalVariableBinding secretLocal) {
 	codeStream.load(this.synchroVariable);
 	codeStream.monitorexit();
@@ -167,6 +171,7 @@
 	return false;
 }
 
+@Override
 public void resolve(BlockScope upperScope) {
 	// special scope for secret locals optimization.
 	this.scope = new BlockScope(upperScope);
@@ -199,6 +204,7 @@
 	this.block.resolveUsing(this.scope);
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	printIndent(indent, output);
 	output.append("synchronized ("); //$NON-NLS-1$
@@ -207,6 +213,7 @@
 	return this.block.printStatement(indent + 1, output);
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
 		this.expression.traverse(visitor, this.scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.java
index f123ef7..eb0654a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThisReference.java
@@ -37,9 +37,7 @@
 		this.sourceEnd = sourceEnd;
 	}
 
-	/*
-	 * @see Reference#analyseAssignment(...)
-	 */
+	@Override
 	public FlowInfo analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) {
 
 		return flowInfo; // this cannot be assigned
@@ -70,18 +68,18 @@
 		return true;
 	}
 
+	@Override
 	public boolean checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) {
 		return true; // never problematic
 	}
 
-	/*
-	 * @see Reference#generateAssignment(...)
-	 */
+	@Override
 	public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 
 		 // this cannot be assigned
 	}
 
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 
 		int pc = codeStream.position;
@@ -90,42 +88,43 @@
 		if ((this.bits & IsImplicitThis) == 0) codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
-	/*
-	 * @see Reference#generateCompoundAssignment(...)
-	 */
+	@Override
 	public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion,  boolean valueRequired) {
 
 		 // this cannot be assigned
 	}
 
-	/*
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Reference#generatePostIncrement()
-	 */
+	@Override
 	public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 
 		 // this cannot be assigned
 	}
 
+	@Override
 	public boolean isImplicitThis() {
 
 		return (this.bits & IsImplicitThis) != 0;
 	}
 
+	@Override
 	public boolean isThis() {
 
 		return true ;
 	}
 
+	@Override
 	public int nullStatus(FlowInfo flowInfo, FlowContext flowContext) {
 		return FlowInfo.NON_NULL;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		if (isImplicitThis()) return output;
 		return output.append("this"); //$NON-NLS-1$
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 
 		this.constant = Constant.NotAConstant;
@@ -144,11 +143,13 @@
 		return this.resolvedType;
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 
 		visitor.visit(this, blockScope);
 		visitor.endVisit(this, blockScope);
 	}
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope blockScope) {
 
 		visitor.visit(this, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.java
index d9ca2fe..50ada10 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/ThrowStatement.java
@@ -35,6 +35,7 @@
 	this.sourceEnd = sourceEnd;
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	this.exception.analyseCode(currentScope, flowContext, flowInfo);
 	this.exception.checkNPE(currentScope, flowContext, flowInfo);
@@ -51,6 +52,7 @@
  * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0)
 		return;
@@ -60,12 +62,14 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	printIndent(indent, output).append("throw "); //$NON-NLS-1$
 	this.exception.printExpression(0, output);
 	return output.append(';');
 }
 
+@Override
 public void resolve(BlockScope scope) {
 	this.exceptionType = this.exception.resolveType(scope);
 	if (this.exceptionType != null && this.exceptionType.isValidBinding()) {
@@ -81,6 +85,7 @@
 	}
 }
 
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope))
 		this.exception.traverse(visitor, blockScope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.java
index 329029a..183b0eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TrueLiteral.java
@@ -24,6 +24,7 @@
 public TrueLiteral(int s , int e) {
 	super(s,e);
 }
+@Override
 public void computeConstant() {
 	this.constant = BooleanConstant.fromValue(true);
 }
@@ -34,6 +35,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (valueRequired) {
@@ -41,6 +43,7 @@
 	}
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
+@Override
 public void generateOptimizedBoolean(BlockScope currentScope, CodeStream codeStream, BranchLabel trueLabel, BranchLabel falseLabel, boolean valueRequired) {
 
 	// trueLabel being not nil means that we will not fall through into the TRUE case
@@ -57,15 +60,18 @@
 	}
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
+@Override
 public TypeBinding literalType(BlockScope scope) {
 	return TypeBinding.BOOLEAN;
 }
 /**
  *
  */
+@Override
 public char[] source() {
 	return source;
 }
+@Override
 public void traverse(ASTVisitor visitor, BlockScope scope) {
 	visitor.visit(this, scope);
 	visitor.endVisit(this, scope);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
index 51e2dd0..815e857 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TryStatement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -47,9 +47,7 @@
 	static final char[] SECRET_CAUGHT_THROWABLE_VARIABLE_NAME = " caughtThrowable".toCharArray(); //$NON-NLS-1$;
 	static final char[] SECRET_RETURN_VALUE_NAME = " returnValue".toCharArray(); //$NON-NLS-1$
 
-	private static LocalDeclaration [] NO_RESOURCES = new LocalDeclaration[0];
-	public LocalDeclaration[] resources = NO_RESOURCES;
-
+	public Statement[] resources = new Statement[0];
 	public Block tryBlock;
 	public Block[] catchBlocks;
 
@@ -92,6 +90,7 @@
 	private ExceptionLabel[] resourceExceptionLabels;
 	private int[] caughtExceptionsCatchBlocks;
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 	// Consider the try block and catch block so as to compute the intersection of initializations and
@@ -146,17 +145,29 @@
 
 		FlowInfo tryInfo = flowInfo.copy();
 		for (int i = 0; i < resourcesLength; i++) {
-			final LocalDeclaration resource = this.resources[i];
+			final Statement resource = this.resources[i];			
 			tryInfo = resource.analyseCode(currentScope, handlingContext, tryInfo);
 			this.postResourcesInitStateIndexes[i] = currentScope.methodScope().recordInitializationStates(tryInfo);
-			LocalVariableBinding resourceBinding = resource.binding;
-			resourceBinding.useFlag = LocalVariableBinding.USED; // Is implicitly used anyways.
-			if (resourceBinding.closeTracker != null) {
-				// this was false alarm, we don't need to track the resource
-				resourceBinding.closeTracker.withdraw();
-				resourceBinding.closeTracker = null;
+			TypeBinding resolvedType = null;
+			LocalVariableBinding localVariableBinding = null;
+			if (resource instanceof LocalDeclaration) {
+				localVariableBinding = ((LocalDeclaration) resource).binding;
+				resolvedType = localVariableBinding.type;
+			} else { //expression
+				if (resource instanceof NameReference && ((NameReference) resource).binding instanceof LocalVariableBinding) {
+					localVariableBinding = (LocalVariableBinding) ((NameReference) resource).binding;
+				}
+				resolvedType = ((Expression) resource).resolvedType;
 			}
-			MethodBinding closeMethod = findCloseMethod(resource, resourceBinding);
+			if (localVariableBinding != null) {
+				localVariableBinding.useFlag = LocalVariableBinding.USED; // Is implicitly used anyways.
+				if (localVariableBinding.closeTracker != null) {
+					// this was false alarm, we don't need to track the resource
+					localVariableBinding.closeTracker.withdraw();
+					localVariableBinding.closeTracker = null;
+				}
+			}
+			MethodBinding closeMethod = findCloseMethod(resource, resolvedType);
 			if (closeMethod != null && closeMethod.isValidBinding() && closeMethod.returnType.id == TypeIds.T_void) {
 				ReferenceBinding[] thrownExceptions = closeMethod.thrownExceptions;
 				for (int j = 0, length = thrownExceptions.length; j < length; j++) {
@@ -175,7 +186,8 @@
 			// to avoid polluting the state indices. However, do this after the postTryInitStateIndex is calculated since
 			// it is used to add or remove assigned resources during code gen
 			for (int i = 0; i < resourcesLength; i++) {
-				tryInfo.resetAssignmentInfo(this.resources[i].binding);
+				if (this.resources[i] instanceof LocalDeclaration)
+				tryInfo.resetAssignmentInfo(((LocalDeclaration) this.resources[i]).binding);
 			}
 		}
 		// check unreachable catch blocks
@@ -260,17 +272,29 @@
 
 		FlowInfo tryInfo = flowInfo.copy();
 		for (int i = 0; i < resourcesLength; i++) {
-			final LocalDeclaration resource = this.resources[i];
+			final Statement resource = this.resources[i];
 			tryInfo = resource.analyseCode(currentScope, handlingContext, tryInfo);
 			this.postResourcesInitStateIndexes[i] = currentScope.methodScope().recordInitializationStates(tryInfo);
-			LocalVariableBinding resourceBinding = resource.binding;
-			resourceBinding.useFlag = LocalVariableBinding.USED; // Is implicitly used anyways.
-			if (resourceBinding.closeTracker != null) {
-				// this was false alarm, we don't need to track the resource
-				resourceBinding.closeTracker.withdraw();
-				// keep the tracking variable in the resourceBinding in order to prevent creating a new one while analyzing the try block
+			TypeBinding resolvedType = null;
+			LocalVariableBinding localVariableBinding = null;
+			if (resource instanceof LocalDeclaration) {
+				localVariableBinding = ((LocalDeclaration) this.resources[i]).binding;
+				resolvedType = localVariableBinding.type;
+			} else { // Expression
+				if (resource instanceof NameReference && ((NameReference) resource).binding instanceof LocalVariableBinding) {
+					localVariableBinding = (LocalVariableBinding)((NameReference) resource).binding;
+				}
+				resolvedType = ((Expression) resource).resolvedType;
 			}
-			MethodBinding closeMethod = findCloseMethod(resource, resourceBinding);
+			if (localVariableBinding != null) {
+				localVariableBinding.useFlag = LocalVariableBinding.USED; // Is implicitly used anyways.
+				if (localVariableBinding.closeTracker != null) {
+					// this was false alarm, we don't need to track the resource
+					localVariableBinding.closeTracker.withdraw();
+					// keep the tracking variable in the resourceBinding in order to prevent creating a new one while analyzing the try block
+				}
+			}
+			MethodBinding closeMethod = findCloseMethod(resource, resolvedType);
 			if (closeMethod != null && closeMethod.isValidBinding() && closeMethod.returnType.id == TypeIds.T_void) {
 				ReferenceBinding[] thrownExceptions = closeMethod.thrownExceptions;
 				for (int j = 0, length = thrownExceptions.length; j < length; j++) {
@@ -289,7 +313,8 @@
 			// to avoid polluting the state indices. However, do this after the postTryInitStateIndex is calculated since
 			// it is used to add or remove assigned resources during code gen
 			for (int i = 0; i < resourcesLength; i++) {
-				tryInfo.resetAssignmentInfo(this.resources[i].binding);
+				if (this.resources[i] instanceof LocalDeclaration)
+					tryInfo.resetAssignmentInfo(((LocalDeclaration)this.resources[i]).binding);
 			}
 		}
 		// check unreachable catch blocks
@@ -346,10 +371,9 @@
 		}
 	}
 }
-private MethodBinding findCloseMethod(final LocalDeclaration resource, LocalVariableBinding resourceBinding) {
+private MethodBinding findCloseMethod(final ASTNode resource, TypeBinding type) {
 	MethodBinding closeMethod = null;
-	TypeBinding type = resourceBinding.type;
-	if (type != null && type.isValidBinding()) {
+	if (type != null && type.isValidBinding() && type instanceof ReferenceBinding) {
 		ReferenceBinding binding = (ReferenceBinding) type;
 		closeMethod = binding.getExactMethod(ConstantPool.Close, new TypeBinding [0], this.scope.compilationUnitScope()); // scope needs to be tighter
 		if(closeMethod == null) {
@@ -396,7 +420,7 @@
 	"(uncheckedExceptionTypes notNil and: [uncheckedExceptionTypes at: index])
 	ifTrue: [catchInits addPotentialInitializationsFrom: tryInits]."
 	*/
-	if (this.tryBlock.statements == null && this.resources == NO_RESOURCES) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=350579
+	if (this.tryBlock.statements == null && this.resources == null) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=350579
 		catchInfo.setReachMode(FlowInfo.UNREACHABLE_OR_DEAD);
 	}
 	return catchInfo;
@@ -416,24 +440,35 @@
 	return false;
 }
 
+@Override
 public ExceptionLabel enterAnyExceptionHandler(CodeStream codeStream) {
 	if (this.subRoutineStartLabel == null)
 		return null;
 	return super.enterAnyExceptionHandler(codeStream);
 }
 
+@Override
 public void enterDeclaredExceptionHandlers(CodeStream codeStream) {
 	for (int i = 0, length = this.declaredExceptionLabels == null ? 0 : this.declaredExceptionLabels.length; i < length; i++) {
 		this.declaredExceptionLabels[i].placeStart();
 	}
+	int resourceCount = this.resources.length;
+	if (resourceCount > 0 && this.resourceExceptionLabels != null) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=375248
+		// Reinstall handlers
+		for (int i = resourceCount; i >= 0; --i) {
+			this.resourceExceptionLabels[i].placeStart();
+		}
+	}
 }
 
+@Override
 public void exitAnyExceptionHandler() {
 	if (this.subRoutineStartLabel == null)
 		return;
 	super.exitAnyExceptionHandler();
 }
 
+@Override
 public void exitDeclaredExceptionHandlers(CodeStream codeStream) {
 	for (int i = 0, length = this.declaredExceptionLabels == null ? 0 : this.declaredExceptionLabels.length; i < length; i++) {
 		this.declaredExceptionLabels[i].placeEnd();
@@ -456,6 +491,7 @@
  *	post 1.5 target level, cannot use jsr bytecode, must instead inline finally block
  * returnAddress is only allocated if jsr is allowed
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -515,7 +551,18 @@
 				this.resourceExceptionLabels[i] = new ExceptionLabel(codeStream, null);
 				this.resourceExceptionLabels[i].placeStart();
 				if (i < resourceCount) {
-					this.resources[i].generateCode(this.scope, codeStream); // Initialize resources ...
+					Statement stmt = this.resources[i];
+					if (stmt instanceof NameReference) {
+						NameReference ref = (NameReference) stmt;
+						ref.bits |= ASTNode.IsCapturedOuterLocal; // TODO: selective flagging if ref.binding is not one of earlier inlined LVBs.
+						VariableBinding binding = (VariableBinding) ref.binding; // Only LVB expected here.
+						ref.checkEffectiveFinality(binding, this.scope);
+					} else if (stmt instanceof FieldReference) {
+						FieldReference fieldReference = (FieldReference) stmt;
+						if (!fieldReference.binding.isFinal())
+							this.scope.problemReporter().cannotReferToNonFinalField(fieldReference.binding, fieldReference);
+					}
+					stmt.generateCode(this.scope, codeStream); // Initialize resources ...
 				}
 			}
 		}
@@ -525,7 +572,7 @@
 				BranchLabel exitLabel = new BranchLabel(codeStream);
 				this.resourceExceptionLabels[i].placeEnd(); // outer handler if any is the one that should catch exceptions out of close()
 				
-				LocalVariableBinding localVariable = i > 0 ? this.resources[i-1].binding : null;
+				Statement stmt = i > 0 ? this.resources[i - 1] : null;
 				if ((this.bits & ASTNode.IsTryBlockExiting) == 0) {
 					// inline resource closure
 					if (i > 0) {
@@ -537,10 +584,7 @@
 							codeStream.removeNotDefinitelyAssignedVariables(currentScope, this.postTryInitStateIndex);
 							codeStream.addDefinitelyAssignedVariables(currentScope, this.postTryInitStateIndex);
 						}
-						codeStream.load(localVariable);
-						codeStream.ifnull(exitLabel);
-						codeStream.load(localVariable);
-						codeStream.invokeAutoCloseableClose(localVariable.type);
+						generateCodeSnippet(stmt, codeStream, exitLabel, false /* record */);
 						codeStream.recordPositionsFrom(invokeCloseStartPc, this.tryBlock.sourceEnd);
 					}
 					codeStream.goto_(exitLabel); // skip over the catch block.
@@ -582,13 +626,7 @@
 				if (i > 0) {
 					// inline resource close here rather than bracketing the current catch block with a try region.
 					BranchLabel postCloseLabel = new BranchLabel(codeStream);
-					int invokeCloseStartPc = codeStream.position; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=343785			
-					codeStream.load(localVariable);
-					codeStream.ifnull(postCloseLabel);
-					codeStream.load(localVariable);
-					codeStream.invokeAutoCloseableClose(localVariable.type);
-					codeStream.recordPositionsFrom(invokeCloseStartPc, this.tryBlock.sourceEnd);
-					codeStream.removeVariable(localVariable);
+					generateCodeSnippet(stmt, codeStream, postCloseLabel, true /* record */, i, codeStream.position);						
 					postCloseLabel.place();
 				}
 				codeStream.load(this.primaryExceptionVariable);
@@ -843,10 +881,69 @@
 	}
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
+private void generateCodeSnippet(Statement statement, CodeStream codeStream, BranchLabel postCloseLabel, boolean record, int... values) {
+	
+	int i = -1; 
+	int invokeCloseStartPc = -1;
+	if (record) {
+		i = values[0];
+		invokeCloseStartPc = values[1];
+	}
+	if (statement instanceof LocalDeclaration)
+		generateCodeSnippet((LocalDeclaration)statement, codeStream, postCloseLabel, record, i, invokeCloseStartPc);
+	else if (statement instanceof Reference)
+		generateCodeSnippet((Reference)statement, codeStream, postCloseLabel, record, i, invokeCloseStartPc);
+	// else abort
+}
+
+private void generateCodeSnippet(Reference reference, CodeStream codeStream, BranchLabel postCloseLabel, boolean record, int i, int invokeCloseStartPc) {
+	reference.generateCode(this.scope, codeStream, true);
+	codeStream.ifnull(postCloseLabel);
+	reference.generateCode(this.scope, codeStream, true);
+	codeStream.invokeAutoCloseableClose(reference.resolvedType);
+	if (!record) return;
+	codeStream.recordPositionsFrom(invokeCloseStartPc, this.tryBlock.sourceEnd);
+	isDuplicateResourceReference(i);
+}
+private void generateCodeSnippet(LocalDeclaration localDeclaration, CodeStream codeStream, BranchLabel postCloseLabel, boolean record, int i, int invokeCloseStartPc) {
+	LocalVariableBinding variableBinding = localDeclaration.binding;
+	codeStream.load(variableBinding);
+	codeStream.ifnull(postCloseLabel);
+	codeStream.load(variableBinding);
+	codeStream.invokeAutoCloseableClose(variableBinding.type);
+	if (!record) return;
+	codeStream.recordPositionsFrom(invokeCloseStartPc, this.tryBlock.sourceEnd);
+	if (!isDuplicateResourceReference(i)) // do not remove duplicate variable now
+		codeStream.removeVariable(variableBinding);
+}
+
+private boolean isDuplicateResourceReference(int index) {
+	int len = this.resources.length;
+	if (index < len && this.resources[index] instanceof Reference) {
+		Reference ref = (Reference) this.resources[index];
+		Binding refBinding =  ref instanceof NameReference ? ((NameReference) ref).binding :
+			ref instanceof FieldReference ? ((FieldReference) ref).binding : null;
+		if (refBinding == null) return false;
+		
+		//TODO: For field accesses in the form of a.b.c and b.c - could there be a non-trivial dup - to check?
+		for (int i = 0; i < index; i++) {
+			Statement stmt = this.resources[i];
+			Binding b = stmt instanceof LocalDeclaration ? ((LocalDeclaration) stmt).binding : 
+				stmt instanceof NameReference ? ((NameReference) stmt).binding :
+						stmt instanceof FieldReference ? ((FieldReference) stmt).binding : null;
+			if (b == refBinding) {
+				this.scope.problemReporter().duplicateResourceReference(ref);
+				return true;
+			}
+		}
+	}
+	return false;
+}
 
 /**
  * @see SubRoutineStatement#generateSubRoutineInvocation(BlockScope, CodeStream, Object, int, LocalVariableBinding)
  */
+@Override
 public boolean generateSubRoutineInvocation(BlockScope currentScope, CodeStream codeStream, Object targetLocation, int stateIndex, LocalVariableBinding secretLocal) {
 
 	int resourceCount = this.resources.length;
@@ -854,20 +951,13 @@
 		for (int i = resourceCount; i > 0; --i) {
 			// Disarm the handlers and take care of resource closure.
 			this.resourceExceptionLabels[i].placeEnd();
-			LocalVariableBinding localVariable = this.resources[i-1].binding;
 			BranchLabel exitLabel = new BranchLabel(codeStream);
 			int invokeCloseStartPc = codeStream.position; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=343785
-			codeStream.load(localVariable);
-			codeStream.ifnull(exitLabel);
-			codeStream.load(localVariable);
-			codeStream.invokeAutoCloseableClose(localVariable.type);
+			generateCodeSnippet(this.resources[i - 1], codeStream, exitLabel, false);
 			codeStream.recordPositionsFrom(invokeCloseStartPc, this.tryBlock.sourceEnd);
 			exitLabel.place();
 		}
-		// Reinstall handlers
-		for (int i = resourceCount; i > 0; --i) {
-			this.resourceExceptionLabels[i].placeStart();
-		}
+		this.resourceExceptionLabels[0].placeEnd(); // outermost should end here as well, will start again on enter
 	}
 
 	boolean isStackMapFrameCodeStream = codeStream instanceof StackMapFrameCodeStream;
@@ -946,15 +1036,22 @@
 	}
 	return false;
 }
+@Override
 public boolean isSubRoutineEscaping() {
 	return (this.bits & ASTNode.IsSubRoutineEscaping) != 0;
 }
 
+@Override
 public StringBuffer printStatement(int indent, StringBuffer output) {
 	int length = this.resources.length;
 	printIndent(indent, output).append("try" + (length == 0 ? "\n" : " (")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	for (int i = 0; i < length; i++) {
-		this.resources[i].printAsExpression(0, output);
+		Statement stmt = this.resources[i];
+		if (stmt instanceof LocalDeclaration) {
+			((LocalDeclaration) stmt).printAsExpression(0, output);
+		} else if (stmt instanceof Reference) {
+			((Reference) stmt).printExpression(0, output);
+		} else continue;
 		if (i != length - 1) {
 			output.append(";\n"); //$NON-NLS-1$
 			printIndent(indent + 2, output);
@@ -982,6 +1079,7 @@
 	return output;
 }
 
+@Override
 public void resolve(BlockScope upperScope) {
 	// special scope for secret locals optimization.
 	this.scope = new BlockScope(upperScope);
@@ -1002,19 +1100,34 @@
 	}
 	for (int i = 0; i < resourceCount; i++) {
 		this.resources[i].resolve(resourceManagementScope);
-		LocalVariableBinding localVariableBinding = this.resources[i].binding;
-		if (localVariableBinding != null && localVariableBinding.isValidBinding()) {
-			localVariableBinding.modifiers |= ClassFileConstants.AccFinal;
-			localVariableBinding.tagBits |= TagBits.IsResource;
-			TypeBinding resourceType = localVariableBinding.type;
-			if (resourceType instanceof ReferenceBinding) {
-				if (resourceType.findSuperTypeOriginatingFrom(TypeIds.T_JavaLangAutoCloseable, false /*AutoCloseable is not a class*/) == null && resourceType.isValidBinding()) {
-					upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, this.resources[i].type);
+		if (this.resources[i] instanceof LocalDeclaration) {
+			LocalDeclaration node = (LocalDeclaration)this.resources[i];
+			LocalVariableBinding localVariableBinding = node.binding;
+			if (localVariableBinding != null && localVariableBinding.isValidBinding()) {
+				localVariableBinding.modifiers |= ClassFileConstants.AccFinal;
+				localVariableBinding.tagBits |= TagBits.IsResource;
+				TypeBinding resourceType = localVariableBinding.type;
+				if (resourceType instanceof ReferenceBinding) {
+					if (resourceType.findSuperTypeOriginatingFrom(TypeIds.T_JavaLangAutoCloseable, false /*AutoCloseable is not a class*/) == null && resourceType.isValidBinding()) {
+						upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, node.type);
+						localVariableBinding.type = new ProblemReferenceBinding(CharOperation.splitOn('.', resourceType.shortReadableName()), null, ProblemReasons.InvalidTypeForAutoManagedResource);
+					}
+				} else if (resourceType != null) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=349862, avoid secondary error in problematic null case
+					upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, node.type);
 					localVariableBinding.type = new ProblemReferenceBinding(CharOperation.splitOn('.', resourceType.shortReadableName()), null, ProblemReasons.InvalidTypeForAutoManagedResource);
 				}
+			}
+		} else { // expression
+			Expression node = (Expression) this.resources[i];
+			TypeBinding resourceType = node.resolvedType;
+			if (resourceType instanceof ReferenceBinding) {
+				if (resourceType.findSuperTypeOriginatingFrom(TypeIds.T_JavaLangAutoCloseable, false /*AutoCloseable is not a class*/) == null && resourceType.isValidBinding()) {
+					upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, node);
+					((Expression) this.resources[i]).resolvedType = new ProblemReferenceBinding(CharOperation.splitOn('.', resourceType.shortReadableName()), null, ProblemReasons.InvalidTypeForAutoManagedResource);
+				}
 			} else if (resourceType != null) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=349862, avoid secondary error in problematic null case
-				upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, this.resources[i].type);
-				localVariableBinding.type = new ProblemReferenceBinding(CharOperation.splitOn('.', resourceType.shortReadableName()), null, ProblemReasons.InvalidTypeForAutoManagedResource);
+				upperScope.problemReporter().resourceHasToImplementAutoCloseable(resourceType, node);
+				((Expression) this.resources[i]).resolvedType = new ProblemReferenceBinding(CharOperation.splitOn('.', resourceType.shortReadableName()), null, ProblemReasons.InvalidTypeForAutoManagedResource);
 			}
 		}
 	}
@@ -1108,11 +1221,12 @@
 		this.scope.addSubscope(finallyScope);
 	}
 }
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	if (visitor.visit(this, blockScope)) {
-		LocalDeclaration[] localDeclarations = this.resources;
-		for (int i = 0, max = localDeclarations.length; i < max; i++) {
-			localDeclarations[i].traverse(visitor, this.scope);
+		Statement[] statements = this.resources;
+		for (int i = 0, max = statements.length; i < max; i++) {
+			statements[i].traverse(visitor, this.scope);
 		}
 		this.tryBlock.traverse(visitor, this.scope);
 		if (this.catchArguments != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
index a18b07b..72556f6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeDeclaration.java
@@ -1,10 +1,11 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contributions for
@@ -77,6 +78,7 @@
 /*
  *	We cause the compilation task to abort to a given extent.
  */
+@Override
 public void abort(int abortLevel, CategorizedProblem problem) {
 	switch (abortLevel) {
 		case AbortCompilation :
@@ -198,6 +200,7 @@
  *	Flow analysis for a local innertype
  *
  */
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	if (this.ignoreFurtherInvestigation)
 		return flowInfo;
@@ -307,6 +310,7 @@
 	return hasConstructor;
 }
 
+@Override
 public CompilationResult compilationResult() {
 	return this.compilationResult;
 }
@@ -512,6 +516,7 @@
 	return null;
 }
 
+@Override
 public CompilationUnitDeclaration getCompilationUnitDeclaration() {
 	if (this.scope != null) {
 		return this.scope.compilationUnitScope().referenceContext;
@@ -621,6 +626,7 @@
 /**
  * Bytecode generation for a local inner type (API as a normal statement code gen)
  */
+@Override
 public void generateCode(BlockScope blockScope, CodeStream codeStream) {
 	if ((this.bits & ASTNode.IsReachable) == 0) {
 		return;
@@ -666,6 +672,7 @@
 	generateCode((ClassFile) null);
 }
 
+@Override
 public boolean hasErrors() {
 	return this.ignoreFurtherInvestigation;
 }
@@ -746,6 +753,22 @@
 			}
 		}
 	}
+	if (this.scope.compilerOptions().complianceLevel >= ClassFileConstants.JDK9) {
+		// synthesize <clinit> if one is not present. Required to initialize
+		// synthetic final fields as modifying final fields outside of a <clinit>
+		// is disallowed in Java 9
+		if (this.methods == null || !this.methods[0].isClinit()) {
+			Clinit clinit = new Clinit(this.compilationResult);
+			clinit.declarationSourceStart = clinit.sourceStart = this.sourceStart;
+			clinit.declarationSourceEnd = clinit.sourceEnd = this.sourceEnd;
+			clinit.bodyEnd = this.sourceEnd;
+			int length = this.methods == null ? 0 : this.methods.length;
+			AbstractMethodDeclaration[] methodDeclarations = new AbstractMethodDeclaration[length + 1];
+			methodDeclarations[0] = clinit;
+			if (this.methods != null)
+				System.arraycopy(this.methods, 0, methodDeclarations, 1, length);
+		}
+	}
 	if (this.methods != null) {
 		UnconditionalFlowInfo outerInfo = flowInfo.unconditionalFieldLessCopy();
 		FlowInfo constructorInfo = nonStaticFieldInfo.unconditionalInits().discardNonFieldInitializations().addInitializationsFrom(outerInfo);
@@ -921,6 +944,7 @@
 	}
 }
 
+@Override
 public StringBuffer print(int indent, StringBuffer output) {
 	if (this.javadoc != null) {
 		this.javadoc.print(indent, output);
@@ -1015,6 +1039,7 @@
 	return output;
 }
 
+@Override
 public StringBuffer printStatement(int tab, StringBuffer output) {
 	return print(tab, output);
 }
@@ -1027,7 +1052,6 @@
 	return this.functionalExpressionsCount++;
 }
 
-
 public void resolve() {
 	SourceTypeBinding sourceType = this.binding;
 	if (sourceType == null) {
@@ -1035,6 +1059,13 @@
 		return;
 	}
 	try {
+		if (CharOperation.equals(this.name, TypeConstants.VAR)) {
+			if (this.scope.compilerOptions().sourceLevel < ClassFileConstants.JDK10) {
+				this.scope.problemReporter().varIsReservedTypeNameInFuture(this);
+			} else {
+				this.scope.problemReporter().varIsReservedTypeName(this);
+			}
+		}
 		// resolve annotations and check @Deprecated annotation
 		long annotationTagBits = sourceType.getAnnotationTagBits();
 		if ((annotationTagBits & TagBits.AnnotationDeprecated) == 0
@@ -1253,6 +1284,7 @@
 /**
  * Resolve a local type declaration
  */
+@Override
 public void resolve(BlockScope blockScope) {
 
 	// need to build its scope first and proceed with binding's creation
@@ -1339,10 +1371,12 @@
 	updateMaxFieldCount();
 }
 
+@Override
 public void tagAsHavingErrors() {
 	this.ignoreFurtherInvestigation = true;
 }
 
+@Override
 public void tagAsHavingIgnoredMandatoryErrors(int problemId) {
 	// Nothing to do for this context;
 }
@@ -1406,6 +1440,7 @@
 /**
  *	Iteration for a local inner type
  */
+@Override
 public void traverse(ASTVisitor visitor, BlockScope blockScope) {
 	try {
 		if (visitor.visit(this, blockScope)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
index 735ad62..d31d0c3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeParameter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,8 +17,10 @@
 
 import java.util.List;
 
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference.AnnotationCollector;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AnnotationTargetTypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
@@ -29,6 +31,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 
 @SuppressWarnings("rawtypes")
@@ -40,6 +43,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return TYPE_PARAMETER;
 	}
@@ -106,8 +110,16 @@
 		if (this.annotations != null || scope.environment().usesNullTypeAnnotations()) {
 			resolveAnnotations(scope);
 		}
+		if (CharOperation.equals(this.name, TypeConstants.VAR)) {
+			if (scope.compilerOptions().sourceLevel < ClassFileConstants.JDK10) {
+				scope.problemReporter().varIsReservedTypeNameInFuture(this);
+			} else {
+				scope.problemReporter().varIsNotAllowedHere(this);
+			}
+		}
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 		internalResolve(scope, scope.methodScope().isStatic);
 	}
@@ -129,7 +141,7 @@
 			if (isAnnotationBasedNullAnalysisEnabled) {
 				if (this.binding != null && this.binding.isValidBinding()) {
 					if (!this.binding.hasNullTypeAnnotations()
-							&& scope.hasDefaultNullnessFor(Binding.DefaultLocationTypeParameter)) {
+							&& scope.hasDefaultNullnessFor(Binding.DefaultLocationTypeParameter, this.sourceStart())) {
 						AnnotationBinding[] annots = new AnnotationBinding[] { environment.getNonNullAnnotation() };
 						TypeVariableBinding previousBinding = this.binding;
 						this.binding = (TypeVariableBinding) environment.createAnnotatedType(this.binding, annots);
@@ -154,9 +166,7 @@
 		}	
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.AstNode#print(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printStatement(int indent, StringBuffer output) {
 		if (this.annotations != null) {
 			printAnnotations(this.annotations, output);
@@ -176,10 +186,12 @@
 		return output;
 	}
 
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 	    // nothing to do
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.java
index 5d31d06..71d34a7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/TypeReference.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,14 +29,20 @@
  *                          Bug 383624 - [1.8][compiler] Revive code generation support for type annotations (from Olivier's work)
  *                          Bug 409236 - [1.8][compiler] Type annotations on intersection cast types dropped by code generator
  *                          Bug 415399 - [1.8][compiler] Type annotations on constructor results dropped by the code generator
+ *      Jesper S Møller <jesper@selskabet.org> -  Contributions for
+ *                          bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
+ *                          bug 529556 - [18.3] Add content assist support for 'var' as a type
+ *                          
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NullAnnotationMatching.CheckMode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AnnotationContext;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AnnotationTargetTypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext;
@@ -56,6 +63,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
 @SuppressWarnings({"rawtypes", "unchecked"})
@@ -219,19 +227,24 @@
 		}
 		return true;
 	}
+	@Override
 	public boolean visit(MarkerAnnotation annotation, BlockScope scope) {
 		return internalVisit(annotation);
 	}
+	@Override
 	public boolean visit(NormalAnnotation annotation, BlockScope scope) {
 		return internalVisit(annotation);
 	}
+	@Override
 	public boolean visit(SingleMemberAnnotation annotation, BlockScope scope) {
 		return internalVisit(annotation);
 	}
+	@Override
 	public boolean visit(Wildcard wildcard, BlockScope scope) {
 		this.currentWildcard = wildcard;
 		return true;
 	}
+	@Override
 	public boolean visit(Argument argument, BlockScope scope) {
 		if ((argument.bits & ASTNode.IsUnionType) == 0) {
 			return true;
@@ -245,6 +258,7 @@
 		}
 		return false;
 	}
+	@Override
 	public boolean visit(Argument argument, ClassScope scope) {
 		if ((argument.bits & ASTNode.IsUnionType) == 0) {
 			return true;
@@ -258,6 +272,7 @@
 		}
 		return false;
 	}
+	@Override
 	public boolean visit(LocalDeclaration localDeclaration, BlockScope scope) {
 		for (int i = 0, max = this.localVariable.initializationCount; i < max; i++) {
 			int startPC = this.localVariable.initializationPCs[i << 1];
@@ -268,6 +283,7 @@
 		}
 		return false;
 	}
+	@Override
 	public void endVisit(Wildcard wildcard, BlockScope scope) {
 		this.currentWildcard = null;
 	}
@@ -332,6 +348,7 @@
 public void aboutToResolve(Scope scope) {
 	// default implementation: do nothing
 }
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	return flowInfo;
 }
@@ -504,7 +521,11 @@
 	if (type == null) {
 		return null; // detected cycle while resolving hierarchy
 	} else if ((hasError = !type.isValidBinding()) == true) {
-		reportInvalidType(scope);
+		if (this.isTypeNameVar(scope)) {
+			reportVarIsNotAllowedHere(scope);
+		} else {
+			reportInvalidType(scope);
+		}
 		switch (type.problemId()) {
 			case ProblemReasons.NotFound :
 			case ProblemReasons.NotVisible :
@@ -540,6 +561,7 @@
 		return this.resolvedType; // pick up value that may have been changed in resolveAnnotations(..)
 	}
 }
+@Override
 public boolean isTypeReference() {
 	return true;
 }
@@ -567,6 +589,10 @@
 	scope.problemReporter().invalidType(this, this.resolvedType);
 }
 
+protected void reportVarIsNotAllowedHere(Scope scope) {
+	scope.problemReporter().varIsNotAllowedHere(this);
+}
+
 public TypeBinding resolveSuperType(ClassScope scope) {
 	// assumes the implementation of resolveType(ClassScope) will call back to detect cycles
 	TypeBinding superType = resolveType(scope);
@@ -582,6 +608,7 @@
 	return superType;
 }
 
+@Override
 public final TypeBinding resolveType(BlockScope blockScope) {
 	return resolveType(blockScope, true /* checkbounds if any */);
 }
@@ -594,6 +621,7 @@
 	return internalResolveType(scope, location);
 }
 
+@Override
 public TypeBinding resolveType(ClassScope scope) {
 	return resolveType(scope, 0);
 }
@@ -614,8 +642,8 @@
 	boolean pauseHierarchyCheck = false;
 	try {
 		if (ref.isHierarchyBeingConnected()) {
+			pauseHierarchyCheck = (ref.tagBits & TagBits.PauseHierarchyCheck) == 0;
 			ref.tagBits |= TagBits.PauseHierarchyCheck;
-			pauseHierarchyCheck = true;
 		}
 	    return resolveType(classScope, Binding.DefaultLocationTypeArgument);
 	} finally {
@@ -625,8 +653,10 @@
 	}
 }
 
+@Override
 public abstract void traverse(ASTVisitor visitor, BlockScope scope);
 
+@Override
 public abstract void traverse(ASTVisitor visitor, ClassScope scope);
 
 protected void resolveAnnotations(Scope scope, int location) {
@@ -663,7 +693,7 @@
 			&& !this.resolvedType.isTypeVariable()
 			&& !this.resolvedType.isWildcard()
 			&& location != 0
-			&& scope.hasDefaultNullnessFor(location)) 
+			&& scope.hasDefaultNullnessFor(location, this.sourceStart)) 
 	{
 		if (location == Binding.DefaultLocationTypeBound && this.resolvedType.id == TypeIds.T_JavaLangObject) {
 			scope.problemReporter().implicitObjectBoundNoNullDefault(this);
@@ -697,7 +727,7 @@
     	}
 	}
 	checkIllegalNullAnnotation(scope);
-	}
+}
 protected void checkIllegalNullAnnotation(Scope scope) {
 	if (this.resolvedType.leafComponentType().isBaseType() && hasNullTypeAnnotation(AnnotationPosition.LEAF_TYPE))
 		scope.problemReporter().illegalAnnotationForBaseType(this, this.annotations[0], this.resolvedType.tagBits & TagBits.AnnotationNullMASK);	
@@ -719,13 +749,13 @@
 public boolean hasNullTypeAnnotation(AnnotationPosition position) {
 	if (this.annotations != null) {
 		if (position == AnnotationPosition.MAIN_TYPE) {
-		Annotation[] innerAnnotations = this.annotations[this.annotations.length-1];
+			Annotation[] innerAnnotations = this.annotations[this.annotations.length-1];
 			return containsNullAnnotation(innerAnnotations);
 		} else {
 			for (Annotation[] someAnnotations: this.annotations) {
 				if (containsNullAnnotation(someAnnotations))
-			return true;
-	}
+					return true;
+			}
 		}
 	}
 	return false;
@@ -746,4 +776,17 @@
 public boolean isBaseTypeReference() {
 	return false;
 }
+/**
+ * Checks to see if the declaration uses 'var' as type name 
+ * @param scope Relevant scope, for error reporting
+ * @return true, if source level is Java 10 or above and the type name is just 'var', false otherwise 
+ */
+public boolean isTypeNameVar(Scope scope) {
+	CompilerOptions compilerOptions = scope != null ? scope.compilerOptions() : null;
+	if (compilerOptions != null && compilerOptions.sourceLevel < ClassFileConstants.JDK10) {
+		return false;
+	}
+	char[][] typeName = this.getTypeName();
+	return typeName.length == 1 && CharOperation.equals(typeName[0], TypeConstants.VAR);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.java
index e0f2d91..20a5450 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnaryExpression.java
@@ -30,6 +30,7 @@
 		this.bits |= operator << OperatorSHIFT; // encode operator
 	}
 
+@Override
 public FlowInfo analyseCode(
 		BlockScope currentScope,
 		FlowContext flowContext,
@@ -48,6 +49,7 @@
 	return flowInfo;
 }
 
+	@Override
 	public Constant optimizedBooleanConstant() {
 
 		return this.optimizedBooleanConstant == null
@@ -62,6 +64,7 @@
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 * @param valueRequired boolean
 	 */
+	@Override
 	public void generateCode(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -172,6 +175,7 @@
 	 * Boolean operator code generation
 	 *	Optimized operations are: &&, ||, <, <=, >, >=, &, |, ^
 	 */
+	@Override
 	public void generateOptimizedBoolean(
 		BlockScope currentScope,
 		CodeStream codeStream,
@@ -205,12 +209,14 @@
 		}
 	}
 
+	@Override
 	public StringBuffer printExpressionNoParenthesis(int indent, StringBuffer output) {
 
 		output.append(operatorToString()).append(' ');
 		return this.expression.printExpression(0, output);
 	}
 
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		boolean expressionIsCast;
 		if ((expressionIsCast = this.expression instanceof CastExpression) == true) this.expression.bits |= DisableUnnecessaryCastCheck; // will check later on
@@ -302,6 +308,7 @@
 		return this.resolvedType;
 	}
 
+	@Override
 	public void traverse(
     		ASTVisitor visitor,
     		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.java
index f53927c..3d0e324 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnionTypeReference.java
@@ -31,9 +31,7 @@
 		this.sourceEnd = typeReferences[length - 1].sourceEnd;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getLastToken()
-	 */
+	@Override
 	public char[] getLastToken() {
 		return null;
 	}
@@ -41,13 +39,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
 	 */
+	@Override
 	protected TypeBinding getTypeBinding(Scope scope) {
 		return null; // not supported here - combined with resolveType(...)
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeBinding(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope)
-	 */
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 		// return the lub (least upper bound of all type binding) 
 		int length = this.typeReferences.length;
@@ -102,17 +99,13 @@
 		return (this.resolvedType = scope.lowerUpperBound(allExceptionTypes));
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#getTypeName()
-	 */
+	@Override
 	public char[][] getTypeName() {
 		// we need to keep a return value that is a char[][]
 		return this.typeReferences[0].getTypeName();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope)
-	 */
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			int length = this.typeReferences == null ? 0 : this.typeReferences.length;
@@ -123,9 +116,7 @@
 		visitor.endVisit(this, scope);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference#traverse(org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ClassScope)
-	 */
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			int length = this.typeReferences == null ? 0 : this.typeReferences.length;
@@ -136,9 +127,7 @@
 		visitor.endVisit(this, scope);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression#printExpression(int, java.lang.StringBuffer)
-	 */
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output) {
 		int length = this.typeReferences == null ? 0 : this.typeReferences.length;
 		printIndent(indent, output);
@@ -150,9 +139,11 @@
 		}
 		return output;
 	}
+	@Override
 	public boolean isUnionType() {
 		return true;
 	}
+	@Override
 	public TypeReference augmentTypeWithAdditionalDimensions(int additionalDimensions, Annotation[][] additionalAnnotations, boolean isVarargs) {
 		return this; // arrays are not legal as union types.
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.java
new file mode 100644
index 0000000..50a6f12
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UnlikelyArgumentCheck.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2017 GK Software AG and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants.DangerousMethod;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
+
+/* @NonNullByDefault */
+public class UnlikelyArgumentCheck {
+	public final DangerousMethod dangerousMethod;
+	public final TypeBinding typeToCheck;
+	public final TypeBinding expectedType;
+	public final TypeBinding typeToReport;
+
+	private UnlikelyArgumentCheck(DangerousMethod dangerousMethod, TypeBinding typeToCheck, TypeBinding expectedType,
+			TypeBinding typeToReport) {
+		this.dangerousMethod = dangerousMethod;
+		this.typeToCheck = typeToCheck;
+		this.expectedType = expectedType;
+		this.typeToReport = typeToReport;
+	}
+
+	/**
+	 * Check if the invocation is likely a bug.
+	 * @param currentScope
+	 * @return false, if the typeToCheck does not seem to related to the expectedType
+	 */
+	public boolean isDangerous(BlockScope currentScope) {
+		TypeBinding typeToCheck2 = this.typeToCheck;
+		// take autoboxing into account
+		if (typeToCheck2.isBaseType()) {
+			typeToCheck2 = currentScope.boxing(typeToCheck2);
+		}
+		TypeBinding expectedType2 = this.expectedType;
+		if (expectedType2.isBaseType()) { // can happen for the first parameter of java.util.Object.equals
+			expectedType2 = currentScope.boxing(expectedType2);
+		}
+		if(this.dangerousMethod != DangerousMethod.Equals && currentScope.compilerOptions().reportUnlikelyCollectionMethodArgumentTypeStrict) {
+			return !typeToCheck2.isCompatibleWith(expectedType2, currentScope);
+		}
+		// unless both types are true type variables (not captures), take the erasure of both.
+		if (typeToCheck2.isCapture() || !typeToCheck2.isTypeVariable() || expectedType2.isCapture()
+				|| !expectedType2.isTypeVariable()) {
+			typeToCheck2 = typeToCheck2.erasure();
+			expectedType2 = expectedType2.erasure();
+		}
+		return !typeToCheck2.isCompatibleWith(expectedType2, currentScope)
+				&& !expectedType2.isCompatibleWith(typeToCheck2, currentScope);
+	}
+
+	/**
+	 * When targeting a well-known dangerous method, returns an UnlikelyArgumentCheck object that contains the types to
+	 * check against each other and to report
+	 */
+	public static /* @Nullable */ UnlikelyArgumentCheck determineCheckForNonStaticSingleArgumentMethod(
+			TypeBinding argumentType, Scope scope, char[] selector, TypeBinding actualReceiverType,
+			TypeBinding[] parameters) {
+		// detecting only methods with a single argument, typed either as Object or as Collection:
+		if (parameters.length != 1)
+			return null;
+		int paramTypeId = parameters[0].original().id;
+		if (paramTypeId != TypeIds.T_JavaLangObject && paramTypeId != TypeIds.T_JavaUtilCollection)
+			return null;
+
+		// check selectors before typeBits as to avoid unnecessary super-traversals for the receiver type
+		DangerousMethod suspect = DangerousMethod.detectSelector(selector);
+		if (suspect == null)
+			return null;
+
+		if (actualReceiverType.hasTypeBit(TypeIds.BitMap)) {
+			if (paramTypeId == TypeIds.T_JavaLangObject) {
+				switch (suspect) {
+					case ContainsKey:
+					case Get:
+					case Remove:
+						// map operations taking a key
+						ReferenceBinding mapType = actualReceiverType
+								.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilMap, false);
+						if (mapType != null && mapType.isParameterizedType())
+							return new UnlikelyArgumentCheck(suspect, argumentType,
+									((ParameterizedTypeBinding) mapType).typeArguments()[0], mapType);
+						break;
+					case ContainsValue:
+						// map operation taking a value
+						mapType = actualReceiverType.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilMap, false);
+						if (mapType != null && mapType.isParameterizedType())
+							return new UnlikelyArgumentCheck(suspect, argumentType,
+									((ParameterizedTypeBinding) mapType).typeArguments()[1], mapType);
+						break;
+					default: // no other suspects are detected in java.util.Map
+				}
+			}
+		}
+		if (actualReceiverType.hasTypeBit(TypeIds.BitCollection)) {
+			if (paramTypeId == TypeIds.T_JavaLangObject) {
+				switch (suspect) {
+					case Remove:
+					case Contains:
+						// collection operations taking a single element
+						ReferenceBinding collectionType = actualReceiverType
+								.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilCollection, false);
+						if (collectionType != null && collectionType.isParameterizedType())
+							return new UnlikelyArgumentCheck(suspect, argumentType,
+									((ParameterizedTypeBinding) collectionType).typeArguments()[0], collectionType);
+						break;
+					default: // no other suspects with Object-parameter are detected in java.util.Collection
+				}
+			} else if (paramTypeId == TypeIds.T_JavaUtilCollection) {
+				switch (suspect) {
+					case RemoveAll:
+					case ContainsAll:
+					case RetainAll:
+						// collection operations taking another collection
+						ReferenceBinding collectionType = actualReceiverType
+								.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilCollection, false);
+						ReferenceBinding argumentCollectionType = argumentType
+								.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilCollection, false);
+						if (collectionType != null && argumentCollectionType != null
+								&& argumentCollectionType.isParameterizedTypeWithActualArguments() 
+								&& collectionType.isParameterizedTypeWithActualArguments()) {
+							return new UnlikelyArgumentCheck(suspect,
+									((ParameterizedTypeBinding) argumentCollectionType).typeArguments()[0],
+									((ParameterizedTypeBinding) collectionType).typeArguments()[0], collectionType);
+						}
+						break;
+					default: // no other suspects with Collection-parameter are detected in java.util.Collection
+				}
+			}
+			if (actualReceiverType.hasTypeBit(TypeIds.BitList)) {
+				if (paramTypeId == TypeIds.T_JavaLangObject) {
+					switch (suspect) {
+						case IndexOf:
+						case LastIndexOf:
+							// list operations taking a single element
+							ReferenceBinding listType = actualReceiverType
+									.findSuperTypeOriginatingFrom(TypeIds.T_JavaUtilList, false);
+							if (listType != null && listType.isParameterizedType())
+								return new UnlikelyArgumentCheck(suspect, argumentType,
+										((ParameterizedTypeBinding) listType).typeArguments()[0], listType);
+							break;
+						default: // no other suspects are detected in java.util.List
+					}
+				}
+			}
+		}
+		if (paramTypeId == TypeIds.T_JavaLangObject && suspect == DangerousMethod.Equals) {
+			return new UnlikelyArgumentCheck(suspect, argumentType, actualReceiverType, actualReceiverType);
+		}
+		return null; // not replacing
+	}
+	public static /* @Nullable */ UnlikelyArgumentCheck determineCheckForStaticTwoArgumentMethod(
+			TypeBinding secondParameter, Scope scope, char[] selector, TypeBinding firstParameter,
+			TypeBinding[] parameters, TypeBinding actualReceiverType) {
+		// detecting only methods with two arguments, both typed as Object:
+		if (parameters.length != 2)
+			return null;
+		int paramTypeId1 = parameters[0].original().id;
+		int paramTypeId2 = parameters[1].original().id;
+
+		if (paramTypeId1 != TypeIds.T_JavaLangObject || paramTypeId2 != TypeIds.T_JavaLangObject)
+			return null;
+
+		// check selectors before typeBits as to avoid unnecessary super-traversals for the receiver type
+		DangerousMethod suspect = DangerousMethod.detectSelector(selector);
+		if (suspect == null)
+			return null;
+
+		if (actualReceiverType.id == TypeIds.T_JavaUtilObjects && suspect == DangerousMethod.Equals) {
+			return new UnlikelyArgumentCheck(suspect, secondParameter, firstParameter, firstParameter);
+		}
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.java
new file mode 100644
index 0000000..6e009f9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/UsesStatement.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.ast;
+
+public class UsesStatement extends ModuleStatement {
+
+	public TypeReference serviceInterface;
+
+	public UsesStatement(TypeReference serviceInterface) {
+		this.serviceInterface = serviceInterface;
+	}
+	@Override
+	public StringBuffer print(int indent, StringBuffer output) {
+		printIndent(indent, output);
+		output.append("uses "); //$NON-NLS-1$
+		this.serviceInterface.print(0, output);
+		output.append(";"); //$NON-NLS-1$
+		return output;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.java
index e401d4f..c567b7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/WhileStatement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,7 @@
 		this.sourceEnd = e;
 	}
 
+	@Override
 	public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 
 		this.breakLabel = new BranchLabel();
@@ -103,6 +104,7 @@
 					this.continueLabel,
 					currentScope,
 					true);
+			loopingContext.copyNullCheckedFieldsFrom(condLoopContext);
 			if (isConditionFalse) {
 				actionInfo = FlowInfo.DEAD_END;
 			} else {
@@ -179,6 +181,7 @@
 	 * @param currentScope org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope
 	 * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
 	 */
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream) {
 
 		if ((this.bits & IsReachable) == 0) {
@@ -262,6 +265,7 @@
 		codeStream.recordPositionsFrom(pc, this.sourceStart);
 	}
 
+	@Override
 	public void resolve(BlockScope scope) {
 
 		TypeBinding type = this.condition.resolveTypeExpecting(scope, TypeBinding.BOOLEAN);
@@ -270,6 +274,7 @@
 			this.action.resolve(scope);
 	}
 
+	@Override
 	public StringBuffer printStatement(int tab, StringBuffer output) {
 
 		printIndent(tab, output).append("while ("); //$NON-NLS-1$
@@ -281,6 +286,7 @@
 		return output;
 	}
 
+	@Override
 	public void traverse(
 		ASTVisitor visitor,
 		BlockScope blockScope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.java
index 8625586..567f0b9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/ast/Wildcard.java
@@ -39,6 +39,7 @@
 		this.kind = kind;
 	}
 
+	@Override
 	public char [][] getParameterizedTypeName() {
 		switch (this.kind) {
 			case Wildcard.UNBOUND :
@@ -50,6 +51,7 @@
 		}
 	}
 
+	@Override
 	public char [][] getTypeName() {
 		switch (this.kind) {
 			case Wildcard.UNBOUND :
@@ -82,6 +84,7 @@
 		return this.resolvedType;
 	}
 
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 		if (this.annotations != null && this.annotations[0] != null) {
 			printAnnotations(this.annotations[0], output);
@@ -104,6 +107,7 @@
 	}
 
 	// only invoked for improving resilience when unable to bind generic type from parameterized reference
+	@Override
 	public TypeBinding resolveType(BlockScope scope, boolean checkBounds, int location) {
 		if (this.bound != null) {
 			this.bound.resolveType(scope, checkBounds, Binding.DefaultLocationTypeBound);
@@ -112,6 +116,7 @@
 		return null;
 	}
 	// only invoked for improving resilience when unable to bind generic type from parameterized reference
+	@Override
 	public TypeBinding resolveType(ClassScope scope, int location) {
 		if (this.bound != null) {
 			this.bound.resolveType(scope, Binding.DefaultLocationTypeBound);
@@ -119,14 +124,17 @@
 		}
 		return null;
 	}
+	@Override
 	public TypeBinding resolveTypeArgument(BlockScope blockScope, ReferenceBinding genericType, int rank) {
 	    return internalResolveType(blockScope, genericType, rank); // no defaultNullness for wildcards
 	}
 
+	@Override
 	public TypeBinding resolveTypeArgument(ClassScope classScope, ReferenceBinding genericType, int rank) {
 	    return internalResolveType(classScope, genericType, rank); // no defaultNullness for wildcards
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, BlockScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -142,6 +150,7 @@
 		visitor.endVisit(this, scope);
 	}
 
+	@Override
 	public void traverse(ASTVisitor visitor, ClassScope scope) {
 		if (visitor.visit(this, scope)) {
 			if (this.annotations != null) {
@@ -156,6 +165,7 @@
 		}
 		visitor.endVisit(this, scope);
 	}
+	@Override
 	public boolean isWildcard() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.java
new file mode 100644
index 0000000..076d688
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/BasicModule.java
@@ -0,0 +1,255 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
+
+import java.util.Arrays;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ModuleReferenceImpl;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.PackageExportImpl;
+
+/**
+ * Retrofit a {@link ModuleDeclaration} into an {@link ISourceModule}.
+ * It remembers the underlying {@link ICompilationUnit} so the full structure
+ * can be recreated if needed.
+ */
+public class BasicModule implements ISourceModule {
+	static class Service implements IModule.IService {
+		char[] provides;
+		char[][] with;
+		@Override
+		public char[] name() {
+			return this.provides;
+		}
+
+		@Override
+		public char[][] with() {
+			return this.with;
+		}
+		@Override
+		public String toString() {
+			StringBuffer buffer = new StringBuffer();
+			buffer.append("provides"); //$NON-NLS-1$
+			buffer.append(this.provides);
+			buffer.append(" with "); //$NON-NLS-1$
+			buffer.append(this.with);
+			buffer.append(';');
+			return buffer.toString();
+		}
+	}
+	private static PackageExportImpl createPackageExport(ExportsStatement[] refs, int i) {
+		ExportsStatement ref = refs[i];
+		PackageExportImpl exp = new PackageExportImpl();
+		exp.pack = ref.pkgName;
+		ModuleReference[] imp = ref.targets;
+		if (imp != null) {
+			exp.exportedTo = new char[imp.length][];
+			for(int j = 0; j < imp.length; j++) {
+				exp.exportedTo = imp[j].tokens;
+			}
+		}
+		return exp;
+	}
+	private static Service createService(TypeReference service, TypeReference[] with) {
+		Service ser = new Service();
+		ser.provides = CharOperation.concatWith(service.getTypeName(), '.');
+		ser.with = new char[with.length][];
+		for (int i = 0; i < with.length; i++) {
+			ser.with[i] = CharOperation.concatWith(with[i].getTypeName(), '.');
+		}
+		return ser;
+	}
+	private static PackageExportImpl createPackageOpen(OpensStatement ref) {
+		PackageExportImpl exp = new PackageExportImpl();
+		exp.pack = ref.pkgName;
+		ModuleReference[] imp = ref.targets;
+		if (imp != null) {
+			exp.exportedTo = new char[imp.length][];
+			for(int j = 0; j < imp.length; j++) {
+				exp.exportedTo = imp[j].tokens;
+			}
+		}
+		return exp;
+	}
+
+	boolean isAutomodule;
+	private boolean isOpen = false;
+	char[] name;
+	IModule.IModuleReference[] requires;
+	IModule.IPackageExport[] exports;
+	char[][] uses;
+	Service[] provides;
+	IModule.IPackageExport[] opens;
+	private ICompilationUnit compilationUnit;
+	
+	public BasicModule(ModuleDeclaration descriptor, IModulePathEntry root) {
+		this.compilationUnit = descriptor.compilationResult().compilationUnit;
+		this.name = descriptor.moduleName;
+		if (descriptor.requiresCount > 0) {
+			RequiresStatement[] refs = descriptor.requires;
+			this.requires = new ModuleReferenceImpl[refs.length];
+			for (int i = 0; i < refs.length; i++) {
+				ModuleReferenceImpl ref = new ModuleReferenceImpl();
+				ref.name = CharOperation.concatWith(refs[i].module.tokens, '.');
+				ref.modifiers = refs[i].modifiers;
+				this.requires[i] = ref;
+			}
+		} else {
+			this.requires = new ModuleReferenceImpl[0];
+		}
+		if (descriptor.exportsCount > 0) {
+			ExportsStatement[] refs = descriptor.exports;
+			this.exports = new PackageExportImpl[refs.length];
+			for (int i = 0; i < refs.length; i++) {
+				PackageExportImpl exp = createPackageExport(refs, i);
+				this.exports[i] = exp;
+			}
+		} else {
+			this.exports = new PackageExportImpl[0];
+		}
+		if (descriptor.usesCount > 0) {
+			UsesStatement[] u = descriptor.uses;
+			this.uses = new char[u.length][];
+			for(int i = 0; i < u.length; i++) {
+				this.uses[i] = CharOperation.concatWith(u[i].serviceInterface.getTypeName(), '.');
+			}
+		}
+		if (descriptor.servicesCount > 0) {
+			ProvidesStatement[] services = descriptor.services;
+			this.provides = new Service[descriptor.servicesCount];
+			for (int i = 0; i < descriptor.servicesCount; i++) {
+				this.provides[i] = createService(services[i].serviceInterface, services[i].implementations);
+			}
+		}
+		if (descriptor.opensCount > 0) {
+			OpensStatement[] refs = descriptor.opens;
+			this.opens = new PackageExportImpl[refs.length];
+			for (int i = 0; i < refs.length; i++) {
+				PackageExportImpl exp = createPackageOpen(refs[i]);
+				this.opens[i] = exp;
+			}
+		} else {
+			this.opens = new PackageExportImpl[0];
+		}
+		this.isAutomodule = false; // Just to be explicit
+		this.isOpen = descriptor.isOpen();
+	}
+	@Override
+	public ICompilationUnit getCompilationUnit() {
+		return this.compilationUnit;
+	}
+	@Override
+	public char[] name() {
+		return this.name;
+	}
+	@Override
+	public IModule.IModuleReference[] requires() {
+		return this.requires;
+	}
+	@Override
+	public IModule.IPackageExport[] exports() {
+		return this.exports;
+	}
+	@Override
+	public char[][] uses() {
+		return this.uses;
+	}
+	@Override
+	public IService[] provides() {
+		return this.provides;
+	}
+	@Override
+	public IModule.IPackageExport[] opens() {
+		return this.opens;
+	}
+	@Override
+	public boolean isAutomatic() {
+		return this.isAutomodule;
+	}
+	@Override
+	public boolean isOpen() {
+		return this.isOpen;
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (this == o)
+			return true;
+		if (!(o instanceof IModule))
+			return false;
+		IModule mod = (IModule) o;
+		if (!CharOperation.equals(this.name, mod.name()))
+			return false;
+		return Arrays.equals(this.requires, mod.requires());
+	}
+	@Override
+	public int hashCode() {
+		int result = 17;
+		int c = CharOperation.hashCode(this.name);
+		result = 31 * result + c;
+		c =  Arrays.hashCode(this.requires);
+		result = 31 * result + c;
+		return result;
+	}
+	@Override
+	public String toString() {
+		StringBuffer buffer = new StringBuffer(getClass().getName());
+		toStringContent(buffer);
+		return buffer.toString();
+	}
+	protected void toStringContent(StringBuffer buffer) {
+		buffer.append("\nmodule "); //$NON-NLS-1$
+		buffer.append(this.name).append(' ');
+		buffer.append('{').append('\n');
+		if (this.requires != null) {
+			for(int i = 0; i < this.requires.length; i++) {
+				buffer.append("\trequires "); //$NON-NLS-1$
+				if (this.requires[i].isTransitive()) {
+					buffer.append(" public "); //$NON-NLS-1$
+				}
+				buffer.append(this.requires[i].name());
+				buffer.append(';').append('\n');
+			}
+		}
+		if (this.exports != null) {
+			buffer.append('\n');
+			for(int i = 0; i < this.exports.length; i++) {
+				buffer.append("\texports "); //$NON-NLS-1$
+				buffer.append(this.exports[i].toString());
+			}
+		}
+		if (this.uses != null) {
+			buffer.append('\n');
+			for (char[] cs : this.uses) {
+				buffer.append(cs);
+				buffer.append(';').append('\n');
+			}
+		}
+		if (this.provides != null) {
+			buffer.append('\n');
+			for(Service ser : this.provides) {
+				buffer.append(ser.toString());
+			}
+		}
+		buffer.append('\n').append('}').toString();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.java
index 320c02d..0d448de 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathDirectory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
@@ -38,6 +39,9 @@
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Stream;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ClasspathDirectory extends ClasspathLocation {
@@ -105,30 +109,27 @@
 			return true;
 	return false;
 }
+@Override
 public List fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
 	return null;
 }
-public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName) {
-	return findClass(typeName, qualifiedPackageName, qualifiedBinaryFileName, false);
-}
-public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
-	if (!isPackage(qualifiedPackageName)) return null; // most common case
-
+private NameEnvironmentAnswer findClassInternal(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+	if (!isPackage(qualifiedPackageName, null)) return null; // most common case TODO(SHMOD): use module name from this.module?
 	String fileName = new String(typeName);
 	boolean binaryExists = ((this.mode & BINARY) != 0) && doesFileExist(fileName + SUFFIX_STRING_class, qualifiedPackageName);
 	boolean sourceExists = ((this.mode & SOURCE) != 0) && doesFileExist(fileName + SUFFIX_STRING_java, qualifiedPackageName);
 	if (sourceExists && !asBinaryOnly) {
 		String fullSourcePath = this.path + qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6)  + SUFFIX_STRING_java;
+		CompilationUnit unit = new CompilationUnit(null, fullSourcePath, this.encoding, this.destinationPath);
+		unit.module = this.module == null ? null : this.module.name();
 		if (!binaryExists)
-			return new NameEnvironmentAnswer(new CompilationUnit(null,
-					fullSourcePath, this.encoding, this.destinationPath),
+			return new NameEnvironmentAnswer(unit,
 					fetchAccessRestriction(qualifiedBinaryFileName));
 		String fullBinaryPath = this.path + qualifiedBinaryFileName;
 		long binaryModified = new File(fullBinaryPath).lastModified();
 		long sourceModified = new File(fullSourcePath).lastModified();
 		if (sourceModified > binaryModified)
-			return new NameEnvironmentAnswer(new CompilationUnit(null,
-					fullSourcePath, this.encoding, this.destinationPath),
+			return new NameEnvironmentAnswer(unit,
 					fetchAccessRestriction(qualifiedBinaryFileName));
 	}
 	if (binaryExists) {
@@ -141,10 +142,13 @@
 			if (!CharOperation.equals(reader.getName(), typeSearched.toCharArray())) {
 				reader = null;
 			}
-			if (reader != null)
+			if (reader != null) {
+				char[] modName = reader.moduleName != null ? reader.moduleName : this.module != null ? this.module.name() : null;
 				return new NameEnvironmentAnswer(
 						reader,
-						fetchAccessRestriction(qualifiedBinaryFileName));
+						fetchAccessRestriction(qualifiedBinaryFileName),
+						modName);
+			}
 		} catch (IOException e) {
 			// treat as if file is missing
 		} catch (ClassFormatException e) {
@@ -155,12 +159,13 @@
 }
 public NameEnvironmentAnswer findSecondaryInClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName) {
 	//"package-info" is a reserved class name and can never be a secondary type (it is much faster to stop the search here).
-	if(TypeConstants.PACKAGE_INFO_NAME.equals(typeName)) {
+	if(CharOperation.equals(TypeConstants.PACKAGE_INFO_NAME, typeName)) {
 		return null;
 	}
 
 	String typeNameString = new String(typeName);
-	boolean prereqs = this.options != null && isPackage(qualifiedPackageName) && ((this.mode & SOURCE) != 0) && doesFileExist(typeNameString + SUFFIX_STRING_java, qualifiedPackageName);
+	String moduleName = this.module != null ? String.valueOf(this.module.name()) : null; // TODO(SHMOD): test for ModuleBinding.ANY & UNNAMED
+	boolean prereqs = this.options != null && isPackage(qualifiedPackageName, moduleName) && ((this.mode & SOURCE) != 0) && doesFileExist(typeNameString + SUFFIX_STRING_java, qualifiedPackageName);
 	return prereqs ? null : findSourceSecondaryType(typeNameString, qualifiedPackageName, qualifiedBinaryFileName); /* only secondary types */
 }
 
@@ -173,12 +178,22 @@
 	}
 	return false;
 }
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false);
+}
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+	if (File.separatorChar == '/')
+      return findClassInternal(typeName, qualifiedPackageName, qualifiedBinaryFileName, asBinaryOnly);
 
-
+	return findClassInternal(typeName, qualifiedPackageName.replace('/', File.separatorChar),
+				qualifiedBinaryFileName.replace('/', File.separatorChar), asBinaryOnly);
+}
 /**
  *  Add all the secondary types in the package
  */
-private Hashtable<String, String> getPackageTypes(String qualifiedPackageName) {
+private Hashtable<String, String> getSecondaryTypes(String qualifiedPackageName) {
 	Hashtable<String, String> packageEntry = new Hashtable<>();
 
 	String[] dirList = (String[]) this.directoryCache.get(qualifiedPackageName);
@@ -197,7 +212,7 @@
 		if (s == null) continue;
 		if (!(s.endsWith(SUFFIX_STRING_java) || s.endsWith(SUFFIX_STRING_JAVA))) continue;
 		CompilationUnit cu = new CompilationUnit(null, s, this.encoding, this.destinationPath);
-		CompilationResult compilationResult = new CompilationResult(cu.getContents(), 1, 1, 10);
+		CompilationResult compilationResult = new CompilationResult(s.toCharArray(), 1, 1, 10);
 		ProblemReporter problemReporter = 
 				new ProblemReporter(
 					DefaultErrorHandlingPolicies.proceedWithAllProblems(),
@@ -223,7 +238,7 @@
 	if (this.packageSecondaryTypes == null) this.packageSecondaryTypes = new Hashtable<>();
 	Hashtable<String, String> packageEntry = this.packageSecondaryTypes.get(qualifiedPackageName);
 	if (packageEntry == null) {
-		packageEntry = 	getPackageTypes(qualifiedPackageName);
+		packageEntry = 	getSecondaryTypes(qualifiedPackageName);
 		this.packageSecondaryTypes.put(qualifiedPackageName, packageEntry);
 	}
 	String fileName = packageEntry.get(typeName);
@@ -233,8 +248,9 @@
 }
 
 
-public char[][][] findTypeNames(String qualifiedPackageName) {
-	if (!isPackage(qualifiedPackageName)) {
+@Override
+public char[][][] findTypeNames(String qualifiedPackageName, String moduleName) {
+	if (!isPackage(qualifiedPackageName, moduleName)) {
 		return null; // most common case
 	}
 	File dir = new File(this.path + qualifiedPackageName);
@@ -242,6 +258,7 @@
 		return null;
 	}
 	String[] listFiles = dir.list(new FilenameFilter() {
+		@Override
 		public boolean accept(File directory1, String name) {
 			String fileName = name.toLowerCase();
 			return fileName.endsWith(".class") || fileName.endsWith(".java"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -251,27 +268,74 @@
 	if (listFiles == null || (length = listFiles.length) == 0) {
 		return null;
 	}
-	char[][][] result = new char[length][][];
+	Set<String> secondary = getSecondaryTypes(qualifiedPackageName).keySet();
+	char[][][] result = new char[length + secondary.size()][][];
 	char[][] packageName = CharOperation.splitOn(File.separatorChar, qualifiedPackageName.toCharArray());
 	for (int i = 0; i < length; i++) {
 		String fileName = listFiles[i];
 		int indexOfLastDot = fileName.indexOf('.');
-		result[i] = CharOperation.arrayConcat(packageName, fileName.substring(0, indexOfLastDot).toCharArray());
+		String typeName = indexOfLastDot > 0 ? fileName.substring(0, indexOfLastDot) : fileName;
+		result[i] = CharOperation.arrayConcat(packageName, typeName.toCharArray());
+	}
+	if (secondary.size() > 0) {
+		int idx = length;
+		for (String type : secondary) {
+			result[idx++] = CharOperation.arrayConcat(packageName, type.toCharArray());
+		}
 	}
 	return result;
 }
+@Override
 public void initialize() throws IOException {
 	// nothing to do
 }
-public boolean isPackage(String qualifiedPackageName) {
-	return directoryList(qualifiedPackageName) != null;
+@Override
+public char[][] getModulesDeclaringPackage(String qualifiedPackageName, /*@Nullable*/String moduleName) {
+	String qp2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
+	return singletonModuleNameIf(directoryList(qp2) != null);
 }
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	String qp2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
+	String[] dirList = directoryList(qp2);
+	if (dirList != null) {
+		for (String entry : dirList) {
+			String entryLC = entry.toLowerCase();
+			if (entryLC.endsWith(SUFFIX_STRING_java) || entryLC.endsWith(SUFFIX_STRING_class))
+				return true;
+		}
+	}
+	return false;
+}
+@Override
+public boolean hasCUDeclaringPackage(String qualifiedPackageName, Function<CompilationUnit, String> pkgNameExtractor) {
+	String qp2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
+	return Stream.of(directoryList(qp2)).anyMatch(entry -> {
+		String entryLC = entry.toLowerCase();
+		boolean hasDeclaration = false;
+		String fullPath = this.path + qp2 + "/" + entry; //$NON-NLS-1$
+		String pkgName = null;
+		if (entryLC.endsWith(SUFFIX_STRING_class)) {
+			return true;
+		} else if (entryLC.endsWith(SUFFIX_STRING_java)) {
+			CompilationUnit cu = new CompilationUnit(null, fullPath, this.encoding);
+			pkgName = pkgNameExtractor.apply(cu);
+		}
+		if (pkgName != null && pkgName.equals(qp2.replace(File.separatorChar, '.')))
+			hasDeclaration = true;
+		return hasDeclaration;
+	});
+}
+@Override
 public void reset() {
+	super.reset();
 	this.directoryCache = new Hashtable(11);
 }
+@Override
 public String toString() {
 	return "ClasspathDirectory " + this.path; //$NON-NLS-1$
 }
+@Override
 public char[] normalizedPath() {
 	if (this.normalizedPath == null) {
 		this.normalizedPath = this.path.toCharArray();
@@ -281,10 +345,19 @@
 	}
 	return this.normalizedPath;
 }
+@Override
 public String getPath() {
 	return this.path;
 }
+@Override
 public int getMode() {
 	return this.mode;
 }
+@Override
+public IModule getModule() {
+	if (this.isAutoModule && this.module == null) {
+		return this.module = IModule.createAutomatic(this.path, false, null/*no manifest*/);
+	}
+	return this.module;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java
index ccf88c2..379a7b0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJar.java
@@ -1,6 +1,6 @@
-// ASPECTJ
+// AspectJ Extension
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,20 +22,25 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
+import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.ManifestAnalyzer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
@@ -70,10 +75,9 @@
 protected ZipFile zipFile;
 protected ZipFile annotationZipFile;
 protected boolean closeZipFileAtEnd;
-protected Hashtable packageCache;
+protected Set<String> packageCache;
 protected List<String> annotationPaths;
 
-
 // AspectJ Extension	
 static {
 	String openarchivesString = getSystemPropertyWithoutSecurityException("org.aspectj.weaver.openarchives",Integer.toString(MAXOPEN_DEFAULT));
@@ -89,14 +93,15 @@
 	this.closeZipFileAtEnd = closeZipFileAtEnd;
 }
 
-public List fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
+@Override
+public List<Classpath> fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
 	// expected to be called once only - if multiple calls desired, consider
 	// using a cache
 	InputStream inputStream = null;
 	try {
 		initialize();
-		ArrayList result = new ArrayList();
-		ZipEntry manifest = this.zipFile.getEntry("META-INF/MANIFEST.MF"); //$NON-NLS-1$
+		ArrayList<Classpath> result = new ArrayList<>();
+		ZipEntry manifest = this.zipFile.getEntry(TypeConstants.META_INF_MANIFEST_MF);
 		if (manifest != null) { // non-null implies regular file
 			inputStream = this.zipFile.getInputStream(manifest);
 			ManifestAnalyzer analyzer = new ManifestAnalyzer();
@@ -120,7 +125,9 @@
 			}
 		}
 		return result;
-	} catch (IOException e) {
+	} catch (IOException | IllegalArgumentException e) {
+		// JRE 9 could throw an IAE if the path is incorrect. We are to ignore such
+		// linked jars
 		return null;
 	} finally {
 		if (inputStream != null) {
@@ -132,17 +139,28 @@
 		}
 	}
 }
-public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName) {
-	return findClass(typeName, qualifiedPackageName, qualifiedBinaryFileName, false);
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false);
 }
-public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
-	if (!isPackage(qualifiedPackageName))
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+	if (!isPackage(qualifiedPackageName, moduleName))
 		return null; // most common case
 
 	try {
 	    ensureOpen(); // AspectJ Extension 
 		IBinaryType reader = ClassFileReader.read(this.zipFile, qualifiedBinaryFileName);
 		if (reader != null) {
+			char[] modName = this.module == null ? null : this.module.name();
+			if (reader instanceof ClassFileReader) {
+				ClassFileReader classReader = (ClassFileReader) reader;
+				if (classReader.moduleName == null)
+					classReader.moduleName = modName;
+				else
+					modName = classReader.moduleName;
+			}
+			searchPaths:
 			if (this.annotationPaths != null) {
 				String qualifiedClassName = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length()-SuffixConstants.EXTENSION_CLASS.length()-1);
 				for (String annotationPath : this.annotationPaths) {
@@ -153,14 +171,16 @@
 						reader = ExternalAnnotationDecorator.create(reader, annotationPath, qualifiedClassName, this.annotationZipFile);
 
 						if (reader.getExternalAnnotationStatus() == ExternalAnnotationStatus.TYPE_IS_ANNOTATED) {
-							break;
+							break searchPaths;
 						}
 					} catch (IOException e) {
 						// don't let error on annotations fail class reading
 					}
 				}
+				// location is configured for external annotations, but no .eea found, decorate in order to answer NO_EEA_FILE:
+				reader = new ExternalAnnotationDecorator(reader, null);
 			}
-			return new NameEnvironmentAnswer(reader, fetchAccessRestriction(qualifiedBinaryFileName));
+			return new NameEnvironmentAnswer(reader, fetchAccessRestriction(qualifiedBinaryFileName), modName);
 		}
 	} catch(ClassFormatException e) {
 		// treat as if class file is missing
@@ -173,9 +193,12 @@
 public boolean hasAnnotationFileFor(String qualifiedTypeName) {
 	return this.zipFile.getEntry(qualifiedTypeName+ExternalAnnotationProvider.ANNOTATION_FILE_SUFFIX) != null; 
 }
-public char[][][] findTypeNames(String qualifiedPackageName) {
-	if (!isPackage(qualifiedPackageName))
+@Override
+public char[][][] findTypeNames(final String qualifiedPackageName, String moduleName) {
+	if (!isPackage(qualifiedPackageName, moduleName))
 		return null; // most common case
+	final char[] packageArray = qualifiedPackageName.toCharArray();
+	final ArrayList answers = new ArrayList();
 
 	// AspectJ Extension
 	try {
@@ -187,21 +210,20 @@
 		return null;
 	}
 	// End AspectJ Extension
-	ArrayList answers = new ArrayList();
-	nextEntry : for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
-		String fileName = ((ZipEntry) e.nextElement()).getName();
+	
+		nextEntry : for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
+			String fileName = ((ZipEntry) e.nextElement()).getName();
 
-		// add the package name & all of its parent packages
-		int last = fileName.lastIndexOf('/');
-		while (last > 0) {
-			// extract the package name
-			String packageName = fileName.substring(0, last);
-			if (!qualifiedPackageName.equals(packageName))
-				continue nextEntry;
+			// add the package name & all of its parent packages
+			int last = fileName.lastIndexOf('/');
+			if (last > 0) {
+				// extract the package name
+				String packageName = fileName.substring(0, last);
+				if (!qualifiedPackageName.equals(packageName))
+					continue nextEntry;
 			int indexOfDot = fileName.lastIndexOf('.');
 			if (indexOfDot != -1) {
 				String typeName = fileName.substring(last + 1, indexOfDot);
-				char[] packageArray = packageName.toCharArray();
 				answers.add(
 					CharOperation.arrayConcat(
 						CharOperation.splitOn('/', packageArray),
@@ -213,21 +235,50 @@
 	if (size != 0) {
 		char[][][] result = new char[size][][];
 		answers.toArray(result);
-		return null;
+		return result;
 	}
 	return null;
 }
+
+@Override
 public void initialize() throws IOException {
 	if (this.zipFile == null) {
 		this.zipFile = new ZipFile(this.file);
 	}
 }
-public boolean isPackage(String qualifiedPackageName) {
+void acceptModule(ClassFileReader reader) {
+	if (reader != null) {
+		acceptModule(reader.getModuleDeclaration());
+	}
+}
+void acceptModule(byte[] content) {
+	if (content == null) 
+		return;
+	ClassFileReader reader = null;
+	try {
+		reader = new ClassFileReader(content, IModule.MODULE_INFO_CLASS.toCharArray());
+	} catch (ClassFormatException e) {
+		e.printStackTrace();
+	}
+	if (reader != null && reader.getModuleDeclaration() != null) {
+		acceptModule(reader);
+	}
+}
+protected void addToPackageCache(String fileName, boolean endsWithSep) {
+	int last = endsWithSep ? fileName.length() : fileName.lastIndexOf('/');
+	while (last > 0) {
+		// extract the package name
+		String packageName = fileName.substring(0, last);
+		if (this.packageCache.contains(packageName))
+			return;
+		this.packageCache.add(packageName);
+		last = packageName.lastIndexOf('/');
+	}
+}
+@Override
+public synchronized char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
 	if (this.packageCache != null)
-		return this.packageCache.containsKey(qualifiedPackageName);
-
-	this.packageCache = new Hashtable(41);
-	this.packageCache.put(Util.EMPTY_STRING, Util.EMPTY_STRING);
+		return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
 
 	// AspectJ Extension
 	try {
@@ -236,40 +287,50 @@
 		// Doesn't normally occur - probably means since starting the compile 
 		// you have removed one of the jars.
 		ioe.printStackTrace();
-		return false;
+		return singletonModuleNameIf(false);
 	}
 	// End AspectJ Extension
-	nextEntry : for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
+	this.packageCache = new HashSet<>(41);
+	this.packageCache.add(Util.EMPTY_STRING);
+	
+	for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
 		String fileName = ((ZipEntry) e.nextElement()).getName();
-
-		// add the package name & all of its parent packages
-		int last = fileName.lastIndexOf('/');
-		while (last > 0) {
-			// extract the package name
-			String packageName = fileName.substring(0, last);
-			if (this.packageCache.containsKey(packageName))
-				continue nextEntry;
-			this.packageCache.put(packageName, packageName);
-			last = packageName.lastIndexOf('/');
-		}
+		addToPackageCache(fileName, false);
 	}
-	return this.packageCache.containsKey(qualifiedPackageName);
+	return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
 }
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	qualifiedPackageName += '/';
+	for (Enumeration<? extends ZipEntry> e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		String fileName = e.nextElement().getName();
+		if (fileName.startsWith(qualifiedPackageName) && fileName.length() > qualifiedPackageName.length()) {
+			String tail = fileName.substring(qualifiedPackageName.length());
+			if (tail.indexOf('/') != -1)
+				continue;
+			if (tail.toLowerCase().endsWith(SUFFIX_STRING_class))
+				return true;
+		}
+	}	
+	return false;
+}
+@Override
 public void reset() {
+	super.reset();
 	if (this.closeZipFileAtEnd) {
 		if (this.zipFile != null) {
 		// AspectJ Extension
-		/*old code:{
-			try {
-				this.zipFile.close();
-			} catch(IOException e) {
-				// ignore
-			}
-			this.zipFile = null;
-		*/// new code:
+		// old code:
+		//try { 
+		//	this.zipFile.close(); // AspectJ Extension - dont do this
+		//} catch(IOException e) {
+		//	// ignore
+		//}
+		//this.zipFile = null;
+		// new code:
 		close();
-		// End AspectJ Extension
 		}
+		// End AspectJ Extension
 		if (this.annotationZipFile != null) {
 			try {
 				this.annotationZipFile.close();
@@ -280,10 +341,13 @@
 		}
 	}
 	this.packageCache = null;
+	this.annotationPaths = null;
 }
+@Override
 public String toString() {
 	return "Classpath for jar file " + this.file.getPath(); //$NON-NLS-1$
 }
+@Override
 public char[] normalizedPath() {
 	if (this.normalizedPath == null) {
 		String path2 = this.getPath();
@@ -295,6 +359,7 @@
 	}
 	return this.normalizedPath;
 }
+@Override
 public String getPath() {
 	if (this.path == null) {
 		try {
@@ -306,10 +371,27 @@
 	}
 	return this.path;
 }
+@Override
 public int getMode() {
 	return BINARY;
 }
 
+@Override
+public IModule getModule() {
+	if (this.isAutoModule && this.module == null) {
+		Manifest manifest = null;
+		try {
+			initialize();
+			ZipEntry entry = this.zipFile.getEntry(TypeConstants.META_INF_MANIFEST_MF);
+			if (entry != null)
+				manifest = new Manifest(this.zipFile.getInputStream(entry));
+		} catch (IOException e) {
+			// no usable manifest 
+		}
+		return this.module = IModule.createAutomatic(this.file.getName(), true, manifest);
+	}
+	return this.module;
+}
 // AspectJ Extension
 private void ensureOpen() throws IOException {
 	if (zipFile != null) return; // If its not null, the zip is already open
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java
new file mode 100644
index 0000000..6edd12c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJep247.java
@@ -0,0 +1,231 @@
+package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileSystemNotFoundException;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.FileVisitor;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+
+public class ClasspathJep247 extends ClasspathLocation {
+
+	private java.nio.file.FileSystem fs = null;
+	private String compliance = null;
+	private String releaseInHex = null;
+	private String[] subReleases = null;
+	private Path releasePath = null;
+	private File file = null;
+	private Set<String> packageCache;
+
+	public ClasspathJep247(File jdkHome, String release, AccessRuleSet accessRuleSet) {
+		super(accessRuleSet, null);
+		this.compliance = release;
+		this.file = jdkHome;
+	}
+	@Override
+	public List<Classpath> fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
+		 return null;
+	}
+	@Override
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+		return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false);
+	}
+	@Override
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+		if (!isPackage(qualifiedPackageName, moduleName))
+			return null; // most common case
+
+		try {
+			//TODO: Check if any conversion needed for path separator
+			ClassFileReader reader = null;
+			byte[] content = null;
+			qualifiedBinaryFileName = qualifiedBinaryFileName.replace(".class", ".sig"); //$NON-NLS-1$ //$NON-NLS-2$
+			if (this.subReleases != null && this.subReleases.length > 0) {
+				for (String rel : this.subReleases) {
+					Path p = this.fs.getPath(rel, qualifiedBinaryFileName);
+					if (Files.exists(p)) {
+						content = JRTUtil.safeReadBytes(p);
+						if (content != null)
+							break;
+					}
+				}
+			} else {
+				content = JRTUtil.safeReadBytes(this.fs.getPath(this.releaseInHex, qualifiedBinaryFileName));
+			}
+			if (content != null) {
+				reader = new ClassFileReader(content, qualifiedBinaryFileName.toCharArray());
+				return new NameEnvironmentAnswer(reader, fetchAccessRestriction(qualifiedBinaryFileName), null);
+			}
+		} catch(ClassFormatException e) {
+			// Continue
+		} catch (IOException e) {
+			// continue
+		}
+		return null;
+	}
+	@Override
+	public boolean hasAnnotationFileFor(String qualifiedTypeName) {
+		return false;
+	}
+	@Override
+	public char[][][] findTypeNames(final String qualifiedPackageName, String moduleName) {
+		// TODO: Revisit
+		return null;
+	}
+
+	@Override
+	public void initialize() throws IOException {
+		if (this.compliance == null) {
+			return;
+		}
+		this.releaseInHex = Integer.toHexString(Integer.parseInt(this.compliance));
+		Path filePath = this.file.toPath().resolve("lib").resolve("ct.sym"); //$NON-NLS-1$ //$NON-NLS-2$
+		URI t = filePath.toUri();
+		if (!Files.exists(filePath)) {
+			return;
+		}
+		URI uri = URI.create("jar:file:" + t.getRawPath()); //$NON-NLS-1$
+		try {
+			this.fs = FileSystems.getFileSystem(uri);
+		} catch(FileSystemNotFoundException fne) {
+			// Ignore and move on
+		}
+		if (this.fs == null) {
+			HashMap<String, ?> env = new HashMap<>();
+			this.fs = FileSystems.newFileSystem(uri, env);
+		}
+		this.releasePath = this.fs.getPath("/"); //$NON-NLS-1$
+		if (!Files.exists(this.fs.getPath(this.releaseInHex))) {
+			throw new IllegalArgumentException("release " + this.compliance + " is not found in the system");  //$NON-NLS-1$//$NON-NLS-2$
+		}
+	}
+	void acceptModule(ClassFileReader reader) {
+		// Nothing to do
+	}
+	protected void addToPackageCache(String packageName, boolean endsWithSep) {
+		if (this.packageCache.contains(packageName))
+			return;
+		this.packageCache.add(packageName);
+	}
+	@Override
+	public synchronized char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		// Ignore moduleName as this has nothing to do with modules (as of now)
+		if (this.packageCache != null)
+			return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
+
+		this.packageCache = new HashSet<>(41);
+		this.packageCache.add(Util.EMPTY_STRING);
+		List<String> sub = new ArrayList<>();
+		try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
+			for (final java.nio.file.Path subdir: stream) {
+				String rel = subdir.getFileName().toString();
+				if (rel.contains(this.releaseInHex)) {
+					sub.add(rel);
+				} else {
+					continue;
+				}
+				Files.walkFileTree(subdir, new FileVisitor<java.nio.file.Path>() {
+					@Override
+					public FileVisitResult preVisitDirectory(java.nio.file.Path dir, BasicFileAttributes attrs) throws IOException {
+						if (dir.getNameCount() <= 1)
+							return FileVisitResult.CONTINUE;
+						Path relative = dir.subpath(1, dir.getNameCount());
+						addToPackageCache(relative.toString(), false);
+						return FileVisitResult.CONTINUE;
+					}
+
+					@Override
+					public FileVisitResult visitFile(java.nio.file.Path f, BasicFileAttributes attrs) throws IOException {
+						return FileVisitResult.CONTINUE;
+					}
+
+					@Override
+					public FileVisitResult visitFileFailed(java.nio.file.Path f, IOException exc) throws IOException {
+						return FileVisitResult.CONTINUE;
+					}
+
+					@Override
+					public FileVisitResult postVisitDirectory(java.nio.file.Path dir, IOException exc) throws IOException {
+						return FileVisitResult.CONTINUE;
+					}
+				});
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+			// Rethrow
+		}
+		this.subReleases = sub.toArray(new String[sub.size()]);
+		return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
+	}
+	@Override
+	public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+		// TOOD: Revisit
+		return false;
+	}
+	@Override
+	public void reset() {
+		try {
+			super.reset();
+			this.fs.close();
+		} catch (IOException e) {
+			// Move on
+		}
+	}
+	@Override
+	public String toString() {
+		return "Classpath for JEP 247 for JDK " + this.file.getPath(); //$NON-NLS-1$
+	}
+	@Override
+	public char[] normalizedPath() {
+		if (this.normalizedPath == null) {
+			String path2 = this.getPath();
+			char[] rawName = path2.toCharArray();
+			if (File.separatorChar == '\\') {
+				CharOperation.replace(rawName, '\\', '/');
+			}
+			this.normalizedPath = CharOperation.subarray(rawName, 0, CharOperation.lastIndexOf('.', rawName));
+		}
+		return this.normalizedPath;
+	}
+	@Override
+	public String getPath() {
+		if (this.path == null) {
+			try {
+				this.path = this.file.getCanonicalPath();
+			} catch (IOException e) {
+				// in case of error, simply return the absolute path
+				this.path = this.file.getAbsolutePath();
+			}
+		}
+		return this.path;
+	}
+	@Override
+	public int getMode() {
+		return BINARY;
+	}
+
+	@Override
+	public IModule getModule() {
+		return null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.java
new file mode 100644
index 0000000..15030b8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJmod.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.zip.ZipEntry;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+
+public class ClasspathJmod extends ClasspathJar {
+
+	public static char[] CLASSES = "classes".toCharArray(); //$NON-NLS-1$
+	public static char[] CLASSES_FOLDER = "classes/".toCharArray(); //$NON-NLS-1$
+	
+public ClasspathJmod(File file, boolean closeZipFileAtEnd,
+		AccessRuleSet accessRuleSet, String destinationPath) {
+	super(file, closeZipFileAtEnd, accessRuleSet, destinationPath);
+}
+
+@Override
+public List<Classpath> fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
+	// don't do anything
+	return null;
+}
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+	if (!isPackage(qualifiedPackageName, moduleName))
+		return null; // most common case
+
+	try {
+		qualifiedBinaryFileName = new String(CharOperation.append(CLASSES_FOLDER, qualifiedBinaryFileName.toCharArray()));
+		IBinaryType reader = ClassFileReader.read(this.zipFile, qualifiedBinaryFileName);
+		if (reader != null) {
+			char[] modName = this.module == null ? null : this.module.name();
+			if (reader instanceof ClassFileReader) {
+				ClassFileReader classReader = (ClassFileReader) reader;
+				if (classReader.moduleName == null)
+					classReader.moduleName = modName;
+				else
+					modName = classReader.moduleName;
+			}
+			searchPaths:
+			if (this.annotationPaths != null) {
+				String qualifiedClassName = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length()-SuffixConstants.EXTENSION_CLASS.length()-1);
+				for (String annotationPath : this.annotationPaths) {
+					try {
+						if (this.annotationZipFile == null) {
+							this.annotationZipFile = ExternalAnnotationDecorator.getAnnotationZipFile(annotationPath, null);
+						}
+						reader = ExternalAnnotationDecorator.create(reader, annotationPath, qualifiedClassName, this.annotationZipFile);
+
+						if (reader.getExternalAnnotationStatus() == ExternalAnnotationStatus.TYPE_IS_ANNOTATED) {
+							break searchPaths;
+						}
+					} catch (IOException e) {
+						// don't let error on annotations fail class reading
+					}
+				}
+				// location is configured for external annotations, but no .eea found, decorate in order to answer NO_EEA_FILE:
+				reader = new ExternalAnnotationDecorator(reader, null);
+			}
+			return new NameEnvironmentAnswer(reader, fetchAccessRestriction(qualifiedBinaryFileName), modName);
+		}
+	} catch(ClassFormatException e) {
+		// treat as if class file is missing
+	} catch (IOException e) {
+		// treat as if class file is missing
+	}
+	return null;
+}
+@Override
+public boolean hasAnnotationFileFor(String qualifiedTypeName) {
+	qualifiedTypeName = new String(CharOperation.append(CLASSES_FOLDER, qualifiedTypeName.toCharArray()));
+	return this.zipFile.getEntry(qualifiedTypeName+ExternalAnnotationProvider.ANNOTATION_FILE_SUFFIX) != null; 
+}
+@SuppressWarnings({ "rawtypes", "unchecked" })
+@Override
+public char[][][] findTypeNames(final String qualifiedPackageName, String moduleName) {
+	if (!isPackage(qualifiedPackageName, moduleName))
+		return null; // most common case
+	final char[] packageArray = qualifiedPackageName.toCharArray();
+	final ArrayList answers = new ArrayList();
+	nextEntry : for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		String fileName = ((ZipEntry) e.nextElement()).getName();
+
+		// add the package name & all of its parent packages
+		int first = CharOperation.indexOf(CLASSES_FOLDER, fileName.toCharArray(), false);
+		int last = fileName.lastIndexOf('/');
+		if (last > 0) {
+			// extract the package name
+			String packageName = fileName.substring(first + 1, last);
+			if (!qualifiedPackageName.equals(packageName))
+				continue nextEntry;
+			int indexOfDot = fileName.lastIndexOf('.');
+			if (indexOfDot != -1) {
+				String typeName = fileName.substring(last + 1, indexOfDot);
+				answers.add(
+					CharOperation.arrayConcat(
+						CharOperation.splitOn('/', packageArray),
+						typeName.toCharArray()));
+			}
+		}
+	}
+	int size = answers.size();
+	if (size != 0) {
+		char[][][] result = new char[size][][];
+		answers.toArray(result);
+		return result;
+	}
+	return null;
+}
+@Override
+public synchronized char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+	if (this.packageCache != null)
+		return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
+
+	this.packageCache = new HashSet<>(41);
+	this.packageCache.add(Util.EMPTY_STRING);
+	
+	for (Enumeration<? extends ZipEntry> e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		char[] entryName = e.nextElement().getName().toCharArray();
+		int index = CharOperation.indexOf('/', entryName);
+		if (index != -1) {
+			char[] folder = CharOperation.subarray(entryName, 0, index);
+			if (CharOperation.equals(CLASSES, folder)) {
+				char[] fileName = CharOperation.subarray(entryName, index + 1, entryName.length);
+				addToPackageCache(new String(fileName), false);
+			}
+		}
+	}
+	return singletonModuleNameIf(this.packageCache.contains(qualifiedPackageName));
+}
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	qualifiedPackageName += '/';
+	for (Enumeration<? extends ZipEntry> e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		char[] entryName = e.nextElement().getName().toCharArray();
+		int index = CharOperation.indexOf('/', entryName);
+		if (index != -1) {
+			char[] folder = CharOperation.subarray(entryName, 0, index);
+			if (CharOperation.equals(CLASSES, folder)) {
+				String fileName = new String(CharOperation.subarray(entryName, index + 1, entryName.length));
+				if (fileName.startsWith(qualifiedPackageName) && fileName.length() > qualifiedPackageName.length()) {
+					String tail = fileName.substring(qualifiedPackageName.length());
+					if (tail.indexOf('/') != -1)
+						continue;
+					if (tail.toLowerCase().endsWith(SUFFIX_STRING_class))
+						return true;
+				}
+			}
+		}
+	}	
+	return false;
+}
+@Override
+public String toString() {
+	return "Classpath for JMod file " + this.file.getPath(); //$NON-NLS-1$
+}
+@Override
+public IModule getModule() {
+	return this.module;
+}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java
new file mode 100644
index 0000000..3c51f70
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathJrt.java
@@ -0,0 +1,409 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
+
+import java.io.File;
+import java.io.IOException;
+
+import java.nio.file.FileVisitResult;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.zip.ZipFile;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IMultiModuleEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class ClasspathJrt extends ClasspathLocation implements IMultiModuleEntry {
+	public File file;
+	protected ZipFile annotationZipFile;
+	protected boolean closeZipFileAtEnd;
+	private static HashMap<String, Map<String,IModule>> ModulesCache = new HashMap<>();
+	public final Set<String> moduleNamesCache;
+	//private Set<String> packageCache;
+	protected List<String> annotationPaths;
+
+	public ClasspathJrt(File file, boolean closeZipFileAtEnd,
+			AccessRuleSet accessRuleSet, String destinationPath) {
+		super(accessRuleSet, destinationPath);
+		this.file = file;
+		this.closeZipFileAtEnd = closeZipFileAtEnd;
+		this.moduleNamesCache = new HashSet<>();
+	}
+
+	@Override
+	public List fetchLinkedJars(FileSystem.ClasspathSectionProblemReporter problemReporter) {
+		return null;
+	}
+	@Override
+	public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		List<String> modules = JRTUtil.getModulesDeclaringPackage(this.file, qualifiedPackageName, moduleName);
+		return CharOperation.toCharArrays(modules);
+	}
+	@Override
+	public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+		return JRTUtil.hasCompilationUnit(this.file, qualifiedPackageName, moduleName);
+	}
+	@Override
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+		return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false);
+	}
+	@Override
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+		if (!isPackage(qualifiedPackageName, moduleName))
+			return null; // most common case
+
+		try {
+			IBinaryType reader = ClassFileReader.readFromModule(this.file, moduleName, qualifiedBinaryFileName, this.moduleNamesCache::contains);
+
+			if (reader != null) {
+				searchPaths:
+				if (this.annotationPaths != null) {
+					String qualifiedClassName = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length()-SuffixConstants.EXTENSION_CLASS.length()-1);
+					for (String annotationPath : this.annotationPaths) {
+						try {
+							if (this.annotationZipFile == null) {
+								this.annotationZipFile = ExternalAnnotationDecorator.getAnnotationZipFile(annotationPath, null);
+							}
+							reader = ExternalAnnotationDecorator.create(reader, annotationPath, qualifiedClassName, this.annotationZipFile);
+
+							if (reader.getExternalAnnotationStatus() == ExternalAnnotationStatus.TYPE_IS_ANNOTATED) {
+								break searchPaths;
+							}
+						} catch (IOException e) {
+							// don't let error on annotations fail class reading
+						}
+					}
+					// location is configured for external annotations, but no .eea found, decorate in order to answer NO_EEA_FILE:
+					reader = new ExternalAnnotationDecorator(reader, null);
+				}
+				char[] answerModuleName = reader.getModule();
+				if (answerModuleName == null && moduleName != null)
+					answerModuleName = moduleName.toCharArray();
+				return new NameEnvironmentAnswer(reader, fetchAccessRestriction(qualifiedBinaryFileName), answerModuleName);
+			}
+		} catch(ClassFormatException e) {
+			// treat as if class file is missing
+		} catch (IOException e) {
+			// treat as if class file is missing
+		}
+		return null;
+	}
+	@Override
+	public boolean hasAnnotationFileFor(String qualifiedTypeName) {
+		return false; // TODO(SHMOD): implement
+	}
+	@Override
+	public char[][][] findTypeNames(final String qualifiedPackageName, final String moduleName) {
+		if (!isPackage(qualifiedPackageName, moduleName))
+			return null; // most common case
+		final char[] packageArray = qualifiedPackageName.toCharArray();
+		final ArrayList answers = new ArrayList();
+	
+		try {
+			JRTUtil.walkModuleImage(this.file, new JRTUtil.JrtFileVisitor<java.nio.file.Path>() {
+
+				@Override
+				public FileVisitResult visitPackage(java.nio.file.Path dir, java.nio.file.Path modPath, BasicFileAttributes attrs) throws IOException {
+					if (qualifiedPackageName.startsWith(dir.toString())) {
+						return FileVisitResult.CONTINUE;	
+					}
+					return FileVisitResult.SKIP_SUBTREE;
+				}
+
+				@Override
+				public FileVisitResult visitFile(java.nio.file.Path dir, java.nio.file.Path modPath, BasicFileAttributes attrs) throws IOException {
+					Path parent = dir.getParent();
+					if (parent == null)
+						return FileVisitResult.CONTINUE;
+					if (!parent.toString().equals(qualifiedPackageName)) {
+						return FileVisitResult.CONTINUE;
+					}
+					String fileName = dir.getName(dir.getNameCount() - 1).toString();
+					// The path already excludes the folders and all the '/', hence the -1 for last index of '/'
+					addTypeName(answers, fileName, -1, packageArray);
+					return FileVisitResult.CONTINUE;
+				}
+
+				@Override
+				public FileVisitResult visitModule(java.nio.file.Path modPath) throws IOException {
+					if (moduleName == null)
+						return FileVisitResult.CONTINUE;
+					if (!moduleName.equals(modPath.toString())) {
+						return FileVisitResult.SKIP_SUBTREE;
+					}
+					return FileVisitResult.CONTINUE;
+				}
+
+			}, JRTUtil.NOTIFY_ALL);
+		} catch (IOException e) {
+			// Ignore and move on
+		}
+		
+		int size = answers.size();
+		if (size != 0) {
+			char[][][] result = new char[size][][];
+			answers.toArray(result);
+			return result;
+		}
+		return null;
+	}
+
+	protected void addTypeName(final ArrayList answers, String fileName, int last, char[] packageName) {
+		int indexOfDot = fileName.lastIndexOf('.');
+		if (indexOfDot != -1) {
+			String typeName = fileName.substring(last + 1, indexOfDot);
+			answers.add(
+				CharOperation.arrayConcat(
+					CharOperation.splitOn('/', packageName),
+					typeName.toCharArray()));
+		}
+	}
+	@Override
+	public void initialize() throws IOException {
+		loadModules();
+	}
+//	public void acceptModule(IModuleDeclaration mod) {
+//		if (this.isJrt) 
+//			return;
+//		this.module = mod;
+//	}
+	public void loadModules() {
+		Map<String,IModule> cache = ModulesCache.get(this.file.getPath());
+
+		if (cache == null) {
+			try {
+				org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(this.file,
+						new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<Path>() {
+
+					@Override
+					public FileVisitResult visitPackage(Path dir, Path mod, BasicFileAttributes attrs)
+							throws IOException {
+						return FileVisitResult.CONTINUE;
+					}
+
+					@Override
+					public FileVisitResult visitFile(Path f, Path mod, BasicFileAttributes attrs)
+							throws IOException {
+						return FileVisitResult.CONTINUE;
+					}
+
+					@Override
+					public FileVisitResult visitModule(Path mod) throws IOException {
+						try {
+							ClasspathJrt.this.acceptModule(JRTUtil.getClassfileContent(ClasspathJrt.this.file, IModule.MODULE_INFO_CLASS, mod.toString()));
+							ClasspathJrt.this.moduleNamesCache.add(mod.getFileName().toString());
+						} catch (ClassFormatException e) {
+							e.printStackTrace();
+						}
+						return FileVisitResult.SKIP_SUBTREE;
+					}
+				}, JRTUtil.NOTIFY_MODULES);
+			} catch (IOException e) {
+				// TODO: Java 9 Should report better
+			}
+		} else {
+			this.moduleNamesCache.addAll(cache.keySet());
+		}
+	}
+	void acceptModule(ClassFileReader reader) {
+		if (reader != null) {
+			IModule moduleDecl = reader.getModuleDeclaration();
+			if (moduleDecl != null) {
+				Map<String, IModule> cache = ModulesCache.get(this.file.getPath());
+				if (cache == null) {
+					ModulesCache.put(this.file.getPath(), cache = new HashMap<String,IModule>());
+				}
+				cache.put(String.valueOf(moduleDecl.name()), moduleDecl);
+			}
+		}
+		
+	}
+	void acceptModule(byte[] content) {
+		if (content == null) 
+			return;
+		ClassFileReader reader = null;
+		try {
+			reader = new ClassFileReader(content, IModule.MODULE_INFO_CLASS.toCharArray());
+		} catch (ClassFormatException e) {
+			e.printStackTrace();
+		}
+		if (reader != null) {
+			acceptModule(reader);
+		}
+	}
+	
+	@Override
+	public Collection<String> getModuleNames(Collection<String> limitModule, Function<String, IModule> getModule) {
+		Map<String, IModule> cache = ModulesCache.get(this.file.getPath());
+		return selectModules(cache.keySet(), limitModule, getModule);
+	}
+	@Override
+	protected <T> List<String> allModules(Iterable<T> allSystemModules, Function<T,String> getModuleName, Function<T,IModule> getModule) {
+		List<String> result = new ArrayList<>();
+		boolean hasJavaDotSE = false;
+		for (T mod : allSystemModules) {
+			String moduleName = getModuleName.apply(mod);
+			if ("java.se".equals(moduleName)) { //$NON-NLS-1$
+				result.add(moduleName);
+				hasJavaDotSE = true;
+				break;
+			}
+		}
+		for (T mod : allSystemModules) {
+			String moduleName = getModuleName.apply(mod);
+			boolean isJavaDotStart = moduleName.startsWith("java."); //$NON-NLS-1$
+			boolean isPotentialRoot = !isJavaDotStart;	// always include non-java.*
+			if (!hasJavaDotSE)
+				isPotentialRoot |= isJavaDotStart;		// no java.se => add all java.*
+			
+			if (isPotentialRoot) {
+				IModule m = getModule.apply(mod);
+				if (m != null) {
+					for (IPackageExport packageExport : m.exports()) {
+						if (!packageExport.isQualified()) {
+							result.add(moduleName);
+							break;
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+//	protected void addToPackageCache(String fileName, boolean endsWithSep) {
+//		int last = endsWithSep ? fileName.length() : fileName.lastIndexOf('/');
+//		while (last > 0) {
+//			// extract the package name
+//			String packageName = fileName.substring(0, last);
+//			if (this.packageCache.contains(packageName))
+//				return;
+//			this.packageCache.add(packageName);
+//			last = packageName.lastIndexOf('/');
+//		}
+//	}
+//	public synchronized boolean isPackage(String qualifiedPackageName) {
+//		if (this.packageCache != null)
+//			return this.packageCache.contains(qualifiedPackageName);
+//
+//		this.packageCache = new HashSet<>(41);
+//		this.packageCache.add(Util.EMPTY_STRING);
+//		
+//			try {
+//				JRTUtil.walkModuleImage(this.file, new JRTUtil.JrtFileVisitor<java.nio.file.Path>() {
+//
+//					@Override
+//					public FileVisitResult visitPackage(java.nio.file.Path dir, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+//						addToPackageCache(dir.toString(), true);
+//						return FileVisitResult.CONTINUE;
+//					}
+//
+//					@Override
+//					public FileVisitResult visitFile(java.nio.file.Path dir, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+//						return FileVisitResult.CONTINUE;
+//					}
+//
+//					@Override
+//					public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+//						return FileVisitResult.CONTINUE;
+//					}
+//
+//				}, JRTUtil.NOTIFY_PACKAGES);
+//			} catch (IOException e) {
+//				// Ignore and move on
+//			}
+//		return this.packageCache.contains(qualifiedPackageName);
+//	}
+	@Override
+	public void reset() {
+		if (this.closeZipFileAtEnd) {
+			if (this.annotationZipFile != null) {
+				try {
+					this.annotationZipFile.close();
+				} catch(IOException e) {
+					// ignore
+				}
+				this.annotationZipFile = null;
+			}
+		}
+		if (this.annotationPaths != null) {
+			//this.packageCache = null;
+			this.annotationPaths = null;
+		}
+	}
+	@Override
+	public String toString() {
+		return "Classpath for JRT System " + this.file.getPath(); //$NON-NLS-1$
+	}
+	@Override
+	public char[] normalizedPath() {
+		if (this.normalizedPath == null) {
+			String path2 = this.getPath();
+			char[] rawName = path2.toCharArray();
+			if (File.separatorChar == '\\') {
+				CharOperation.replace(rawName, '\\', '/');
+			}
+			this.normalizedPath = CharOperation.subarray(rawName, 0, CharOperation.lastIndexOf('.', rawName));
+		}
+		return this.normalizedPath;
+	}
+	@Override
+	public String getPath() {
+		if (this.path == null) {
+			try {
+				this.path = this.file.getCanonicalPath();
+			} catch (IOException e) {
+				// in case of error, simply return the absolute path
+				this.path = this.file.getAbsolutePath();
+			}
+		}
+		return this.path;
+	}
+	@Override
+	public int getMode() {
+		return BINARY;
+	}
+	@Override
+	public boolean hasModule() {
+		return true;
+	}
+	@Override
+	public IModule getModule(char[] moduleName) {
+		Map<String, IModule> modules = ModulesCache.get(this.file.getPath());
+		if (modules != null) {
+			return modules.get(String.valueOf(moduleName));
+		}
+		return null;
+	}
+	@Override
+	public boolean servesModule(char[] moduleName) {
+		return getModule(moduleName) != null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.java
index 3d38f83..ee2ed15 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathLocation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,10 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Function;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 
 public abstract class ClasspathLocation implements FileSystem.Classpath,
@@ -26,6 +36,8 @@
 	String path;
 	char[] normalizedPath;
 	public AccessRuleSet accessRuleSet;
+	IModule module;
+	protected boolean isAutoModule;
 
 	public String destinationPath;
 		// destination path for compilation units that are reached through this
@@ -71,6 +83,7 @@
 	public int getMode() {
 		return SOURCE | BINARY;
 	}
+	@Override
 	public int hashCode() {
 		final int prime = 31;
 		int result = 1;
@@ -78,6 +91,7 @@
 		result = prime * result + ((this.path == null) ? 0 : this.path.hashCode());
 		return result;
 	}
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj)
 			return true;
@@ -97,7 +111,88 @@
 			return false;
 		return true;
 	}
+	@Override
 	public String getPath() {
 		return this.path;
 	}
+	@Override
+	public String getDestinationPath() {
+		return this.destinationPath;
+	}
+	
+	@Override
+	public void acceptModule(IModule mod) {
+		this.module = mod;
+		this.isAutoModule = mod.isAutomatic();
+	}
+	@Override
+	public boolean isAutomaticModule() {
+		return this.isAutoModule;
+	}
+	@Override
+	public Collection<String> getModuleNames(Collection<String> limitModules) {
+		return getModuleNames(limitModules, m -> getModule(m.toCharArray()));
+	}
+	@Override
+	public Collection<String> getModuleNames(Collection<String> limitModules, Function<String,IModule> getModule) {
+		if (this.module != null) {
+			String name = String.valueOf(this.module.name());
+			return selectModules(Collections.singleton(name), limitModules, getModule);
+		}
+		return Collections.emptyList();
+	}
+	protected Collection<String> selectModules(Set<String> modules, Collection<String> limitModules, Function<String,IModule> getModule) {
+		Collection<String> rootModules;
+		if (limitModules != null) {
+			Set<String> result = new HashSet<>(modules);
+			result.retainAll(limitModules);
+			rootModules = result;
+		} else {
+			rootModules = allModules(modules, s -> s, m -> getModule(m.toCharArray()));
+		}
+		Set<String> allModules = new HashSet<>(rootModules);
+		for (String mod : rootModules)
+			addRequired(mod, allModules, getModule);
+		return allModules;
+	}
+
+	private void addRequired(String mod, Set<String> allModules, Function<String,IModule> getModule) {
+		IModule iMod = getModule(mod.toCharArray());
+		if (iMod != null) {
+			for (IModuleReference requiredRef : iMod.requires()) {
+				IModule reqMod = getModule.apply(new String(requiredRef.name()));
+				if (reqMod != null) {
+					String reqModName = String.valueOf(reqMod.name());
+					if (allModules.add(reqModName))
+						addRequired(reqModName, allModules, getModule);
+				}
+			}
+		}
+	}
+	protected <T> List<String> allModules(Iterable<T> allSystemModules, Function<T,String> getModuleName, Function<T,IModule> getModule) {
+		List<String> result = new ArrayList<>();
+		for (T mod : allSystemModules) {
+			String moduleName = getModuleName.apply(mod);
+			result.add(moduleName);
+		}
+		return result;
+	}
+
+	@Override
+	public boolean isPackage(String qualifiedPackageName, String moduleName) {
+		return getModulesDeclaringPackage(qualifiedPackageName, moduleName) != null;
+	}
+
+	protected char[][] singletonModuleNameIf(boolean condition) {
+		if (!condition)
+			return null;
+		if (this.module != null)
+			return new char[][] { this.module.name() };
+		return new char[][] { ModuleBinding.UNNAMED };
+	}
+	
+	@Override
+	public void reset() {
+		this.module = null;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.java
index e4d15b9..966c923 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ClasspathSourceJar.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
+ * Copyright (c) 2006, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -29,8 +29,9 @@
 		this.encoding = encoding;
 	}
 
-	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
-		if (!isPackage(qualifiedPackageName))
+	@Override
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly) {
+		if (!isPackage(qualifiedPackageName, moduleName))
 			return null; // most common case
 
 		ZipEntry sourceEntry = this.zipFile.getEntry(qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6)  + SUFFIX_STRING_java);
@@ -45,12 +46,14 @@
 					if (stream != null)
 						stream.close();
 				}
+				CompilationUnit compilationUnit = new CompilationUnit(
+					contents,
+					qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6) + SUFFIX_STRING_java,
+					this.encoding,
+					this.destinationPath);
+				compilationUnit.module = this.module == null ? null : this.module.name();
 				return new NameEnvironmentAnswer(
-					new CompilationUnit(
-						contents,
-						qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6) + SUFFIX_STRING_java,
-						this.encoding,
-						this.destinationPath),
+					compilationUnit,
 					fetchAccessRestriction(qualifiedBinaryFileName));
 			} catch (IOException e) {
 				// treat as if source file is missing
@@ -58,9 +61,8 @@
 		}
 		return null;
 	}
-	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName) {
-		return findClass(typeName, qualifiedPackageName, qualifiedBinaryFileName, false);
-	}
+
+	@Override
 	public int getMode() {
 		return SOURCE;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.java
index 26afdf1..9e0511d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/CompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,8 @@
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
@@ -24,6 +26,7 @@
 	public char[] mainTypeName;
 	String encoding;
 	public String destinationPath;
+	public char[] module;
 		// a specific destination path for this compilation unit; coding is
 		// aligned with Main.destinationPath:
 		// == null: unspecified, use whatever value is set by the enclosing
@@ -32,17 +35,20 @@
 		// else: use as the path of the directory into which class files must
 		//       be written.
 	private boolean ignoreOptionalProblems;
+	private ModuleBinding moduleBinding;
 
 public CompilationUnit(char[] contents, String fileName, String encoding) {
 	this(contents, fileName, encoding, null);
 }
 public CompilationUnit(char[] contents, String fileName, String encoding,
 		String destinationPath) {
-	this(contents, fileName, encoding, destinationPath, false);
+	this(contents, fileName, encoding, destinationPath, false, null);
 }
 public CompilationUnit(char[] contents, String fileName, String encoding,
-		String destinationPath, boolean ignoreOptionalProblems) {
+		String destinationPath, boolean ignoreOptionalProblems, String modName) {
 	this.contents = contents;
+	if (modName != null)
+		this.module = modName.toCharArray();
 	char[] fileNameCharArray = fileName.toCharArray();
 	switch(File.separatorChar) {
 		case '/' :
@@ -68,6 +74,7 @@
 	this.destinationPath = destinationPath;
 	this.ignoreOptionalProblems = ignoreOptionalProblems;
 }
+@Override
 public char[] getContents() {
 	if (this.contents != null)
 		return this.contents;   // answer the cached source
@@ -83,19 +90,41 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.fileName;
 }
+@Override
 public char[] getMainTypeName() {
 	return this.mainTypeName;
 }
+@Override
 public char[][] getPackageName() {
 	return null;
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return this.ignoreOptionalProblems;
 }
+@Override
 public String toString() {
 	return "CompilationUnit[" + new String(this.fileName) + "]";  //$NON-NLS-2$ //$NON-NLS-1$
 }
+@Override
+public char[] getModuleName() {
+	return this.module;
+}
+@Override
+public ModuleBinding module(LookupEnvironment rootEnvironment) {
+	if (this.moduleBinding != null)
+		return this.moduleBinding;
+	this.moduleBinding = rootEnvironment.getModule(this.module);
+	if (this.moduleBinding == null)
+		throw new IllegalStateException("Module should be known"); //$NON-NLS-1$
+	return this.moduleBinding;
+}
+@Override
+public String getDestinationPath() {
+	return this.destinationPath;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.java
index c42e17e..6da2a0c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,18 +12,26 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.List;
 
-@SuppressWarnings({"rawtypes", "unchecked"})
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+
 public class FileFinder {
 
+/**
+ * Although the file finder is meant to be generic for any file name patters,
+ * at the moment it is used only for *.java files. This method handles the 
+ * module-info.java in a special way by always placing it as the first element
+ * of the resulting array.
+ */
 public static String[] find(File f, String pattern) {
-	ArrayList files = new ArrayList();
+	List<String> files = new ArrayList<>();
 	find0(f, pattern, files);
 	String[] result = new String[files.size()];
 	files.toArray(result);
 	return result;
 }
-private static void find0(File f, String pattern, ArrayList collector) {
+private static void find0(File f, String pattern, List<String> collector) {
 	if (f.isDirectory()) {
 		String[] files = f.list();
 		if (files == null) return;
@@ -32,8 +40,15 @@
 			if (current.isDirectory()) {
 				find0(current, pattern, collector);
 			} else {
-				if (current.getName().toUpperCase().endsWith(pattern)) {
-					collector.add(current.getAbsolutePath());
+				String name = current.getName().toLowerCase();
+				if (name.endsWith(pattern)) {
+					// NOTE: This handles only the lower case name. Check with the spec about
+					// Naming of the module descriptor before making this code code insensitive.
+					if (name.endsWith(IModule.MODULE_INFO_JAVA)) {
+						collector.add(0, current.getAbsolutePath());
+					} else {
+						collector.add(current.getAbsolutePath());
+					}
 				}
 			}
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.java
index 889c536..a132048 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/FileSystem.java
@@ -1,6 +1,6 @@
-// ASPECTJ
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,30 +15,63 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.InvalidPathException;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Consumer;
+import java.util.function.Function;
 import java.util.zip.ZipFile;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdatesByKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class FileSystem implements INameEnvironment, SuffixConstants {
-	public interface Classpath {
-		char[][][] findTypeNames(String qualifiedPackageName);
-		NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName);
-		NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String qualifiedBinaryFileName, boolean asBinaryOnly);
-		boolean isPackage(String qualifiedPackageName);
+public class FileSystem implements IModuleAwareNameEnvironment, SuffixConstants {
+
+	// Keep the type as ArrayList and not List as there are clients that are already written to expect ArrayList.
+	public static ArrayList<FileSystem.Classpath> EMPTY_CLASSPATH = new ArrayList<>();
+
+	/**
+	 * A <code>Classpath</code>, even though an IModuleLocation, can represent a plain
+	 * classpath location too. The FileSystem tells the Classpath whether to behave as a module or regular class
+	 * path via {@link Classpath#acceptModule(IModule)}.
+	 *
+	 * Sub types of classpath are responsible for appropriate behavior based on this.
+	 */
+	public interface Classpath extends IModulePathEntry {
+		char[][][] findTypeNames(String qualifiedPackageName, String moduleName);
+		NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName);
+		NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly);
+		boolean isPackage(String qualifiedPackageName, /*@Nullable*/String moduleName);
+		default boolean hasModule() { return getModule() != null; }
+		default boolean hasCUDeclaringPackage(String qualifiedPackageName, Function<CompilationUnit, String> pkgNameExtractor) {
+			return hasCompilationUnit(qualifiedPackageName, null);
+		}
 		/**
 		 * Return a list of the jar file names defined in the Class-Path section
 		 * of the jar file manifest if any, null else. Only ClasspathJar (and
@@ -48,7 +81,7 @@
 		 * @return a list of the jar file names defined in the Class-Path
 		 *         section of the jar file manifest if any
 		 */
-		List fetchLinkedJars(ClasspathSectionProblemReporter problemReporter);
+		List<Classpath> fetchLinkedJars(ClasspathSectionProblemReporter problemReporter);
 		/**
 		 * This method resets the environment. The resulting state is equivalent to
 		 * a new name environment without creating a new object.
@@ -80,6 +113,15 @@
 		 * @param qualifiedTypeName type name in qualified /-separated notation.
 		 */
 		boolean hasAnnotationFileFor(String qualifiedTypeName);
+		/**
+		 * Accepts to represent a module location with the given module description.
+		 *
+		 * @param module
+		 */
+		public void acceptModule(IModule module);
+		public String getDestinationPath();
+		Collection<String> getModuleNames(Collection<String> limitModules);
+		Collection<String> getModuleNames(Collection<String> limitModules, Function<String,IModule> getModule);
 	}
 	public interface ClasspathSectionProblemReporter {
 		void invalidClasspathSection(String jarFilePath);
@@ -99,11 +141,11 @@
 		 * @param classpaths the given classpath entries
 		 * @return the normalized classpath entries
 		 */
-		public static ArrayList normalize(ArrayList classpaths) {
-			ArrayList normalizedClasspath = new ArrayList();
-			HashSet cache = new HashSet();
-			for (Iterator iterator = classpaths.iterator(); iterator.hasNext(); ) {
-				FileSystem.Classpath classpath = (FileSystem.Classpath) iterator.next();
+		public static ArrayList<Classpath> normalize(ArrayList<Classpath> classpaths) {
+			ArrayList<Classpath> normalizedClasspath = new ArrayList<>();
+			HashSet<Classpath> cache = new HashSet<>();
+			for (Iterator<Classpath> iterator = classpaths.iterator(); iterator.hasNext(); ) {
+				FileSystem.Classpath classpath = iterator.next();
 				if (!cache.contains(classpath)) {
 					normalizedClasspath.add(classpath);
 					cache.add(classpath);
@@ -112,10 +154,20 @@
 			return normalizedClasspath;
 		}
 	}
-
+	
 	protected Classpath[] classpaths;
-	Set knownFileNames;
+	// Used only in single-module mode when the module descriptor is
+	// provided via command line.
+	// AspectJ raised prot to public
+	public IModule module;
+	Set<String> knownFileNames;
 	protected boolean annotationsFromClasspath; // should annotation files be read from the classpath (vs. explicit separate path)?
+	private static HashMap<File, Classpath> JRT_CLASSPATH_CACHE = null;
+	
+	protected Map<String,Classpath> moduleLocations = new HashMap<>();
+
+	/** Tasks resulting from --add-reads or --add-exports command line options. */
+	Map<String,UpdatesByKind> moduleUpdates = new HashMap<>();
 
 /*
 	classPathNames is a collection is Strings representing the full path of each class path
@@ -126,10 +178,12 @@
 	this.classpaths = new Classpath[classpathSize];
 	int counter = 0;
 	for (int i = 0; i < classpathSize; i++) {
-		Classpath classpath = getClasspath(classpathNames[i], encoding, null,mode); // New AspectJ Extension - pass extra mode
+		Classpath classpath = getClasspath(classpathNames[i], encoding, null, mode); // New AspectJ Extension - pass extra mode
 		if (classpath==null) continue; // AspectJ Extension
 		try {
 			classpath.initialize();
+			for (String moduleName : classpath.getModuleNames(null))
+				this.moduleLocations.put(moduleName, classpath);
 			this.classpaths[counter++] = classpath;
 		} catch (IOException e) {
 			// ignore
@@ -140,7 +194,8 @@
 	}
 	initializeKnownFileNames(initialFileNames);
 }
-protected FileSystem(Classpath[] paths, String[] initialFileNames, boolean annotationsFromClasspath) {
+// AspectJ raised to public from protected
+public FileSystem(Classpath[] paths, String[] initialFileNames, boolean annotationsFromClasspath, Set<String> limitedModules) {
 	final int length = paths.length;
 	int counter = 0;
 	this.classpaths = new FileSystem.Classpath[length];
@@ -149,7 +204,8 @@
 		try {
 			classpath.initialize();
 			this.classpaths[counter++] = classpath;
-		} catch(IOException exception) {
+		} catch(IOException | InvalidPathException exception) {
+			// JRE 9 could throw an IAE if the linked JAR paths have invalid chars, such as ":"
 			// ignore
 		}
 	}
@@ -157,22 +213,61 @@
 		// should not happen
 		System.arraycopy(this.classpaths, 0, (this.classpaths = new FileSystem.Classpath[counter]), 0, counter);
 	}
+	initializeModuleLocations(limitedModules);
 	initializeKnownFileNames(initialFileNames);
 	this.annotationsFromClasspath = annotationsFromClasspath;
 }
+private void initializeModuleLocations(Set<String> limitedModules) {
+	// First create the mapping of all module/Classpath
+	// since the second iteration of getModuleNames() can't be relied on for 
+	// to get the right origin of module
+	if (limitedModules == null) {
+		for (Classpath c : this.classpaths) {
+			for (String moduleName : c.getModuleNames(null))
+				this.moduleLocations.put(moduleName, c);
+		}
+	} else {
+		Map<String, Classpath> moduleMap = new HashMap<>();
+		for (Classpath c : this.classpaths) {
+			for (String moduleName : c.getModuleNames(null)) {
+				moduleMap.put(moduleName, c);
+			}
+		}
+		for (Classpath c : this.classpaths) {
+			for (String moduleName : c.getModuleNames(limitedModules, m -> getModuleFromEnvironment(m.toCharArray()))) {
+				Classpath classpath = moduleMap.get(moduleName);
+				this.moduleLocations.put(moduleName, classpath);
+			}
+		}
+	}
+}
+protected FileSystem(Classpath[] paths, String[] initialFileNames, boolean annotationsFromClasspath) {
+	this(paths, initialFileNames, annotationsFromClasspath, null);
+}
 public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet) {
 	return getClasspath(classpathName, encoding, false, accessRuleSet, null, null);
 }
-public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet, Map options) {
+public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet, Map<String, String> options) {
 	return getClasspath(classpathName, encoding, false, accessRuleSet, null, options);
 }
-
 //New AspectJ Extension
+public static Classpath getJrtClasspath(String jdkHome, String encoding, AccessRuleSet accessRuleSet, Map<String, String> options) {
+	return new ClasspathJrt(new File(convertPathSeparators(jdkHome)), true, accessRuleSet, null);
+}
 
 // Uses the mode rather than a boolean, so we can specify JUST binary (ClasspathLocation.BINARY)
-public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet, int mode) {
+public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet,int mode) {
 	return getClasspath(classpathName, encoding, mode, accessRuleSet, null, null);
 }
+// AspectJ - make this accessible from external consumers wanting to build classpath entry objects
+public static Classpath getClasspath(String classpathName, String encoding, AccessRuleSet accessRuleSet,Map options, int mode) {
+	return getClasspath(classpathName, encoding, mode, accessRuleSet, null, options);
+}
+// End AspectJ
+
+public static Classpath getOlderSystemRelease(String jdkHome, String release, AccessRuleSet accessRuleSet) {
+	return new ClasspathJep247(new File(convertPathSeparators(jdkHome)), release, accessRuleSet);
+}
 // Reworking of constructor, the original one that takes a boolean now delegates to the new one.
 // Original ctor declaration was:
 // public static Classpath getClasspath(String classpathName, String encoding,
@@ -180,13 +275,13 @@
 // 		String destinationPath) {
 public static Classpath getClasspath(String classpathName, String encoding,
 		boolean isSourceOnly, AccessRuleSet accessRuleSet,
-		String destinationPath, Map options) {
-	return getClasspath(classpathName,encoding,isSourceOnly ? ClasspathLocation.SOURCE :ClasspathLocation.SOURCE|ClasspathLocation.BINARY,accessRuleSet,destinationPath, options);
+		String destinationPath, Map<String, String> options) {
+	return getClasspath(classpathName,encoding,isSourceOnly ? ClasspathLocation.SOURCE :ClasspathLocation.SOURCE|ClasspathLocation.BINARY,accessRuleSet,destinationPath,options);
 }
 
 public static Classpath getClasspath(String classpathName, String encoding,
 		int mode, AccessRuleSet accessRuleSet,
-		String destinationPath, Map options) {
+		String destinationPath, Map<String,String> options) {
 	// End AspectJ Extension
 	Classpath result = null;
 	File file = new File(convertPathSeparators(classpathName));
@@ -206,6 +301,8 @@
 						convertPathSeparators(destinationPath), options);
 		}
 	} else {
+		int format = Util.archiveFormat(classpathName);
+		if (format == Util.ZIP_FILE) {
 		// MERGECONFLICT: didn't have this call in our older version:
 //		if (Util.isPotentialZipArchive(classpathName)) {
 			String lowercaseClasspathName = classpathName.toLowerCase();
@@ -214,15 +311,15 @@
 			// if (lowercaseClasspathName.endsWith(SUFFIX_STRING_jar)
 			//  || lowercaseClasspathName.endsWith(SUFFIX_STRING_zip)) {
 			// new code:
-			boolean isZip = false;
-			try {
-				ZipFile zf = new ZipFile(file);
-				zf.close();
-				isZip = true;
-			} catch (Exception e) {
-				// this means it is not a valid Zip 
-			}
-			if (isZip) {
+//			boolean isZip = false;
+//			try {
+//				ZipFile zf = new ZipFile(file);
+//				zf.close();
+//				isZip = true;
+//			} catch (Exception e) {
+//				// this means it is not a valid Zip 
+//			}
+//			if (isZip) {
 			// New AspectJ Extension - use mode instead of flag
 			// old code:
 			//if (isSourceOnly) {
@@ -237,18 +334,38 @@
 						convertPathSeparators(destinationPath));
 			} else if (destinationPath == null) {
 				// class file only mode
-				result = new ClasspathJar(file, true, accessRuleSet, null);
+				if (classpathName.endsWith(JRTUtil.JRT_FS_JAR)) {
+					if (JRT_CLASSPATH_CACHE == null) {
+						JRT_CLASSPATH_CACHE = new HashMap<>();
+					} else {
+						result = JRT_CLASSPATH_CACHE.get(file);
+					}
+					if (result == null) {
+						result = new ClasspathJrt(file, true, accessRuleSet, null);
+						try {
+							result.initialize();
+						} catch (IOException e) {
+							// Broken entry, but let clients have it anyway.
+						}
+						JRT_CLASSPATH_CACHE.put(file, result);
+					}
+				} else {
+					result = new ClasspathJar(file, true, accessRuleSet, null);
+				}
 			}
+		} else if (format == Util.JMOD_FILE) {
+			return new ClasspathJmod(file, true, accessRuleSet, null);
 		}
+
 	}
 	return result;
 }
 private void initializeKnownFileNames(String[] initialFileNames) {
 	if (initialFileNames == null) {
-		this.knownFileNames = new HashSet(0);
+		this.knownFileNames = new HashSet<>(0);
 		return;
 	}
-	this.knownFileNames = new HashSet(initialFileNames.length * 2);
+	this.knownFileNames = new HashSet<>(initialFileNames.length * 2);
 	for (int i = initialFileNames.length; --i >= 0;) {
 		File compilationUnitFile = new File(initialFileNames[i]);
 		char[] fileName = null;
@@ -301,6 +418,16 @@
 		matchingPathName = null;
 	}
 }
+/** TESTS ONLY */
+public void scanForModules(Parser parser) {
+	for (int i = 0, max = this.classpaths.length; i < max; i++) {
+		File file = new File(this.classpaths[i].getPath());
+		IModule iModule = ModuleFinder.scanForModule(this.classpaths[i], file, parser, false);
+		if (iModule != null)
+			this.moduleLocations.put(String.valueOf(iModule.name()), this.classpaths[i]);
+	}
+}
+@Override
 public void cleanup() {
 	for (int i = 0, max = this.classpaths.length; i < max; i++)
 		this.classpaths[i].reset();
@@ -310,31 +437,39 @@
 		? path.replace('\\', '/')
 		 : path.replace('/', '\\');
 }
-private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName, boolean asBinaryOnly){
-	NameEnvironmentAnswer answer = internalFindClass(qualifiedTypeName, typeName, asBinaryOnly);
+private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName, boolean asBinaryOnly, /*NonNull*/char[] moduleName) {
+	NameEnvironmentAnswer answer = internalFindClass(qualifiedTypeName, typeName, asBinaryOnly, moduleName);
 	if (this.annotationsFromClasspath && answer != null && answer.getBinaryType() instanceof ClassFileReader) {
 		for (int i = 0, length = this.classpaths.length; i < length; i++) {
 			Classpath classpathEntry = this.classpaths[i];
 			if (classpathEntry.hasAnnotationFileFor(qualifiedTypeName)) {
 				// in case of 'this.annotationsFromClasspath' we indeed search for .eea entries inside the main zipFile of the entry:
-				@SuppressWarnings("resource")
 				ZipFile zip = classpathEntry instanceof ClasspathJar ? ((ClasspathJar) classpathEntry).zipFile : null;
+				boolean shouldClose = false; // don't close classpathEntry.zipFile, which we don't own
 				try {
 					if (zip == null) {
 						zip = ExternalAnnotationDecorator.getAnnotationZipFile(classpathEntry.getPath(), null);
+						shouldClose = true;
 					}
 					answer.setBinaryType(ExternalAnnotationDecorator.create(answer.getBinaryType(), classpathEntry.getPath(), 
 							qualifiedTypeName, zip));
-					break;
+					return answer;
 				} catch (IOException e) {
 					// ignore broken entry, keep searching
+				} finally {
+					if (shouldClose && zip != null)
+						try {
+							zip.close();
+						} catch (IOException e) { /* nothing */ }
 				}
 			}
 		}
+		// globally configured (annotationsFromClasspath), but no .eea found, decorate in order to answer NO_EEA_FILE:
+		answer.setBinaryType(new ExternalAnnotationDecorator(answer.getBinaryType(), null));
 	}
 	return answer;
 }
-private NameEnvironmentAnswer internalFindClass(String qualifiedTypeName, char[] typeName, boolean asBinaryOnly){
+private NameEnvironmentAnswer internalFindClass(String qualifiedTypeName, char[] typeName, boolean asBinaryOnly, /*NonNull*/char[] moduleName) {
 	if (this.knownFileNames.contains(qualifiedTypeName)) return null; // looking for a file which we know was provided at the beginning of the compilation
 
 	String qualifiedBinaryFileName = qualifiedTypeName + SUFFIX_STRING_class;
@@ -342,12 +477,29 @@
 		qualifiedTypeName.length() == typeName.length
 			? Util.EMPTY_STRING
 			: qualifiedBinaryFileName.substring(0, qualifiedTypeName.length() - typeName.length - 1);
+
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	if (strategy == LookupStrategy.Named) {
+		if (this.moduleLocations != null) {
+			// searching for a specific named module:
+			String moduleNameString = String.valueOf(moduleName);
+			Classpath classpath = this.moduleLocations.get(moduleNameString);
+			if (classpath != null) {
+				return classpath.findClass(typeName, qualifiedPackageName, moduleNameString, qualifiedBinaryFileName);
+			}
+		}
+		return null;
+	}
 	String qp2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
 	NameEnvironmentAnswer suggestedAnswer = null;
 	if (qualifiedPackageName == qp2) {
 		for (int i = 0, length = this.classpaths.length; i < length; i++) {
-			NameEnvironmentAnswer answer = this.classpaths[i].findClass(typeName, qualifiedPackageName, qualifiedBinaryFileName, asBinaryOnly);
+			if (!strategy.matches(this.classpaths[i], Classpath::hasModule))
+				continue;
+			NameEnvironmentAnswer answer = this.classpaths[i].findClass(typeName, qualifiedPackageName, null, qualifiedBinaryFileName, asBinaryOnly);
 			if (answer != null) {
+				if (answer.moduleName() != null && !this.moduleLocations.containsKey(String.valueOf(answer.moduleName())))
+					continue; // type belongs to an unobservable module
 				if (!answer.ignoreIfBetter()) {
 					if (answer.isBetter(suggestedAnswer))
 						return answer;
@@ -360,10 +512,14 @@
 		String qb2 = qualifiedBinaryFileName.replace('/', File.separatorChar);
 		for (int i = 0, length = this.classpaths.length; i < length; i++) {
 			Classpath p = this.classpaths[i];
-			NameEnvironmentAnswer answer = (p instanceof ClasspathJar)
-				? p.findClass(typeName, qualifiedPackageName, qualifiedBinaryFileName, asBinaryOnly)
-				: p.findClass(typeName, qp2, qb2, asBinaryOnly);
+			if (!strategy.matches(p, Classpath::hasModule))
+				continue;
+			NameEnvironmentAnswer answer = !(p instanceof ClasspathDirectory)
+				? p.findClass(typeName, qualifiedPackageName, null, qualifiedBinaryFileName, asBinaryOnly)
+				: p.findClass(typeName, qp2, null, qb2, asBinaryOnly);
 			if (answer != null) {
+				if (answer.moduleName() != null && !this.moduleLocations.containsKey(String.valueOf(answer.moduleName())))
+					continue; // type belongs to an unobservable module
 				if (!answer.ignoreIfBetter()) {
 					if (answer.isBetter(suggestedAnswer))
 						return answer;
@@ -373,17 +529,17 @@
 			}
 		}
 	}
-	if (suggestedAnswer != null)
-		// no better answer was found
-		return suggestedAnswer;
-	return null;
+	return suggestedAnswer;
 }
-public NameEnvironmentAnswer findType(char[][] compoundName) {
+
+@Override
+public NameEnvironmentAnswer findType(char[][] compoundName, char[] moduleName) {
 	if (compoundName != null)
 		return findClass(
 			new String(CharOperation.concatWith(compoundName, '/')),
 			compoundName[compoundName.length - 1],
-			false);
+			false,
+			moduleName);
 	return null;
 }
 public char[][][] findTypeNames(char[][] packageName) {
@@ -393,7 +549,7 @@
 		String qualifiedPackageName2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
 		if (qualifiedPackageName == qualifiedPackageName2) {
 			for (int i = 0, length = this.classpaths.length; i < length; i++) {
-				char[][][] answers = this.classpaths[i].findTypeNames(qualifiedPackageName);
+				char[][][] answers = this.classpaths[i].findTypeNames(qualifiedPackageName, null);
 				if (answers != null) {
 					// concat with previous answers
 					if (result == null) {
@@ -409,9 +565,8 @@
 		} else {
 			for (int i = 0, length = this.classpaths.length; i < length; i++) {
 				Classpath p = this.classpaths[i];
-				char[][][] answers = (p instanceof ClasspathJar)
-					? p.findTypeNames(qualifiedPackageName)
-					: p.findTypeNames(qualifiedPackageName2);
+				char[][][] answers = !(p instanceof ClasspathDirectory) ? p.findTypeNames(qualifiedPackageName, null)
+						: p.findTypeNames(qualifiedPackageName2, null);
 				if (answers != null) {
 					// concat with previous answers
 					if (result == null) {
@@ -419,7 +574,8 @@
 					} else {
 						int resultLength = result.length;
 						int answersLength = answers.length;
-						System.arraycopy(result, 0, (result = new char[answersLength + resultLength][][]), 0, resultLength);
+						System.arraycopy(result, 0, (result = new char[answersLength + resultLength][][]), 0,
+								resultLength);
 						System.arraycopy(answers, 0, result, resultLength, answersLength);
 					}
 				}
@@ -428,36 +584,153 @@
 	}
 	return result;
 }
-public NameEnvironmentAnswer findType(char[][] compoundName, boolean asBinaryOnly) {
-	if (compoundName != null)
-		return findClass(
-			new String(CharOperation.concatWith(compoundName, '/')),
-			compoundName[compoundName.length - 1],
-			asBinaryOnly);
-	return null;
-}
-public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
+
+@Override
+public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
 	if (typeName != null)
 		return findClass(
 			new String(CharOperation.concatWith(packageName, typeName, '/')),
 			typeName,
-			false);
+			false,
+			moduleName);
 	return null;
 }
-public boolean isPackage(char[][] compoundName, char[] packageName) {
-	String qualifiedPackageName = new String(CharOperation.concatWith(compoundName, packageName, '/'));
-	String qp2 = File.separatorChar == '/' ? qualifiedPackageName : qualifiedPackageName.replace('/', File.separatorChar);
-	if (qualifiedPackageName == qp2) {
-		for (int i = 0, length = this.classpaths.length; i < length; i++)
-			if (this.classpaths[i].isPackage(qualifiedPackageName))
-				return true;
-	} else {
-		for (int i = 0, length = this.classpaths.length; i < length; i++) {
-			Classpath p = this.classpaths[i];
-			if ((p instanceof ClasspathJar) ? p.isPackage(qualifiedPackageName) : p.isPackage(qp2))
-				return true;
+
+@Override
+public char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] packageName, char[] moduleName) {
+	String qualifiedPackageName = new String(CharOperation.concatWith(parentPackageName, packageName, '/'));
+	String moduleNameString = String.valueOf(moduleName);
+
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	if (strategy == LookupStrategy.Named) {
+		if (this.moduleLocations != null) {
+			// specific search in a given module:
+			Classpath classpath = this.moduleLocations.get(moduleNameString);
+			if (classpath != null) {
+				if (classpath.isPackage(qualifiedPackageName, moduleNameString))
+					return new char[][] {moduleName};
+			}
+		}
+		return null;
+	}
+	// search the entire environment and answer which modules declare that package:
+	char[][] allNames = null;
+	for (Classpath cp : this.classpaths) {
+		if (strategy.matches(cp, Classpath::hasModule)) {
+			if (strategy == LookupStrategy.Unnamed) {
+				// short-cut
+				if (cp.isPackage(qualifiedPackageName, moduleNameString))
+					return new char[][] { ModuleBinding.UNNAMED };
+			} else {
+				char[][] declaringModules = cp.getModulesDeclaringPackage(qualifiedPackageName, null);
+				if (declaringModules != null) {
+					if (allNames == null)
+						allNames = declaringModules;
+					else
+						allNames = CharOperation.arrayConcat(allNames, declaringModules);
+				}
+			}
 		}
 	}
-	return false;
+	return allNames;
+}
+private Parser getParser() {
+	Map<String,String> opts = new HashMap<String, String>();
+	opts.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_9);
+	return new Parser(
+			new ProblemReporter(DefaultErrorHandlingPolicies.exitOnFirstError(), new CompilerOptions(opts), new DefaultProblemFactory(Locale.getDefault())),
+			false);
+}
+@Override
+public boolean hasCompilationUnit(char[][] qualifiedPackageName, char[] moduleName, boolean checkCUs) {
+	String qPackageName = String.valueOf(CharOperation.concatWith(qualifiedPackageName, '/'));
+	String moduleNameString = String.valueOf(moduleName);
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	Parser parser = checkCUs ? getParser() : null;
+	Function<CompilationUnit, String> pkgNameExtractor = (sourceUnit) -> {
+		String pkgName = null;	
+		CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 1);
+		char[][] name = parser.parsePackageDeclaration(sourceUnit.getContents(), compilationResult);
+		if (name != null) {
+			pkgName = CharOperation.toString(name);
+		}
+		return pkgName;
+	};
+	switch (strategy) {
+		case Named:
+			if (this.moduleLocations != null) {
+				Classpath location = this.moduleLocations.get(moduleNameString);
+				if (location != null)
+					return checkCUs ? location.hasCUDeclaringPackage(qPackageName, pkgNameExtractor)
+							: location.hasCompilationUnit(qPackageName, moduleNameString);
+			}
+			return false;
+		default:
+			for (int i = 0; i < this.classpaths.length; i++) {
+				Classpath location = this.classpaths[i];
+				if (strategy.matches(location, Classpath::hasModule))
+					if (location.hasCompilationUnit(qPackageName, moduleNameString))
+						return true;
+			}
+			return false;
+	}
+}
+
+@Override
+public IModule getModule(char[] name) {
+	if (this.module != null && CharOperation.equals(name, this.module.name())) {
+		return this.module;
+	}
+	if (this.moduleLocations.containsKey(new String(name))) {
+		for (Classpath classpath : this.classpaths) {
+			IModule mod = classpath.getModule(name);
+			if (mod != null) {
+				return mod;
+			}
+		}
+	}
+	return null;
+}
+public IModule getModuleFromEnvironment(char[] name) {
+	if (this.module != null && CharOperation.equals(name, this.module.name())) {
+		return this.module;
+	}
+	for (Classpath classpath : this.classpaths) {
+		IModule mod = classpath.getModule(name);
+		if (mod != null) {
+			return mod;
+		}
+	}
+	return null;
+}
+
+@Override
+public char[][] getAllAutomaticModules() {
+	Set<char[]> set = new HashSet<>();
+	for (int i = 0, l = this.classpaths.length; i < l; i++) {
+		if (this.classpaths[i].isAutomaticModule()) {
+			set.add(this.classpaths[i].getModule().name());
+		}
+	}
+	return set.toArray(new char[set.size()][]);
+}
+
+void addModuleUpdate(String moduleName, Consumer<IUpdatableModule> update, UpdateKind kind) {
+	UpdatesByKind updates = this.moduleUpdates.get(moduleName);
+	if (updates == null) {
+		this.moduleUpdates.put(moduleName, updates = new UpdatesByKind());
+	}
+	updates.getList(kind, true).add(update);
+}
+@Override
+public void applyModuleUpdates(IUpdatableModule compilerModule, IUpdatableModule.UpdateKind kind) {
+	char[] name = compilerModule.name();
+	if (name != ModuleBinding.UNNAMED) { // can't update the unnamed module
+		UpdatesByKind updates = this.moduleUpdates.get(String.valueOf(name));
+		if (updates != null) {
+			for (Consumer<IUpdatableModule> update : updates.getList(kind, false))
+				update.accept(compilerModule);
+		}
+	}
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.java
index a3208b5..e11e38d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/Main.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,6 +35,7 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.FileReader;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -44,10 +46,13 @@
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Field;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.text.DateFormat;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
@@ -56,6 +61,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.MissingResourceException;
 import java.util.Properties;
 import java.util.ResourceBundle;
@@ -74,16 +80,27 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerRequestor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.IErrorHandlingPolicy;
 import org.aspectj.org.eclipse.jdt.internal.compiler.IProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.ModuleFinder.AddExport;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerStats;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
@@ -94,7 +111,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
-@SuppressWarnings({ "rawtypes", "unchecked" })
 public class Main implements ProblemSeverities, SuffixConstants {
 
 	public static class Logger {
@@ -102,7 +118,7 @@
 		private PrintWriter log;
 		private Main main;
 		private PrintWriter out;
-		private HashMap parameters;
+		private HashMap<String, Object> parameters;
 		int tagBits;
 		private static final String CLASS = "class"; //$NON-NLS-1$
 		private static final String CLASS_FILE = "classfile"; //$NON-NLS-1$
@@ -134,6 +150,7 @@
 		private static final String NUMBER_OF_PROBLEMS = "problems"; //$NON-NLS-1$
 		private static final String NUMBER_OF_TASKS = "tasks"; //$NON-NLS-1$
 		private static final String NUMBER_OF_WARNINGS = "warnings"; //$NON-NLS-1$
+		private static final String NUMBER_OF_INFOS = "infos"; //$NON-NLS-1$
 		private static final String OPTION = "option"; //$NON-NLS-1$
 		private static final String OPTIONS = "options"; //$NON-NLS-1$
 		private static final String OUTPUT = "output"; //$NON-NLS-1$
@@ -167,11 +184,13 @@
 		private static final String TIME = "time"; //$NON-NLS-1$
 		private static final String VALUE = "value"; //$NON-NLS-1$
 		private static final String WARNING = "WARNING"; //$NON-NLS-1$
+		private static final String INFO = "INFO"; //$NON-NLS-1$
+
 		public static final int XML = 1;
-		private static final String XML_DTD_DECLARATION = "<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.004 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_004.dtd\">"; //$NON-NLS-1$
+		private static final String XML_DTD_DECLARATION = "<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.005 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_005.dtd\">"; //$NON-NLS-1$
 		static {
 			try {
-				Class c = IProblem.class;
+				Class<?> c = IProblem.class;
 				Field[] fields = c.getFields();
 				for (int i = 0, max = fields.length; i < max; i++) {
 					Field field = fields[i];
@@ -195,7 +214,7 @@
 		public Logger(Main main, PrintWriter out, PrintWriter err) {
 			this.out = out;
 			this.err = err;
-			this.parameters = new HashMap();
+			this.parameters = new HashMap<>();
 			this.main = main;
 		}
 
@@ -506,10 +525,14 @@
 						File f = new File(classpath);
 						String id = null;
 						if (f.isFile()) {
-							if (Util.isPotentialZipArchive(classpath)) {
-								id = Logger.CLASSPATH_JAR;
-							} else {
-								id = Logger.CLASSPATH_FILE;
+							int kind = Util.archiveFormat(classpath);
+							switch (kind) {
+								case Util.ZIP_FILE:
+									id = Logger.CLASSPATH_JAR;
+									break;
+								default:
+									id = Logger.CLASSPATH_FILE;
+									break;
 							}
 						} else if (f.isDirectory()) {
 							id = Logger.CLASSPATH_FOLDER;
@@ -586,26 +609,24 @@
 			char[] originatingFileName = problem.getOriginatingFileName();
 			if (originatingFileName == null) {
 				// simplified message output
-				if (problem.isError()) {
-					printErr(this.main.bind(
-								"requestor.extraerror", //$NON-NLS-1$
+				String severity = problem.isError() ? "requestor.extraerror" //$NON-NLS-1$
+						: problem.isInfo() ? "requestor.extrainfo" : "requestor.extrawarning"; //$NON-NLS-1$ //$NON-NLS-2$
+				printErr(this.main.bind(
+								severity,
 								Integer.toString(globalErrorCount)));
-				} else {
-					// warning / mandatory warning / other
-					printErr(this.main.bind(
-							"requestor.extrawarning", //$NON-NLS-1$
-							Integer.toString(globalErrorCount)));
-				}
 				printErr(" "); //$NON-NLS-1$
 				this.printlnErr(problem.getMessage());
 			} else {
 				String fileName = new String(originatingFileName);
 				if ((this.tagBits & Logger.EMACS) != 0) {
+					String severity = problem.isError() ? "output.emacs.error" : //$NON-NLS-1$
+										problem.isInfo() ? "output.emacs.info" //$NON-NLS-1$
+													: "output.emacs.warning"; //$NON-NLS-1$
 					String result = fileName
 							+ ":" //$NON-NLS-1$
 							+ problem.getSourceLineNumber()
 							+ ": " //$NON-NLS-1$
-							+ (problem.isError() ? this.main.bind("output.emacs.error") : this.main.bind("output.emacs.warning")) //$NON-NLS-1$ //$NON-NLS-2$
+							+ this.main.bind(severity)
 							+ ": " //$NON-NLS-1$
 							+ problem.getMessage();
 					this.printlnErr(result);
@@ -615,15 +636,12 @@
 					if (localErrorCount == 0) {
 						this.printlnErr("----------"); //$NON-NLS-1$
 					}
-					printErr(problem.isError() ?
-							this.main.bind(
-									"requestor.error", //$NON-NLS-1$
-									Integer.toString(globalErrorCount),
-									new String(fileName))
-									: this.main.bind(
-											"requestor.warning", //$NON-NLS-1$
-											Integer.toString(globalErrorCount),
-											new String(fileName)));
+					String severity = problem.isError() ? "requestor.error" //$NON-NLS-1$
+							: problem.isInfo() ? "requestor.info" : "requestor.warning"; //$NON-NLS-1$ //$NON-NLS-2$
+					printErr(this.main.bind(
+								severity,
+								Integer.toString(globalErrorCount),
+								new String(fileName)));
 					final String errorReportSource = errorReportSource(problem, null, 0);
 					this.printlnErr(errorReportSource);
 					this.printlnErr(problem.getMessage());
@@ -633,14 +651,15 @@
 		}
 
 		public void loggingExtraProblems(Main currentMain) {
-			ArrayList problems = currentMain.extraProblems;
+			ArrayList<CategorizedProblem> problems = currentMain.extraProblems;
 			final int count = problems.size();
 			int localProblemCount = 0;
 			if (count != 0) {
 				int errors = 0;
 				int warnings = 0;
+				int infos = 0;
 				for (int i = 0; i < count; i++) {
-					CategorizedProblem problem = (CategorizedProblem) problems.get(i);
+					CategorizedProblem problem = problems.get(i);
 					if (problem != null) {
 						currentMain.globalProblemsCount++;
 						logExtraProblem(problem, localProblemCount, currentMain.globalProblemsCount);
@@ -648,17 +667,20 @@
 						if (problem.isError()) {
 							errors++;
 							currentMain.globalErrorsCount++;
-						} else if (problem.isWarning()) {
+						} else if (problem.isInfo()) {
+							currentMain.globalInfoCount++;
+							infos++;
+						} else {
 							currentMain.globalWarningsCount++;
 							warnings++;
 						}
 					}
 				}
 				if ((this.tagBits & Logger.XML) != 0) {
-					if ((errors + warnings) != 0) {
+					if ((errors + warnings + infos) != 0) {
 						startLoggingExtraProblems(count);
 						for (int i = 0; i < count; i++) {
-							CategorizedProblem problem = (CategorizedProblem) problems.get(i);
+							CategorizedProblem problem = problems.get(i);
 							if (problem!= null) {
 								if (problem.getID() != IProblem.Task) {
 									logXmlExtraProblem(problem, localProblemCount, currentMain.globalProblemsCount);
@@ -733,6 +755,7 @@
 				final Set<Map.Entry<String, String>> entriesSet = options.entrySet();
 				Map.Entry<String, String>[] entries = entriesSet.toArray(new Map.Entry[entriesSet.size()]);
 				Arrays.sort(entries, new Comparator<Map.Entry<String, String>>() {
+					@Override
 					public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
 						Map.Entry<String, String> entry1 = o1;
 						Map.Entry<String, String> entry2 = o2;
@@ -775,11 +798,14 @@
 		private void logProblem(CategorizedProblem problem, int localErrorCount,
 			int globalErrorCount, char[] unitSource) {
 			if ((this.tagBits & Logger.EMACS) != 0) {
+				String severity = problem.isError() ? "output.emacs.error" : //$NON-NLS-1$
+									problem.isInfo() ? "output.emacs.info" //$NON-NLS-1$
+											: "output.emacs.warning"; //$NON-NLS-1$
 				String result = (new String(problem.getOriginatingFileName())
 						+ ":" //$NON-NLS-1$
 						+ problem.getSourceLineNumber()
 						+ ": " //$NON-NLS-1$
-						+ (problem.isError() ? this.main.bind("output.emacs.error") : this.main.bind("output.emacs.warning")) //$NON-NLS-1$ //$NON-NLS-2$
+						+ (this.main.bind(severity))
 						+ ": " //$NON-NLS-1$
 						+ problem.getMessage());
 				this.printlnErr(result);
@@ -789,13 +815,8 @@
 				if (localErrorCount == 0) {
 					this.printlnErr("----------"); //$NON-NLS-1$
 				}
-				printErr(problem.isError() ?
-						this.main.bind(
-								"requestor.error", //$NON-NLS-1$
-								Integer.toString(globalErrorCount),
-								new String(problem.getOriginatingFileName()))
-								: this.main.bind(
-										"requestor.warning", //$NON-NLS-1$
+				String severity = problem.isError() ? "requestor.error" : problem.isInfo() ? "requestor.info" : "requestor.warning";  //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+				printErr(this.main.bind(severity,
 										Integer.toString(globalErrorCount),
 										new String(problem.getOriginatingFileName())));
 				try {
@@ -817,6 +838,7 @@
 			if (count != 0) {
 				int errors = 0;
 				int warnings = 0;
+				int infos = 0;
 				int tasks = 0;
 				for (int i = 0; i < count; i++) {
 					CategorizedProblem problem = problems[i];
@@ -831,6 +853,9 @@
 						} else if (problem.getID() == IProblem.Task) {
 							currentMain.globalTasksCount++;
 							tasks++;
+						} else if (problem.isInfo()) {
+							currentMain.globalInfoCount++;
+							infos++;
 						} else {
 							currentMain.globalWarningsCount++;
 							warnings++;
@@ -838,8 +863,8 @@
 					}
 				}
 				if ((this.tagBits & Logger.XML) != 0) {
-					if ((errors + warnings) != 0) {
-						startLoggingProblems(errors, warnings);
+					if ((errors + warnings + infos) != 0) {
+						startLoggingProblems(errors, warnings, infos);
 						for (int i = 0; i < count; i++) {
 							CategorizedProblem problem = problems[i];
 							if (problem!= null) {
@@ -873,12 +898,13 @@
 		 * @param globalWarningsCount
 		 */
 		public void logProblemsSummary(int globalProblemsCount,
-			int globalErrorsCount, int globalWarningsCount, int globalTasksCount) {
+			int globalErrorsCount, int globalWarningsCount, int globalInfoCount, int globalTasksCount) {
 			if ((this.tagBits & Logger.XML) != 0) {
 				// generate xml
 				this.parameters.put(Logger.NUMBER_OF_PROBLEMS, Integer.valueOf(globalProblemsCount));
 				this.parameters.put(Logger.NUMBER_OF_ERRORS, Integer.valueOf(globalErrorsCount));
 				this.parameters.put(Logger.NUMBER_OF_WARNINGS, Integer.valueOf(globalWarningsCount));
+				this.parameters.put(Logger.NUMBER_OF_INFOS, Integer.valueOf(globalInfoCount));
 				this.parameters.put(Logger.NUMBER_OF_TASKS, Integer.valueOf(globalTasksCount));
 				printTag(Logger.PROBLEM_SUMMARY, this.parameters, true, true);
 			}
@@ -886,6 +912,8 @@
 				String message = null;
 				if (globalErrorsCount == 1) {
 					message = this.main.bind("compile.oneError"); //$NON-NLS-1$
+				} else if (globalInfoCount == 1) {
+					message = this.main.bind("compile.oneInfo"); //$NON-NLS-1$
 				} else {
 					message = this.main.bind("compile.oneWarning"); //$NON-NLS-1$
 				}
@@ -893,6 +921,7 @@
 			} else {
 				String errorMessage = null;
 				String warningMessage = null;
+				String infoMessage = null;
 				if (globalErrorsCount > 0) {
 					if (globalErrorsCount == 1) {
 						errorMessage = this.main.bind("compile.oneError"); //$NON-NLS-1$
@@ -908,26 +937,42 @@
 						warningMessage = this.main.bind("compile.severalWarnings", String.valueOf(warningsNumber)); //$NON-NLS-1$
 					}
 				}
-				if (errorMessage == null || warningMessage == null) {
-					if (errorMessage == null) {
-						printErr(this.main.bind(
-							"compile.severalProblemsErrorsOrWarnings", //$NON-NLS-1$
-							String.valueOf(globalProblemsCount),
-							warningMessage));
-					} else {
-						printErr(this.main.bind(
-							"compile.severalProblemsErrorsOrWarnings", //$NON-NLS-1$
-							String.valueOf(globalProblemsCount),
-							errorMessage));
-					}
-				} else {
+				if (globalInfoCount == 1) {
+					infoMessage = this.main.bind("compile.oneInfo"); //$NON-NLS-1$
+				} else if (globalInfoCount > 1) {
+					infoMessage = this.main.bind("compile.severalInfos", String.valueOf(warningsNumber)); //$NON-NLS-1$					
+				}
+				if (globalProblemsCount == globalInfoCount || globalProblemsCount == globalErrorsCount || globalProblemsCount == globalWarningsCount) {
+					String msg = errorMessage != null ? errorMessage : warningMessage != null ? warningMessage : infoMessage;
 					printErr(this.main.bind(
-						"compile.severalProblemsErrorsAndWarnings", //$NON-NLS-1$
-						new String[] {
-							String.valueOf(globalProblemsCount),
-							errorMessage,
-							warningMessage
-						}));
+						"compile.severalProblemsErrorsOrWarnings", //$NON-NLS-1$
+						String.valueOf(globalProblemsCount),
+						msg));
+				} else {
+					if (globalInfoCount == 0) {
+						printErr(this.main.bind(
+								"compile.severalProblemsErrorsAndWarnings", //$NON-NLS-1$
+								new String[] {
+									String.valueOf(globalProblemsCount),
+									errorMessage,
+									warningMessage
+								}));
+					} else {
+						if (errorMessage == null) {
+							errorMessage  = this.main.bind("compile.severalErrors", String.valueOf(globalErrorsCount)); //$NON-NLS-1$
+						}
+						if (warningMessage == null) {
+							warningMessage  = this.main.bind("compile.severalWarnings", String.valueOf(warningsNumber)); //$NON-NLS-1$
+						}
+						printErr(this.main.bind(
+								"compile.severalProblems", //$NON-NLS-1$
+								new String[] {
+									String.valueOf(globalProblemsCount),
+									errorMessage,
+									warningMessage,
+									infoMessage
+								}));
+					}
 				}
 			}
 			if ((this.tagBits & Logger.XML) == 0) {
@@ -1055,7 +1100,7 @@
 			final int sourceStart = problem.getSourceStart();
 			final int sourceEnd = problem.getSourceEnd();
 			boolean isError = problem.isError();
-			this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : Logger.WARNING);
+			this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : (problem.isInfo() ? Logger.INFO : Logger.WARNING));
 			this.parameters.put(Logger.PROBLEM_LINE, Integer.valueOf(problem.getSourceLineNumber()));
 			this.parameters.put(Logger.PROBLEM_SOURCE_START, Integer.valueOf(sourceStart));
 			this.parameters.put(Logger.PROBLEM_SOURCE_END, Integer.valueOf(sourceEnd));
@@ -1079,7 +1124,7 @@
 			this.parameters.put(Logger.PROBLEM_ID, Integer.valueOf(id)); // ID as numeric value
 			boolean isError = problem.isError();
 			int severity = isError ? ProblemSeverities.Error : ProblemSeverities.Warning;
-			this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : Logger.WARNING);
+			this.parameters.put(Logger.PROBLEM_SEVERITY, isError ? Logger.ERROR : (problem.isInfo() ? Logger.INFO : Logger.WARNING));
 			this.parameters.put(Logger.PROBLEM_LINE, Integer.valueOf(problem.getSourceLineNumber()));
 			this.parameters.put(Logger.PROBLEM_SOURCE_START, Integer.valueOf(sourceStart));
 			this.parameters.put(Logger.PROBLEM_SOURCE_END, Integer.valueOf(sourceEnd));
@@ -1177,7 +1222,8 @@
 				logTiming(compilerStats);
 			}
 			if (this.main.globalProblemsCount > 0) {
-				logProblemsSummary(this.main.globalProblemsCount, this.main.globalErrorsCount, this.main.globalWarningsCount, this.main.globalTasksCount);
+				logProblemsSummary(this.main.globalProblemsCount, this.main.globalErrorsCount, this.main.globalWarningsCount, 
+						this.main.globalInfoCount, this.main.globalTasksCount);
 			}
 			if (this.main.exportedClassFilesCounter != 0
 					&& (this.main.showProgress || isTimed || this.main.verbose)) {
@@ -1188,7 +1234,7 @@
 			}
 		}
 
-		private void printTag(String name, HashMap params, boolean insertNewLine, boolean closeTag) {
+		private void printTag(String name, HashMap<String, Object> params, boolean insertNewLine, boolean closeTag) {
 			if (this.log != null) {
 				((GenericXMLWriter) this.log).printTag(name, this.parameters, true, insertNewLine, closeTag);
 			}
@@ -1237,10 +1283,11 @@
 		 * Used to start logging problems.
 		 * Only use in xml mode.
 		 */
-		private void startLoggingProblems(int errors, int warnings) {
+		private void startLoggingProblems(int errors, int warnings, int infos) {
 			this.parameters.put(Logger.NUMBER_OF_PROBLEMS, Integer.valueOf(errors + warnings));
 			this.parameters.put(Logger.NUMBER_OF_ERRORS, Integer.valueOf(errors));
 			this.parameters.put(Logger.NUMBER_OF_WARNINGS, Integer.valueOf(warnings));
+			this.parameters.put(Logger.NUMBER_OF_INFOS, Integer.valueOf(infos));
 			printTag(Logger.PROBLEMS, this.parameters, true, false);
 		}
 
@@ -1294,9 +1341,9 @@
 	 * Resource bundle factory to share bundles for the same locale
 	 */
 	public static class ResourceBundleFactory {
-		private static HashMap Cache = new HashMap();
+		private static HashMap<Locale, ResourceBundle> Cache = new HashMap<>();
 		public static synchronized ResourceBundle getBundle(Locale locale) {
-			ResourceBundle bundle = (ResourceBundle) Cache.get(locale);
+			ResourceBundle bundle = Cache.get(locale);
 			if (bundle == null) {
 				bundle = ResourceBundle.getBundle(Main.bundleName, locale);
 				Cache.put(locale, bundle);
@@ -1318,10 +1365,17 @@
 	/* Bundle containing messages */
 	public ResourceBundle bundle;
 	protected FileSystem.Classpath[] checkedClasspaths;
+	// For single module mode
+	protected IModule module;
 	// paths to external annotations:
 	protected List<String> annotationPaths;
 	protected boolean annotationsFromClasspath;
 
+	private List<String> addonExports = Collections.EMPTY_LIST;
+	private List<String> addonReads = Collections.EMPTY_LIST;
+	public Set<String> rootModules = Collections.EMPTY_SET;
+	public Set<String> limitedModules;
+
 	public Locale compilerLocale;
 	public CompilerOptions compilerOptions; // read-only
 	public CompilationProgress progress;
@@ -1335,17 +1389,20 @@
 	// == Main.NONE: absorbent element, do not output class files;
 	// else: use as the path of the directory into which class files must
 	//       be written.
+	protected String releaseVersion;
 	private boolean didSpecifySource;
 	private boolean didSpecifyTarget;
 	public String[] encodings;
 	public int exportedClassFilesCounter;
 	public String[] filenames;
+	public String[] modNames;
 	public String[] classNames;
 	// overrides of destinationPath on a directory argument basis
 	public int globalErrorsCount;
 	public int globalProblemsCount;
 	public int globalTasksCount;
 	public int globalWarningsCount;
+	public int globalInfoCount;
 
 	private File javaHomeCache;
 
@@ -1358,6 +1415,7 @@
 	public Logger logger;
 	public int maxProblems;
 	public Map<String, String> options;
+	protected long complianceLevel;
 	public char[][] ignoreOptionalProblemsFromFolders;
 	protected PrintWriter out;
 	public boolean proceed = true;
@@ -1366,7 +1424,7 @@
 	public int currentRepetition, maxRepetition;
 	public boolean showProgress = false;
 	public long startTime;
-	public ArrayList pendingErrors;
+	public ArrayList<String> pendingErrors;
 	public boolean systemExitWhenFinished = true;
 
 	public static final int TIMING_DISABLED = 0;
@@ -1380,7 +1438,7 @@
 
 	private PrintWriter err;
 
-	protected ArrayList extraProblems;
+	protected ArrayList<CategorizedProblem> extraProblems;
 	// AspectJ Extension - made non final
 	public static String bundleName = "org.aspectj.org.eclipse.jdt.internal.compiler.batch.messages"; //$NON-NLS-1$
 	// two uses: recognize 'none' in options; code the singleton none
@@ -1413,8 +1471,9 @@
 }
 public static File[][] getLibrariesFiles(File[] files) {
 	FilenameFilter filter = new FilenameFilter() {
+		@Override
 		public boolean accept(File dir, String name) {
-			return Util.isPotentialZipArchive(name);
+			return Util.archiveFormat(name) > -1;
 		}
 	};
 	final int filesLength = files.length;
@@ -1498,7 +1557,7 @@
  * @deprecated - use {@link #Main(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
  *                       e.g. Main(outWriter, errWriter, systemExitWhenFinished, customDefaultOptions, null)
  */
-public Main(PrintWriter outWriter, PrintWriter errWriter, boolean systemExitWhenFinished, Map customDefaultOptions) {
+public Main(PrintWriter outWriter, PrintWriter errWriter, boolean systemExitWhenFinished, Map<String, String> customDefaultOptions) {
 	this(outWriter, errWriter, systemExitWhenFinished, customDefaultOptions, null /* progress */);
 }
 
@@ -1513,12 +1572,12 @@
 
 public void addExtraProblems(CategorizedProblem problem) {
 	if (this.extraProblems == null) {
-		this.extraProblems = new ArrayList();
+		this.extraProblems = new ArrayList<>();
 	}
 	this.extraProblems.add(problem);
 }
-protected void addNewEntry(ArrayList paths, String currentClasspathName,
-		ArrayList currentRuleSpecs, String customEncoding,
+protected void addNewEntry(ArrayList<FileSystem.Classpath> paths, String currentClasspathName,
+		ArrayList<String> currentRuleSpecs, String customEncoding,
 		String destPath, boolean isSourceOnly,
 		boolean rejectDestinationPathOnJars) {
 
@@ -1527,10 +1586,10 @@
 	if (rulesSpecsSize != 0) {
 		AccessRule[] accessRules = new AccessRule[currentRuleSpecs.size()];
 		boolean rulesOK = true;
-		Iterator i = currentRuleSpecs.iterator();
+		Iterator<String> i = currentRuleSpecs.iterator();
 		int j = 0;
 		while (i.hasNext()) {
-			String ruleSpec = (String) i.next();
+			String ruleSpec = i.next();
 			char key = ruleSpec.charAt(0);
 			String pattern = ruleSpec.substring(1);
 			if (pattern.length() > 0) {
@@ -1574,8 +1633,9 @@
 	if (NONE.equals(destPath)) {
 		destPath = NONE; // keep == comparison valid
 	}
+	
 	if (rejectDestinationPathOnJars && destPath != null &&
-			Util.isPotentialZipArchive(currentClasspathName)) {
+			Util.archiveFormat(currentClasspathName) > -1) {
 		throw new IllegalArgumentException(
 			this.bind("configure.unexpectedDestinationPathEntryFile", //$NON-NLS-1$
 						currentClasspathName));
@@ -1595,7 +1655,7 @@
 }
 void addPendingErrors(String message) {
 	if (this.pendingErrors == null) {
-		this.pendingErrors = new ArrayList();
+		this.pendingErrors = new ArrayList<>();
 	}
 	this.pendingErrors.add(message);
 }
@@ -1669,7 +1729,8 @@
  * @param minimalSupportedVersion the given minimal version
  * @return true if and only if the running VM supports the given minimal version, false otherwise
  */
-private boolean checkVMVersion(long minimalSupportedVersion) {
+//AspectJ: from private to protected
+protected boolean checkVMVersion(long minimalSupportedVersion) {
 	// the format of this property is supposed to be xx.x where x are digits.
 	String classFileVersion = System.getProperty("java.class.version"); //$NON-NLS-1$
 	if (classFileVersion == null) {
@@ -1705,6 +1766,10 @@
 			return ClassFileConstants.JDK1_7 >= minimalSupportedVersion;
 		case ClassFileConstants.MAJOR_VERSION_1_8: // 1.8
 			return ClassFileConstants.JDK1_8 >= minimalSupportedVersion;
+		case ClassFileConstants.MAJOR_VERSION_9: // 9
+			return ClassFileConstants.JDK9 >= minimalSupportedVersion;
+		case ClassFileConstants.MAJOR_VERSION_10: // 10
+			return ClassFileConstants.JDK10 >= minimalSupportedVersion;
 	}
 	// unknown version
 	return false;
@@ -1727,6 +1792,7 @@
 				this.globalProblemsCount = 0;
 				this.globalErrorsCount = 0;
 				this.globalWarningsCount = 0;
+				this.globalInfoCount = 0;
 				this.globalTasksCount = 0;
 				this.exportedClassFilesCounter = 0;
 
@@ -1755,7 +1821,7 @@
 			System.exit(-1);
 		}
 		return false;
-	} catch (RuntimeException e) { // internal compiler failure
+	} catch (Exception e) { // internal compiler failure
 		this.logger.logException(e);
 		if (this.systemExitWhenFinished) {
 			this.logger.flush();
@@ -1803,14 +1869,25 @@
 	final int INSIDE_CLASS_NAMES = 20;
 	final int INSIDE_WARNINGS_PROPERTIES = 21;
 	final int INSIDE_ANNOTATIONPATH_start = 22;
+	final int INSIDE_MODULEPATH_start = 23;
+	final int INSIDE_MODULESOURCEPATH_start = 24;
+	final int INSIDE_ADD_EXPORTS = 25;
+	final int INSIDE_ADD_READS = 26;
+	final int INSIDE_SYSTEM = 27;
+	final int INSIDE_PROCESSOR_MODULE_PATH_start = 28;
+	final int INSIDE_ADD_MODULES = 29;
+	final int INSIDE_RELEASE = 30;
+	final int INSIDE_LIMIT_MODULES = 31;
 
 	final int DEFAULT = 0;
-	ArrayList bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
+	ArrayList<String> bootclasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 	String sourcepathClasspathArg = null;
-	ArrayList sourcepathClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
-	ArrayList classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
-	ArrayList extdirsClasspaths = null;
-	ArrayList endorsedDirClasspaths = null;
+	String modulepathArg = null;
+	String moduleSourcepathArg = null;
+	ArrayList<String> sourcepathClasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
+	ArrayList<String> classpaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
+	ArrayList<String> extdirsClasspaths = null;
+	ArrayList<String> endorsedDirClasspaths = null;
 	this.annotationPaths = null;
 	this.annotationsFromClasspath = false;
 
@@ -1832,8 +1909,9 @@
 	String customDestinationPath = null;
 	String currentSourceDirectory = null;
 	String currentArg = Util.EMPTY_STRING;
+	String moduleName = null;
 	
-	Set specifiedEncodings = null;
+	Set<String> specifiedEncodings = null;
 
 	// expand the command line if necessary
 	boolean needExpansion = false;
@@ -1963,9 +2041,21 @@
 				}
 
 				if (currentArg.endsWith(SuffixConstants.SUFFIX_STRING_java)) {
+					if (moduleName == null) {
+						// If the module-info.java was supplied via command line, that will be the
+						// de facto module for the other source files supplied via command line.
+						// TODO: This needs revisit in case a source file specified in command line is
+						// part of a --module-source-path
+						IModule mod = extractModuleDesc(currentArg);
+						if (mod != null) {
+							moduleName = new String(mod.name());
+							this.module = mod;
+						}
+					}
 					if (this.filenames == null) {
 						this.filenames = new String[argCount - index];
 						this.encodings = new String[argCount - index];
+						this.modNames = new String[argCount - index];
 						this.destinationPaths = new String[argCount - index];
 					} else if (filesCount == this.filenames.length) {
 						int length = this.filenames.length;
@@ -1987,8 +2077,15 @@
 							(this.destinationPaths = new String[length + argCount - index]),
 							0,
 							length);
+						System.arraycopy(
+								this.modNames,
+								0,
+								(this.modNames = new String[length + argCount - index]),
+								0,
+								length);
 					}
 					this.filenames[filesCount] = currentArg;
+					this.modNames[filesCount] = moduleName;
 					this.encodings[filesCount++] = customEncoding;
 					// destination path cannot be specified upon an individual file
 					customEncoding = null;
@@ -2016,6 +2113,10 @@
 					mode = INSIDE_MAX_PROBLEMS;
 					continue;
 				}
+				if (currentArg.equals("--release")) { //$NON-NLS-1$
+					mode = INSIDE_RELEASE;
+					continue;
+				}
 				if (currentArg.equals("-source")) { //$NON-NLS-1$
 					mode = INSIDE_SOURCE;
 					continue;
@@ -2084,6 +2185,26 @@
 					mode = DEFAULT;
 					continue;
 				}
+				if (currentArg.equals("-1.9") || currentArg.equals("-9") || currentArg.equals("-9.0")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					if (didSpecifyCompliance) {
+						throw new IllegalArgumentException(
+							this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
+					}
+					didSpecifyCompliance = true;
+					this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_9);
+					mode = DEFAULT;
+					continue;
+				}
+				if (currentArg.equals("-10") || currentArg.equals("-10.0")) { //$NON-NLS-1$ //$NON-NLS-2$
+					if (didSpecifyCompliance) {
+						throw new IllegalArgumentException(
+							this.bind("configure.duplicateCompliance", currentArg)); //$NON-NLS-1$
+					}
+					didSpecifyCompliance = true;
+					this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_10);
+					mode = DEFAULT;
+					continue;
+				}
 				if (currentArg.equals("-d")) { //$NON-NLS-1$
 					if (this.destinationPath != null) {
 						StringBuffer errorMessage = new StringBuffer();
@@ -2117,6 +2238,37 @@
 					mode = INSIDE_BOOTCLASSPATH_start;
 					continue;
 				}
+				if (currentArg.equals("--system")) { //$NON-NLS-1$
+					mode = INSIDE_SYSTEM;
+					continue;
+				}
+				if (currentArg.equals("--module-path") || currentArg.equals("-p") || currentArg.equals("--processor-module-path")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					mode = INSIDE_MODULEPATH_start;
+					continue;
+				}
+				if (currentArg.equals("--module-source-path")) { //$NON-NLS-1$
+					if (sourcepathClasspathArg != null) {
+						throw new IllegalArgumentException(this.bind("configure.OneOfModuleOrSourcePath")); //$NON-NLS-1$
+					}
+					mode = INSIDE_MODULESOURCEPATH_start;
+					continue;
+				}
+				if (currentArg.equals("--add-exports")) { //$NON-NLS-1$
+					mode = INSIDE_ADD_EXPORTS;
+					continue;
+				}
+				if (currentArg.equals("--add-reads")) { //$NON-NLS-1$
+					mode = INSIDE_ADD_READS;
+					continue;
+				}
+				if (currentArg.equals("--add-modules")) { //$NON-NLS-1$
+					mode = INSIDE_ADD_MODULES;
+					continue;
+				}
+				if (currentArg.equals("--limit-modules")) { //$NON-NLS-1$
+					mode = INSIDE_LIMIT_MODULES;
+					continue;
+				}
 				if (currentArg.equals("-sourcepath")) {//$NON-NLS-1$
 					if (sourcepathClasspathArg != null) {
 						StringBuffer errorMessage = new StringBuffer();
@@ -2128,6 +2280,9 @@
 						throw new IllegalArgumentException(
 							this.bind("configure.duplicateSourcepath", errorMessage.toString())); //$NON-NLS-1$
 					}
+					if (moduleSourcepathArg != null) {
+						throw new IllegalArgumentException(this.bind("configure.OneOfModuleOrSourcePath")); //$NON-NLS-1$
+					}
 					mode = INSIDE_SOURCE_PATH_start;
 					continue;
 				}
@@ -2308,6 +2463,59 @@
 					throw new IllegalArgumentException(
 						this.bind("configure.invalidDebugOption", debugOption)); //$NON-NLS-1$
 				}
+				if (currentArg.startsWith("-info")) { //$NON-NLS-1$
+					mode = DEFAULT;
+					String infoOption = currentArg;
+					int length = currentArg.length();
+					if (length == 10 && infoOption.equals("-info:" + NONE)) { //$NON-NLS-1$
+						disableAll(ProblemSeverities.Info);
+						continue;
+					}
+					if (length <= 6) {
+						throw new IllegalArgumentException(
+							this.bind("configure.invalidInfoConfiguration", infoOption)); //$NON-NLS-1$
+					}
+					int infoTokenStart;
+					boolean isEnabling;
+					switch (infoOption.charAt(6)) {
+						case '+' :
+							infoTokenStart = 7;
+							isEnabling = true;
+							break;
+						case '-' :
+							infoTokenStart = 7;
+							isEnabling = false; // specified warnings are disabled
+							break;
+						default:
+							disableAll(ProblemSeverities.Info);
+							infoTokenStart = 6;
+							isEnabling = true;
+					}
+
+					StringTokenizer tokenizer =
+						new StringTokenizer(infoOption.substring(infoTokenStart, infoOption.length()), ","); //$NON-NLS-1$
+					int tokenCounter = 0;
+
+					while (tokenizer.hasMoreTokens()) {
+						String token = tokenizer.nextToken();
+						tokenCounter++;
+						switch(token.charAt(0)) {
+							case '+' :
+								isEnabling = true;
+								token = token.substring(1);
+								break;
+							case '-' :
+								isEnabling = false;
+								token = token.substring(1);
+						}
+						handleInfoToken(token, isEnabling);
+					}
+					if (tokenCounter == 0) {
+						throw new IllegalArgumentException(
+							this.bind("configure.invalidInfoOption", currentArg)); //$NON-NLS-1$
+					}
+					continue;
+				}
 				if (currentArg.startsWith("-warn")) { //$NON-NLS-1$
 					mode = DEFAULT;
 					String warningOption = currentArg;
@@ -2449,6 +2657,10 @@
 					mode = INSIDE_PROCESSOR_start;
 					continue;
 				}
+				if (currentArg.equals("--processor-module-path")) { //$NON-NLS-1$
+					mode = INSIDE_PROCESSOR_MODULE_PATH_start;
+					continue;
+				}
 				if (currentArg.equals("-proc:only")) { //$NON-NLS-1$
 					this.options.put(
 						CompilerOptions.OPTION_GenerateClassFiles,
@@ -2508,6 +2720,10 @@
 					throw new IllegalArgumentException(
 						this.bind("configure.duplicateTarget", currentArg));//$NON-NLS-1$
 				}
+				if (this.releaseVersion != null) {
+					throw new IllegalArgumentException(
+							this.bind("configure.unsupportedWithRelease", "-target"));//$NON-NLS-1$ //$NON-NLS-2$
+				}
 				this.didSpecifyTarget = true;
 				if (currentArg.equals("1.1")) { //$NON-NLS-1$
 					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1);
@@ -2525,6 +2741,10 @@
 					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
 				} else if (currentArg.equals("1.8") || currentArg.equals("8") || currentArg.equals("8.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8);
+				} else if (currentArg.equals("1.9") || currentArg.equals("9") || currentArg.equals("9.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+				} else if (currentArg.equals("10") || currentArg.equals("10.0")) { //$NON-NLS-1$//$NON-NLS-2$
+					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_10);
 				}
 				else if (currentArg.equals("jsr14")) { //$NON-NLS-1$
 					this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_JSR14);
@@ -2563,11 +2783,38 @@
 				}
 				mode = DEFAULT;
 				continue;
+			case INSIDE_RELEASE:
+				// If release is < 9, the following are diasllowed:
+				// bootclasspath, -Xbootclasspath, -Xbootclasspath/a:, -Xbootclasspath/p:, 
+				// -endorseddirs, -Djava.endorsed.dirs, -extdirs, -Djava.ext.dirs
+
+				// If release >= 9, the following are disallowed
+				// --system and --upgrade-module-path
+
+				// -source and -target are diasllowed for any --release
+				this.releaseVersion = currentArg;
+				long releaseToJDKLevel = CompilerOptions.releaseToJDKLevel(currentArg);
+				if (releaseToJDKLevel == 0) {
+					throw new IllegalArgumentException(
+							this.bind("configure.unsupportedReleaseVersion", currentArg)); //$NON-NLS-1$
+				}
+				// Let's treat it as regular compliance mode
+				this.complianceLevel = releaseToJDKLevel;
+				String versionAsString = CompilerOptions.versionFromJdkLevel(releaseToJDKLevel);
+				this.options.put(CompilerOptions.OPTION_Compliance, versionAsString);
+				this.options.put(CompilerOptions.OPTION_Source, versionAsString);
+				this.options.put(CompilerOptions.OPTION_TargetPlatform, versionAsString);
+				mode = DEFAULT;
+				continue;
 			case INSIDE_SOURCE :
 				if (this.didSpecifySource) {
 					throw new IllegalArgumentException(
 						this.bind("configure.duplicateSource", currentArg));//$NON-NLS-1$
 				}
+				if (this.releaseVersion != null) {
+					throw new IllegalArgumentException(
+							this.bind("configure.unsupportedWithRelease", "-source"));//$NON-NLS-1$ //$NON-NLS-2$
+				}
 				this.didSpecifySource = true;
 				if (currentArg.equals("1.3")) { //$NON-NLS-1$
 					this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
@@ -2581,6 +2828,10 @@
 					this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7);
 				} else if (currentArg.equals("1.8") || currentArg.equals("8") || currentArg.equals("8.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
 					this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_8);
+				} else if (currentArg.equals("1.9") || currentArg.equals("9") || currentArg.equals("9.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+					this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_9);
+				} else if (currentArg.equals("10") ||  currentArg.equals("10.0")) { //$NON-NLS-1$//$NON-NLS-2$
+					this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_10);
 				} else {
 					throw new IllegalArgumentException(this.bind("configure.source", currentArg)); //$NON-NLS-1$
 				}
@@ -2603,7 +2854,7 @@
 						}
 					}
 				} else {
-					specifiedEncodings = new HashSet();
+					specifiedEncodings = new HashSet<>();
 				}
 				try { // ensure encoding is supported
 					new InputStreamReader(new ByteArrayInputStream(new byte[0]), currentArg);
@@ -2619,6 +2870,57 @@
 				setDestinationPath(currentArg.equals(NONE) ? NONE : currentArg);
 				mode = DEFAULT;
 				continue;
+			case INSIDE_SYSTEM:
+				mode = DEFAULT;
+				setJavaHome(currentArg);
+				continue;
+			case INSIDE_MODULEPATH_start:
+				mode = DEFAULT;
+				String[] modulepaths = new String[1];
+				index += processPaths(newCommandLineArgs, index, currentArg, modulepaths);
+				modulepathArg = modulepaths[0];
+				continue;
+			case INSIDE_MODULESOURCEPATH_start:
+				mode = DEFAULT;
+				String[] moduleSourcepaths = new String[1];
+				index += processPaths(newCommandLineArgs, index, currentArg, moduleSourcepaths);
+				moduleSourcepathArg = moduleSourcepaths[0];
+				continue;
+			case INSIDE_ADD_EXPORTS:
+				mode = DEFAULT;
+				// TODO: better to validate the option before processing it further?
+				if (this.addonExports == Collections.EMPTY_LIST) {
+					this.addonExports = new ArrayList<>();
+				}
+				this.addonExports.add(currentArg);
+				continue;
+			case INSIDE_ADD_READS:
+				mode = DEFAULT;
+				if (this.addonReads == Collections.EMPTY_LIST) {
+					this.addonReads = new ArrayList<>();
+				}
+				this.addonReads.add(currentArg);
+				continue;
+			case INSIDE_ADD_MODULES:
+				mode = DEFAULT;
+				if (this.rootModules == Collections.EMPTY_SET) {
+					this.rootModules = new HashSet<>();
+				}
+				StringTokenizer tokenizer = new StringTokenizer(currentArg, ","); //$NON-NLS-1$
+				while (tokenizer.hasMoreTokens()) {
+					this.rootModules.add(tokenizer.nextToken().trim());
+				}
+				continue;
+			case INSIDE_LIMIT_MODULES:
+				mode = DEFAULT;
+				tokenizer = new StringTokenizer(currentArg, ","); //$NON-NLS-1$
+				while (tokenizer.hasMoreTokens()) {
+					if (this.limitedModules == null) {
+						this.limitedModules = new HashSet<>();
+					}
+					this.limitedModules.add(tokenizer.nextToken().trim());
+				}
+				continue;
 			case INSIDE_CLASSPATH_start:
 				mode = DEFAULT;
 				index += processPaths(newCommandLineArgs, index, currentArg, classpaths);
@@ -2639,8 +2941,8 @@
 						this.bind("configure.unexpectedDestinationPathEntry", //$NON-NLS-1$
 							"-extdir")); //$NON-NLS-1$
 				}
-				StringTokenizer tokenizer = new StringTokenizer(currentArg,	File.pathSeparator, false);
-				extdirsClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
+				tokenizer = new StringTokenizer(currentArg,	File.pathSeparator, false);
+				extdirsClasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 				while (tokenizer.hasMoreTokens())
 					extdirsClasspaths.add(tokenizer.nextToken());
 				mode = DEFAULT;
@@ -2651,7 +2953,7 @@
 						this.bind("configure.unexpectedDestinationPathEntry", //$NON-NLS-1$
 							"-endorseddirs")); //$NON-NLS-1$
 				}				tokenizer = new StringTokenizer(currentArg,	File.pathSeparator, false);
-				endorsedDirClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
+				endorsedDirClasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 				while (tokenizer.hasMoreTokens())
 					endorsedDirClasspaths.add(tokenizer.nextToken());
 				mode = DEFAULT;
@@ -2674,6 +2976,9 @@
 				// nothing to do here. This is consumed again by the AnnotationProcessorManager
 				mode = DEFAULT;
 				continue;
+			case INSIDE_PROCESSOR_MODULE_PATH_start :
+				mode = DEFAULT;
+				continue;
 			case INSIDE_S_start :
 				// nothing to do here. This is consumed again by the AnnotationProcessorManager
 				mode = DEFAULT;
@@ -2741,7 +3046,7 @@
 			throw new IllegalArgumentException(
 				this.bind("configure.unrecognizedOption", currentSourceDirectory)); //$NON-NLS-1$
 		}
-		String[] result = FileFinder.find(dir, SuffixConstants.SUFFIX_STRING_JAVA);
+		String[] result = FileFinder.find(dir, SuffixConstants.SUFFIX_STRING_java);
 		if (NONE.equals(customDestinationPath)) {
 			customDestinationPath = NONE; // ensure == comparison
 		}
@@ -2766,10 +3071,17 @@
 				(this.destinationPaths = new String[length + filesCount]),
 				0,
 				filesCount);
+			System.arraycopy(
+					this.modNames,
+					0,
+					(this.modNames = new String[length + filesCount]),
+					0,
+					filesCount);
 			System.arraycopy(result, 0, this.filenames, filesCount, length);
 			for (int i = 0; i < length; i++) {
 				this.encodings[filesCount + i] = customEncoding;
 				this.destinationPaths[filesCount + i] = customDestinationPath;
+				this.modNames[filesCount + i] = moduleName;
 			}
 			filesCount += length;
 			customEncoding = null;
@@ -2780,6 +3092,7 @@
 			filesCount = this.filenames.length;
 			this.encodings = new String[filesCount];
 			this.destinationPaths = new String[filesCount];
+			this.modNames = new String[filesCount];
 			for (int i = 0; i < filesCount; i++) {
 				this.encodings[i] = customEncoding;
 				this.destinationPaths[i] = customDestinationPath;
@@ -2911,6 +3224,8 @@
 			sourcepathClasspathArg,
 			sourcepathClasspaths,
 			classpaths,
+			modulepathArg,
+			moduleSourcepathArg,
 			extdirsClasspaths,
 			endorsedDirClasspaths,
 			customEncoding);
@@ -2921,13 +3236,55 @@
 				getAllEncodings(specifiedEncodings)));
 	}
 	if (this.pendingErrors != null) {
-		for (Iterator iterator = this.pendingErrors.iterator(); iterator.hasNext(); ) {
-			String message = (String) iterator.next();
+		for (Iterator<String> iterator = this.pendingErrors.iterator(); iterator.hasNext(); ) {
+			String message = iterator.next();
 			this.logger.logPendingError(message);
 		}
 		this.pendingErrors = null;
 	}
 }
+// AspectJ Extension - extracted and made public for use from AJ - this is a copy of the code that
+// was embedded in configure for handling the module def.
+public IModule getModuleDesc(String moduleArgument) {
+	IModule mod = extractModuleDesc(moduleArgument);
+	if (mod != null) {
+		this.module = mod;
+	}
+	return mod;
+}
+// End AspectJ Extension
+private Parser getNewParser() {
+	return new Parser(new ProblemReporter(getHandlingPolicy(), 
+			new CompilerOptions(this.options), getProblemFactory()), false);
+}
+private IModule extractModuleDesc(String fileName) {
+	IModule mod = null;
+	// this.options may not be completely populated yet, and definitely not
+	// validated. Make sure the source level is set for the parser
+	Map<String,String> opts = new HashMap<String, String>(this.options);
+	opts.put(CompilerOptions.OPTION_Source, this.options.get(CompilerOptions.OPTION_Compliance));
+	Parser parser = new Parser(new ProblemReporter(getHandlingPolicy(), 
+			new CompilerOptions(opts), getProblemFactory()), false);
+	if (fileName.toLowerCase().endsWith(IModule.MODULE_INFO_JAVA)) {
+		
+		ICompilationUnit cu = new CompilationUnit(null, fileName, null);
+		CompilationResult compilationResult = new CompilationResult(cu, 0, 1, 10);
+		CompilationUnitDeclaration unit = parser.parse(cu, compilationResult);
+		if (unit.isModuleInfo() && unit.moduleDeclaration != null) {
+			mod = new BasicModule(unit.moduleDeclaration, null);
+		}
+	} else if (fileName.toLowerCase().endsWith(IModule.MODULE_INFO_CLASS)) {
+		try {
+			ClassFileReader reader = ClassFileReader.read(fileName); // Check the absolute path?
+			mod = reader.getModuleDeclaration();
+		} catch (ClassFormatException | IOException e) {
+			e.printStackTrace();
+			throw new IllegalArgumentException(
+					this.bind("configure.invalidModuleDescriptor", fileName)); //$NON-NLS-1$
+		}
+	}
+	return mod;
+}
 
 private static char[][] decodeIgnoreOptionalProblemsFromFolders(String folders) {
 	StringTokenizer tokenizer = new StringTokenizer(folders, File.pathSeparator);
@@ -2953,7 +3310,7 @@
 	return result;
 }
 
-private static String getAllEncodings(Set encodings) {
+private static String getAllEncodings(Set<String> encodings) {
 	int size = encodings.size();
 	String[] allEncodings = new String[size];
 	encodings.toArray(allEncodings);
@@ -2967,7 +3324,7 @@
 	}
 	return String.valueOf(buffer);
 }
-
+@SuppressWarnings("rawtypes")
 private void initializeWarnings(String propertiesFile) {
 	File file = new File(propertiesFile);
 	if (!file.exists()) {
@@ -2991,7 +3348,7 @@
 			}
 		}
 	}
-	for (Iterator iterator = properties.entrySet().iterator(); iterator.hasNext(); ) {
+	for(Iterator iterator = properties.entrySet().iterator(); iterator.hasNext(); ) {
 		Map.Entry entry = (Map.Entry) iterator.next();
 		final String key = entry.getKey().toString();
 		if (key.startsWith("org.aspectj.org.eclipse.jdt.core.compiler.")) { //$NON-NLS-1$
@@ -3040,18 +3397,19 @@
 		case ProblemSeverities.Warning :
 			checkedValue = CompilerOptions.WARNING;
 			break;
+		case ProblemSeverities.Info :
+			checkedValue = CompilerOptions.INFO;
+			break;
 	}
-	Object[] entries = this.options.entrySet().toArray();
-	for (int i = 0, max = entries.length; i < max; i++) {
-		Map.Entry entry = (Map.Entry) entries[i];
-		if (!(entry.getKey() instanceof String))
-			continue;
-		if (!(entry.getValue() instanceof String))
-			continue;
-		if (((String) entry.getValue()).equals(checkedValue)) {
-			this.options.put((String) entry.getKey(), CompilerOptions.IGNORE);
+	Set<Entry<String, String>> entrySet = this.options.entrySet();
+	for (Entry<String, String> entry : entrySet) {
+		if (entry.getValue().equals(checkedValue)) {
+			this.options.put(entry.getKey(), CompilerOptions.IGNORE);
 		}
 	}
+	if (severity == ProblemSeverities.Warning) {
+		disableAll(ProblemSeverities.Info);
+	}
 }
 public String extractDestinationPathFromSourceFile(CompilationResult result) {
 	ICompilationUnit compilationUnit = result.compilationUnit;
@@ -3085,27 +3443,33 @@
 	String defaultEncoding = this.options.get(CompilerOptions.OPTION_Encoding);
 	if (Util.EMPTY_STRING.equals(defaultEncoding))
 		defaultEncoding = null;
-
-	for (int i = 0; i < fileCount; i++) {
-		char[] charName = this.filenames[i].toCharArray();
-		if (knownFileNames.get(charName) != null)
-			throw new IllegalArgumentException(this.bind("unit.more", this.filenames[i])); //$NON-NLS-1$
-		knownFileNames.put(charName, charName);
-		File file = new File(this.filenames[i]);
-		if (!file.exists())
-			throw new IllegalArgumentException(this.bind("unit.missing", this.filenames[i])); //$NON-NLS-1$
-		String encoding = this.encodings[i];
-		if (encoding == null)
-			encoding = defaultEncoding;
-		String fileName;
-		try {
-			fileName = file.getCanonicalPath();
-		} catch (IOException e) {
-			// if we got exception during canonicalization, fall back to the name that was specified
-			fileName = this.filenames[i];
+	
+	for (int round = 0; round < 2; round++) {
+		for (int i = 0; i < fileCount; i++) {
+			char[] charName = this.filenames[i].toCharArray();
+			boolean isModuleInfo = CharOperation.endsWith(charName, TypeConstants.MODULE_INFO_FILE_NAME);
+			if (isModuleInfo == (round==0)) { // 1st round: modules, 2nd round others (to ensure populating pathToModCU well in time)
+				if (knownFileNames.get(charName) != null)
+					throw new IllegalArgumentException(this.bind("unit.more", this.filenames[i])); //$NON-NLS-1$
+				knownFileNames.put(charName, charName);
+				File file = new File(this.filenames[i]);
+				if (!file.exists())
+					throw new IllegalArgumentException(this.bind("unit.missing", this.filenames[i])); //$NON-NLS-1$
+				String encoding = this.encodings[i];
+				if (encoding == null)
+					encoding = defaultEncoding;
+				String fileName;
+				try {
+					fileName = file.getCanonicalPath();
+				} catch (IOException e) {
+					// if we got exception during canonicalization, fall back to the name that was specified
+					fileName = this.filenames[i];
+				}
+				units[i] = new CompilationUnit(null, fileName, encoding, this.destinationPaths[i],
+						shouldIgnoreOptionalProblems(this.ignoreOptionalProblemsFromFolders, fileName.toCharArray()), 
+						this.modNames[i]);
+			}
 		}
-		units[i] = new CompilationUnit(null, fileName, encoding, this.destinationPaths[i],
-				shouldIgnoreOptionalProblems(this.ignoreOptionalProblemsFromFolders, fileName.toCharArray()));
 	}
 	return units;
 }
@@ -3117,18 +3481,34 @@
 
 	// passes the initial set of files to the batch oracle (to avoid finding more than once the same units when case insensitive match)
 	return new IErrorHandlingPolicy() {
+		@Override
 		public boolean proceedOnErrors() {
 			return Main.this.proceedOnError; // stop if there are some errors
 		}
+		@Override
 		public boolean stopOnFirstError() {
 			return false;
 		}
+		@Override
 		public boolean ignoreAllErrors() {
 			return false;
 		}
 	};
 }
-
+private void setJavaHome(String javaHome) {
+	File release = new File(javaHome, "release"); //$NON-NLS-1$
+	Properties prop = new Properties();
+	try {
+		prop.load(new FileReader(release));
+		String ver = prop.getProperty("JAVA_VERSION"); //$NON-NLS-1$
+		if (ver != null)
+			ver = ver.replace("\"", "");  //$NON-NLS-1$//$NON-NLS-2$
+		this.javaHomeCache = new File(javaHome);
+		this.javaHomeChecked = true;
+	} catch (IOException e) {
+		throw new IllegalArgumentException(this.bind("configure.invalidSystem", javaHome)); //$NON-NLS-1$
+	}
+}
 /*
  * External API
  */
@@ -3141,8 +3521,12 @@
 }
 
 public FileSystem getLibraryAccess() {
-	return new FileSystem(this.checkedClasspaths, this.filenames, 
-					this.annotationsFromClasspath && CompilerOptions.ENABLED.equals(this.options.get(CompilerOptions.OPTION_AnnotationBasedNullAnalysis)));
+	FileSystem nameEnvironment = new FileSystem(this.checkedClasspaths, this.filenames, 
+					this.annotationsFromClasspath && CompilerOptions.ENABLED.equals(this.options.get(CompilerOptions.OPTION_AnnotationBasedNullAnalysis)),
+					this.limitedModules);
+	nameEnvironment.module = this.module;
+	processAddonModuleOptions(nameEnvironment);
+	return nameEnvironment;
 }
 
 /*
@@ -3155,91 +3539,130 @@
 /*
  * External API
  */
-protected ArrayList handleBootclasspath(ArrayList bootclasspaths, String customEncoding) {
+protected ArrayList<Classpath> handleBootclasspath(ArrayList<String> bootclasspaths, String customEncoding) {
  	final int bootclasspathsSize;
+ 	ArrayList<Classpath> result = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 	if ((bootclasspaths != null)
-		&& ((bootclasspathsSize = bootclasspaths.size()) != 0))
-	{
-		String[] paths = new String[bootclasspathsSize];
-		bootclasspaths.toArray(paths);
-		bootclasspaths.clear();
-		for (int i = 0; i < bootclasspathsSize; i++) {
-			processPathEntries(DEFAULT_SIZE_CLASSPATH, bootclasspaths,
-				paths[i], customEncoding, false, true);
+		&& ((bootclasspathsSize = bootclasspaths.size()) != 0)) {
+		result = new ArrayList<>(bootclasspathsSize);
+		for (String path : bootclasspaths) {
+			processPathEntries(DEFAULT_SIZE_CLASSPATH, result, path, customEncoding, false, true);
 		}
 	} else {
-		bootclasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
 		try {
-			Util.collectRunningVMBootclasspath(bootclasspaths);
+			Util.collectVMBootclasspath(result, this.javaHomeCache);
 		} catch(IllegalStateException e) {
-			this.logger.logWrongJDK();
-			this.proceed = false;
-			return null;
+			throw new IllegalArgumentException(this.bind("configure.invalidSystem", this.javaHomeCache.toString())); //$NON-NLS-1$
 		}
 	}
-	return bootclasspaths;
+	return result;
 }
-
-/*
- * External API
- */
-protected ArrayList handleClasspath(ArrayList classpaths, String customEncoding) {
-	final int classpathsSize;
-	if ((classpaths != null)
-		&& ((classpathsSize = classpaths.size()) != 0))
-	{
-		String[] paths = new String[classpathsSize];
-		classpaths.toArray(paths);
-		classpaths.clear();
-		for (int i = 0; i < classpathsSize; i++) {
-			processPathEntries(DEFAULT_SIZE_CLASSPATH, classpaths, paths[i],
-					customEncoding, false, true);
-		}
-	} else {
-		// no user classpath specified.
-		classpaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
-		String classProp = System.getProperty("java.class.path"); //$NON-NLS-1$
-		if ((classProp == null) || (classProp.length() == 0)) {
-			addPendingErrors(this.bind("configure.noClasspath")); //$NON-NLS-1$
-			final Classpath classpath = FileSystem.getClasspath(System.getProperty("user.dir"), customEncoding, null, this.options);//$NON-NLS-1$
-			if (classpath != null) {
-				classpaths.add(classpath);
+private void processAddonModuleOptions(FileSystem env) {
+	Map<String, IPackageExport[]> exports = new HashMap<>();
+	for (String option : this.addonExports) {
+		AddExport addExport = ModuleFinder.extractAddonExport(option);
+		if (addExport != null) {
+			String modName = addExport.sourceModuleName;
+			IPackageExport export = addExport.export;
+			IPackageExport[] existing = exports.get(modName);
+			if (existing == null) {
+				existing = new IPackageExport[1];
+				existing[0] = export;
+				exports.put(modName, existing);
+			} else {
+				for (IPackageExport iPackageExport : existing) {
+					if (CharOperation.equals(iPackageExport.name(), export.name())) {
+						throw new IllegalArgumentException(this.bind("configure.duplicateExport")); //$NON-NLS-1$
+					}
+				}
+				IPackageExport[] updated = new IPackageExport[existing.length + 1];
+				System.arraycopy(existing, 0, updated, 0, existing.length);
+				updated[existing.length] = export;
+				exports.put(modName, updated);
 			}
+			env.addModuleUpdate(modName, m -> m.addExports(export.name(), export.targets()), UpdateKind.PACKAGE);
 		} else {
-			StringTokenizer tokenizer = new StringTokenizer(classProp, File.pathSeparator);
-			String token;
-			while (tokenizer.hasMoreTokens()) {
-				token = tokenizer.nextToken();
-				FileSystem.Classpath currentClasspath = FileSystem
-						.getClasspath(token, customEncoding, null, this.options);
-				if (currentClasspath != null) {
-					classpaths.add(currentClasspath);
-				} else if (token.length() != 0) {
-					addPendingErrors(this.bind("configure.incorrectClasspath", token));//$NON-NLS-1$
+			throw new IllegalArgumentException(this.bind("configure.invalidModuleOption", "--add-exports " + option)); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+	for (String option : this.addonReads) {
+		String[] result = ModuleFinder.extractAddonRead(option);
+		if (result != null && result.length == 2) {
+			env.addModuleUpdate(result[0], m -> m.addReads(result[1].toCharArray()), UpdateKind.MODULE);
+		} else {
+			throw new IllegalArgumentException(this.bind("configure.invalidModuleOption", "--add-reads " + option)); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+}
+protected ArrayList<FileSystem.Classpath> handleModulepath(String arg) {
+	ArrayList<String> modulePaths = processModulePathEntries(arg);
+	ArrayList<Classpath> result = new ArrayList<>();
+	if ((modulePaths != null && modulePaths.size() > 0)) {
+		for (String path : modulePaths) {
+			File file = new File(path);
+			if (file.isDirectory()) {
+				// AspectJ bugfix... from:
+				// result =
+				// 		(ArrayList<Classpath>) ModuleFinder.findModules(file, null, getNewParser(), this.options, true);
+				// to:
+				result.addAll(ModuleFinder.findModules(file, null, getNewParser(), this.options, true));
+				// End AspectJ
+			} else {
+				Classpath modulePath = ModuleFinder.findModule(file, null, getNewParser(), this.options, true);
+				if (modulePath != null)
+					result.add(modulePath);
+			}
+		}
+	}
+	// TODO: What about chained jars from MANIFEST.MF? Check with spec
+	return result;
+}
+protected ArrayList<FileSystem.Classpath> handleModuleSourcepath(String arg) {
+	ArrayList<String> modulePaths = processModulePathEntries(arg);
+	ArrayList<FileSystem.Classpath> result = new ArrayList<>();
+	if ((modulePaths != null)
+		&& (modulePaths.size() != 0)) {
+
+		if (this.destinationPath == null) {
+			addPendingErrors(this.bind("configure.missingDestinationPath"));//$NON-NLS-1$
+		}
+		String[] paths = new String[modulePaths.size()];
+		modulePaths.toArray(paths);
+		for (int i = 0; i < paths.length; i++) {
+			File dir = new File(paths[i]);
+			if (dir.isDirectory()) {
+				// 1. Create FileSystem.Classpath for each module
+				// 2. Iterator each module in case of directory for source files and add to this.fileNames
+
+				List<Classpath> modules = ModuleFinder.findModules(dir, this.destinationPath, getNewParser(), this.options, false);
+				for (Classpath classpath : modules) {
+					result.add(classpath);
+					Path modLocation = Paths.get(classpath.getPath()).toAbsolutePath();
+					String destPath = classpath.getDestinationPath();
+					IModule mod = classpath.getModule();
+					String moduleName = mod == null ? null : new String(mod.name());
+					for(int j = 0; j < this.filenames.length; j++) {
+						Path filePath;
+						try {
+							// Get canonical path just as the classpath location is stored with the same.
+							// To avoid mismatch of /USER_JAY and /USE~1 in windows systems.
+							filePath = new File(this.filenames[j]).getCanonicalFile().toPath();
+							if (filePath.startsWith(modLocation)) {
+								this.modNames[j] = moduleName;
+								this.destinationPaths[j] = destPath;
+							}
+						} catch (IOException e) {
+							// Files doesn't exist and perhaps doesn't belong in a module, move on to other files
+							// Use empty module name to distinguish from missing module case
+							this.modNames[j] = ""; //$NON-NLS-1$
+						}
+					}
 				}
 			}
 		}
-	}
-	ArrayList result = new ArrayList();
-	HashMap knownNames = new HashMap();
-	FileSystem.ClasspathSectionProblemReporter problemReporter =
-		new FileSystem.ClasspathSectionProblemReporter() {
-			public void invalidClasspathSection(String jarFilePath) {
-				addPendingErrors(bind("configure.invalidClasspathSection", jarFilePath)); //$NON-NLS-1$
-			}
-			public void multipleClasspathSections(String jarFilePath) {
-				addPendingErrors(bind("configure.multipleClasspathSections", jarFilePath)); //$NON-NLS-1$
-			}
-		};
-	while (! classpaths.isEmpty()) {
-		Classpath current = (Classpath) classpaths.remove(0);
-		String currentPath = current.getPath();
-		if (knownNames.get(currentPath) == null) {
-			knownNames.put(currentPath, current);
-			result.add(current);
-			List linkedJars = current.fetchLinkedJars(problemReporter);
-			if (linkedJars != null) {
-				classpaths.addAll(0, linkedJars);
+		for(int j = 0; j < this.filenames.length; j++) {
+			if (this.modNames[j] == null) {
+				throw new IllegalArgumentException(this.bind("configure.notOnModuleSourcePath", new String[] {this.filenames[j]})); //$NON-NLS-1$
 			}
 		}
 	}
@@ -3248,7 +3671,69 @@
 /*
  * External API
  */
-protected ArrayList handleEndorseddirs(ArrayList endorsedDirClasspaths) {
+protected ArrayList<FileSystem.Classpath> handleClasspath(ArrayList<String> classpaths, String customEncoding) {
+	ArrayList<FileSystem.Classpath> initial = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
+	if (classpaths != null && classpaths.size() > 0) {
+		for (String path : classpaths) {
+			processPathEntries(DEFAULT_SIZE_CLASSPATH, initial, path, customEncoding, false, true);
+		}
+	} else {
+		// no user classpath specified.
+		String classProp = System.getProperty("java.class.path"); //$NON-NLS-1$
+		if ((classProp == null) || (classProp.length() == 0)) {
+			addPendingErrors(this.bind("configure.noClasspath")); //$NON-NLS-1$
+			// AspectJ: Do we need to force ClasspathLocation.BINARY here?
+			final Classpath classpath = FileSystem.getClasspath(System.getProperty("user.dir"), customEncoding, null, this.options);//$NON-NLS-1$
+			if (classpath != null) {
+				initial.add(classpath);
+			}
+		} else {
+			StringTokenizer tokenizer = new StringTokenizer(classProp, File.pathSeparator);
+			String token;
+			while (tokenizer.hasMoreTokens()) {
+				token = tokenizer.nextToken();
+				// AspectJ: Do we need to switch this to force ClasspathLocation.BINARY ?
+				FileSystem.Classpath currentClasspath = FileSystem
+						.getClasspath(token, customEncoding, null, this.options);
+				if (currentClasspath != null) {
+					initial.add(currentClasspath);
+				} else if (token.length() != 0) {
+					addPendingErrors(this.bind("configure.incorrectClasspath", token));//$NON-NLS-1$
+				}
+			}
+		}
+	}
+	ArrayList<Classpath> result = new ArrayList<>();
+	HashMap<String, Classpath> knownNames = new HashMap<>();
+	FileSystem.ClasspathSectionProblemReporter problemReporter =
+		new FileSystem.ClasspathSectionProblemReporter() {
+			@Override
+			public void invalidClasspathSection(String jarFilePath) {
+				addPendingErrors(bind("configure.invalidClasspathSection", jarFilePath)); //$NON-NLS-1$
+			}
+			@Override
+			public void multipleClasspathSections(String jarFilePath) {
+				addPendingErrors(bind("configure.multipleClasspathSections", jarFilePath)); //$NON-NLS-1$
+			}
+		};
+	while (! initial.isEmpty()) {
+		Classpath current = initial.remove(0);
+		String currentPath = current.getPath();
+		if (knownNames.get(currentPath) == null) {
+			knownNames.put(currentPath, current);
+			result.add(current);
+			List<Classpath> linkedJars = current.fetchLinkedJars(problemReporter);
+			if (linkedJars != null) {
+				initial.addAll(0, linkedJars);
+			}
+		}
+	}
+	return result;
+}
+/*
+ * External API
+ */
+protected ArrayList<FileSystem.Classpath> handleEndorseddirs(ArrayList<String> endorsedDirClasspaths) {
  	final File javaHome = getJavaHome();
 	/*
 	 * Feed endorsedDirClasspath according to:
@@ -3257,7 +3742,7 @@
 	 * - else default extensions directory for the platform. (/lib/endorsed)
 	 */
 	if (endorsedDirClasspaths == null) {
-		endorsedDirClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
+		endorsedDirClasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 		String endorsedDirsStr = System.getProperty("java.endorsed.dirs"); //$NON-NLS-1$
 		if (endorsedDirsStr == null) {
 			if (javaHome != null) {
@@ -3276,10 +3761,10 @@
 	 * extdirsNames.
 	 */
 	if (endorsedDirClasspaths.size() != 0) {
+		ArrayList<FileSystem.Classpath> result = new ArrayList<>();
 		File[] directoriesToCheck = new File[endorsedDirClasspaths.size()];
 		for (int i = 0; i < directoriesToCheck.length; i++)
-			directoriesToCheck[i] = new File((String) endorsedDirClasspaths.get(i));
-		endorsedDirClasspaths.clear();
+			directoriesToCheck[i] = new File(endorsedDirClasspaths.get(i));
 		File[][] endorsedDirsJars = getLibrariesFiles(directoriesToCheck);
 		if (endorsedDirsJars != null) {
 			for (int i = 0, max = endorsedDirsJars.length; i < max; i++) {
@@ -3291,7 +3776,7 @@
 									current[j].getAbsolutePath(),
 									null, null, this.options);
 						if (classpath != null) {
-							endorsedDirClasspaths.add(classpath);
+							result.add(classpath);
 						}
 					}
 				} else if (directoriesToCheck[i].isFile()) {
@@ -3302,15 +3787,16 @@
 				}
 			}
 		}
+		return result;
 	}
-	return endorsedDirClasspaths;
+	return FileSystem.EMPTY_CLASSPATH;
 }
 
 /*
  * External API
  * Handle extdirs processing
  */
-protected ArrayList handleExtdirs(ArrayList extdirsClasspaths) {
+protected ArrayList<FileSystem.Classpath> handleExtdirs(ArrayList<String> extdirsClasspaths) {
  	final File javaHome = getJavaHome();
 
 	/*
@@ -3320,7 +3806,7 @@
 	 * - else default extensions directory for the platform.
 	 */
 	if (extdirsClasspaths == null) {
-		extdirsClasspaths = new ArrayList(DEFAULT_SIZE_CLASSPATH);
+		extdirsClasspaths = new ArrayList<>(DEFAULT_SIZE_CLASSPATH);
 		String extdirsStr = System.getProperty("java.ext.dirs"); //$NON-NLS-1$
 		if (extdirsStr == null) {
 			extdirsClasspaths.add(javaHome.getAbsolutePath() + "/lib/ext"); //$NON-NLS-1$
@@ -3336,10 +3822,10 @@
 	 * extdirsNames.
 	 */
 	if (extdirsClasspaths.size() != 0) {
+		ArrayList<FileSystem.Classpath> result = new ArrayList<>();
 		File[] directoriesToCheck = new File[extdirsClasspaths.size()];
 		for (int i = 0; i < directoriesToCheck.length; i++)
-			directoriesToCheck[i] = new File((String) extdirsClasspaths.get(i));
-		extdirsClasspaths.clear();
+			directoriesToCheck[i] = new File(extdirsClasspaths.get(i));
 		File[][] extdirsJars = getLibrariesFiles(directoriesToCheck);
 		if (extdirsJars != null) {
 			for (int i = 0, max = extdirsJars.length; i < max; i++) {
@@ -3351,7 +3837,7 @@
 									current[j].getAbsolutePath(),
 									null, null, this.options);
 						if (classpath != null) {
-							extdirsClasspaths.add(classpath);
+							result.add(classpath);
 						}
 					}
 				} else if (directoriesToCheck[i].isFile()) {
@@ -3361,15 +3847,19 @@
 				}
 			}
 		}
+		return result; 
 	}
 
-	return extdirsClasspaths;
+	return FileSystem.EMPTY_CLASSPATH;
 }
 
 /*
  * External API
  * Handle a single warning token.
 */
+protected void handleInfoToken(String token, boolean isEnabling) {
+	handleErrorOrWarningToken(token, isEnabling, ProblemSeverities.Info);
+}
 protected void handleWarningToken(String token, boolean isEnabling) {
 	handleErrorOrWarningToken(token, isEnabling, ProblemSeverities.Warning);
 }
@@ -3385,6 +3875,9 @@
 			case ProblemSeverities.Warning :
 				this.options.put(compilerOptions, CompilerOptions.WARNING);
 				break;
+			case ProblemSeverities.Info :
+				this.options.put(compilerOptions, CompilerOptions.INFO);
+				break;
 			default:
 				this.options.put(compilerOptions, CompilerOptions.IGNORE);
 		}
@@ -3402,6 +3895,12 @@
 					this.options.put(compilerOptions, CompilerOptions.IGNORE);
 				}
 				break;
+			case ProblemSeverities.Info :
+				currentValue = this.options.get(compilerOptions);
+				if (CompilerOptions.INFO.equals(currentValue)) {
+					this.options.put(compilerOptions, CompilerOptions.IGNORE);
+				}
+				break;
 			default:
 				this.options.put(compilerOptions, CompilerOptions.IGNORE);
 		}
@@ -3413,6 +3912,7 @@
 		case 'a' :
 			if (token.equals("allDeprecation")) { //$NON-NLS-1$
 				setSeverity(CompilerOptions.OPTION_ReportDeprecation, severity, isEnabling);
+				setSeverity(CompilerOptions.OPTION_ReportTerminalDeprecation, severity, isEnabling);
 				this.options.put(
 					CompilerOptions.OPTION_ReportDeprecationInDeprecatedCode,
 					isEnabling ? CompilerOptions.ENABLED : CompilerOptions.DISABLED);
@@ -3526,6 +4026,9 @@
 			} else if (token.equals("enumIdentifier")) { //$NON-NLS-1$
 				setSeverity(CompilerOptions.OPTION_ReportEnumIdentifier, severity, isEnabling);
 				return;
+			} else if (token.equals("exports")) { //$NON-NLS-1$
+				setSeverity(CompilerOptions.OPTION_ReportAPILeak, severity, isEnabling);
+				return;
 			}
 			break;
 		case 'f' :
@@ -3737,6 +4240,9 @@
 				} else {
 					throw new IllegalArgumentException(this.bind("configure.missingJavadocCommentsVisibility", token)); //$NON-NLS-1$
 				}
+			} else if (token.equals("module")) { //$NON-NLS-1$
+				setSeverity(CompilerOptions.OPTION_ReportUnstableAutoModuleName, severity, isEnabling);
+				return;
 			}
 			break;
 		case 'n' :
@@ -3858,6 +4364,15 @@
 				setSeverity(CompilerOptions.OPTION_ReportPotentiallyUnclosedCloseable, severity, isEnabling);
 				setSeverity(CompilerOptions.OPTION_ReportExplicitlyClosedAutoCloseable, severity, isEnabling);
 				return;
+			} else if (token.equals("removal")) { //$NON-NLS-1$
+				setSeverity(CompilerOptions.OPTION_ReportTerminalDeprecation, severity, isEnabling);
+				this.options.put(
+					CompilerOptions.OPTION_ReportDeprecationInDeprecatedCode,
+					CompilerOptions.DISABLED);
+				this.options.put(
+					CompilerOptions.OPTION_ReportDeprecationWhenOverridingDeprecatedMethod,
+					CompilerOptions.DISABLED);
+				return;
 			}
 			break;
 		case 's' :
@@ -3971,6 +4486,12 @@
 			} else if (token.equals("unchecked") || token.equals("unsafe")) {//$NON-NLS-1$ //$NON-NLS-2$
 				setSeverity(CompilerOptions.OPTION_ReportUncheckedTypeOperation, severity, isEnabling);
 				return;
+			} else if (token.equals("unlikelyCollectionMethodArgumentType")) { //$NON-NLS-1$
+				setSeverity(CompilerOptions.OPTION_ReportUnlikelyCollectionMethodArgumentType, severity, isEnabling);
+				return;
+			} else if (token.equals("unlikelyEqualsArgumentType")) { //$NON-NLS-1$
+				setSeverity(CompilerOptions.OPTION_ReportUnlikelyEqualsArgumentType, severity, isEnabling);
+				return;
 			} else if (token.equals("unnecessaryElse")) {//$NON-NLS-1$
 				setSeverity(CompilerOptions.OPTION_ReportUnnecessaryElse, severity, isEnabling);
 				return;
@@ -4054,6 +4575,9 @@
 	}
 	String message = null;
 	switch(severity) {
+		case ProblemSeverities.Info:
+			message = this.bind("configure.invalidInfo", token); //$NON-NLS-1$
+			break;
 		case ProblemSeverities.Warning :
 			message = this.bind("configure.invalidWarning", token); //$NON-NLS-1$
 			break;
@@ -4073,7 +4597,7 @@
  * @deprecated - use {@link #initialize(PrintWriter, PrintWriter, boolean, Map, CompilationProgress)} instead
  *                       e.g. initialize(outWriter, errWriter, systemExit, customDefaultOptions, null)
  */
-protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit, Map customDefaultOptions) {
+protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit, Map<String, String> customDefaultOptions) {
 	this.initialize(outWriter, errWriter, systemExit, customDefaultOptions, null /* progress */);
 }
 protected void initialize(PrintWriter outWriter, PrintWriter errWriter, boolean systemExit, Map<String, String> customDefaultOptions, CompilationProgress compilationProgress) {
@@ -4102,7 +4626,7 @@
 protected void initializeAnnotationProcessorManager() {
 	String className = "org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BatchAnnotationProcessorManager"; //$NON-NLS-1$
 	try {
-		Class c = Class.forName(className);
+		Class<?> c = Class.forName(className);
 		AbstractAnnotationProcessorManager annotationManager = (AbstractAnnotationProcessorManager) c.newInstance();
 		annotationManager.configure(this, this.expandedCommandLine);
 		annotationManager.setErr(this.err);
@@ -4196,61 +4720,66 @@
  *  Low-level API performing the actual compilation
  */
 public void performCompilation() {
-
 	this.startTime = System.currentTimeMillis();
 
 	FileSystem environment = getLibraryAccess();
-	this.compilerOptions = new CompilerOptions(this.options);
-	this.compilerOptions.performMethodsFullRecovery = false;
-	this.compilerOptions.performStatementsRecovery = false;
-	this.batchCompiler =
-		new Compiler(
-			environment,
-			getHandlingPolicy(),
-			this.compilerOptions,
-			getBatchRequestor(),
-			getProblemFactory(),
-			this.out,
-			this.progress);
-	this.batchCompiler.remainingIterations = this.maxRepetition-this.currentRepetition/*remaining iterations including this one*/;
-	// temporary code to allow the compiler to revert to a single thread
-	String setting = System.getProperty("jdt.compiler.useSingleThread"); //$NON-NLS-1$
-	this.batchCompiler.useSingleThread = setting != null && setting.equals("true"); //$NON-NLS-1$
-
-	if (this.compilerOptions.complianceLevel >= ClassFileConstants.JDK1_6
-			&& this.compilerOptions.processAnnotations) {
-		if (checkVMVersion(ClassFileConstants.JDK1_6)) {
-			initializeAnnotationProcessorManager();
-			if (this.classNames != null) {
-				this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment));
-			}
-		} else {
-			// report a warning
-			this.logger.logIncorrectVMVersionForAnnotationProcessing();
-		}
-	}
-
-	// set the non-externally configurable options.
-	this.compilerOptions.verbose = this.verbose;
-	this.compilerOptions.produceReferenceInfo = this.produceRefInfo;
 	try {
-		this.logger.startLoggingSources();
-		this.batchCompiler.compile(getCompilationUnits());
-	} finally {
-		this.logger.endLoggingSources();
-	}
+		this.compilerOptions = new CompilerOptions(this.options);
+		this.compilerOptions.performMethodsFullRecovery = false;
+		this.compilerOptions.performStatementsRecovery = false;
+		this.batchCompiler =
+				new Compiler(
+						environment,
+						getHandlingPolicy(),
+						this.compilerOptions,
+						getBatchRequestor(),
+						getProblemFactory(),
+						this.out,
+						this.progress);
+		this.batchCompiler.remainingIterations = this.maxRepetition-this.currentRepetition/*remaining iterations including this one*/;
+		// temporary code to allow the compiler to revert to a single thread
+		String setting = System.getProperty("jdt.compiler.useSingleThread"); //$NON-NLS-1$
+		this.batchCompiler.useSingleThread = setting != null && setting.equals("true"); //$NON-NLS-1$
 
-	if (this.extraProblems != null) {
-		loggingExtraProblems();
-		this.extraProblems = null;
-	}
-	if (this.compilerStats != null) {
-		this.compilerStats[this.currentRepetition] = this.batchCompiler.stats;
-	}
-	this.logger.printStats();
+		if (this.compilerOptions.complianceLevel >= ClassFileConstants.JDK1_6
+				&& this.compilerOptions.processAnnotations) {
+			if (checkVMVersion(ClassFileConstants.JDK1_6)) {
+				initializeAnnotationProcessorManager();
+				if (this.classNames != null) {
+					this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment));
+				}
+			} else {
+				// report a warning
+				this.logger.logIncorrectVMVersionForAnnotationProcessing();
+			}
+			if (checkVMVersion(ClassFileConstants.JDK9)) {
+				initRootModules(this.batchCompiler.lookupEnvironment, environment);
+			}
+		}
 
+		// set the non-externally configurable options.
+		this.compilerOptions.verbose = this.verbose;
+		this.compilerOptions.produceReferenceInfo = this.produceRefInfo;
+		try {
+			this.logger.startLoggingSources();
+			this.batchCompiler.compile(getCompilationUnits());
+		} finally {
+			this.logger.endLoggingSources();
+		}
+
+		if (this.extraProblems != null) {
+			loggingExtraProblems();
+			this.extraProblems = null;
+		}
+		if (this.compilerStats != null) {
+			this.compilerStats[this.currentRepetition] = this.batchCompiler.stats;
+		}
+		this.logger.printStats();
+	}
+	finally {
 	// cleanup
-	environment.cleanup();
+		environment.cleanup();
+	}
 }
 protected void loggingExtraProblems() {
 	this.logger.loggingExtraProblems(this);
@@ -4270,44 +4799,114 @@
 			}));
 	this.logger.flush();
 }
+// AspectJ: from private to protected
+protected void initRootModules(LookupEnvironment environment, FileSystem fileSystem) {
+	Map<String, String> map = new HashMap<>();
+	for (String m : this.rootModules) {
+		ModuleBinding mod = environment.getModule(m.toCharArray());
+		if (mod == null) {
+			throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$
+		}
+		PackageBinding[] exports = mod.getExports();
+		for (PackageBinding packageBinding : exports) {
+			String qName = CharOperation.toString(packageBinding.compoundName);
+			String existing = map.get(qName);
+			if (existing != null) {
+				throw new IllegalArgumentException(this.bind("configure.packageConflict", new String[] {qName, existing, m})); //$NON-NLS-1$
+				// report an error and bail out
+			}
+			map.put(qName, m);
+		}
+	}
+	if (this.limitedModules != null) {
+		for (String m : this.limitedModules) {
+			ModuleBinding mod = environment.getModule(m.toCharArray());
+			if (mod == null) {
+				throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$
+			}
+		}
+	}
+}
 private ReferenceBinding[] processClassNames(LookupEnvironment environment) {
 	// check for .class file presence in case of apt processing
 	int length = this.classNames.length;
 	ReferenceBinding[] referenceBindings = new ReferenceBinding[length];
+	ModuleBinding[] modules = new ModuleBinding[length];
+	Set<ModuleBinding> modSet = new HashSet<>();
+	String[] typeNames = new String[length];
+	if (this.complianceLevel <= ClassFileConstants.JDK1_8) {
+		typeNames = this.classNames;
+	} else {
+		for (int i = 0; i < length; i++) {
+			String currentName = this.classNames[i];
+			int idx = currentName.indexOf('/');
+			ModuleBinding mod = null;
+			if (idx > 0) {
+				String m = currentName.substring(0, idx);
+				mod = environment.getModule(m.toCharArray());
+				if (mod == null) {
+					throw new IllegalArgumentException(this.bind("configure.invalidModuleName", m)); //$NON-NLS-1$
+				}
+				modules[i] = mod;
+				modSet.add(mod);
+				currentName = currentName.substring(idx + 1);
+			}
+			typeNames[i] = currentName;
+		}
+		for (ModuleBinding mod : modSet) {
+			mod.getExports();
+			mod.getRequires();
+			mod.getOpens();
+			mod.getServices();
+		}
+	}
+
 	for (int i = 0; i < length; i++) {
-		String currentName = this.classNames[i];
 		char[][] compoundName = null;
-		if (currentName.indexOf('.') != -1) {
+		String cls = typeNames[i];
+		if (cls.indexOf('.') != -1) {
 			// consider names with '.' as fully qualified names
-			char[] typeName = currentName.toCharArray();
+			char[] typeName = cls.toCharArray();
 			compoundName = CharOperation.splitOn('.', typeName);
 		} else {
-			compoundName = new char[][] { currentName.toCharArray() };
+			compoundName = new char[][] { cls.toCharArray() };
 		}
-		ReferenceBinding type = environment.getType(compoundName);
+		ModuleBinding mod = modules[i];
+		ReferenceBinding type = mod != null ? environment.getType(compoundName, mod) : environment.getType(compoundName);
 		if (type != null && type.isValidBinding()) {
 			if (type.isBinaryBinding()) {
 				referenceBindings[i] = type;
+				type.superclass();
 			}
 		} else {
 			throw new IllegalArgumentException(
-					this.bind("configure.invalidClassName", currentName));//$NON-NLS-1$
+					this.bind("configure.invalidClassName", this.classNames[i]));//$NON-NLS-1$
 		}
 	}
 	return referenceBindings;
 }
+private ArrayList<String> processModulePathEntries(String arg) {
+	ArrayList<String> paths = new ArrayList<>();
+	if (arg == null)
+		return paths;
+	StringTokenizer tokenizer = new StringTokenizer(arg, File.pathSeparator, false);
+	while (tokenizer.hasMoreTokens()) {
+		paths.add(tokenizer.nextToken());
+	}
+	return paths;
+}
 /*
  * External API
  */
-public void processPathEntries(final int defaultSize, final ArrayList paths,
+public void processPathEntries(final int defaultSize, final ArrayList<FileSystem.Classpath> paths,
 			final String currentPath, String customEncoding, boolean isSourceOnly,
 			boolean rejectDestinationPathOnJars) {
 	String currentClasspathName = null;
 	String currentDestinationPath = null;
-	ArrayList currentRuleSpecs = new ArrayList(defaultSize);
+	ArrayList<String> currentRuleSpecs = new ArrayList<>(defaultSize);
 	StringTokenizer tokenizer = new StringTokenizer(currentPath,
 			File.pathSeparator + "[]", true); //$NON-NLS-1$
-	ArrayList tokens = new ArrayList();
+	ArrayList<String> tokens = new ArrayList<>();
 	while (tokenizer.hasMoreTokens()) {
 		tokens.add(tokenizer.nextToken());
 	}
@@ -4341,7 +4940,7 @@
 	String token = null;
 	int cursor = 0, tokensNb = tokens.size(), bracket = -1;
 	while (cursor < tokensNb && state != error) {
-		token = (String) tokens.get(cursor++);
+		token = tokens.get(cursor++);
 		if (token.equals(File.pathSeparator)) {
 			switch (state) {
 			case start:
@@ -4446,7 +5045,7 @@
 				break;
 			case bracketClosed:
 				for (int i = bracket; i < cursor ; i++) {
-					currentClasspathName += (String) tokens.get(i);
+					currentClasspathName += tokens.get(i);
 				}
 				state = readyToClose;
 				break;
@@ -4481,7 +5080,7 @@
 	}
 }
 
-private int processPaths(String[] args, int index, String currentArg, ArrayList paths) {
+private int processPaths(String[] args, int index, String currentArg, ArrayList<String> paths) {
 	int localIndex = index;
 	int count = 0;
 	for (int i = 0, max = currentArg.length(); i < max; i++) {
@@ -4543,13 +5142,6 @@
 	}
 	return localIndex - index;
 }
-
-// AspectJ Extension
-// For AspectJ we handle files in a separate arg parser, in the future make this a protected method for extension
-private boolean hasNoFiles(int filesCount) {
-	return false;
-}
-// End AspectJ Extension
 private int processPaths(String[] args, int index, String currentArg, String[] paths) {
 	int localIndex = index;
 	int count = 0;
@@ -4639,21 +5231,42 @@
 /*
  * External API
  */
-protected void setPaths(ArrayList bootclasspaths,
+protected void setPaths(ArrayList<String> bootclasspaths,
 		String sourcepathClasspathArg,
-		ArrayList sourcepathClasspaths,
-		ArrayList classpaths,
-		ArrayList extdirsClasspaths,
-		ArrayList endorsedDirClasspaths,
+		ArrayList<String> sourcepathClasspaths,
+		ArrayList<String> classpaths,
+		String modulePath,
+		String moduleSourcepath,
+		ArrayList<String> extdirsClasspaths,
+		ArrayList<String> endorsedDirClasspaths,
 		String customEncoding) {
 
+	if (this.complianceLevel == 0) {
+		String version = this.options.get(CompilerOptions.OPTION_Compliance);
+		this.complianceLevel = CompilerOptions.versionToJdkLevel(version);
+	}
 	// process bootclasspath, classpath and sourcepaths
- 	bootclasspaths = handleBootclasspath(bootclasspaths, customEncoding);
+	ArrayList<Classpath> allPaths = null;
+	long jdkLevel = validateClasspathOptions(bootclasspaths, endorsedDirClasspaths, extdirsClasspaths);
 
-	classpaths = handleClasspath(classpaths, customEncoding);
+	if (this.releaseVersion != null && this.complianceLevel < jdkLevel) {
+		// TODO: Revisit for access rules
+		allPaths = new ArrayList<Classpath>();
+		allPaths.add(
+				FileSystem.getOlderSystemRelease(this.javaHomeCache.getAbsolutePath(), this.releaseVersion, null));
+	} else {
+		allPaths = handleBootclasspath(bootclasspaths, customEncoding);
+	}
 
+	List<FileSystem.Classpath> cp = handleClasspath(classpaths, customEncoding);
+
+	List<FileSystem.Classpath> mp = handleModulepath(modulePath);
+
+	List<FileSystem.Classpath> msp = handleModuleSourcepath(moduleSourcepath);
+
+	ArrayList<FileSystem.Classpath> sourcepaths = new ArrayList<>();
 	if (sourcepathClasspathArg != null) {
-		processPathEntries(DEFAULT_SIZE_CLASSPATH, sourcepathClasspaths,
+		processPathEntries(DEFAULT_SIZE_CLASSPATH, sourcepaths,
 			sourcepathClasspathArg, customEncoding, true, false);
 	}
 
@@ -4663,9 +5276,9 @@
 	 * - else java.ext.dirs if defined;
 	 * - else default extensions directory for the platform.
 	 */
-	extdirsClasspaths = handleExtdirs(extdirsClasspaths);
+	List<FileSystem.Classpath> extdirs = handleExtdirs(extdirsClasspaths);
 
-	endorsedDirClasspaths = handleEndorseddirs(endorsedDirClasspaths);
+	List<FileSystem.Classpath> endorsed = handleEndorseddirs(endorsedDirClasspaths);
 
 	/*
 	 * Concatenate classpath entries
@@ -4675,24 +5288,27 @@
 	 * entries are searched for both sources and binaries except
 	 * the sourcepath entries which are searched for sources only.
 	 */
-	bootclasspaths.addAll(0, endorsedDirClasspaths);
-	bootclasspaths.addAll(extdirsClasspaths);
-	bootclasspaths.addAll(sourcepathClasspaths);
-	bootclasspaths.addAll(classpaths);
-	classpaths = bootclasspaths;
-	classpaths = FileSystem.ClasspathNormalizer.normalize(classpaths);
-	this.checkedClasspaths = new FileSystem.Classpath[classpaths.size()];
-	classpaths.toArray(this.checkedClasspaths);
+	allPaths.addAll(0, endorsed);
+	allPaths.addAll(extdirs);
+	allPaths.addAll(sourcepaths);
+	allPaths.addAll(cp);
+	allPaths.addAll(mp);
+	allPaths.addAll(msp);
+	allPaths = FileSystem.ClasspathNormalizer.normalize(allPaths);
+	this.checkedClasspaths = new FileSystem.Classpath[allPaths.size()];
+	allPaths.toArray(this.checkedClasspaths);
 	this.logger.logClasspath(this.checkedClasspaths);
 
 	if (this.annotationPaths != null && CompilerOptions.ENABLED.equals(this.options.get(CompilerOptions.OPTION_AnnotationBasedNullAnalysis))) {
-		for (FileSystem.Classpath cp : this.checkedClasspaths) {
-			if (cp instanceof ClasspathJar)
-				((ClasspathJar) cp).annotationPaths = this.annotationPaths;
+		for (FileSystem.Classpath c : this.checkedClasspaths) {
+			if (c instanceof ClasspathJar)
+				((ClasspathJar) c).annotationPaths = this.annotationPaths;
+			else if (c instanceof ClasspathJrt)
+				((ClasspathJrt) c).annotationPaths = this.annotationPaths;
 		}
 	}
 }
-private static boolean shouldIgnoreOptionalProblems(char[][] folderNames, char[] fileName) {
+protected final static boolean shouldIgnoreOptionalProblems(char[][] folderNames, char[] fileName) {
 	if (folderNames == null || fileName == null) {
 		return false;
 	}
@@ -4704,9 +5320,32 @@
 	}
 	return false;
 }
+protected long validateClasspathOptions(ArrayList<String> bootclasspaths, ArrayList<String> endorsedDirClasspaths, ArrayList<String> extdirsClasspaths) {
+	if (this.complianceLevel > ClassFileConstants.JDK1_8) {
+		if (bootclasspaths != null && bootclasspaths.size() > 0)
+			throw new IllegalArgumentException(
+				this.bind("configure.unsupportedOption", "-bootclasspath")); //$NON-NLS-1$ //$NON-NLS-2$
+		if (extdirsClasspaths != null && extdirsClasspaths.size() > 0)
+			throw new IllegalArgumentException(
+				this.bind("configure.unsupportedOption", "-extdirs")); //$NON-NLS-1$ //$NON-NLS-2$
+		if (endorsedDirClasspaths != null && endorsedDirClasspaths.size() > 0)
+			throw new IllegalArgumentException(
+				this.bind("configure.unsupportedOption", "-endorseddirs")); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+	long jdkLevel = Util.getJDKLevel(getJavaHome());
+	if (jdkLevel < ClassFileConstants.JDK9 && this.releaseVersion != null) {
+		throw new IllegalArgumentException(
+				this.bind("configure.unsupportedReleaseOption")); //$NON-NLS-1$
+	}
+	return jdkLevel;
+}
 protected void validateOptions(boolean didSpecifyCompliance) {
 	if (didSpecifyCompliance) {
-		Object version = this.options.get(CompilerOptions.OPTION_Compliance);
+		String version = this.options.get(CompilerOptions.OPTION_Compliance);
+		if (this.releaseVersion != null) {
+			throw new IllegalArgumentException(
+					this.bind("configure.unsupportedWithRelease", version));//$NON-NLS-1$
+		}
 		if (CompilerOptions.VERSION_1_3.equals(version)) {
 			if (!this.didSpecifySource) this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3);
 			if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1);
@@ -4783,7 +5422,50 @@
 				this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_8);
 				if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8);
 			}
+		} else if (CompilerOptions.VERSION_9.equals(version)) {
+			if (this.didSpecifySource) {
+				Object source = this.options.get(CompilerOptions.OPTION_Source);
+				if (CompilerOptions.VERSION_1_3.equals(source)
+						|| CompilerOptions.VERSION_1_4.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
+				} else if (CompilerOptions.VERSION_1_5.equals(source)
+						|| CompilerOptions.VERSION_1_6.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
+				} else if (CompilerOptions.VERSION_1_7.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
+				} else if (CompilerOptions.VERSION_1_8.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8);
+				} else if (CompilerOptions.VERSION_9.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+				}
+			} else {
+				this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_9);
+				if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+			}
+		} else if (CompilerOptions.VERSION_10.equals(version)) {
+			if (this.didSpecifySource) {
+				Object source = this.options.get(CompilerOptions.OPTION_Source);
+				if (CompilerOptions.VERSION_1_3.equals(source)
+						|| CompilerOptions.VERSION_1_4.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4);
+				} else if (CompilerOptions.VERSION_1_5.equals(source)
+						|| CompilerOptions.VERSION_1_6.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6);
+				} else if (CompilerOptions.VERSION_1_7.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7);
+				} else if (CompilerOptions.VERSION_1_8.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8);
+				} else if (CompilerOptions.VERSION_9.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+				} else if (CompilerOptions.VERSION_10.equals(source)) {
+					if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_10);
+				}
+			} else {
+				this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_10);
+				if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_10);
+			}
 		}
+
 	} else if (this.didSpecifySource) {
 		Object version = this.options.get(CompilerOptions.OPTION_Source);
 		// default is source 1.3 target 1.2 and compliance 1.4
@@ -4802,29 +5484,46 @@
 		} else if (CompilerOptions.VERSION_1_8.equals(version)) {
 			if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_8);
 			if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8);
+		} else if (CompilerOptions.VERSION_9.equals(version)) {
+			if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_9);
+			if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9);
+		} else if (CompilerOptions.VERSION_10.equals(version)) {
+			if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_10);
+			if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_10);
 		}
 	}
 
 	final String sourceVersion = this.options.get(CompilerOptions.OPTION_Source);
-	final String compliance = this.options.get(CompilerOptions.OPTION_Compliance);
-	if (sourceVersion.equals(CompilerOptions.VERSION_1_8)
-			&& CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_8) {
+	if (this.complianceLevel == 0) {
+		final String compliance = this.options.get(CompilerOptions.OPTION_Compliance);
+		this.complianceLevel = CompilerOptions.versionToJdkLevel(compliance);
+	}
+	if (sourceVersion.equals(CompilerOptions.VERSION_10)
+			&& this.complianceLevel < ClassFileConstants.JDK10) {
+		// compliance must be 10 if source is 10
+		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_10)); //$NON-NLS-1$
+	} else if (sourceVersion.equals(CompilerOptions.VERSION_9)
+			&& this.complianceLevel < ClassFileConstants.JDK9) {
+		// compliance must be 9 if source is 9
+		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_9)); //$NON-NLS-1$
+	} else if (sourceVersion.equals(CompilerOptions.VERSION_1_8)
+			&& this.complianceLevel < ClassFileConstants.JDK1_8) {
 		// compliance must be 1.8 if source is 1.8
 		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_8)); //$NON-NLS-1$
 	} else if (sourceVersion.equals(CompilerOptions.VERSION_1_7)
-			&& CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_7) {
+			&& this.complianceLevel < ClassFileConstants.JDK1_7) {
 		// compliance must be 1.7 if source is 1.7
 		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_7)); //$NON-NLS-1$
 	} else if (sourceVersion.equals(CompilerOptions.VERSION_1_6)
-			&& CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_6) {
+			&& this.complianceLevel < ClassFileConstants.JDK1_6) {
 		// compliance must be 1.6 if source is 1.6
 		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_6)); //$NON-NLS-1$
 	} else if (sourceVersion.equals(CompilerOptions.VERSION_1_5)
-			&& CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_5) {
+			&& this.complianceLevel < ClassFileConstants.JDK1_5) {
 		// compliance must be 1.5 if source is 1.5
 		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_5)); //$NON-NLS-1$
 	} else if (sourceVersion.equals(CompilerOptions.VERSION_1_4)
-			&& CompilerOptions.versionToJdkLevel(compliance) < ClassFileConstants.JDK1_4) {
+			&& this.complianceLevel < ClassFileConstants.JDK1_4) {
 		// compliance must be 1.4 if source is 1.4
 		throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_4)); //$NON-NLS-1$
 	}
@@ -4842,7 +5541,7 @@
 			if (this.didSpecifySource && CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_4) {
 				throw new IllegalArgumentException(this.bind("configure.incompatibleSourceForCldcTarget", targetVersion, sourceVersion)); //$NON-NLS-1$
 			}
-			if (CompilerOptions.versionToJdkLevel(compliance) >= ClassFileConstants.JDK1_5) {
+			if (this.complianceLevel >= ClassFileConstants.JDK1_5) {
 				throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForCldcTarget", targetVersion, sourceVersion)); //$NON-NLS-1$
 			}
 		} else {
@@ -4872,7 +5571,7 @@
 				throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_4)); //$NON-NLS-1$
 			}
 			// target cannot be greater than compliance level
-			if (CompilerOptions.versionToJdkLevel(compliance) < CompilerOptions.versionToJdkLevel(targetVersion)){
+			if (this.complianceLevel < CompilerOptions.versionToJdkLevel(targetVersion)){
 				throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForTarget", this.options.get(CompilerOptions.OPTION_Compliance), targetVersion)); //$NON-NLS-1$
 			}
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.java
new file mode 100644
index 0000000..7bdda16
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/ModuleFinder.java
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.batch;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.zip.ZipFile;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.PackageExportImpl;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+
+public class ModuleFinder {
+
+	public static List<FileSystem.Classpath> findModules(File f, String destinationPath, Parser parser, Map<String, String> options, boolean isModulepath) {
+		List<FileSystem.Classpath> collector = new ArrayList<>();
+		scanForModules(destinationPath, parser, options, isModulepath, false, collector, f);
+		return collector;
+	}
+
+	protected static FileSystem.Classpath findModule(final File file, String destinationPath, Parser parser,
+			Map<String, String> options, boolean isModulepath) {
+		FileSystem.Classpath modulePath = FileSystem.getClasspath(file.getAbsolutePath(), null, !isModulepath, null,
+				destinationPath == null ? null : (destinationPath + File.separator + file.getName()), options);
+		if (modulePath != null) {
+			scanForModule(modulePath, file, parser, isModulepath);
+		}
+		return modulePath;
+	}
+	protected static void scanForModules(String destinationPath, Parser parser, Map<String, String> options, boolean isModulepath, 
+			boolean thisAnAutomodule, List<FileSystem.Classpath> collector, final File file) {
+		FileSystem.Classpath entry = FileSystem.getClasspath(
+				file.getAbsolutePath(),
+				null,
+				!isModulepath,
+				null,
+				destinationPath == null ? null : (destinationPath + File.separator + file.getName()), 
+				options);
+		if (entry != null) {
+			IModule module = scanForModule(entry, file, parser, thisAnAutomodule);
+			if (module != null) {
+				collector.add(entry);
+			} else {
+				if (file.isDirectory()) {
+					File[] files = file.listFiles();
+					for (File f : files) {
+						scanForModules(destinationPath, parser, options, isModulepath, isModulepath, collector, f);
+					}
+				}
+			}
+		}
+	}
+	protected static IModule scanForModule(FileSystem.Classpath modulePath, final File file, Parser parser, boolean considerAutoModules) {
+		IModule module = null;
+		if (file.isDirectory()) {
+			String[] list = file.list(new FilenameFilter() {
+				@Override
+				public boolean accept(File dir, String name) {
+					if (dir == file && (name.equalsIgnoreCase(IModule.MODULE_INFO_CLASS)
+							|| name.equalsIgnoreCase(IModule.MODULE_INFO_JAVA))) {
+						return true;
+					}
+					return false;
+				}
+			});
+			if (list.length > 0) {
+				String fileName = list[0];
+				switch (fileName) {
+					case IModule.MODULE_INFO_CLASS:
+						module = ModuleFinder.extractModuleFromClass(new File(file, fileName), modulePath);
+						break;
+					case IModule.MODULE_INFO_JAVA:
+						module = ModuleFinder.extractModuleFromSource(new File(file, fileName), parser, modulePath);
+						if (module == null)
+							return null;
+						String modName = new String(module.name());
+						if (!modName.equals(file.getName())) {
+							throw new IllegalArgumentException("module name " + modName + " does not match expected name " + file.getName()); //$NON-NLS-1$ //$NON-NLS-2$
+						}
+						break;
+				}
+			}
+		} else {
+			String moduleDescPath = getModulePathForArchive(file);
+			if (moduleDescPath != null) {
+				module = extractModuleFromArchive(file, modulePath, moduleDescPath);
+			}
+		}
+		if (considerAutoModules && module == null && !(modulePath instanceof ClasspathJrt)) {
+			module = IModule.createAutomatic(getFileName(file), file.isFile(), getManifest(file));
+		}
+		if (module != null)
+			modulePath.acceptModule(module);
+		return module;
+	}
+	private static Manifest getManifest(File file) {
+		if (getModulePathForArchive(file) == null)
+			return null;
+		try (JarFile jar = new JarFile(file)) {
+			return jar.getManifest();
+		} catch (IOException e) {
+			return null;
+		}
+	}
+	private static String getFileName(File file) {
+		String name = file.getName();
+		int index = name.lastIndexOf('.');
+		if (index == -1)
+			return name;
+		return name.substring(0, index);
+	}
+	/**
+	 * Extracts the single reads clause from the given
+	 * command line option (--add-reads). The result is a String[] with two
+	 * element, first being the source module and second being the target module.
+	 * The expected format is: 
+	 *  --add-reads <source-module>=<target-module>
+	 * @param option
+	 * @return a String[] with source and target module of the "reads" clause. 
+	 */
+	protected static String[] extractAddonRead(String option) {
+		StringTokenizer tokenizer = new StringTokenizer(option, "="); //$NON-NLS-1$
+		String source = null;
+		String target = null;
+		if (tokenizer.hasMoreTokens()) {
+			source = tokenizer.nextToken();
+		} else {
+			// Handle error
+			return null;
+		}
+		if (tokenizer.hasMoreTokens()) {
+			target = tokenizer.nextToken();
+		} else {
+			// Handle error
+			return null;
+		}
+ 		return new String[]{source, target};
+	}
+	/**
+	 * Simple structure representing one <code>--add-exports</code> value.
+	 */
+	static class AddExport {
+		/** the name of the exporting module. */
+		public final String sourceModuleName;
+		/** the export structure */
+		public final IModule.IPackageExport export;
+		public AddExport(String moduleName, IPackageExport export) {
+			this.sourceModuleName = moduleName;
+			this.export = export;
+		}
+	}
+	/**
+	 * Parses the --add-exports command line option and returns the package export definitions.
+	 *
+	 * <p>
+	 * The expected format is:
+	 * </p>
+	 * <p>
+	 * {@code
+	 *   --add-exports <source-module>/<package>=<target-module>(,<target-module>)*
+	 * }
+	 * </p>
+	 * @param option the option to parse
+	 * @return an {@link AddExport} structure.
+	 */
+	protected static AddExport extractAddonExport(String option) {
+		StringTokenizer tokenizer = new StringTokenizer(option, "/"); //$NON-NLS-1$
+		String source = null;
+		String pack = null;
+		List<String> targets = new ArrayList<>();
+		if (tokenizer.hasMoreTokens()) {
+			source = tokenizer.nextToken("/"); //$NON-NLS-1$
+		} else {
+			// Handle error
+			return null;
+		}
+		if (tokenizer.hasMoreTokens()) {
+			pack = tokenizer.nextToken("/="); //$NON-NLS-1$
+		} else {
+			// Handle error
+			return null;
+		}
+		while (tokenizer.hasMoreTokens()) {
+			targets.add(tokenizer.nextToken("=,")); //$NON-NLS-1$
+		}
+		PackageExportImpl export = new PackageExportImpl();
+		export.pack = pack.toCharArray();
+		export.exportedTo = new char[targets.size()][];
+		for(int i = 0; i < export.exportedTo.length; i++) {
+			export.exportedTo[i] = targets.get(i).toCharArray();
+		}
+		return new AddExport(source, export);
+	}
+
+	private static String getModulePathForArchive(File file) {
+		int format = Util.archiveFormat(file.getAbsolutePath());
+		if (format == Util.ZIP_FILE) {
+			return IModule.MODULE_INFO_CLASS;
+		} else if(format == Util.JMOD_FILE) {
+			return "classes/" + IModule.MODULE_INFO_CLASS; //$NON-NLS-1$
+		}
+		return null;
+	}
+	private static IModule extractModuleFromArchive(File file, Classpath pathEntry, String path) {
+		ZipFile zipFile = null;
+		try {
+			zipFile = new ZipFile(file);
+			ClassFileReader reader = ClassFileReader.read(zipFile, path);
+			IModule module = getModule(reader);
+			if (module != null) {
+				return reader.getModuleDeclaration();
+			}
+			return null;
+		} catch (ClassFormatException | IOException e) {
+			// Nothing to be done here
+		} finally {
+			if (zipFile != null) {
+				try {
+					zipFile.close();
+				} catch (IOException e) {
+					// Nothing much to do here
+				}
+			}
+		}
+		return null;
+	}
+	private static IModule extractModuleFromClass(File classfilePath, Classpath pathEntry) {
+		ClassFileReader reader;
+		try {
+			reader = ClassFileReader.read(classfilePath);
+			IModule module =  getModule(reader);
+			if (module != null) {
+				return reader.getModuleDeclaration();
+			}
+			return null;
+		} catch (ClassFormatException | IOException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	private static IModule getModule(ClassFileReader classfile) {
+		if (classfile != null) {
+			return classfile.getModuleDeclaration();
+		}
+		return null;
+	}
+	private static IModule extractModuleFromSource(File file, Parser parser, Classpath pathEntry) {
+		ICompilationUnit cu = new CompilationUnit(null, file.getAbsolutePath(), null);
+		CompilationResult compilationResult = new CompilationResult(cu, 0, 1, 10);
+		CompilationUnitDeclaration unit = parser.parse(cu, compilationResult);
+		if (unit.isModuleInfo() && unit.moduleDeclaration != null) {
+			return new BasicModule(unit.moduleDeclaration, pathEntry);
+		}
+		return null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
index bd38ed9..7923d00 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/batch/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2015 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -26,7 +26,7 @@
 #Format: compiler.name = word1 word2 word3
 compiler.name = Eclipse Compiler for Java(TM)
 #Format: compiler.version = (The place holders will be automatically filled. Do not remove or alter it)
-compiler.version = MARS_1007a0215, 3.10.0
+compiler.version = bundle_qualifier, bundle_version
 compiler.copyright = Copyright IBM Corp 2000, 2015. All rights reserved.
 
 ### progress
@@ -42,10 +42,13 @@
 compile.oneProblem = 1 problem ({0})
 compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
 compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
+compile.severalProblems = {0} problems ({1}, {2}, {3})
 compile.oneError = 1 error
 compile.severalErrors = {0} errors
 compile.oneWarning = 1 warning
 compile.severalWarnings = {0} warnings
+compile.oneInfo = 1 info
+compile.severalInfos = {0} info
 compile.oneClassFileGenerated = [1 .class file generated]
 compile.severalClassFilesGenerated = [{0} .class files generated]
 
@@ -57,8 +60,19 @@
 configure.duplicateCompliance = duplicate compliance setting specification: {0}
 configure.duplicateSource = duplicate source compliance setting specification: {0}
 configure.duplicateTarget = duplicate target compliance setting specification: {0}
-configure.source = source level should be comprised in between ''1.3'' and ''1.8'' (or ''5'', ''5.0'', ..., ''8'' or ''8.0''): {0}
+configure.unsupportedReleaseOption = option --release is supported only when run with JDK 9 or above
+configure.unsupportedWithRelease = option {0} is not supported when --release is used
+configure.unsupportedReleaseVersion = release version {0} is not supported
+configure.source = source level should be comprised in between ''1.3'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0''): {0}
+configure.invalidSystem = invalid location for system libraries: {0}
+configure.unsupportedOption = option {0} not supported at compliance level 9 and above
 configure.duplicateOutputPath = duplicate output path specification: {0}
+configure.duplicateModulePath = duplicate module path specification: {0}
+configure.duplicateModuleSourcepath = duplicate source module path specification: {0}
+configure.invalidModuleDescriptor = cannot open the module descriptor from {0}
+configure.invalidModuleOption = incorrectly formatted option: {0}
+configure.duplicateExport = can specify a package in a module only once with --add-export
+configure.OneOfModuleOrSourcePath = cannot specify both -source-path and --module-source-path
 configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
 configure.duplicateExtDirs = duplicate extdirs specification: {0}
 configure.duplicateSourcepath = duplicate sourcepath specification: {0}
@@ -66,7 +80,7 @@
 configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
 configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
 configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
-configure.targetJDK = target level should be comprised in between ''1.1'' and ''1.8'' (or ''5'', ''5.0'', ..., ''8'' or ''8.0'') or cldc1.1: {0}
+configure.targetJDK = target level should be comprised in between ''1.1'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0'') or cldc1.1: {0}
 configure.incompatibleTargetForSource = Target level ''{0}'' is incompatible with source level ''{1}''. A target level ''{1}'' or better is required
 configure.incompatibleTargetForGenericSource = Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.5'' or better is required
 configure.incompatibleComplianceForSource = Compliance level ''{0}'' is incompatible with source level ''{1}''. A compliance level ''{1}'' or better is required
@@ -79,6 +93,12 @@
 configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
 configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token
 
+configure.invalidInfoConfiguration = invalid info configuration: ''{0}''
+configure.invalidInfo = invalid info token: ''{0}''. Ignoring this info token and compiling
+configure.invalidInfoOption = invalid info option: ''{0}''. Must specify an info token
+
+configure.notOnModuleSourcePath = ''{0}'' does not belong to a module on the module source path
+
 ## configure.directoryNotExist = directory does not exist: {0}
 configure.unrecognizedOption = Unrecognized option : {0}
 configure.noClasspath = no classpath defined, using default directory instead
@@ -93,6 +113,7 @@
 configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
 configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
 configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
+configure.missingDestinationPath = destination path must be provided with module source path
 configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
 configure.unexpectedBracket = unexpected bracket: {0}
 configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
@@ -100,6 +121,8 @@
 configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
 configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
 configure.invalidClassName = invalid class name: {0}
+configure.invalidModuleName = invalid module name: {0}
+configure.packageConflict = The package {0} is accessible from more than one module: {1}, {2}
 configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath.
 configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
 configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
@@ -119,14 +142,17 @@
 ### requestor
 requestor.error = {0}. ERROR in {1}
 requestor.warning = {0}. WARNING in {1}
+requestor.info = {0}. INFO in {1}
 requestor.extraerror = {0}. ERROR:
 requestor.extrawarning = {0}. WARNING:
+requestor.extrainfo = {0}. INFO:
 requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
 requestor.noFileNameSpecified = (original file name is not available)
 
 ### EMACS STYLE
 output.emacs.error=error
 output.emacs.warning=warning
+output.emacs.info=info
 
 ### unit
 unit.more = File {0} is specified more than once
@@ -181,6 +207,30 @@
 \                       If multiple default encodings are specified, the last\n\
 \                       one will be used.\n\
 \ \n\
+\ Module compilation options:\n\
+\   These options are meaningful only in Java 9 environment or later.\n\
+\    --module-source-path <directories separated by {0}>\n\
+\                       specify where to find source files for multiple modules\n\
+\    -p --module-path <directories separated by {0}>\n\
+\                       specify where to find application modules\n\
+\    --processor-module-path <directories separated by {0}>\n\
+\                       specify module path where annotation processors\n\
+\                       can be found\n\
+\    --system <jdk>      Override location of system modules\n\
+\    --add-exports <module>/<package>=<other-module>(,<other-module>)*\n\
+\                       specify additional package exports clauses to the\n\
+\                       given modules\n\
+\    --add-reads <module>=<other-module>(,<other-module>)*\n\
+\                       specify additional modules to be considered as required\n\
+\                       by given modules\n\
+\    --add-modules  <module>(,<module>)*\n\
+\                       specify the additional module names that should be\n\
+\                       resolved to be root modules\n\
+\    --limit-modules <module>(,<module>)*\n\
+\                       specify the observable module names\n\
+\    --release <release>\n\
+\                       compile for a specific VM version\n\
+\ \n\
 \ Compliance options:\n\
 \    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
 \    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
@@ -188,8 +238,9 @@
 \    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
 \    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
 \    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
-\    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)\n\
-\    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)\n\
+\    -1.9 -9 -9.0       use 1.9 compliance (-source 1.9 -target 1.9)\n\
+\    -source <version>  set source level: 1.3 to 1.9 (or 6, 6.0, etc)\n\
+\    -target <version>  set classfile target: 1.1 to 1.9 (or 6, 6.0, etc)\n\
 \                       cldc1.1 can also be used to generate the StackMap\n\
 \                       attribute\n\
 \ \n\
@@ -210,11 +261,19 @@
 \    -err:-<warnings separated by ,>   disable specific warnings to be\n\
 \                                      reported as errors\n\
 \ \n\
-\ Setting warning or error options using properties file:\n\
-\    -properties <file>   set warnings/errors option based on the properties\n\
+\ Info options:\n\
+\    -info:<warnings separated by ,>    convert exactly the listed warnings\n\
+\                                      to be reported as infos\n\
+\    -info:+<warnings separated by ,>   enable additional warnings to be\n\
+\                                      reported as infos\n\
+\    -info:-<warnings separated by ,>   disable specific warnings to be\n\
+\                                      reported as infos\n\
+\ \n\
+\ Setting warning, error or info options using properties file:\n\
+\    -properties <file>   set warnings/errors/info option based on the properties\n\
 \                          file contents. This option can be used with -nowarn,\n\
-\                          -err:.. or -warn:.. options, but the last one on the\n\
-\                          command line sets the options to be used.\n\
+\                          -err:.., -info: or -warn:.. options, but the last one\n\
+\                          on the command line sets the options to be used.\n\
 \ \n\
 \ Debug options:\n\
 \    -g[:lines,vars,source] custom debug info\n\
@@ -288,7 +347,7 @@
 \ \n\
 \ Warning options:\n\
 \    -deprecation         + deprecation outside deprecated code\n\
-\    -nowarn -warn:none disable all warnings\n\
+\    -nowarn -warn:none disable all warnings and infos\n\
 \    -nowarn:[<directories separated by {0}>]\n\
 \                       specify directories from which optional problems should\n\
 \                       be ignored\n\
@@ -351,6 +410,7 @@
 \							methods\n\
 \      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
 \							modifier for missing javadoc comments warnings\n\
+\      module             + module related problems.\n\
 \      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
 \      noEffectAssign     + assignment without effect\n\
 \      null                 potential missing or redundant null check\n\
@@ -373,6 +433,7 @@
 \      paramAssign          assignment to a parameter\n\
 \      pkgDefaultMethod   + attempt to override package-default method\n\
 \      raw                + usage of raw type\n\
+\      removal            + deprecation marked for removal\n\
 \      resource           + (pot.) unsafe usage of resource of type Closeable\n\
 \      semicolon            unnecessary semicolon, empty statement\n\
 \      serial             + missing serialVersionUID\n\
@@ -382,7 +443,7 @@
 \      staticReceiver     + non-static reference to static member\n\
 \      super                overriding a method without making a super invocation\n\
 \      suppress           + enable @SuppressWarnings\n\
-\                           When used with -err:, it can also silent optional\n\
+\                           When used with -err:, it can also silence optional\n\
 \                           errors and warnings\n\
 \      switchDefault        switch statement lacking a default case\n\
 \      syncOverride         missing synchronized in synchr. method override\n\
@@ -393,6 +454,10 @@
 \      unavoidableGenericProblems + ignore unavoidable type safety problems\n\
 \                                   due to raw APIs\n\
 \      unchecked          + unchecked type operation\n\
+\      unlikelyCollectionMethodArgumentType\n\
+\                         + unlikely argument type for collection method\n\
+\                           declaring an Object parameter\n\
+\      unlikelyEqualsArgumentType unlikely argument type for method equals()\n\
 \      unnecessaryElse      unnecessary else clause\n\
 \      unqualifiedField     unqualified reference to field\n\
 \      unused               macro for unusedAllocation, unusedArgument,\n\
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
index 025bf79..0aace73 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
@@ -28,13 +28,15 @@
 	 * null until this annotation is initialized
 	 * @see #getElementValuePairs()
 	 */
-	private ElementValuePairInfo[] pairs;
+	private volatile ElementValuePairInfo[] pairs;
 
 	long standardAnnotationTagBits = 0;
 	int readOffset = 0;
 
 	static Object[] EmptyValueArray = new Object[0];
 
+	public RuntimeException exceptionDuringDecode;
+
 AnnotationInfo(byte[] classFileBytes, int[] contantPoolOffsets, int offset) {
 	super(classFileBytes, contantPoolOffsets, offset);
 }
@@ -57,14 +59,46 @@
 	int numberOfPairs = u2At(2);
 	// u2 type_index + u2 num_member_value_pair
 	this.readOffset += 4;
-	this.pairs = numberOfPairs == 0 ? ElementValuePairInfo.NoMembers : new ElementValuePairInfo[numberOfPairs];
-	for (int i = 0; i < numberOfPairs; i++) {
-		// u2 member_name_index;
-		utf8Offset = this.constantPoolOffsets[u2At(this.readOffset)] - this.structOffset;
-		char[] membername = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
-		this.readOffset += 2;
-		Object value = decodeDefaultValue();
-		this.pairs[i] = new ElementValuePairInfo(membername, value);
+	ElementValuePairInfo[] decodedPairs = numberOfPairs == 0 ? ElementValuePairInfo.NoMembers : new ElementValuePairInfo[numberOfPairs];
+	int i = 0;
+	try {
+		while (i < numberOfPairs) {
+			// u2 member_name_index;
+			utf8Offset = this.constantPoolOffsets[u2At(this.readOffset)] - this.structOffset;
+			char[] membername = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			this.readOffset += 2;
+			Object value = decodeDefaultValue();
+			decodedPairs[i++] = new ElementValuePairInfo(membername, value);
+		}
+		this.pairs = decodedPairs;
+	} catch (RuntimeException any) {
+		sanitizePairs(decodedPairs);
+		StringBuilder newMessage = new StringBuilder(any.getMessage());
+		newMessage.append(" while decoding pair #").append(i).append(" of annotation @").append(this.typename); //$NON-NLS-1$ //$NON-NLS-2$
+		newMessage.append(", bytes at structOffset ").append(this.structOffset).append(":"); //$NON-NLS-1$ //$NON-NLS-2$
+		int offset = this.structOffset;
+		while (offset <= this.structOffset+this.readOffset && offset < this.reference.length) {
+			newMessage.append(' ').append(Integer.toHexString(this.reference[offset++] & 0xFF));
+		}
+		throw new IllegalStateException(newMessage.toString(), any);
+	}
+}
+private void sanitizePairs(ElementValuePairInfo[] oldPairs) {
+	if (oldPairs != null) {
+		ElementValuePairInfo[] newPairs = new ElementValuePairInfo[oldPairs.length];
+		int count = 0;
+		for (int i = 0; i < oldPairs.length; i++) {
+			ElementValuePairInfo evpInfo = oldPairs[i];
+			if (evpInfo != null)
+				newPairs[count++] = evpInfo;
+		}
+		if (count < oldPairs.length) {
+			this.pairs = Arrays.copyOf(newPairs, count);
+		} else {
+			this.pairs = newPairs;
+		}
+	} else {
+		this.pairs = ElementValuePairInfo.NoMembers;
 	}
 }
 Object decodeDefaultValue() {
@@ -151,22 +185,33 @@
 			}
 			break;
 		default:
-			throw new IllegalStateException("Unrecognized tag " + (char) tag); //$NON-NLS-1$
+			String tagDisplay = tag == 0 ? "0x00" : (char) tag + " ("+Integer.toHexString(tag&0xFF)+')';  //$NON-NLS-1$//$NON-NLS-2$
+			throw new IllegalStateException("Unrecognized tag " + tagDisplay); //$NON-NLS-1$
 	}
 	return value;
 }
+@Override
 public IBinaryElementValuePair[] getElementValuePairs() {
 	if (this.pairs == null)
-		initialize();
+		lazyInitialize();
 	return this.pairs;
 }
+@Override
 public char[] getTypeName() {
 	return this.typename;
 }
+@Override
+public boolean isDeprecatedAnnotation() {
+	return (this.standardAnnotationTagBits & (TagBits.AnnotationDeprecated | TagBits.AnnotationTerminallyDeprecated)) != 0;
+}
 void initialize() {
 	if (this.pairs == null)
 		decodeAnnotation();
 }
+synchronized void lazyInitialize() {
+	if (this.pairs == null)
+		decodeAnnotation();
+}
 private int readRetentionPolicy(int offset) {
 	int currentOffset = offset;
 	int tag = u1At(currentOffset);
@@ -289,7 +334,6 @@
 			case 22:
 				if (CharOperation.equals(typeName, ConstantPool.JAVA_LANG_DEPRECATED)) {
 					this.standardAnnotationTagBits |= TagBits.AnnotationDeprecated;
-					return currentOffset;
 				}
 				break;
 			case 23:
@@ -376,9 +420,11 @@
 	}
 	return currentOffset;
 }
+@Override
 public String toString() {
 	return BinaryTypeFormatter.annotationToString(this);
 }
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -386,6 +432,7 @@
 	result = prime * result + CharOperation.hashCode(this.typename);
 	return result;
 }
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.java
index bdb6661..21d5280 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfo.java
@@ -16,12 +16,13 @@
 public class AnnotationMethodInfo extends MethodInfo {
 	protected Object defaultValue = null;
 
-public static MethodInfo createAnnotationMethod(byte classFileBytes[], int offsets[], int offset) {
-	MethodInfo methodInfo = new MethodInfo(classFileBytes, offsets, offset);
+public static MethodInfo createAnnotationMethod(byte classFileBytes[], int offsets[], int offset, long version) {
+	MethodInfo methodInfo = new MethodInfo(classFileBytes, offsets, offset, version);
 	int attributesCount = methodInfo.u2At(6);
 	int readOffset = 8;
 	AnnotationInfo[] annotations = null;
 	Object defaultValue = null;
+	TypeAnnotationInfo[] typeAnnotations = null;
 	for (int i = 0; i < attributesCount; i++) {
 		// check the name of each attribute
 		int utf8Offset = methodInfo.constantPoolOffsets[methodInfo.u2At(readOffset)] - methodInfo.structOffset;
@@ -43,10 +44,15 @@
 					break;
 				case 'R' :
 					AnnotationInfo[] methodAnnotations = null;
+					TypeAnnotationInfo[] methodTypeAnnotations = null;
 					if (CharOperation.equals(attributeName, AttributeNamesConstants.RuntimeVisibleAnnotationsName)) {
 						methodAnnotations = decodeMethodAnnotations(readOffset, true, methodInfo);
 					} else if (CharOperation.equals(attributeName, AttributeNamesConstants.RuntimeInvisibleAnnotationsName)) {
 						methodAnnotations = decodeMethodAnnotations(readOffset, false, methodInfo);
+					} else if (CharOperation.equals(attributeName, AttributeNamesConstants.RuntimeVisibleTypeAnnotationsName)) {
+						methodTypeAnnotations = decodeTypeAnnotations(readOffset, true, methodInfo);
+					} else if (CharOperation.equals(attributeName, AttributeNamesConstants.RuntimeInvisibleTypeAnnotationsName)) {
+						methodTypeAnnotations = decodeTypeAnnotations(readOffset, false, methodInfo);
 					}
 					if (methodAnnotations != null) {
 						if (annotations == null) {
@@ -58,6 +64,16 @@
 							System.arraycopy(methodAnnotations, 0, newAnnotations, length, methodAnnotations.length);
 							annotations = newAnnotations;
 						}
+					} else if (methodTypeAnnotations != null) {
+						if (typeAnnotations == null) {
+							typeAnnotations = methodTypeAnnotations;
+						} else {
+							int length = typeAnnotations.length;
+							TypeAnnotationInfo[] newAnnotations = new TypeAnnotationInfo[length + methodTypeAnnotations.length];
+							System.arraycopy(typeAnnotations, 0, newAnnotations, 0, length);
+							System.arraycopy(methodTypeAnnotations, 0, newAnnotations, length, methodTypeAnnotations.length);
+							typeAnnotations = newAnnotations;
+						}
 					}
 					break;
 			}
@@ -67,18 +83,22 @@
 	methodInfo.attributeBytes = readOffset;
 
 	if (defaultValue != null) {
+		if (typeAnnotations != null)
+			return new AnnotationMethodInfoWithTypeAnnotations(methodInfo, defaultValue, annotations, typeAnnotations);
 		if (annotations != null) {
 			return new AnnotationMethodInfoWithAnnotations(methodInfo, defaultValue, annotations);
 		}
 		return new AnnotationMethodInfo(methodInfo, defaultValue);
 	}
+	if (typeAnnotations != null)
+		return new MethodInfoWithTypeAnnotations(methodInfo, annotations, null, typeAnnotations);
 	if (annotations != null)
 		return new MethodInfoWithAnnotations(methodInfo, annotations);
 	return methodInfo;
 }
 
 AnnotationMethodInfo(MethodInfo methodInfo, Object defaultValue) {
-	super(methodInfo.reference, methodInfo.constantPoolOffsets, methodInfo.structOffset);
+	super(methodInfo.reference, methodInfo.constantPoolOffsets, methodInfo.structOffset, methodInfo.version);
 	this.defaultValue = defaultValue;
 
 	this.accessFlags = methodInfo.accessFlags;
@@ -90,6 +110,7 @@
 	this.signatureUtf8Offset = methodInfo.signatureUtf8Offset;
 	this.tagBits = methodInfo.tagBits;
 }
+@Override
 public Object getDefaultValue() {
 	return this.defaultValue;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.java
index 087f35f..2b6e092 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithAnnotations.java
@@ -19,15 +19,18 @@
 	super(methodInfo, defaultValue);
 	this.annotations = annotations;
 }
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return this.annotations;
 }
+@Override
 protected void initialize() {
 	for (int i = 0, l = this.annotations == null ? 0 : this.annotations.length; i < l; i++)
 		if (this.annotations[i] != null)
 			this.annotations[i].initialize();
 	super.initialize();
 }
+@Override
 protected void reset() {
 	for (int i = 0, l = this.annotations == null ? 0 : this.annotations.length; i < l; i++)
 		if (this.annotations[i] != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.java
new file mode 100644
index 0000000..77ea850
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/AnnotationMethodInfoWithTypeAnnotations.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Till Brychcy and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Till Brychcy - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.classfmt;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
+
+class AnnotationMethodInfoWithTypeAnnotations extends AnnotationMethodInfoWithAnnotations {
+	private TypeAnnotationInfo[] typeAnnotations;
+
+AnnotationMethodInfoWithTypeAnnotations(MethodInfo methodInfo, Object defaultValue, AnnotationInfo[] annotations, TypeAnnotationInfo[] typeAnnotations) {
+	super(methodInfo, defaultValue, annotations);
+	this.typeAnnotations = typeAnnotations;
+}
+@Override
+public IBinaryTypeAnnotation[] getTypeAnnotations() {
+	return this.typeAnnotations;
+}
+
+@Override
+protected void initialize() {
+	for (int i = 0, l = this.typeAnnotations == null ? 0 : this.typeAnnotations.length; i < l; i++) {
+		this.typeAnnotations[i].initialize();
+	}
+	super.initialize();
+}
+@Override
+protected void reset() {
+	for (int i = 0, l = this.typeAnnotations == null ? 0 : this.typeAnnotations.length; i < l; i++) {
+		this.typeAnnotations[i].reset();
+	}
+	super.reset();
+}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
index fac479d..4190183 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,6 +40,7 @@
 	int AccSynthetic    = 0x1000;
 	int AccAnnotation   = 0x2000;
 	int AccEnum         = 0x4000;
+	int AccModule		= 0x8000;
 
 	/**
 	 * From classfile version 52 (compliance 1.8 up), meaning that a formal parameter is mandated
@@ -47,6 +48,13 @@
 	 */
 	int AccMandated     = 0x8000;
 
+	/**
+	 * Flags in module declaration - since java9
+	 */
+	int ACC_OPEN			= 0x0020;
+	int ACC_TRANSITIVE 		= 0x0020;
+	int ACC_STATIC_PHASE	= 0x0040;
+	int ACC_SYNTHETIC 		= 0x1000;
 	
 	/**
 	 * Other VM flags.
@@ -73,6 +81,8 @@
 	int MethodHandleTag = 15;
 	int MethodTypeTag = 16;
 	int InvokeDynamicTag = 18;
+	int ModuleTag = 19;
+	int PackageTag = 20;
 
 	int ConstantMethodRefFixedSize = 5;
 	int ConstantClassFixedSize = 3;
@@ -88,6 +98,8 @@
 	int ConstantMethodHandleFixedSize = 4;
 	int ConstantMethodTypeFixedSize = 3;
 	int ConstantInvokeDynamicFixedSize = 5;
+	int ConstantModuleFixedSize = 3;
+	int ConstantPackageFixedSize = 3;
 
 	// JVMS 4.4.8
 	int MethodHandleRefKindGetField = 1;
@@ -108,7 +120,8 @@
 	int MAJOR_VERSION_1_6 = 50;
 	int MAJOR_VERSION_1_7 = 51;
 	int MAJOR_VERSION_1_8 = 52;
-	int MAJOR_VERSION_1_9 = 53; // This might change
+	int MAJOR_VERSION_9 = 53;
+	int MAJOR_VERSION_10 = 54;
 
 	int MINOR_VERSION_0 = 0;
 	int MINOR_VERSION_1 = 1;
@@ -116,7 +129,7 @@
 	int MINOR_VERSION_3 = 3;
 	int MINOR_VERSION_4 = 4;
 
-	// JDK 1.1 -> 1.9, comparable value allowing to check both major/minor version at once 1.4.1 > 1.4.0
+	// JDK 1.1 -> 9, comparable value allowing to check both major/minor version at once 1.4.1 > 1.4.0
 	// 16 unsigned bits for major, then 16 bits for minor
 	long JDK1_1 = ((long)ClassFileConstants.MAJOR_VERSION_1_1 << 16) + ClassFileConstants.MINOR_VERSION_3; // 1.1. is 45.3
 	long JDK1_2 =  ((long)ClassFileConstants.MAJOR_VERSION_1_2 << 16) + ClassFileConstants.MINOR_VERSION_0;
@@ -126,7 +139,8 @@
 	long JDK1_6 = ((long)ClassFileConstants.MAJOR_VERSION_1_6 << 16) + ClassFileConstants.MINOR_VERSION_0;
 	long JDK1_7 = ((long)ClassFileConstants.MAJOR_VERSION_1_7 << 16) + ClassFileConstants.MINOR_VERSION_0;
 	long JDK1_8 = ((long)ClassFileConstants.MAJOR_VERSION_1_8 << 16) + ClassFileConstants.MINOR_VERSION_0;
-	long JDK1_9 = ((long)ClassFileConstants.MAJOR_VERSION_1_9 << 16) + ClassFileConstants.MINOR_VERSION_0;
+	long JDK9 = ((long)ClassFileConstants.MAJOR_VERSION_9 << 16) + ClassFileConstants.MINOR_VERSION_0;
+	long JDK10 = ((long)ClassFileConstants.MAJOR_VERSION_10 << 16) + ClassFileConstants.MINOR_VERSION_0;
 
 	/*
 	 * cldc1.1 is 45.3, but we modify it to be different from JDK1_1.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java
index 3c6eef6..e3b299f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFileReader.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,7 +13,7 @@
  *								Bug 440477 - [null] Infrastructure for feeding external annotations into compilation
  *								Bug 440687 - [compiler][batch][null] improve command line option for external annotations
  *     Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for
- *         bug 407191 - [1.8] Binary access support for type annotations
+ *         						bug 407191 - [1.8] Binary access support for type annotations
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.classfmt;
 
@@ -20,23 +21,18 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
+import java.util.function.Predicate;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AnnotationTargetTypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AttributeNamesConstants;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryElementValuePair;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryField;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryMethod;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryNestedType;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
 public class ClassFileReader extends ClassFileStruct implements IBinaryType {
@@ -49,6 +45,8 @@
 	private AnnotationInfo[] annotations;
 	private TypeAnnotationInfo[] typeAnnotations;
 	private FieldInfo[] fields;
+	private ModuleInfo moduleDeclaration;
+	public char[] moduleName;
 	private int fieldsCount;
 
 	// initialized in case the .class file is a nested type
@@ -117,6 +115,23 @@
 		return read(zip, filename, false);
 }
 
+public static ClassFileReader readFromJrt(
+		File jrt,
+		IModule module,
+		String filename)
+
+		throws ClassFormatException, java.io.IOException {
+		return JRTUtil.getClassfile(jrt, filename, module);
+	}
+public static ClassFileReader readFromModule(
+		File jrt,
+		String moduleName,
+		String filename,
+		Predicate<String> moduleNameFilter)
+
+		throws ClassFormatException, java.io.IOException {
+		return JRTUtil.getClassfile(jrt, filename, moduleName, moduleNameFilter);
+}
 public static ClassFileReader read(
 	java.util.zip.ZipFile zip,
 	String filename,
@@ -237,6 +252,14 @@
 					this.constantPoolOffsets[i] = readOffset;
 					readOffset += ClassFileConstants.ConstantInvokeDynamicFixedSize;
 					break;
+				case ClassFileConstants.ModuleTag:
+					this.constantPoolOffsets[i] = readOffset;
+					readOffset += ClassFileConstants.ConstantModuleFixedSize;
+					break;
+				case ClassFileConstants.PackageTag:
+					this.constantPoolOffsets[i] = readOffset;
+					readOffset += ClassFileConstants.ConstantPackageFixedSize;
+					break;
 			}
 		}
 		// Read and validate access flags
@@ -245,7 +268,9 @@
 
 		// Read the classname, use exception handlers to catch bad format
 		this.classNameIndex = u2At(readOffset);
-		this.className = getConstantClassNameAt(this.classNameIndex);
+		if (this.classNameIndex != 0) {
+			this.className = getConstantClassNameAt(this.classNameIndex);
+		}
 		readOffset += 2;
 
 		// Read the superclass name, can be null for java.lang.Object
@@ -274,7 +299,7 @@
 			FieldInfo field;
 			this.fields = new FieldInfo[this.fieldsCount];
 			for (int i = 0; i < this.fieldsCount; i++) {
-				field = FieldInfo.createField(this.reference, this.constantPoolOffsets, readOffset);
+				field = FieldInfo.createField(this.reference, this.constantPoolOffsets, readOffset, this.version);
 				this.fields[i] = field;
 				readOffset += field.sizeInBytes();
 			}
@@ -287,8 +312,8 @@
 			boolean isAnnotationType = (this.accessFlags & ClassFileConstants.AccAnnotation) != 0;
 			for (int i = 0; i < this.methodsCount; i++) {
 				this.methods[i] = isAnnotationType
-					? AnnotationMethodInfo.createAnnotationMethod(this.reference, this.constantPoolOffsets, readOffset)
-					: MethodInfo.createMethod(this.reference, this.constantPoolOffsets, readOffset);
+					? AnnotationMethodInfo.createAnnotationMethod(this.reference, this.constantPoolOffsets, readOffset, this.version)
+					: MethodInfo.createMethod(this.reference, this.constantPoolOffsets, readOffset, this.version);
 				readOffset += this.methods[i].sizeInBytes();
 			}
 		}
@@ -393,17 +418,25 @@
 								missingTypeOffset += 2;
 							}
 						}
+					} else if (CharOperation.equals(attributeName, AttributeNamesConstants.ModuleName)) {
+						this.moduleDeclaration = ModuleInfo.createModule(this.reference, this.constantPoolOffsets, readOffset);
+						this.moduleName = this.moduleDeclaration.name();
 					}
 			}
 			readOffset += (6 + u4At(readOffset + 2));
 		}
+		if (this.moduleDeclaration != null && this.annotations != null) {
+			this.moduleDeclaration.setAnnotations(this.annotations, this.tagBits, fullyInitialize);
+			this.annotations = null;
+		}
 		if (fullyInitialize) {
 			initialize();
 		}
 	} catch(ClassFormatException e) {
 		throw e;
 	} catch (Exception e) {
-		throw new ClassFormatException(
+		throw new ClassFormatException(e,
+			this.classFileName,
 			ClassFormatException.ErrTruncatedInput,
 			readOffset);
 	}
@@ -413,7 +446,6 @@
 public ExternalAnnotationStatus getExternalAnnotationStatus() {
 	return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
 }
-
 /**
  * Conditionally add external annotations to the mix.
  * If 'member' is given it must be either of IBinaryField or IBinaryMethod, in which case we're seeking annotations for that member.
@@ -446,11 +478,12 @@
 			long standardTagBits = newInfo.standardAnnotationTagBits;
 			if (standardTagBits != 0) {
 				this.tagBits |= standardTagBits;
-			} else {
-				if (newInfos == null)
-					newInfos = new AnnotationInfo[numberOfAnnotations - i];
-				newInfos[newInfoCount++] = newInfo;
+				if (this.version < ClassFileConstants.JDK9 || (standardTagBits & TagBits.AnnotationDeprecated) == 0)
+					continue;
 			}
+			if (newInfos == null)
+				newInfos = new AnnotationInfo[numberOfAnnotations - i];
+			newInfos[newInfoCount++] = newInfo;
 		}
 		if (newInfos == null)
 			return; // nothing to record in this.annotations
@@ -496,6 +529,7 @@
 /**
  * @return the annotations or null if there is none.
  */
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return this.annotations;
 }
@@ -503,6 +537,7 @@
 /**
  * @return the type annotations or null if there is none.
  */
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return this.typeAnnotations;
 }
@@ -528,6 +563,7 @@
 	return this.constantPoolOffsets;
 }
 
+@Override
 public char[] getEnclosingMethod() {
 	if (this.enclosingNameAndTypeIndex <= 0) {
 		return null;
@@ -552,6 +588,7 @@
  * Answer the resolved compoundName of the enclosing type
  * or null if the receiver is a top level type.
  */
+@Override
 public char[] getEnclosingTypeName() {
 	return this.enclosingTypeName;
 }
@@ -560,17 +597,36 @@
  * Answer the receiver's this.fields or null if the array is empty.
  * @return org.aspectj.org.eclipse.jdt.internal.compiler.api.IBinaryField[]
  */
+@Override
 public IBinaryField[] getFields() {
 	return this.fields;
 }
+/**
+ * @see IBinaryType#getModule()
+ */
+@Override
+public char[] getModule() {
+	return this.moduleName;
+}
+/**
+ * Returns the module declaration that this class file represents. This will be 
+ * null for non module-info class files.
+ * 
+ * @return the module declaration this represents
+ */
+public IBinaryModule getModuleDeclaration() {
+	return this.moduleDeclaration;
+}
 
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.classFileName;
 }
 
+@Override
 public char[] getGenericSignature() {
 	return this.signature;
 }
@@ -602,20 +658,14 @@
 	return null;
 }
 
-/**
- * Answer the resolved names of the receiver's interfaces in the
- * class file format as specified in section 4.2 of the Java 2 VM spec
- * or null if the array is empty.
- *
- * For example, java.lang.String is java/lang/String.
- * @return char[][]
- */
+@Override
 public char[][] getInterfaceNames() {
 	return this.interfaceNames;
 }
 
 // AspectJ start - original method has added boolean parameter, this new one has the original signature and simply
 // passes in false.  This is all needed due to the support for inter type inner types
+@Override
 public IBinaryNestedType[] getMemberTypes() {
 	return getMemberTypes(false);
 }
@@ -687,6 +737,7 @@
  * Answer the receiver's this.methods or null if the array is empty.
  * @return org.aspectj.org.eclipse.jdt.internal.compiler.api.env.IBinaryMethod[]
  */
+@Override
 public IBinaryMethod[] getMethods() {
 	return this.methods;
 }
@@ -738,6 +789,7 @@
 	System.err.println('}');
 }
 */
+@Override
 public char[][][] getMissingTypeNames() {
 	return this.missingTypeNames;
 }
@@ -748,6 +800,7 @@
  * Set the AccDeprecated and AccSynthetic bits if necessary
  * @return int
  */
+@Override
 public int getModifiers() {
 	int modifiers;
 	if (this.innerInfo != null) {
@@ -760,17 +813,12 @@
 	return modifiers;
 }
 
-/**
- * Answer the resolved name of the type in the
- * class file format as specified in section 4.2 of the Java 2 VM spec.
- *
- * For example, java.lang.String is java/lang/String.
- * @return char[]
- */
+@Override
 public char[] getName() {
 	return this.className;
 }
 
+@Override
 public char[] getSourceName() {
 	if (this.sourceName != null)
 		return this.sourceName;
@@ -793,18 +841,12 @@
 	return this.sourceName = name;
 }
 
-/**
- * Answer the resolved name of the receiver's superclass in the
- * class file format as specified in section 4.2 of the Java 2 VM spec
- * or null if it does not have one.
- *
- * For example, java.lang.String is java/lang/String.
- * @return char[]
- */
+@Override
 public char[] getSuperclassName() {
 	return this.superclassName;
 }
 
+@Override
 public long getTagBits() {
 	return this.tagBits;
 }
@@ -1065,41 +1107,40 @@
 }
 private Boolean matchAnnotations(IBinaryAnnotation currentAnnotation, IBinaryAnnotation otherAnnotation) {
 	if (!CharOperation.equals(currentAnnotation.getTypeName(), otherAnnotation.getTypeName()))
-			return true;
+		return true;
 	IBinaryElementValuePair[] currentPairs = currentAnnotation.getElementValuePairs();
 	IBinaryElementValuePair[] otherPairs = otherAnnotation.getElementValuePairs();
-		int currentPairsLength = currentPairs == null ? 0 : currentPairs.length;
-		int otherPairsLength = otherPairs == null ? 0 : otherPairs.length;
-		if (currentPairsLength != otherPairsLength)
+	int currentPairsLength = currentPairs == null ? 0 : currentPairs.length;
+	int otherPairsLength = otherPairs == null ? 0 : otherPairs.length;
+	if (currentPairsLength != otherPairsLength)
 		return Boolean.TRUE;
-		for (int j = 0; j < currentPairsLength; j++) {
-			if (!CharOperation.equals(currentPairs[j].getName(), otherPairs[j].getName()))
+	for (int j = 0; j < currentPairsLength; j++) {
+		if (!CharOperation.equals(currentPairs[j].getName(), otherPairs[j].getName()))
 			return Boolean.TRUE;
-			final Object value = currentPairs[j].getValue();
-			final Object value2 = otherPairs[j].getValue();
-			if (value instanceof Object[]) {
-				Object[] currentValues = (Object[]) value;
-				if (value2 instanceof Object[]) {
-					Object[] currentValues2 = (Object[]) value2;
-					final int length = currentValues.length;
-					if (length != currentValues2.length) {
+		final Object value = currentPairs[j].getValue();
+		final Object value2 = otherPairs[j].getValue();
+		if (value instanceof Object[]) {
+			Object[] currentValues = (Object[]) value;
+			if (value2 instanceof Object[]) {
+				Object[] currentValues2 = (Object[]) value2;
+				final int length = currentValues.length;
+				if (length != currentValues2.length) {
 					return Boolean.TRUE;
-					}
-					for (int n = 0; n < length; n++) {
-						if (!currentValues[n].equals(currentValues2[n])) {
-						return Boolean.TRUE;
-						}
-					}
-				return Boolean.FALSE;
 				}
+				for (int n = 0; n < length; n++) {
+					if (!currentValues[n].equals(currentValues2[n])) {
+						return Boolean.TRUE;
+					}
+				}
+				return Boolean.FALSE;
+			}
 			return Boolean.TRUE;
-			} else if (!value.equals(value2)) {
+		} else if (!value.equals(value2)) {
 			return Boolean.TRUE;
 		}
 	}
 	return null;
 }
-
 private boolean hasStructuralFieldChanges(FieldInfo currentFieldInfo, FieldInfo otherFieldInfo) {
 	// generic signature
 	if (!CharOperation.equals(currentFieldInfo.getGenericSignature(), otherFieldInfo.getGenericSignature()))
@@ -1262,32 +1303,19 @@
 		throw exception;
 	}
 }
-
-/**
- * Answer true if the receiver is an anonymous type, false otherwise
- *
- * @return <CODE>boolean</CODE>
- */
+@Override
 public boolean isAnonymous() {
 	if (this.innerInfo == null) return false;
 	char[] innerSourceName = this.innerInfo.getSourceName();
 	return (innerSourceName == null || innerSourceName.length == 0);
 }
 
-/**
- * Answer whether the receiver contains the resolved binary form
- * or the unresolved source form of the type.
- * @return boolean
- */
+@Override
 public boolean isBinaryType() {
 	return true;
 }
 
-/**
- * Answer true if the receiver is a local type, false otherwise
- *
- * @return <CODE>boolean</CODE>
- */
+@Override
 public boolean isLocal() {
 	if (this.innerInfo == null) return false;
 	if (this.innerInfo.getEnclosingTypeName() != null) return false;
@@ -1295,11 +1323,7 @@
 	return (innerSourceName != null && innerSourceName.length > 0);
 }
 
-/**
- * Answer true if the receiver is a member type, false otherwise
- *
- * @return <CODE>boolean</CODE>
- */
+@Override
 public boolean isMember() {
 	if (this.innerInfo == null) return false;
 	if (this.innerInfo.getEnclosingTypeName() == null) return false;
@@ -1321,16 +1345,20 @@
  *
  * @return char[]
  */
+@Override
 public char[] sourceFileName() {
 	return this.sourceFileName;
 }
 
+@Override
 public String toString() {
 	java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
 	java.io.PrintWriter print = new java.io.PrintWriter(out);
 	print.println(getClass().getName() + "{"); //$NON-NLS-1$
 	print.println(" this.className: " + new String(getName())); //$NON-NLS-1$
 	print.println(" this.superclassName: " + (getSuperclassName() == null ? "null" : new String(getSuperclassName()))); //$NON-NLS-2$ //$NON-NLS-1$
+	if (this.moduleName != null)
+		print.println(" this.moduleName: " + (new String(this.moduleName))); //$NON-NLS-1$
 	print.println(" access_flags: " + printTypeModifiers(accessFlags()) + "(" + accessFlags() + ")"); //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-2$
 	print.flush();
 	return out.toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.java
index b5764b9..ecabdf3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ClassFormatException.java
@@ -47,7 +47,7 @@
 
 	private int errorCode;
 	private int bufferPosition;
-	private RuntimeException nestedException;
+	private Exception nestedException;
 	private char[] fileName;
 
 	public ClassFormatException(RuntimeException e, char[] fileName) {
@@ -57,7 +57,9 @@
 	public ClassFormatException(int code) {
 		this.errorCode = code;
 	}
-	public ClassFormatException(int code, int bufPos) {
+	public ClassFormatException(Exception e, char[] fileName, int code, int bufPos) {
+		this.nestedException = e;
+		this.fileName = fileName;
 		this.errorCode = code;
 		this.bufferPosition = bufPos;
 	}
@@ -82,6 +84,7 @@
 	public Throwable getException() {
 		return this.nestedException;
 	}
+	@Override
 	public void printStackTrace() {
 		printStackTrace(System.err);
 	}
@@ -92,6 +95,7 @@
 	 *            the print stream
 	 * @since 3.0
 	 */
+	@Override
 	public void printStackTrace(PrintStream output) {
 		synchronized (output) {
 			super.printStackTrace(output);
@@ -115,6 +119,7 @@
 	 *            the print writer
 	 * @since 3.0
 	 */
+	@Override
 	public void printStackTrace(PrintWriter output) {
 		synchronized (output) {
 			super.printStackTrace(output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.java
index f5bb6e1..b7f574b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ElementValuePairInfo.java
@@ -26,12 +26,15 @@
 	this.name = name;
 	this.value = value;
 }
+@Override
 public char[] getName() {
 	return this.name;
 }
+@Override
 public Object getValue() {
 	return this.value;
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append(this.name);
@@ -50,6 +53,7 @@
 	}
 	return buffer.toString();
 }
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -57,6 +61,7 @@
 	result = prime * result + ((this.value == null) ? 0 : this.value.hashCode());
 	return result;
 }
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.java
index 4ed7499..126dd34 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2016 Google, Inc. and others.
+ * Copyright (c) 2016, 2017 Google, Inc. and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     Stefan Xenos <sxenos@gmail.com> (Google) - initial API and implementation
  *******************************************************************************/
@@ -161,6 +161,11 @@
 		return this.inputType.getModifiers();
 	}
 
+	@Override
+	public char[] getModule() {
+		return this.inputType.getModule();
+	}
+
 	/**
 	 * Returns the zip file containing external annotations, if any. Returns null if there are no external annotations
 	 * or if the basePath refers to a directory.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.java
index 0b3d025..6414844 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 GK Software AG.
+ * Copyright (c) 2014, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -118,7 +118,7 @@
 				}
 				if (rawSig == null || annotSig == null) {
 					if (errLine == -1) errLine = reader.getLineNumber();
-					throw new IOException("Illegal format for annotation file at line "+errLine); //$NON-NLS-1$
+					throw new IOException("Illegal format in annotation file for "+this.typeName+" at line "+errLine); //$NON-NLS-1$ //$NON-NLS-2$
 				}
 				// discard optional meta data (separated by whitespace):
 				annotSig = trimTail(annotSig);
@@ -146,7 +146,7 @@
 		if (line != null && line.startsWith(CLASS_PREFIX)) {
 			line = line.substring(CLASS_PREFIX.length());
 		} else {
-			throw new IOException("missing class header in annotation file"); //$NON-NLS-1$
+			throw new IOException("missing class header in annotation file for "+typeName); //$NON-NLS-1$
 		}
 		if (!trimTail(line).equals(typeName)) {
 			throw new IOException("mismatching class name in annotation file, expected "+typeName+", but header said "+line); //$NON-NLS-1$ //$NON-NLS-2$
@@ -198,6 +198,7 @@
 		return ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER;
 	}
 
+	@Override
 	public String toString() {
 		StringBuilder sb = new StringBuilder();
 		sb.append("External Annotations for ").append(this.typeName).append('\n'); //$NON-NLS-1$
@@ -213,6 +214,10 @@
 		public IBinaryElementValuePair[] getElementValuePairs() {
 			return ElementValuePairInfo.NoMembers;
 		}
+		@Override
+		public boolean isExternalAnnotation() {
+			return true;
+		}
 		protected char[] getBinaryTypeName(char[][] name) {
 			return CharOperation.concat('L', CharOperation.concatWith(name, '/'), ';');
 		}
@@ -245,6 +250,7 @@
 		public DispatchingAnnotationWalker(LookupEnvironment environment) {
 			this.environment = environment;
 		}
+		@Override
 		public ITypeAnnotationWalker toTypeParameter(boolean isClassTypeParameter, int rank) {
 			String source = ExternalAnnotationProvider.this.typeParametersAnnotationSource;
 			if (source != null) {
@@ -254,11 +260,13 @@
 			}
 			return this;
 		}
+		@Override
 		public ITypeAnnotationWalker toTypeParameterBounds(boolean isClassTypeParameter, int parameterRank) {
 			if (this.typeParametersWalker != null)
 				return this.typeParametersWalker.toTypeParameterBounds(isClassTypeParameter, parameterRank);
 			return this;
 		}
+		@Override
 		public ITypeAnnotationWalker toSupertype(short index, char[] superTypeSignature) {
 			Map<String, String> sources = ExternalAnnotationProvider.this.supertypeAnnotationSources;
 			if (sources != null) {
@@ -269,17 +277,28 @@
 			return this;
 		}
 		// the rest is borrowed from EMPTY_ANNOTATION_WALKER:
+		@Override
 		public ITypeAnnotationWalker toField() { return this; }
+		@Override
 		public ITypeAnnotationWalker toThrows(int rank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeArgument(int rank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toMethodParameter(short index) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeBound(short boundIndex) { return this; }
+		@Override
 		public ITypeAnnotationWalker toMethodReturn() { return this; }
+		@Override
 		public ITypeAnnotationWalker toReceiver() { return this; }
+		@Override
 		public ITypeAnnotationWalker toWildcardBound() { return this; }
+		@Override
 		public ITypeAnnotationWalker toNextArrayDimension() { return this; }
+		@Override
 		public ITypeAnnotationWalker toNextNestedType() { return this; }
-		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) { return NO_ANNOTATIONS; }
+		@Override
+		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) { return NO_ANNOTATIONS; }
 	}
 
 	abstract class BasicAnnotationWalker implements ITypeAnnotationWalker {
@@ -302,6 +321,7 @@
 			if (this.wrapper == null)
 				this.wrapper = new SignatureWrapper(this.source);
 			this.wrapper.start = start;
+			this.wrapper.bracket = -1;
 			return this.wrapper;
 		}
 
@@ -340,16 +360,17 @@
 			int next = this.prevTypeArgStart;
 			switch (this.source[next]) {
 				case '*': 
+					next = skipNullAnnotation(next+1);
 					break;
 				case '-': 
 				case '+':
-					next++;
+					next = skipNullAnnotation(next+1);
 					//$FALL-THROUGH$
 				default:
 					next = wrapperWithStart(next).computeEnd();
+					next++;
 			}
-			next++;
-		    this.prevTypeArgStart = next;
+			this.prevTypeArgStart = next;
 		    return new MethodAnnotationWalker(this.source, next,	this.environment);
 		}
 
@@ -358,7 +379,8 @@
 			switch (this.source[this.pos]) {
 				case '-': 
 				case '+':
-					return new MethodAnnotationWalker(this.source, this.pos+1, this.environment);
+					int newPos = skipNullAnnotation(this.pos+1);
+					return new MethodAnnotationWalker(this.source, newPos, this.environment);
 				default: // includes unbounded '*'
 					return ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER;
 			}			
@@ -367,10 +389,7 @@
 		@Override
 		public ITypeAnnotationWalker toNextArrayDimension() {
 			if (this.source[this.pos] == '[') {
-				int newPos = this.pos+1;
-				switch (this.source[newPos]) {
-					case NULLABLE: case NONNULL: newPos++; break;
-				}
+				int newPos = skipNullAnnotation(this.pos+1);
 				return new MethodAnnotationWalker(this.source, newPos, this.environment);
 			}
 			return ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER;
@@ -382,7 +401,7 @@
 		}
 
 		@Override
-		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) {
+		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) {
 			if (this.pos != -1 && this.pos < this.source.length-2) {
 				switch (this.source[this.pos]) {
 					case 'T':
@@ -401,6 +420,17 @@
 			}
 			return NO_ANNOTATIONS;
 		}
+		int skipNullAnnotation(int cur) {
+			if (cur >= this.source.length)
+				return cur;
+			switch (this.source[cur]) {
+				case NONNULL:
+				case NULLABLE:
+					return cur+1;
+				default:
+					return cur; 
+			}
+		}
 	}
 
 	/**
@@ -524,7 +554,7 @@
 		}
 
 		@Override
-		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) {
+		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) {
 			if (this.pos != -1 && this.pos < this.source.length-1) {
 				switch (this.source[this.pos]) {
 					case NULLABLE:
@@ -533,7 +563,7 @@
 						return new IBinaryAnnotation[]{ ExternalAnnotationProvider.this.NONNULL_ANNOTATION };
 				}				
 			}
-			return super.getAnnotationsAtCursor(currentTypeId);
+			return super.getAnnotationsAtCursor(currentTypeId, mayApplyArrayContentsDefaultNullness);
 		}
 	}
 
@@ -582,9 +612,7 @@
 		int typeEnd(int start) {
 			while (this.source[start] == '[') {
 				start++;
-				char an = this.source[start];
-				if (an == NULLABLE || an == NONNULL)
-					start++;
+				start = skipNullAnnotation(start);
 			}
 			SignatureWrapper wrapper1 = wrapperWithStart(start);
 			int end = wrapper1.skipAngleContents(wrapper1.computeEnd());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.java
index 9a63282..6c65fe3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfo.java
@@ -18,6 +18,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryField;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
@@ -32,9 +33,10 @@
 	protected int signatureUtf8Offset;
 	protected long tagBits;
 	protected Object wrappedConstantValue;
+	protected long version;
 
-public static FieldInfo createField(byte classFileBytes[], int offsets[], int offset) {
-	FieldInfo fieldInfo = new FieldInfo(classFileBytes, offsets, offset);
+public static FieldInfo createField(byte classFileBytes[], int offsets[], int offset, long version) {
+	FieldInfo fieldInfo = new FieldInfo(classFileBytes, offsets, offset, version);
 	
 	int attributesCount = fieldInfo.u2At(6);
 	int readOffset = 8;
@@ -100,11 +102,13 @@
  * @param classFileBytes byte[]
  * @param offsets int[]
  * @param offset int
+ * @param version class file version
  */
-protected FieldInfo (byte classFileBytes[], int offsets[], int offset) {
+protected FieldInfo (byte classFileBytes[], int offsets[], int offset, long version) {
 	super(classFileBytes, offsets, offset);
 	this.accessFlags = -1;
 	this.signatureUtf8Offset = -1;
+	this.version = version;
 }
 private AnnotationInfo[] decodeAnnotations(int offset, boolean runtimeVisible) {
 	int numberOfAnnotations = u2At(offset + 6);
@@ -120,11 +124,12 @@
 			long standardTagBits = newInfo.standardAnnotationTagBits;
 			if (standardTagBits != 0) {
 				this.tagBits |= standardTagBits;
-			} else {
-				if (newInfos == null)
-					newInfos = new AnnotationInfo[numberOfAnnotations - i];
-				newInfos[newInfoCount++] = newInfo;
+				if (this.version < ClassFileConstants.JDK9 || (standardTagBits & TagBits.AnnotationDeprecated) == 0)
+					continue;
 			}
+			if (newInfos == null)
+				newInfos = new AnnotationInfo[numberOfAnnotations - i];
+			newInfos[newInfoCount++] = newInfo;
 		}
 		if (newInfos != null) {
 			if (newInfoCount != newInfos.length)
@@ -150,15 +155,18 @@
 	return null;
 }
 
+@Override
 public int compareTo(Object o) {
 	return new String(getName()).compareTo(new String(((FieldInfo) o).getName()));
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof FieldInfo)) {
 		return false;
 	}
 	return CharOperation.equals(getName(), ((FieldInfo) o).getName());
 }
+@Override
 public int hashCode() {
 	return CharOperation.hashCode(getName());
 }
@@ -167,6 +175,7 @@
  * Return org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant.NotAConstant if there is none.
  * @return org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant
  */
+@Override
 public Constant getConstant() {
 	if (this.constant == null) {
 		// read constant
@@ -174,6 +183,7 @@
 	}
 	return this.constant;
 }
+@Override
 public char[] getGenericSignature() {
 	if (this.signatureUtf8Offset != -1) {
 		if (this.signature == null) {
@@ -190,6 +200,7 @@
  * Set the AccDeprecated and AccSynthetic bits if necessary
  * @return int
  */
+@Override
 public int getModifiers() {
 	if (this.accessFlags == -1) {
 		// compute the accessflag. Don't forget the deprecated attribute
@@ -202,6 +213,7 @@
  * Answer the name of the field.
  * @return char[]
  */
+@Override
 public char[] getName() {
 	if (this.name == null) {
 		// read the name
@@ -210,6 +222,7 @@
 	}
 	return this.name;
 }
+@Override
 public long getTagBits() {
 	return this.tagBits;
 }
@@ -224,6 +237,7 @@
  *   - an array of floats is [F
  * @return char[]
  */
+@Override
 public char[] getTypeName() {
 	if (this.descriptor == null) {
 		// read the signature
@@ -235,10 +249,12 @@
 /**
  * @return the annotations or null if there is none.
  */
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return null;
 }
 
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return null;
 }
@@ -404,6 +420,7 @@
 public void throwFormatException() throws ClassFormatException {
 	throw new ClassFormatException(ClassFormatException.ErrBadFieldInfo);
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(getClass().getName());
 	toStringContent(buffer);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.java
index 509b79e..41b3851 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithAnnotation.java
@@ -16,7 +16,7 @@
 	private AnnotationInfo[] annotations;
 
 FieldInfoWithAnnotation(FieldInfo info, AnnotationInfo[] annos) {
-	super(info.reference, info.constantPoolOffsets, info.structOffset);
+	super(info.reference, info.constantPoolOffsets, info.structOffset, info.version);
 	this.accessFlags = info.accessFlags;
 	this.attributeBytes = info.attributeBytes;
 	this.constant = info.constant;
@@ -29,21 +29,25 @@
 	this.wrappedConstantValue = info.wrappedConstantValue;
 	this.annotations = annos;
 }
+@Override
 public org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation[] getAnnotations() {
 	return this.annotations;
 }
+@Override
 protected void initialize() {
 	if (this.annotations != null)
 		for (int i = 0, max = this.annotations.length; i < max; i++)
 			this.annotations[i].initialize();
 	super.initialize();
 }
+@Override
 protected void reset() {
 	if (this.annotations != null)
 		for (int i = 0, max = this.annotations.length; i < max; i++)
 			this.annotations[i].reset();
 	super.reset();
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(getClass().getName());
 	if (this.annotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.java
index 9d535fc..05791a8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/FieldInfoWithTypeAnnotation.java
@@ -20,20 +20,24 @@
 	super(info, annos);
 	this.typeAnnotations = typeAnnos;
 }
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return this.typeAnnotations;
 }
+@Override
 protected void initialize() {
 	for (int i = 0, max = this.typeAnnotations.length; i < max; i++)
 		this.typeAnnotations[i].initialize();
 	super.initialize();
 }
+@Override
 protected void reset() {
 	if (this.typeAnnotations != null)
 		for (int i = 0, max = this.typeAnnotations.length; i < max; i++)
 			this.typeAnnotations[i].reset();
 	super.reset();
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(getClass().getName());
 	if (this.typeAnnotations != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.java
index e156789..6ff1b88 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/InnerClassInfo.java
@@ -35,13 +35,8 @@
 	this.outerClassNameIndex = u2At(2);
 	this.innerNameIndex = u2At(4);
 }
-/**
- * Answer the resolved name of the enclosing type in the
- * class file format as specified in section 4.2 of the Java 2 VM spec.
- *
- * For example, java.lang.String is java/lang/String.
- * @return char[]
- */
+
+@Override
 public char[] getEnclosingTypeName() {
 	if (!this.readOuterClassName) {
 		// read outer class name
@@ -57,11 +52,8 @@
 	}
 	return this.outerClassName;
 }
-/**
- * Answer an int whose bits are set according the access constants
- * defined by the VM spec.
- * @return int
- */
+
+@Override
 public int getModifiers() {
 	if (this.accessFlags == -1) {
 		// read access flag
@@ -69,13 +61,8 @@
 	}
 	return this.accessFlags;
 }
-/**
- * Answer the resolved name of the member type in the
- * class file format as specified in section 4.2 of the Java 2 VM spec.
- *
- * For example, p1.p2.A.M is p1/p2/A$M.
- * @return char[]
- */
+
+@Override
 public char[] getName() {
 	if (!this.readInnerClassName) {
 		// read the inner class name
@@ -108,6 +95,7 @@
  * Answer the string representation of the receiver
  * @return java.lang.String
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	if (getName() != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.java
index 8791b71..b997f10 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +20,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryMethod;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 
 @SuppressWarnings("rawtypes")
 public class MethodInfo extends ClassFileStruct implements IBinaryMethod, Comparable {
@@ -29,15 +30,16 @@
 	protected int accessFlags;
 	protected int attributeBytes;
 	protected char[] descriptor;
-	protected char[][] exceptionNames;
+	protected volatile char[][] exceptionNames;
 	protected char[] name;
 	protected char[] signature;
 	protected int signatureUtf8Offset;
 	protected long tagBits;
-	protected char[][] argumentNames;
+	protected volatile char[][] argumentNames;
+	protected long version;
 
-public static MethodInfo createMethod(byte classFileBytes[], int offsets[], int offset) {
-	MethodInfo methodInfo = new MethodInfo(classFileBytes, offsets, offset);
+public static MethodInfo createMethod(byte classFileBytes[], int offsets[], int offset, long version) {
+	MethodInfo methodInfo = new MethodInfo(classFileBytes, offsets, offset, version);
 	int attributesCount = methodInfo.u2At(6);
 	int readOffset = 8;
 	AnnotationInfo[] annotations = null;
@@ -146,22 +148,25 @@
 	if (numberOfAnnotations > 0) {
 		AnnotationInfo[] annos = decodeAnnotations(offset + 8, runtimeVisible, numberOfAnnotations, methodInfo);
 		if (runtimeVisible){
-			int numStandardAnnotations = 0;
+			int numRetainedAnnotations = 0;
 			for( int i=0; i<numberOfAnnotations; i++ ){
 				long standardAnnoTagBits = annos[i].standardAnnotationTagBits;
 				methodInfo.tagBits |= standardAnnoTagBits;
 				if(standardAnnoTagBits != 0){
-					annos[i] = null;
-					numStandardAnnotations ++;
+					if (methodInfo.version < ClassFileConstants.JDK9 || (standardAnnoTagBits & TagBits.AnnotationDeprecated) == 0) { // must retain enhanced deprecation
+						annos[i] = null;
+						continue;
+					}
 				}
+				numRetainedAnnotations++;
 			}
 
-			if( numStandardAnnotations != 0 ){
-				if( numStandardAnnotations == numberOfAnnotations )
+			if(numRetainedAnnotations != numberOfAnnotations){
+				if(numRetainedAnnotations == 0)
 					return null;
 
 				// need to resize
-				AnnotationInfo[] temp = new AnnotationInfo[numberOfAnnotations - numStandardAnnotations ];
+				AnnotationInfo[] temp = new AnnotationInfo[numRetainedAnnotations];
 				int tmpIndex = 0;
 				for (int i = 0; i < numberOfAnnotations; i++)
 					if (annos[i] != null)
@@ -213,12 +218,15 @@
  * @param classFileBytes byte[]
  * @param offsets int[]
  * @param offset int
+ * @param version class file version 
  */
-protected MethodInfo (byte classFileBytes[], int offsets[], int offset) {
+protected MethodInfo (byte classFileBytes[], int offsets[], int offset, long version) {
 	super(classFileBytes, offsets, offset);
 	this.accessFlags = -1;
 	this.signatureUtf8Offset = -1;
+	this.version = version;
 }
+@Override
 public int compareTo(Object o) {
 	MethodInfo otherMethod = (MethodInfo) o;
 	int result = new String(getSelector()).compareTo(new String(otherMethod.getSelector()));
@@ -238,38 +246,34 @@
 public int hashCode() {
 	return CharOperation.hashCode(getSelector()) + CharOperation.hashCode(getMethodDescriptor());
 }
-/**
- * @return the annotations or null if there is none.
- */
+
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return null;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IGenericMethod#getArgumentNames()
  */
+@Override
 public char[][] getArgumentNames() {
 	if (this.argumentNames == null) {
 		readCodeAttribute();
 	}
 	return this.argumentNames;
 }
+@Override
 public Object getDefaultValue() {
 	return null;
 }
-/**
- * Answer the resolved names of the exception types in the
- * class file format as specified in section 4.2 of the Java 2 VM spec
- * or null if the array is empty.
- *
- * For example, java.lang.String is java/lang/String.
- * @return char[][]
- */
+
+@Override
 public char[][] getExceptionTypeNames() {
 	if (this.exceptionNames == null) {
 		readExceptionAttributes();
 	}
 	return this.exceptionNames;
 }
+@Override
 public char[] getGenericSignature() {
 	if (this.signatureUtf8Offset != -1) {
 		if (this.signature == null) {
@@ -280,15 +284,8 @@
 	}
 	return null;
 }
-/**
- * Answer the receiver's method descriptor which describes the parameter &
- * return types as specified in section 4.3.3 of the Java 2 VM spec.
- *
- * For example:
- *   - int foo(String) is (Ljava/lang/String;)I
- *   - void foo(Object[]) is (I)[Ljava/lang/Object;
- * @return char[]
- */
+
+@Override
 public char[] getMethodDescriptor() {
 	if (this.descriptor == null) {
 		// read the name
@@ -303,29 +300,28 @@
  * Set the AccDeprecated and AccSynthetic bits if necessary
  * @return int
  */
+@Override
 public int getModifiers() {
 	if (this.accessFlags == -1) {
 		// compute the accessflag. Don't forget the deprecated attribute
-		this.accessFlags = u2At(0);
 		readModifierRelatedAttributes();
 	}
 	return this.accessFlags;
 }
+@Override
 public IBinaryAnnotation[] getParameterAnnotations(int index, char[] classFileName) {
 	return null;
 }
+@Override
 public int getAnnotatedParametersCount() {
 	return 0;
 }
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return null;
 }
-/**
- * Answer the name of the method.
- *
- * For a constructor, answer <init> & <clinit> for a clinit method.
- * @return char[]
- */
+
+@Override
 public char[] getSelector() {
 	if (this.name == null) {
 		// read the name
@@ -334,6 +330,7 @@
 	}
 	return this.name;
 }
+@Override
 public long getTagBits() {
 	return this.tagBits;
 }
@@ -354,6 +351,7 @@
  * Answer true if the method is a class initializer, false otherwise.
  * @return boolean
  */
+@Override
 public boolean isClinit() {
 	return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isClinit(getSelector());
 }
@@ -361,6 +359,7 @@
  * Answer true if the method is a constructor, false otherwise.
  * @return boolean
  */
+@Override
 public boolean isConstructor() {
 	return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isConstructor(getSelector());
 }
@@ -371,9 +370,10 @@
 public boolean isSynthetic() {
 	return (getModifiers() & ClassFileConstants.AccSynthetic) != 0;
 }
-private void readExceptionAttributes() {
+private synchronized void readExceptionAttributes() {
 	int attributesCount = u2At(6);
 	int readOffset = 8;
+	char[][] names = null;
 	for (int i = 0; i < attributesCount; i++) {
 		int utf8Offset = this.constantPoolOffsets[u2At(readOffset)] - this.structOffset;
 		char[] attributeName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
@@ -383,15 +383,15 @@
 			// place the readOffset at the beginning of the exceptions table
 			readOffset += 8;
 			if (entriesNumber == 0) {
-				this.exceptionNames = noException;
+				names = noException;
 			} else {
-				this.exceptionNames = new char[entriesNumber][];
+				names = new char[entriesNumber][];
 				for (int j = 0; j < entriesNumber; j++) {
 					utf8Offset =
 						this.constantPoolOffsets[u2At(
 							this.constantPoolOffsets[u2At(readOffset)] - this.structOffset + 1)]
 							- this.structOffset;
-					this.exceptionNames[j] = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+					names[j] = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
 					readOffset += 2;
 				}
 			}
@@ -399,11 +399,14 @@
 			readOffset += (6 + u4At(readOffset + 2));
 		}
 	}
-	if (this.exceptionNames == null) {
+	if (names == null) {
 		this.exceptionNames = noException;
+	} else {
+		this.exceptionNames = names;
 	}
 }
-private void readModifierRelatedAttributes() {
+private synchronized void readModifierRelatedAttributes() {
+	int flags = u2At(0);
 	int attributesCount = u2At(6);
 	int readOffset = 8;
 	for (int i = 0; i < attributesCount; i++) {
@@ -414,23 +417,24 @@
 			switch(attributeName[0]) {
 				case 'D' :
 					if (CharOperation.equals(attributeName, AttributeNamesConstants.DeprecatedName))
-						this.accessFlags |= ClassFileConstants.AccDeprecated;
+						flags |= ClassFileConstants.AccDeprecated;
 					break;
 				case 'S' :
 					if (CharOperation.equals(attributeName, AttributeNamesConstants.SyntheticName))
-						this.accessFlags |= ClassFileConstants.AccSynthetic;
+						flags |= ClassFileConstants.AccSynthetic;
 					break;
 				case 'A' :
 					if (CharOperation.equals(attributeName, AttributeNamesConstants.AnnotationDefaultName))
-						this.accessFlags |= ClassFileConstants.AccAnnotationDefault;
+						flags |= ClassFileConstants.AccAnnotationDefault;
 					break;
 				case 'V' :
 					if (CharOperation.equals(attributeName, AttributeNamesConstants.VarargsName))
-						this.accessFlags |= ClassFileConstants.AccVarargs;
+						flags |= ClassFileConstants.AccVarargs;
 			}
 		}
 		readOffset += (6 + u4At(readOffset + 2));
 	}
+	this.accessFlags = flags;
 }
 /**
  * Answer the size of the receiver in bytes.
@@ -454,7 +458,7 @@
 protected void toStringContent(StringBuffer buffer) {
 	BinaryTypeFormatter.methodToStringContent(buffer, this);
 }
-private void readCodeAttribute() {
+private synchronized void readCodeAttribute() {
 	int attributesCount = u2At(6);
 	int readOffset = 8;
 	if (attributesCount != 0) {
@@ -501,7 +505,7 @@
 	final int length = u2At(readOffset);
 	if (length != 0) {
 		readOffset += 2;
-		this.argumentNames = new char[length][];
+		char[][] names = new char[length][];
 		int argumentNamesIndex = 0;
 		for (int i = 0; i < length; i++) {
 			int startPC = u2At(readOffset);
@@ -510,17 +514,18 @@
 				int utf8Offset = this.constantPoolOffsets[nameIndex] - this.structOffset;
 				char[] localVariableName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
 				if (!CharOperation.equals(localVariableName, ConstantPool.This)) {
-					this.argumentNames[argumentNamesIndex++] = localVariableName;
+					names[argumentNamesIndex++] = localVariableName;
 				}
 			} else {
 				break;
 			}
 			readOffset += 10;
 		}
-		if (argumentNamesIndex != this.argumentNames.length) {
+		if (argumentNamesIndex != names.length) {
 			// resize
-			System.arraycopy(this.argumentNames, 0, (this.argumentNames = new char[argumentNamesIndex][]), 0, argumentNamesIndex);
+			System.arraycopy(names, 0, (names = new char[argumentNamesIndex][]), 0, argumentNamesIndex);
 		}
+		this.argumentNames = names;
 	}
 }
 private void decodeMethodParameters(int offset, MethodInfo methodInfo) {
@@ -528,18 +533,19 @@
 	final int length = u1At(readOffset);
 	if (length != 0) {
 		readOffset += 1;
-		this.argumentNames = new char[length][];
+		char[][] names = new char[length][];
 		for (int i = 0; i < length; i++) {
 			int nameIndex = u2At(readOffset);
 			if (nameIndex != 0) {
 				int utf8Offset = this.constantPoolOffsets[nameIndex] - this.structOffset;
 				char[] parameterName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
-				this.argumentNames[i] = parameterName;
+				names[i] = parameterName;
 			} else {
-				this.argumentNames[i] = CharOperation.concat(ARG, String.valueOf(i).toCharArray());
+				names[i] = CharOperation.concat(ARG, String.valueOf(i).toCharArray());
 			}
 			readOffset += 4;
 		}
+		this.argumentNames = names;
 	}
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.java
index eeffd1c..05849fc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithAnnotations.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2016 BEA Systems, Inc.
+ * Copyright (c) 2005, 2018 BEA Systems, Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,7 +16,7 @@
 	protected AnnotationInfo[] annotations;
 
 MethodInfoWithAnnotations(MethodInfo methodInfo, AnnotationInfo[] annotations) {
-	super(methodInfo.reference, methodInfo.constantPoolOffsets, methodInfo.structOffset);
+	super(methodInfo.reference, methodInfo.constantPoolOffsets, methodInfo.structOffset, methodInfo.version);
 	this.annotations = annotations;
 
 	this.accessFlags = methodInfo.accessFlags;
@@ -28,15 +28,18 @@
 	this.signatureUtf8Offset = methodInfo.signatureUtf8Offset;
 	this.tagBits = methodInfo.tagBits;
 }
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return this.annotations;
 }
+@Override
 protected void initialize() {
 	for (int i = 0, l = this.annotations == null ? 0 : this.annotations.length; i < l; i++)
 		if (this.annotations[i] != null)
 			this.annotations[i].initialize();
 	super.initialize();
 }
+@Override
 protected void reset() {
 	for (int i = 0, l = this.annotations == null ? 0 : this.annotations.length; i < l; i++)
 		if (this.annotations[i] != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.java
index 7432a3b..049f551 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithParameterAnnotations.java
@@ -21,6 +21,7 @@
 	super(methodInfo, annotations);
 	this.parameterAnnotations = parameterAnnotations;
 }
+@Override
 public IBinaryAnnotation[] getParameterAnnotations(int index, char[] classFileName) {
 	try {
 		return this.parameterAnnotations == null ? null : this.parameterAnnotations[index];
@@ -42,9 +43,11 @@
 		throw new IllegalStateException(message.toString(), aioobe);
 	}
 }
+@Override
 public int getAnnotatedParametersCount() {
 	return this.parameterAnnotations == null ? 0 : this.parameterAnnotations.length;
 }
+@Override
 protected void initialize() {
 	for (int i = 0, l = this.parameterAnnotations == null ? 0 : this.parameterAnnotations.length; i < l; i++) {
 		AnnotationInfo[] infos = this.parameterAnnotations[i];
@@ -53,6 +56,7 @@
 	}
 	super.initialize();
 }
+@Override
 protected void reset() {
 	for (int i = 0, l = this.parameterAnnotations == null ? 0 : this.parameterAnnotations.length; i < l; i++) {
 		AnnotationInfo[] infos = this.parameterAnnotations[i];
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.java
index fd0227d..84cf622 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/MethodInfoWithTypeAnnotations.java
@@ -20,16 +20,19 @@
 	super(methodInfo, annotations, parameterAnnotations);
 	this.typeAnnotations = typeAnnotations;
 }
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return this.typeAnnotations;
 }
 
+@Override
 protected void initialize() {
 	for (int i = 0, l = this.typeAnnotations == null ? 0 : this.typeAnnotations.length; i < l; i++) {
 		this.typeAnnotations[i].initialize();
 	}
 	super.initialize();
 }
+@Override
 protected void reset() {
 	for (int i = 0, l = this.typeAnnotations == null ? 0 : this.typeAnnotations.length; i < l; i++) {
 		this.typeAnnotations[i].reset();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.java
new file mode 100644
index 0000000..2d7f4da
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/ModuleInfo.java
@@ -0,0 +1,392 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.classfmt;
+
+import java.util.Arrays;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+
+public class ModuleInfo extends ClassFileStruct implements IBinaryModule {
+	protected int flags;
+	protected int requiresCount;
+	protected int exportsCount;
+	protected int usesCount;
+	protected int providesCount;
+	protected int opensCount;
+	protected char[] name;
+	protected char[] version;
+	protected ModuleReferenceInfo[] requires;
+	protected PackageExportInfo[] exports;
+	protected PackageExportInfo[] opens;
+	char[][] uses;
+	IModule.IService[] provides;
+
+	protected AnnotationInfo[] annotations;
+	private long tagBits;
+
+
+	@Override
+	public boolean isOpen() {
+		return (this.flags & ClassFileConstants.ACC_OPEN) != 0;
+	}
+	public int requiresCount() {
+		return this.requiresCount;
+	}
+	public int exportsCount() {
+		return this.exportsCount;
+	}
+	public int usesCount() {
+		return this.usesCount;
+	}
+	public int providesCount() {
+		return this.providesCount;
+	}
+	@Override
+	public char[] name() {
+		return this.name;
+	}
+	public void setName(char[] name) {
+		this.name = name;
+	}
+	@Override
+	public IModule.IModuleReference[] requires() {
+		return this.requires;
+	}
+	@Override
+	public IModule.IPackageExport[] exports() {
+		return this.exports;
+	}
+	@Override
+	public char[][] uses() {
+		return this.uses;
+	}
+	@Override
+	public IService[] provides() {
+		return this.provides;
+	}
+	@Override
+	public IModule.IPackageExport[] opens() {
+		return this.opens;
+	}
+	@Override
+	public IBinaryAnnotation[] getAnnotations() {
+		return this.annotations;
+	}
+	@Override
+	public long getTagBits() {
+		return this.tagBits;
+	}
+
+	/**
+	 * @param classFileBytes byte[]
+	 * @param offsets int[]
+	 * @param offset int
+	 */
+	protected ModuleInfo (byte classFileBytes[], int offsets[], int offset) {
+		super(classFileBytes, offsets, offset);
+	}
+
+	/**
+	 * @param classFileBytes bytes of the enclosing class file
+	 * @param offsets constant pool offsets
+	 * @param offset offset to the "Module" attribute
+	 * @return a module info initialized from the "Module" attribute, which was already detected by the caller
+	 */
+	public static ModuleInfo createModule(byte classFileBytes[], int offsets[], int offset) {
+
+		ModuleInfo module = new ModuleInfo(classFileBytes, offsets, 0);
+
+		module.readModuleAttribute(offset+6);
+
+		return module;
+	}
+
+	private void readModuleAttribute(int moduleOffset) {
+		int utf8Offset;
+		int name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+		utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+		this.name = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+		CharOperation.replace(this.name, '/', '.');
+		moduleOffset += 2;
+		this.flags = u2At(moduleOffset);
+		moduleOffset += 2;
+		int version_index = u2At(moduleOffset);
+		if (version_index > 0) {
+			utf8Offset = this.constantPoolOffsets[version_index];
+			this.version = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+		}
+		moduleOffset += 2;
+
+		int count = u2At(moduleOffset);
+		this.requiresCount = count;
+		this.requires = new ModuleReferenceInfo[count];
+		moduleOffset += 2;
+		for (int i = 0; i < count; i++) {
+			name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+			utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+			char[] requiresNames = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			this.requires[i] = this.new ModuleReferenceInfo();
+			CharOperation.replace(requiresNames, '/', '.');
+			this.requires[i].refName = requiresNames;
+			moduleOffset += 2;
+			int modifiers = u2At(moduleOffset);
+			this.requires[i].modifiers = modifiers;
+			this.requires[i].isTransitive = (ClassFileConstants.ACC_TRANSITIVE & modifiers) != 0; // Access modifier
+			moduleOffset += 2;
+			version_index = u2At(moduleOffset);
+			if (version_index > 0) {
+				utf8Offset = this.constantPoolOffsets[version_index];
+				this.requires[i].required_version = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			}
+			moduleOffset += 2;
+		}
+		count = u2At(moduleOffset);
+		moduleOffset += 2;
+		this.exportsCount = count;
+		this.exports = new PackageExportInfo[count];
+		for (int i = 0; i < count; i++) {
+			name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+			utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+			char[] exported = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			CharOperation.replace(exported, '/', '.');
+			PackageExportInfo pack = this.new PackageExportInfo();
+			this.exports[i] = pack;
+			pack.packageName = exported;
+			moduleOffset += 2;
+			pack.modifiers = u2At(moduleOffset);
+			moduleOffset += 2;
+			int exportedtoCount = u2At(moduleOffset);
+			moduleOffset += 2;
+			if (exportedtoCount > 0) {
+				pack.exportedTo = new char[exportedtoCount][];
+				pack.exportedToCount = exportedtoCount;
+				for(int k = 0; k < exportedtoCount; k++) {
+					name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+					utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+					char[] exportedToName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+					CharOperation.replace(exportedToName, '/', '.');
+					pack.exportedTo[k] = exportedToName;
+					moduleOffset += 2;
+				}
+			}
+		}
+		count = u2At(moduleOffset);
+		moduleOffset += 2;
+		this.opensCount = count;
+		this.opens = new PackageExportInfo[count];
+		for (int i = 0; i < count; i++) {
+			name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+			utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+			char[] exported = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			CharOperation.replace(exported, '/', '.');
+			PackageExportInfo pack = this.new PackageExportInfo();
+			this.opens[i] = pack;
+			pack.packageName = exported;
+			moduleOffset += 2;
+			pack.modifiers = u2At(moduleOffset);
+			moduleOffset += 2;
+			int exportedtoCount = u2At(moduleOffset);
+			moduleOffset += 2;
+			if (exportedtoCount > 0) {
+				pack.exportedTo = new char[exportedtoCount][];
+				pack.exportedToCount = exportedtoCount;
+				for(int k = 0; k < exportedtoCount; k++) {
+					name_index = this.constantPoolOffsets[u2At(moduleOffset)];
+					utf8Offset = this.constantPoolOffsets[u2At(name_index + 1)];
+					char[] exportedToName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+					CharOperation.replace(exportedToName, '/', '.');
+					pack.exportedTo[k] = exportedToName;
+					moduleOffset += 2;
+				}
+			}
+		}
+		count = u2At(moduleOffset);
+		moduleOffset += 2;
+		this.usesCount = count;
+		this.uses = new char[count][];
+		for (int i = 0; i < count; i++) {
+			int classIndex = this.constantPoolOffsets[u2At(moduleOffset)];
+			utf8Offset = this.constantPoolOffsets[u2At(classIndex + 1)];
+			char[] inf = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			CharOperation.replace(inf, '/', '.');
+			this.uses[i] = inf;
+			moduleOffset += 2;
+		}
+		count = u2At(moduleOffset);
+		moduleOffset += 2;
+		this.providesCount = count;
+		this.provides = new ServiceInfo[count];
+		for (int i = 0; i < count; i++) {
+			int classIndex = this.constantPoolOffsets[u2At(moduleOffset)];
+			utf8Offset = this.constantPoolOffsets[u2At(classIndex + 1)];
+			char[] inf = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+			CharOperation.replace(inf, '/', '.');
+			ServiceInfo service = this.new ServiceInfo();
+			this.provides[i] = service;
+			service.serviceName = inf;
+			moduleOffset += 2;
+			int implCount = u2At(moduleOffset);
+			moduleOffset += 2;
+			service.with = new char[implCount][];
+			if (implCount > 0) {
+				service.with = new char[implCount][];
+				for(int k = 0; k < implCount; k++) {
+					classIndex = this.constantPoolOffsets[u2At(moduleOffset)];
+					utf8Offset = this.constantPoolOffsets[u2At(classIndex + 1)];
+					char[] implName = utf8At(utf8Offset + 3, u2At(utf8Offset + 1));
+					CharOperation.replace(implName, '/', '.');
+					service.with[k] = implName;
+					moduleOffset += 2;
+				}
+			}
+		}
+	}
+	void setAnnotations(AnnotationInfo[] annotationInfos, long tagBits, boolean fullyInitialize) {
+		this.annotations = annotationInfos;
+		this.tagBits = tagBits;
+		if (fullyInitialize) {
+			for (int i = 0, max = annotationInfos.length; i < max; i++) {
+				annotationInfos[i].initialize();
+			}
+		}
+	}
+
+	class ModuleReferenceInfo implements IModule.IModuleReference {
+		char[] refName;
+		boolean isTransitive = false;
+		int modifiers;
+		char[] required_version;
+		@Override
+		public char[] name() {
+			return this.refName;
+		}
+		@Override
+		public boolean isTransitive() {
+			return this.isTransitive;
+		}
+		@Override
+		public boolean equals(Object o) {
+			if (this == o) 
+				return true;
+			if (!(o instanceof IModule.IModuleReference))
+				return false;
+			IModule.IModuleReference mod = (IModule.IModuleReference) o;
+			if (this.modifiers != mod.getModifiers())
+				return false;
+			return CharOperation.equals(this.refName, mod.name(), false);
+		}
+		@Override
+		public int hashCode() {
+			return CharOperation.hashCode(this.refName);
+		}
+		@Override
+		public int getModifiers() {
+			return this.modifiers;
+		}
+	}
+	class PackageExportInfo implements IModule.IPackageExport {
+		char[] packageName;
+		char[][] exportedTo;
+		int exportedToCount;
+		int modifiers;
+		@Override
+		public char[] name() {
+			return this.packageName;
+		}
+
+		@Override
+		public char[][] targets() {
+			return this.exportedTo;
+		}
+		@Override
+		public String toString() {
+			StringBuffer buffer = new StringBuffer();
+			toStringContent(buffer);
+			return buffer.toString();
+		}
+		protected void toStringContent(StringBuffer buffer) {
+			buffer.append(this.packageName);
+			if (this.exportedToCount > 0) {
+				buffer.append(" to "); //$NON-NLS-1$
+				for(int i = 0; i < this.exportedToCount; i++) {
+					buffer.append(this.exportedTo[i]);
+					buffer.append(',').append(' ');
+				}
+			}
+			buffer.append(';').append('\n');
+		}
+	}
+	class ServiceInfo implements IModule.IService {
+		char[] serviceName;
+		char[][] with;
+		@Override
+		public char[] name() {
+			return this.serviceName;
+		}
+
+		@Override
+		public char[][] with() {
+			return this.with;
+		}
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (this == o)
+			return true;
+		if (!(o instanceof IModule))
+			return false;
+		IModule mod = (IModule) o;
+		if (!CharOperation.equals(this.name, mod.name()))
+			return false;
+		return Arrays.equals(this.requires, mod.requires());
+	}
+	@Override
+	public int hashCode() {
+		int result = 17;
+		int c = CharOperation.hashCode(this.name);
+		result = 31 * result + c;
+		c =  Arrays.hashCode(this.requires);
+		result = 31 * result + c;
+		return result;
+	}
+	@Override
+	public String toString() {
+		StringBuffer buffer = new StringBuffer(getClass().getName());
+		toStringContent(buffer);
+		return buffer.toString();
+	}
+	protected void toStringContent(StringBuffer buffer) {
+		buffer.append("\nmodule "); //$NON-NLS-1$
+		buffer.append(this.name).append(' ');
+		buffer.append('{').append('\n');
+		if (this.requiresCount > 0) {
+			for(int i = 0; i < this.requiresCount; i++) {
+				buffer.append("\trequires "); //$NON-NLS-1$
+				if (this.requires[i].isTransitive) {
+					buffer.append(" public "); //$NON-NLS-1$
+				}
+				buffer.append(this.requires[i].refName);
+				buffer.append(';').append('\n');
+			}
+		}
+		if (this.exportsCount > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.exportsCount; i++) {
+				buffer.append("\texports "); //$NON-NLS-1$
+				buffer.append(this.exports[i].toString());
+			}
+		}
+		buffer.append('\n').append('}').toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.java
index b7f6a17..fee61fe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/NonNullDefaultAwareTypeAnnotationWalker.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 GK Software AG.
+ * Copyright (c) 2014, 2018 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,15 +24,19 @@
  */
 public class NonNullDefaultAwareTypeAnnotationWalker extends TypeAnnotationWalker {
 
-	private int defaultNullness;
-	private boolean atDefaultLocation;
+	private final int defaultNullness;
+	private final boolean atDefaultLocation;
+	private final boolean atTypeBound;
+	private final boolean currentArrayContentIsNonNull;
+	private final boolean isEmpty;
+	private final IBinaryAnnotation nonNullAnnotation;
+	private final LookupEnvironment environment;
+	
 	private boolean nextIsDefaultLocation;
-	private boolean atTypeBound;
 	private boolean nextIsTypeBound;
-	private boolean isEmpty;
-	IBinaryAnnotation nonNullAnnotation;
-	LookupEnvironment environment;
+	private boolean nextArrayContentIsNonNull;
 
+	
 	/** Create initial walker with non-empty type annotations. */
 	public NonNullDefaultAwareTypeAnnotationWalker(IBinaryTypeAnnotation[] typeAnnotations,
 						int defaultNullness, LookupEnvironment environment) {
@@ -40,28 +44,34 @@
 		this.nonNullAnnotation = getNonNullAnnotation(environment);
 		this.defaultNullness = defaultNullness;
 		this.environment = environment;
+		this.atDefaultLocation = false;
+		this.atTypeBound = false;
+		this.isEmpty = false;
+		this.currentArrayContentIsNonNull = false;
 	}
 	
 	/** Create an initial walker without 'real' type annotations, but with a nonnull default. */
 	public NonNullDefaultAwareTypeAnnotationWalker(int defaultNullness, LookupEnvironment environment) {
-		this(defaultNullness, getNonNullAnnotation(environment), false, false, environment);
+		this(defaultNullness, getNonNullAnnotation(environment), false, false, environment, false);
 	}
 
 	/** Get restricted walker, still with non-empty type annotations. */
 	NonNullDefaultAwareTypeAnnotationWalker(IBinaryTypeAnnotation[] typeAnnotations, long newMatches, int newPathPtr,
 						int defaultNullness, IBinaryAnnotation nonNullAnnotation, boolean atDefaultLocation, boolean atTypeBound,
-						LookupEnvironment environment) {
+						LookupEnvironment environment, boolean currentArrayContentIsNonNull) {
 		super(typeAnnotations, newMatches, newPathPtr);
 		this.defaultNullness = defaultNullness;
 		this.nonNullAnnotation = nonNullAnnotation;
 		this.atDefaultLocation = atDefaultLocation;
 		this.atTypeBound = atTypeBound;
 		this.environment = environment;
+		this.currentArrayContentIsNonNull = this.nextArrayContentIsNonNull = currentArrayContentIsNonNull;
+		this.isEmpty = false;
 	}
 
 	/** Create a restricted walker without 'real' type annotations, but with a nonnull default. */
 	NonNullDefaultAwareTypeAnnotationWalker(int defaultNullness, IBinaryAnnotation nonNullAnnotation,
-						boolean atDefaultLocation, boolean atTypeBound, LookupEnvironment environment) {
+						boolean atDefaultLocation, boolean atTypeBound, LookupEnvironment environment, boolean currentArrayContentIsNonNull) {
 		super(null, 0, 0);
 		this.nonNullAnnotation = nonNullAnnotation;
 		this.defaultNullness = defaultNullness;
@@ -69,6 +79,7 @@
 		this.atTypeBound = atTypeBound;
 		this.isEmpty = true;
 		this.environment = environment;
+		this.currentArrayContentIsNonNull = this.nextArrayContentIsNonNull = currentArrayContentIsNonNull;
 	}
 	
 	private static IBinaryAnnotation getNonNullAnnotation(LookupEnvironment environment) {
@@ -87,24 +98,26 @@
 		};
 	}
 
+	@Override
 	protected TypeAnnotationWalker restrict(long newMatches, int newPathPtr) {
 		// considers nextIsDefaultLocation as the new atDefaultLocation
 		try {
 			// do we have any change at all?
 			if (this.matches == newMatches && this.pathPtr == newPathPtr
-					&& this.atDefaultLocation == this.nextIsDefaultLocation && this.atTypeBound == this.nextIsTypeBound)
+					&& this.atDefaultLocation == this.nextIsDefaultLocation && this.atTypeBound == this.nextIsTypeBound && this.currentArrayContentIsNonNull == this.nextArrayContentIsNonNull)
 				return this;
 			// are we running out of real type annotations?
 			if (newMatches == 0 || this.typeAnnotations == null || this.typeAnnotations.length == 0)
 				return new NonNullDefaultAwareTypeAnnotationWalker(this.defaultNullness, this.nonNullAnnotation, 
-												this.nextIsDefaultLocation, this.nextIsTypeBound, this.environment);
+												this.nextIsDefaultLocation, this.nextIsTypeBound, this.environment, this.nextArrayContentIsNonNull);
 			// proceed as normal, but pass on our specific fields, too:
 			return new NonNullDefaultAwareTypeAnnotationWalker(this.typeAnnotations, newMatches, newPathPtr,
 												this.defaultNullness, this.nonNullAnnotation, this.nextIsDefaultLocation,
-												this.nextIsTypeBound, this.environment);
+												this.nextIsTypeBound, this.environment, this.nextArrayContentIsNonNull);
 		} finally {
 			this.nextIsDefaultLocation = false; // expire
 			this.nextIsTypeBound = false;
+			this.nextArrayContentIsNonNull = this.currentArrayContentIsNonNull;
 		}
 	}
 	
@@ -139,6 +152,7 @@
 	public ITypeAnnotationWalker toTypeBound(short boundIndex) {
 		this.nextIsDefaultLocation = (this.defaultNullness & Binding.DefaultLocationTypeBound) != 0;
 		this.nextIsTypeBound = true;
+		this.nextArrayContentIsNonNull = false;
 		if (this.isEmpty) return restrict(this.matches, this.pathPtr);
 		return super.toTypeBound(boundIndex);
 	}
@@ -147,6 +161,7 @@
 	public ITypeAnnotationWalker toWildcardBound() {
 		this.nextIsDefaultLocation = (this.defaultNullness & Binding.DefaultLocationTypeBound) != 0;
 		this.nextIsTypeBound = true;
+		this.nextArrayContentIsNonNull = false;
 		if (this.isEmpty) return restrict(this.matches, this.pathPtr);
 		return super.toWildcardBound();
 	}
@@ -155,6 +170,7 @@
 	public ITypeAnnotationWalker toTypeParameterBounds(boolean isClassTypeParameter, int parameterRank) {
 		this.nextIsDefaultLocation = (this.defaultNullness & Binding.DefaultLocationTypeBound) != 0;
 		this.nextIsTypeBound = true;
+		this.nextArrayContentIsNonNull = false;
 		if (this.isEmpty) return restrict(this.matches, this.pathPtr);
 		return super.toTypeParameterBounds(isClassTypeParameter, parameterRank);
 	}
@@ -163,6 +179,7 @@
 	public ITypeAnnotationWalker toTypeArgument(int rank) {
 		this.nextIsDefaultLocation = (this.defaultNullness & Binding.DefaultLocationTypeArgument) != 0;
 		this.nextIsTypeBound = false;
+		this.nextArrayContentIsNonNull = false;
 		if (this.isEmpty) return restrict(this.matches, this.pathPtr);
 		return super.toTypeArgument(rank);
 	}
@@ -171,6 +188,7 @@
 	public ITypeAnnotationWalker toTypeParameter(boolean isClassTypeParameter, int rank) {
 		this.nextIsDefaultLocation = (this.defaultNullness & Binding.DefaultLocationTypeParameter) != 0;
 		this.nextIsTypeBound = false;
+		this.nextArrayContentIsNonNull = false;
 		if (this.isEmpty) return restrict(this.matches, this.pathPtr);
 		return super.toTypeParameter(isClassTypeParameter, rank);
 	}
@@ -182,9 +200,9 @@
 	}
 
 	@Override
-	public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) {
-		IBinaryAnnotation[] normalAnnotations = this.isEmpty ? NO_ANNOTATIONS : super.getAnnotationsAtCursor(currentTypeId);
-		if (this.atDefaultLocation &&
+	public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) {
+		IBinaryAnnotation[] normalAnnotations = this.isEmpty ? NO_ANNOTATIONS : super.getAnnotationsAtCursor(currentTypeId, mayApplyArrayContentsDefaultNullness);
+		if ((this.atDefaultLocation || (mayApplyArrayContentsDefaultNullness && this.currentArrayContentIsNonNull)) &&
 				!(currentTypeId == -1) && // never apply default on type variable use or wildcard
 				!(this.atTypeBound && currentTypeId == TypeIds.T_JavaLangObject)) // for CLIMB-to-top consider a j.l.Object type bound as no explicit type bound
 		{
@@ -204,4 +222,57 @@
 		}
 		return normalAnnotations;
 	}
+	
+	@Override
+	public ITypeAnnotationWalker toNextArrayDimension() {
+		boolean hasNNBDForArrayContents = (this.defaultNullness & Binding.DefaultLocationArrayContents) != 0;
+		if (hasNNBDForArrayContents) {
+			this.nextArrayContentIsNonNull = true;
+		}
+		this.nextIsDefaultLocation = false;
+		this.nextIsTypeBound = false;
+		if (this.isEmpty)
+			return restrict(this.matches, this.pathPtr);
+		return super.toNextArrayDimension();
+	}
+
+	public static ITypeAnnotationWalker updateWalkerForParamNonNullDefault(ITypeAnnotationWalker walker,
+			int defaultNullness, LookupEnvironment environment) {
+		if (environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
+			if (defaultNullness != Binding.NO_NULL_DEFAULT) {
+				if (defaultNullness == Binding.NULL_UNSPECIFIED_BY_DEFAULT) {
+					if (walker instanceof NonNullDefaultAwareTypeAnnotationWalker) {
+						NonNullDefaultAwareTypeAnnotationWalker nonNullDefaultAwareTypeAnnotationWalker = (NonNullDefaultAwareTypeAnnotationWalker) walker;
+						return new TypeAnnotationWalker(nonNullDefaultAwareTypeAnnotationWalker.typeAnnotations,
+								nonNullDefaultAwareTypeAnnotationWalker.matches,
+								nonNullDefaultAwareTypeAnnotationWalker.pathPtr);
+					} else {
+						return walker;
+					}
+				} else {
+					if (walker instanceof TypeAnnotationWalker) {
+						TypeAnnotationWalker typeAnnotationWalker = (TypeAnnotationWalker) walker;
+						
+						IBinaryAnnotation nonNullAnnotation2;
+						if (walker instanceof NonNullDefaultAwareTypeAnnotationWalker) {
+							NonNullDefaultAwareTypeAnnotationWalker nonNullDefaultAwareTypeAnnotationWalker = (NonNullDefaultAwareTypeAnnotationWalker) walker;
+							if(nonNullDefaultAwareTypeAnnotationWalker.isEmpty) {
+								return new NonNullDefaultAwareTypeAnnotationWalker(defaultNullness, environment);								
+							}
+							nonNullAnnotation2 = nonNullDefaultAwareTypeAnnotationWalker.nonNullAnnotation;
+						} else {
+							nonNullAnnotation2 = getNonNullAnnotation(environment);
+						}
+						return new NonNullDefaultAwareTypeAnnotationWalker(typeAnnotationWalker.typeAnnotations,
+								typeAnnotationWalker.matches, typeAnnotationWalker.pathPtr, defaultNullness,
+								nonNullAnnotation2, false, false, environment, false);
+					} else {
+						// empty or walker from ExternalAnnotationProvider
+						return new NonNullDefaultAwareTypeAnnotationWalker(defaultNullness, environment);
+					}
+				}
+			}
+		}
+		return walker;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.java
index 647e7df..322f827 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationInfo.java
@@ -109,6 +109,7 @@
 	this.readOffset += this.annotation.readOffset;
 }
 
+@Override
 public IBinaryAnnotation getAnnotation() {
 	return this.annotation;
 }
@@ -117,48 +118,58 @@
 	this.annotation.initialize();
 }
 
+@Override
 protected void reset() {
 	this.annotation.reset();
 	super.reset();
 }
 
+@Override
 public String toString() {
 	return BinaryTypeFormatter.annotationToString(this);
 }
 
+@Override
 public int getTargetType() {
 	return this.targetType;
 }
 
+@Override
 public int getSupertypeIndex() {
 	// assert this.targetType == 0x10
 	return this.info;
 }
 
+@Override
 public int getTypeParameterIndex() {
 	// assert this.targetType == 0x00 or 0x01
 	return this.info;
 }
 
+@Override
 public int getBoundIndex() {
 	// assert this.targetType == 0x11 or 0x12
 	return this.info2;
 }
 
+@Override
 public int getMethodFormalParameterIndex() {
 	// assert this.targetType == 0x16
 	return this.info;
 }
 
+@Override
 public int getThrowsTypeIndex() {
 	// assert this.targetType == 0x17
 	return this.info;
 }
 
+@Override
 public int[] getTypePath() {
 	return this.typePath;
 }
 
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -173,6 +184,7 @@
 	return result;
 }
 
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.java
index 7cc0930..234060d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/classfmt/TypeAnnotationWalker.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2015 GK Software AG.
+ * Copyright (c) 2013, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -235,7 +235,7 @@
 	protected ITypeAnnotationWalker toNextDetail(int detailKind) {
 		long newMatches = this.matches;
 		if (newMatches == 0)
-			return EMPTY_ANNOTATION_WALKER;
+			return restrict(newMatches, this.pathPtr+2);
 		int length = this.typeAnnotations.length;
 		long mask = 1;
 		for (int i = 0; i < length; i++, mask = mask << 1) {
@@ -251,7 +251,7 @@
 	// ==== leaves: the actual annotations: ====
 	
 	@Override
-	public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) {
+	public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) {
 		int length = this.typeAnnotations.length;
 		IBinaryAnnotation[] filtered = new IBinaryAnnotation[length];
 		long ptr = 1;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.java
index a76d985..af71de4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AnnotationContext.java
@@ -40,6 +40,7 @@
 		this.visibility = visibility;
 	}
 
+	@Override
 	public String toString() {
 		return "AnnotationContext [annotation=" //$NON-NLS-1$
 				+ this.annotation
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.java
index 30a3775..5e102d6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/AttributeNamesConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,6 +28,9 @@
 	final char[] SignatureName = "Signature".toCharArray(); //$NON-NLS-1$
 	final char[] LocalVariableTypeTableName = "LocalVariableTypeTable".toCharArray(); //$NON-NLS-1$
 	final char[] EnclosingMethodName = "EnclosingMethod".toCharArray(); //$NON-NLS-1$
+	final char[] ModuleName = "Module".toCharArray(); //$NON-NLS-1$
+	final char[] ModuleMainClass = "ModuleMainClass".toCharArray(); //$NON-NLS-1$
+	final char[] ModulePackages = "ModulePackages".toCharArray(); //$NON-NLS-1$
 	final char[] AnnotationDefaultName = "AnnotationDefault".toCharArray(); //$NON-NLS-1$
 	final char[] RuntimeInvisibleAnnotationsName = "RuntimeInvisibleAnnotations".toCharArray(); //$NON-NLS-1$
 	final char[] RuntimeVisibleAnnotationsName = "RuntimeVisibleAnnotations".toCharArray(); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.java
index 7e6f970..2b3d9fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/BranchLabel.java
@@ -180,6 +180,7 @@
 /*
 * Place the label. If we have forward references resolve them.
 */
+@Override
 public void place() { // Currently lacking wide support.
 //	if ((this.tagBits & USED) == 0 && this.forwardReferenceCount == 0) {
 //		return;
@@ -241,6 +242,7 @@
 /**
  * Print out the receiver
  */
+@Override
 public String toString() {
 	String basic = getClass().getName();
 	basic = basic.substring(basic.lastIndexOf('.')+1);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.java
index 3469db7..e1bfeaa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CaseLabel.java
@@ -26,6 +26,7 @@
 * Put down  a reference to the array at the location in the codestream.
 * #placeInstruction() must be performed prior to any #branch()
 */
+@Override
 void branch() {
 	if (this.position == POS_NOT_SET) {
 		addForwardReference(this.codeStream.position);
@@ -43,19 +44,23 @@
 /*
 * No support for wide branches yet
 */
+@Override
 void branchWide() {
 	branch(); // case label branch is already wide
 }
 
+@Override
 public boolean isCaseLabel() {
 	return true;
 }
+@Override
 public boolean isStandardLabel(){
 	return false;
 }
 /*
 * Put down  a reference to the array at the location in the codestream.
 */
+@Override
 public void place() {
 	if ((this.tagBits & USED) != 0) {
 		this.position = this.codeStream.getPosition();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.java
index 47fc0d2..1d7014c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CharArrayCache.java
@@ -192,6 +192,7 @@
  *
  * return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = size();
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
index 2b7343c..3ab6199 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java
@@ -1,10 +1,11 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
@@ -2542,7 +2543,6 @@
 	}
 	ClassScope scope = ((SourceTypeBinding)methodBinding.declaringClass).scope;
 	
-	
 	// Generate the first switch, on method name hashcode
 	aload_0();
 	invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, ConstantPool.GetImplMethodName, ConstantPool.GetImplMethodNameSignature);
@@ -2635,81 +2635,81 @@
 		// Loop through all lambdas that share the same hashcode
 		for (int j = 0, count = synthetics.size(); j < count; j++) {
 			SyntheticMethodBinding syntheticMethodBinding = (SyntheticMethodBinding) synthetics.get(j);
-		// Compare ImplMethodKind
-		aload_0();
+			// Compare ImplMethodKind
+			aload_0();
 			FunctionalExpression funcEx = syntheticMethodBinding.lambda != null ? syntheticMethodBinding.lambda
 					: syntheticMethodBinding.serializableMethodRef;
 			MethodBinding mb = funcEx.binding;
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
-				ConstantPool.GetImplMethodKind, ConstantPool.GetImplMethodKindSignature);
-		byte methodKind = 0;
-		if (mb.isStatic()) {
-			methodKind = ClassFileConstants.MethodHandleRefKindInvokeStatic;
-		} else if (mb.isPrivate()) {
-			methodKind = ClassFileConstants.MethodHandleRefKindInvokeSpecial;
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
+					ConstantPool.GetImplMethodKind, ConstantPool.GetImplMethodKindSignature);
+			byte methodKind = 0;
+			if (mb.isStatic()) {
+				methodKind = ClassFileConstants.MethodHandleRefKindInvokeStatic;
+			} else if (mb.isPrivate()) {
+				methodKind = ClassFileConstants.MethodHandleRefKindInvokeSpecial;
 			} else if (mb.isConstructor()) {
 				methodKind = ClassFileConstants.MethodHandleRefKindNewInvokeSpecial;
 			} else if (mb.declaringClass.isInterface()) {
 				methodKind = ClassFileConstants.MethodHandleRefKindInvokeInterface;
-		} else {
-			methodKind = ClassFileConstants.MethodHandleRefKindInvokeVirtual;
-		}
-		bipush(methodKind);// TODO see table below
+			} else {
+				methodKind = ClassFileConstants.MethodHandleRefKindInvokeVirtual;
+			}
+			bipush(methodKind);// TODO see table below
 			if_icmpne(nextOne);
 
-		// Compare FunctionalInterfaceClass
-		aload_0();
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
-				ConstantPool.GetFunctionalInterfaceClass, ConstantPool.GetFunctionalInterfaceClassSignature);
-		String functionalInterface = null;
+			// Compare FunctionalInterfaceClass
+			aload_0();
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
+					ConstantPool.GetFunctionalInterfaceClass, ConstantPool.GetFunctionalInterfaceClassSignature);
+			String functionalInterface = null;
 			final TypeBinding expectedType = funcEx.expectedType();
-		if (expectedType instanceof IntersectionTypeBinding18) {
+			if (expectedType instanceof IntersectionTypeBinding18) {
 				functionalInterface = new String(
 						((IntersectionTypeBinding18) expectedType).getSAMType(scope).constantPoolName());
-		} else {
-			functionalInterface = new String(expectedType.constantPoolName());
-		}
-		ldc(functionalInterface);// e.g. "com/foo/X$Foo"
-		invokeObjectEquals();
+			} else {
+				functionalInterface = new String(expectedType.constantPoolName());
+			}
+			ldc(functionalInterface);// e.g. "com/foo/X$Foo"
+			invokeObjectEquals();
 			ifeq(nextOne);
-		
-		// Compare FunctionalInterfaceMethodName
-		aload_0();
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
+
+			// Compare FunctionalInterfaceMethodName
+			aload_0();
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
 					ConstantPool.GetFunctionalInterfaceMethodName,
 					ConstantPool.GetFunctionalInterfaceMethodNameSignature);
 			ldc(new String(funcEx.descriptor.selector)); // e.g. "m"
-		invokeObjectEquals();
+			invokeObjectEquals();
 			ifeq(nextOne);
 
-		// Compare FunctionalInterfaceMethodSignature
-		aload_0();
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
+			// Compare FunctionalInterfaceMethodSignature
+			aload_0();
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
 					ConstantPool.GetFunctionalInterfaceMethodSignature,
 					ConstantPool.GetFunctionalInterfaceMethodSignatureSignature);
 			ldc(new String(funcEx.descriptor.original().signature())); // e.g "()I"
-		invokeObjectEquals();
+			invokeObjectEquals();
 			ifeq(nextOne);
 
-		// Compare ImplClass
-		aload_0();
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
-				ConstantPool.GetImplClass, ConstantPool.GetImplClassSignature);
-		ldc(new String(mb.declaringClass.constantPoolName())); // e.g. "com/foo/X"
-		invokeObjectEquals();
+			// Compare ImplClass
+			aload_0();
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
+					ConstantPool.GetImplClass, ConstantPool.GetImplClassSignature);
+			ldc(new String(mb.declaringClass.constantPoolName())); // e.g. "com/foo/X"
+			invokeObjectEquals();
 			ifeq(nextOne);
 
-		// Compare ImplMethodSignature
-		aload_0();
-		invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName, 
-				ConstantPool.GetImplMethodSignature, ConstantPool.GetImplMethodSignatureSignature);
-		ldc(new String(mb.signature())); // e.g. "(I)I"
-		invokeObjectEquals();
+			// Compare ImplMethodSignature
+			aload_0();
+			invoke(Opcodes.OPC_invokevirtual, 1, 1, ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
+					ConstantPool.GetImplMethodSignature, ConstantPool.GetImplMethodSignatureSignature);
+			ldc(new String(mb.signature())); // e.g. "(I)I"
+			invokeObjectEquals();
 			ifeq(nextOne);
 
-		// Captured arguments
-		StringBuffer sig = new StringBuffer("("); //$NON-NLS-1$
-		index = 0;
+			// Captured arguments
+			StringBuffer sig = new StringBuffer("("); //$NON-NLS-1$
+			index = 0;
 			boolean isLambda = funcEx instanceof LambdaExpression;
 			TypeBinding receiverType = null;
 			SyntheticArgumentBinding[] outerLocalVariables = null;
@@ -2725,47 +2725,47 @@
 				// Should never have outer locals
 			}
 			if (receiverType != null) {
-			aload_0();
-			loadInt(index++);
+				aload_0();
+				loadInt(index++);
 				invoke(Opcodes.OPC_invokevirtual, 1, 1,
 						ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
-					ConstantPool.GetCapturedArg, ConstantPool.GetCapturedArgSignature);
-				checkcast(mb.declaringClass);
-			sig.append(mb.declaringClass.signature());
-		}
+						ConstantPool.GetCapturedArg, ConstantPool.GetCapturedArgSignature);
+				checkcast(receiverType);
+				sig.append(receiverType.signature());
+			}
 			for (int p = 0, max = outerLocalVariables == null ? 0 : outerLocalVariables.length; p < max; p++) {
 				TypeBinding varType = outerLocalVariables[p].type;
-			aload_0();
-			loadInt(index);
+				aload_0();
+				loadInt(index);
 				invoke(Opcodes.OPC_invokevirtual, 1, 1,
 						ConstantPool.JavaLangInvokeSerializedLambdaConstantPoolName,
-					ConstantPool.GetCapturedArg, ConstantPool.GetCapturedArgSignature);
-			if (varType.isBaseType()) {
-				checkcast(scope.boxing(varType));
-				generateUnboxingConversion(varType.id);
-				if (varType.id == TypeIds.T_JavaLangLong || varType.id == TypeIds.T_JavaLangDouble) {
-					index++;
+						ConstantPool.GetCapturedArg, ConstantPool.GetCapturedArgSignature);
+				if (varType.isBaseType()) {
+					checkcast(scope.boxing(varType));
+					generateUnboxingConversion(varType.id);
+					if (varType.id == TypeIds.T_JavaLangLong || varType.id == TypeIds.T_JavaLangDouble) {
+						index++;
+					}
+				} else {
+					checkcast(varType);
 				}
-			} else {
-				checkcast(varType);
+				index++;
+				sig.append(varType.signature());
 			}
-			index++;
-			sig.append(varType.signature());
-		}
-		sig.append(")"); //$NON-NLS-1$
+			sig.append(")"); //$NON-NLS-1$
 			if (funcEx.resolvedType instanceof IntersectionTypeBinding18) {
 				sig.append(((IntersectionTypeBinding18) funcEx.resolvedType).getSAMType(scope).signature());
-		} else {
+			} else {
 				sig.append(funcEx.resolvedType.signature());
-		}
-		// Example: invokeDynamic(0, 0, 1, "m".toCharArray(), "()Lcom/foo/X$Foo;".toCharArray());
+			}
+			// Example: invokeDynamic(0, 0, 1, "m".toCharArray(), "()Lcom/foo/X$Foo;".toCharArray());
 			invokeDynamic(funcEx.bootstrapMethodNumber, index, 1, funcEx.descriptor.selector,
 					sig.toString().toCharArray());
-		areturn();
+			areturn();
 			if (j < count - 1) {
 				nextOne.place();
 				nextOne = j < count - 2 ? new BranchLabel(this) : errorLabel;
-	}
+			}
 		}
 	}
 	
@@ -3071,8 +3071,11 @@
 		}
 	}
 	aload_0();
-	dup();
-	fieldAccess(Opcodes.OPC_putstatic, syntheticFieldBinding, null /* default declaringClass */);
+	if (scope.compilerOptions().complianceLevel < ClassFileConstants.JDK9) {
+		// Modifying a final field outside of the <clinit> method is not allowed in 9
+		dup();
+		fieldAccess(Opcodes.OPC_putstatic, syntheticFieldBinding, null /* default declaringClass */);
+	}
 	areturn();
 	removeVariable(localVariableBinding);
 }
@@ -3106,11 +3109,23 @@
 		} else if (compliance == ClassFileConstants.JDK1_4){
 			denyEnclosingArgInConstructorCall = invocationSite instanceof AllocationExpression
 				|| invocationSite instanceof ExplicitConstructorCall && ((ExplicitConstructorCall)invocationSite).isSuperAccess();
-		} else {
+		} else if (compliance < ClassFileConstants.JDK1_7) {
 			//compliance >= JDK1_5
 			denyEnclosingArgInConstructorCall = (invocationSite instanceof AllocationExpression
 					|| invocationSite instanceof ExplicitConstructorCall && ((ExplicitConstructorCall)invocationSite).isSuperAccess())
 				&& !targetType.isLocalType();
+		} else {
+			//compliance >= JDK1_7
+			if (invocationSite instanceof AllocationExpression) {
+				denyEnclosingArgInConstructorCall = !targetType.isLocalType();
+			} else if (invocationSite instanceof ExplicitConstructorCall && 
+					((ExplicitConstructorCall)invocationSite).isSuperAccess()) {
+				MethodScope enclosingMethodScope = currentScope.enclosingMethodScope();
+				denyEnclosingArgInConstructorCall = !targetType.isLocalType() && enclosingMethodScope != null
+						&& enclosingMethodScope.isConstructorCall; 
+			} else {
+				denyEnclosingArgInConstructorCall = false;
+			}
 		}
 
 		boolean complyTo14 = compliance >= ClassFileConstants.JDK1_4;
@@ -3417,8 +3432,9 @@
 						&& (options.complianceLevel >= ClassFileConstants.JDK1_4 || !(isImplicitThisReceiver && codegenBinding.isStatic()))
 						&& codegenBinding.declaringClass.id != TypeIds.T_JavaLangObject) // no change for Object methods
 					|| !codegenBinding.declaringClass.canBeSeenBy(currentScope)) {
-				if (actualReceiverType.isIntersectionType18()) {
-					TypeBinding[] intersectingTypes = ((IntersectionTypeBinding18)actualReceiverType).getIntersectingTypes();
+				TypeBinding erasure = actualReceiverType.erasure();
+				if (erasure.isIntersectionType18()) {
+					TypeBinding[] intersectingTypes = ((IntersectionTypeBinding18)erasure).getIntersectingTypes();
 					for(int i = 0; i < intersectingTypes.length; i++) {
 						if (intersectingTypes[i].findSuperTypeOriginatingFrom(constantPoolDeclaringClass) != null) {
 							constantPoolDeclaringClass = intersectingTypes[i];
@@ -3426,11 +3442,11 @@
 						}
 					}
 				} else {
-					constantPoolDeclaringClass = actualReceiverType.erasure();
+					constantPoolDeclaringClass = erasure;
+				}
 			}
 		}				
 	}
-	}
 	return constantPoolDeclaringClass;
 }
 protected int getPosition() {
@@ -4131,14 +4147,6 @@
 	this.bCodeStream[this.classFileOffset++] = Opcodes.OPC_imul;
 }
 
-public int indexOfSameLineEntrySincePC(int pc, int line) {
-	for (int index = pc, max = this.pcToSourceMapSize; index < max; index+=2) {
-		if (this.pcToSourceMap[index+1] == line)
-			return index;
-	}
-	return -1;
-}
-
 public void ineg() {
 	this.countLabels = 0;
 	if (this.classFileOffset >= this.bCodeStream.length) {
@@ -6321,7 +6329,7 @@
 	}
 	// lastEntryPC represents the endPC of the lastEntry.
 	if (this.pcToSourceMapSize > 0) {
-		int lineNumber;
+		int lineNumber = -1;
 		int previousLineNumber = this.pcToSourceMap[this.pcToSourceMapSize - 1];
 		if (this.lineNumberStart == this.lineNumberEnd) {
 			// method on one line
@@ -6333,218 +6341,23 @@
 			if (previousLineNumber == 1) {
 				if (sourcePos < lineSeparatorPositions2[0]) {
 					lineNumber = 1;
-					/* the last recorded entry is on the same line. But it could be relevant to widen this entry.
-					   we want to extend this entry forward in case we generated some bytecode before the last entry that are not related to any statement
-					*/
-					if (startPC < this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
-						int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
-						if (insertionIndex != -1) {
-							// widen the existing entry
-							// we have to figure out if we need to move the last entry at another location to keep a sorted table
-							/* First we need to check if at the insertion position there is not an existing entry
-							 * that includes the one we want to insert. This is the case if pcToSourceMap[insertionIndex - 1] == newLine.
-							 * In this case we don't want to change the table. If not, we want to insert a new entry. Prior to insertion
-							 * we want to check if it is worth doing an arraycopy. If not we simply update the recorded pc.
-							 */
-							if (!((insertionIndex > 1) && (this.pcToSourceMap[insertionIndex - 1] == lineNumber))) {
-								if ((this.pcToSourceMapSize > 4) && (this.pcToSourceMap[this.pcToSourceMapSize - 4] > startPC)) {
-									System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - 2 - insertionIndex);
-									this.pcToSourceMap[insertionIndex++] = startPC;
-									this.pcToSourceMap[insertionIndex] = lineNumber;
-								} else {
-									this.pcToSourceMap[this.pcToSourceMapSize - 2] = startPC;
-								}
-							}
-						}
-					}
-					this.lastEntryPC = this.position;
-					return;
 				} else if (length == 1 || sourcePos < lineSeparatorPositions2[1]) {
 					lineNumber = 2;
-					if (startPC <= this.lastEntryPC) {
-						// we forgot to add an entry.
-						// search if an existing entry exists for startPC
-						int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
-						if (insertionIndex != -1) {
-							// there is no existing entry starting with startPC.
-							int existingEntryIndex = indexOfSameLineEntrySincePC(startPC, lineNumber); // index for PC
-							/* the existingEntryIndex corresponds to an entry with the same line and a PC >= startPC.
-								in this case it is relevant to widen this entry instead of creating a new one.
-								line1: this(a,
-								  b,
-								  c);
-								with this code we generate each argument. We generate a aload0 to invoke the constructor. There is no entry for this
-								aload0 bytecode. The first entry is the one for the argument a.
-								But we want the constructor call to start at the aload0 pc and not just at the pc of the first argument.
-								So we widen the existing entry (if there is one) or we create a new entry with the startPC.
-							*/
-							if (existingEntryIndex != -1) {
-								// widen existing entry
-								this.pcToSourceMap[existingEntryIndex] = startPC;
-							} else if (insertionIndex < 1 || this.pcToSourceMap[insertionIndex - 1] != lineNumber) {
-								// we have to add an entry that won't be sorted. So we sort the pcToSourceMap.
-								System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
-								this.pcToSourceMap[insertionIndex++] = startPC;
-								this.pcToSourceMap[insertionIndex] = lineNumber;
-								this.pcToSourceMapSize += 2;
-							}
-						} else if (this.position != this.lastEntryPC) { // no bytecode since last entry pc
-							if (this.lastEntryPC == startPC || this.lastEntryPC == this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
-								this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-							} else {
-								this.pcToSourceMap[this.pcToSourceMapSize++] = this.lastEntryPC;
-								this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-							}
-						} else if (this.pcToSourceMap[this.pcToSourceMapSize - 1] < lineNumber && widen) {
-							// see if we can widen the existing entry
-							this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-						}
-					} else {
-						// we can safely add the new entry. The endPC of the previous entry is not in conflit with the startPC of the new entry.
-						this.pcToSourceMap[this.pcToSourceMapSize++] = startPC;
-						this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-					}
-					this.lastEntryPC = this.position;
-					return;
-				} else {
-					// since lineSeparatorPositions is zero-based, we pass this.lineNumberStart - 1 and this.lineNumberEnd - 1
-					lineNumber = Util.getLineNumber(sourcePos, this.lineSeparatorPositions, this.lineNumberStart - 1, this.lineNumberEnd - 1);
 				}
 			} else if (previousLineNumber < length) {
 				if (lineSeparatorPositions2[previousLineNumber - 2] < sourcePos) {
 					if (sourcePos < lineSeparatorPositions2[previousLineNumber - 1]) {
 						lineNumber = previousLineNumber;
-						/* the last recorded entry is on the same line. But it could be relevant to widen this entry.
-						   we want to extend this entry forward in case we generated some bytecode before the last entry that are not related to any statement
-						*/
-						if (startPC < this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
-							int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
-							if (insertionIndex != -1) {
-								// widen the existing entry
-								// we have to figure out if we need to move the last entry at another location to keep a sorted table
-								/* First we need to check if at the insertion position there is not an existing entry
-								 * that includes the one we want to insert. This is the case if pcToSourceMap[insertionIndex - 1] == newLine.
-								 * In this case we don't want to change the table. If not, we want to insert a new entry. Prior to insertion
-								 * we want to check if it is worth doing an arraycopy. If not we simply update the recorded pc.
-								 */
-								if (!((insertionIndex > 1) && (this.pcToSourceMap[insertionIndex - 1] == lineNumber))) {
-									if ((this.pcToSourceMapSize > 4) && (this.pcToSourceMap[this.pcToSourceMapSize - 4] > startPC)) {
-										System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - 2 - insertionIndex);
-										this.pcToSourceMap[insertionIndex++] = startPC;
-										this.pcToSourceMap[insertionIndex] = lineNumber;
-									} else {
-										this.pcToSourceMap[this.pcToSourceMapSize - 2] = startPC;
-									}
-								}
-							}
-						}
-						this.lastEntryPC = this.position;
-						return;
 					} else if (sourcePos < lineSeparatorPositions2[previousLineNumber]) {
 						lineNumber = previousLineNumber + 1;
-						if (startPC <= this.lastEntryPC) {
-							// we forgot to add an entry.
-							// search if an existing entry exists for startPC
-							int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
-							if (insertionIndex != -1) {
-								// there is no existing entry starting with startPC.
-								int existingEntryIndex = indexOfSameLineEntrySincePC(startPC, lineNumber); // index for PC
-								/* the existingEntryIndex corresponds to an entry with the same line and a PC >= startPC.
-									in this case it is relevant to widen this entry instead of creating a new one.
-									line1: this(a,
-									  b,
-									  c);
-									with this code we generate each argument. We generate a aload0 to invoke the constructor. There is no entry for this
-									aload0 bytecode. The first entry is the one for the argument a.
-									But we want the constructor call to start at the aload0 pc and not just at the pc of the first argument.
-									So we widen the existing entry (if there is one) or we create a new entry with the startPC.
-								*/
-								if (existingEntryIndex != -1) {
-									// widen existing entry
-									this.pcToSourceMap[existingEntryIndex] = startPC;
-								} else if (insertionIndex < 1 || this.pcToSourceMap[insertionIndex - 1] != lineNumber) {
-									// we have to add an entry that won't be sorted. So we sort the pcToSourceMap.
-									System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
-									this.pcToSourceMap[insertionIndex++] = startPC;
-									this.pcToSourceMap[insertionIndex] = lineNumber;
-									this.pcToSourceMapSize += 2;
-								}
-							} else if (this.position != this.lastEntryPC) { // no bytecode since last entry pc
-								if (this.lastEntryPC == startPC || this.lastEntryPC == this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
-									this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-								} else {
-									this.pcToSourceMap[this.pcToSourceMapSize++] = this.lastEntryPC;
-									this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-								}
-							} else if (this.pcToSourceMap[this.pcToSourceMapSize - 1] < lineNumber && widen) {
-								// see if we can widen the existing entry
-								this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-							}
-						} else {
-							// we can safely add the new entry. The endPC of the previous entry is not in conflit with the startPC of the new entry.
-							this.pcToSourceMap[this.pcToSourceMapSize++] = startPC;
-							this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-						}
-						this.lastEntryPC = this.position;
-						return;
-					} else {
-						// since lineSeparatorPositions is zero-based, we pass this.lineNumberStart - 1 and this.lineNumberEnd - 1
-						lineNumber = Util.getLineNumber(sourcePos, this.lineSeparatorPositions, this.lineNumberStart - 1, this.lineNumberEnd - 1);
 					}
-				} else {
-					// since lineSeparatorPositions is zero-based, we pass this.lineNumberStart - 1 and this.lineNumberEnd - 1
-					lineNumber = Util.getLineNumber(sourcePos, this.lineSeparatorPositions, this.lineNumberStart - 1, this.lineNumberEnd - 1);
 				}
 			} else if (lineSeparatorPositions2[length - 1] < sourcePos) {
 				lineNumber = length + 1;
-				if (startPC <= this.lastEntryPC) {
-					// we forgot to add an entry.
-					// search if an existing entry exists for startPC
-					int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
-					if (insertionIndex != -1) {
-						// there is no existing entry starting with startPC.
-						int existingEntryIndex = indexOfSameLineEntrySincePC(startPC, lineNumber); // index for PC
-						/* the existingEntryIndex corresponds to an entry with the same line and a PC >= startPC.
-							in this case it is relevant to widen this entry instead of creating a new one.
-							line1: this(a,
-							  b,
-							  c);
-							with this code we generate each argument. We generate a aload0 to invoke the constructor. There is no entry for this
-							aload0 bytecode. The first entry is the one for the argument a.
-							But we want the constructor call to start at the aload0 pc and not just at the pc of the first argument.
-							So we widen the existing entry (if there is one) or we create a new entry with the startPC.
-						*/
-						if (existingEntryIndex != -1) {
-							// widen existing entry
-							this.pcToSourceMap[existingEntryIndex] = startPC;
-						} else if (insertionIndex < 1 || this.pcToSourceMap[insertionIndex - 1] != lineNumber) {
-							// we have to add an entry that won't be sorted. So we sort the pcToSourceMap.
-							System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
-							this.pcToSourceMap[insertionIndex++] = startPC;
-							this.pcToSourceMap[insertionIndex] = lineNumber;
-							this.pcToSourceMapSize += 2;
-						}
-					} else if (this.position != this.lastEntryPC) { // no bytecode since last entry pc
-						if (this.lastEntryPC == startPC || this.lastEntryPC == this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
-							this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-						} else {
-							this.pcToSourceMap[this.pcToSourceMapSize++] = this.lastEntryPC;
-							this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-						}
-					} else if (this.pcToSourceMap[this.pcToSourceMapSize - 1] < lineNumber && widen) {
-						// see if we can widen the existing entry
-						this.pcToSourceMap[this.pcToSourceMapSize - 1] = lineNumber;
-					}
-				} else {
-					// we can safely add the new entry. The endPC of the previous entry is not in conflit with the startPC of the new entry.
-					this.pcToSourceMap[this.pcToSourceMapSize++] = startPC;
-					this.pcToSourceMap[this.pcToSourceMapSize++] = lineNumber;
-				}
-				this.lastEntryPC = this.position;
-				return;
-			} else {
+			}
+			if(lineNumber == -1) {
 				// since lineSeparatorPositions is zero-based, we pass this.lineNumberStart - 1 and this.lineNumberEnd - 1
-				lineNumber = Util.getLineNumber(sourcePos, this.lineSeparatorPositions, this.lineNumberStart - 1, this.lineNumberEnd - 1);
+				lineNumber = Util.getLineNumber(sourcePos, lineSeparatorPositions2, this.lineNumberStart - 1, this.lineNumberEnd - 1);
 			}
 		}
 		// in this case there is already an entry in the table
@@ -6555,26 +6368,26 @@
 				int insertionIndex = insertionIndex(this.pcToSourceMap, this.pcToSourceMapSize, startPC);
 				if (insertionIndex != -1) {
 					// there is no existing entry starting with startPC.
-					int existingEntryIndex = indexOfSameLineEntrySincePC(startPC, lineNumber); // index for PC
-					/* the existingEntryIndex corresponds to an entry with the same line and a PC >= startPC.
-						in this case it is relevant to widen this entry instead of creating a new one.
-						line1: this(a,
-						  b,
-						  c);
-						with this code we generate each argument. We generate a aload0 to invoke the constructor. There is no entry for this
-						aload0 bytecode. The first entry is the one for the argument a.
-						But we want the constructor call to start at the aload0 pc and not just at the pc of the first argument.
-						So we widen the existing entry (if there is one) or we create a new entry with the startPC.
-					*/
-					if (existingEntryIndex != -1) {
-						// widen existing entry
-						this.pcToSourceMap[existingEntryIndex] = startPC;
-					} else if (insertionIndex < 1 || this.pcToSourceMap[insertionIndex - 1] != lineNumber) {
-						// we have to add an entry that won't be sorted. So we sort the pcToSourceMap.
-						System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
-						this.pcToSourceMap[insertionIndex++] = startPC;
-						this.pcToSourceMap[insertionIndex] = lineNumber;
-						this.pcToSourceMapSize += 2;
+					if (!((insertionIndex > 1) && (this.pcToSourceMap[insertionIndex - 1] == lineNumber))) {
+						if(insertionIndex< this.pcToSourceMapSize && this.pcToSourceMap[insertionIndex + 1] == lineNumber) {
+							/* the entry at insertionIndex corresponds to an entry with the same line and a PC >= startPC.
+							in this case it is relevant to widen this entry instead of creating a new one.
+							line1: this(a,
+							  b,
+							  c);
+							with this code we generate each argument. We generate a aload0 to invoke the constructor. There is no entry for this
+							aload0 bytecode. The first entry is the one for the argument a.
+							But we want the constructor call to start at the aload0 pc and not just at the pc of the first argument.
+							So we widen the existing entry
+							 */
+							this.pcToSourceMap[insertionIndex] = startPC;
+						} else {
+							// we have to add an entry that won't be sorted. So we sort the pcToSourceMap.
+							System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
+							this.pcToSourceMap[insertionIndex++] = startPC;
+							this.pcToSourceMap[insertionIndex] = lineNumber;
+							this.pcToSourceMapSize += 2;
+						}
 					}
 				} else if (this.position != this.lastEntryPC) { // no bytecode since last entry pc
 					if (this.lastEntryPC == startPC || this.lastEntryPC == this.pcToSourceMap[this.pcToSourceMapSize - 2]) {
@@ -6607,12 +6420,13 @@
 					 * we want to check if it is worth doing an arraycopy. If not we simply update the recorded pc.
 					 */
 					if (!((insertionIndex > 1) && (this.pcToSourceMap[insertionIndex - 1] == lineNumber))) {
-						if ((this.pcToSourceMapSize > 4) && (this.pcToSourceMap[this.pcToSourceMapSize - 4] > startPC)) {
-							System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - 2 - insertionIndex);
+						if (this.pcToSourceMap[insertionIndex + 1] != lineNumber) {
+							System.arraycopy(this.pcToSourceMap, insertionIndex, this.pcToSourceMap, insertionIndex + 2, this.pcToSourceMapSize - insertionIndex);
 							this.pcToSourceMap[insertionIndex++] = startPC;
 							this.pcToSourceMap[insertionIndex] = lineNumber;
+							this.pcToSourceMapSize += 2;
 						} else {
-							this.pcToSourceMap[this.pcToSourceMapSize - 2] = startPC;
+							this.pcToSourceMap[insertionIndex] = startPC;
 						}
 					}
 				}
@@ -6634,7 +6448,6 @@
 		this.lastEntryPC = this.position;
 	}
 }
-
 /**
  * @param anExceptionLabel org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ExceptionLabel
  */
@@ -6750,7 +6563,7 @@
 	this.targetLevel = givenClassFile.targetJDK;
 	int produceAttributes = givenClassFile.produceAttributes;
 	this.generateAttributes = produceAttributes;
-	if ((produceAttributes & ClassFileConstants.ATTR_LINES) != 0) {
+	if ((produceAttributes & ClassFileConstants.ATTR_LINES) != 0 && givenClassFile.referenceBinding != null) {
 		this.lineSeparatorPositions = givenClassFile.referenceBinding.scope.referenceCompilationUnit().compilationResult.getLineSeparatorPositions();
 	} else {
 		this.lineSeparatorPositions = null;
@@ -7136,6 +6949,7 @@
 	athrow();
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer("( position:"); //$NON-NLS-1$
 	buffer.append(this.position);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java
index b9c5ab9..6545e41 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ConstantPool.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,6 +26,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfInteger;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 /**
@@ -43,6 +44,7 @@
 	public static final int NAMEANDTYPE_INITIAL_SIZE = 272;
 	public static final int CONSTANTPOOL_INITIAL_SIZE = 2000;
 	public static final int CONSTANTPOOL_GROW_SIZE = 6000;
+	public static final int DYNAMIC_INITIAL_SIZE = 10;
 	protected DoubleCache doubleCache;
 	protected FloatCache floatCache;
 	protected IntegerCache intCache;
@@ -51,7 +53,10 @@
 	protected CharArrayCache stringCache;
 	protected HashtableOfObject methodsAndFieldsCache;
 	protected CharArrayCache classCache;
+	protected CharArrayCache moduleCache;
+	protected CharArrayCache packageCache;
 	protected HashtableOfObject nameAndTypeCacheForFieldsAndMethods;
+	protected HashtableOfInteger dynamicCache;
 	public byte[] poolContent;
 	public int currentIndex = 1;
 	public int currentOffset;
@@ -306,7 +311,10 @@
 		this.stringCache = new CharArrayCache(STRING_INITIAL_SIZE);
 		this.methodsAndFieldsCache = new HashtableOfObject(METHODS_AND_FIELDS_INITIAL_SIZE);
 		this.classCache = new CharArrayCache(CLASS_INITIAL_SIZE);
+		this.moduleCache = new CharArrayCache(5);
+		this.packageCache = new CharArrayCache(5);
 		this.nameAndTypeCacheForFieldsAndMethods = new HashtableOfObject(NAMEANDTYPE_INITIAL_SIZE);
+		this.dynamicCache = new HashtableOfInteger(DYNAMIC_INITIAL_SIZE);
 		this.offsets = new int[5];
 		initialize(classFile);
 	}
@@ -671,6 +679,64 @@
 		}
 		return index;
 	}
+	public int literalIndexForModule(final char[] moduleName) {
+		int index;
+		if ((index = this.moduleCache.putIfAbsent(moduleName, this.currentIndex)) < 0) {
+			// The entry doesn't exit yet
+			this.currentIndex++;
+			if ((index = -index) > 0xFFFF){
+				this.classFile.referenceBinding.scope.problemReporter().noMoreAvailableSpaceInConstantPool(this.classFile.referenceBinding.scope.referenceType());
+			}
+			// Write the tag first
+			int length = this.offsets.length;
+			if (length <= index) {
+				// resize
+				System.arraycopy(this.offsets, 0, (this.offsets = new int[index * 2]), 0, length);
+			}
+			this.offsets[index] = this.currentOffset;
+			writeU1(ModuleTag);
+			// Then the string index
+			int stringIndexOffset = this.currentOffset;
+			if (this.currentOffset + 2 >= this.poolContent.length) {
+				resizePoolContents(2);
+			}
+			this.currentOffset+=2;
+
+			final int stringIndex = literalIndex(moduleName);
+			this.poolContent[stringIndexOffset++] = (byte) (stringIndex >> 8);
+			this.poolContent[stringIndexOffset] = (byte) stringIndex;
+		}
+		return index;
+	}
+	public int literalIndexForPackage(final char[] packageName) {
+		int index;
+		if ((index = this.packageCache.putIfAbsent(packageName, this.currentIndex)) < 0) {
+			// The entry doesn't exit yet
+			this.currentIndex++;
+			if ((index = -index) > 0xFFFF){
+				this.classFile.referenceBinding.scope.problemReporter().noMoreAvailableSpaceInConstantPool(this.classFile.referenceBinding.scope.referenceType());
+			}
+			// Write the tag first
+			int length = this.offsets.length;
+			if (length <= index) {
+				// resize
+				System.arraycopy(this.offsets, 0, (this.offsets = new int[index * 2]), 0, length);
+			}
+			this.offsets[index] = this.currentOffset;
+			writeU1(PackageTag);
+			// Then the string index
+			int stringIndexOffset = this.currentOffset;
+			if (this.currentOffset + 2 >= this.poolContent.length) {
+				resizePoolContents(2);
+			}
+			this.currentOffset+=2;
+
+			final int stringIndex = literalIndex(packageName);
+			this.poolContent[stringIndexOffset++] = (byte) (stringIndex >> 8);
+			this.poolContent[stringIndexOffset] = (byte) stringIndex;
+		}
+		return index;
+	}
 	public int literalIndexForType(final char[] constantPoolName) {
 		int index;
 		if ((index = this.classCache.putIfAbsent(constantPoolName, this.currentIndex)) < 0) {
@@ -827,17 +893,33 @@
 		return index;
 	}
 	public int literalIndexForInvokeDynamic(int bootStrapIndex, char[] selector, char[] descriptor) {
-		int nameAndTypeIndex = literalIndexForNameAndType(selector, descriptor);
-		int index = this.currentIndex++;
-		int length = this.offsets.length;
-		if (length <= index) {
-			// resize
-			System.arraycopy(this.offsets, 0, (this.offsets = new int[index * 2]), 0, length);
+		int index;
+		if ((index = putInDynamicCacheIfAbsent(bootStrapIndex, selector, descriptor, this.currentIndex)) < 0) {
+			this.currentIndex++;
+			if ((index = -index) > 0xFFFF){
+				this.classFile.referenceBinding.scope.problemReporter().noMoreAvailableSpaceInConstantPool(this.classFile.referenceBinding.scope.referenceType());
+			}
+			int length = this.offsets.length;
+			if (length <= index) {
+				// resize
+				System.arraycopy(this.offsets, 0, (this.offsets = new int[index * 2]), 0, length);
+			}
+			this.offsets[index] = this.currentOffset;
+
+			writeU1(InvokeDynamicTag);
+			int classIndexOffset = this.currentOffset;
+			if (this.currentOffset + 4 >= this.poolContent.length) {
+				resizePoolContents(4);
+			}
+			this.currentOffset+=4;
+
+			int nameAndTypeIndex = literalIndexForNameAndType(selector, descriptor);
+
+			this.poolContent[classIndexOffset++] = (byte) (bootStrapIndex >> 8);
+			this.poolContent[classIndexOffset++] = (byte) bootStrapIndex;
+			this.poolContent[classIndexOffset++] = (byte) (nameAndTypeIndex >> 8);
+			this.poolContent[classIndexOffset] = (byte) nameAndTypeIndex;
 		}
-		this.offsets[index] = this.currentOffset;
-		writeU1(InvokeDynamicTag);
-		writeU2(bootStrapIndex);
-		writeU2(nameAndTypeIndex);
 		return index;
 	}
 	public int literalIndexForField(char[] declaringClass, char[] name, char[] signature) {
@@ -1010,6 +1092,47 @@
 		}
 		return index;
 	}
+	
+	/**
+	 * @param bootstrapIndex the given bootstrap index
+	 * @param selector the given method selector
+	 * @param descriptor the given signature
+	 * @param value the new index
+	 * @return the given index
+	 */	private int putInDynamicCacheIfAbsent(int bootstrapIndex, final char[] selector, final char[] descriptor, final int value) {
+		int index;
+		HashtableOfObject key1Value = (HashtableOfObject) this.dynamicCache.get(bootstrapIndex);
+		if (key1Value == null) {
+			key1Value = new HashtableOfObject();
+			this.dynamicCache.put(bootstrapIndex, key1Value);
+			CachedIndexEntry cachedIndexEntry = new CachedIndexEntry(descriptor, value);
+			index = -value;
+			key1Value.put(selector, cachedIndexEntry);
+		} else {
+			Object key2Value = key1Value.get(selector);
+			if (key2Value == null) {
+				CachedIndexEntry cachedIndexEntry = new CachedIndexEntry(descriptor, value);
+				index = -value;
+				key1Value.put(selector, cachedIndexEntry);
+			} else if (key2Value instanceof CachedIndexEntry) {
+				// adding a second entry
+				CachedIndexEntry entry = (CachedIndexEntry) key2Value;
+				if (CharOperation.equals(descriptor, entry.signature)) {
+					index = entry.index;
+				} else {
+					CharArrayCache charArrayCache = new CharArrayCache();
+					charArrayCache.putIfAbsent(entry.signature, entry.index);
+					index = charArrayCache.putIfAbsent(descriptor, value);
+					key1Value.put(selector, charArrayCache);
+				}
+			} else {
+				CharArrayCache charArrayCache = (CharArrayCache) key2Value;
+				index = charArrayCache.putIfAbsent(descriptor, value);
+			}
+		}
+		return index;
+	}
+
 	/**
 	 * @param key1 the given declaring class name
 	 * @param key2 the given field name or method selector
@@ -1112,7 +1235,10 @@
 		this.stringCache.clear();
 		this.methodsAndFieldsCache.clear();
 		this.classCache.clear();
+		this.packageCache.clear();
+		this.moduleCache.clear();
 		this.nameAndTypeCacheForFieldsAndMethods.clear();
+		this.dynamicCache.clear();
 		this.currentIndex = 1;
 		this.currentOffset = 0;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.java
index f1073ca..0fc612f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/DoubleCache.java
@@ -130,6 +130,7 @@
  *
  * @return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = this.elementSize;
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.java
index 0fd1071..502c28e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ExceptionLabel.java
@@ -39,6 +39,7 @@
 public int getCount() {
 	return this.count;
 }
+@Override
 public void place() {
 	// register the handler inside the codeStream then normal place
 	this.codeStream.registerExceptionHandler(this);
@@ -69,6 +70,7 @@
 	}
 	this.ranges[this.count++] = startPosition;
 }
+@Override
 public String toString() {
 	String basic = getClass().getName();
 	basic = basic.substring(basic.lastIndexOf('.')+1);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.java
index 984aeb5..463b6fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/FloatCache.java
@@ -130,6 +130,7 @@
  *
  * @return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = this.elementSize;
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.java
index 2d4ae79..50451e6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/IntegerCache.java
@@ -152,6 +152,7 @@
  *
  * @return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = size();
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.java
index b7cef10..4dec4d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/LongCache.java
@@ -152,6 +152,7 @@
  *
  * @return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = size();
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.java
index 87c1bcb..edeeb48 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/MultiCatchExceptionLabel.java
@@ -34,21 +34,25 @@
 			this.exceptionLabels[i] = new ExceptionLabel(this.codeStream, typeReferences[i].resolvedType, typeReferences[i], i == 0 ? annotations : null);
 		}
 	}
+	@Override
 	public void place() {
 		for (int i = 0, max = this.exceptionLabels.length; i < max; i++) {
 			this.exceptionLabels[i].place();
 		}
 	}
+	@Override
 	public void placeEnd() {
 		for (int i = 0, max = this.exceptionLabels.length; i < max; i++) {
 			this.exceptionLabels[i].placeEnd();
 		}
 	}
+	@Override
 	public void placeStart() {
 		for (int i = 0, max = this.exceptionLabels.length; i < max; i++) {
 			this.exceptionLabels[i].placeStart();
 		}
 	}
+	@Override
 	public int getCount() {
 		int temp = 0;
 		for (int i = 0, max = this.exceptionLabels.length; i < max; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.java
index 54d3206..dfac962 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/ObjectCache.java
@@ -140,6 +140,7 @@
  *
  * @return String the ascii representation of the receiver
  */
+@Override
 public String toString() {
 	int max = size();
 	StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
index 8545ee1..9e4e512 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrame.java
@@ -299,6 +299,7 @@
 	if (prevFrame == null) return this.pc;
 	return prevFrame.pc == -1 ? this.pc : this.pc - prevFrame.pc - 1;
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	printFrame(buffer, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java
index abcb2bf..0478913 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/StackMapFrameCodeStream.java
@@ -40,12 +40,14 @@
 			this.pc = pc;
 			this.constantPoolName = constantPoolName;
 		}
+		@Override
 		public int compareTo(Object o) {
 			if (o instanceof ExceptionMarker) {
 				return this.pc - ((ExceptionMarker) o).pc;
 			}
 			return 0;
 		}
+		@Override
 		public boolean equals(Object obj) {
 			if (obj instanceof ExceptionMarker) {
 				ExceptionMarker marker = (ExceptionMarker) obj;
@@ -53,9 +55,11 @@
 			}
 			return false;
 		}
+		@Override
 		public int hashCode() {
-			return this.pc + this.constantPoolName.hashCode();
+			return this.pc + CharOperation.hashCode(this.constantPoolName);
 		}
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append('(').append(this.pc).append(',').append(this.constantPoolName).append(')');
@@ -79,6 +83,7 @@
 			this.delta = delta;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append('(').append(this.pc).append(',').append(this.delta);
@@ -107,6 +112,7 @@
 			this.infos = infos;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer
@@ -140,6 +146,7 @@
 	super(givenClassFile);
 	this.generateAttributes |= ClassFileConstants.ATTR_STACK_MAP;
 }
+@Override
 public void addDefinitelyAssignedVariables(Scope scope, int initStateIndex) {
 	// Required to fix 1PR0XVS: LFRE:WINNT - Compiler: variable table for method appears incorrect
 	loop: for (int i = 0; i < this.visibleLocalsCount; i++) {
@@ -212,6 +219,7 @@
 		this.framePositions.put(newEntry, new FramePosition());
 	}
 }
+@Override
 public void optimizeBranch(int oldPosition, BranchLabel lbl) {
 	super.optimizeBranch(oldPosition, lbl);
 	removeFramePosition(oldPosition);
@@ -226,6 +234,7 @@
 		}
 	}
 }
+@Override
 public void addVariable(LocalVariableBinding localBinding) {
 	if (localBinding.initializationPCs == null) {
 		record(localBinding);
@@ -263,16 +272,19 @@
 		}
 	}
 }
+@Override
 public void decrStackSize(int offset) {
 	super.decrStackSize(offset);
 	addStackDepthMarker(this.position, -1, null);
 }
+@Override
 public void recordExpressionType(TypeBinding typeBinding) {
 	addStackDepthMarker(this.position, 0, typeBinding);
 }
 /**
  * Macro for building a class descriptor object
  */
+@Override
 public void generateClassLiteralAccessForType(TypeBinding accessedType, FieldBinding syntheticFieldBinding) {
 	if (accessedType.isBaseType() && accessedType != TypeBinding.NULL) {
 		getTYPE(accessedType.id);
@@ -360,6 +372,7 @@
 		this.stackDepth = savedStackDepth;
 	}
 }
+@Override
 public void generateOuterAccess(Object[] mappingSequence, ASTNode invocationSite, Binding target, Scope scope) {
 	int currentPosition = this.position;
 	super.generateOuterAccess(mappingSequence, invocationSite, target, scope);
@@ -422,6 +435,7 @@
 public boolean hasFramePositions() {
 	return this.framePositions.size() != 0;
 }
+@Override
 public void init(ClassFile targetClassFile) {
 	super.init(targetClassFile);
 	this.stateIndexesCounter = 0;
@@ -439,6 +453,7 @@
 	}
 }
 
+@Override
 public void initializeMaxLocals(MethodBinding methodBinding) {
 	super.initializeMaxLocals(methodBinding);
 	if (this.framePositions == null) {
@@ -461,6 +476,7 @@
 	}
 	this.stateIndexes[this.stateIndexesCounter++] = naturalExitMergeInitStateIndex;
 }
+@Override
 public void removeNotDefinitelyAssignedVariables(Scope scope, int initStateIndex) {
 	int index = this.visibleLocalsCount;
 	loop : for (int i = 0; i < index; i++) {
@@ -480,6 +496,7 @@
 		}
 	}
 }
+@Override
 public void reset(ClassFile givenClassFile) {
 	super.reset(givenClassFile);
 	this.stateIndexesCounter = 0;
@@ -496,70 +513,87 @@
 		this.stackMarkers.clear();
 	}
 }
+@Override
 protected void writePosition(BranchLabel label) {
 	super.writePosition(label);
 	addFramePosition(label.position);
 }
+@Override
 protected void writePosition(BranchLabel label, int forwardReference) {
 	super.writePosition(label, forwardReference);
 	addFramePosition(label.position);
 }
+@Override
 protected void writeSignedWord(int pos, int value) {
 	super.writeSignedWord(pos, value);
 	addFramePosition(this.position);
 }
+@Override
 protected void writeWidePosition(BranchLabel label) {
 	super.writeWidePosition(label);
 	addFramePosition(label.position);
 }
+@Override
 public void areturn() {
 	super.areturn();
 	addFramePosition(this.position);
 }
+@Override
 public void ireturn() {
 	super.ireturn();
 	addFramePosition(this.position);
 }
+@Override
 public void lreturn() {
 	super.lreturn();
 	addFramePosition(this.position);
 }
+@Override
 public void freturn() {
 	super.freturn();
 	addFramePosition(this.position);
 }
+@Override
 public void dreturn() {
 	super.dreturn();
 	addFramePosition(this.position);
 }
+@Override
 public void return_() {
 	super.return_();
 	addFramePosition(this.position);
 }
+@Override
 public void athrow() {
 	super.athrow();
 	addFramePosition(this.position);
 }
+@Override
 public void pushOnStack(TypeBinding binding) {
 	super.pushOnStack(binding);
 	addStackDepthMarker(this.position, 1, binding);
 }
+@Override
 public void pushExceptionOnStack(TypeBinding binding) {
 	super.pushExceptionOnStack(binding);
 	addExceptionMarker(this.position, binding);
 }
+@Override
 public void goto_(BranchLabel label) {
 	super.goto_(label);
 	addFramePosition(this.position);
 }
+@Override
 public void goto_w(BranchLabel label) {
 	super.goto_w(label);
 	addFramePosition(this.position);
 }
+@Override
 public void resetInWideMode() {
 	this.resetSecretLocals();
 	super.resetInWideMode();
 }
+@Override
 public void resetForCodeGenUnusedLocals() {
 	this.resetSecretLocals();
 	super.resetForCodeGenUnusedLocals();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.java
index 7e156b4..5ce640c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/TypeAnnotationCodeStream.java
@@ -49,6 +49,7 @@
 		typeReference.getAllAnnotationContexts(targetType, info, typeIndex, this.allTypeAnnotationContexts);
 	}
 	
+	@Override
 	public void instance_of(TypeReference typeReference, TypeBinding typeBinding) {
 		if (typeReference != null && (typeReference.bits & ASTNode.HasTypeAnnotations) != 0) {
 			addAnnotationContext(typeReference, this.position, AnnotationTargetTypeConstants.INSTANCEOF);
@@ -56,6 +57,7 @@
 		super.instance_of(typeReference, typeBinding);
 	}
 	
+	@Override
 	public void multianewarray(
 			TypeReference typeReference,
 			TypeBinding typeBinding,
@@ -67,6 +69,7 @@
 		super.multianewarray(typeReference, typeBinding, dimensions, allocationExpression);
 	}
 
+	@Override
 	public void new_(TypeReference typeReference, TypeBinding typeBinding) {
 		if (typeReference != null && (typeReference.bits & ASTNode.HasTypeAnnotations) != 0) {
 			addAnnotationContext(typeReference, this.position, AnnotationTargetTypeConstants.NEW);
@@ -74,6 +77,7 @@
 		super.new_(typeReference, typeBinding);
 	}
 	
+	@Override
 	public void newArray(TypeReference typeReference, ArrayAllocationExpression allocationExpression, ArrayBinding arrayBinding) {
 		if (typeReference != null && (typeReference.bits & ASTNode.HasTypeAnnotations) != 0) {
 			addAnnotationContext(typeReference, this.position, AnnotationTargetTypeConstants.NEW, allocationExpression);
@@ -81,6 +85,7 @@
 		super.newArray(typeReference, allocationExpression, arrayBinding);
 	}
 	
+	@Override
 	public void checkcast(TypeReference typeReference, TypeBinding typeBinding, int currentPosition) {
 		/* We use a slightly sub-optimal generation for intersection casts by resorting to a runtime cast for every intersecting type, but in
 		   reality this should not matter. In its intended use form such as (I & Serializable) () -> {}, no cast is emitted at all. Also note
@@ -109,6 +114,7 @@
 		}
 	}
 	
+	@Override
 	public void invoke(byte opcode, MethodBinding methodBinding, TypeBinding declaringClass, TypeReference[] typeArguments) {
 		if (typeArguments != null) {
 			int targetType = methodBinding.isConstructor()
@@ -124,6 +130,7 @@
 		super.invoke(opcode, methodBinding, declaringClass, typeArguments);
 	}
 	
+	@Override
 	public void invokeDynamic(int bootStrapIndex, int argsSize, int returnTypeSize, char[] selector, char[] signature, 
 			boolean isConstructorReference, TypeReference lhsTypeReference, TypeReference [] typeArguments) {
 		if (lhsTypeReference != null && (lhsTypeReference.bits & ASTNode.HasTypeAnnotations) != 0) {
@@ -148,11 +155,13 @@
 		super.invokeDynamic(bootStrapIndex, argsSize, returnTypeSize, selector, signature, isConstructorReference, lhsTypeReference, typeArguments);
 	}
 
+	@Override
 	public void reset(ClassFile givenClassFile) {
 		super.reset(givenClassFile);
 		this.allTypeAnnotationContexts = new ArrayList();
 	}
 	
+	@Override
 	public void init(ClassFile targetClassFile) {
 		super.init(targetClassFile);
 		this.allTypeAnnotationContexts = new ArrayList();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.java
index 49b8999..a3fba3b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/codegen/VerificationTypeInfo.java
@@ -139,6 +139,7 @@
 public int id() {
 	return this.id;
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	switch(this.tag) {
@@ -180,6 +181,7 @@
 	verificationTypeInfo.offset = this.offset;
 	return verificationTypeInfo;
 }
+@Override
 public boolean equals(Object obj) {
 	if (obj instanceof VerificationTypeInfo) {
 		VerificationTypeInfo info1 = (VerificationTypeInfo) obj;
@@ -187,6 +189,7 @@
 	}
 	return false;
 }
+@Override
 public int hashCode() {
 	return this.tag + this.id + this.constantPoolName.length + this.offset;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.java
index 3288b56..1f600ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRule.java
@@ -29,10 +29,12 @@
 		this.problemId = keepLooking ? problemId | IgnoreIfBetter : problemId;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.problemId * 17 + CharOperation.hashCode(this.pattern);
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof AccessRule)) return false;
 		AccessRule other = (AccessRule) obj;
@@ -48,6 +50,7 @@
 		return (this.problemId & IgnoreIfBetter) != 0;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("pattern="); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.java
index 5a43937..b9492b2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AccessRuleSet.java
@@ -39,6 +39,7 @@
 /**
  * @see java.lang.Object#equals(java.lang.Object)
  */
+@Override
 public boolean equals(Object object) {
 	if (this == object)
 		return true;
@@ -86,6 +87,7 @@
 	return null;
 }
 
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -106,6 +108,7 @@
 	return result;
 }
 
+@Override
 public String toString() {
 	return toString(true/*wrap lines*/);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.java
new file mode 100644
index 0000000..d1307de
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/AutomaticModuleNaming.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Till Brychcy and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Till Brychcy - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+
+public class AutomaticModuleNaming {
+
+	private static final String AUTOMATIC_MODULE_NAME = "Automatic-Module-Name"; //$NON-NLS-1$
+
+	/**
+	 * Determine the automatic module name of a given jar as specified in {@link <a href=
+	 * "http://download.java.net/java/jdk9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-">
+	 * ModuleFinder.of</a>}
+	 */
+	public static char[] determineAutomaticModuleName(final String jarFileName) {
+		// "If the JAR file has the attribute "Automatic-Module-Name" in its main manifest then its value is the
+		// module name."
+		try (JarFile jar = new JarFile(jarFileName)) {
+			Manifest manifest = jar.getManifest();
+			if (manifest != null) {
+				String automaticModuleName = manifest.getMainAttributes().getValue(AUTOMATIC_MODULE_NAME);
+				if (automaticModuleName != null) {
+					return automaticModuleName.toCharArray();
+				}
+			}
+		} catch (IOException e) {
+			// ignore
+		}
+		// The module name is otherwise derived from the name of the JAR file.
+		return determineAutomaticModuleNameFromFileName(jarFileName, true, true);
+	}
+
+	/**
+	 * Determine the automatic module name of a given jar or project as specified in {@link <a href=
+	 * "http://download.java.net/java/jdk9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-">
+	 * ModuleFinder.of</a>}
+	 * @param fileName names either a jar file or a java project in the workspace
+	 * @param isFile <code>true</code> indicates that fileName denotes a file, <code>false</code> must be used for projects
+	 * @param manifest representation of the META-INF/MANIFEST.MF entry within the given source (jar or project), or <code>null</code>
+	 * @return the derived module name or <code>null</code>
+	 */
+	public static char[] determineAutomaticModuleName(final String fileName, boolean isFile, Manifest manifest) {
+		if (manifest != null) {
+			String automaticModuleName = manifest.getMainAttributes().getValue(AUTOMATIC_MODULE_NAME);
+			if (automaticModuleName != null) {
+				return automaticModuleName.toCharArray();
+			}
+		}
+		return determineAutomaticModuleNameFromFileName(fileName, true, isFile);
+	}
+
+	/**
+	 * Determine the automatic module name of a given jar or project as defined by an Automatic-Module-Name
+	 * header in its manifest.
+	 * @param manifest representation of the META-INF/MANIFEST.MF entry within the given source (jar or project), or <code>null</code>
+	 * @return the derived module name or <code>null</code>
+	 */
+	public static char[] determineAutomaticModuleNameFromManifest(Manifest manifest) {
+		if (manifest != null) {
+			String automaticModuleName = manifest.getMainAttributes().getValue(AUTOMATIC_MODULE_NAME);
+			if (automaticModuleName != null) {
+				return automaticModuleName.toCharArray();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Determine the automatic module name if no "Automatic-Module-Name" was found in the Manifest, as specified in
+	 * {@link <a href=
+	 * "http://download.java.net/java/jdk9/docs/api/java/lang/module/ModuleFinder.html#of-java.nio.file.Path...-">ModuleFinder.of</a>}
+	 * 
+	 * @param name
+	 *            the filename (or directory name)
+	 * @param skipDirectory
+	 *            if true, parent directory names are skipped
+	 * @param removeExtension
+	 *            if true, the ".jar" extension is removed.
+	 */
+	public static char[] determineAutomaticModuleNameFromFileName(String name, boolean skipDirectory,
+			boolean removeExtension) {
+		int index;
+		int start = 0;
+		int end = name.length();
+		if (skipDirectory) {
+			index = name.lastIndexOf(File.separatorChar);
+			start = index + 1;
+		}
+
+		// "The ".jar" suffix is removed"
+		if (removeExtension) {
+			if (name.endsWith(".jar") || name.endsWith(".JAR")) { //$NON-NLS-1$//$NON-NLS-2$
+				end -= 4;
+			}
+		}
+
+		// "If the name matches the regular expression "-(\\d+(\\.|$))" then the module name will be derived from the
+		// subsequence preceding the hyphen of the first occurrence. [...]"
+		dashLoop: for (index = start; index < end - 1; index++) {
+			if (name.charAt(index) == '-' && name.charAt(index + 1) >= '0' && name.charAt(index + 1) <= '9') {
+				for (int index2 = index + 2; index2 < end; index2++) {
+					final char c = name.charAt(index2);
+					if (c == '.') {
+						break;
+					}
+					if (c < '0' || c > '9') {
+						continue dashLoop;
+					}
+				}
+				end = index;
+				break;
+			}
+		}
+
+		// "All non-alphanumeric characters ([^A-Za-z0-9]) in the module name are replaced with a dot ("."), all
+		// repeating dots are replaced with one dot, and all leading and trailing dots are removed."
+		StringBuilder sb = new StringBuilder(end - start);
+		boolean needDot = false;
+		for (int i = start; i < end; i++) {
+			char c = name.charAt(i);
+			if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) {
+				if (needDot) {
+					sb.append('.');
+					needDot = false;
+				}
+				sb.append(c);
+			} else {
+				if (sb.length() > 0) {
+					needDot = true;
+				}
+			}
+		}
+		return sb.toString().toCharArray();
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.java
index 1ba7d3b..5ac0d38 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ClassSignature.java
@@ -34,6 +34,7 @@
 	return this.className;
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append(this.className);
@@ -41,6 +42,7 @@
 	return buffer.toString();
 }
 
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -48,6 +50,7 @@
 	return result;
 }
 
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.java
index 92575c3..3e48664 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/EnumConstantSignature.java
@@ -42,6 +42,7 @@
 	return this.constName;
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append(this.typeName);
@@ -50,6 +51,7 @@
 	return buffer.toString();
 }
 
+@Override
 public int hashCode() {
 	final int prime = 31;
 	int result = 1;
@@ -58,6 +60,7 @@
 	return result;
 }
 
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.java
index 66cc759..b6633ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryAnnotation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 BEA Systems, Inc.
+ * Copyright (c) 2005, 2018 BEA Systems, Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,4 +24,19 @@
  * @return the list of element value pairs of the annotation
  */
 IBinaryElementValuePair[] getElementValuePairs();
+
+/**
+ * @return true, if this an external annotation
+ */
+default boolean isExternalAnnotation() {
+	return false;
 }
+
+/**
+ * @return true, if this is a @Deprecated annotation.
+ */
+default boolean isDeprecatedAnnotation() {
+	return false;
+}
+}
+
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.java
new file mode 100644
index 0000000..c7945e2
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryModule.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+public interface IBinaryModule extends IModule {
+	public IBinaryAnnotation[] getAnnotations();
+
+	public long getTagBits();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.java
index 1530198..2440488 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IBinaryType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -59,6 +59,13 @@
 
 IBinaryField[] getFields();
 /**
+ * Answer the module to which this type belongs.
+ * {@code null} if the type is associated to the unnamed module.
+ *
+ * @return the module name or {@code null}
+ */
+char[] getModule();
+/**
  * Answer the receiver's ClassSignature, which describes the type parameters,
  * super class, and super interfaces as specified in section "4.7.9.1 Signatures"
  * of the Java SE 8 VM spec.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java
index 0815a0f..99a4537 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,8 +10,18 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.env;
 
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+
 /**
  * This interface denotes a compilation unit, providing its name and content.
+ * 
+ * <p>
+ * Note: This internal interface has been implemented illegally by the
+ * org.apache.jasper.glassfish bundle from Orbit, see
+ * <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=500211">bug 500211</a>.
+ * Avoid changing the API or supply default methods to avoid breaking the Eclipse Help system.
+ * </p>
  */
 public interface ICompilationUnit extends IDependent {
 /**
@@ -39,5 +49,26 @@
 * Answer if optional problems should be ignored for this compilation unit.
 * Implementors should return <code>false</code> if there is no preference.
 */
-boolean ignoreOptionalProblems();
+default boolean ignoreOptionalProblems() {
+	return false;
+}
+/**
+ * Returns the binding of the module that this compilation unit is associated with.
+ *
+ * @return the binding representing the module.
+ */
+default ModuleBinding module(LookupEnvironment environment) {
+	return environment.getModule(getModuleName());
+}
+/**
+ * Returns the name of the module to which this compilation unit is associated.
+ * A return value of {@code null} signals the unnamed module.
+ * @return module name or {@code null} for the unnamed module.
+ */
+default char[] getModuleName() {
+	return null;
+}
+default String getDestinationPath() {
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.java
new file mode 100644
index 0000000..738be8a
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModule.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import java.util.jar.Manifest;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+
+public interface IModule {
+
+	public static IModuleReference[] NO_MODULE_REFS = new IModuleReference[0];
+	public static IPackageExport[] NO_EXPORTS = new IPackageExport[0];
+	public static char[][] NO_USES = new char[0][];
+	public static IService[] NO_PROVIDES = new IService[0];
+	public static IModule[] NO_MODULES = new IModule[0];
+	public static IPackageExport[] NO_OPENS = new IPackageExport[0];
+
+	public String MODULE_INFO = "module-info"; //$NON-NLS-1$
+	public String MODULE_INFO_JAVA = "module-info.java"; //$NON-NLS-1$
+	public String MODULE_INFO_CLASS = "module-info.class"; //$NON-NLS-1$
+
+	public char[] name();
+
+	public IModuleReference[] requires();
+
+	public IPackageExport[] exports();
+
+	public char[][] uses();
+
+	public IService[] provides();
+
+	/*
+	 * the opens package statement is very similar to package export statement, hence
+	 * the same internal models are being used here.
+	 */
+	public IPackageExport[] opens();
+
+	public interface IModuleReference {
+		public char[] name();
+		public default boolean isTransitive() {
+			return (getModifiers() & ClassFileConstants.ACC_TRANSITIVE) != 0;
+		}
+		public int getModifiers();
+		public default boolean isStatic() {
+			return (getModifiers() & ClassFileConstants.ACC_STATIC_PHASE) != 0;
+		}
+	}
+
+	public interface IPackageExport {
+		public char[] name();
+		public char[][] targets();
+		public default boolean isQualified() {
+			char[][] targets = targets();
+			return targets != null && targets.length > 0;
+		}
+	}
+
+	public interface IService {
+		public char[] name();
+		char[][] with();
+	}
+	
+	public default boolean isAutomatic() {
+		return false;
+	}
+	public default boolean isAutoNameFromManifest() {
+		return false;
+	}
+	public abstract boolean isOpen();
+
+
+	public static IModule createAutomatic(char[] moduleName, boolean fromManifest) {
+		final class AutoModule implements IModule {
+			char[] name;
+			boolean nameFromManifest;
+			public AutoModule(char[] name, boolean nameFromManifest) {
+				this.name = name;
+				this.nameFromManifest = nameFromManifest;
+			}
+			@Override
+			public char[] name() {
+				return this.name;
+			}
+			
+			@Override
+			public IModuleReference[] requires() {
+				return IModule.NO_MODULE_REFS;
+			}
+			
+			@Override
+			public IPackageExport[] exports() {
+				return IModule.NO_EXPORTS;
+			}
+			
+			@Override
+			public char[][] uses() {
+				return IModule.NO_USES;
+			}
+			
+			@Override
+			public IService[] provides() {
+				return IModule.NO_PROVIDES;
+			}
+			
+			@Override
+			public IPackageExport[] opens() {
+				return NO_OPENS;
+			}
+			
+			@Override
+			public boolean isAutomatic() {
+				return true;
+			}
+			@Override
+			public boolean isAutoNameFromManifest() {
+				return this.nameFromManifest;
+			}
+			@Override
+			public boolean isOpen() {
+				return false;
+			}
+		}
+		return new AutoModule(moduleName, fromManifest);
+	}
+
+	public static IModule createAutomatic(String fileName, boolean isFile, Manifest manifest) {
+		boolean fromManifest = true;
+		char[] inferredName = AutomaticModuleNaming.determineAutomaticModuleNameFromManifest(manifest);
+		if (inferredName == null) {
+			fromManifest = false;
+			inferredName = AutomaticModuleNaming.determineAutomaticModuleNameFromFileName(fileName, true, isFile);
+		}
+		return createAutomatic(inferredName, fromManifest);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java
new file mode 100644
index 0000000..d4a70bb
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import java.util.function.Predicate;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+
+/**
+ * A module aware name environment
+ */
+public interface IModuleAwareNameEnvironment extends INameEnvironment {
+
+	/** Strategies for searching types & packages in classpath locations & modules. */
+	enum LookupStrategy {
+		/** Search a specific named module only. */
+		Named {
+			@Override
+			public <T> boolean matchesWithName(T elem, Predicate<T> isNamed, Predicate<T> nameMatcher) {
+				assert nameMatcher != null : "name match needs a nameMatcher"; //$NON-NLS-1$
+				return isNamed.test(elem) && nameMatcher.test(elem);
+			}
+		},
+		/** Search all named modules. */
+		AnyNamed {
+			@Override
+			public <T> boolean matchesWithName(T elem, Predicate<T> isNamed, Predicate<T> nameMatcher) {
+				return isNamed.test(elem);
+			}
+		},
+		/** Search all locations, module or otherwise. */
+		Any {
+			@Override
+			public <T> boolean matchesWithName(T elem, Predicate<T> isNamed, Predicate<T> nameMatcher) {
+				return true;
+			}
+		},
+		/** Search only the unnamed module. */
+		Unnamed {
+			@Override
+			public <T> boolean matchesWithName(T elem, Predicate<T> isNamed, Predicate<T> nameMatcher) {
+				return !isNamed.test(elem);
+			}
+		};
+		/**
+		 * Test whether the given element matches this lookup strategy.
+		 * @param elem location being tests
+		 * @param isNamed predicate to determine if 'elem' represents a named module
+		 * @param nameMatcher predicate to test if 'elem' matches the expected module name
+		 * @return true iff the given element matches this lookup strategy.
+		 */
+		public abstract <T> boolean matchesWithName(T elem, Predicate<T> isNamed, Predicate<T> nameMatcher);
+		/**
+		 * Test whether the given element matches this lookup strategy.
+		 * @param elem location being tests
+		 * @param isNamed predicate to determine if 'elem' represents a named module
+		 * @return true iff the given element matches this lookup strategy.
+		 */
+		public <T> boolean matches(T elem, Predicate<T> isNamed) {
+			return matchesWithName(elem, isNamed, t -> true);
+		}
+		
+		/** Get the lookup strategy corresponding to the given module name. */
+		public static LookupStrategy get(char[] moduleName) {
+			if (moduleName == ModuleBinding.ANY)
+				return Any;
+			if (moduleName == ModuleBinding.ANY_NAMED)
+				return AnyNamed;
+			if (moduleName == ModuleBinding.UNNAMED)
+				return Unnamed;
+			return Named;
+		}
+		/** If 'moduleName' is none of the special names (ANY, ANY_NAMED, UNNAMED) return the string converted name, else {@code null}. */
+		public static String getStringName(char[] moduleName) {
+			switch (get(moduleName)) {
+				case Named : return String.valueOf(moduleName);
+				default: return null;
+			}
+		}
+	}
+	
+	@Override
+	default NameEnvironmentAnswer findType(char[][] compoundTypeName) {
+		return findType(compoundTypeName, ModuleBinding.ANY);
+	}
+	@Override
+	default NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
+		return findType(typeName, packageName, ModuleBinding.ANY);
+	}
+	@Override
+	default boolean isPackage(char[][] parentPackageName, char[] packageName) {
+		return getModulesDeclaringPackage(parentPackageName, packageName, ModuleBinding.ANY) != null;
+	}
+
+	NameEnvironmentAnswer findType(char[][] compoundName, char[] moduleName);
+	/** Answer a type identified by the given names. moduleName may be one of the special names from ModuleBinding (ANY, ANY_NAMED, UNNAMED). */
+	NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName);
+	char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] name, char[] moduleName);
+	
+	/**
+	 * Answer whether the given package (within the given module) contains any compilation unit.
+	 * @param qualifiedPackageName
+	 * @param checkCUs - if true, check contained Compilation Units for a matching package declaration
+	 * @return true iff the package contains at least one compilation unit.
+	 */
+	boolean hasCompilationUnit(char[][] qualifiedPackageName, char[] moduleName, boolean checkCUs);
+	
+	/** Get the module with the given name, which must denote a named module. */
+	IModule getModule(char[] moduleName);
+	char[][] getAllAutomaticModules();
+
+	/**
+	 * Ask the name environment to perform any updates (add-exports or add-reads) to the given module.
+	 * @param module the compiler representation of the module to updates
+	 * @param kind selects what kind of updates should be performed
+	 */
+	default void applyModuleUpdates(IUpdatableModule module, IUpdatableModule.UpdateKind kind) { /* default: do nothing */ }
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.java
new file mode 100644
index 0000000..a82539e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IModulePathEntry.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
+/**
+ * Represents an entry on the module path of a project. Could be a single module or a collection of
+ * modules (like a jimage or an exploded module directory structure)
+ *
+ */
+public interface IModulePathEntry {
+
+	/**
+	 * Get the module that this entry contributes. May be null, for instance when this entry does not
+	 * represent a single module
+	 * 
+	 * @return The module that this entry contributes or null
+	 */
+	default IModule getModule() {
+		return null;
+	}
+	
+	/**
+	 * Get the module named name from this entry. May be null
+	 * 
+	 * @param name - The name of the module to look up
+	 * 
+	 * @return The module named name or null
+	 */
+	default IModule getModule(char[] name) {
+		IModule mod = getModule();
+		if (mod != null && CharOperation.equals(name, mod.name()))
+			return mod;
+		return null;
+	}
+
+	/**
+	 * Indicates whether this entry knows the module named name and can answer queries regarding the module
+	 * 
+	 * @param name The name of the module
+	 * 
+	 * @return True if this entry knows the module, false otherwise
+	 */
+	default boolean servesModule(char[] name) {
+		return getModule(name) != null;
+	}
+
+	/**
+	 * Answer the relevant modules that declare the given package.
+	 * If moduleName is ModuleBinding.ANY then all packages are relevant,
+	 * if moduleName is ModuleBinding.UNNAMED, then only packages in the unnamed module are relevant,
+	 * otherwise consider only packages in the module identified by moduleName.
+	 */
+	char[][] getModulesDeclaringPackage(String qualifiedPackageName, /*@Nullable*/String moduleName);
+
+	/**
+	 * Answer whether the given package has any compilation unit (.java or .class) in the given module.
+	 * For entries representing a single module, the module name should be checked before invoking this method.
+	 * @param qualifiedPackageName '/'-separated package name
+	 * @param moduleName if non-null only CUs attached to the given module should be considered
+	 * @return true iff a .java or .class file could be found in the given module / package.
+	 */
+	boolean hasCompilationUnit(String qualifiedPackageName, String moduleName);
+
+	/**
+	 * Specifies whether this entry represents an automatic module.
+	 * 
+	 * @return true if this is an automatic module, false otherwise
+	 */
+	public default boolean isAutomaticModule() {
+		return false;
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.java
new file mode 100644
index 0000000..0f8b22e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IMultiModuleEntry.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import java.util.Collection;
+
+/**
+ * Represents a module path entry that represents a collection of modules
+ * like a jimage or an exploded module directory structure
+ *
+ */
+public interface IMultiModuleEntry extends IModulePathEntry {
+
+	/**
+	 * Get the module named name that this entry contributes to the module path 
+	 */
+
+	@Override
+	IModule getModule(char[] name);
+
+	/**
+	 * Get the names of all modules served by this entry.
+	 * @param limitModules if non-null, only modules with names in this set and their
+	 * 	transitive closure will be reported.
+	 */
+	Collection<String> getModuleNames(Collection<String> limitModules);
+
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.java
index 32c04f7..b619399 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,57 +15,71 @@
  * can use to look up types, compilation units, and packages in the
  * current environment. The name environment is passed to the compiler
  * on creation.
+ * <p>
+ * In JLS diction a name environment implements a "host system", with
+ * these responsibilities:
+ * <ul>
+ * <li>Determine which packages and compilation units are "observable" (JLS 7.3 & 7.4.3)</li>
+ * <li>Determine to which module a given compilation unit / package is associated (JLS 7.3)</li>
+ * </ul>
+ * </p>
+ * <p>
+ * Note: This internal interface has been implemented illegally by the
+ * org.apache.jasper.glassfish bundle from Orbit, see
+ * <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=500211">bug 500211</a>.
+ * Avoid changing the API or supply default methods to avoid breaking the Eclipse Help system.
+ * </p>
  */
 public interface INameEnvironment {
-/**
- * Find a type with the given compound name.
- * Answer the binary form of the type if it is known to be consistent.
- * Otherwise, answer the compilation unit which defines the type
- * or null if the type does not exist.
- * Types in the default package are specified as {{typeName}}.
- *
- * It is unknown whether the package containing the type actually exists.
- *
- * NOTE: This method can be used to find a member type using its
- * internal name A$B, but the source file for A is answered if the binary
- * file is inconsistent.
- */
+	/**
+	 * Find a type with the given compound name.
+	 * Answer the binary form of the type if it is known to be consistent.
+	 * Otherwise, answer the compilation unit which defines the type
+	 * or null if the type does not exist.
+	 * Types in the default package are specified as {{typeName}}.
+	 *
+	 * It is unknown whether the package containing the type actually exists.
+	 *
+	 * NOTE: This method can be used to find a member type using its
+	 * internal name A$B, but the source file for A is answered if the binary
+	 * file is inconsistent.
+	 */
 
-NameEnvironmentAnswer findType(char[][] compoundTypeName);
-/**
- * Find a type named <typeName> in the package <packageName>.
- * Answer the binary form of the type if it is known to be consistent.
- * Otherwise, answer the compilation unit which defines the type
- * or null if the type does not exist.
- * The default package is indicated by char[0][].
- *
- * It is known that the package containing the type exists.
- *
- * NOTE: This method can be used to find a member type using its
- * internal name A$B, but the source file for A is answered if the binary
- * file is inconsistent.
- */
+	NameEnvironmentAnswer findType(char[][] compoundTypeName);
+	/**
+	 * Find a type named <typeName> in the package <packageName>.
+	 * Answer the binary form of the type if it is known to be consistent.
+	 * Otherwise, answer the compilation unit which defines the type
+	 * or null if the type does not exist.
+	 * The default package is indicated by char[0][].
+	 *
+	 * It is known that the package containing the type exists.
+	 *
+	 * NOTE: This method can be used to find a member type using its
+	 * internal name A$B, but the source file for A is answered if the binary
+	 * file is inconsistent.
+	 */
 
-NameEnvironmentAnswer findType(char[] typeName, char[][] packageName);
-/**
- * Answer whether packageName is the name of a known subpackage inside
- * the package parentPackageName. A top level package is found relative to null.
- * The default package is always assumed to exist.
- *
- * For example:
- *      isPackage({{java}, {awt}}, {event});
- *      isPackage(null, {java});
- */
+	NameEnvironmentAnswer findType(char[] typeName, char[][] packageName);
+	/**
+	 * Answer whether packageName is the name of a known subpackage inside
+	 * the package parentPackageName. A top level package is found relative to null.
+	 * The default package is always assumed to exist.
+	 *
+	 * For example:
+	 *      isPackage({{java}, {awt}}, {event});
+	 *      isPackage(null, {java});
+	 */
 
-boolean isPackage(char[][] parentPackageName, char[] packageName);
+	boolean isPackage(char[][] parentPackageName, char[] packageName);
 
-/**
- * This method cleans the environment. It is responsible for releasing the memory
- * and freeing resources. Passed that point, the name environment is no longer usable.
- *
- * A name environment can have a long life cycle, therefore it is the responsibility of
- * the code which created it to decide when it is a good time to clean it up.
- */
-void cleanup();
+	/**
+	 * This method cleans the environment. It is responsible for releasing the memory
+	 * and freeing resources. Passed that point, the name environment is no longer usable.
+	 *
+	 * A name environment can have a long life cycle, therefore it is the responsibility of
+	 * the code which created it to decide when it is a good time to clean it up.
+	 */
+	void cleanup();
 
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.java
index ec61b38..48a6688 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/INameEnvironmentExtension.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2016 IBM Corporation and others.
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -41,8 +41,13 @@
 	 * @param typeName type to find
 	 * @param packageName package of the searched type
 	 * @param searchWithSecondaryTypes flag to switch on/off the search for secondary types
+	 * @param moduleName the name of the module to search in, or one of ModuleBinding.ANY, ModuleBinding.UNNAMED
 	 * @return {@link NameEnvironmentAnswer}
 	 */
-	NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes);
+	NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes, char[] moduleName);
+	
+	default NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes) {
+		return findType(typeName, packageName, searchWithSecondaryTypes, null);
+	}
 
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.java
new file mode 100644
index 0000000..ab77e54
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ISourceModule.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+public interface ISourceModule extends IModule {
+	ICompilationUnit getCompilationUnit();
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.java
index edc42fd..9ed0e0e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ITypeAnnotationWalker.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015 GK Software AG.
+ * Copyright (c) 2015, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,20 +27,34 @@
 	 * At the end of any walk an empty array of annotations is returned.
 	 */
 	public static final ITypeAnnotationWalker EMPTY_ANNOTATION_WALKER = new ITypeAnnotationWalker() {
+		@Override
 		public ITypeAnnotationWalker toField() { return this; }
+		@Override
 		public ITypeAnnotationWalker toThrows(int rank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeArgument(int rank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toMethodParameter(short index) { return this; }
+		@Override
 		public ITypeAnnotationWalker toSupertype(short index, char[] superTypeSignature) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeParameterBounds(boolean isClassTypeParameter, int parameterRank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeBound(short boundIndex) { return this; }
+		@Override
 		public ITypeAnnotationWalker toTypeParameter(boolean isClassTypeParameter, int rank) { return this; }
+		@Override
 		public ITypeAnnotationWalker toMethodReturn() { return this; }
+		@Override
 		public ITypeAnnotationWalker toReceiver() { return this; }
+		@Override
 		public ITypeAnnotationWalker toWildcardBound() { return this; }
+		@Override
 		public ITypeAnnotationWalker toNextArrayDimension() { return this; }
+		@Override
 		public ITypeAnnotationWalker toNextNestedType() { return this; }
-		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId) { return NO_ANNOTATIONS; }
+		@Override
+		public IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness) { return NO_ANNOTATIONS; }
 	};
 
 	/** Walk to a field. */
@@ -114,6 +128,6 @@
 	 * @param currentTypeId the id of the type being annotated; 0 signals don't care / unknown;
 	 * 		 -1 signals if annotating a wildcard or a use of a type variable.
 	 */
-	public abstract IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId);
+	public abstract IBinaryAnnotation[] getAnnotationsAtCursor(int currentTypeId, boolean mayApplyArrayContentsDefaultNullness);
 
 }
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.java
new file mode 100644
index 0000000..08ba650
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/IUpdatableModule.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Consumer;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSetOfCharArray;
+
+/**
+ * Interface to a module as needed to implement the updates for {@code --add-reads}
+ * and {@code --add-exports} command line options (or corresponding classpath attributes).
+ */
+public interface IUpdatableModule {
+
+	/**
+	 * The compiler first wires modules only, before then wiring packages based on the module graph.
+	 * This enum selects one of these phases when asking the environment to perform its updates.
+	 */
+	enum UpdateKind { MODULE, PACKAGE }
+
+	class AddExports implements Consumer<IUpdatableModule> {
+
+		char[] name;
+		char[][] targets;
+		public AddExports(char[] pkgName, char[][] targets) {
+			this.name = pkgName;
+			this.targets = targets;
+		}
+		@Override
+		public void accept(IUpdatableModule t) {
+			// TODO Auto-generated method stub
+			t.addExports(this.name, this.targets);
+		}
+		
+		public char[] getName() {
+			return this.name;
+		}
+		
+		public char[][] getTargetModules() {
+			return this.targets;
+		}
+		
+		public UpdateKind getKind() {
+			return UpdateKind.PACKAGE;
+		}
+		@Override
+		public boolean equals(Object other) {
+			if (this == other) return true;
+			if (!(other instanceof AddExports)) return false;
+			AddExports pu = (AddExports) other;
+			
+			if (!CharOperation.equals(this.name, pu.name))
+				return false;
+			if (!CharOperation.equals(this.targets, pu.targets))
+				return false;
+			return true;
+		}
+		@Override
+		public int hashCode() {
+			int hash = CharOperation.hashCode(this.name);
+			if (this.targets != null) {
+				for (int i = 0; i < this.targets.length; i++) {
+					hash += 17 * CharOperation.hashCode(this.targets[i]);
+				}
+			}
+			return hash;
+		}
+	}
+	
+	class AddReads implements Consumer<IUpdatableModule> {
+
+		char[] targetModule;
+		
+		public AddReads(char[] target) {
+			this.targetModule = target;
+		}
+		@Override
+		public void accept(IUpdatableModule t) {
+			// TODO Auto-generated method stub
+			t.addReads(this.targetModule);
+		}
+		
+		public char[] getTarget() {
+			return this.targetModule;
+		}
+		
+		public UpdateKind getKind() {
+			return UpdateKind.MODULE;
+		}
+
+		@Override
+		public boolean equals(Object other) {
+			if (this == other) return true;
+			if (!(other instanceof AddReads)) return false;
+			AddReads mu = (AddReads) other;
+			return CharOperation.equals(this.targetModule, mu.targetModule);
+		}
+		@Override
+		public int hashCode() {
+			return CharOperation.hashCode(this.targetModule);
+		}
+	}
+	/** Structure for update operations, sorted by {@link UpdateKind}. */
+	class UpdatesByKind {
+		List<Consumer<IUpdatableModule>> moduleUpdates = Collections.emptyList();
+		List<Consumer<IUpdatableModule>> packageUpdates = Collections.emptyList();
+		public List<Consumer<IUpdatableModule>> getList(UpdateKind kind, boolean create) {
+			switch (kind) {
+				case MODULE:
+					if (this.moduleUpdates == Collections.EMPTY_LIST && create)
+						this.moduleUpdates = new ArrayList<>();
+					return this.moduleUpdates;
+				case PACKAGE:
+					if (this.packageUpdates == Collections.EMPTY_LIST && create)
+						this.packageUpdates = new ArrayList<>();
+					return this.packageUpdates;
+				default:
+					throw new IllegalArgumentException("Unknown enum value "+kind); //$NON-NLS-1$
+			}
+		}
+	}
+
+	/** Answer the name of the module to update. */
+	char[] name();
+	/** Perform an --add-reads update on the module. */
+	void addReads(char[] moduleName);
+	/** Perform an --add-exports update on the module. */
+	void addExports(char[] packageName, char[][] targetModules);
+	/** Define the ModuleMainClass to be recorded in the generated module-info.class. */
+	void setMainClassName(char[] mainClassName);
+	/** Passes names of packages to be recorded in the ModulePackages classfile attribute. */
+	void setPackageNames(SimpleSetOfCharArray packageNames);
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.java
new file mode 100644
index 0000000..158e0ee
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/ModuleReferenceImpl.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
+public class ModuleReferenceImpl implements IModule.IModuleReference {
+	public char[] name;
+	public int modifiers;
+	@Override
+	public char[] name() {
+		return this.name;
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) 
+			return true;
+		if (!(o instanceof IModule.IModuleReference))
+			return false;
+		IModule.IModuleReference mod = (IModule.IModuleReference) o;
+		if (this.modifiers != mod.getModifiers())
+			return false;
+		return CharOperation.equals(this.name, mod.name());
+	}
+	@Override
+	public int hashCode() {
+		return CharOperation.hashCode(this.name);
+	}
+	@Override
+	public int getModifiers() {
+		return this.modifiers;
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.java
index 5d190f9..108893a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,31 +10,56 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.env;
 
+import java.util.Arrays;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+
 public class NameEnvironmentAnswer {
 
-	// only one of the three can be set
+	// only one of the four can be set
 	IBinaryType binaryType;
 	ICompilationUnit compilationUnit;
 	ISourceType[] sourceTypes;
+	ReferenceBinding binding;
+
 	AccessRestriction accessRestriction;
+	char[] moduleName; // set by name environment
+	public ModuleBinding moduleBinding; // updated by LookupEnvironment
 	String externalAnnotationPath; // should be an absolute file system path
 
 	public NameEnvironmentAnswer(IBinaryType binaryType, AccessRestriction accessRestriction) {
 		this.binaryType = binaryType;
 		this.accessRestriction = accessRestriction;
+		this.moduleName = binaryType.getModule();
 	}
 
+	public NameEnvironmentAnswer(IBinaryType binaryType, AccessRestriction accessRestriction, char[] module) {
+		this.binaryType = binaryType;
+		this.accessRestriction = accessRestriction;
+		this.moduleName = module;
+	}
 	public NameEnvironmentAnswer(ICompilationUnit compilationUnit, AccessRestriction accessRestriction) {
+		this(compilationUnit, accessRestriction, compilationUnit.getModuleName());
+	}
+	public NameEnvironmentAnswer(ICompilationUnit compilationUnit, AccessRestriction accessRestriction, char[] module) {
 		this.compilationUnit = compilationUnit;
 		this.accessRestriction = accessRestriction;
+		this.moduleName = module;
 	}
 
-	public NameEnvironmentAnswer(ISourceType[] sourceTypes, AccessRestriction accessRestriction, String externalAnnotationPath) {
+	public NameEnvironmentAnswer(ISourceType[] sourceTypes, AccessRestriction accessRestriction, String externalAnnotationPath, char[] module) {
 		this.sourceTypes = sourceTypes;
 		this.accessRestriction = accessRestriction;
 		this.externalAnnotationPath = externalAnnotationPath;
+		this.moduleName = module;
 	}
 	
+	public NameEnvironmentAnswer(ReferenceBinding binding, ModuleBinding module) {
+		this.binding = binding;
+		this.moduleBinding = module;
+	}
+
 	@Override
 	public String toString() {
 		String baseString = ""; //$NON-NLS-1$
@@ -47,7 +72,7 @@
 			baseString = "ICompilationUnit " + this.compilationUnit.toString(); //$NON-NLS-1$
 		}
 		if (this.sourceTypes != null) {
-			baseString = this.sourceTypes.toString();
+			baseString = Arrays.toString(this.sourceTypes);
 		}
 		if (this.accessRestriction != null) {
 			baseString += " " + this.accessRestriction.toString(); //$NON-NLS-1$
@@ -55,6 +80,9 @@
 		if (this.externalAnnotationPath != null) {
 			baseString += " extPath=" + this.externalAnnotationPath.toString(); //$NON-NLS-1$
 		}
+		if (this.moduleName != null) {
+			baseString += " module=" + String.valueOf(this.moduleName); //$NON-NLS-1$
+		}
 		return baseString;
 	}
 	
@@ -101,6 +129,13 @@
 	}
 
 	/**
+	 * Answer the resolved compiler binding that was late found during askForName().
+	 */
+	public ReferenceBinding getResolvedBinding() {
+		return this.binding;
+	}
+
+	/**
 	 * Answer whether the receiver contains the resolved binary form of the type.
 	 */
 	public boolean isBinaryType() {
@@ -121,9 +156,25 @@
 		return this.sourceTypes != null;
 	}
 
+	/**
+	 * Answer whether the receiver contains the resolved compiler binding of the type.
+	 */
+	public boolean isResolvedBinding() {
+		return this.binding != null;
+	}
+
 	public boolean ignoreIfBetter() {
 		return this.accessRestriction != null && this.accessRestriction.ignoreIfBetter();
 	}
+	
+	/** 
+	 * Name of the module to which the CU in this answer is associated.
+	 * {@code null} when associated to the unnamed module. 
+	 * @return module name or {@code null}
+	 */
+	public char[] moduleName() {
+		return this.moduleName;
+	}
 
 	/*
 	 * Returns whether this answer is better than the other awswer.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.java
new file mode 100644
index 0000000..a0f4d84
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/env/PackageExportImpl.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.env;
+
+public class PackageExportImpl implements IModule.IPackageExport {
+	public char[] pack;
+	public char[][] exportedTo;
+	@Override
+	public char[] name() {
+		return this.pack;
+	}
+
+	@Override
+	public char[][] targets() {
+		return this.exportedTo;
+	}
+	@Override
+	public String toString() {
+		StringBuffer buffer = new StringBuffer();
+		buffer.append(this.pack);
+		buffer.append(" to "); //$NON-NLS-1$
+		if (this.exportedTo != null) {
+			for (int i = 0; i < this.exportedTo.length; i++) {
+				if (i > 0) {
+					buffer.append(", "); //$NON-NLS-1$
+				}
+				char[] cs = this.exportedTo[i];
+				buffer.append(cs);
+			}
+		}
+		buffer.append(';');
+		return buffer.toString();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.java
index b70cff9..19be066 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ConditionalFlowInfo.java
@@ -33,6 +33,7 @@
 	this.tagBits = initsWhenTrue.tagBits & initsWhenFalse.tagBits & UNREACHABLE;
 }
 
+@Override
 public FlowInfo addInitializationsFrom(FlowInfo otherInits) {
 
 	this.initsWhenTrue.addInitializationsFrom(otherInits);
@@ -40,6 +41,7 @@
 	return this;
 }
 
+@Override
 public FlowInfo addNullInfoFrom(FlowInfo otherInits) {
 
 	this.initsWhenTrue.addNullInfoFrom(otherInits);
@@ -47,6 +49,7 @@
 	return this;
 }
 
+@Override
 public FlowInfo addPotentialInitializationsFrom(FlowInfo otherInits) {
 
 	this.initsWhenTrue.addPotentialInitializationsFrom(otherInits);
@@ -54,6 +57,7 @@
 	return this;
 }
 
+@Override
 public FlowInfo asNegatedCondition() {
 
 	FlowInfo extra = this.initsWhenTrue;
@@ -62,143 +66,171 @@
 	return this;
 }
 
+@Override
 public FlowInfo copy() {
 
 	return new ConditionalFlowInfo(this.initsWhenTrue.copy(), this.initsWhenFalse.copy());
 }
 
+@Override
 public FlowInfo initsWhenFalse() {
 
 	return this.initsWhenFalse;
 }
 
+@Override
 public FlowInfo initsWhenTrue() {
 
 	return this.initsWhenTrue;
 }
 
+@Override
 public boolean isDefinitelyAssigned(FieldBinding field) {
 
 	return this.initsWhenTrue.isDefinitelyAssigned(field)
 			&& this.initsWhenFalse.isDefinitelyAssigned(field);
 }
 
+@Override
 public boolean isDefinitelyAssigned(LocalVariableBinding local) {
 
 	return this.initsWhenTrue.isDefinitelyAssigned(local)
 			&& this.initsWhenFalse.isDefinitelyAssigned(local);
 }
 
+@Override
 public boolean isDefinitelyNonNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isDefinitelyNonNull(local)
 			&& this.initsWhenFalse.isDefinitelyNonNull(local);
 }
 
+@Override
 public boolean isDefinitelyNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isDefinitelyNull(local)
 			&& this.initsWhenFalse.isDefinitelyNull(local);
 }
 
+@Override
 public boolean isDefinitelyUnknown(LocalVariableBinding local) {
 	return this.initsWhenTrue.isDefinitelyUnknown(local)
 			&& this.initsWhenFalse.isDefinitelyUnknown(local);
 }
 
+@Override
 public boolean hasNullInfoFor(LocalVariableBinding local) {
 	return this.initsWhenTrue.hasNullInfoFor(local) 
 			|| this.initsWhenFalse.hasNullInfoFor(local);
 }
 
+@Override
 public boolean isPotentiallyAssigned(FieldBinding field) {
 	return this.initsWhenTrue.isPotentiallyAssigned(field)
 			|| this.initsWhenFalse.isPotentiallyAssigned(field);
 }
 
+@Override
 public boolean isPotentiallyAssigned(LocalVariableBinding local) {
 	return this.initsWhenTrue.isPotentiallyAssigned(local)
 			|| this.initsWhenFalse.isPotentiallyAssigned(local);
 }
 
+@Override
 public boolean isPotentiallyNonNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isPotentiallyNonNull(local)
 		|| this.initsWhenFalse.isPotentiallyNonNull(local);
 }
 
+@Override
 public boolean isPotentiallyNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isPotentiallyNull(local)
 		|| this.initsWhenFalse.isPotentiallyNull(local);
 }
 
+@Override
 public boolean isPotentiallyUnknown(LocalVariableBinding local) {
 	return this.initsWhenTrue.isPotentiallyUnknown(local)
 		|| this.initsWhenFalse.isPotentiallyUnknown(local);
 }
 
+@Override
 public boolean isProtectedNonNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isProtectedNonNull(local)
 		&& this.initsWhenFalse.isProtectedNonNull(local);
 }
 
+@Override
 public boolean isProtectedNull(LocalVariableBinding local) {
 	return this.initsWhenTrue.isProtectedNull(local)
 		&& this.initsWhenFalse.isProtectedNull(local);
 }
 
+@Override
 public void markAsComparedEqualToNonNull(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsComparedEqualToNonNull(local);
 	this.initsWhenFalse.markAsComparedEqualToNonNull(local);
 }
 
+@Override
 public void markAsComparedEqualToNull(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsComparedEqualToNull(local);
     this.initsWhenFalse.markAsComparedEqualToNull(local);
 }
 
+@Override
 public void markAsDefinitelyAssigned(FieldBinding field) {
 	this.initsWhenTrue.markAsDefinitelyAssigned(field);
 	this.initsWhenFalse.markAsDefinitelyAssigned(field);
 }
 
+@Override
 public void markAsDefinitelyAssigned(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsDefinitelyAssigned(local);
 	this.initsWhenFalse.markAsDefinitelyAssigned(local);
 }
 
+@Override
 public void markAsDefinitelyNonNull(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsDefinitelyNonNull(local);
 	this.initsWhenFalse.markAsDefinitelyNonNull(local);
 }
 
+@Override
 public void markAsDefinitelyNull(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsDefinitelyNull(local);
 	this.initsWhenFalse.markAsDefinitelyNull(local);
 }
 
+@Override
 public void resetNullInfo(LocalVariableBinding local) {
 	this.initsWhenTrue.resetNullInfo(local);
 	this.initsWhenFalse.resetNullInfo(local);
 }
 
+@Override
 public void markPotentiallyNullBit(LocalVariableBinding local) {
 	this.initsWhenTrue.markPotentiallyNullBit(local);
 	this.initsWhenFalse.markPotentiallyNullBit(local);
 }
 
+@Override
 public void markPotentiallyNonNullBit(LocalVariableBinding local) {
 	this.initsWhenTrue.markPotentiallyNonNullBit(local);
 	this.initsWhenFalse.markPotentiallyNonNullBit(local);
 }
 
+@Override
 public void markAsDefinitelyUnknown(LocalVariableBinding local) {
 	this.initsWhenTrue.markAsDefinitelyUnknown(local);
 	this.initsWhenFalse.markAsDefinitelyUnknown(local);
 }
 
+@Override
 public void markPotentiallyUnknownBit(LocalVariableBinding local) {
 	this.initsWhenTrue.markPotentiallyUnknownBit(local);
 	this.initsWhenFalse.markPotentiallyUnknownBit(local);
 }
 
+@Override
 public FlowInfo setReachMode(int reachMode) {
 	if (reachMode == REACHABLE) {
 		this.tagBits &= ~UNREACHABLE;
@@ -211,42 +243,51 @@
 	return this;
 }
 
+@Override
 public UnconditionalFlowInfo mergedWith(UnconditionalFlowInfo otherInits) {
 	return unconditionalInits().mergedWith(otherInits);
 }
+@Override
 public UnconditionalFlowInfo mergeDefiniteInitsWith(UnconditionalFlowInfo otherInits) {
 	return unconditionalInits().mergeDefiniteInitsWith(otherInits);
 }
+@Override
 public UnconditionalFlowInfo nullInfoLessUnconditionalCopy() {
 	return unconditionalInitsWithoutSideEffect().
 		nullInfoLessUnconditionalCopy();
 }
 
+@Override
 public String toString() {
 
 	return "FlowInfo<true: " + this.initsWhenTrue.toString() + ", false: " + this.initsWhenFalse.toString() + ">"; //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-2$
 }
 
+@Override
 public FlowInfo safeInitsWhenTrue() {
 	return this.initsWhenTrue;
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalCopy() {
 	return this.initsWhenTrue.unconditionalCopy().
 			mergedWith(this.initsWhenFalse.unconditionalInits());
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalFieldLessCopy() {
 	return this.initsWhenTrue.unconditionalFieldLessCopy().
 		mergedWith(this.initsWhenFalse.unconditionalFieldLessCopy());
 	// should never happen, hence suboptimal does not hurt
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalInits() {
 	return this.initsWhenTrue.unconditionalInits().
 			mergedWith(this.initsWhenFalse.unconditionalInits());
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect() {
 	// cannot do better here than unconditionalCopy - but still a different
 	// operation for UnconditionalFlowInfo
@@ -254,6 +295,7 @@
 			mergedWith(this.initsWhenFalse.unconditionalInits());
 }
 
+@Override
 public void resetAssignmentInfo(LocalVariableBinding local) {
 	this.initsWhenTrue.resetAssignmentInfo(local);
 	this.initsWhenFalse.resetAssignmentInfo(local);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.java
index d142333..0047d90 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/ExceptionHandlingFlowContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -97,7 +97,7 @@
 		BlockScope scope,
 		UnconditionalFlowInfo flowInfo) {
 
-	super(parent, associatedNode);
+	super(parent, associatedNode, true);
 	this.isMethodContext = scope == scope.methodScope();
 	this.handledExceptions = handledExceptions;
 	this.catchArguments = catchArguments;
@@ -207,6 +207,7 @@
 	return this.initializationParent;
 }
 
+@Override
 public String individualToString() {
 	StringBuffer buffer = new StringBuffer("Exception flow context"); //$NON-NLS-1$
 	int length = this.handledExceptions.length;
@@ -236,6 +237,7 @@
 	return this.initsOnExceptions[index];
 }
 
+@Override
 public UnconditionalFlowInfo initsOnReturn(){
 	return this.initsOnReturn;
 }
@@ -296,6 +298,7 @@
 			flowInfo.unconditionalCopy();
 }
 
+@Override
 public void recordReturnFrom(UnconditionalFlowInfo flowInfo) {
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
 		if ((this.initsOnReturn.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
@@ -314,6 +317,7 @@
  * exception handlers.
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext#subroutine()
  */
+@Override
 public SubRoutineStatement subroutine() {
 	if (this.associatedNode instanceof SubRoutineStatement) {
 		// exception handler context may be child of InsideSubRoutineFlowContext, which maps to same handler
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.java
index 308fd64..20bb17e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FinallyFlowContext.java
@@ -220,6 +220,7 @@
 	}
 }
 
+	@Override
 	public String individualToString() {
 
 		StringBuffer buffer = new StringBuffer("Finally flow context"); //$NON-NLS-1$
@@ -228,10 +229,12 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public boolean isSubRoutine() {
 		return true;
 	}
 
+	@Override
 	protected boolean recordFinalAssignment(
 		VariableBinding binding,
 		Reference finalAssignment) {
@@ -258,6 +261,7 @@
 		return true;
 	}
 
+	@Override
 	public void recordUsingNullReference(Scope scope, LocalVariableBinding local,
 			ASTNode location, int checkType, FlowInfo flowInfo) {
 		if ((flowInfo.tagBits & FlowInfo.UNREACHABLE) == 0 && !flowInfo.isDefinitelyUnknown(local))	{
@@ -430,6 +434,7 @@
 		}
 	}
 
+	@Override
 	void removeFinalAssignmentIfAny(Reference reference) {
 		for (int i = 0; i < this.assignCount; i++) {
 			if (this.finalAssignments[i] == reference) {
@@ -440,6 +445,7 @@
 		}
 	}
 
+@Override
 protected void recordNullReference(LocalVariableBinding local,
 	ASTNode expression, int checkType, FlowInfo nullInfo) {
 	if (this.nullCount == 0) {
@@ -463,12 +469,14 @@
 	this.nullReferences[this.nullCount] = expression;
 	this.nullCheckTypes[this.nullCount++] = checkType;
 }
+@Override
 public void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) {
 	if (nullStatus == FlowInfo.NULL)
 		super.recordUnboxing(scope, expression, nullStatus, flowInfo);
 	else // defer checking:
 		recordNullReference(null, expression, IN_UNBOXING, flowInfo);
 }
+@Override
 protected boolean internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, TypeBinding expectedType, int checkType) {
 	// cf. decision structure inside FinallyFlowContext.recordUsingNullReference(..)
 	if (nullStatus == FlowInfo.UNKNOWN ||
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.java
index 549d39e..56db3ce 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowContext.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -62,7 +63,7 @@
 public class FlowContext implements TypeConstants {
 
 	// preempt marks looping contexts
-	public final static FlowContext NotContinuableContext = new FlowContext(null, null);
+	public final static FlowContext NotContinuableContext = new FlowContext(null, null, true);
 	public ASTNode associatedNode;
 	public FlowContext parent;
 	public FlowInfo initsOnFinally;
@@ -122,7 +123,7 @@
 // check happened in an instanceof expression
 public static final int CONTEXT_MASK = ~CHECK_MASK & ~HIDE_NULL_COMPARISON_WARNING_MASK;
 
-public FlowContext(FlowContext parent, ASTNode associatedNode) {
+public FlowContext(FlowContext parent, ASTNode associatedNode, boolean inheritNullFieldChecks) {
 	this.parent = parent;
 	this.associatedNode = associatedNode;
 	if (parent != null) {
@@ -131,8 +132,16 @@
 		}
 		this.initsOnFinally = parent.initsOnFinally;
 		this.conditionalLevel = parent.conditionalLevel;
-		this.nullCheckedFieldReferences = parent.nullCheckedFieldReferences; // re-use list if there is one
-		this.timesToLiveForNullCheckInfo = parent.timesToLiveForNullCheckInfo;
+		if (inheritNullFieldChecks)
+			copyNullCheckedFieldsFrom(parent); // re-use list if there is one
+	}
+}
+
+public void copyNullCheckedFieldsFrom(FlowContext other) {
+	Reference[] fieldReferences = other.nullCheckedFieldReferences;
+	if (fieldReferences != null && fieldReferences.length > 0 && fieldReferences[0] != null) {
+		this.nullCheckedFieldReferences = other.nullCheckedFieldReferences;
+		this.timesToLiveForNullCheckInfo = other.timesToLiveForNullCheckInfo;
 	}
 }
 
@@ -988,6 +997,7 @@
 	return null;
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	FlowContext current = this;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java
index d2898d6..69c0ad7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/FlowInfo.java
@@ -625,6 +625,7 @@
  */
 abstract public UnconditionalFlowInfo nullInfoLessUnconditionalCopy();
 
+	@Override
 	public String toString(){
 
 		if (this == DEAD_END){
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.java
index 4f489df..611ed55 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InitializationFlowContext.java
@@ -56,6 +56,7 @@
 		return this;
 	}
 	
+	@Override
 	public String individualToString() {
 
 		StringBuffer buffer = new StringBuffer("Initialization flow context"); //$NON-NLS-1$
@@ -66,6 +67,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public void recordHandlingException(
 		ReferenceBinding exceptionType,
 		UnconditionalFlowInfo flowInfo,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.java
index 785f2fe..4acefb9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/InsideSubRoutineFlowContext.java
@@ -28,20 +28,24 @@
 	this.initsOnReturn = FlowInfo.DEAD_END;
 }
 
+@Override
 public String individualToString() {
 	StringBuffer buffer = new StringBuffer("Inside SubRoutine flow context"); //$NON-NLS-1$
 	buffer.append("[initsOnReturn -").append(this.initsOnReturn.toString()).append(']'); //$NON-NLS-1$
 	return buffer.toString();
 }
 
+@Override
 public UnconditionalFlowInfo initsOnReturn(){
 	return this.initsOnReturn;
 }
 
+@Override
 public boolean isNonReturningContext() {
 	return ((SubRoutineStatement) this.associatedNode).isSubRoutineEscaping();
 }
 
+@Override
 public void recordReturnFrom(UnconditionalFlowInfo flowInfo) {
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0)	{
 	if (this.initsOnReturn == FlowInfo.DEAD_END) {
@@ -52,6 +56,7 @@
 	}
 }
 
+@Override
 public SubRoutineStatement subroutine() {
 	return (SubRoutineStatement) this.associatedNode;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.java
index 457df5c..c44a480 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LabelFlowContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -26,7 +26,7 @@
 	public char[] labelName;
 
 public LabelFlowContext(FlowContext parent, ASTNode associatedNode, char[] labelName, BranchLabel breakLabel, BlockScope scope) {
-	super(parent, associatedNode, breakLabel, false);
+	super(parent, associatedNode, breakLabel, false, true);
 	this.labelName = labelName;
 	checkLabelValidity(scope);
 }
@@ -44,10 +44,12 @@
 	}
 }
 
+@Override
 public String individualToString() {
 	return "Label flow context [label:" + String.valueOf(this.labelName) + "]"; //$NON-NLS-2$ //$NON-NLS-1$
 }
 
+@Override
 public char[] labelName() {
 	return this.labelName;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java
index b40c72f..93fdb8b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -105,7 +105,7 @@
 		BranchLabel continueLabel,
 		Scope associatedScope,
 		boolean isPreTest) {
-		super(parent, associatedNode, breakLabel, isPreTest);
+		super(parent, associatedNode, breakLabel, isPreTest, false);
 		this.tagBits |= FlowContext.PREEMPT_NULL_DIAGNOSTIC;
 			// children will defer to this, which may defer to its own parent
 		this.continueLabel = continueLabel;
@@ -444,10 +444,12 @@
 	}
 }
 
+	@Override
 	public BranchLabel continueLabel() {
 		return this.continueLabel;
 	}
 
+	@Override
 	public String individualToString() {
 		StringBuffer buffer = new StringBuffer("Looping flow context"); //$NON-NLS-1$
 		buffer.append("[initsOnBreak - ").append(this.initsOnBreak.toString()).append(']'); //$NON-NLS-1$
@@ -457,6 +459,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public boolean isContinuable() {
 		return true;
 	}
@@ -465,6 +468,7 @@
 		return this.initsOnContinue != FlowInfo.DEAD_END;
 	}
 
+@Override
 public void recordBreakTo(FlowContext targetContext) {
 	if (targetContext instanceof LabelFlowContext) {
 		int current;
@@ -477,6 +481,7 @@
 	}
 }
 
+@Override
 public void recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo) {
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0)	{
 		if ((this.initsOnContinue.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
@@ -518,6 +523,7 @@
 	}
 }
 
+	@Override
 	protected boolean recordFinalAssignment(
 		VariableBinding binding,
 		Reference finalAssignment) {
@@ -553,6 +559,7 @@
 		return true;
 	}
 
+@Override
 protected void recordNullReference(LocalVariableBinding local,
 	ASTNode expression, int checkType, FlowInfo nullInfo) {
 	if (this.nullCount == 0) {
@@ -576,6 +583,7 @@
 	this.nullCheckTypes[this.nullCount] = checkType;
 	this.nullInfos[this.nullCount++] = nullInfo != null ? nullInfo.unconditionalCopy() : null;
 }
+@Override
 public void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) {
 	if (nullStatus == FlowInfo.NULL)
 		super.recordUnboxing(scope, expression, nullStatus, flowInfo);
@@ -584,6 +592,7 @@
 }
 
 /** Record the fact that we see an early exit (in 'reference') while 'trackingVar' is in scope and may be unclosed. */
+@Override
 public boolean recordExitAgainstResource(BlockScope scope, FlowInfo flowInfo, FakedTrackingVariable trackingVar, ASTNode reference) {
 	LocalVariableBinding local = trackingVar.binding;
 	if (flowInfo.isDefinitelyNonNull(local)) {
@@ -601,6 +610,7 @@
 	return true; // handled
 }
 
+@Override
 public void recordUsingNullReference(Scope scope, LocalVariableBinding local,
 		ASTNode location, int checkType, FlowInfo flowInfo) {
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE) != 0 ||
@@ -729,6 +739,7 @@
 	}
 }
 
+	@Override
 	void removeFinalAssignmentIfAny(Reference reference) {
 		for (int i = 0; i < this.assignCount; i++) {
 			if (this.finalAssignments[i] == reference) {
@@ -766,6 +777,7 @@
 		return this.escapingExceptionCatchSites != null;
 	}
 
+	@Override
 	protected boolean internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, TypeBinding expectedType, int checkType) {
 		recordProvidedExpectedTypes(providedType, expectedType, this.nullCount);
 		recordNullReference(expression.localVariableBinding(), expression, checkType, flowInfo);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.java
index 7e937e6..0a09fdd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/SwitchFlowContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,28 +24,32 @@
 	public BranchLabel breakLabel;
 	public UnconditionalFlowInfo initsOnBreak = FlowInfo.DEAD_END;
 
-public SwitchFlowContext(FlowContext parent, ASTNode associatedNode, BranchLabel breakLabel, boolean isPreTest) {
-	super(parent, associatedNode);
+public SwitchFlowContext(FlowContext parent, ASTNode associatedNode, BranchLabel breakLabel, boolean isPreTest, boolean inheritNullFieldChecks) {
+	super(parent, associatedNode, inheritNullFieldChecks);
 	this.breakLabel = breakLabel;
 	if (isPreTest && parent.conditionalLevel > -1) {
 		this.conditionalLevel++;
 	}
 }
 
+@Override
 public BranchLabel breakLabel() {
 	return this.breakLabel;
 }
 
+@Override
 public String individualToString() {
 	StringBuffer buffer = new StringBuffer("Switch flow context"); //$NON-NLS-1$
 	buffer.append("[initsOnBreak -").append(this.initsOnBreak.toString()).append(']'); //$NON-NLS-1$
 	return buffer.toString();
 }
 
+@Override
 public boolean isBreakable() {
 	return true;
 }
 
+@Override
 public void recordBreakFrom(FlowInfo flowInfo) {
 	if ((this.initsOnBreak.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
 		this.initsOnBreak = this.initsOnBreak.mergedWith(flowInfo.unconditionalInits());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.java
index e906135..d865e7b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/TryFlowContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013 GK Software AG and others.
+ * Copyright (c) 2013, 2017 GK Software AG and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,9 +25,10 @@
 	public FlowContext outerTryContext;
 
 	public TryFlowContext(FlowContext parent, ASTNode associatedNode) {
-		super(parent, associatedNode);
+		super(parent, associatedNode, true);
 	}
 	
+	@Override
 	public void markFinallyNullStatus(LocalVariableBinding local, int nullStatus) {
 		if (this.outerTryContext != null) {
 			this.outerTryContext.markFinallyNullStatus(local, nullStatus);
@@ -35,6 +36,7 @@
 		super.markFinallyNullStatus(local, nullStatus);
 	}
 
+	@Override
 	public void mergeFinallyNullInfo(FlowInfo flowInfo) {
 		if (this.outerTryContext != null) {
 			this.outerTryContext.mergeFinallyNullInfo(flowInfo);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java
index f33024b..4b91e7b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/flow/UnconditionalFlowInfo.java
@@ -123,9 +123,11 @@
 		return flowInfo;
 }
 
+@Override
 public FlowInfo addInitializationsFrom(FlowInfo inits) {
 	return addInfoFrom(inits, true);
 }
+@Override
 public FlowInfo addNullInfoFrom(FlowInfo inits) {
 	return addInfoFrom(inits, false);
 }
@@ -392,6 +394,7 @@
 	return this;
 }
 
+@Override
 public FlowInfo addPotentialInitializationsFrom(FlowInfo inits) {
 	if (this == DEAD_END){
 		return this;
@@ -603,6 +606,7 @@
 	return this;
 }
 
+@Override
 final public boolean cannotBeDefinitelyNullOrNonNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -634,6 +638,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean cannotBeNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -661,6 +666,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean canOnlyBeNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -687,6 +693,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 public FlowInfo copy() {
 	// do not clone the DeadEnd
 	if (this == DEAD_END) {
@@ -716,16 +723,18 @@
 		System.arraycopy(this.extra[1], 0,
 			(copy.extra[1] = new long[length]), 0, length);
 		if (hasNullInfo) {
-			for (int j = 2; j < extraLength; j++) {
+			for (int j = 2; j < 6; j++) {
 				System.arraycopy(this.extra[j], 0,
 					(copy.extra[j] = new long[length]), 0, length);
 			}
 		}
 		else {
-			for (int j = 2; j < extraLength; j++) {
+			for (int j = 2; j < 6; j++) {
 				copy.extra[j] = new long[length];
 			}
 		}
+		System.arraycopy(this.extra[IN], 0, (copy.extra[IN] = new long[length]), 0, length);
+		System.arraycopy(this.extra[INN], 0, (copy.extra[INN] = new long[length]), 0, length);
 	}
 	return copy;
 }
@@ -789,10 +798,12 @@
 	return this;
 }
 
+@Override
 public FlowInfo initsWhenFalse() {
 	return this;
 }
 
+@Override
 public FlowInfo initsWhenTrue() {
 	return this;
 }
@@ -819,6 +830,7 @@
 				(1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isDefinitelyAssigned(FieldBinding field) {
 	// Mirrored in CodeStream.isDefinitelyAssigned(..)
 	// do not want to complain in unreachable code
@@ -828,6 +840,7 @@
 	return isDefinitelyAssigned(field.id);
 }
 
+@Override
 final public boolean isDefinitelyAssigned(LocalVariableBinding local) {
 	// do not want to complain in unreachable code if local declared in reachable code
 	if ((this.tagBits & UNREACHABLE_OR_DEAD) != 0 && (local.declaration.bits & ASTNode.IsLocalDeclarationReachable) != 0) {
@@ -836,6 +849,7 @@
 	return isDefinitelyAssigned(local.id + this.maxFieldCount);
 }
 
+@Override
 final public boolean isDefinitelyNonNull(LocalVariableBinding local) {
 	// do not want to complain in unreachable code
 	if ((this.tagBits & UNREACHABLE) != 0 ||
@@ -865,6 +879,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isDefinitelyNull(LocalVariableBinding local) {
 	// do not want to complain in unreachable code
 	if ((this.tagBits & UNREACHABLE) != 0 ||
@@ -892,6 +907,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isDefinitelyUnknown(LocalVariableBinding local) {
 	// do not want to complain in unreachable code
 	if ((this.tagBits & UNREACHABLE) != 0 ||
@@ -917,6 +933,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean hasNullInfoFor(LocalVariableBinding local) {
 	// do not want to complain in unreachable code
 	if ((this.tagBits & UNREACHABLE) != 0 ||
@@ -964,10 +981,12 @@
 			(1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isPotentiallyAssigned(FieldBinding field) {
 	return isPotentiallyAssigned(field.id);
 }
 
+@Override
 final public boolean isPotentiallyAssigned(LocalVariableBinding local) {
 	// final constants are inlined, and thus considered as always initialized
 	if (local.constant() != Constant.NotAConstant) {
@@ -977,6 +996,7 @@
 }
 
 // TODO (Ayush) Check why this method does not return true for protected non null (1111)
+@Override
 final public boolean isPotentiallyNonNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -1003,6 +1023,7 @@
 }
 
 // TODO (Ayush) Check why this method does not return true for protected null
+@Override
 final public boolean isPotentiallyNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -1028,6 +1049,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isPotentiallyUnknown(LocalVariableBinding local) {
 	// do not want to complain in unreachable code
 	if ((this.tagBits & UNREACHABLE) != 0 ||
@@ -1055,6 +1077,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isProtectedNonNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -1080,6 +1103,7 @@
 		    & (1L << (position % BitCacheSize))) != 0;
 }
 
+@Override
 final public boolean isProtectedNull(LocalVariableBinding local) {
 	if ((this.tagBits & NULL_FLAG_MASK) == 0 ||
 			(local.type.tagBits & TagBits.IsBaseType) != 0) {
@@ -1119,6 +1143,7 @@
 		throw new AssertionFailedException("assertion failed: " + message); //$NON-NLS-1$
 	return expression;
 }
+@Override
 public void markAsComparedEqualToNonNull(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1217,6 +1242,7 @@
 	}
 }
 
+@Override
 public void markAsComparedEqualToNull(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1343,16 +1369,19 @@
 	}
 }
 
+@Override
 public void markAsDefinitelyAssigned(FieldBinding field) {
 	if (this != DEAD_END)
 		markAsDefinitelyAssigned(field.id);
 }
 
+@Override
 public void markAsDefinitelyAssigned(LocalVariableBinding local) {
 	if (this != DEAD_END)
 		markAsDefinitelyAssigned(local.id + this.maxFieldCount);
 }
 
+@Override
 public void markAsDefinitelyNonNull(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1410,6 +1439,7 @@
 	}
 }
 
+@Override
 public void markAsDefinitelyNull(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1473,6 +1503,7 @@
  */
 // PREMATURE may try to get closer to markAsDefinitelyAssigned, but not
 //			 obvious
+@Override
 public void markAsDefinitelyUnknown(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1531,6 +1562,7 @@
 	}
 }
 
+@Override
 public void resetNullInfo(LocalVariableBinding local) {
 	if (this != DEAD_END) {
 		this.tagBits |= NULL_FLAG_MASK;
@@ -1567,6 +1599,7 @@
  * Mark a local as potentially having been assigned to an unknown value.
  * @param local the local to mark
  */
+@Override
 public void markPotentiallyUnknownBit(LocalVariableBinding local) {
 	// protected from non-object locals in calling methods
 	if (this != DEAD_END) {
@@ -1615,6 +1648,7 @@
 	}
 }
 
+@Override
 public void markPotentiallyNullBit(LocalVariableBinding local) {
 	if (this != DEAD_END) {
 		this.tagBits |= NULL_FLAG_MASK;
@@ -1659,6 +1693,7 @@
 	}
 }
 
+@Override
 public void markPotentiallyNonNullBit(LocalVariableBinding local) {
 	if (this != DEAD_END) {
 		this.tagBits |= NULL_FLAG_MASK;
@@ -1709,6 +1744,7 @@
 	}
 }
 
+@Override
 public UnconditionalFlowInfo mergedWith(UnconditionalFlowInfo otherInits) {
 	if ((otherInits.tagBits & UNREACHABLE_OR_DEAD) != 0 && this != DEAD_END) {
 		if (COVERAGE_TEST_FLAG) {
@@ -1991,6 +2027,7 @@
 	return count;
 }
 
+@Override
 public UnconditionalFlowInfo nullInfoLessUnconditionalCopy() {
 	if (this == DEAD_END) {
 		return this;
@@ -2022,10 +2059,12 @@
 	return copy;
 }
 
+@Override
 public FlowInfo safeInitsWhenTrue() {
 	return copy();
 }
 
+@Override
 public FlowInfo setReachMode(int reachMode) {
 	if (this == DEAD_END) {// cannot modify DEAD_END
 		return this;
@@ -2051,6 +2090,7 @@
 	return this;
 }
 
+@Override
 public String toString(){
 	// PREMATURE consider printing bit fields as 0001 0001 1000 0001...
 	if (this == DEAD_END){
@@ -2122,10 +2162,12 @@
 	}
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalCopy() {
 	return (UnconditionalFlowInfo) copy();
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalFieldLessCopy() {
 	// TODO (maxime) may consider leveraging null contribution verification as it is done in copy
 	UnconditionalFlowInfo copy = new UnconditionalFlowInfo();
@@ -2175,14 +2217,17 @@
 	return copy;
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalInits() {
 	// also see conditional inits, where it requests them to merge
 	return this;
 }
 
+@Override
 public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect() {
 	return this;
 }
+@Override
 public UnconditionalFlowInfo mergeDefiniteInitsWith(UnconditionalFlowInfo otherInits) {
 	if ((otherInits.tagBits & UNREACHABLE_OR_DEAD) != 0 && this != DEAD_END) {
 		return this;
@@ -2231,6 +2276,7 @@
 	}
 	return this;
 }
+@Override
 public void resetAssignmentInfo(LocalVariableBinding local) {
 	resetAssignmentInfo(local.id + this.maxFieldCount);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.java
index fb5730d..0bce07a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/BooleanConstant.java
@@ -25,27 +25,33 @@
 		this.value = value;
 	}
 
+	@Override
 	public boolean booleanValue() {
 		return this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		// spec 15.17.11
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		return "(boolean)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_boolean;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.value ? 1231 : 1237;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.java
index 122250a..4803f04 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ByteConstant.java
@@ -22,51 +22,63 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return (char) this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public float floatValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public int intValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public long longValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public short shortValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public String stringValue() {
 		// spec 15.17.11
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		return "(byte)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_byte;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.value;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.java
index 97c0f9c..b8ec51e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CharConstant.java
@@ -22,51 +22,63 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return (byte) this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public float floatValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public int intValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public long longValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public short shortValue() {
 		return (short) this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		// spec 15.17.11
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		return "(char)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_char;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.value;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
index d5ad46a..fcdbc5d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java
@@ -1,5 +1,6 @@
+//AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +21,7 @@
  *								bug 381443 - [compiler][null] Allow parameter widening from @NonNull to unannotated
  *								bug 383368 - [compiler][null] syntactic null analysis for field references
  *								Bug 435805 - [1.8][compiler][null] Java 8 compiler does not recognize declaration style null annotations
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *     Jesper Steen Moller - Contributions for
  *								bug 404146 - [1.7][compiler] nested try-catch-finally-blocks leads to unrunnable Java byte code
  *								bug 407297 - [1.8][compiler] Control generation of parameter names by option
@@ -56,6 +58,7 @@
 	public static final String OPTION_ReportMethodWithConstructorName = "org.eclipse.jdt.core.compiler.problem.methodWithConstructorName"; //$NON-NLS-1$
 	public static final String OPTION_ReportOverridingPackageDefaultMethod = "org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod"; //$NON-NLS-1$
 	public static final String OPTION_ReportDeprecation = "org.eclipse.jdt.core.compiler.problem.deprecation"; //$NON-NLS-1$
+	public static final String OPTION_ReportTerminalDeprecation = "org.eclipse.jdt.core.compiler.problem.terminalDeprecation"; //$NON-NLS-1$
 	public static final String OPTION_ReportDeprecationInDeprecatedCode = "org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode"; //$NON-NLS-1$
 	public static final String OPTION_ReportDeprecationWhenOverridingDeprecatedMethod = "org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod"; //$NON-NLS-1$
 	public static final String OPTION_ReportHiddenCatchBlock = "org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock"; //$NON-NLS-1$
@@ -114,6 +117,7 @@
 	public static final String OPTION_Source = "org.eclipse.jdt.core.compiler.source"; //$NON-NLS-1$
 	public static final String OPTION_TargetPlatform = "org.eclipse.jdt.core.compiler.codegen.targetPlatform"; //$NON-NLS-1$
 	public static final String OPTION_Compliance = "org.eclipse.jdt.core.compiler.compliance"; //$NON-NLS-1$
+	public static final String OPTION_Release = "org.eclipse.jdt.core.compiler.release"; //$NON-NLS-1$
 	public static final String OPTION_Encoding = "org.eclipse.jdt.core.encoding"; //$NON-NLS-1$
 	public static final String OPTION_MaxProblemPerUnit = "org.eclipse.jdt.core.compiler.maxProblemPerUnit"; //$NON-NLS-1$
 	public static final String OPTION_TaskTags = "org.eclipse.jdt.core.compiler.taskTags"; //$NON-NLS-1$
@@ -161,9 +165,11 @@
 	public static final String OPTION_ReportMethodCanBeStatic = "org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic";  //$NON-NLS-1$
 	public static final String OPTION_ReportMethodCanBePotentiallyStatic = "org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic";  //$NON-NLS-1$
 	public static final String OPTION_ReportRedundantSpecificationOfTypeArguments =  "org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments"; //$NON-NLS-1$
+
 	public static final String OPTION_ReportUnclosedCloseable = "org.eclipse.jdt.core.compiler.problem.unclosedCloseable"; //$NON-NLS-1$
 	public static final String OPTION_ReportPotentiallyUnclosedCloseable = "org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable"; //$NON-NLS-1$
 	public static final String OPTION_ReportExplicitlyClosedAutoCloseable = "org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable"; //$NON-NLS-1$
+
 	public static final String OPTION_ReportNullSpecViolation = "org.eclipse.jdt.core.compiler.problem.nullSpecViolation";  //$NON-NLS-1$
 	public static final String OPTION_ReportNullAnnotationInferenceConflict = "org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict";  //$NON-NLS-1$
 	public static final String OPTION_ReportNullUncheckedConversion = "org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion";  //$NON-NLS-1$
@@ -187,6 +193,13 @@
 	public static final String OPTION_PessimisticNullAnalysisForFreeTypeVariables = "org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables";  //$NON-NLS-1$
 	public static final String OPTION_ReportNonNullTypeVariableFromLegacyInvocation = "org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation"; //$NON-NLS-1$
 	
+	public static final String OPTION_ReportUnlikelyCollectionMethodArgumentType = "org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType"; //$NON-NLS-1$
+	public static final String OPTION_ReportUnlikelyCollectionMethodArgumentTypeStrict = "org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict"; //$NON-NLS-1$
+	public static final String OPTION_ReportUnlikelyEqualsArgumentType = "org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType"; //$NON-NLS-1$
+
+	public static final String OPTION_ReportAPILeak = "org.eclipse.jdt.core.compiler.problem.APILeak"; //$NON-NLS-1$
+	public static final String OPTION_ReportUnstableAutoModuleName = "org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName";   //$NON-NLS-1$
+
 	/**
 	 * Possible values for configurable options
 	 */
@@ -204,7 +217,8 @@
 	public static final String VERSION_1_6 = "1.6"; //$NON-NLS-1$
 	public static final String VERSION_1_7 = "1.7"; //$NON-NLS-1$
 	public static final String VERSION_1_8 = "1.8"; //$NON-NLS-1$
-	public static final String VERSION_1_9 = "1.9"; //$NON-NLS-1$
+	public static final String VERSION_9 = "9"; //$NON-NLS-1$
+	public static final String VERSION_10 = "10"; //$NON-NLS-1$
 	public static final String ERROR = "error"; //$NON-NLS-1$
 	public static final String WARNING = "warning"; //$NON-NLS-1$
 	public static final String INFO = "info"; //$NON-NLS-1$
@@ -309,10 +323,16 @@
 	public static final int UnusedExceptionParameter = IrritantSet.GROUP2 | ASTNode.Bit19;
 	public static final int PessimisticNullAnalysisForFreeTypeVariables = IrritantSet.GROUP2 | ASTNode.Bit20;
 	public static final int NonNullTypeVariableFromLegacyInvocation = IrritantSet.GROUP2 | ASTNode.Bit21;
+	public static final int UnlikelyCollectionMethodArgumentType = IrritantSet.GROUP2 | ASTNode.Bit22;
+	public static final int UnlikelyEqualsArgumentType = IrritantSet.GROUP2 | ASTNode.Bit23;
+	public static final int UsingTerminallyDeprecatedAPI = IrritantSet.GROUP2 | ASTNode.Bit24;
+	public static final int APILeak = IrritantSet.GROUP2 | ASTNode.Bit25;
+	public static final int UnstableAutoModuleName = IrritantSet.GROUP2 | ASTNode.Bit26;
 
 	// AspectJ Extension
+	// Not sure we need this anymore...
 	public static final String OPTION_ReportSwallowedExceptionInCatchBlock = "org.eclipse.jdt.core.compiler.problem.swallowedExceptionInCatchBlock"; //$NON-NLS-1$
-	public static final int SwallowedExceptionInCatchBlock = IrritantSet.GROUP2 | ASTNode.Bit22;
+	public static final int SwallowedExceptionInCatchBlock = IrritantSet.GROUP2 | ASTNode.Bit28;
 	// when picking up a later version of this class, if new constants have been added to 
 	// the above list, then AjCompilerOptions will need updating also.
 	// End AspectJ Extension
@@ -322,12 +342,12 @@
 	 * Defaults defined at {@link IrritantSet#COMPILER_DEFAULT_ERRORS} 
 	 * @see #resetDefaults()
 	 */
-	public IrritantSet errorThreshold; // AspectJ Extension - raised to public from protected
+	public IrritantSet errorThreshold; // AspectJ raised visibility
 	/** 
 	 * Defaults defined at {@link IrritantSet#COMPILER_DEFAULT_WARNINGS}
 	 * @see #resetDefaults()
 	 */
-	public IrritantSet warningThreshold; // AspectJ Extension - raised to public from protected
+	public IrritantSet warningThreshold; // AspectJ raised visibility
 	/** 
 	 * Defaults defined at {@link IrritantSet#COMPILER_DEFAULT_INFOS}
 	 * @see #resetDefaults()
@@ -335,13 +355,13 @@
 	protected IrritantSet infoThreshold;
 	
 	/**
-	 * Default settings are to be defined in {@lnk CompilerOptions#resetDefaults()}
+	 * Default settings are to be defined in {@link CompilerOptions#resetDefaults()}
 	 */
 	
 	/** Classfile debug information, may contain source file name, line numbers, local variable tables, etc... */
 	public int produceDebugAttributes; 
-	/** Classfile method patameters information as per JEP 118... */
-	public boolean produceMethodParameters; 
+	/** Classfile method parameters information as per JEP 118... */
+	public boolean produceMethodParameters;
 	/** Indicates whether generic signature should be generated for lambda expressions */
 	public boolean generateGenericSignatureForLambdaExpressions;
 	/** Compliance level for the compiler, refers to a JDK version, e.g. {@link ClassFileConstants#JDK1_4} */
@@ -476,16 +496,15 @@
 	/** Should missing enum cases be reported even if a default case exists in the same switch? */
 	public boolean reportMissingEnumCaseDespiteDefault;
 	
+	/** When checking for unlikely argument types of of Map.get() et al, perform strict analysis against the expected type */
+	public boolean reportUnlikelyCollectionMethodArgumentTypeStrict;
+
 	/** Should the compiler tolerate illegal ambiguous varargs invocation in compliance < 1.7 
 	 * to be bug compatible with javac? (bug 383780) */
 	public static boolean tolerateIllegalAmbiguousVarargsInvocation;
-	/** Should the compiler use performance optimization during type inference (bug 476718) */
-	public static boolean useunspecdtypeinferenceperformanceoptimization;
 	{
 		String tolerateIllegalAmbiguousVarargs = System.getProperty("tolerateIllegalAmbiguousVarargsInvocation"); //$NON-NLS-1$
 		tolerateIllegalAmbiguousVarargsInvocation = tolerateIllegalAmbiguousVarargs != null && tolerateIllegalAmbiguousVarargs.equalsIgnoreCase("true"); //$NON-NLS-1$
-		String useunspecdtypeinferenceoptimization = System.getProperty("useunspecdtypeinferenceperformanceoptimization"); //$NON-NLS-1$
-		useunspecdtypeinferenceperformanceoptimization = useunspecdtypeinferenceoptimization != null && useunspecdtypeinferenceoptimization.equalsIgnoreCase("true"); //$NON-NLS-1$
 	}
 	/** Should null annotations of overridden methods be inherited? */
 	public boolean inheritNullAnnotations;
@@ -509,14 +528,17 @@
 		"cast", //$NON-NLS-1$
 		"dep-ann", //$NON-NLS-1$
 		"deprecation", //$NON-NLS-1$
+		"exports",  //$NON-NLS-1$
 		"fallthrough", //$NON-NLS-1$
 		"finally", //$NON-NLS-1$
 		"hiding", //$NON-NLS-1$
 		"incomplete-switch", //$NON-NLS-1$
 		"javadoc", //$NON-NLS-1$
+		"module", //$NON-NLS-1$
 		"nls", //$NON-NLS-1$
 		"null", //$NON-NLS-1$
 		"rawtypes", //$NON-NLS-1$
+		"removal", //$NON-NLS-1$
 		"resource", //$NON-NLS-1$
 		"restriction", //$NON-NLS-1$		
 		"serial", //$NON-NLS-1$
@@ -526,6 +548,7 @@
 		"synthetic-access", //$NON-NLS-1$
 		"sync-override",	//$NON-NLS-1$
 		"unchecked", //$NON-NLS-1$
+		"unlikely-arg-type", //$NON-NLS-1$
 		"unqualified-field-access", //$NON-NLS-1$
 		"unused", //$NON-NLS-1$
 	};
@@ -571,6 +594,9 @@
 			case UsingDeprecatedAPI :
 			case (InvalidJavadoc | UsingDeprecatedAPI) :
 				return OPTION_ReportDeprecation;
+			case UsingTerminallyDeprecatedAPI :
+			case (InvalidJavadoc | UsingTerminallyDeprecatedAPI) :
+				return OPTION_ReportTerminalDeprecation;
 			case MaskedCatchBlock  :
 				return OPTION_ReportHiddenCatchBlock;
 			case UnusedLocalVariable :
@@ -721,6 +747,14 @@
 				return OPTION_PessimisticNullAnalysisForFreeTypeVariables;
 			case NonNullTypeVariableFromLegacyInvocation:
 				return OPTION_ReportNonNullTypeVariableFromLegacyInvocation;
+			case UnlikelyCollectionMethodArgumentType:
+				return OPTION_ReportUnlikelyCollectionMethodArgumentType;
+			case UnlikelyEqualsArgumentType:
+				return OPTION_ReportUnlikelyEqualsArgumentType;
+			case APILeak:
+				return OPTION_ReportAPILeak;
+			case UnstableAutoModuleName:
+				return OPTION_ReportUnstableAutoModuleName;
 		}
 		return null;
 	}
@@ -759,18 +793,46 @@
 				if (jdkLevel == ClassFileConstants.JDK1_8)
 					return VERSION_1_8;
 				break;
-			case ClassFileConstants.MAJOR_VERSION_1_9 :
-				if (jdkLevel == ClassFileConstants.JDK1_9)
-					return VERSION_1_9;
+			case ClassFileConstants.MAJOR_VERSION_9 :
+				if (jdkLevel == ClassFileConstants.JDK9)
+					return VERSION_9;
+				break;
+			case ClassFileConstants.MAJOR_VERSION_10 :
+				// JDK10 uses same major version ad JDK9
+				if (jdkLevel == ClassFileConstants.JDK10)
+					return VERSION_10;
 				break;
 		}
 		return Util.EMPTY_STRING; // unknown version
 	}
 
+	public static long releaseToJDKLevel(String release) {
+		if (release != null && release.length() > 0) {
+			switch(release.charAt(0)) {
+				case '6':
+					return ClassFileConstants.JDK1_6;
+				case '7':
+					return ClassFileConstants.JDK1_7;
+				case '8':
+					return ClassFileConstants.JDK1_8;
+				case '9':
+					return ClassFileConstants.JDK9;
+				case '1':
+					if (release.length() > 1 && release.charAt(1) == '0')
+						return ClassFileConstants.JDK10;
+					else 
+						return 0;
+				default:
+					return 0; // unknown
+			}
+		}
+		return 0;
+	}
 	public static long versionToJdkLevel(String versionID) {
 		String version = versionID;
-			// verification is optimized for all versions with same length and same "1." prefix
-		if (version != null && version.length() == 3 && version.charAt(0) == '1' && version.charAt(1) == '.') {
+		// verification is optimized for all versions with same length and same "1." prefix
+		if (version != null && version.length() > 0) {
+			if (version.length() >= 3 && version.charAt(0) == '1' && version.charAt(1) == '.') {
 				switch (version.charAt(2)) {
 					case '1':
 						return ClassFileConstants.JDK1_1;
@@ -788,18 +850,27 @@
 						return ClassFileConstants.JDK1_7;
 					case '8':
 						return ClassFileConstants.JDK1_8;
-					case '9':
-						return ClassFileConstants.JDK1_9;
 					default:
 						return 0; // unknown
 				}
+			} else {
+				switch (version.charAt(0)) {
+					case '9':
+						return ClassFileConstants.JDK9;
+					case '1':
+						if (version.length() > 1 && version.charAt(1) == '0') {
+							return ClassFileConstants.JDK10; // Level for JDK 10
+						}
+					// No default - let it go through the remaining checks.
+				}
 			}
-			if (VERSION_JSR14.equals(versionID)) {
-				return ClassFileConstants.JDK1_4;
-			}
-			if (VERSION_CLDC1_1.equals(versionID)) {
-				return ClassFileConstants.CLDC_1_1;
-			}
+		}
+		if (VERSION_JSR14.equals(versionID)) {
+			return ClassFileConstants.JDK1_4;
+		}
+		if (VERSION_CLDC1_1.equals(versionID)) {
+			return ClassFileConstants.CLDC_1_1;
+		}
 		return 0; // unknown
 	}
 
@@ -912,7 +983,10 @@
 			OPTION_SyntacticNullAnalysisForFields,
 			OPTION_ReportUnusedTypeParameter,
 			OPTION_InheritNullAnnotations,
-			OPTION_ReportNonnullParameterAnnotationDropped
+			OPTION_ReportNonnullParameterAnnotationDropped,
+			OPTION_ReportUnlikelyCollectionMethodArgumentType,
+			OPTION_ReportUnlikelyEqualsArgumentType,
+			OPTION_ReportAPILeak,
 		};
 		return result;
 	}
@@ -926,6 +1000,9 @@
 			case (InvalidJavadoc | UsingDeprecatedAPI) :
 			case UsingDeprecatedAPI :
 				return "deprecation"; //$NON-NLS-1$
+			case (InvalidJavadoc | UsingTerminallyDeprecatedAPI) :
+			case UsingTerminallyDeprecatedAPI :
+				return "removal"; //$NON-NLS-1$
 			case FinallyBlockNotCompleting :
 				return "finally"; //$NON-NLS-1$
 			case FieldHiding :
@@ -1004,6 +1081,13 @@
 				return "javadoc"; //$NON-NLS-1$
 			case MissingSynchronizedModifierInInheritedMethod:
 				return "sync-override";	 //$NON-NLS-1$
+			case UnlikelyEqualsArgumentType:
+			case UnlikelyCollectionMethodArgumentType:
+				return "unlikely-arg-type"; //$NON-NLS-1$
+			case APILeak:
+				return "exports"; //$NON-NLS-1$
+			case UnstableAutoModuleName:
+				return "module"; //$NON-NLS-1$
 		}
 		return null;
 	}
@@ -1030,6 +1114,10 @@
 				if ("dep-ann".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.DEP_ANN;
 				break;
+			case 'e' :
+				if ("exports".equals(warningToken)) //$NON-NLS-1$
+					return IrritantSet.API_LEAK;
+				break;
 			case 'f' :
 				if ("fallthrough".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.FALLTHROUGH;
@@ -1048,6 +1136,10 @@
 				if ("javadoc".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.JAVADOC;
 				break;
+			case 'm' :
+				if ("module".equals(warningToken)) //$NON-NLS-1$
+					return IrritantSet.MODULE;
+				break;
 			case 'n' :
 				if ("nls".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.NLS;
@@ -1061,6 +1153,8 @@
 					return IrritantSet.RESOURCE;
 				if ("restriction".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.RESTRICTION;
+				if ("removal".equals(warningToken)) //$NON-NLS-1$
+					return IrritantSet.TERMINAL_DEPRECATION;
 				break;
 			case 's' :
 				if ("serial".equals(warningToken)) //$NON-NLS-1$
@@ -1084,6 +1178,8 @@
 					return IrritantSet.UNCHECKED;
 				if ("unqualified-field-access".equals(warningToken)) //$NON-NLS-1$
 					return IrritantSet.UNQUALIFIED_FIELD_ACCESS;
+				if ("unlikely-arg-type".equals(warningToken)) //$NON-NLS-1$
+					return IrritantSet.UNLIKELY_ARGUMENT_TYPE;
 				break;
 		}
 		return null;
@@ -1102,6 +1198,7 @@
 		optionsMap.put(OPTION_ReportMethodWithConstructorName, getSeverityString(MethodWithConstructorName));
 		optionsMap.put(OPTION_ReportOverridingPackageDefaultMethod, getSeverityString(OverriddenPackageDefaultMethod));
 		optionsMap.put(OPTION_ReportDeprecation, getSeverityString(UsingDeprecatedAPI));
+		optionsMap.put(OPTION_ReportTerminalDeprecation, getSeverityString(UsingTerminallyDeprecatedAPI));
 		optionsMap.put(OPTION_ReportDeprecationInDeprecatedCode, this.reportDeprecationInsideDeprecatedCode ? ENABLED : DISABLED);
 		optionsMap.put(OPTION_ReportDeprecationWhenOverridingDeprecatedMethod, this.reportDeprecationWhenOverridingDeprecatedMethod ? ENABLED : DISABLED);
 		optionsMap.put(OPTION_ReportHiddenCatchBlock, getSeverityString(MaskedCatchBlock));
@@ -1165,6 +1262,7 @@
 		optionsMap.put(OPTION_ReportUnusedLabel, getSeverityString(UnusedLabel));
 		optionsMap.put(OPTION_ReportUnusedTypeArgumentsForMethodInvocation, getSeverityString(UnusedTypeArguments));
 		optionsMap.put(OPTION_Compliance, versionFromJdkLevel(this.complianceLevel));
+		optionsMap.put(OPTION_Release, DISABLED);
 		optionsMap.put(OPTION_Source, versionFromJdkLevel(this.sourceLevel));
 		optionsMap.put(OPTION_TargetPlatform, versionFromJdkLevel(this.targetJDK));
 		optionsMap.put(OPTION_FatalOptionalError, this.treatOptionalErrorAsFatal ? ENABLED : DISABLED);
@@ -1229,6 +1327,11 @@
 		optionsMap.put(OPTION_ReportUninternedIdentityComparison, this.complainOnUninternedIdentityComparison ? ENABLED : DISABLED);
 		optionsMap.put(OPTION_PessimisticNullAnalysisForFreeTypeVariables, getSeverityString(PessimisticNullAnalysisForFreeTypeVariables));
 		optionsMap.put(OPTION_ReportNonNullTypeVariableFromLegacyInvocation, getSeverityString(NonNullTypeVariableFromLegacyInvocation));
+		optionsMap.put(OPTION_ReportUnlikelyCollectionMethodArgumentType, getSeverityString(UnlikelyCollectionMethodArgumentType));
+		optionsMap.put(OPTION_ReportUnlikelyCollectionMethodArgumentTypeStrict, this.reportUnlikelyCollectionMethodArgumentTypeStrict ? ENABLED : DISABLED);
+		optionsMap.put(OPTION_ReportUnlikelyEqualsArgumentType, getSeverityString(UnlikelyEqualsArgumentType));
+		optionsMap.put(OPTION_ReportAPILeak, getSeverityString(APILeak));
+		optionsMap.put(OPTION_ReportUnstableAutoModuleName, getSeverityString(UnstableAutoModuleName));
 		return optionsMap;
 	}
 
@@ -1511,7 +1614,7 @@
 			if (this.targetJDK >= ClassFileConstants.JDK1_5) this.inlineJsrBytecode = true; // forced from 1.5 mode on
 		}
 		if ((optionValue = optionsMap.get(OPTION_Encoding)) != null) {
-				this.defaultEncoding = null;
+			this.defaultEncoding = null;
 			String stringValue = optionValue;
 			if (stringValue.length() > 0){
 				try {
@@ -1520,8 +1623,8 @@
 				} catch(UnsupportedEncodingException e){
 					// ignore unsupported encoding
 				}
-				}
 			}
+		}
 		if ((optionValue = optionsMap.get(OPTION_ReportUnusedParameterWhenImplementingAbstract)) != null) {
 			if (ENABLED.equals(optionValue)) {
 				this.reportUnusedParameterWhenImplementingAbstract = true;
@@ -1566,29 +1669,29 @@
 		}		
 		if ((optionValue = optionsMap.get(OPTION_MaxProblemPerUnit)) != null) {
 			String stringValue = optionValue;
-				try {
-					int val = Integer.parseInt(stringValue);
-					if (val >= 0) this.maxProblemsPerUnit = val;
-				} catch(NumberFormatException e){
-					// ignore ill-formatted limit
-				}
+			try {
+				int val = Integer.parseInt(stringValue);
+				if (val >= 0) this.maxProblemsPerUnit = val;
+			} catch(NumberFormatException e){
+				// ignore ill-formatted limit
 			}
+		}
 		if ((optionValue = optionsMap.get(OPTION_TaskTags)) != null) {
 			String stringValue = optionValue;
-				if (stringValue.length() == 0) {
-					this.taskTags = null;
-				} else {
-					this.taskTags = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
-				}
+			if (stringValue.length() == 0) {
+				this.taskTags = null;
+			} else {
+				this.taskTags = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
 			}
+		}
 		if ((optionValue = optionsMap.get(OPTION_TaskPriorities)) != null) {
 			String stringValue = optionValue;
-				if (stringValue.length() == 0) {
-					this.taskPriorities = null;
-				} else {
-					this.taskPriorities = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
-				}
+			if (stringValue.length() == 0) {
+				this.taskPriorities = null;
+			} else {
+				this.taskPriorities = CharOperation.splitAndTrimOn(',', stringValue.toCharArray());
 			}
+		}
 		if ((optionValue = optionsMap.get(OPTION_TaskCaseSensitive)) != null) {
 			if (ENABLED.equals(optionValue)) {
 				this.isTaskCaseSensitive = true;
@@ -1664,6 +1767,7 @@
 		if ((optionValue = optionsMap.get(OPTION_ReportMethodWithConstructorName)) != null) updateSeverity(MethodWithConstructorName, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportOverridingPackageDefaultMethod)) != null) updateSeverity(OverriddenPackageDefaultMethod, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportDeprecation)) != null) updateSeverity(UsingDeprecatedAPI, optionValue);
+		if ((optionValue = optionsMap.get(OPTION_ReportTerminalDeprecation)) != null) updateSeverity(UsingTerminallyDeprecatedAPI, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportHiddenCatchBlock)) != null) updateSeverity(MaskedCatchBlock, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportUnusedLocal)) != null) updateSeverity(UnusedLocalVariable, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportUnusedParameter)) != null) updateSeverity(UnusedArgument, optionValue);
@@ -1734,6 +1838,11 @@
 		if ((optionValue = optionsMap.get(OPTION_ReportPotentiallyUnclosedCloseable)) != null) updateSeverity(PotentiallyUnclosedCloseable, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportExplicitlyClosedAutoCloseable)) != null) updateSeverity(ExplicitlyClosedAutoCloseable, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_ReportUnusedTypeParameter)) != null) updateSeverity(UnusedTypeParameter, optionValue);
+		if ((optionValue = optionsMap.get(OPTION_ReportUnlikelyCollectionMethodArgumentType)) != null) updateSeverity(UnlikelyCollectionMethodArgumentType, optionValue);
+		if ((optionValue = optionsMap.get(OPTION_ReportUnlikelyCollectionMethodArgumentTypeStrict)) != null) {
+			this.reportUnlikelyCollectionMethodArgumentTypeStrict = ENABLED.equals(optionValue);
+		}
+		if ((optionValue = optionsMap.get(OPTION_ReportUnlikelyEqualsArgumentType)) != null) updateSeverity(UnlikelyEqualsArgumentType, optionValue);
 		if (getSeverity(UnclosedCloseable) == ProblemSeverities.Ignore
 				&& getSeverity(PotentiallyUnclosedCloseable) == ProblemSeverities.Ignore
 				&& getSeverity(ExplicitlyClosedAutoCloseable) == ProblemSeverities.Ignore) {
@@ -1741,6 +1850,8 @@
 		} else {
 			this.analyseResourceLeaks = true;
 		}
+		if ((optionValue = optionsMap.get(OPTION_ReportAPILeak)) != null) updateSeverity(APILeak, optionValue);
+		if ((optionValue = optionsMap.get(OPTION_ReportUnstableAutoModuleName)) != null) updateSeverity(UnstableAutoModuleName, optionValue);
 		if ((optionValue = optionsMap.get(OPTION_AnnotationBasedNullAnalysis)) != null) {
 			this.isAnnotationBasedNullAnalysisEnabled = ENABLED.equals(optionValue);
 		}
@@ -1952,6 +2063,7 @@
 		return buf.toString();
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer("CompilerOptions:"); //$NON-NLS-1$
 		buf.append("\n\t- local variables debug attributes: ").append((this.produceDebugAttributes & ClassFileConstants.ATTR_VARS) != 0 ? "ON" : " OFF"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -1963,6 +2075,7 @@
 		buf.append("\n\t- method with constructor name: ").append(getSeverityString(MethodWithConstructorName)); //$NON-NLS-1$
 		buf.append("\n\t- overridden package default method: ").append(getSeverityString(OverriddenPackageDefaultMethod)); //$NON-NLS-1$
 		buf.append("\n\t- deprecation: ").append(getSeverityString(UsingDeprecatedAPI)); //$NON-NLS-1$
+		buf.append("\n\t- removal: ").append(getSeverityString(UsingTerminallyDeprecatedAPI)); //$NON-NLS-1$
 		buf.append("\n\t- masked catch block: ").append(getSeverityString(MaskedCatchBlock)); //$NON-NLS-1$
 		buf.append("\n\t- unused local variable: ").append(getSeverityString(UnusedLocalVariable)); //$NON-NLS-1$
 		buf.append("\n\t- unused parameter: ").append(getSeverityString(UnusedArgument)); //$NON-NLS-1$
@@ -2064,6 +2177,11 @@
 		buf.append("\n\t- Unused Type Parameter: ").append(getSeverityString(UnusedTypeParameter)); //$NON-NLS-1$
 		buf.append("\n\t- pessimistic null analysis for free type variables: ").append(getSeverityString(PessimisticNullAnalysisForFreeTypeVariables)); //$NON-NLS-1$
 		buf.append("\n\t- report unsafe nonnull return from legacy method: ").append(getSeverityString(NonNullTypeVariableFromLegacyInvocation)); //$NON-NLS-1$
+		buf.append("\n\t- unlikely argument type for collection methods: ").append(getSeverityString(UnlikelyCollectionMethodArgumentType)); //$NON-NLS-1$
+		buf.append("\n\t- unlikely argument type for collection methods, strict check against expected type: ").append(this.reportUnlikelyCollectionMethodArgumentTypeStrict ? ENABLED : DISABLED); //$NON-NLS-1$
+		buf.append("\n\t- unlikely argument types for equals(): ").append(getSeverityString(UnlikelyEqualsArgumentType)); //$NON-NLS-1$
+		buf.append("\n\t- API leak: ").append(getSeverityString(APILeak)); //$NON-NLS-1$
+		buf.append("\n\t- unstable auto module name: ").append(getSeverityString(UnstableAutoModuleName)); //$NON-NLS-1$
 		return buf.toString();
 	}
 	
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.java
index 1ff1dae..d310562 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/CompilerStats.java
@@ -32,9 +32,7 @@
 	return this.endTime - this.startTime;
 }
 
-/**
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
+@Override
 public int compareTo(Object o) {
 	CompilerStats otherStats = (CompilerStats) o;
 	long time1 = elapsedTime();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.java
index ced5d04..60a3819 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/Constant.java
@@ -1518,6 +1518,7 @@
 		throw new ShouldNotImplement(Messages.bind(Messages.constant_cannotConvertedTo, new String[] { typeName(), "String" })); //$NON-NLS-1$
 	}
 
+	@Override
 	public String toString(){
 		if (this == NotAConstant) return "(Constant) NotAConstant"; //$NON-NLS-1$
 		return super.toString(); }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.java
index 8fe3efc..bb26565 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/DoubleConstant.java
@@ -22,53 +22,65 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return (byte) this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return (char) this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value;
 	}
 
+	@Override
 	public float floatValue() {
 		return (float) this.value;
 	}
 
+	@Override
 	public int intValue() {
 		return (int) this.value;
 	}
 
+	@Override
 	public long longValue() {
 		return (long) this.value;
 	}
 
+	@Override
 	public short shortValue() {
 		return (short) this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		if (this == NotAConstant)
 			return "(Constant) NotAConstant"; //$NON-NLS-1$
 		return "(double)" + this.value;  //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_double;
 	}
 
+	@Override
 	public int hashCode() {
 		long temp = Double.doubleToLongBits(this.value);
 		return (int) (temp ^ (temp >>> 32));
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.java
index b4612d6..f5b3297 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/FloatConstant.java
@@ -22,50 +22,62 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return (byte) this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return (char) this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public float floatValue() {
 		return this.value;
 	}
 
+	@Override
 	public int intValue() {
 		return (int) this.value;
 	}
 
+	@Override
 	public long longValue() {
 		return (long) this.value;
 	}
 
+	@Override
 	public short shortValue() {
 		return (short) this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		return "(float)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_float;
 	}
 
+	@Override
 	public int hashCode() {
 		return Float.floatToIntBits(this.value);
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.java
index 0f478aa..4f2fc40 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ITypeRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,10 +11,16 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.impl;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 
 public interface ITypeRequestor {
 
@@ -35,4 +41,30 @@
 	 * requested type.
 	 */
 	void accept(ISourceType[] sourceType, PackageBinding packageBinding, AccessRestriction accessRestriction);
+
+	/**
+	 * Accept the requested module, could come in in one of 3 different forms:
+	 * <ul>
+	 * <li>{@link IBinaryModule}
+	 * <li>{@link ISourceModule}
+	 * <li>IModule.AutoModule
+	 * </ul>
+	 *
+	 * @since 3.14
+	 */
+	default void accept(IModule module, LookupEnvironment environment) {
+		if (module instanceof ISourceModule) {
+			try {
+				ICompilationUnit compilationUnit = ((ISourceModule) module).getCompilationUnit();
+				if (compilationUnit != null) {
+					accept(compilationUnit, null);
+				}
+			} catch (AbortCompilation abort) {
+				// silent
+			}
+		} else {
+			// handles IBinaryModule and IModule.AutoModule:
+			BinaryModuleBinding.create(module, environment);
+		}
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.java
index 385c8fc..3d8c32b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IntConstant.java
@@ -57,51 +57,63 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return (byte) this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return (char) this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public float floatValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public int intValue() {
 		return this.value;
 	}
 
+	@Override
 	public long longValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public short shortValue() {
 		return (short) this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		//spec 15.17.11
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 		return "(int)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_int;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.value;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
index 430fef2..ed8c8e6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/IrritantSet.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +16,7 @@
  *								bug 374605 - Unreasonable warning for enum-based switch statements
  *								bug 381443 - [compiler][null] Allow parameter widening from @NonNull to unannotated
  *								Bug 441208 - [1.8][null]SuppressWarnings("null") does not suppress / marked Unnecessary
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *******************************************************************************/
 
 package org.aspectj.org.eclipse.jdt.internal.compiler.impl;
@@ -30,14 +32,15 @@
 	// Reserve two high bits for selecting the right bit pattern
 	public final static int GROUP_MASK = ASTNode.Bit32 | ASTNode.Bit31 | ASTNode.Bit30;
 	public final static int GROUP_SHIFT = 29;
-	public final static int GROUP_MAX = 3; // can be increased up to 8
+	public final static int GROUP_MAX = 4; // AspectJ can be increased up to 8
 
 	// Group prefix for irritants
 	public final static int GROUP0 = 0 << GROUP_SHIFT;
 	public final static int GROUP1 = 1 << GROUP_SHIFT;
 	public final static int GROUP2 = 2 << GROUP_SHIFT;
 	// reveal subsequent groups as needed
-	// public final static int GROUP3 = 3 << GROUP_SHIFT;
+	// AspectJ for options in AjCompilerOptions
+	public final static int GROUP3 = 3 << GROUP_SHIFT;
 	// public final static int GROUP4 = 4 << GROUP_SHIFT;
 	// public final static int GROUP5 = 5 << GROUP_SHIFT;
 	// public final static int GROUP6 = 6 << GROUP_SHIFT;
@@ -48,6 +51,7 @@
 	public static final IrritantSet BOXING = new IrritantSet(CompilerOptions.AutoBoxing);
 	public static final IrritantSet CAST = new IrritantSet(CompilerOptions.UnnecessaryTypeCheck);
 	public static final IrritantSet DEPRECATION = new IrritantSet(CompilerOptions.UsingDeprecatedAPI);
+	public static final IrritantSet TERMINAL_DEPRECATION = new IrritantSet(CompilerOptions.UsingTerminallyDeprecatedAPI);
 	public static final IrritantSet DEP_ANN = new IrritantSet(CompilerOptions.MissingDeprecatedAnnotation);
 	public static final IrritantSet FALLTHROUGH = new IrritantSet(CompilerOptions.FallthroughCase);
 	public static final IrritantSet FINALLY = new IrritantSet(CompilerOptions.FinallyBlockNotCompleting);
@@ -67,12 +71,20 @@
 	public static final IrritantSet UNCHECKED = new IrritantSet(CompilerOptions.UncheckedTypeOperation);
 	public static final IrritantSet UNQUALIFIED_FIELD_ACCESS = new IrritantSet(CompilerOptions.UnqualifiedFieldAccess);
 	public static final IrritantSet RESOURCE = new IrritantSet(CompilerOptions.UnclosedCloseable);
+	public static final IrritantSet UNLIKELY_ARGUMENT_TYPE = new IrritantSet(CompilerOptions.UnlikelyCollectionMethodArgumentType);
+	public static final IrritantSet API_LEAK = new IrritantSet(CompilerOptions.APILeak);
+	public static final IrritantSet MODULE = new IrritantSet(CompilerOptions.UnstableAutoModuleName);
 
 	public static final IrritantSet JAVADOC = new IrritantSet(CompilerOptions.InvalidJavadoc);
 	public static final IrritantSet COMPILER_DEFAULT_ERRORS = new IrritantSet(0); // no optional error by default	
 	public static final IrritantSet COMPILER_DEFAULT_WARNINGS = new IrritantSet(0); // see static initializer below
 	public static final IrritantSet COMPILER_DEFAULT_INFOS = new IrritantSet(0); // As of now, no default values
 	static {
+		COMPILER_DEFAULT_INFOS
+		// group-2 infos enabled by default
+		.set(
+			CompilerOptions.UnlikelyEqualsArgumentType);
+		
 		COMPILER_DEFAULT_WARNINGS
 			// group-0 warnings enabled by default
 			.set(
@@ -117,7 +129,11 @@
 				|CompilerOptions.RedundantNullAnnotation
 				|CompilerOptions.NonnullParameterAnnotationDropped
 				|CompilerOptions.PessimisticNullAnalysisForFreeTypeVariables
-				|CompilerOptions.NonNullTypeVariableFromLegacyInvocation);
+				|CompilerOptions.NonNullTypeVariableFromLegacyInvocation
+				|CompilerOptions.UnlikelyCollectionMethodArgumentType
+				|CompilerOptions.UsingTerminallyDeprecatedAPI
+				|CompilerOptions.APILeak
+				|CompilerOptions.UnstableAutoModuleName);
 		// default errors IF AnnotationBasedNullAnalysis is enabled:
 		COMPILER_DEFAULT_ERRORS.set(
 				CompilerOptions.NullSpecViolation
@@ -169,6 +185,9 @@
 		JAVADOC
 			.set(CompilerOptions.MissingJavadocComments)
 			.set(CompilerOptions.MissingJavadocTags);
+
+		UNLIKELY_ARGUMENT_TYPE
+			.set(CompilerOptions.UnlikelyEqualsArgumentType);
 	}
 
 	// Internal state
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.java
index a89780c..a1ca59a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/LongConstant.java
@@ -30,52 +30,64 @@
 	this.value = value;
 }
 
+@Override
 public byte byteValue() {
 	return (byte) this.value;
 }
 
+@Override
 public char charValue() {
 	return (char) this.value;
 }
 
+@Override
 public double doubleValue() {
 	return this.value; // implicit cast to return type
 }
 
+@Override
 public float floatValue() {
 	return this.value; // implicit cast to return type
 }
 
+@Override
 public int intValue() {
 	return (int) this.value;
 }
 
+@Override
 public long longValue() {
 	return this.value;
 }
 
+@Override
 public short shortValue() {
 	return (short) this.value;
 }
 
+@Override
 public String stringValue() {
 	//spec 15.17.11
 	return String.valueOf(this.value);
 }
 
+@Override
 public String toString(){
 
 	return "(long)" + this.value ; //$NON-NLS-1$
 }
 
+@Override
 public int typeID() {
 	return T_long;
 }
 
+@Override
 public int hashCode() {
 	return (int) (this.value ^ (this.value >>> 32));
 }
 
+@Override
 public boolean equals(Object obj) {
 	if (this == obj) {
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.java
index ccfa747..e36fbc0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/ShortConstant.java
@@ -22,52 +22,64 @@
 		this.value = value;
 	}
 
+	@Override
 	public byte byteValue() {
 		return (byte) this.value;
 	}
 
+	@Override
 	public char charValue() {
 		return (char) this.value;
 	}
 
+	@Override
 	public double doubleValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public float floatValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public int intValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public long longValue() {
 		return this.value; // implicit cast to return type
 	}
 
+	@Override
 	public short shortValue() {
 		return this.value;
 	}
 
+	@Override
 	public String stringValue() {
 		// spec 15.17.11
 		return String.valueOf(this.value);
 	}
 
+	@Override
 	public String toString() {
 
 		return "(short)" + this.value; //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_short;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.value;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.java
index 3389e40..2e58359 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/impl/StringConstant.java
@@ -22,6 +22,7 @@
 		this.value = value;
 	}
 
+	@Override
 	public String stringValue() {
 		// spec 15.17.11
 
@@ -32,14 +33,17 @@
 		 */
 	}
 
+	@Override
 	public String toString() {
 		return "(String)\"" + this.value + "\""; //$NON-NLS-2$ //$NON-NLS-1$
 	}
 
+	@Override
 	public int typeID() {
 		return T_JavaLangString;
 	}
 
+	@Override
 	public int hashCode() {
 		final int prime = 31;
 		int result = 1;
@@ -47,6 +51,7 @@
 		return result;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (this == obj) {
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.java
index c96ff45..f08d554 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotatableTypeSystem.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2014 IBM Corporation and others.
+ * Copyright (c) 2013, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,6 +37,7 @@
 	}
 	
 	// Given a type, return all its annotated variants: parameter may be annotated.
+	@Override
 	public TypeBinding[] getAnnotatedTypes(TypeBinding type) {
 		
 		TypeBinding[] derivedTypes = getDerivedTypes(type);
@@ -64,6 +65,7 @@
 	   See ArrayBinding.swapUnresolved for further special case handling if incoming leafType is a URB that would resolve to a raw 
 	   type later.
 	*/
+	@Override
 	public ArrayBinding getArrayType(TypeBinding leafType, int dimensions, AnnotationBinding [] annotations) {
 		if (leafType instanceof ArrayBinding) { // substitution attempts can cause this, don't create array of arrays.
 			dimensions += leafType.dimensions();
@@ -98,16 +100,19 @@
 		return (ArrayBinding) cacheDerivedType(leafType, nakedType, arrayType);
 	}
 
+	@Override
 	public ArrayBinding getArrayType(TypeBinding leaftType, int dimensions) {
 		return getArrayType(leaftType, dimensions, Binding.NO_ANNOTATIONS);
 	}
 
+	@Override
 	public ReferenceBinding getMemberType(ReferenceBinding memberType, ReferenceBinding enclosingType) {
 		if (!haveTypeAnnotations(memberType, enclosingType))
 			return super.getMemberType(memberType, enclosingType);
 		return (ReferenceBinding) getAnnotatedType(memberType, enclosingType, memberType.getTypeAnnotations());
 	}
 	
+	@Override
 	public ParameterizedTypeBinding getParameterizedType(ReferenceBinding genericType, TypeBinding[] typeArguments, ReferenceBinding enclosingType, AnnotationBinding [] annotations) {
 		
 		if (genericType.hasTypeAnnotations())   // @NonNull (List<String>) and not (@NonNull List)<String>
@@ -129,14 +134,18 @@
 		return (ParameterizedTypeBinding) cacheDerivedType(genericType, nakedType, parameterizedType);
 	}
 	
+	@Override
 	public ParameterizedTypeBinding getParameterizedType(ReferenceBinding genericType, TypeBinding[] typeArguments, ReferenceBinding enclosingType) {
 		return getParameterizedType(genericType, typeArguments, enclosingType, Binding.NO_ANNOTATIONS);
 	}
 
+	@Override
 	public RawTypeBinding getRawType(ReferenceBinding genericType, ReferenceBinding enclosingType, AnnotationBinding [] annotations) {
-		
 		if (genericType.hasTypeAnnotations())
 			throw new IllegalStateException();
+		if (genericType.isStatic() && enclosingType != null) {
+			enclosingType = (ReferenceBinding) enclosingType.original();
+		}
 		
 		RawTypeBinding nakedType = null;
 		TypeBinding[] derivedTypes = getDerivedTypes(genericType);
@@ -163,10 +172,12 @@
 		return (RawTypeBinding) cacheDerivedType(genericType, nakedType, rawType);
 	}
 	
+	@Override
 	public RawTypeBinding getRawType(ReferenceBinding genericType, ReferenceBinding enclosingType) {
 		return getRawType(genericType, enclosingType, Binding.NO_ANNOTATIONS);
 	}
 	
+	@Override
 	public WildcardBinding getWildcard(ReferenceBinding genericType, int rank, TypeBinding bound, TypeBinding[] otherBounds, int boundKind, AnnotationBinding [] annotations) {
 		
 		if (genericType == null) // pseudo wildcard denoting composite bounds for lub computation
@@ -176,7 +187,8 @@
 			throw new IllegalStateException();
 		
 		WildcardBinding nakedType = null;
-		TypeBinding[] derivedTypes = getDerivedTypes(genericType);
+		boolean useDerivedTypesOfBound = bound instanceof TypeVariableBinding || (bound instanceof ParameterizedTypeBinding && !(bound instanceof RawTypeBinding)) ;
+		TypeBinding[] derivedTypes = getDerivedTypes(useDerivedTypesOfBound ? bound : genericType);
 		for (int i = 0, length = derivedTypes.length; i < length; i++) {
 			TypeBinding derivedType = derivedTypes[i];
 			if (derivedType == null) 
@@ -200,9 +212,10 @@
 		WildcardBinding wildcard = new WildcardBinding(genericType, rank, bound, otherBounds, boundKind, this.environment);
 		wildcard.id = nakedType.id;
 		wildcard.setTypeAnnotations(annotations, this.isAnnotationBasedNullAnalysisEnabled);
-		return (WildcardBinding) cacheDerivedType(genericType, nakedType, wildcard);
+		return (WildcardBinding) cacheDerivedType(useDerivedTypesOfBound ? bound : genericType, nakedType, wildcard);
 	}
 
+	@Override
 	public WildcardBinding getWildcard(ReferenceBinding genericType, int rank, TypeBinding bound, TypeBinding[] otherBounds, int boundKind) {
 		return getWildcard(genericType, rank, bound, otherBounds, boundKind, Binding.NO_ANNOTATIONS);
 	}
@@ -210,6 +223,7 @@
 	/* Take a type and apply annotations to various components of it. By construction when we see the type reference @Outer Outer.@Middle Middle.@Inner Inner,
 	   we first construct the binding for Outer.Middle.Inner and then annotate various parts of it. Likewise for PQTR's binding.
 	*/
+	@Override
 	public TypeBinding getAnnotatedType(TypeBinding type, AnnotationBinding[][] annotations) {
 		
 		if (type == null || !type.isValidBinding() || annotations == null || annotations.length == 0)
@@ -409,6 +423,7 @@
 		return series;
 	}
 
+	@Override
 	public boolean isAnnotatedTypeSystem() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.java
index 14ef1b9..5a42e52 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -38,12 +38,19 @@
 	if ((annotationTagBits & TagBits.AllStandardAnnotationsMask) == 0) {
 		return recordedAnnotations;
 	}
+	boolean haveDeprecated = false;
+	for (AnnotationBinding annotationBinding : recordedAnnotations) {
+		if (annotationBinding.getAnnotationType().id == TypeIds.T_JavaLangDeprecated) {
+			haveDeprecated = true;
+			break;
+		}
+	}
 	int count = 0;
 	if ((annotationTagBits & TagBits.AnnotationTargetMASK) != 0)
 		count++;
 	if ((annotationTagBits & TagBits.AnnotationRetentionMASK) != 0)
 		count++;
-	if ((annotationTagBits & TagBits.AnnotationDeprecated) != 0)
+	if (!haveDeprecated && (annotationTagBits & TagBits.AnnotationDeprecated) != 0)
 		count++;
 	if ((annotationTagBits & TagBits.AnnotationDocumented) != 0)
 		count++;
@@ -70,24 +77,24 @@
 	if ((annotationTagBits & TagBits.AnnotationRetentionMASK) != 0)
 		result[index++] = buildRetentionAnnotation(annotationTagBits, env);
 	if ((annotationTagBits & TagBits.AnnotationDeprecated) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_DEPRECATED, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_DEPRECATED, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationDocumented) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_ANNOTATION_DOCUMENTED, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_ANNOTATION_DOCUMENTED, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationInherited) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_ANNOTATION_INHERITED, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_ANNOTATION_INHERITED, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationOverride) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_OVERRIDE, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationSuppressWarnings) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_SUPPRESSWARNINGS, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_SUPPRESSWARNINGS, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationPolymorphicSignature) != 0)
-		result[index++] = buildMarkerAnnotationForMemberType(TypeConstants.JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, env);
+		result[index++] = buildMarkerAnnotationForMemberType(TypeConstants.JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, env.javaBaseModule(), env);
 	if ((annotationTagBits & TagBits.AnnotationSafeVarargs) != 0)
-		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_SAFEVARARGS, env);
+		result[index++] = buildMarkerAnnotation(TypeConstants.JAVA_LANG_SAFEVARARGS, env.javaBaseModule(), env);
 	return result;
 }
 
-private static AnnotationBinding buildMarkerAnnotationForMemberType(char[][] compoundName, LookupEnvironment env) {
-	ReferenceBinding type = env.getResolvedType(compoundName, null);
+private static AnnotationBinding buildMarkerAnnotationForMemberType(char[][] compoundName, ModuleBinding module, LookupEnvironment env) {
+	ReferenceBinding type = env.getResolvedType(compoundName, module, null);
 	// since this is a member type name using '$' the return binding is a
 	// problem reference binding with reason ProblemReasons.InternalNameProvided
 	if (!type.isValidBinding()) {
@@ -96,14 +103,14 @@
 	return env.createAnnotation(type, Binding.NO_ELEMENT_VALUE_PAIRS);
 }
 
-private static AnnotationBinding buildMarkerAnnotation(char[][] compoundName, LookupEnvironment env) {
-	ReferenceBinding type = env.getResolvedType(compoundName, null);
+private static AnnotationBinding buildMarkerAnnotation(char[][] compoundName, ModuleBinding module, LookupEnvironment env) {
+	ReferenceBinding type = env.getResolvedType(compoundName, module, null);
 	return env.createAnnotation(type, Binding.NO_ELEMENT_VALUE_PAIRS);
 }
 
 private static AnnotationBinding buildRetentionAnnotation(long bits, LookupEnvironment env) {
 	ReferenceBinding retentionPolicy =
-		env.getResolvedType(TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY,
+		env.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY,
 			null);
 	Object value = null;
 	if ((bits & TagBits.AnnotationRuntimeRetention) == TagBits.AnnotationRuntimeRetention) {
@@ -114,14 +121,14 @@
 		value = retentionPolicy.getField(TypeConstants.UPPER_SOURCE, true);
 	}
 	return env.createAnnotation(
-		env.getResolvedType(TypeConstants.JAVA_LANG_ANNOTATION_RETENTION, null),
+		env.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ANNOTATION_RETENTION, null),
 		new ElementValuePair[] {
 			new ElementValuePair(TypeConstants.VALUE, value, null)
 		});
 }
 
 private static AnnotationBinding buildTargetAnnotation(long bits, LookupEnvironment env) {
-	ReferenceBinding target = env.getResolvedType(TypeConstants.JAVA_LANG_ANNOTATION_TARGET, null);
+	ReferenceBinding target = env.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ANNOTATION_TARGET, null);
 	if ((bits & TagBits.AnnotationTarget) != 0)
 		return new AnnotationBinding(target, Binding.NO_ELEMENT_VALUE_PAIRS);
 
@@ -146,11 +153,15 @@
 		arraysize++;
 	if ((bits & TagBits.AnnotationForTypeParameter) != 0)
 		arraysize++;
+	if ((bits & TagBits.AnnotationForModule) != 0)
+		arraysize++;
 	
 	Object[] value = new Object[arraysize];
 	if (arraysize > 0) {
 		ReferenceBinding elementType = env.getResolvedType(TypeConstants.JAVA_LANG_ANNOTATION_ELEMENTTYPE, null);
 		int index = 0;
+		if ((bits & TagBits.AnnotationForTypeUse) != 0)
+			value[index++] = elementType.getField(TypeConstants.TYPE_USE_TARGET, true);
 		if ((bits & TagBits.AnnotationForAnnotationType) != 0)
 			value[index++] = elementType.getField(TypeConstants.UPPER_ANNOTATION_TYPE, true);
 		if ((bits & TagBits.AnnotationForConstructor) != 0)
@@ -163,8 +174,6 @@
 			value[index++] = elementType.getField(TypeConstants.UPPER_PACKAGE, true);
 		if ((bits & TagBits.AnnotationForParameter) != 0)
 			value[index++] = elementType.getField(TypeConstants.UPPER_PARAMETER, true);
-		if ((bits & TagBits.AnnotationForTypeUse) != 0)
-			value[index++] = elementType.getField(TypeConstants.TYPE_USE_TARGET, true);
 		if ((bits & TagBits.AnnotationForTypeParameter) != 0)
 			value[index++] = elementType.getField(TypeConstants.TYPE_PARAMETER_TARGET, true);
 		if ((bits & TagBits.AnnotationForType) != 0)
@@ -226,6 +235,7 @@
 	}
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(5);
 	buffer.append('@').append(this.type.sourceName);
@@ -244,14 +254,16 @@
 	return buffer.toString();
 }
 
+@Override
 public int hashCode() {
 	int result = 17;
-	int c = this.type.hashCode();
+	int c = this.getAnnotationType().hashCode();
 	result = 31 * result + c;
-	c =  Arrays.hashCode(this.pairs);
+	c =  Arrays.hashCode(this.getElementValuePairs());
 	result = 31 * result + c;
 	return result;
 }
+@Override
 public boolean equals(Object object) {
 	if (this == object)
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder.java
index 35227d1..75d7f6b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AnnotationHolder.java
@@ -57,13 +57,16 @@
 	setAnnotations(annotations);
 	this.parameterAnnotations = parameterAnnotations;
 }
+@Override
 public AnnotationBinding[][] getParameterAnnotations() {
 	return this.parameterAnnotations;
 }
+@Override
 AnnotationBinding[] getParameterAnnotations(int paramIndex) {
 	AnnotationBinding[] result = this.parameterAnnotations == null ? null : this.parameterAnnotations[paramIndex];
 	return result == null ? Binding.NO_ANNOTATIONS : result;
 }
+@Override
 AnnotationHolder setAnnotations(AnnotationBinding[] annotations) {
 	this.annotations = annotations == null || annotations.length == 0 ? Binding.NO_ANNOTATIONS : annotations;
 	return this;
@@ -79,6 +82,7 @@
 	this.defaultValue = defaultValue;
 	this.env = optionalEnv;
 }
+@Override
 Object getDefaultValue() {
 	if (this.defaultValue instanceof UnresolvedReferenceBinding) {
 		if (this.env == null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.java
index 101de45..93402d0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/AptBinaryLocalVariableBinding.java
@@ -10,6 +10,11 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
+import java.util.Arrays;
+import java.util.Objects;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
 public class AptBinaryLocalVariableBinding extends LocalVariableBinding {
 	AnnotationBinding[] annotationBindings;
 	// enclosing element
@@ -21,7 +26,40 @@
 		this.methodBinding = methodBinding;
 	}
 
+	@Override
 	public AnnotationBinding[] getAnnotations() {
 		return this.annotationBindings;
 	}
+
+	@Override
+	public int hashCode() {
+		int result = 17;
+		int c = CharOperation.hashCode(name);
+		result = 31 * result + c;
+		c = this.type.hashCode();
+		result = 31 * result + c;
+		c = modifiers;
+		result = 31 * result + c;
+		c = Arrays.hashCode(this.annotationBindings);
+		result = 31 * result + c;
+		c = methodBinding.hashCode();
+		result = 31 * result + c;
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		AptBinaryLocalVariableBinding other = (AptBinaryLocalVariableBinding) obj;
+		return CharOperation.equals(this.name, other.name)
+				&& Objects.equals(this.type, other.type)
+				&& modifiers==other.modifiers
+				&& Arrays.equals(this.annotationBindings, other.annotationBindings)
+				&& Objects.equals(this.methodBinding, other.methodBinding);
+	}	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.java
index 0cad926..0e3e05d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ArrayBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,8 @@
  *								Bug 438458 - [1.8][null] clean up handling of null type annotations wrt type variables
  *								Bug 440759 - [1.8][null] @NonNullByDefault should never affect wildcards and uses of a type variable
  *								Bug 441693 - [1.8][null] Bogus warning for type argument annotated with @NonNull
+ *     Jesper S Møller - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
+ *								Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -70,6 +72,7 @@
 	}
 }
 
+@Override
 public TypeBinding closestMatch() {
 	if (isValidBinding()) {
 		return this;
@@ -84,6 +87,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#collectMissingTypes(java.util.List)
  */
+@Override
 public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes) {
 	if ((this.tagBits & TagBits.HasMissingType) != 0) {
 		missingTypes = this.leafComponentType.collectMissingTypes(missingTypes);
@@ -91,14 +95,7 @@
 	return missingTypes;
 }
 
-/**
- * Collect the substitutes into a map for certain type variables inside the receiver type
- * e.g.   Collection<T>.collectSubstitutes(Collection<List<X>>, Map), will populate Map with: T --> List<X>
- * Constraints:
- *   A << F   corresponds to:   F.collectSubstitutes(..., A, ..., CONSTRAINT_EXTENDS (1))
- *   A = F   corresponds to:      F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0))
- *   A >> F   corresponds to:   F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2))
-*/
+@Override
 public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint) {
 
 	if ((this.tagBits & TagBits.HasTypeVariable) == 0) return;
@@ -126,10 +123,12 @@
 	return this.leafComponentType.mentionsAny(parameters, idx);
 }
 
+@Override
 void collectInferenceVariables(Set<InferenceVariable> variables) {
 	this.leafComponentType.collectInferenceVariables(variables);
 }
 
+@Override
 TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 	TypeBinding substitutedLeaf = this.leafComponentType.substituteInferenceVariable(var, substituteType);
 	if (TypeBinding.notEquals(substitutedLeaf, this.leafComponentType))
@@ -141,17 +140,14 @@
  * brakets leafUniqueKey
  * p.X[][] --> [[Lp/X;
  */
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	char[] brackets = new char[this.dimensions];
 	for (int i = this.dimensions - 1; i >= 0; i--) brackets[i] = '[';
 	return CharOperation.concat(brackets, this.leafComponentType.computeUniqueKey(isLeaf));
  }
 
-/**
- * Answer the receiver's constant pool name.
- * NOTE: This method should only be used during/after code gen.
- * e.g. '[Ljava/lang/Object;'
- */
+@Override
 public char[] constantPoolName() {
 	if (this.constantPoolName != null)
 		return this.constantPoolName;
@@ -160,6 +156,7 @@
 	for (int i = this.dimensions - 1; i >= 0; i--) brackets[i] = '[';
 	return this.constantPoolName = CharOperation.concat(brackets, this.leafComponentType.signature());
 }
+@Override
 public String debugName() {
 	if (this.hasTypeAnnotations())
 		return annotatedDebugName();
@@ -169,6 +166,7 @@
 	return this.leafComponentType.debugName() + brackets.toString();
 }
 
+@Override
 public String annotatedDebugName() {
 	StringBuffer brackets = new StringBuffer(this.dimensions * 2);
 	brackets.append(this.leafComponentType.annotatedDebugName());
@@ -188,6 +186,7 @@
 	return brackets.toString();
 }
 
+@Override
 public int dimensions() {
 	return this.dimensions;
 }
@@ -217,16 +216,31 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#erasure()
  */
+@Override
 public TypeBinding erasure() {
     TypeBinding erasedType = this.leafComponentType.erasure();
     if (TypeBinding.notEquals(this.leafComponentType, erasedType))
         return this.environment.createArrayType(erasedType, this.dimensions);
     return this;
 }
+
+@Override
+public ArrayBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	TypeBinding leafType = this.leafComponentType.upwardsProjection(scope, mentionedTypeVariables);
+	return scope.environment().createArrayType(leafType, this.dimensions, this.typeAnnotations);
+}
+
+@Override
+public ArrayBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	TypeBinding leafType = this.leafComponentType.downwardsProjection(scope, mentionedTypeVariables);
+	return scope.environment().createArrayType(leafType, this.dimensions, this.typeAnnotations);
+}
+
 public LookupEnvironment environment() {
     return this.environment;
 }
 
+@Override
 public char[] genericTypeSignature() {
 
     if (this.genericTypeSignature == null) {
@@ -237,16 +251,19 @@
     return this.genericTypeSignature;
 }
 
+@Override
 public PackageBinding getPackage() {
 	return this.leafComponentType.getPackage();
 }
 
+@Override
 public int hashCode() {
 	return this.leafComponentType == null ? super.hashCode() : this.leafComponentType.hashCode();
 }
 
 /* Answer true if the receiver type can be assigned to the argument type (right)
 */
+@Override
 public boolean isCompatibleWith(TypeBinding otherType, Scope captureScope) {
 	if (equalsEquals(this, otherType))
 		return true;
@@ -292,7 +309,7 @@
 }
 
 @Override
-public boolean isSubtypeOf(TypeBinding otherType) {
+public boolean isSubtypeOf(TypeBinding otherType, boolean simulatingBugJDK8026527) {
 	if (equalsEquals(this, otherType))
 		return true;
 
@@ -302,7 +319,7 @@
 			if (otherArray.leafComponentType.isBaseType())
 				return false; // relying on the fact that all equal arrays are identical
 			if (this.dimensions == otherArray.dimensions)
-				return this.leafComponentType.isSubtypeOf(otherArray.leafComponentType);
+				return this.leafComponentType.isSubtypeOf(otherArray.leafComponentType, simulatingBugJDK8026527);
 			if (this.dimensions < otherArray.dimensions)
 				return false; // cannot assign 'String[]' into 'Object[][]' but can assign 'byte[][]' into 'Object[]'
 			break;
@@ -318,18 +335,22 @@
 	return false;
 }
 
+@Override
 public boolean isProperType(boolean admitCapture18) {
 	return this.leafComponentType.isProperType(admitCapture18);
 }
 
+@Override
 public int kind() {
 	return ARRAY_TYPE;
 }
 
+@Override
 public TypeBinding leafComponentType(){
 	return this.leafComponentType;
 }
 
+@Override
 public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames) /* java.lang.Object @o.e.j.a.NonNull[] */ {
 	if (this.nullTagBitsPerDimension == null)
 		return shortNames ? shortReadableName() : readableName();
@@ -362,15 +383,12 @@
 * Answer the problem id associated with the receiver.
 * NoError if the receiver is a valid binding.
 */
+@Override
 public int problemId() {
 	return this.leafComponentType.problemId();
 }
-/**
-* Answer the source name for the type.
-* In the case of member types, as the qualified name from its top level type.
-* For example, for a member type N defined inside M & A: "A.M.N".
-*/
 
+@Override
 public char[] qualifiedSourceName() {
 	char[] brackets = new char[this.dimensions * 2];
 	for (int i = this.dimensions * 2 - 1; i >= 0; i -= 2) {
@@ -379,6 +397,7 @@
 	}
 	return CharOperation.concat(this.leafComponentType.qualifiedSourceName(), brackets);
 }
+@Override
 public char[] readableName() /* java.lang.Object[] */ {
 	char[] brackets = new char[this.dimensions * 2];
 	for (int i = this.dimensions * 2 - 1; i >= 0; i -= 2) {
@@ -388,6 +407,7 @@
 	return CharOperation.concat(this.leafComponentType.readableName(), brackets);
 }
 
+@Override
 public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 	this.tagBits |= TagBits.HasTypeAnnotations;
 	if (annotations == null || annotations.length == 0)
@@ -422,6 +442,7 @@
 		this.tagBits |= this.nullTagBitsPerDimension[0]; // outer-most dimension
 	}
 }
+@Override
 public char[] shortReadableName(){
 	char[] brackets = new char[this.dimensions * 2];
 	for (int i = this.dimensions * 2 - 1; i >= 0; i -= 2) {
@@ -430,6 +451,7 @@
 	}
 	return CharOperation.concat(this.leafComponentType.shortReadableName(), brackets);
 }
+@Override
 public char[] sourceName() {
 	char[] brackets = new char[this.dimensions * 2];
 	for (int i = this.dimensions * 2 - 1; i >= 0; i -= 2) {
@@ -438,6 +460,7 @@
 	}
 	return CharOperation.concat(this.leafComponentType.sourceName(), brackets);
 }
+@Override
 public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env) {
 	if (this.leafComponentType == unresolvedType) { //$IDENTITY-COMPARISON$
 		this.leafComponentType = env.convertUnresolvedBinaryToRawType(resolvedType);
@@ -458,9 +481,11 @@
 		this.tagBits |= this.leafComponentType.tagBits & (TagBits.HasTypeVariable | TagBits.HasDirectWildcard | TagBits.HasMissingType | TagBits.HasCapturedWildcard);
 	}
 }
+@Override
 public String toString() {
 	return this.leafComponentType != null ? debugName() : "NULL TYPE ARRAY"; //$NON-NLS-1$
 }
+@Override
 public TypeBinding unannotated() {
 	return this.hasTypeAnnotations() ? this.environment.getUnannotatedType(this) : this;
 }
@@ -501,11 +526,7 @@
 			return originalMethod.signature(); // for codeGen we need to answer the signature of j.l.Object.clone()
 		}
 	};
-	// AspectJ was:
-	// method.modifiers = originalMethod.modifiers;
-	// now:
-	method.modifiers = (originalMethod.modifiers & ~ClassFileConstants.AccProtected) | ClassFileConstants.AccPublic;
-	// End AspectJ
+	method.modifiers = originalMethod.modifiers;
 	method.selector = originalMethod.selector;
 	method.declaringClass = originalMethod.declaringClass; // cannot set array binding as declaring class, will be tweaked in CodeStream.getConstantPoolDeclaringClass()
 	method.typeVariables = Binding.NO_TYPE_VARIABLES;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.java
index fd551bf..5444e8b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BaseTypeBinding.java
@@ -136,21 +136,25 @@
 	/**
 	 * int -> I
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		return constantPoolName();
 	}
 
 	/* Answer the receiver's constant pool name.
 	*/
+	@Override
 	public char[] constantPoolName() {
 
 		return this.constantPoolName;
 	}
 
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return new BaseTypeBinding(this.id, this.simpleName, this.constantPoolName);
 	}
 	
+	@Override
 	public PackageBinding getPackage() {
 
 		return null;
@@ -158,6 +162,7 @@
 	
 	/* Answer true if the receiver type can be assigned to the argument type (right)
 	*/
+	@Override
 	public final boolean isCompatibleWith(TypeBinding right, Scope captureScope) {
 		if (equalsEquals(this, right))
 			return true;
@@ -169,10 +174,12 @@
 		return this == TypeBinding.NULL && !right.isBaseType();
 	}
 	
+	@Override
 	public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 		super.setTypeAnnotations(annotations, false); // never set nullTagBits on base types
 	}
 
+	@Override
 	public TypeBinding unannotated() {
 		if (!this.hasTypeAnnotations())
 			return this;
@@ -201,6 +208,7 @@
 	 * T_null is acting as an unchecked exception
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#isUncheckedException(boolean)
 	 */
+	@Override
 	public boolean isUncheckedException(boolean includeSupertype) {
 		return this == TypeBinding.NULL;
 	}
@@ -208,25 +216,31 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#kind()
 	 */
+	@Override
 	public int kind() {
 		return Binding.BASE_TYPE;
 	}
+	@Override
 	public char[] qualifiedSourceName() {
 		return this.simpleName;
 	}
 
+	@Override
 	public char[] readableName() {
 		return this.simpleName;
 	}
 
+	@Override
 	public char[] shortReadableName() {
 		return this.simpleName;
 	}
 
+	@Override
 	public char[] sourceName() {
 		return this.simpleName;
 	}
 
+	@Override
 	public String toString() {
 		return this.hasTypeAnnotations() ? annotatedDebugName() : new String(readableName());
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.java
new file mode 100644
index 0000000..682801d
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryModuleBinding.java
@@ -0,0 +1,243 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software SE, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
+
+import java.util.HashMap;
+import java.util.stream.Stream;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IService;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
+
+public class BinaryModuleBinding extends ModuleBinding {
+	
+	private static class AutomaticModuleBinding extends ModuleBinding {
+
+		boolean autoNameFromManifest;
+
+		public AutomaticModuleBinding(IModule module, LookupEnvironment existingEnvironment) {
+			super(module.name(), existingEnvironment);
+			existingEnvironment.root.knownModules.put(this.moduleName, this);
+			this.isAuto = true;
+			this.autoNameFromManifest = module.isAutoNameFromManifest();
+			this.requires = Binding.NO_MODULES;
+			this.requiresTransitive = Binding.NO_MODULES;
+			this.exportedPackages = Binding.NO_PACKAGES;
+		}
+		@Override
+		public boolean hasUnstableAutoName() {
+			return !this.autoNameFromManifest;
+		}
+		@Override
+		public ModuleBinding[] getRequiresTransitive() {
+			if (this.requiresTransitive == NO_MODULES) {
+				char[][] autoModules = ((IModuleAwareNameEnvironment)this.environment.nameEnvironment).getAllAutomaticModules();
+				this.requiresTransitive = Stream.of(autoModules)
+					.filter(name -> !CharOperation.equals(name, this.moduleName))
+					.map(name -> this.environment.getModule(name)).filter(m -> m != null)
+					.toArray(ModuleBinding[]::new);
+			}
+			return this.requiresTransitive;
+		}
+		@Override
+		public char[] nameForLookup() {
+			return ANY_NAMED;
+		}
+	}
+	
+	private IPackageExport[] unresolvedExports;
+	private IPackageExport[] unresolvedOpens;
+	private char[][] unresolvedUses;
+	private IService[] unresolvedProvides;
+	
+	/**
+	 * Construct a named module from binary, could be an auto module - or from an info from Java Model.
+	 * <p>
+	 * <strong>precondition:</strong> module must be either IBinaryModule or IModule.AutoModule
+	 * </p>
+	 * <p>
+	 * <strong>Side effects:</strong> adds the new module to root.knownModules and resolves its directives.
+	 * </p>
+	 */
+	public static ModuleBinding create(IModule module, LookupEnvironment existingEnvironment) {
+		if (module.isAutomatic())
+			return new AutomaticModuleBinding(module, existingEnvironment);
+		return new BinaryModuleBinding((IBinaryModule) module, existingEnvironment);
+	}
+
+	private BinaryModuleBinding(IBinaryModule module, LookupEnvironment existingEnvironment) {
+		super(module.name(), existingEnvironment);
+		existingEnvironment.root.knownModules.put(this.moduleName, this);
+		cachePartsFrom(module);
+	}
+	
+	void cachePartsFrom(IBinaryModule module) {
+		if (module.isOpen())
+			this.modifiers |= ClassFileConstants.ACC_OPEN;
+		this.tagBits |= module.getTagBits();
+
+		IModuleReference[] requiresReferences = module.requires();
+		this.requires = new ModuleBinding[requiresReferences.length];
+		this.requiresTransitive = new ModuleBinding[requiresReferences.length];
+		int count = 0;
+		int transitiveCount = 0;
+		for (int i = 0; i < requiresReferences.length; i++) {
+			ModuleBinding requiredModule = this.environment.getModule(requiresReferences[i].name());
+			if (requiredModule != null) {
+				this.requires[count++] = requiredModule;
+				if (requiresReferences[i].isTransitive())
+					this.requiresTransitive[transitiveCount++] = requiredModule;
+			}
+			// TODO(SHMOD): handle null case
+		}
+		if (count < this.requiresTransitive.length)
+			System.arraycopy(this.requires, 0, this.requires = new ModuleBinding[count], 0, count);
+		if (transitiveCount < this.requiresTransitive.length)
+			System.arraycopy(this.requiresTransitive, 0, this.requiresTransitive = new ModuleBinding[transitiveCount], 0, transitiveCount);
+
+		this.unresolvedExports = module.exports();
+		this.unresolvedOpens = module.opens();
+		this.unresolvedUses = module.uses();
+		this.unresolvedProvides = module.provides();
+		if (this.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
+			scanForNullDefaultAnnotation(module);
+		}
+		if ((this.tagBits & TagBits.AnnotationDeprecated) != 0 || this.environment.globalOptions.storeAnnotations) {
+			this.setAnnotations(BinaryTypeBinding.createAnnotations(module.getAnnotations(), this.environment, null), true);
+		}
+	}
+
+	private void scanForNullDefaultAnnotation(IBinaryModule binaryModule) {
+		// trimmed-down version of BinaryTypeBinding.scanForNullDefaultAnnotation()
+		char[][] nonNullByDefaultAnnotationName = this.environment.getNonNullByDefaultAnnotationName();
+		if (nonNullByDefaultAnnotationName == null)
+			return; // not well-configured to use null annotations
+
+		IBinaryAnnotation[] annotations = binaryModule.getAnnotations();
+		if (annotations != null) {
+			int nullness = NO_NULL_DEFAULT;
+			int length = annotations.length;
+			for (int i = 0; i < length; i++) {
+				char[] annotationTypeName = annotations[i].getTypeName();
+				if (annotationTypeName[0] != Util.C_RESOLVED)
+					continue;
+				int typeBit = this.environment.getNullAnnotationBit(BinaryTypeBinding.signature2qualifiedTypeName(annotationTypeName));
+				if (typeBit == TypeIds.BitNonNullByDefaultAnnotation) {
+					// using NonNullByDefault we need to inspect the details of the value() attribute:
+					nullness |= BinaryTypeBinding.getNonNullByDefaultValue(annotations[i], this.environment);
+				}
+			}
+			this.defaultNullness = nullness;
+		}
+	}
+
+	@Override
+	public PackageBinding[] getExports() {
+		if (this.exportedPackages == null && this.unresolvedExports != null)
+			resolvePackages();
+		return super.getExports();
+	}
+	
+	@Override
+	public PackageBinding[] getOpens() {
+		if (this.openedPackages == null && this.unresolvedOpens != null)
+			resolvePackages();
+		return super.getOpens();
+	}
+
+	private void resolvePackages() {
+		this.exportedPackages = new PackageBinding[this.unresolvedExports.length];
+		int count = 0;
+		for (int i = 0; i < this.unresolvedExports.length; i++) {
+			IPackageExport export = this.unresolvedExports[i];
+			PackageBinding declaredPackage = getVisiblePackage(CharOperation.splitOn('.', export.name()));
+			if (declaredPackage != null) {
+				this.exportedPackages[count++] = declaredPackage;
+				if (declaredPackage instanceof SplitPackageBinding)
+					declaredPackage = ((SplitPackageBinding) declaredPackage).getIncarnation(this);
+				if (declaredPackage != null) {
+					declaredPackage.isExported = Boolean.TRUE;
+					recordExportRestrictions(declaredPackage, export.targets());
+				}
+			} else {
+				// TODO(SHMOD): report incomplete module path?
+			}
+		}
+		if (count < this.exportedPackages.length)
+			System.arraycopy(this.exportedPackages, 0, this.exportedPackages = new PackageBinding[count], 0, count);
+		
+		this.openedPackages = new PackageBinding[this.unresolvedOpens.length];
+		count = 0;
+		for (int i = 0; i < this.unresolvedOpens.length; i++) {
+			IPackageExport opens = this.unresolvedOpens[i];
+			PackageBinding declaredPackage = getVisiblePackage(CharOperation.splitOn('.', opens.name()));
+			if (declaredPackage != null) {
+				this.openedPackages[count++] = declaredPackage;
+				if (declaredPackage instanceof SplitPackageBinding)
+					declaredPackage = ((SplitPackageBinding) declaredPackage).getIncarnation(this);
+				if (declaredPackage != null) {
+					recordOpensRestrictions(declaredPackage, opens.targets());
+				}
+			} else {
+				// TODO(SHMOD): report incomplete module path?
+			}
+		}
+		if (count < this.openedPackages.length)
+			System.arraycopy(this.openedPackages, 0, this.openedPackages = new PackageBinding[count], 0, count);
+	}
+	
+	@Override
+	public TypeBinding[] getUses() {
+		if (this.uses == null) {
+			this.uses = new TypeBinding[this.unresolvedUses.length];
+			for (int i = 0; i < this.unresolvedUses.length; i++)
+				this.uses[i] = this.environment.getType(CharOperation.splitOn('.', this.unresolvedUses[i]), this);
+		}
+		return super.getUses();
+	}
+	
+	@Override
+	public TypeBinding[] getServices() {
+		if (this.services == null)
+			resolveServices();
+		return super.getServices();
+	}
+
+	@Override
+	public TypeBinding[] getImplementations(TypeBinding binding) {
+		if (this.implementations == null)
+			resolveServices();
+		return super.getImplementations(binding);
+	}
+	private void resolveServices() {
+		this.services = new TypeBinding[this.unresolvedProvides.length];
+		this.implementations = new HashMap<>();
+		for (int i = 0; i < this.unresolvedProvides.length; i++) {
+			this.services[i] = this.environment.getType(CharOperation.splitOn('.', this.unresolvedProvides[i].name()), this);
+			char[][] implNames = this.unresolvedProvides[i].with();
+			TypeBinding[] impls = new TypeBinding[implNames.length];
+			for (int j = 0; j < implNames.length; j++)
+				impls[j] = this.environment.getType(CharOperation.splitOn('.', implNames[j]), this);
+			this.implementations.put(this.services[i], impls);
+		}
+	}
+	@Override
+	public AnnotationBinding[] getAnnotations() {
+		return retrieveAnnotations(this);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
index 16aae79..11b7256 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,12 +47,15 @@
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.AnnotationInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider.IMethodAnnotationWalker;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.MethodInfoWithAnnotations;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.NonNullDefaultAwareTypeAnnotationWalker;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.TypeAnnotationWalker;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.BooleanConstant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
@@ -73,6 +77,8 @@
 //AspectJ Extension - XXX extending SourceTypeBinding is a HORRIBLE hack, was 'extends ReferenceBinding'
 public class BinaryTypeBinding extends SourceTypeBinding {  
 
+	public static final char[] TYPE_QUALIFIER_DEFAULT = "TypeQualifierDefault".toCharArray(); //$NON-NLS-1$
+
 	private static final IBinaryMethod[] NO_BINARY_METHODS = new IBinaryMethod[0];
 
 	// all of these fields are ONLY guaranteed to be initialized if accessed using their public accessor method
@@ -84,11 +90,13 @@
 //	protected MethodBinding[] methods;
 //	protected ReferenceBinding[] memberTypes;
 //	protected TypeVariableBinding[] typeVariables;
+//  protected ModuleBinding module;
 // End AspectJ Extension
 	private BinaryTypeBinding prototype;
 
 	// For the link with the principle structure
-	protected LookupEnvironment environment;
+	// AspectJ don't shadow SourceTypeBinding.environment
+//	protected LookupEnvironment environment;
 
 	protected SimpleLookupTable storedAnnotations = null; // keys are this ReferenceBinding & its fields and methods, value is an AnnotationHolder
 
@@ -110,7 +118,7 @@
 		}
 	}
 	public ExternalAnnotationStatus externalAnnotationStatus = ExternalAnnotationStatus.NOT_EEA_CONFIGURED; // unless proven differently
-
+	
 static Object convertMemberValue(Object binaryValue, LookupEnvironment env, char[][][] missingTypeNames, boolean resolveEnumConstants) {
 	if (binaryValue == null) return null;
 	if (binaryValue instanceof Constant)
@@ -141,6 +149,7 @@
 	throw new IllegalStateException();
 }
 
+@Override
 public TypeBinding clone(TypeBinding outerType) {
 	BinaryTypeBinding copy = new BinaryTypeBinding(this);
 	copy.enclosingType = (ReferenceBinding) outerType;
@@ -161,6 +170,13 @@
 }
 
 static AnnotationBinding createAnnotation(IBinaryAnnotation annotationInfo, LookupEnvironment env, char[][][] missingTypeNames) {
+	// temporary debug for Bug 532176 - [10] NPE during reconcile
+	if (annotationInfo instanceof AnnotationInfo) {
+		RuntimeException ex = ((AnnotationInfo) annotationInfo).exceptionDuringDecode;
+		if (ex != null)
+			new IllegalStateException("Accessing annotation with decode error", ex).printStackTrace(); //$NON-NLS-1$
+	}
+	//--
 	IBinaryElementValuePair[] binaryPairs = annotationInfo.getElementValuePairs();
 	int length = binaryPairs == null ? 0 : binaryPairs.length;
 	ElementValuePair[] pairs = length == 0 ? Binding.NO_ELEMENT_VALUE_PAIRS : new ElementValuePair[length];
@@ -168,8 +184,10 @@
 		pairs[i] = new ElementValuePair(binaryPairs[i].getName(), convertMemberValue(binaryPairs[i].getValue(), env, missingTypeNames, false), null);
 
 	char[] typeName = annotationInfo.getTypeName();
-	ReferenceBinding annotationType = env.getTypeFromConstantPoolName(typeName, 1, typeName.length - 1, false, missingTypeNames);
-	return env.createUnresolvedAnnotation(annotationType, pairs);
+	LookupEnvironment env2 = annotationInfo.isExternalAnnotation() ? env.root : env;
+	ReferenceBinding annotationType = env2.getTypeFromConstantPoolName(typeName, 1, typeName.length - 1, false,
+			missingTypeNames);
+	return env2.createUnresolvedAnnotation(annotationType, pairs);
 }
 
 public static AnnotationBinding[] createAnnotations(IBinaryAnnotation[] annotationInfos, LookupEnvironment env, char[][][] missingTypeNames) {
@@ -269,7 +287,6 @@
 	this.environment = environment;
 	this.fPackage = packageBinding;
 	this.fileName = binaryType.getFileName();
-
 	/* https://bugs.eclipse.org/bugs/show_bug.cgi?id=324850, even in a 1.4 project, we
 	   must internalize type variables and observe any parameterization of super class
 	   and/or super interfaces in order to be able to detect overriding in the presence
@@ -308,10 +325,15 @@
 	if (needFieldsAndMethods)
 		cachePartsFrom(binaryType, true);
 }
-
+@Override
+public boolean canBeSeenBy(Scope sco) {
+	ModuleBinding mod = sco.module();
+	return mod.canAccess(this.fPackage) && super.canBeSeenBy(sco);
+}
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#availableFields()
  */
+@Override
 public FieldBinding[] availableFields() {
 	
 	if (!isPrototype()) {
@@ -372,6 +394,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#availableMethods()
  */
+@Override
 public MethodBinding[] availableMethods() {
 	
 	if (!isPrototype()) {
@@ -532,12 +555,14 @@
 					FieldBinding field = this.fields[i];
 					if (!field.isDeprecated()) {
 						field.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+						field.tagBits |= this.tagBits & TagBits.AnnotationTerminallyDeprecated;
 					}
 				}
 				for (int i = 0, max = this.methods.length; i < max; i++) {
 					MethodBinding method = this.methods[i];
 					if (!method.isDeprecated()) {
 						method.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+						method.tagBits |= this.tagBits & TagBits.AnnotationTerminallyDeprecated;
 					}
 				}
 			}
@@ -558,12 +583,31 @@
 						if (sourceLevel < ClassFileConstants.JDK1_8)
 							methodWalker = binaryType.enrichWithExternalAnnotationsFor(methodWalker, iMethods[i], this.environment);
 						scanMethodForNullAnnotation(iMethods[i], this.methods[i], methodWalker, canUseNullTypeAnnotations);
+					}
 				}
 			}
 		}
+		if (this.environment.globalOptions.storeAnnotations) {
+			setAnnotations(createAnnotations(binaryType.getAnnotations(), this.environment, missingTypeNames), false);
+		} else if (sourceLevel >= ClassFileConstants.JDK9 && isDeprecated() && binaryType.getAnnotations() != null) {
+			// prior to Java 9 all standard annotations were marker annotations, not needing to be stored,
+			// but since Java 9 we need more information from the @Deprecated annotation:
+			for (IBinaryAnnotation annotation : binaryType.getAnnotations()) {
+				if (annotation.isDeprecatedAnnotation()) {
+					AnnotationBinding[] annotationBindings = createAnnotations(new IBinaryAnnotation[] { annotation }, this.environment, missingTypeNames);
+					setAnnotations(annotationBindings, true); // force storing
+					for (ElementValuePair elementValuePair : annotationBindings[0].getElementValuePairs()) {
+						if (CharOperation.equals(elementValuePair.name, TypeConstants.FOR_REMOVAL)) {
+							if (elementValuePair.value instanceof BooleanConstant && ((BooleanConstant) elementValuePair.value).booleanValue()) {
+								this.tagBits |= TagBits.AnnotationTerminallyDeprecated;
+								markImplicitTerminalDeprecation(this);
+							}
+						}
+					}
+					break;
+				}
+			}
 		}
-		if (this.environment.globalOptions.storeAnnotations)
-			setAnnotations(createAnnotations(binaryType.getAnnotations(), this.environment, missingTypeNames));
 		if (this.isAnnotationType())
 			scanTypeForContainerAnnotation(binaryType, missingTypeNames);
 	} finally {
@@ -574,6 +618,21 @@
 			this.methods = Binding.NO_METHODS;
 	}
 }
+void markImplicitTerminalDeprecation(ReferenceBinding type) {
+	for (ReferenceBinding member : type.memberTypes()) {
+		member.tagBits |= TagBits.AnnotationTerminallyDeprecated;
+		markImplicitTerminalDeprecation(member);
+	}
+	MethodBinding[] methodsOfType = type.unResolvedMethods();
+	if (methodsOfType != null)
+		for (MethodBinding methodBinding : methodsOfType)
+			methodBinding.tagBits |= TagBits.AnnotationTerminallyDeprecated;
+
+	FieldBinding[] fieldsOfType = type.unResolvedFields();
+	if (fieldsOfType != null)
+		for (FieldBinding fieldBinding : fieldsOfType)
+			fieldBinding.tagBits |= TagBits.AnnotationTerminallyDeprecated;
+}
 
 /* When creating a method we need to pass in any default 'nullness' from a @NNBD immediately on this method. */
 private ITypeAnnotationWalker getTypeAnnotationWalker(IBinaryTypeAnnotation[] annotations, int nullness) {
@@ -597,14 +656,15 @@
 }
 
 private int getNullDefaultFrom(IBinaryAnnotation[] declAnnotations) {
+	int result = 0;
 	if (declAnnotations != null) {
 		for (IBinaryAnnotation annotation : declAnnotations) {
 			char[][] typeName = signature2qualifiedTypeName(annotation.getTypeName());
 			if (this.environment.getNullAnnotationBit(typeName) == TypeIds.BitNonNullByDefaultAnnotation)
-				return getNonNullByDefaultValue(annotation);
+				result |= getNonNullByDefaultValue(annotation, this.environment);
 		}
 	}
-	return Binding.NO_NULL_DEFAULT;
+	return result;
 }
 
 private void createFields(IBinaryField[] iFields, IBinaryType binaryType, long sourceLevel, char[][][] missingTypeNames) {
@@ -620,7 +680,7 @@
 			for (int i = 0; i < size; i++) {
 				IBinaryField binaryField = iFields[i];
 				char[] fieldSignature = use15specifics ? binaryField.getGenericSignature() : null;
-				ITypeAnnotationWalker walker = getTypeAnnotationWalker(binaryField.getTypeAnnotations(), Binding.NO_NULL_DEFAULT);
+				ITypeAnnotationWalker walker = getTypeAnnotationWalker(binaryField.getTypeAnnotations(), getNullDefaultFrom(binaryField.getAnnotations()));
 				if (sourceLevel >= ClassFileConstants.JDK1_8) { // below 1.8, external annotations will be attached later
 					walker = binaryType.enrichWithExternalAnnotationsFor(walker, iFields[i], this.environment);
 				}
@@ -635,10 +695,16 @@
 						binaryField.getModifiers() | ExtraCompilerModifiers.AccUnresolved,
 						this,
 						binaryField.getConstant());
+				boolean forceStoreAnnotations = !this.environment.globalOptions.storeAnnotations
+						&& (this.environment.globalOptions.sourceLevel >= ClassFileConstants.JDK9
+						&& binaryField.getAnnotations() != null
+						&& (binaryField.getTagBits() & TagBits.AnnotationDeprecated) != 0);
 				if (firstAnnotatedFieldIndex < 0
-						&& this.environment.globalOptions.storeAnnotations
+						&& (this.environment.globalOptions.storeAnnotations || forceStoreAnnotations)
 						&& binaryField.getAnnotations() != null) {
 					firstAnnotatedFieldIndex = i;
+					if (forceStoreAnnotations)
+						storedAnnotations(true, true); // for Java 9 @Deprecated we need to force storing annotations
 				}
 				field.id = i; // ordinal
 				if (use15specifics)
@@ -654,7 +720,7 @@
 			if (firstAnnotatedFieldIndex >= 0) {
 				for (int i = firstAnnotatedFieldIndex; i <size; i++) {
 					IBinaryField binaryField = iFields[i];
-					this.fields[i].setAnnotations(createAnnotations(binaryField.getAnnotations(), this.environment, missingTypeNames));
+					this.fields[i].setAnnotations(createAnnotations(binaryField.getAnnotations(), this.environment, missingTypeNames), false);
 				}
 			}
 		}
@@ -674,7 +740,8 @@
 		methodModifiers &= ~ClassFileConstants.AccVarargs; // vararg methods are not recognized until 1.5
 	if (isInterface() && (methodModifiers & ClassFileConstants.AccAbstract) == 0) {
 		// see https://bugs.eclipse.org/388954 superseded by https://bugs.eclipse.org/390889
-		if ((methodModifiers & ClassFileConstants.AccStatic) == 0) {
+		if (((methodModifiers & ClassFileConstants.AccStatic) == 0
+				&& (methodModifiers & ClassFileConstants.AccPrivate) == 0)) {
 			// i.e. even at 1.7- we record AccDefaultMethod when reading a 1.8+ interface to avoid errors caused by default methods added to a library
 			methodModifiers |= ExtraCompilerModifiers.AccDefaultMethod;
 		}
@@ -737,6 +804,7 @@
 					while ((nextChar = methodDescriptor[++end]) != Util.C_NAME_END){/*empty*/}
 
 				if (i >= startIndex) {   // skip the synthetic arg if necessary
+					// checking for param specific non-null default is not necessary here as no type arguments are present (application to params themselves is handled by ImplicitNullAnnotationVerifier)
 					parameters[i - startIndex] = this.environment.getTypeFromSignature(methodDescriptor, index, end, false, this, missingTypeNames, walker.toMethodParameter(visibleIdx++));
 					// 'paramAnnotations' line up with 'parameters'
 					// int parameter to method.getParameterAnnotations() include the synthetic arg
@@ -839,8 +907,12 @@
 			} else {
 				java.util.ArrayList types = new java.util.ArrayList(2);
 				short rank = 0;
-				while (wrapper.signature[wrapper.start] != Util.C_PARAM_END)
-					types.add(this.environment.getTypeFromTypeSignature(wrapper, typeVars, this, missingTypeNames, walker.toMethodParameter(rank++)));
+				while (wrapper.signature[wrapper.start] != Util.C_PARAM_END) {
+					IBinaryAnnotation[] binaryParameterAnnotations = method.getParameterAnnotations(rank, this.fileName);
+					ITypeAnnotationWalker updatedWalker = NonNullDefaultAwareTypeAnnotationWalker.updateWalkerForParamNonNullDefault(walker, getNullDefaultFrom(binaryParameterAnnotations), this.environment);
+					types.add(this.environment.getTypeFromTypeSignature(wrapper, typeVars, this, missingTypeNames, updatedWalker.toMethodParameter(rank)));
+					rank++;
+				}
 				wrapper.start++; // skip ')'
 				int numParam = types.size();
 				parameters = new TypeBinding[numParam];
@@ -884,21 +956,28 @@
 		? new MethodBinding(methodModifiers, parameters, exceptions, this)
 		: new MethodBinding(methodModifiers, method.getSelector(), returnType, parameters, exceptions, this);
 	
-	IBinaryAnnotation[] receiverAnnotations = walker.toReceiver().getAnnotationsAtCursor(this.id);
+	IBinaryAnnotation[] receiverAnnotations = walker.toReceiver().getAnnotationsAtCursor(this.id, false);
 	if (receiverAnnotations != null && receiverAnnotations.length > 0) {
 		result.receiver = this.environment.createAnnotatedType(this, createAnnotations(receiverAnnotations, this.environment, missingTypeNames));
 	}
 
-	if (this.environment.globalOptions.storeAnnotations) {
+	boolean forceStoreAnnotations = !this.environment.globalOptions.storeAnnotations
+										&& (this.environment.globalOptions.sourceLevel >= ClassFileConstants.JDK9
+										&& method instanceof MethodInfoWithAnnotations
+										&& (method.getTagBits() & TagBits.AnnotationDeprecated) != 0);
+	if (this.environment.globalOptions.storeAnnotations || forceStoreAnnotations) {
+		if (forceStoreAnnotations)
+			storedAnnotations(true, true); // for Java 9 @Deprecated we need to force storing annotations
 		IBinaryAnnotation[] annotations = method.getAnnotations();
-	    if (annotations == null || annotations.length == 0)
-	    	if (method.isConstructor())
-	    		annotations = walker.toMethodReturn().getAnnotationsAtCursor(this.id); // FIXME: When both exist, order could become an issue.
+		if (method.isConstructor()) {
+			IBinaryAnnotation[] tAnnotations = walker.toMethodReturn().getAnnotationsAtCursor(this.id, false);
+			result.setTypeAnnotations(createAnnotations(tAnnotations, this.environment, missingTypeNames));
+		}
 		result.setAnnotations(
-			createAnnotations(annotations, this.environment, missingTypeNames),
-			paramAnnotations,
-			isAnnotationType() ? convertMemberValue(method.getDefaultValue(), this.environment, missingTypeNames, true) : null,
-			this.environment);
+				createAnnotations(annotations, this.environment, missingTypeNames),
+				paramAnnotations,
+				isAnnotationType() ? convertMemberValue(method.getDefaultValue(), this.environment, missingTypeNames, true) : null,
+						this.environment);
 	}
 
 	if (argumentNames != null) result.parameterNames = argumentNames;
@@ -1007,7 +1086,7 @@
 						int colon = CharOperation.indexOf(Util.C_COLON, typeSignature, i);
 						char[] variableName = CharOperation.subarray(typeSignature, i, colon);
 						TypeVariableBinding typeVariable = new TypeVariableBinding(variableName, this, rank, this.environment);
-						AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.toTypeParameter(isClassTypeParameter, rank++).getAnnotationsAtCursor(0), 
+						AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.toTypeParameter(isClassTypeParameter, rank++).getAnnotationsAtCursor(0, false), 
 																										this.environment, missingTypeNames);
 						if (annotations != null && annotations != Binding.NO_ANNOTATIONS)
 							typeVariable.setTypeAnnotations(annotations, this.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled);
@@ -1035,6 +1114,7 @@
 *
 * NOTE: enclosingType of a binary type is resolved when needed
 */
+@Override
 public ReferenceBinding enclosingType() {  // should not delegate to prototype.
 	if ((this.tagBits & TagBits.HasUnresolvedEnclosingType) == 0)
 		return this.enclosingType;
@@ -1045,6 +1125,7 @@
 	return this.enclosingType;
 }
 // NOTE: the type of each field of a binary type is resolved when needed
+@Override
 public FieldBinding[] fields() {
 	
 	if (!isPrototype()) {
@@ -1127,6 +1208,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#genericTypeSignature()
  */
+@Override
 public char[] genericTypeSignature() {
 	if (!isPrototype())
 		return this.prototype.computeGenericTypeSignature(this.typeVariables);
@@ -1134,6 +1216,7 @@
 }
 
 //NOTE: the return type, arg & exception types of each method of a binary type are resolved when needed
+@Override
 public MethodBinding getExactConstructor(TypeBinding[] argumentTypes) {
 
 	if (!isPrototype())
@@ -1166,6 +1249,7 @@
 
 //NOTE: the return type, arg & exception types of each method of a binary type are resolved when needed
 //searches up the hierarchy as long as no potential (but not exact) match was found.
+@Override
 public MethodBinding getExactMethod(char[] selector, TypeBinding[] argumentTypes, CompilationUnitScope refScope) {
 	// sender from refScope calls recordTypeReference(this)
 
@@ -1214,6 +1298,7 @@
 	return null;
 }
 //NOTE: the type of a field of a binary type is resolved when needed
+@Override
 public FieldBinding getFieldBase(char[] fieldName, boolean needResolve) { // AspectJ Extension - added Base to name
 	if (!isPrototype())
 		return this.prototype.getField(fieldName, needResolve);
@@ -1231,6 +1316,7 @@
 /**
  *  Rewrite of default memberTypes() to avoid resolving eagerly all member types when one is requested
  */
+@Override
 public ReferenceBinding getMemberType(char[] typeName) {
 
 	if (!isPrototype()) {
@@ -1253,7 +1339,8 @@
 	return null;
 }
 // NOTE: the return type, arg & exception types of each method of a binary type are resolved when needed
-public MethodBinding[] getMethodsBase(char[] selector) { // AspectJ Extension - added Base to name
+@Override
+public MethodBinding[] getMethodsBase(char[] selector) { // AspectJ Extension - added Base to name 
 
 	if (!isPrototype())
 		return this.prototype.getMethods(selector);
@@ -1334,12 +1421,15 @@
 	}
 	return Binding.NO_METHODS;
 }
+
+@Override
 public boolean hasMemberTypes() {
 	if (!isPrototype())
 		return this.prototype.hasMemberTypes();
     return this.memberTypes.length > 0;
 }
 // NOTE: member types of binary types are resolved when needed
+@Override
 public TypeVariableBinding getTypeVariable(char[] variableName) {
 	if (!isPrototype())
 		return this.prototype.getTypeVariable(variableName);
@@ -1348,6 +1438,7 @@
 	if (variable!=null) variable.resolve(); // AspectJ Extension - guard added
 	return variable;
 }
+@Override
 public boolean hasTypeBit(int bit) {
 	
 	if (!isPrototype())
@@ -1374,7 +1465,7 @@
 	ReferenceBinding type, firstBound = null;
 	short rank = 0;
 	if (wrapper.signature[wrapper.start] == Util.C_COLON) {
-		type = this.environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null);
+		type = this.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null);
 		rank++;
 	} else {
 		TypeBinding typeFromTypeSignature = this.environment.getTypeFromTypeSignature(wrapper, existingVariables, this, missingTypeNames, walker.toTypeBound(rank++));
@@ -1382,7 +1473,7 @@
 			type = (ReferenceBinding) typeFromTypeSignature;
 		} else {
 			// this should only happen if the signature is corrupted (332423)
-			type = this.environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null);
+			type = this.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null);
 		}
 		firstBound = type;
 	}
@@ -1412,6 +1503,7 @@
  * Returns true if a type is identical to another one,
  * or for generic types, true if compared to its raw type.
  */
+@Override
 public boolean isEquivalentTo(TypeBinding otherType) {
 	
 	if (TypeBinding.equalsEquals(this, otherType)) return true;
@@ -1433,6 +1525,7 @@
 	}
 	return false;
 }
+@Override
 public boolean isGenericType() {
 	
 	if (!isPrototype())
@@ -1440,6 +1533,7 @@
 	
     return this.typeVariables != Binding.NO_TYPE_VARIABLES;
 }
+@Override
 public boolean isHierarchyConnected() {
 	
 	if (!isPrototype())
@@ -1447,10 +1541,12 @@
 	
 	return (this.tagBits & (TagBits.HasUnresolvedSuperclass | TagBits.HasUnresolvedSuperinterfaces)) == 0;
 }
+@Override
 public boolean isRepeatableAnnotationType() {
 	if (!isPrototype()) throw new IllegalStateException();
 	return this.containerAnnotationType != null;
 }
+@Override
 public int kind() {
 	
 	if (!isPrototype())
@@ -1461,6 +1557,7 @@
 	return Binding.TYPE;
 }
 // NOTE: member types of binary types are resolved when needed
+@Override
 public ReferenceBinding[] memberTypes() {
  	if (!isPrototype()) {
 		if ((this.tagBits & TagBits.HasUnresolvedMemberTypes) == 0)
@@ -1485,6 +1582,7 @@
 	return this.memberTypes;
 }
 // NOTE: the return type, arg & exception types of each method of a binary type are resolved when needed
+@Override
 public MethodBinding[] methodsBase() { // AspectJ Extension - added Base suffix
 	
 	if (!isPrototype()) {
@@ -1507,15 +1605,18 @@
 	return this.methods;
 }
 
+@Override
 public TypeBinding prototype() {
 	return this.prototype;
 }
 
-// AspectJ Extension: made public
-public /*private*/ boolean isPrototype() {
+// AspectJ Extension: made public not private
+@Override
+public boolean isPrototype() {
 	return this == this.prototype; //$IDENTITY-COMPARISON$
 }
 
+@Override
 public ReferenceBinding containerAnnotationType() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.containerAnnotationType instanceof UnresolvedReferenceBinding) {
@@ -1525,6 +1626,7 @@
 }
 
 // AspectJ extension - raised to public from private
+@Override
 public FieldBinding resolveTypeFor(FieldBinding field) {
 	
 	if (!isPrototype())
@@ -1541,6 +1643,7 @@
 	field.modifiers &= ~ExtraCompilerModifiers.AccUnresolved;
 	return field;
 }
+@Override
 public MethodBinding resolveTypesFor(MethodBinding method) { // AspectJ Extension - raised to public
 	
 	if (!isPrototype())
@@ -1576,6 +1679,7 @@
 	method.modifiers &= ~ExtraCompilerModifiers.AccUnresolved;
 	return method;
 }
+@Override
 AnnotationBinding[] retrieveAnnotations(Binding binding) {
 	
 	if (!isPrototype())
@@ -1584,30 +1688,34 @@
 	return AnnotationBinding.addStandardAnnotations(super.retrieveAnnotations(binding), binding.getAnnotationTagBits(), this.environment);
 }
 
+@Override
 public void setContainerAnnotationType(ReferenceBinding value) {
 	if (!isPrototype()) throw new IllegalStateException();
 	this.containerAnnotationType = value;
 }
 
+@Override
 public void tagAsHavingDefectiveContainerType() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.containerAnnotationType != null && this.containerAnnotationType.isValidBinding())
 		this.containerAnnotationType = new ProblemReferenceBinding(this.containerAnnotationType.compoundName, this.containerAnnotationType, ProblemReasons.DefectiveContainerAnnotationType);
 }
 
-SimpleLookupTable storedAnnotations(boolean forceInitialize) {
+@Override
+SimpleLookupTable storedAnnotations(boolean forceInitialize, boolean forceStore) {
 	
 	if (!isPrototype())
-		return this.prototype.storedAnnotations(forceInitialize);
+		return this.prototype.storedAnnotations(forceInitialize, forceStore);
 	
 	if (forceInitialize && this.storedAnnotations == null) {
-		if (!this.environment.globalOptions.storeAnnotations)
+		if (!this.environment.globalOptions.storeAnnotations && !forceStore)
 			return null; // not supported during this compile
 		this.storedAnnotations = new SimpleLookupTable(3);
 	}
 	return this.storedAnnotations;
 }
 // AspectJ Extension - empty implementation here to stop super implementation running
+@Override
 public void initializeDeprecatedAnnotationTagBits() {
 	// this method intentionally left empty
 }
@@ -1628,9 +1736,14 @@
 		if (fieldType != null
 				&& !fieldType.isBaseType()
 				&& (fieldType.tagBits & TagBits.AnnotationNullMASK) == 0
-				&& fieldType.acceptsNonNullDefault()
-				&& hasNonNullDefaultFor(DefaultLocationField, true)) {
-			fieldBinding.type = this.environment.createAnnotatedType(fieldType, new AnnotationBinding[]{this.environment.getNonNullAnnotation()});
+				&& fieldType.acceptsNonNullDefault()) {
+				int nullDefaultFromField = getNullDefaultFrom(field.getAnnotations());
+				if (nullDefaultFromField == Binding.NO_NULL_DEFAULT
+						? hasNonNullDefaultFor(DefaultLocationField, -1)
+						: (nullDefaultFromField & DefaultLocationField) != 0) {
+					fieldBinding.type = this.environment.createAnnotatedType(fieldType,
+							new AnnotationBinding[] { this.environment.getNonNullAnnotation() });
+				}
 		}
 		return; // not using fieldBinding.tagBits when we have type annotations.
 	}
@@ -1642,7 +1755,7 @@
 
 	boolean explicitNullness = false;
 	IBinaryAnnotation[] annotations = externalAnnotationWalker != ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER
-											? externalAnnotationWalker.getAnnotationsAtCursor(fieldBinding.type.id) 
+											? externalAnnotationWalker.getAnnotationsAtCursor(fieldBinding.type.id, false) 
 											: field.getAnnotations();
 	if (annotations != null) {
 		for (int i = 0; i < annotations.length; i++) {
@@ -1664,8 +1777,12 @@
 	}
 	if (explicitNullness && this.externalAnnotationStatus.isPotentiallyUnannotatedLib())
 		this.externalAnnotationStatus = ExternalAnnotationStatus.TYPE_IS_ANNOTATED;
-	if (!explicitNullness && (this.tagBits & TagBits.AnnotationNonNullByDefault) != 0) {
-		fieldBinding.tagBits |= TagBits.AnnotationNonNull;
+	if (!explicitNullness) {
+		int nullDefaultFromField = getNullDefaultFrom(field.getAnnotations());
+		if (nullDefaultFromField == Binding.NO_NULL_DEFAULT ? hasNonNullDefaultFor(DefaultLocationField, -1)
+				: (nullDefaultFromField & DefaultLocationField) != 0) {
+			fieldBinding.tagBits |= TagBits.AnnotationNonNull;
+		}
 	}
 }
 
@@ -1695,27 +1812,19 @@
 	// return:
 	ITypeAnnotationWalker returnWalker = externalAnnotationWalker.toMethodReturn();
 	IBinaryAnnotation[] annotations = returnWalker != ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER
-								? returnWalker.getAnnotationsAtCursor(methodBinding.returnType.id)
+								? returnWalker.getAnnotationsAtCursor(methodBinding.returnType.id, false)
 								: method.getAnnotations();
 	if (annotations != null) {
+		int methodDefaultNullness = NO_NULL_DEFAULT;
 		for (int i = 0; i < annotations.length; i++) {
 			char[] annotationTypeName = annotations[i].getTypeName();
 			if (annotationTypeName[0] != Util.C_RESOLVED)
 				continue;
 			int typeBit = this.environment.getNullAnnotationBit(signature2qualifiedTypeName(annotationTypeName));
 			if (typeBit == TypeIds.BitNonNullByDefaultAnnotation) {
-					methodBinding.defaultNullness = getNonNullByDefaultValue(annotations[i]);
-				if (methodBinding.defaultNullness == Binding.NULL_UNSPECIFIED_BY_DEFAULT) {
-					methodBinding.tagBits |= TagBits.AnnotationNullUnspecifiedByDefault;
-				} else if (methodBinding.defaultNullness != 0) {
-					methodBinding.tagBits |= TagBits.AnnotationNonNullByDefault;
-					if (methodBinding.defaultNullness == Binding.NONNULL_BY_DEFAULT && this.environment.usesNullTypeAnnotations()) {
-						// reading a decl-nnbd in a project using type annotations, mimic corresponding semantics by enumerating:
-						methodBinding.defaultNullness |= Binding.DefaultLocationParameter | Binding.DefaultLocationReturnType;
-					}
-				}
+				methodDefaultNullness |= getNonNullByDefaultValue(annotations[i], this.environment);
 			} else if (typeBit == TypeIds.BitNonNullAnnotation) {
-					methodBinding.tagBits |= TagBits.AnnotationNonNull;
+				methodBinding.tagBits |= TagBits.AnnotationNonNull;
 				if (this.environment.usesNullTypeAnnotations()) {
 					if (methodBinding.returnType != null && !methodBinding.returnType.hasNullTypeAnnotations()) {
 						methodBinding.returnType = this.environment.createAnnotatedType(methodBinding.returnType,
@@ -1723,15 +1832,16 @@
 					}
 				}
 			} else if (typeBit == TypeIds.BitNullableAnnotation) {
-					methodBinding.tagBits |= TagBits.AnnotationNullable;
+				methodBinding.tagBits |= TagBits.AnnotationNullable;
 				if (this.environment.usesNullTypeAnnotations()) {
 					if (methodBinding.returnType != null && !methodBinding.returnType.hasNullTypeAnnotations()) {
 						methodBinding.returnType = this.environment.createAnnotatedType(methodBinding.returnType,
 								new AnnotationBinding[] { this.environment.getNullableAnnotation() });
+					}
+				}
 			}
 		}
-	}
-		}
+		methodBinding.defaultNullness = methodDefaultNullness;
 	}
 
 	// parameters:
@@ -1746,7 +1856,7 @@
 				int startIndex = numParamAnnotations - numVisibleParams;
 				ITypeAnnotationWalker parameterWalker = externalAnnotationWalker.toMethodParameter((short) (j+startIndex));
 				IBinaryAnnotation[] paramAnnotations = parameterWalker != ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER
-															? parameterWalker.getAnnotationsAtCursor(parameters[j].id)
+															? parameterWalker.getAnnotationsAtCursor(parameters[j].id, false)
 															: method.getParameterAnnotations(j+startIndex, this.fileName);
 				if (paramAnnotations != null) {
 					for (int i = 0; i < paramAnnotations.length; i++) {
@@ -1814,7 +1924,6 @@
 	IBinaryAnnotation[] annotations = binaryType.getAnnotations();
 	boolean isPackageInfo = CharOperation.equals(sourceName(), TypeConstants.PACKAGE_INFO_NAME);
 	if (annotations != null) {
-		long annotationBit = 0L;
 		int nullness = NO_NULL_DEFAULT;
 		int length = annotations.length;
 		for (int i = 0; i < length; i++) {
@@ -1823,90 +1932,72 @@
 				continue;
 			int typeBit = this.environment.getNullAnnotationBit(signature2qualifiedTypeName(annotationTypeName));
 			if (typeBit == TypeIds.BitNonNullByDefaultAnnotation) {
-					// using NonNullByDefault we need to inspect the details of the value() attribute:
-					nullness = getNonNullByDefaultValue(annotations[i]);
-					if (nullness == NULL_UNSPECIFIED_BY_DEFAULT) {
-						annotationBit = TagBits.AnnotationNullUnspecifiedByDefault;
-					} else if (nullness != 0) {
-						annotationBit = TagBits.AnnotationNonNullByDefault;
-					if (nullness == Binding.NONNULL_BY_DEFAULT && this.environment.usesNullTypeAnnotations()) {
-						// reading a decl-nnbd in a project using type annotations, mimic corresponding semantics by enumerating:
-						nullness |= Binding.DefaultLocationParameter | Binding.DefaultLocationReturnType | Binding.DefaultLocationField;
-					}
-					}	
-					this.defaultNullness = nullness;
-					break;
-				}
+				// using NonNullByDefault we need to inspect the details of the value() attribute:
+				nullness |= getNonNullByDefaultValue(annotations[i], this.environment);
+			}
 		}
-		if (annotationBit != 0L) {
-			this.tagBits |= annotationBit;
+		this.defaultNullness = nullness;
+		if (nullness != NO_NULL_DEFAULT) {
 			if (isPackageInfo)
-				packageBinding.defaultNullness = nullness;
+				packageBinding.setDefaultNullness(nullness);
 			return;
 		}
 	}
 	if (isPackageInfo) {
 		// no default annotations found in package-info
-		packageBinding.defaultNullness = Binding.NO_NULL_DEFAULT;
+		packageBinding.setDefaultNullness(Binding.NO_NULL_DEFAULT);
 		return;
 	}
 	ReferenceBinding enclosingTypeBinding = this.enclosingType;
 	if (enclosingTypeBinding != null) {
-		if (setNullDefault(enclosingTypeBinding.tagBits, enclosingTypeBinding.getNullDefault()))
-				return;
-			}
+		if (setNullDefault(enclosingTypeBinding.getNullDefault()))
+			return;
+	}
 	// no annotation found on the type or its enclosing types
 	// check the package-info for default annotation if not already done before
-	if (packageBinding.defaultNullness == Binding.NO_NULL_DEFAULT && !isPackageInfo
+	if (packageBinding.getDefaultNullness() == Binding.NO_NULL_DEFAULT && !isPackageInfo
 			&& ((this.typeBits & (TypeIds.BitAnyNullAnnotation)) == 0))
 	{
 		// this will scan the annotations in package-info
-		ReferenceBinding packageInfo = packageBinding.getType(TypeConstants.PACKAGE_INFO_NAME);
+		ReferenceBinding packageInfo = packageBinding.getType(TypeConstants.PACKAGE_INFO_NAME, packageBinding.enclosingModule);
 		if (packageInfo == null) {
-			packageBinding.defaultNullness = Binding.NO_NULL_DEFAULT;
+			packageBinding.setDefaultNullness(Binding.NO_NULL_DEFAULT);
 		}
 	}
 	// no @NonNullByDefault at type level, check containing package:
-	setNullDefault(0L, packageBinding.defaultNullness);
-		}
+	setNullDefault(packageBinding.getDefaultNullness());
+}
 
-boolean setNullDefault(long oldNullTagBits, int newNullDefault) {
+boolean setNullDefault(int newNullDefault) {
 	this.defaultNullness = newNullDefault;
-	if (newNullDefault != 0) {
-		if (newNullDefault == Binding.NULL_UNSPECIFIED_BY_DEFAULT)
-			this.tagBits |= TagBits.AnnotationNullUnspecifiedByDefault;
-		else
-			this.tagBits |= TagBits.AnnotationNonNullByDefault;
+	if (newNullDefault != Binding.NO_NULL_DEFAULT) {
 		return true;
 	}
-	if ((oldNullTagBits & TagBits.AnnotationNonNullByDefault) != 0) {
-		this.tagBits |= TagBits.AnnotationNonNullByDefault;
-		return true;
-	} else if ((oldNullTagBits & TagBits.AnnotationNullUnspecifiedByDefault) != 0) {
-		this.tagBits |= TagBits.AnnotationNullUnspecifiedByDefault;
-		return true;
-}
 	return false;
 }
 
 /** given an application of @NonNullByDefault convert the annotation argument (if any) into a bitvector a la {@link Binding#NullnessDefaultMASK} */
 // pre: null annotation analysis is enabled
-int getNonNullByDefaultValue(IBinaryAnnotation annotation) {
+static int getNonNullByDefaultValue(IBinaryAnnotation annotation, LookupEnvironment environment) {
+
 	char[] annotationTypeName = annotation.getTypeName();
 	char[][] typeName = signature2qualifiedTypeName(annotationTypeName);
 	IBinaryElementValuePair[] elementValuePairs = annotation.getElementValuePairs();
 	if (elementValuePairs == null || elementValuePairs.length == 0 ) {
 		// no argument: apply default default
-		ReferenceBinding annotationType = this.environment.getType(typeName);
+		ReferenceBinding annotationType = environment.getType(typeName, environment.UnNamedModule); // TODO(SHMOD): null annotations from a module?
 		if (annotationType == null) return 0;
 		if (annotationType.isUnresolvedType())
-			annotationType = ((UnresolvedReferenceBinding) annotationType).resolve(this.environment, false);
+			annotationType = ((UnresolvedReferenceBinding) annotationType).resolve(environment, false);
+		int nullness = evaluateTypeQualifierDefault(annotationType);
+		if (nullness != 0)
+			return nullness;
 		MethodBinding[] annotationMethods = annotationType.methods();
 		if (annotationMethods != null && annotationMethods.length == 1) {
 			Object value = annotationMethods[0].getDefaultValue();
 			return Annotation.nullLocationBitsFromAnnotationValue(value);
 		}
-		return NONNULL_BY_DEFAULT; // custom unconfigurable NNBD
+		return DefaultLocationsForTrueValue; // custom unconfigurable NNBD
 	} else if (elementValuePairs.length > 0) {
 		// evaluate the contained EnumConstantSignatures:
 		int nullness = 0;
@@ -1919,7 +2010,33 @@
 	}
 }
 
-private char[][] signature2qualifiedTypeName(char[] typeSignature) {
+public static int evaluateTypeQualifierDefault(ReferenceBinding annotationType) {
+	for (AnnotationBinding annotationOnAnnotation : annotationType.getAnnotations()) {
+		if(CharOperation.equals(annotationOnAnnotation.getAnnotationType().compoundName[annotationOnAnnotation.type.compoundName.length-1], TYPE_QUALIFIER_DEFAULT)) {
+			ElementValuePair[] pairs2 = annotationOnAnnotation.getElementValuePairs();
+			if(pairs2 != null) {
+				for (ElementValuePair elementValuePair : pairs2) {
+					char[] name = elementValuePair.getName();
+					if(CharOperation.equals(name, TypeConstants.VALUE)) {
+						int nullness = 0;
+						Object value = elementValuePair.getValue();
+						if(value instanceof Object[]) {
+							Object[] values = (Object[]) value;
+							for (Object value1 : values)
+								nullness |= Annotation.nullLocationBitsFromElementTypeAnnotationValue(value1);
+						} else {
+							nullness |= Annotation.nullLocationBitsFromElementTypeAnnotationValue(value);								
+						}
+						return nullness;
+					}
+				}
+			}
+		}
+	}
+	return 0;
+}
+
+static char[][] signature2qualifiedTypeName(char[] typeSignature) {
 	return CharOperation.splitOn('/', typeSignature, 1, typeSignature.length-1); // cut off leading 'L' and trailing ';'
 }
 
@@ -1953,6 +2070,7 @@
 *
 * NOTE: superclass of a binary type is resolved when needed
 */
+@Override
 public ReferenceBinding superclass() {
 	
 	if (!isPrototype()) {
@@ -1984,6 +2102,7 @@
 	return this.superclass;
 }
 // NOTE: superInterfaces of binary types are resolved when needed
+@Override
 public ReferenceBinding[] superInterfaces() {
 	
 	if (!isPrototype()) {
@@ -2021,6 +2140,7 @@
 	this.tagBits &= ~TagBits.HasUnresolvedSuperinterfaces;
 	return this.superInterfaces;
 }
+@Override
 public TypeVariableBinding[] typeVariables() {
 	
 	if (!isPrototype()) {
@@ -2034,6 +2154,7 @@
 	this.tagBits &= ~TagBits.HasUnresolvedTypeVariables;
 	return this.typeVariables;
 }
+@Override
 public String toString() {
 	
 	if (this.hasTypeAnnotations())
@@ -2125,18 +2246,20 @@
 	return buffer.toString();
 }
 
+@Override
 public TypeBinding unannotated() {
 	return this.prototype;
 }
+@Override
 public TypeBinding withoutToplevelNullAnnotation() {
-		if (!hasNullTypeAnnotations())
-			return this;
-		AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
-		if (newAnnotations.length > 0)
-			return this.environment.createAnnotatedType(this.prototype, newAnnotations);
+	if (!hasNullTypeAnnotations())
+		return this;
+	AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
+	if (newAnnotations.length > 0)
+		return this.environment.createAnnotatedType(this.prototype, newAnnotations);
 	return this.prototype;
 }
-
+@Override
 MethodBinding[] unResolvedMethods() { // for the MethodVerifier so it doesn't resolve types
 	
 	if (!isPrototype())
@@ -2145,6 +2268,7 @@
 	return this.methods;
 }
 
+@Override
 public FieldBinding[] unResolvedFields() {
 	
 	if (!isPrototype())
@@ -2152,11 +2276,19 @@
 	
 	return this.fields;
 }
+@Override
+public ModuleBinding module() {
+	if (!isPrototype())
+		return this.prototype.module;
+	return this.module;
+}
 
 //AspectJ Extension
+@Override
 public MethodBinding[] methods() {
 	   if (memberFinder!=null) return memberFinder.methods(this);
 	   else return methodsBase();
 }
+
 //End AspectJ Extension
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.java
index 494f241..9670079 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Binding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,6 +28,7 @@
 	public static final int METHOD = ASTNode.Bit4;
 	public static final int PACKAGE = ASTNode.Bit5;
 	public static final int IMPORT = ASTNode.Bit6;
+	public static final int MODULE = ASTNode.Bit7;
 	public static final int ARRAY_TYPE = TYPE | ASTNode.Bit7;
 	public static final int BASE_TYPE = TYPE | ASTNode.Bit8;
 	public static final int PARAMETERIZED_TYPE = TYPE | ASTNode.Bit9;
@@ -44,6 +45,8 @@
 	// In the unlikely event you add a new type binding, remember to update TypeBindingVisitor and Scope.substitute methods. 
 
 	// Shared binding collections
+	public static final ModuleBinding[] NO_MODULES = new ModuleBinding[0];
+	public static final PackageBinding[] NO_PACKAGES = new PackageBinding[0];
 	public static final TypeBinding[] NO_TYPES = new TypeBinding[0];
 	public static final ReferenceBinding[] NO_REFERENCE_TYPES = new ReferenceBinding[0];
 	public static final TypeBinding[] NO_PARAMETERS = new TypeBinding[0];
@@ -67,8 +70,11 @@
 
 	// Nullness defaults:
 	public static final int NO_NULL_DEFAULT = 0;
-	// SE5 style:
-	public static final int NONNULL_BY_DEFAULT = 1;
+
+	// not used any longer (was in the old implementation when NonNullByDefault only supported a boolean arg)
+	// corresponds to #DefaultLocationsForTrueValue
+	// public static final int NONNULL_BY_DEFAULT = 1;
+
 	public static final int NULL_UNSPECIFIED_BY_DEFAULT = 2;
 	// JSR308 style:
 	/**
@@ -97,10 +103,11 @@
 	public static final int DefaultLocationTypeBound = ASTNode.Bit9;
 	/**
 	 * Bit in defaultNullness bit vectors, representing the enum constant DefaultLocation#ARRAY_CONTENTS
-	 * TODO: this constant is not yet used, due to difficulty to discern these annotations between SE5 / SE8
 	 */
 	public static final int DefaultLocationArrayContents = ASTNode.Bit10;
 
+	public static final int DefaultLocationsForTrueValue = DefaultLocationParameter | DefaultLocationReturnType | DefaultLocationField;
+
 	public static final int NullnessDefaultMASK = 
 			NULL_UNSPECIFIED_BY_DEFAULT | // included to terminate search up the parent chain
 			DefaultLocationParameter | DefaultLocationReturnType | DefaultLocationField |
@@ -112,14 +119,16 @@
 	public abstract int kind();
 	/*
 	 * Computes a key that uniquely identifies this binding.
-	 * Returns null if binding is not a TypeBinding, a MethodBinding, a FieldBinding, a LocalVariableBinding or a PackageBinding (i.e. an ImportBinding).
+	 * Returns null if binding is not a TypeBinding, a MethodBinding, a FieldBinding, a LocalVariableBinding, a PackageBinding (i.e. an ImportBinding)
+	 * or a ModuleBinding.
 	 */
 	public char[] computeUniqueKey() {
 		return computeUniqueKey(true/*leaf*/);
 	}
 	/*
 	 * Computes a key that uniquely identifies this binding. Optionally include access flags.
-	 * Returns null if binding is not a TypeBinding, a MethodBinding, a FieldBinding, a LocalVariableBinding or a PackageBinding (i.e. an ImportBinding)
+	 * Returns null if binding is not a TypeBinding, a MethodBinding, a FieldBinding, a LocalVariableBinding, a PackageBinding (i.e. an ImportBinding)
+	 * or a ModuleBinding.
 	 */
 	public char[] computeUniqueKey(boolean isLeaf) {
 		return null;
@@ -155,6 +164,9 @@
 	public final boolean isValidBinding() {
 		return problemId() == ProblemReasons.NoError;
 	}
+	public static boolean isValid(/*@Nullable*/Binding binding) {
+		return binding != null && binding.isValidBinding();
+	}
 	public boolean isVolatile() {
 		return false;
 	}
@@ -184,10 +196,10 @@
 	public AnnotationBinding[] getAnnotations() {
 		return Binding.NO_ANNOTATIONS;
 	}
-	public void setAnnotations(AnnotationBinding[] annotations, Scope scope) {
-		setAnnotations(annotations);
+	public void setAnnotations(AnnotationBinding[] annotations, Scope scope, boolean forceStore) {
+		setAnnotations(annotations, forceStore);
 	}
-	public void setAnnotations(AnnotationBinding[] annotations) {
+	public void setAnnotations(AnnotationBinding[] annotations, boolean forceStore) {
 		// Left to subtypes.
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
index e7af04b..5adc888 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java
@@ -1,5 +1,6 @@
+//AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -439,6 +440,7 @@
 	return null;
 }
 
+@Override
 public LocalVariableBinding findVariable(char[] variableName) {
 	int varLength = variableName.length;
 	for (int i = this.localIndex-1; i >= 0; i--) { // lookup backward to reach latest additions first
@@ -497,7 +499,7 @@
 		PackageBinding packageBinding = (PackageBinding) binding;
 		while (currentIndex < length) {
 			unitScope.recordReference(packageBinding.compoundName, compoundName[currentIndex]);
-			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]);
+			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], module());
 			invocationSite.setFieldIndex(currentIndex);
 			if (binding == null) {
 				if (currentIndex == length) {
@@ -643,7 +645,7 @@
 	foundType : if (binding instanceof PackageBinding) {
 		while (currentIndex < length) {
 			PackageBinding packageBinding = (PackageBinding) binding;
-			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]);
+			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], module());
 			if (binding == null) {
 				if (currentIndex == length) {
 					// must be a type if its the last name, otherwise we have no idea if its a package or type
@@ -825,7 +827,6 @@
 				&& sourceType.scope.referenceContext.allocation.enclosingInstance != null;
 			// reject allocation and super constructor call
 			if (denyEnclosingArgInConstructorCall
-					&& currentMethodScope.isConstructorCall
 					&& !isAnonymousAndHasEnclosing
 					&& (TypeBinding.equalsEquals(sourceType, targetEnclosingType) || (!onlyExactMatch && sourceType.findSuperTypeOriginatingFrom(targetEnclosingType) != null))) {
 				return BlockScope.NoEnclosingInstanceInConstructorCall;
@@ -975,6 +976,7 @@
  * (unit, type or method) in case the problem handler decides it is necessary
  * to abort.
  */
+@Override
 public ProblemReporter problemReporter() {
 	return methodScope().problemReporter();
 }
@@ -1022,10 +1024,12 @@
 }
 
 // start position in this scope - for ordering scopes vs. variables
+@Override
 int startIndex() {
 	return this.startIndex;
 }
 
+@Override
 public String toString() {
 	return toString(0);
 }
@@ -1041,6 +1045,7 @@
 private List trackingVariables; // can be null if no resources are tracked
 /** Used only during analyseCode and only for checking if a resource was closed in a finallyBlock. */
 public FlowInfo finallyInfo;
+
 /**
  * Register a tracking variable and compute its id.
  */
@@ -1075,7 +1080,7 @@
 	if (!compilerOptions().analyseResourceLeaks) return;
 	if (this.trackingVariables == null) {
 		// at a method return we also consider enclosing scopes
-		if (location != null && this.parent instanceof BlockScope)
+		if (location != null && this.parent instanceof BlockScope && !isLambdaScope())
 			((BlockScope) this.parent).checkUnclosedCloseables(flowInfo, flowContext, location, locationScope);
 		return;
 	}
@@ -1235,8 +1240,5 @@
 	}
 	return true;
 }
-@Override
-public boolean hasDefaultNullnessFor(int location) {
-	return this.parent.hasDefaultNullnessFor(location);
-}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java
index 6e1e2d3..001acdd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2016 GK Software AG.
+ * Copyright (c) 2013, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,7 +23,6 @@
 import java.util.Set;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
-import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 
 /**
  * Implementation of 18.1.3 in JLS8.
@@ -45,103 +44,32 @@
 		Set<TypeBound> subBounds;
 		TypeBinding	instantiation;
 		Map<InferenceVariable,TypeBound> inverseBounds; // from right inference variable to bound
-		
+		Set<InferenceVariable> dependencies;
 		public ThreeSets() {
 			// empty, the sets are lazily initialized
 		}
-		public ParameterizedTypeBinding mergeTypeParameters(ParameterizedTypeBinding current, ParameterizedTypeBinding newB) {
-			TypeBinding[] curTypeArgs = current.typeArguments();
-			TypeBinding[] newTypeArgs = newB.typeArguments();
-			TypeBinding[] merged = new TypeBinding[curTypeArgs.length];
-			System.arraycopy(curTypeArgs, 0, merged, 0, curTypeArgs.length);
-			boolean wasMerged = false;
-			for (int i = 0; i < curTypeArgs.length; i++) {
-				if (TypeBinding.equalsEquals(curTypeArgs[i], newTypeArgs[i]))
-					continue;
-				// Don't mess with captures
-				if(curTypeArgs[i].isCapture() || newTypeArgs[i].isCapture())
-					return null;
-				if (curTypeArgs[i] instanceof InferenceVariable) {
-					if (!(newTypeArgs[i] instanceof InferenceVariable)) {
-						// Short circuit incorporation
-						// Merge the type parameters, we are going to
-						// end up with this bound during incorporation anyway because of the SAME
-						// bound on the inference variable
-						ThreeSets three = BoundSet.this.boundsPerVariable.get(curTypeArgs[i]);
-						if(three != null && three.sameBounds != null && three.sameBounds.contains(new TypeBound((InferenceVariable) curTypeArgs[i], newTypeArgs[i], ReductionResult.SAME))) {
-							merged[i] = newTypeArgs[i];
-							wasMerged = true;
-						}
-					} else if (!curTypeArgs[i].equals(newTypeArgs[i])) {
-						return null;
-					}
-				} else {
-					if (!(newTypeArgs[i] instanceof InferenceVariable)) {
-						if (!TypeBinding.equalsEquals(curTypeArgs[i], newTypeArgs[i])) {
-							return null;
-						}
-					} else {
-						ThreeSets three = BoundSet.this.boundsPerVariable.get(newTypeArgs[i]);
-						// We do not have a SAME bounds for this inference variable, do not substitute
-						if(three == null || three.sameBounds == null || !three.sameBounds.contains(new TypeBound((InferenceVariable) newTypeArgs[i], curTypeArgs[i], ReductionResult.SAME))) {
-							return null;
-						}
-					}
-				}
-			}
-			if(wasMerged) {
-				ParameterizedTypeBinding clone = (ParameterizedTypeBinding)current.clone(current.enclosingType());
-				clone.arguments = merged;
-				return clone;
-			}
-			return null;
-		}
 		/** Add a type bound to the appropriate set. */
 		public boolean addBound(TypeBound bound) {
-			Iterator<TypeBound> it = null;
+			boolean result = addBound1(bound);
+			if(result) {
+				Set<InferenceVariable> set = (this.dependencies == null ? new HashSet<>() : this.dependencies);
+				bound.right.collectInferenceVariables(set);
+				if (this.dependencies == null && set.size() > 0) {
+					this.dependencies = set;
+				}
+			}
+			return result;
+		}
+		private boolean addBound1(TypeBound bound) {
 			switch (bound.relation) {
 				case ReductionResult.SUPERTYPE:
 					if (this.superBounds == null) this.superBounds = new HashSet<>();
-					if (CompilerOptions.useunspecdtypeinferenceperformanceoptimization) {
-						if (!bound.right.isProperType(true)) {
-							it = this.superBounds.iterator();
-							while (it.hasNext()) {
-								TypeBound b = it.next();
-								if (bound.right.isParameterizedType() && b.right.isParameterizedType()
-										&& b.right.original() == bound.right.original()) { //$IDENTITY-COMPARISON$
-									TypeBinding clone = mergeTypeParameters((ParameterizedTypeBinding) b.right,
-											(ParameterizedTypeBinding) bound.right);
-									if (clone != null) {
-										b.right = clone;
-										return false;
-									}
-								}
-							}
-						}
-					}
 					return this.superBounds.add(bound);
 				case ReductionResult.SAME:
 					if (this.sameBounds == null) this.sameBounds = new HashSet<>();
 					return this.sameBounds.add(bound);
 				case ReductionResult.SUBTYPE:
 					if (this.subBounds == null) this.subBounds = new HashSet<>();
-					if (CompilerOptions.useunspecdtypeinferenceperformanceoptimization) {
-						if (!bound.right.isProperType(true)) {
-							it = this.subBounds.iterator();
-							while (it.hasNext()) {
-								TypeBound b = it.next();
-								if (bound.right.isParameterizedType() && b.right.isParameterizedType()
-										&& b.right.original() == bound.right.original()) { //$IDENTITY-COMPARISON$
-									TypeBinding clone = mergeTypeParameters((ParameterizedTypeBinding) b.right,
-											(ParameterizedTypeBinding) bound.right);
-									if (clone != null) {
-										b.right = clone;
-										return false;
-									}
-								}
-							}
-						}
-					}
 					return this.subBounds.add(bound);
 				default:
 					throw new IllegalArgumentException("Unexpected bound relation in : " + bound); //$NON-NLS-1$
@@ -201,11 +129,7 @@
 		}
 		// pre: beta is a prototype
 		public boolean hasDependency(InferenceVariable beta) {
-			if (this.superBounds != null && hasDependency(this.superBounds, beta))
-				return true;
-			if (this.sameBounds != null && hasDependency(this.sameBounds, beta))
-				return true;
-			if (this.subBounds != null && hasDependency(this.subBounds, beta))
+			if(this.dependencies != null && this.dependencies.contains(beta))
 				return true;
 			if (this.inverseBounds != null) {
 				if (this.inverseBounds.containsKey(beta)) {
@@ -215,16 +139,6 @@
 			}
 			return false;
 		}
-		// pre: var is a prototype
-		private boolean hasDependency(Set<TypeBound> someBounds, InferenceVariable var) {
-			Iterator<TypeBound> bIt = someBounds.iterator();
-			while (bIt.hasNext()) {
-				TypeBound bound = bIt.next();
-				if (TypeBinding.equalsEquals(bound.right, var) || bound.right.mentionsAny(new TypeBinding[] {var}, -1))
-					return true;
-			}
-			return false;
-		}
 		/** Total number of type bounds in this container. */
 		public int size() {
 			int size = 0;
@@ -263,6 +177,9 @@
 			if (this.subBounds != null)
 				copy.subBounds = new HashSet<>(this.subBounds);
 			copy.instantiation = this.instantiation;
+			if (this.dependencies != null) {
+				copy.dependencies = new HashSet<>(this.dependencies);
+			}
 			return copy;
 		}
 		public TypeBinding findSingleWrapperType() {
@@ -736,15 +653,15 @@
 							it = three.sameBounds.iterator();
 							while (it.hasNext()) {
 								TypeBound bound = it.next();
-								if (InferenceContext18.SHOULD_WORKAROUND_BUG_JDK_8054721) {
-									if (bound.right instanceof CaptureBinding && bound.right.isProperType(true))
-										continue;
-								}
 								if (!(bound.right instanceof InferenceVariable))
 									return false;
 							}
 						}
-						if (three.subBounds != null && pi.firstBound != null) {
+						if (three.subBounds != null) {
+							TypeBinding bi1 = pi.firstBound;
+							if (bi1 == null) {
+								bi1 = context.object; // implicit bound
+							}
 							// If Bi is Object, α <: R implies ⟨T <: R⟩	(extends wildcard)
 							// α <: R implies ⟨θ Bi <: R⟩				(else) 
 							it = three.subBounds.iterator();
@@ -752,7 +669,6 @@
 								TypeBound bound = it.next();
 								if (!(bound.right instanceof InferenceVariable)) {
 									TypeBinding r = bound.right;
-									TypeBinding bi1 = pi.firstBound;
 									ReferenceBinding[] otherBounds = pi.superInterfaces;
 									TypeBinding bi;
 									if (otherBounds == Binding.NO_SUPERINTERFACES) {
@@ -765,13 +681,6 @@
 										bi = context.environment.createIntersectionType18(allBounds);
 									}
 									addTypeBoundsFromWildcardBound(context, theta, wildcardBinding.boundKind, t, r, bi);
-									//										if (otherBounds != null) {
-									//											for (int j = 0; j < otherBounds.length; j++) {
-									//												TypeBinding tj = otherBounds[j];
-									//												if (TypeBinding.notEquals(tj, t))
-									//													addTypeBoundsFromWildcardBound(context, wildcardBinding, tj, r, bij);
-									//											}
-									//										}
 								}
 							}
 						}
@@ -1113,6 +1022,7 @@
 	}
 
 	// debugging:
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer("Type Bounds:\n"); //$NON-NLS-1$
 		TypeBound[] flattened = flatten();
@@ -1256,8 +1166,8 @@
 			}
 		}
 		for (InferenceVariable iv : outerVariables) {
-			three = this.boundsPerVariable.get(outerVariables);
-			if (three != null) {
+			three = this.boundsPerVariable.get(iv);
+			if (three != null && three.sameBounds != null) {
 				for (TypeBound bound : three.sameBounds)
 					if (TypeBinding.equalsEquals(bound.right, variable))
 						return iv;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java
index 6148298..a46c985 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,6 +14,8 @@
  *								Bug 456497 - [1.8][null] during inference nullness from target type is lost against weaker hint from applicability analysis
  *								Bug 456924 - StackOverflowError during compilation
  *								Bug 462790 - [null] NPE in Expression.computeConversion()
+ *     Jesper S Møller - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
+ *								Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -60,8 +62,11 @@
 			super.setTypeAnnotations(wildcard.getTypeAnnotations(), wildcard.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled);
 			if (wildcard.hasNullTypeAnnotations())
 				this.tagBits |= TagBits.HasNullTypeAnnotation;
-		} else {			
+		} else {
 			computeId(this.environment);
+			if(wildcard.hasNullTypeAnnotations()) {
+				this.tagBits |= (wildcard.tagBits & TagBits.AnnotationNullMASK) | TagBits.HasNullTypeAnnotation;
+			}
 		}
 	}
 	
@@ -88,6 +93,7 @@
 	}
 	
 	// Captures may get cloned and annotated during type inference.
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return new CaptureBinding(this);
 	}
@@ -97,6 +103,7 @@
 	 * p.X { capture of ? } --> !*123; (Lp/X; in declaring type except if leaf)
 	 * p.X { capture of ? extends p.Y } --> !+Lp/Y;123; (Lp/X; in declaring type except if leaf)
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		StringBuffer buffer = new StringBuffer();
 		if (isLeaf) {
@@ -113,6 +120,7 @@
 		return uniqueKey;
 	}
 
+	@Override
 	public String debugName() {
 
 		if (this.wildcard != null) {
@@ -132,11 +140,20 @@
 		return super.debugName();
 	}
 
+	@Override
 	public char[] genericTypeSignature() {
-		if (this.genericTypeSignature == null) {
-			this.genericTypeSignature = CharOperation.concat(TypeConstants.WILDCARD_CAPTURE, this.wildcard.genericTypeSignature());
+		// captures have no signature per JVMS 4.7.9.1, approximate one by erasure:
+		if (this.inRecursiveFunction) {
+			// catch "capture#1 of X<capture#1 ...>":
+			// prefer answering "Ljava.lang.Object;" instead of throwing StackOverflowError:
+			return CharOperation.concat(new char[] {'L'}, CharOperation.concatWith(TypeConstants.JAVA_LANG_OBJECT, '.'), new char[] {';'});
 		}
-		return this.genericTypeSignature;
+		this.inRecursiveFunction = true;
+		try {
+			return erasure().genericTypeSignature();
+		} finally {
+			this.inRecursiveFunction = false;
+		}
 	}
 
 	/**
@@ -231,6 +248,8 @@
 						if (this.superclass.isSuperclassOf(substitutedVariableSuperclass)) {
 							this.setSuperClass(substitutedVariableSuperclass);
 						}
+						// TODO: there are cases were we need to compute glb(capturedWildcardBound, substitutedVariableSuperclass)
+						//       but then when glb (perhaps triggered inside setFirstBound()) fails, how to report the error??
 					}
 					this.setSuperInterfaces(substitutedVariableInterfaces);
 				}
@@ -258,10 +277,74 @@
 			evaluateNullAnnotations(scope, null);
 		}
 	}
+	@Override
+	public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		if (enterRecursiveProjectionFunction()) {
+			try {
+				for (int i = 0; i < mentionedTypeVariables.length; ++i) {
+					if (TypeBinding.equalsEquals(this, mentionedTypeVariables[i])) {
+						TypeBinding upperBoundForProjection = this.upperBoundForProjection();
+						return ((ReferenceBinding)upperBoundForProjection).upwardsProjection(scope, mentionedTypeVariables);
+					}
+				}
+				return this;
+			} finally {
+				exitRecursiveProjectionFunction();
+			}
+		} else {
+			return scope.getJavaLangObject();
+		}
+	}
+	public TypeBinding upperBoundForProjection() {
+		TypeBinding upperBound = null;
+		if (this.wildcard != null) {
+			ReferenceBinding[] supers = this.superInterfaces();
+			if (this.wildcard.boundKind == Wildcard.EXTENDS) {
+				if (supers.length > 0) {
+					ReferenceBinding[] allBounds = new ReferenceBinding[supers.length + 1];
+					System.arraycopy(supers, 0, allBounds, 1, supers.length);
+					allBounds[0] = this.superclass();
+					ReferenceBinding[] glbs = Scope.greaterLowerBound(allBounds);
+					if (glbs == null) {
+						upperBound = new ProblemReferenceBinding(null, null, ProblemReasons.ParameterBoundMismatch);
+					} else if (glbs.length == 1) {
+						upperBound = glbs[0];
+					} else {
+						upperBound = this.environment.createIntersectionType18(glbs);
+					}
+				} else {
+					upperBound = this.superclass;
+				}
+			} else {
+				// ITB18.isCompatibleWith does not handle the presence of j.l.Object among intersecting types,
+				// so it returns false when checking (I&J).isCompatibleWith(Object&I&J)
+				// TODO see if this can be handled in ITB18.isCompatibleWith() itself
+				boolean superClassIsObject = TypeBinding.equalsEquals(this.superclass(), this.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null));
+				if (supers.length == 0) {
+					upperBound = this.superclass();
+				} else if (supers.length == 1) {
+					upperBound = superClassIsObject ? supers[0] : this.environment.createIntersectionType18(new ReferenceBinding[] {this.superclass(), supers[0]});
+				} else {
+					if (superClassIsObject) {
+						upperBound = this.environment.createIntersectionType18(supers);
+					} else {
+						ReferenceBinding[] allBounds = new ReferenceBinding[supers.length + 1];
+						System.arraycopy(supers, 0, allBounds, 1, supers.length);
+						allBounds[0] = this.superclass();
+						upperBound = this.environment.createIntersectionType18(allBounds);
+					}
+				}
+			}
+		} else {
+			upperBound = super.upperBound();
+		}
+		return upperBound;
+	}
 
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#isCapture()
 	 */
+	@Override
 	public boolean isCapture() {
 		return true;
 	}
@@ -269,6 +352,7 @@
 	/**
 	 * @see TypeBinding#isEquivalentTo(TypeBinding)
 	 */
+	@Override
 	public boolean isEquivalentTo(TypeBinding otherType) {
 	    if (equalsEquals(this, otherType)) return true;
 	    if (otherType == null) return false;
@@ -294,6 +378,7 @@
 		return super.isProperType(admitCapture18);
 	}
 
+	@Override
 	public char[] readableName() {
 		if (this.wildcard != null) {
 			StringBuffer buffer = new StringBuffer(10);
@@ -310,6 +395,7 @@
 		return super.readableName();
 	}
 	
+	@Override
 	public char[] signableName() {
 		if (this.wildcard != null) {
 			StringBuffer buffer = new StringBuffer(10);
@@ -324,6 +410,7 @@
 		return super.readableName();
 	}
 
+	@Override
 	public char[] shortReadableName() {
 		if (this.wildcard != null) {
 			StringBuffer buffer = new StringBuffer(10);
@@ -439,6 +526,23 @@
 		return this.wildcard;
 	}
 
+	@Override
+	public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		ReferenceBinding result = null;
+		if (enterRecursiveProjectionFunction()) {
+			for (int i = 0; i < mentionedTypeVariables.length; ++i) {
+				if (TypeBinding.equalsEquals(this, mentionedTypeVariables[i])) {
+					if (this.lowerBound != null) {
+						result = (ReferenceBinding) this.lowerBound.downwardsProjection(scope, mentionedTypeVariables);
+					}
+					break;
+				}
+			}
+			exitRecursiveProjectionFunction();
+		}
+		return result;
+	}
+
 	/*
 	 * CaptureBinding needs even more propagation, because we are creating a naked type
 	 * (during CaptureBinding(WildcardBinding,ReferenceBinding,int,int,ASTNode,int)
@@ -459,6 +563,7 @@
 		return derived;
 	}
 
+	@Override
 	public String toString() {
 		if (this.wildcard != null) {
 			StringBuffer buffer = new StringBuffer(10);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.java
index 5a01eab..925ee13 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding18.java
@@ -66,20 +66,24 @@
 		return true;
 	}
 
+	@Override
 	public void initializeBounds(Scope scope, ParameterizedTypeBinding capturedParameterizedType) {
 		// nothing to initialize here (and cannot use super methods which requires wildcard to be set).
 	}
 
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return new CaptureBinding18(this);
 	}
 
+	@Override
 	public MethodBinding[] getMethods(char[] selector) {
 		if (this.upperBounds.length == 1 && this.upperBounds[0] instanceof ReferenceBinding)
 			return ((ReferenceBinding)this.upperBounds[0]).getMethods(selector);
 		return super.getMethods(selector);
 	}
 
+	@Override
 	public TypeBinding erasure() {
 		if (this.upperBounds != null && this.upperBounds.length > 1) {
 			ReferenceBinding[] erasures = new ReferenceBinding[this.upperBounds.length];
@@ -101,6 +105,7 @@
 	/**
 	 * @see TypeBinding#isEquivalentTo(TypeBinding)
 	 */
+	@Override
 	public boolean isEquivalentTo(TypeBinding otherType) {
 		// from CaptureBinding:
 		if (equalsEquals(this, otherType)) return true;
@@ -125,6 +130,7 @@
 		return false;
 	}
 
+	@Override
 	public boolean isCompatibleWith(TypeBinding otherType, Scope captureScope) {
 		if (TypeBinding.equalsEquals(this, otherType))
 			return true;
@@ -175,6 +181,7 @@
 		}
 	}
 
+	@Override
 	public TypeBinding findSuperTypeOriginatingFrom(TypeBinding otherType) {
 		if (this.upperBounds != null && this.upperBounds.length > 1) {
 			for (int i = 0; i < this.upperBounds.length; i++) {
@@ -188,6 +195,7 @@
 		return super.findSuperTypeOriginatingFrom(otherType);
 	}
 
+	@Override
 	TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 		if (this.inRecursiveFunction) return this;
 		this.inRecursiveFunction = true;
@@ -269,6 +277,7 @@
 		}
 	}
 
+	@Override
 	public boolean isProperType(boolean admitCapture18) {
 		if (!admitCapture18) 
 			return false;
@@ -292,28 +301,7 @@
 
 	int recursionLevel = 0; // used to give a hint at recursive types without going into infinity
 
-	public char[] genericTypeSignature() {
-		// since we have no wildcard, we combine the logic from CaptureBinding plus WildcardBinding here:
-		if (this.genericTypeSignature == null) {
-			char[] boundSignature;
-			try {
-				if (this.prototype.recursionLevel++ > 0 || this.firstBound == null) {
-					boundSignature = TypeConstants.WILDCARD_STAR;
-				} else if (this.upperBounds != null) {
-					boundSignature = CharOperation.concat(TypeConstants.WILDCARD_PLUS, this.firstBound.genericTypeSignature());
-				} else if (this.lowerBound != null) {
-					boundSignature = CharOperation.concat(TypeConstants.WILDCARD_MINUS, this.lowerBound.genericTypeSignature());
-				} else {
-					boundSignature = TypeConstants.WILDCARD_STAR;
-				}
-				this.genericTypeSignature = CharOperation.concat(TypeConstants.WILDCARD_CAPTURE, boundSignature);
-			} finally {
-				this.prototype.recursionLevel--;
-			}
-		}
-		return this.genericTypeSignature;
-	}
-	
+	@Override
 	public char[] readableName() {
 		if (this.lowerBound == null && this.firstBound != null) {
 			if (this.prototype.recursionLevel < 2) {
@@ -340,6 +328,7 @@
 		return super.readableName();
 	}
 
+	@Override
 	public char[] shortReadableName() {
 		if (this.lowerBound == null && this.firstBound != null) {
 			if (this.prototype.recursionLevel < 2) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.java
index 7180ad0..66f7626 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CatchParameterBinding.java
@@ -34,6 +34,7 @@
 		this.preciseTypes[length] = raisedException;
 		return;
 	}
+	@Override
 	public boolean isCatchParameter() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
index 3a8df64..bd9723c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ClassScope.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -468,6 +469,7 @@
 		}
 
 		SourceTypeBinding sourceType = this.referenceContext.binding;
+		sourceType.module = module();
 		environment().setAccessRestriction(sourceType, accessRestriction);
 		
 		TypeParameter[] typeParameters = this.referenceContext.typeParameters;
@@ -499,6 +501,7 @@
 		sourceType.modifiers |= ExtraCompilerModifiers.AccGenericSignature;
 	}
 
+	@Override
 	void resolveTypeParameter(TypeParameter typeParameter) {
 		typeParameter.resolve(this);
 	}
@@ -532,6 +535,7 @@
 				return;
 			}
 			if (sourceType.isAnonymousType()) {
+				if (compilerOptions().complianceLevel < ClassFileConstants.JDK9)
 			    modifiers |= ClassFileConstants.AccFinal;
 			    // set AccEnum flag for anonymous body of enum constants
 			    if (this.referenceContext.allocation.type == null)
@@ -572,8 +576,10 @@
 						// local member
 						if (enclosingType.isStrictfp())
 							modifiers |= ClassFileConstants.AccStrictfp;
-						if (enclosingType.isViewedAsDeprecated() && !sourceType.isDeprecated())
+						if (enclosingType.isViewedAsDeprecated() && !sourceType.isDeprecated()) {
 							modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+							sourceType.tagBits |= enclosingType.tagBits & TagBits.AnnotationTerminallyDeprecated;
+						}
 						break;
 				}
 				scope = scope.parent;
@@ -1215,19 +1221,19 @@
 		boolean wasAlreadyConnecting = compilationUnitScope.connectingHierarchy;
 		compilationUnitScope.connectingHierarchy = true;
 		try {
-		sourceType.tagBits |= TagBits.BeginHierarchyCheck;
-		environment().typesBeingConnected.add(sourceType);
-		boolean noProblems = connectSuperclass();
-		noProblems &= connectSuperInterfaces();
-		environment().typesBeingConnected.remove(sourceType);
-		sourceType.tagBits |= TagBits.EndHierarchyCheck;
-		noProblems &= connectTypeVariables(this.referenceContext.typeParameters, false);
-		sourceType.tagBits |= TagBits.TypeVariablesAreConnected;
-		if (noProblems && sourceType.isHierarchyInconsistent())
-			problemReporter().hierarchyHasProblems(sourceType);
+			sourceType.tagBits |= TagBits.BeginHierarchyCheck;
+			environment().typesBeingConnected.add(sourceType);
+			boolean noProblems = connectSuperclass();
+			noProblems &= connectSuperInterfaces();
+			environment().typesBeingConnected.remove(sourceType);
+			sourceType.tagBits |= TagBits.EndHierarchyCheck;
+			noProblems &= connectTypeVariables(this.referenceContext.typeParameters, false);
+			sourceType.tagBits |= TagBits.TypeVariablesAreConnected;
+			if (noProblems && sourceType.isHierarchyInconsistent())
+				problemReporter().hierarchyHasProblems(sourceType);
 		} finally {
 			compilationUnitScope.connectingHierarchy = wasAlreadyConnecting;
-	}
+		}
 	}
 
 	public boolean detectHierarchyCycle(TypeBinding superType, TypeReference reference) {
@@ -1269,7 +1275,7 @@
 		if (superType.isMemberType()) {
 			ReferenceBinding current = superType.enclosingType();
 			do {
-				if (current.isHierarchyBeingActivelyConnected() && TypeBinding.equalsEquals(current, sourceType)) {
+				if (current.isHierarchyBeingActivelyConnected()) {
 					problemReporter().hierarchyCircularity(sourceType, current, reference);
 					sourceType.tagBits |= TagBits.HierarchyHasProblems;
 					current.tagBits |= TagBits.HierarchyHasProblems;
@@ -1331,12 +1337,17 @@
 			org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference ref = ((SourceTypeBinding) superType).scope.superTypeReference;
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=133071
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=121734
-			if (ref != null && ref.resolvedType != null && ((ReferenceBinding) ref.resolvedType).isHierarchyBeingActivelyConnected()) {
+			if (ref != null && ref.resolvedType != null) {
+				ReferenceBinding s = (ReferenceBinding) ref.resolvedType;
+				do {
+					if (s.isHierarchyBeingActivelyConnected()) {
 				problemReporter().hierarchyCircularity(sourceType, superType, reference);
 				sourceType.tagBits |= TagBits.HierarchyHasProblems;
 				superType.tagBits |= TagBits.HierarchyHasProblems;
 				return true;
 			}
+				} while ((s = s.enclosingType()) != null);
+			}
 			if (ref != null && ref.resolvedType == null) {
 				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=319885 Don't cry foul prematurely.
 				// Check the edges traversed to see if there really is a cycle.
@@ -1352,9 +1363,11 @@
 				}
 			}
 		}
-		if ((superType.tagBits & TagBits.BeginHierarchyCheck) == 0)
+		if ((superType.tagBits & TagBits.BeginHierarchyCheck) == 0) {
 			// ensure if this is a source superclass that it has already been checked
+			if (superType.isValidBinding() && !superType.isUnresolvedType())
 			((SourceTypeBinding) superType).scope.connectTypeHierarchyWithoutMembers();
+		}
 		if ((superType.tagBits & TagBits.HierarchyHasProblems) != 0)
 			sourceType.tagBits |= TagBits.HierarchyHasProblems;
 		return false;
@@ -1387,6 +1400,7 @@
 	* (unit, type or method) in case the problem handler decides it is necessary
 	* to abort.
 	*/
+	@Override
 	public ProblemReporter problemReporter() {
 		MethodScope outerMethodScope;
 		if ((outerMethodScope = outerMostMethodScope()) == null) {
@@ -1405,16 +1419,38 @@
 	}
 
 	@Override
-	public boolean hasDefaultNullnessFor(int location) {
+	public boolean hasDefaultNullnessFor(int location, int sourceStart) {
+		int nonNullByDefaultValue = localNonNullByDefaultValue(sourceStart);
+		if (nonNullByDefaultValue != 0) {
+			return (nonNullByDefaultValue & location) != 0;
+		}
 		SourceTypeBinding binding = this.referenceContext.binding;
 		if (binding != null) {
 			int nullDefault = binding.getNullDefault();
-			if (nullDefault != 0)
+			if (nullDefault != 0) {
 				return (nullDefault & location) != 0;
 		}
-		return this.parent.hasDefaultNullnessFor(location);
+	}
+		return this.parent.hasDefaultNullnessFor(location, sourceStart);
 	}
 
+	@Override
+	public /* @Nullable */ Binding checkRedundantDefaultNullness(int nullBits, int sourceStart) {
+		Binding target = localCheckRedundantDefaultNullness(nullBits, sourceStart);
+		if (target != null) {
+			return target;
+		}
+		SourceTypeBinding binding = this.referenceContext.binding;
+		if (binding != null) {
+			int nullDefault = binding.getNullDefault();
+			if (nullDefault != 0) {
+				return (nullDefault == nullBits) ? binding : null;
+			}
+		}
+		return this.parent.checkRedundantDefaultNullness(nullBits, sourceStart);
+	}
+	
+	@Override
 	public String toString() {
 		if (this.referenceContext != null)
 			return "--- Class Scope ---\n\n"  //$NON-NLS-1$
@@ -1427,6 +1463,7 @@
 		return 1;
     }
     
+	@Override
 	public SourceTypeBinding invocationType() {
 		return referenceContext.binding;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
index 71f6813..1e07c63 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.*;
 
@@ -66,13 +68,17 @@
 	Map<InferenceVariable.InferenceVarKey, InferenceVariable> uniqueInferenceVariables = new HashMap<>();
 
 public CompilationUnitScope(CompilationUnitDeclaration unit, LookupEnvironment environment) {
-	super(COMPILATION_UNIT_SCOPE, null);
+	this(unit, environment.globalOptions);
 	this.environment = environment;
+}
+
+public CompilationUnitScope(CompilationUnitDeclaration unit, CompilerOptions compilerOptions) {
+	super(COMPILATION_UNIT_SCOPE, null);
 	this.referenceContext = unit;
 	unit.scope = this;
 	this.currentPackageName = unit.currentPackage == null ? CharOperation.NO_CHAR_CHAR : unit.currentPackage.tokens;
 
-	if (compilerOptions().produceReferenceInfo) {
+	if (compilerOptions.produceReferenceInfo) {
 		this.qualifiedReferences = new CompoundNameVector();
 		this.simpleNameReferences = new SimpleNameVector();
 		this.rootReferences = new SimpleNameVector();
@@ -85,6 +91,7 @@
 		this.referencedTypes = null;
 		this.referencedSuperTypes = null;
 	}
+	// client still needs to assign #environment
 }
 public void buildFieldsAndMethods() { // AspectJ Extension - raised to public
 	for (int i = 0, length = this.topLevelTypes.length; i < length; i++)
@@ -95,7 +102,7 @@
 	boolean firstIsSynthetic = false;
 	if (this.referenceContext.compilationResult.compilationUnit != null) {
 		char[][] expectedPackageName = this.referenceContext.compilationResult.compilationUnit.getPackageName();
-		if (expectedPackageName != null
+		if (expectedPackageName != null && !this.referenceContext.isModuleInfo()
 				&& !CharOperation.equals(this.currentPackageName, expectedPackageName)) {
 
 			// only report if the unit isn't structurally empty
@@ -110,6 +117,15 @@
 	if (this.currentPackageName == CharOperation.NO_CHAR_CHAR) {
 		// environment default package is never null
 		this.fPackage = this.environment.defaultPackage;
+		if (this.referenceContext.isModuleInfo()) { // cannot have a package as per grammar
+			ModuleDeclaration moduleDecl = this.referenceContext.moduleDeclaration;
+			if (moduleDecl != null) {
+				moduleDecl.createScope(this);
+				moduleDecl.checkAndSetModifiers();
+			}
+		} else if (this.environment.module != this.environment.UnNamedModule) {
+			problemReporter().unnamedPackageInNamedModule(this.environment.module);
+		}
 	} else {
 		if ((this.fPackage = this.environment.createPackage(this.currentPackageName)) == null) {
 			if (this.referenceContext.currentPackage != null) {
@@ -143,8 +159,10 @@
 		if (this.environment.isProcessingAnnotations && this.environment.isMissingType(typeDecl.name))
 			throw new SourceTypeCollisionException(); // resolved a type ref before APT generated the type
 		ReferenceBinding typeBinding = this.fPackage.getType0(typeDecl.name);
+		if (Binding.isValid(typeBinding) && this.fPackage instanceof SplitPackageBinding && !this.environment.module.canAccess(typeBinding.fPackage))
+			typeBinding = null;
 		recordSimpleReference(typeDecl.name); // needed to detect collision cases
-		if (typeBinding != null && typeBinding.isValidBinding() && !(typeBinding instanceof UnresolvedReferenceBinding)) {
+		if (Binding.isValid(typeBinding) && !(typeBinding instanceof UnresolvedReferenceBinding)) {
 			// if its an unresolved binding - its fixed up whenever its needed, see UnresolvedReferenceBinding.resolve()
 			if (this.environment.isProcessingAnnotations)
 				throw new SourceTypeCollisionException(); // resolved a type ref before APT generated the type
@@ -154,11 +172,6 @@
 			problemReporter().duplicateTypes(this.referenceContext, typeDecl);
 			continue nextType;
 		}
-		if (this.fPackage != this.environment.defaultPackage && this.fPackage.getPackage(typeDecl.name) != null) {
-			// if a package exists, it must be a valid package - cannot be a NotFound problem package
-			// this is now a warning since a package does not really 'exist' until it contains a type, see JLS v2, 7.4.3
-			problemReporter().typeCollidesWithPackage(this.referenceContext, typeDecl);
-		}
 
 		if ((typeDecl.modifiers & ClassFileConstants.AccPublic) != 0) {
 			char[] mainTypeName;
@@ -182,6 +195,24 @@
 		System.arraycopy(this.topLevelTypes, 0, this.topLevelTypes = new SourceTypeBinding[count], 0, count);
 }
 public void checkAndSetImports() { // AspectJ Extension - raised to public
+	// TODO(SHMOD): verify: this block moved here from buildTypeBindings.
+	// package resolving may require all modules to be known
+	TypeDeclaration[] types = this.referenceContext.types;
+	if (types != null) {
+		for (int i = 0; i < types.length; i++) {
+			TypeDeclaration typeDecl = types[i];
+			if (this.fPackage != this.environment.defaultPackage && this.fPackage.getPackage(typeDecl.name, module()) != null) {
+				// if a package exists, it must be a valid package - cannot be a NotFound problem package
+				// this is now a warning since a package does not really 'exist' until it contains a type, see JLS v2, 7.4.3
+				problemReporter().typeCollidesWithPackage(this.referenceContext, typeDecl);
+			}
+		}
+	}
+
+	if (this.referenceContext.moduleDeclaration != null) {
+		this.referenceContext.moduleDeclaration.resolveModuleDirectives(this);
+		this.referenceContext.moduleDeclaration.resolvePackageDirectives(this);
+	}
 	if (this.referenceContext.imports == null) {
 		this.imports = getDefaultImports();
 		return;
@@ -349,7 +380,6 @@
 	} finally {
 		this.connectingHierarchy = false;
 	}
-
 }
 void faultInImports() {
 	boolean unresolvedFound = false;
@@ -406,16 +436,19 @@
 			}
 		}
 		if ((importReference.bits & ASTNode.OnDemand) != 0) {
-			if (CharOperation.equals(compoundName, this.currentPackageName)) {
-				problemReporter().unusedImport(importReference); // since skipped, must be reported now
-				continue nextImport;
-			}
-
 			Binding importBinding = findImport(compoundName, compoundName.length);
 			if (!importBinding.isValidBinding()) {
 				problemReporter().importProblem(importReference, importBinding);
 				continue nextImport;
 			}
+			if (importBinding instanceof PackageBinding) {
+				PackageBinding uniquePackage = ((PackageBinding)importBinding).getVisibleFor(module());
+				if (uniquePackage instanceof SplitPackageBinding) {
+					SplitPackageBinding splitPackage = (SplitPackageBinding) uniquePackage;
+					problemReporter().conflictingPackagesFromModules(splitPackage, importReference.sourceStart, importReference.sourceEnd);
+					continue nextImport;
+				}
+			}
 			if (importReference.isStatic() && importBinding instanceof PackageBinding) {
 				problemReporter().cannotImportPackage(importReference);
 				continue nextImport;
@@ -437,6 +470,24 @@
 			if (importBinding instanceof PackageBinding) {
 				problemReporter().cannotImportPackage(importReference);
 				continue nextImport;
+			} else if (this.environment.useModuleSystem && importBinding instanceof ReferenceBinding) {
+				PackageBinding importedPackage = ((ReferenceBinding) importBinding).fPackage;
+				if (importedPackage != null) {
+					if (!importedPackage.isValidBinding()) {
+						problemReporter().importProblem(importReference, importedPackage);
+						continue nextImport;
+			}
+					// re-get to find a possible split package:
+					importedPackage = (PackageBinding) findImport(importedPackage.compoundName, false, true);
+					if (importedPackage != null)
+						importedPackage = importedPackage.getVisibleFor(module());
+					if (importedPackage instanceof SplitPackageBinding) {
+						SplitPackageBinding splitPackage = (SplitPackageBinding) importedPackage;
+						int sourceEnd = (int) importReference.sourcePositions[splitPackage.compoundName.length-1];
+						problemReporter().conflictingPackagesFromModules(splitPackage, importReference.sourceStart, sourceEnd);
+						continue nextImport;
+					}
+				}
 			}
 			// all the code here which checks for valid bindings have been moved to the method 
 			// checkAndRecordImportBinding() since bug 361327
@@ -471,6 +522,11 @@
 }
 public void faultInTypes() {
 	faultInImports();
+	if (this.referenceContext.moduleDeclaration != null) {
+		this.referenceContext.moduleDeclaration.resolveTypeDirectives(this);
+	} else if (this.referenceContext.currentPackage != null) {
+		this.referenceContext.currentPackage.checkPackageConflict(this);
+	}
 
 	for (int i = 0, length = this.topLevelTypes.length; i < length; i++)
 		this.topLevelTypes[i].faultInTypesForFieldsAndMethods();
@@ -485,13 +541,16 @@
 }
 private Binding findImport(char[][] compoundName, int length) {
 	recordQualifiedReference(compoundName);
-
+	ModuleBinding module = module();
 	Binding binding = this.environment.getTopLevelPackage(compoundName[0]);
 	int i = 1;
 	foundNothingOrType: if (binding != null) {
 		PackageBinding packageBinding = (PackageBinding) binding;
 		while (i < length) {
-			binding = packageBinding.getTypeOrPackage(compoundName[i++]);
+			binding = packageBinding.getTypeOrPackage(compoundName[i++], module);
+			if (binding instanceof ReferenceBinding && binding.problemId() == ProblemReasons.NotAccessible) {
+				return this.environment.convertToRawType((TypeBinding) binding, false /*do not force conversion of enclosing types*/);
+			}
 			if (binding == null || !binding.isValidBinding()) {
 				binding = null;
 				break foundNothingOrType;
@@ -501,6 +560,8 @@
 
 			packageBinding = (PackageBinding) binding;
 		}
+		if (packageBinding.isValidBinding() && !module.canAccess(packageBinding))
+			return new ProblemPackageBinding(compoundName, ProblemReasons.NotAccessible);
 		return packageBinding;
 	}
 
@@ -535,7 +596,7 @@
 	if (compoundName.length == 1) {
 		// findType records the reference
 		// the name cannot be a package
-		if (compilerOptions().complianceLevel >= ClassFileConstants.JDK1_4)
+		if (compilerOptions().complianceLevel >= ClassFileConstants.JDK1_4 && !this.referenceContext.isModuleInfo())
 			return new ProblemReferenceBinding(compoundName, null, ProblemReasons.NotFound);
 		ReferenceBinding typeBinding = findType(compoundName[0], this.environment.defaultPackage, this.fPackage);
 		if (typeBinding == null)
@@ -553,7 +614,7 @@
 
 	char[] name = compoundName[compoundName.length - 1];
 	if (binding instanceof PackageBinding) {
-		Binding temp = ((PackageBinding) binding).getTypeOrPackage(name);
+		Binding temp = ((PackageBinding) binding).getTypeOrPackage(name, module());
 		if (temp != null && temp instanceof ReferenceBinding) // must resolve to a member type or field, not a top level type
 			return new ProblemReferenceBinding(compoundName, (ReferenceBinding) temp, ProblemReasons.InvalidTypeForStaticImport);
 		return binding; // cannot be a package, error is caught in sender
@@ -605,11 +666,11 @@
 }
 ImportBinding[] getDefaultImports() {
 	// initialize the default imports if necessary... share the default java.lang.* import
-	if (this.environment.defaultImports != null) return this.environment.defaultImports;
+	if (this.environment.root.defaultImports != null) return this.environment.root.defaultImports;
 
 	Binding importBinding = this.environment.getTopLevelPackage(TypeConstants.JAVA);
 	if (importBinding != null)
-		importBinding = ((PackageBinding) importBinding).getTypeOrPackage(TypeConstants.JAVA_LANG[1]);
+		importBinding = ((PackageBinding) importBinding).getTypeOrPackage(TypeConstants.JAVA_LANG[1], module());
 
 	if (importBinding == null || !importBinding.isValidBinding()) {
 		// create a proxy for the missing BinaryType
@@ -621,7 +682,7 @@
 		importBinding = missingObject.fPackage;
 	}
 
-	return this.environment.defaultImports = new ImportBinding[] {new ImportBinding(TypeConstants.JAVA_LANG, true, importBinding, null)};
+	return this.environment.root.defaultImports = new ImportBinding[] {new ImportBinding(TypeConstants.JAVA_LANG, true, importBinding, null)};
 }
 // NOT Public API
 public final Binding getImport(char[][] compoundName, boolean onDemand, boolean isStaticImport) {
@@ -640,6 +701,7 @@
 * (unit, type or method) in case the problem handler decides it is necessary
 * to abort.
 */
+@Override
 public ProblemReporter problemReporter() {
 	ProblemReporter problemReporter = this.referenceContext.problemReporter;
 	problemReporter.referenceContext = this.referenceContext;
@@ -822,6 +884,7 @@
 		rootRefs[i] = this.rootReferences.elementAt(i);
 	this.referenceContext.compilationResult.rootReferences = rootRefs;
 }
+@Override
 public String toString() {
 	return "--- CompilationUnit Scope : " + new String(this.referenceContext.getFileName()); //$NON-NLS-1$
 }
@@ -940,7 +1003,6 @@
 						}
 					} else if (resolved.resolvedImport == referenceBinding) {
 						if (importReference.isStatic() != resolved.isStatic()) {
-							problemReporter().duplicateImport(importReference);
 							recordImportBinding(new ImportBinding(compoundName, false, importBinding, importReference));
 						}
 					}
@@ -998,11 +1060,29 @@
 	return this.importPtr;
 }
 @Override
-public boolean hasDefaultNullnessFor(int location) {
+public boolean hasDefaultNullnessFor(int location, int sourceStart) {
+	int nonNullByDefaultValue = localNonNullByDefaultValue(sourceStart);
+	if (nonNullByDefaultValue != 0) {
+		return (nonNullByDefaultValue & location) != 0;
+	}
 	if (this.fPackage != null)
-		return (this.fPackage.defaultNullness & location) != 0;
+		return (this.fPackage.getDefaultNullness() & location) != 0;
 	return false;
 }
+
+@Override
+public /* @Nullable */ Binding checkRedundantDefaultNullness(int nullBits, int sourceStart) {
+	Binding target = localCheckRedundantDefaultNullness(nullBits, sourceStart);
+	if (target != null) {
+		return target;
+	}
+	if (this.fPackage != null) {
+		return this.fPackage.findDefaultNullnessTarget(n -> n == nullBits);
+	}
+
+	return null;
+}
+
 public void registerInferredInvocation(Invocation invocation) {
 	if (this.inferredInvocations == null)
 		this.inferredInvocations = new ArrayList<>();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java
index cc17e7d..f685d1a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java
@@ -39,6 +39,7 @@
 		this.relation = EXCEPTIONS_CONTAINED;
 	}
 	
+	@Override
 	public Object reduce(InferenceContext18 inferenceContext) {
 		// JLS 18.2.5
 		Scope scope = inferenceContext.scope;
@@ -110,6 +111,7 @@
 		return result.toArray(new ConstraintFormula[result.size()]);
 	}
 
+	@Override
 	Collection<InferenceVariable> inputVariables(final InferenceContext18 context) {
 		// from 18.5.2.
 		if (this.left instanceof LambdaExpression) {
@@ -151,6 +153,7 @@
 		return EMPTY_VARIABLE_LIST;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer().append(LEFT_ANGLE_BRACKET);
 		this.left.printExpression(4, buf);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java
index 1b56038..79a0d20 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2016 GK Software AG.
+ * Copyright (c) 2013, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InferenceContext18.SuspendedInferenceRecord;
 
 /**
@@ -52,6 +53,7 @@
 		this.isSoft = isSoft;
 	}
 
+	@Override
 	public Object reduce(InferenceContext18 inferenceContext) throws InferenceFailureException {
 		
 		if (this.relation == POTENTIALLY_COMPATIBLE) {
@@ -66,7 +68,13 @@
 	
 		// JLS 18.2.1
 		if (this.right.isProperType(true)) {
-			return this.left.isCompatibleWith(this.right, inferenceContext.scope) || this.left.isBoxingCompatibleWith(this.right, inferenceContext.scope) ? TRUE : FALSE;
+			if (this.left.isCompatibleWith(this.right, inferenceContext.scope) || this.left.isBoxingCompatibleWith(this.right, inferenceContext.scope)) {
+				if (this.left.resolvedType != null && this.left.resolvedType.needsUncheckedConversion(this.right)) {
+					inferenceContext.usesUncheckedConversion = true;
+				}
+				return TRUE;
+			}
+			return FALSE;
 		}
 		if (!canBePolyExpression(this.left)) {
 			TypeBinding exprType = this.left.resolvedType;
@@ -382,8 +390,7 @@
 				throw new InferenceFailureException("expression has no value"); //$NON-NLS-1$
 
 			if (inferenceContext.usesUncheckedConversion) {
-				// spec says erasure, but we don't really have compatibility rules for erasure, use raw type instead:
-				TypeBinding erasure = inferenceContext.environment.convertToRawType(returnType, false);
+				TypeBinding erasure = getRealErasure(returnType, inferenceContext.environment);
 				ConstraintTypeFormula newConstraint = ConstraintTypeFormula.create(erasure, targetType, COMPATIBLE);
 				return inferenceContext.reduceAndIncorporate(newConstraint);
 			}
@@ -396,12 +403,17 @@
 						parameterizedType.genericType(), betas, parameterizedType.enclosingType(), parameterizedType.getTypeAnnotations());
 				inferenceContext.currentBounds.captures.put(gbeta, parameterizedType); // established: both types have nonnull arguments
 				if (InferenceContext18.SHOULD_WORKAROUND_BUG_JDK_8054721) {
-					parameterizedType = parameterizedType.capture(inferenceContext.scope, invocationSite.sourceStart(), invocationSite.sourceEnd());
-					arguments = parameterizedType.arguments;
 					for (int i = 0, length = arguments.length; i < length; i++) {
-						if (arguments[i].isCapture() && arguments[i].isProperType(true)) {
-							CaptureBinding capture = (CaptureBinding) arguments[i];
-							inferenceContext.currentBounds.addBound(new TypeBound(betas[i], capture, SAME), inferenceContext.environment);
+						if (arguments[i].isWildcard()) {
+							WildcardBinding wc = (WildcardBinding) arguments[i];
+							switch (wc.boundKind) {
+								case Wildcard.EXTENDS:
+									inferenceContext.currentBounds.addBound(new TypeBound(betas[i], wc.bound(), SUBTYPE), inferenceContext.environment);
+									break;
+								case Wildcard.SUPER:
+									inferenceContext.currentBounds.addBound(new TypeBound(betas[i], wc.bound(), SUPERTYPE), inferenceContext.environment);
+									break;
+							}
 						}
 					}
 				}
@@ -440,6 +452,18 @@
 		return true;
 	}
 
+	private static TypeBinding getRealErasure(TypeBinding type, LookupEnvironment environment) {
+		TypeBinding erasure = type.erasure();
+		// could still be / contain a generic type that needs to be converted to raw:
+		TypeBinding erasedLeaf = erasure.leafComponentType();
+		if (erasedLeaf.isGenericType())
+			erasedLeaf = environment.convertToRawType(erasedLeaf, false);
+		if (erasure.isArrayType())
+			return environment.createArrayType(erasedLeaf, erasure.dimensions());
+		return erasedLeaf;
+	}
+
+	@Override
 	Collection<InferenceVariable> inputVariables(final InferenceContext18 context) {
 		// from 18.5.2.
 		if (this.left instanceof LambdaExpression) {
@@ -500,6 +524,7 @@
 	}
 
 	// debugging:
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer().append(LEFT_ANGLE_BRACKET);
 		this.left.printExpression(4, buf);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
index 5b644d1..81805fb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java
@@ -58,6 +58,7 @@
 	ConstraintTypeFormula() { }
 
 	// return: ReductionResult or ConstraintFormula[]
+	@Override
 	public Object reduce(InferenceContext18 inferenceContext) {
 		switch (this.relation) {
 		case COMPATIBLE:
@@ -101,7 +102,7 @@
 				if (!checkIVFreeTVmatch(this.left, this.right))
 					checkIVFreeTVmatch(this.right, this.left);
 			// 18.2.4:
-			return reduceTypeEquality(inferenceContext.object);
+			return reduceTypeEquality(inferenceContext.object, inferenceContext);
 		case TYPE_ARGUMENT_CONTAINED:
 			// 18.2.3:
 			if (this.right.kind() != Binding.WILDCARD_TYPE) { // "If T is a type" ... all alternatives require "wildcard"
@@ -160,7 +161,7 @@
 		return false;
 	}
 
-	private Object reduceTypeEquality(TypeBinding object) {
+	private Object reduceTypeEquality(TypeBinding object, InferenceContext18 inferenceContext) {
 		// 18.2.4
 		if (this.left.kind() == Binding.WILDCARD_TYPE) {
 			if (this.right.kind() == Binding.WILDCARD_TYPE) {
@@ -213,19 +214,31 @@
 					}
 					return constraints;
 				}
-				if (this.left.isArrayType() && this.right.isArrayType() && this.left.dimensions() == this.right.dimensions()) {
-					// checking dimensions already now is an optimization over reducing one dim at a time
-					return ConstraintTypeFormula.create(this.left.leafComponentType(), this.right.leafComponentType(), SAME, this.isSoft);
+				if (this.left.isArrayType() && this.right.isArrayType()) {
+					if (this.left.dimensions() == this.right.dimensions()) {
+						// checking dimensions in one step is an optimization over reducing one dim at a time
+						return ConstraintTypeFormula.create(this.left.leafComponentType(), this.right.leafComponentType(), SAME, this.isSoft);
+					} else if (this.left.dimensions() > 0 && this.right.dimensions() > 0) {
+						TypeBinding leftPrime = peelOneDimension(this.left, inferenceContext.environment);
+						TypeBinding rightPrime = peelOneDimension(this.right, inferenceContext.environment);
+						return ConstraintTypeFormula.create(leftPrime, rightPrime, SAME, this.isSoft);
+					}
 				}
 			}
 		}
 		return FALSE;
 	}
 
+	private TypeBinding peelOneDimension(TypeBinding arrayType, LookupEnvironment env) {
+		if (arrayType.dimensions() == 1)
+			return arrayType.leafComponentType();
+		return env.createArrayType(arrayType.leafComponentType(), arrayType.dimensions()-1);
+	}
+
 	private Object reduceSubType(Scope scope, TypeBinding subCandidate, TypeBinding superCandidate) {
 		// 18.2.3 Subtyping Constraints
 		if (subCandidate.isProperType(true) && superCandidate.isProperType(true)) {
-			if (subCandidate.isCompatibleWith(superCandidate, scope))
+			if (subCandidate.isSubtypeOf(superCandidate, InferenceContext18.SIMULATE_BUG_JDK_8026527))
 				return TRUE;
 			return FALSE;
 		}
@@ -242,7 +255,7 @@
 			case Binding.TYPE:
 			case Binding.RAW_TYPE:
 				{
-					if (subCandidate.isSubtypeOf(superCandidate))
+					if (subCandidate.isSubtypeOf(superCandidate, InferenceContext18.SIMULATE_BUG_JDK_8026527))
 						return TRUE;
 					return FALSE;
 				}
@@ -390,6 +403,7 @@
 					TypeBinding.equalsEquals(this.left, that.left) && TypeBinding.equalsEquals(this.right, that.right));
 	}
 	
+	@Override
 	public boolean applySubstitution(BoundSet solutionSet, InferenceVariable[] variables) {
 		super.applySubstitution(solutionSet, variables);
 		for (int i=0; i<variables.length; i++) {
@@ -403,6 +417,7 @@
 	}
 
 	// debugging
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer("Type Constraint:\n"); //$NON-NLS-1$
 		buf.append('\t').append(LEFT_ANGLE_BRACKET);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.java
index 72f0e74..c0cbe1c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ElementValuePair.java
@@ -137,6 +137,7 @@
 	this.value = value;
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(5);
 	buffer.append(this.name).append(" = "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.java
index c6b31e6..d462671 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ExternalAnnotationSuperimposer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2016 GK Software AG.
+ * Copyright (c) 2016, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -179,7 +179,7 @@
 			AnnotationBinding[][] annotsOnDims = new AnnotationBinding[dims][];
 			ITypeAnnotationWalker walker = this.currentWalker;
 			for (int i = 0; i < dims; i++) {
-				IBinaryAnnotation[] binaryAnnotations = walker.getAnnotationsAtCursor(arrayBinding.id);
+				IBinaryAnnotation[] binaryAnnotations = walker.getAnnotationsAtCursor(arrayBinding.id, false);
 				if (binaryAnnotations != ITypeAnnotationWalker.NO_ANNOTATIONS) {
 					annotsOnDims[i] = BinaryTypeBinding.createAnnotations(binaryAnnotations, this.environment, null);
 					this.isReplacing = true;
@@ -209,7 +209,7 @@
 	public boolean visit(ParameterizedTypeBinding parameterizedTypeBinding) {
 		ExternalAnnotationSuperimposer memento = snapshot();
 		try {
-			IBinaryAnnotation[] binaryAnnotations = this.currentWalker.getAnnotationsAtCursor(parameterizedTypeBinding.id);
+			IBinaryAnnotation[] binaryAnnotations = this.currentWalker.getAnnotationsAtCursor(parameterizedTypeBinding.id, false);
 			AnnotationBinding[] annotations = Binding.NO_ANNOTATIONS;
 			if (binaryAnnotations != ITypeAnnotationWalker.NO_ANNOTATIONS) {
 				annotations = BinaryTypeBinding.createAnnotations(binaryAnnotations, this.environment, null);
@@ -234,7 +234,7 @@
 	}
 	@Override
 	public boolean visit(ReferenceBinding referenceBinding) {
-		IBinaryAnnotation[] binaryAnnotations = this.currentWalker.getAnnotationsAtCursor(referenceBinding.id);
+		IBinaryAnnotation[] binaryAnnotations = this.currentWalker.getAnnotationsAtCursor(referenceBinding.id, false);
 		if (binaryAnnotations != ITypeAnnotationWalker.NO_ANNOTATIONS)
 			this.typeReplacement = this.environment.createAnnotatedType(referenceBinding, BinaryTypeBinding.createAnnotations(binaryAnnotations, this.environment, null));
 		return false;
@@ -251,7 +251,7 @@
 			if (bound != null) {
 				bound = goAndSuperimpose(memento.currentWalker.toWildcardBound(), bound);
 			}
-			IBinaryAnnotation[] binaryAnnotations = memento.currentWalker.getAnnotationsAtCursor(-1); 
+			IBinaryAnnotation[] binaryAnnotations = memento.currentWalker.getAnnotationsAtCursor(-1, false); 
 			if (this.isReplacing || binaryAnnotations != ITypeAnnotationWalker.NO_ANNOTATIONS) {
 				TypeBinding[] otherBounds = wildcardBinding.otherBounds;
 				if (binaryAnnotations != ITypeAnnotationWalker.NO_ANNOTATIONS) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java
index 07e4e10..4db92c8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,7 +47,7 @@
 	super(initialFieldBinding.name, initialFieldBinding.type, initialFieldBinding.modifiers, initialFieldBinding.constant());
 	this.declaringClass = declaringClass;
 	this.id = initialFieldBinding.id;
-    if (declaringClass!=null) setAnnotations(initialFieldBinding.getAnnotations());	// New AspectJ Extension - null guard
+    if (declaringClass!=null) setAnnotations(initialFieldBinding.getAnnotations(), false);	// New AspectJ Extension - null guard
 }
 /* API
 * Answer the receiver's binding type from Binding.BindingID.
@@ -171,6 +172,7 @@
  * declaringUniqueKey dot fieldName ) returnTypeUniqueKey
  * p.X { X<T> x} --> Lp/X;.x)p/X<TT;>;
  */
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	// declaring key
 	char[] declaringKey =
@@ -197,6 +199,7 @@
 	System.arraycopy(returnTypeKey, 0, uniqueKey, index, returnTypeLength);
 	return uniqueKey;
 }
+@Override
 public Constant constant() {
 	Constant fieldConstant = this.constant;
 	if (fieldConstant == null) {
@@ -234,6 +237,7 @@
 	return fieldConstant;
 }
 
+@Override
 public Constant constant(Scope scope) {
 	if (this.constant != null)
 		return this.constant;
@@ -261,11 +265,11 @@
 	} else {
 		if ( (this.tagBits & TagBits.AnnotationNullMASK) == 0 ) {
 			this.tagBits |= TagBits.AnnotationNonNull;
-	} else if ((this.tagBits & TagBits.AnnotationNonNull) != 0) {
-		scope.problemReporter().nullAnnotationIsRedundant(sourceField);
+		} else if ((this.tagBits & TagBits.AnnotationNonNull) != 0) {
+			scope.problemReporter().nullAnnotationIsRedundant(sourceField);
+		}		
 	}
 }
-}
 
 /**
  * X<T> t   -->  LX<TT;>;
@@ -278,6 +282,7 @@
 	return this.modifiers & ExtraCompilerModifiers.AccJustFlag;
 }
 
+@Override
 public AnnotationBinding[] getAnnotations() {
 	FieldBinding originalField = original();
 	ReferenceBinding declaringClassBinding = originalField.declaringClass;
@@ -292,6 +297,7 @@
  * lazily resolving corresponding annotation nodes, in case of forward references.
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#getAnnotationTagBits()
  */
+@Override
 public long getAnnotationTagBits() {
 	FieldBinding originalField = original();
 	if ((originalField.tagBits & TagBits.AnnotationResolved) == 0 && originalField.declaringClass instanceof SourceTypeBinding) {
@@ -396,10 +402,12 @@
 /* Answer true if the receiver is a volatile field
 */
 
+@Override
 public final boolean isVolatile() {
 	return (this.modifiers & ClassFileConstants.AccVolatile) != 0;
 }
 
+@Override
 public final int kind() {
 	return FIELD;
 }
@@ -411,8 +419,9 @@
 public FieldBinding original() {
 	return this;
 }
-public void setAnnotations(AnnotationBinding[] annotations) {
-	this.declaringClass.storeAnnotations(this, annotations);
+@Override
+public void setAnnotations(AnnotationBinding[] annotations, boolean forceStore) {
+	this.declaringClass.storeAnnotations(this, annotations, forceStore);
 }
 public FieldDeclaration sourceField() {
 	SourceTypeBinding sourceType;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.java
index d7f986f..13ec326 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImplicitNullAnnotationVerifier.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2015 GK Software AG, IBM Corporation and others.
+ * Copyright (c) 2012, 2018 GK Software AG, IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,6 +32,15 @@
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class ImplicitNullAnnotationVerifier {
+	public static void ensureNullnessIsKnown(MethodBinding methodBinding, Scope scope) {
+		if ((methodBinding.tagBits & TagBits.IsNullnessKnown) == 0) {
+			LookupEnvironment environment2 = scope.environment();
+			// ensure nullness of methodBinding is known (but we are not interested in reporting problems against methodBinding)
+			new ImplicitNullAnnotationVerifier(environment2, environment2.globalOptions.inheritNullAnnotations)
+					.checkImplicitNullAnnotations(methodBinding, null/*srcMethod*/, false, scope);
+		}
+	}
+
 
 	/**
 	 * Simple record to store nullness info for one argument or return type
@@ -77,10 +86,10 @@
 			}
 			boolean usesTypeAnnotations = scope.environment().usesNullTypeAnnotations();
 			boolean needToApplyReturnNonNullDefault =
-					currentMethod.hasNonNullDefaultFor(Binding.DefaultLocationReturnType, usesTypeAnnotations);
-			boolean needToApplyParameterNonNullDefault =
-					currentMethod.hasNonNullDefaultFor(Binding.DefaultLocationParameter, usesTypeAnnotations);
-			boolean needToApplyNonNullDefault = needToApplyReturnNonNullDefault | needToApplyParameterNonNullDefault;
+					currentMethod.hasNonNullDefaultForReturnType(srcMethod);
+			ParameterNonNullDefaultProvider needToApplyParameterNonNullDefault =
+					currentMethod.hasNonNullDefaultForParameter(srcMethod);
+			boolean needToApplyNonNullDefault = needToApplyReturnNonNullDefault | needToApplyParameterNonNullDefault.hasAnyNonNullDefault();
 			// compatibility & inheritance do not consider constructors / static methods:
 			boolean isInstanceMethod = !currentMethod.isConstructor() && !currentMethod.isStatic();
 			complain &= isInstanceMethod;
@@ -151,7 +160,7 @@
 			}
 			if (needToApplyNonNullDefault) {
 				if (!usesTypeAnnotations)
-					currentMethod.fillInDefaultNonNullness(srcMethod);
+					currentMethod.fillInDefaultNonNullness(srcMethod, needToApplyReturnNonNullDefault, needToApplyParameterNonNullDefault);
 				else
 					currentMethod.fillInDefaultNonNullness18(srcMethod, scope.environment());
 			}
@@ -227,7 +236,7 @@
 	 *   Index position 0 is used for the return type, positions i+1 for argument i.
 	 */
 	void checkNullSpecInheritance(MethodBinding currentMethod, AbstractMethodDeclaration srcMethod, 
-			boolean hasReturnNonNullDefault, boolean hasParameterNonNullDefault, boolean shouldComplain,
+			boolean hasReturnNonNullDefault, ParameterNonNullDefaultProvider hasParameterNonNullDefault, boolean shouldComplain,
 			MethodBinding inheritedMethod, MethodBinding[] allInheritedMethods, Scope scope, InheritedNonNullnessInfo[] inheritedNonNullnessInfos) 
 	{
 		if(currentMethod.declaringClass.id == TypeIds.T_JavaLangObject) {
@@ -350,7 +359,7 @@
 				// unspecified, may fill in either from super or from default
 				if (inheritedNonNullNess != null) {
 					if (shouldInherit) {
-						if (hasParameterNonNullDefault) {
+						if (hasParameterNonNullDefault.hasNonNullDefaultForParam(i)) {
 							// both inheritance and default: check for conflict?
 							if (shouldComplain
 									&& inheritedNonNullNess == Boolean.FALSE
@@ -373,7 +382,7 @@
 						continue; // compatible by construction, skip complain phase below
 					}
 				}
-				if (hasParameterNonNullDefault) { // conflict with inheritance already checked
+				if (hasParameterNonNullDefault.hasNonNullDefaultForParam(i)) { // conflict with inheritance already checked
 					currentNonNullNess = Boolean.TRUE;
 					if (!useTypeAnnotations)
 						recordArgNonNullness(currentMethod, length, i, currentArgument, Boolean.TRUE);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.java
index 52bbaac..3f747f9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportBinding.java
@@ -30,18 +30,21 @@
 * Answer the receiver's binding type from Binding.BindingID.
 */
 
+@Override
 public final int kind() {
 	return IMPORT;
 }
 public boolean isStatic() {
 	return this.reference != null && this.reference.isStatic();
 }
+@Override
 public char[] readableName() {
 	if (this.onDemand)
 		return CharOperation.concat(CharOperation.concatWith(this.compoundName, '.'), ".*".toCharArray()); //$NON-NLS-1$
 	else
 		return CharOperation.concatWith(this.compoundName, '.');
 }
+@Override
 public String toString() {
 	return "import : " + new String(readableName()); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.java
index 5a8d08c..05158de 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ImportConflictBinding.java
@@ -20,9 +20,11 @@
 	super(compoundName, false, methodBinding, reference);
 	this.conflictingTypeBinding = conflictingTypeBinding;
 }
+@Override
 public char[] readableName() {
 	return CharOperation.concatWith(this.compoundName, '.');
 }
+@Override
 public String toString() {
 	return "method import : " + new String(readableName()); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.java
index f8dce65..c6b5205 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext.java
@@ -74,6 +74,7 @@
         variableSubstitutes[constraint] = constraintSubstitutes;
     }
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(20);
 	buffer.append("InferenceContex for ");//$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
index b2fd528..a70abc0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2016 GK Software AG, and others.
+ * Copyright (c) 2013, 2018 GK Software AG, and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -30,6 +30,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants.BoundCheckStatus;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Sorting;
 
 /**
@@ -148,6 +149,7 @@
 	public static final int APPLICABILITY_INFERRED = 1;
 	/** Invocation Type Inference (18.5.2) has been completed (for some target type). */
 	public static final int TYPE_INFERRED = 2;
+	public static final int TYPE_INFERRED_FINAL = 3; // as above plus asserting that target type was a proper type
 	
 	/** Signals whether any type compatibility makes use of unchecked conversion. */
 	public List<ConstraintFormula> constraintsWithUncheckedConversion;
@@ -162,6 +164,8 @@
 	private BoundSet innerInbox; 
 	/** Not per JLS: signal when current is ready to directly merge all bounds from inner. */
 	private boolean directlyAcceptingInnerBounds = false;
+	/** Not per JLS: pushing bounds from inner to outer may have to be deferred till after overload resolution, store here a runnable to perform the push. */
+	private Runnable pushToOuterJob = null;
 	
 	public static boolean isSameSite(InvocationSite site1, InvocationSite site2) {
 		if (site1 == site2)
@@ -389,6 +393,8 @@
 		
 		this.currentBounds = this.b2.copy();
 		
+		int step = (expectedType == null || expectedType.isProperType(true)) ? TYPE_INFERRED_FINAL : TYPE_INFERRED;
+
 		try {
 			// bullets 1&2: definitions only.
 			if (expectedType != null
@@ -406,9 +412,10 @@
 			}
 
 			if (SHOULD_WORKAROUND_BUG_JDK_8153748) { // "before 18.5.2", but should not spill into b3 ... (heuristically)
-				ReductionResult jdk8153748result = addJDK_8153748ConstraintsFromInvocation(this.invocationArguments, method);
+				ReductionResult jdk8153748result = addJDK_8153748ConstraintsFromInvocation(this.invocationArguments, method, new InferenceSubstitution(this));
 				if (jdk8153748result != null) {
-					this.currentBounds.incorporate(this);
+					if (!this.currentBounds.incorporate(this))
+						return null;
 				}
 			}
 
@@ -464,9 +471,11 @@
 			}
 			// we're done, start reporting:
 			reportUncheckedConversions(solution);
-			return this.currentBounds = solution; // this is final, keep the result:
+			if (step == TYPE_INFERRED_FINAL)
+				this.currentBounds = solution; // this is final, keep the result:
+			return solution;
 		} finally {
-			this.stepCompleted = TYPE_INFERRED;
+			this.stepCompleted = step;
 		}
 	}
 
@@ -475,15 +484,31 @@
 	private void pushBoundsToOuter() {
 		InferenceContext18 outer = this.outerContext;
 		if (outer != null && outer.stepCompleted >= APPLICABILITY_INFERRED) {
-			if (outer.directlyAcceptingInnerBounds) {
-				outer.currentBounds.addBounds(this.currentBounds, this.environment);
-			} else if (outer.innerInbox == null) {
-				outer.innerInbox = this.currentBounds.copy();
+			boolean deferred = outer.currentInvocation instanceof Invocation; // need to wait till after overload resolution?
+			BoundSet toPush = deferred ? this.currentBounds.copy() : this.currentBounds;
+			Runnable job = () -> {
+				if (outer.directlyAcceptingInnerBounds) {
+					outer.currentBounds.addBounds(toPush, this.environment);
+				} else if (outer.innerInbox == null) {
+					outer.innerInbox = deferred ? toPush : toPush.copy(); // copy now, unless already copied on behalf of 'deferred'
+				} else {
+					outer.innerInbox.addBounds(toPush, this.environment);
+				}
+			};
+			if (deferred) {
+				this.pushToOuterJob = job;
 			} else {
-				outer.innerInbox.addBounds(this.currentBounds, this.environment);
+				job.run(); // TODO(stephan): ever reached? for ReferenceExpression? (would need a corresponding new call to flushBoundOutbox()).
 			}
 		}
 	}
+	/** Not JLS: after overload resolution is done, perform the push of type bounds to outer inference, if any. */
+	public void flushBoundOutbox() {
+		if (this.pushToOuterJob != null) {
+			this.pushToOuterJob.run();
+			this.pushToOuterJob = null;
+		}
+	}
 	/** Not JLS: merge pending bounds of inner inference into current. */
 	private void mergeInnerBounds() {
 		if (this.innerInbox != null) {
@@ -506,15 +531,17 @@
 	}
 	// ---
 
-	private ReductionResult addJDK_8153748ConstraintsFromInvocation(Expression[] arguments, MethodBinding method) throws InferenceFailureException {
+	private ReductionResult addJDK_8153748ConstraintsFromInvocation(Expression[] arguments, MethodBinding method, InferenceSubstitution substitution)
+			throws InferenceFailureException
+	{
 		// not per JLS, trying to mimic javac behavior
 		boolean constraintAdded = false;
 		if (arguments != null) {
 			for (int i = 0; i < arguments.length; i++) {
 				Expression argument = arguments[i];
 				TypeBinding parameter = getParameter(method.parameters, i, method.isVarargs());
-				parameter = this.substitute(parameter);
-				ReductionResult result = addJDK_8153748ConstraintsFromExpression(argument, parameter, method);
+				parameter = substitution.substitute(substitution, parameter); 
+				ReductionResult result = addJDK_8153748ConstraintsFromExpression(argument, parameter, method, substitution);
 				if (result == ReductionResult.FALSE)
 					return ReductionResult.FALSE;
 				if (result == ReductionResult.TRUE)
@@ -524,7 +551,10 @@
 		return constraintAdded ? ReductionResult.TRUE : null;
 	}
 
-	private ReductionResult addJDK_8153748ConstraintsFromExpression(Expression argument, TypeBinding parameter, MethodBinding method) throws InferenceFailureException {
+	private ReductionResult addJDK_8153748ConstraintsFromExpression(Expression argument, TypeBinding parameter, MethodBinding method,
+			InferenceSubstitution substitution)
+			throws InferenceFailureException
+	{
 		if (argument instanceof FunctionalExpression) {
 			return addJDK_8153748ConstraintsFromFunctionalExpr((FunctionalExpression) argument, parameter, method);
 		} else if (argument instanceof Invocation && argument.isPolyExpression(method)) {
@@ -532,13 +562,14 @@
 			Expression[] innerArgs = invocation.arguments();
 			MethodBinding innerMethod = invocation.binding();
 			if (innerMethod != null && innerMethod.isValidBinding()) {
-				return addJDK_8153748ConstraintsFromInvocation(innerArgs, innerMethod.original());
+				substitution = enrichSubstitution(substitution, invocation, innerMethod);
+				return addJDK_8153748ConstraintsFromInvocation(innerArgs, innerMethod.shallowOriginal(), substitution);
 			}
 		} else if (argument instanceof ConditionalExpression) {
 			ConditionalExpression ce = (ConditionalExpression) argument;
-			if (addJDK_8153748ConstraintsFromExpression(ce.valueIfTrue, parameter, method) == ReductionResult.FALSE)
+			if (addJDK_8153748ConstraintsFromExpression(ce.valueIfTrue, parameter, method, substitution) == ReductionResult.FALSE)
 				return ReductionResult.FALSE;
-			return addJDK_8153748ConstraintsFromExpression(ce.valueIfFalse, parameter, method);
+			return addJDK_8153748ConstraintsFromExpression(ce.valueIfFalse, parameter, method, substitution);
 		}
 		return null;
 	}
@@ -557,6 +588,15 @@
 		}
 		return null;
 	}
+	
+	InferenceSubstitution enrichSubstitution(InferenceSubstitution substitution, Invocation innerInvocation, MethodBinding innerMethod) {
+		if (innerMethod instanceof ParameterizedGenericMethodBinding) {
+			InferenceContext18 innerContext = innerInvocation.getInferenceContext((ParameterizedMethodBinding) innerMethod);
+			if (innerContext != null)
+				return substitution.addContext(innerContext);
+		}
+		return substitution;
+	}
 
 	private boolean addConstraintsToC(Expression[] exprs, Set<ConstraintFormula> c, MethodBinding method, int inferenceKindForMethod, InvocationSite site)
 			throws InferenceFailureException
@@ -595,6 +635,7 @@
 	private boolean addConstraintsToC_OneExpr(Expression expri, Set<ConstraintFormula> c, TypeBinding fsi, TypeBinding substF, MethodBinding method)
 			throws InferenceFailureException
 	{
+		boolean substFIsProperType = substF.isProperType(true);
 		// -- not per JLS, emulate javac behavior:
 		substF = Scope.substitute(getResultSubstitution(this.b3), substF);
 		// --
@@ -629,7 +670,7 @@
 			}
 		} else if (expri instanceof Invocation && expri.isPolyExpression()) {
 
-			if (substF.isProperType(true)) // https://bugs.openjdk.java.net/browse/JDK-8052325 
+			if (substFIsProperType) // https://bugs.openjdk.java.net/browse/JDK-8052325
 				return true;
 
 			Invocation invocation = (Invocation) expri;
@@ -652,7 +693,11 @@
 					innerContext.inferInvocationApplicability(shallowMethod, argumentTypes, shallowMethod.isConstructor());
 				if (!innerContext.computeB3(invocation, substF, shallowMethod))
 					return false;
-				return innerContext.addConstraintsToC(arguments, c, innerMethod.genericMethod(), innerContext.inferenceKind, invocation);
+				if (innerContext.addConstraintsToC(arguments, c, innerMethod.genericMethod(), innerContext.inferenceKind, invocation)) {
+					this.currentBounds.addBounds(innerContext.currentBounds, this.environment);
+					return true;
+				}
+				return false;
 			} else {
 				int applicabilityKind = getInferenceKind(innerMethod, argumentTypes);
 				return this.addConstraintsToC(arguments, c, innerMethod.genericMethod(), applicabilityKind, invocation);
@@ -691,8 +736,15 @@
 				ReferenceBinding genericType = targetTypeWithWildCards.genericType();
 				TypeBinding[] a = targetTypeWithWildCards.arguments; // a is not-null by construction of parameterizedWithWildcard()
 				TypeBinding[] aprime = getFunctionInterfaceArgumentSolutions(a);
-				// TODO If F<A'1, ..., A'm> is a well-formed type, ...
-				return blockScope.environment().createParameterizedType(genericType, aprime, targetTypeWithWildCards.enclosingType());
+				// If F<A'1, ..., A'm> is a well-formed type, ...
+				ParameterizedTypeBinding ptb = blockScope.environment().createParameterizedType(genericType, aprime, targetTypeWithWildCards.enclosingType());
+				TypeVariableBinding[] vars = ptb.genericType().typeVariables();
+				ParameterizedTypeBinding captured = ptb.capture(blockScope, lambda.sourceStart, lambda.sourceEnd);
+				for (int i = 0; i < vars.length; i++) {
+					if (vars[i].boundCheck(captured, aprime[i], blockScope, lambda) == BoundCheckStatus.MISMATCH)
+						return null;
+				}
+				return ptb;
 			}
 		}
 		return targetTypeWithWildCards;
@@ -1113,12 +1165,15 @@
 						zs[j] = freshCapture(variables[j]);
 					final BoundSet kurrentBoundSet = tmpBoundSet;
 					Substitution theta = new Substitution() {
+						@Override
 						public LookupEnvironment environment() { 
 							return InferenceContext18.this.environment;
 						}
+						@Override
 						public boolean isRawSubstitution() {
 							return false;
 						}
+						@Override
 						public TypeBinding substitute(TypeVariableBinding typeVariable) {
 							for (int j = 0; j < numVars; j++)
 								if (TypeBinding.equalsEquals(variables[j], typeVariable))
@@ -1222,6 +1277,7 @@
 
 	static void sortTypes(TypeBinding[] types) {
 		Arrays.sort(types, new Comparator<TypeBinding>() {
+			@Override
 			public int compare(TypeBinding o1, TypeBinding o2) {
 				int i1 = o1.id, i2 = o2.id; 
 				return (i1<i2 ? -1 : (i1==i2 ? 0 : 1));
@@ -1521,7 +1577,6 @@
 		SuspendedInferenceRecord record = new SuspendedInferenceRecord(this.currentInvocation, this.invocationArguments, this.inferenceVariables, this.inferenceKind, this.usesUncheckedConversion);
 		this.inferenceVariables = null;
 		this.invocationArguments = null;
-		this.currentInvocation = null;
 		this.usesUncheckedConversion = false;
 		return record;
 	}
@@ -1556,12 +1611,15 @@
 
 	private Substitution getResultSubstitution(final BoundSet result) {
 		return new Substitution() {
+			@Override
 			public LookupEnvironment environment() { 
 				return InferenceContext18.this.environment;
 			}
+			@Override
 			public boolean isRawSubstitution() {
 				return false;
 			}
+			@Override
 			public TypeBinding substitute(TypeVariableBinding typeVariable) {
 				if (typeVariable instanceof InferenceVariable) {
 					TypeBinding instantiation = result.getInstantiation((InferenceVariable) typeVariable, InferenceContext18.this.environment);
@@ -1597,8 +1655,12 @@
 	 * unless the given candidate is tolerable to be compatible with buggy javac.
 	 */
 	public MethodBinding getReturnProblemMethodIfNeeded(TypeBinding expectedType, MethodBinding method) {
-		if (InferenceContext18.SIMULATE_BUG_JDK_8026527 && expectedType != null && method.returnType instanceof ReferenceBinding) {
-			if (method.returnType.erasure().isCompatibleWith(expectedType))
+		if (InferenceContext18.SIMULATE_BUG_JDK_8026527 && expectedType != null
+				&& !(method.original() instanceof SyntheticFactoryMethodBinding)
+				&& (method.returnType instanceof ReferenceBinding || method.returnType instanceof ArrayBinding)) {
+			if (!expectedType.isProperType(true))
+				return null; // not ready
+			if (this.environment.convertToRawType(method.returnType.erasure(), false).isCompatibleWith(expectedType))
 				return method; // don't count as problem.
 		}
 		/* We used to check if expected type is null and if so return method, but that is wrong - it injects an incompatible method into overload resolution.
@@ -1612,12 +1674,14 @@
 	}
 
 	// debugging:
+	@Override
 	public String toString() {
 		StringBuffer buf = new StringBuffer("Inference Context"); //$NON-NLS-1$
 		switch (this.stepCompleted) {
 			case NOT_INFERRED: buf.append(" (initial)");break; //$NON-NLS-1$
 			case APPLICABILITY_INFERRED: buf.append(" (applicability inferred)");break; //$NON-NLS-1$
 			case TYPE_INFERRED: buf.append(" (type inferred)");break; //$NON-NLS-1$
+			case TYPE_INFERRED_FINAL: buf.append(" (type inferred final)");break; //$NON-NLS-1$
 		}
 		switch (this.inferenceKind) {
 			case CHECK_STRICT: buf.append(" (strict)");break; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.java
index cb59937..ddf391e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceSubstitution.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2015 GK Software AG.
+ * Copyright (c) 2013, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,26 +17,68 @@
 
 	private LookupEnvironment environment;
 	private InferenceVariable[] variables;
-	private InvocationSite site;
+	private InvocationSite[] sites;
 
 	public InferenceSubstitution(LookupEnvironment environment, InferenceVariable[] variables, InvocationSite site) {
 		this.environment = environment;
 		this.variables = variables;
-		this.site = site;
+		this.sites = new InvocationSite[] {site};
 	}
 
 	public InferenceSubstitution(InferenceContext18 context) {
 		this(context.environment, context.inferenceVariables, context.currentInvocation);
 	}
 
+	/** Answer a substitution that is able to substitute into inference variables of several inference contexts (outer & inner) */
+	public InferenceSubstitution addContext(InferenceContext18 otherContext) {
+		InferenceSubstitution subst = new InferenceSubstitution(this.environment, null, null) {
+
+			@Override
+			protected boolean isSameParameter(TypeBinding p1, TypeBinding originalType) {
+				if (TypeBinding.equalsEquals(p1, originalType))
+					return true;
+				if (p1 instanceof TypeVariableBinding && originalType instanceof TypeVariableBinding) {
+					// may need to 'normalize' if inner & outer have different degree of parameterization / original:
+					TypeVariableBinding var1= (TypeVariableBinding) p1, var2 = (TypeVariableBinding) originalType;
+					Binding declaring1 = var1.declaringElement;
+					Binding declaring2 = var2.declaringElement;
+					if (declaring1 instanceof MethodBinding && declaring2 instanceof MethodBinding) {
+						declaring1 = ((MethodBinding) declaring1).original();
+						declaring2 = ((MethodBinding) declaring2).original();
+					}
+					// TODO: handle TypeBinding if needed
+					return declaring1 == declaring2 && var1.rank == var2.rank;
+				}
+				return false;
+			}
+		};
+		
+		int l1 = this.sites.length;
+		subst.sites = new InvocationSite[l1+1];
+		System.arraycopy(this.sites, 0, subst.sites, 0, l1);
+		subst.sites[l1] = otherContext.currentInvocation;
+
+		subst.variables = this.variables;
+
+// TODO: switch to also combining variables, if needed (filter duplicates?):
+//		l1 = this.variables.length;
+//		int l2 = otherContext.inferenceVariables.length;
+//		subst.variables = new InferenceVariable[l1+l2];
+//		System.arraycopy(this.variables, 0, subst.variables, 0, l1);
+//		System.arraycopy(otherContext.inferenceVariables, 0, subst.variables, l1, l2);
+
+		return subst;
+	}
+
 	/**
 	 * Override method {@link Scope.Substitutor#substitute(Substitution, TypeBinding)}, 
 	 * to add substitution of types other than type variables.
 	 */
+	@Override
 	public TypeBinding substitute(Substitution substitution, TypeBinding originalType) {
 		for (int i = 0; i < this.variables.length; i++) {
 			InferenceVariable variable = this.variables[i];
-			if (InferenceContext18.isSameSite(this.site, variable.site) && TypeBinding.equalsEquals(getP(i), originalType)) {
+			if (isInSites(variable.site) && isSameParameter(getP(i), originalType)) {
 				if (this.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled && originalType.hasNullTypeAnnotations())
 					return this.environment.createAnnotatedType(variable.withoutToplevelNullAnnotation(), originalType.getTypeAnnotations());
 				return variable;
@@ -46,6 +88,17 @@
 		return super.substitute(substitution, originalType);
 	}
 
+	private boolean isInSites(InvocationSite otherSite) {
+		for (int i = 0; i < this.sites.length; i++)
+			if (InferenceContext18.isSameSite(this.sites[i], otherSite))
+				return true;
+		return false;
+	}
+
+	protected boolean isSameParameter(TypeBinding p1, TypeBinding originalType) {
+		return TypeBinding.equalsEquals(p1, originalType);
+	}
+
 	/**
 	 * Get the type corresponding to the ith inference variable.
 	 * Default behavior is to answer the inference variable's type parameter.
@@ -55,6 +108,7 @@
 		return this.variables[i].typeParameter;
 	}
 
+	@Override
 	public TypeBinding substitute(TypeVariableBinding typeVariable) {
 		ReferenceBinding superclass = typeVariable.superclass;
 		ReferenceBinding[] superInterfaces = typeVariable.superInterfaces;
@@ -93,10 +147,12 @@
 		return typeVariable;
 	}
 
+	@Override
 	public LookupEnvironment environment() {
 		return this.environment;
 	}
 
+	@Override
 	public boolean isRawSubstitution() {
 		// FIXME Auto-generated method stub
 		return false;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.java
index 4847de9..5fc180f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InferenceVariable.java
@@ -87,11 +87,17 @@
 	int varId; // this is used for constructing a source name like T#0.
 	
 	private InferenceVariable(TypeBinding typeParameter, int parameterRank, int iVarId, InvocationSite site, LookupEnvironment environment, ReferenceBinding object) {
-		this(typeParameter, parameterRank, site,
-				CharOperation.concat(typeParameter.shortReadableName(), Integer.toString(iVarId).toCharArray(), '#'),
-				environment, object);
+		this(typeParameter, parameterRank, site, makeName(typeParameter, iVarId), environment, object);
 		this.varId = iVarId;
 	}
+	private static char[] makeName(TypeBinding typeParameter, int iVarId) {
+		if (typeParameter.getClass() == TypeVariableBinding.class) {
+			return CharOperation.concat(typeParameter.shortReadableName(), Integer.toString(iVarId).toCharArray(), '#');
+		}
+		return CharOperation.concat(
+					CharOperation.concat('(', typeParameter.shortReadableName(), ')'),
+					Integer.toString(iVarId).toCharArray(), '#');
+	}
 	private InferenceVariable(TypeBinding typeParameter, int parameterRank, InvocationSite site, char[] sourceName, LookupEnvironment environment, ReferenceBinding object) {
 		super(sourceName, null/*declaringElement*/, parameterRank, environment);
 		this.site = site;
@@ -121,18 +127,22 @@
 		return clone;
 	}
 
+	@Override
 	public InferenceVariable prototype() {
 		return this.prototype;
 	}
 
+	@Override
 	public char[] constantPoolName() {
 		throw new UnsupportedOperationException();
 	}
 
+	@Override
 	public PackageBinding getPackage() {
 		throw new UnsupportedOperationException();
 	}
 
+	@Override
 	public boolean isCompatibleWith(TypeBinding right, Scope scope) {
 		// if inference variables are ever checked for compatibility
 		// (like during inner resolve of a ReferenceExpression during inference)
@@ -140,48 +150,59 @@
 		return true;
 	}
 
+	@Override
 	public boolean isProperType(boolean admitCapture18) {
 		return false;
 	}
 
+	@Override
 	TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 		if (TypeBinding.equalsEquals(this, var))
 			return substituteType;
 		return this;
 	}
 
+	@Override
 	void collectInferenceVariables(Set<InferenceVariable> variables) {
 		variables.add(this);
 	}
 
+	@Override
 	public ReferenceBinding[] superInterfaces() {
 		return Binding.NO_SUPERINTERFACES;
 	}
 
+	@Override
 	public char[] qualifiedSourceName() {
 		throw new UnsupportedOperationException();
 	}
 
+	@Override
 	public char[] sourceName() {
 		return this.sourceName;
 	}
 
+	@Override
 	public char[] readableName() {
 		return this.sourceName;
 	}
 
+	@Override
 	public boolean hasTypeBit(int bit) {
 		throw new UnsupportedOperationException();
 	}
 	
+	@Override
 	public String debugName() {
 		return String.valueOf(this.sourceName);
 	}
 	
+	@Override
 	public String toString() {
 		return debugName();
 	}
 	
+	@Override
 	public int hashCode() {
 		int code = this.typeParameter.hashCode() + 17 * this.rank;
 		if (this.site != null) {
@@ -190,6 +211,7 @@
 		}
 		return code;
 	}
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof InferenceVariable))
 			return false;
@@ -199,6 +221,7 @@
 				&& TypeBinding.equalsEquals(this.typeParameter, other.typeParameter);
 	}
 
+	@Override
 	public TypeBinding erasure() {
 		// lazily initialize field that may be required in super.erasure():
 		if (this.superclass == null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.java
index b1e77fd..7bef16d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/IntersectionTypeBinding18.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
@@ -14,6 +14,8 @@
  *							Bug 428019 - [1.8][compiler] Type inference failure with nested generic invocation.
  *     Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for
  *                          Bug 405104 - [1.8][compiler][codegen] Implement support for serializeable lambdas
+ *     Jesper S Møller - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
+ *                          Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
@@ -34,7 +36,7 @@
 		this.intersectingTypes = intersectingTypes;
 		this.length = intersectingTypes.length;
 		if (!intersectingTypes[0].isClass()) {
-			this.javaLangObject = environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null);
+			this.javaLangObject = environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null);
 			this.modifiers |= ClassFileConstants.AccInterface;
 		}
 	}
@@ -54,12 +56,12 @@
 	}
 
 	@Override
-	protected MethodBinding[] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards) throws InvalidInputException {
+	protected MethodBinding[] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards, boolean filterDefaultMethods) throws InvalidInputException {
 		int typesLength = this.intersectingTypes.length;
 		MethodBinding[][] methods = new MethodBinding[typesLength][];
 		int contractsLength = 0;
 		for (int i = 0; i < typesLength; i++) {
-			methods[i] = this.intersectingTypes[i].getInterfaceAbstractContracts(scope, replaceWildcards);
+			methods[i] = this.intersectingTypes[i].getInterfaceAbstractContracts(scope, replaceWildcards, true);
 			contractsLength += methods[i].length;
 		}
 		MethodBinding[] contracts = new MethodBinding[contractsLength];
@@ -72,6 +74,7 @@
 		return contracts;
 	}
 
+	@Override
 	public boolean hasTypeBit(int bit) { // Stephan ??
 		for (int i = 0; i < this.length; i++) {		
 			if (this.intersectingTypes[i].hasTypeBit(bit))
@@ -80,10 +83,12 @@
 		return false;
 	}
 
+	@Override
 	public boolean canBeInstantiated() {
 		return false;
 	}
 	
+	@Override
 	public boolean canBeSeenBy(PackageBinding invocationPackage) {
 		for (int i = 0; i < this.length; i++) {
 			if (!this.intersectingTypes[i].canBeSeenBy(invocationPackage))
@@ -92,6 +97,7 @@
 		return true;
 	}
 	
+	@Override
 	public boolean canBeSeenBy(Scope scope) {
 		for (int i = 0; i < this.length; i++) {
 			if (!this.intersectingTypes[i].canBeSeenBy(scope))
@@ -100,6 +106,7 @@
 		return true;
 	}
 	
+	@Override
 	public boolean canBeSeenBy(ReferenceBinding receiverType, ReferenceBinding invocationType) {
 		for (int i = 0; i < this.length; i++) {
 			if (!this.intersectingTypes[i].canBeSeenBy(receiverType, invocationType))
@@ -109,22 +116,27 @@
 	}
 	
 	
+	@Override
 	public char[] constantPoolName() {
 		return this.intersectingTypes[0].constantPoolName();
 	}
 
+	@Override
 	public PackageBinding getPackage() {
 		throw new UnsupportedOperationException(); // cannot be referred to
 	}
 	
+	@Override
 	public ReferenceBinding[] getIntersectingTypes() {
 		return this.intersectingTypes;
 	}
 
+	@Override
 	public ReferenceBinding superclass() {
 		return this.intersectingTypes[0].isClass() ? this.intersectingTypes[0] : this.javaLangObject; 
 	}
 	
+	@Override
 	public ReferenceBinding [] superInterfaces() {
 		if (this.intersectingTypes[0].isClass()) {
 			ReferenceBinding [] superInterfaces = new ReferenceBinding[this.length - 1];
@@ -141,6 +153,7 @@
 	
 	/* Answer true if the receiver type can be assigned to the argument type (right)
 	 */
+	@Override
 	public boolean isCompatibleWith(TypeBinding right, Scope scope) {
 
 		// easy way out?
@@ -185,16 +198,17 @@
 	}
 	
 	@Override
-	public boolean isSubtypeOf(TypeBinding other) {
+	public boolean isSubtypeOf(TypeBinding other, boolean simulatingBugJDK8026527) {
 		if (TypeBinding.equalsEquals(this, other))
 			return true;
 		for (int i = 0; i < this.intersectingTypes.length; i++) {
-			if (this.intersectingTypes[i].isSubtypeOf(other))
+			if (this.intersectingTypes[i].isSubtypeOf(other, false))
 				return true;
 		}
 		return false;
 	}
 
+	@Override
 	public char[] qualifiedSourceName() {
 		StringBuffer qualifiedSourceName = new StringBuffer(16);
 		for (int i = 0; i < this.length; i++) {		
@@ -205,6 +219,7 @@
 		return qualifiedSourceName.toString().toCharArray();
 	}
 
+	@Override
 	public char[] sourceName() {
 		StringBuffer srcName = new StringBuffer(16);
 		for (int i = 0; i < this.length; i++) {		
@@ -215,6 +230,7 @@
 		return srcName.toString().toCharArray();
 	}
 
+	@Override
 	public char[] readableName() {
 		StringBuffer readableName = new StringBuffer(16);
 		for (int i = 0; i < this.length; i++) {		
@@ -224,6 +240,7 @@
 		}
 		return readableName.toString().toCharArray();
 	}
+	@Override
 	public char[] shortReadableName() {
 		StringBuffer shortReadableName = new StringBuffer(16);
 		for (int i = 0; i < this.length; i++) {		
@@ -233,12 +250,15 @@
 		}
 		return shortReadableName.toString().toCharArray();
 	}
+	@Override
 	public boolean isIntersectionType18() {
 		return true;
 	}
+	@Override
 	public int kind() {
 		return Binding.INTERSECTION_TYPE18;
 	}
+	@Override
 	public String debugName() {
 		StringBuffer debugName = new StringBuffer(16);
 		for (int i = 0; i < this.length; i++) {		
@@ -248,6 +268,7 @@
 		}
 		return debugName.toString();
 	}
+	@Override
 	public String toString() {
 	    return debugName();
 	}
@@ -272,6 +293,24 @@
 	}
 	
 	@Override
+	public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		ReferenceBinding[] projectedTypes = new ReferenceBinding[this.intersectingTypes.length];
+		for (int i = 0; i < this.intersectingTypes.length; ++i) {
+			projectedTypes[i] =  this.intersectingTypes[i].upwardsProjection(scope, mentionedTypeVariables);
+		}
+		return (ReferenceBinding) scope.environment().createIntersectionType18(projectedTypes);
+	}
+
+	@Override
+	public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		ReferenceBinding[] projectedTypes = new ReferenceBinding[this.intersectingTypes.length];
+		for (int i = 0; i < this.intersectingTypes.length; ++i) {
+			projectedTypes[i] = this.intersectingTypes[i].downwardsProjection(scope, mentionedTypeVariables);
+		}
+		return (ReferenceBinding) scope.environment().createIntersectionType18(projectedTypes);
+	}
+
+	@Override
 	public boolean mentionsAny(TypeBinding[] parameters, int idx) {
 		if (super.mentionsAny(parameters, idx))
 			return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite.java
index b5dce26..376cb50 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/InvocationSite.java
@@ -45,21 +45,35 @@
 		public EmptyWithAstNode(ASTNode node) {
 			this.node = node;
 		}
+		@Override
 		public TypeBinding[] genericTypeArguments() { return null;}
+		@Override
 		public boolean isSuperAccess() {return false;}
+		@Override
 		public boolean isTypeAccess() {return false;}
+		@Override
 		public void setActualReceiverType(ReferenceBinding receiverType) {/* empty */}
+		@Override
 		public void setDepth(int depth) {/* empty */ }
+		@Override
 		public void setFieldIndex(int depth) {/* empty */ }
+		@Override
 		public int sourceEnd() {return this.node.sourceEnd; }
+		@Override
 		public int sourceStart() {return this.node.sourceStart; }
+		@Override
 		public TypeBinding invocationTargetType() { return null; }
+		@Override
 		public boolean receiverIsImplicitThis() { return false; }
+		@Override
 		public InferenceContext18 freshInferenceContext(Scope scope) { return null; }
+		@Override
 		public ExpressionContext getExpressionContext() { return ExpressionContext.VANILLA_CONTEXT; }
 		@Override
 		public boolean isQualifiedSuper() { return false; }
+		@Override
 		public boolean checkingPotentialCompatibility() { return false; }
+		@Override
 		public void acceptPotentiallyCompatibleMethods(MethodBinding[] methods) { /* ignore */ }
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.java
index be0ce94..cd0d99e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalTypeBinding.java
@@ -17,7 +17,6 @@
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CaseStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
@@ -108,25 +107,7 @@
 	return this.superclass; // default answer
 }
 
-protected void checkRedundantNullnessDefaultRecurse(ASTNode location, Annotation[] annotations, long nullBits, boolean useNullTypeAnnotations) {
-	
-	if (!isPrototype()) throw new IllegalStateException();
-	
-	long outerDefault = 0;
-	if (this.enclosingMethod != null) {
-		outerDefault = useNullTypeAnnotations 
-				? this.enclosingMethod.defaultNullness 
-				: this.enclosingMethod.tagBits & (TagBits.AnnotationNonNullByDefault|TagBits.AnnotationNullUnspecifiedByDefault);
-	}
-	if (outerDefault != 0) {
-		if (outerDefault == nullBits) {
-			this.scope.problemReporter().nullDefaultAnnotationIsRedundant(location, annotations, this.enclosingMethod);
-		}
-		return;
-	}
-	super.checkRedundantNullnessDefaultRecurse(location, annotations, nullBits, useNullTypeAnnotations);
-}
-
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	if (!isPrototype())
 		return this.prototype.computeUniqueKey(isLeaf);
@@ -156,6 +137,7 @@
 	return uniqueKey;
 }
 
+@Override
 public char[] constantPoolName() /* java/lang/Object */ {
 	if (this.constantPoolName != null)
 		return this.constantPoolName;
@@ -169,12 +151,14 @@
 	return this.constantPoolName;	
 }
 
+@Override
 public TypeBinding clone(TypeBinding outerType) {
 	LocalTypeBinding copy = new LocalTypeBinding(this);
 	copy.enclosingType = (SourceTypeBinding) outerType;
 	return copy;
 }
 
+@Override
 public int hashCode() {
 	return this.enclosingType.hashCode();
 }
@@ -183,6 +167,7 @@
  * Slam the source name so that the signature is syntactically correct.
  * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=99686)
  */
+@Override
 public char[] genericTypeSignature() {
 	
 	if (!isPrototype())
@@ -197,6 +182,7 @@
 	return super.genericTypeSignature();
 }
 
+@Override
 public char[] readableName() /*java.lang.Object,  p.X<T> */ {
     char[] readableName;
 	if (isAnonymousType()) {
@@ -222,6 +208,7 @@
 	return readableName;
 }
 
+@Override
 public char[] shortReadableName() /*Object*/ {
     char[] shortReadableName;
 	if (isAnonymousType()) {
@@ -271,6 +258,7 @@
  * Slam the source name so that the signature is syntactically correct.
  * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=102284)
  */
+@Override
 public char[] signature() {
 	
 	if (!isPrototype())
@@ -285,6 +273,7 @@
 	return super.signature();
 }
 
+@Override
 public char[] sourceName() {
 	if (isAnonymousType()) {
 		return CharOperation.concat(TypeConstants.ANONYM_PREFIX, anonymousOriginalSuperType().sourceName(), TypeConstants.ANONYM_SUFFIX);
@@ -292,6 +281,7 @@
 		return this.sourceName;
 }
 
+@Override
 public String toString() {
 	if (this.hasTypeAnnotations())
 		return annotatedDebugName() + " (local)"; //$NON-NLS-1$
@@ -306,6 +296,7 @@
 /* Trigger the dependency mechanism forcing the innerclass emulation
 * to be propagated to all dependent source types.
 */
+@Override
 public void updateInnerEmulationDependents() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.dependents != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.java
index a99143c..e8488d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LocalVariableBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann <stephan@cs.tu-berlin.de> - Contributions for
@@ -14,6 +14,9 @@
  *								bug 365859 - [compiler][null] distinguish warnings based on flow analysis vs. null annotations
  *								bug 331649 - [compiler][null] consider null annotations for fields
  *								Bug 466308 - [hovering] Javadoc header for parameter is wrong with annotation-based null analysis
+ *     Jesper S Møller <jesper@selskabet.org> -  Contributions for
+ *								Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
+ *
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -72,6 +75,7 @@
 	/* API
 	* Answer the receiver's binding type from Binding.BindingID.
 	*/
+	@Override
 	public final int kind() {
 		return LOCAL;
 	}
@@ -87,6 +91,7 @@
 	 * without parameter names (see org.aspectj.org.eclipse.jdt.internal.core.util.BindingKeyResolver.SyntheticLocalVariableBinding):
 	 *    p.X { void foo(int i0, int i1) { } } --> Lp/X;.foo()V#arg1#0#1
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		StringBuffer buffer = new StringBuffer();
 
@@ -160,6 +165,7 @@
 		return uniqueKey;
 	}
 
+	@Override
 	public AnnotationBinding[] getAnnotations() {
 		if (this.declaringScope == null) {
 			if ((this.tagBits & TagBits.AnnotationResolved) != 0) {
@@ -245,14 +251,15 @@
 		this.initializationCount++;
 	}
 
-	public void setAnnotations(AnnotationBinding[] annotations, Scope scope) {
+	@Override
+	public void setAnnotations(AnnotationBinding[] annotations, Scope scope, boolean forceStore) {
 		// note: we don's use this.declaringScope because we might be called before Scope.addLocalVariable(this)
 		//       which is where this.declaringScope is set.
 		if (scope == null)
 			return;
 		SourceTypeBinding sourceType = scope.enclosingSourceType();
 		if (sourceType != null)
-			sourceType.storeAnnotations(this, annotations);
+			sourceType.storeAnnotations(this, annotations, forceStore);
 	}
 
 	public void resetInitializations() {
@@ -260,6 +267,7 @@
 		this.initializationPCs = null;
 	}
 
+	@Override
 	public String toString() {
 
 		String s = super.toString();
@@ -287,6 +295,7 @@
 		return s;
 	}
 
+	@Override
 	public boolean isParameter() {
 		return ((this.tagBits & TagBits.IsArgument) != 0);
 	}
@@ -308,4 +317,12 @@
 		}
 		return null;
 	}
+	
+	public void markInitialized() {
+		// Signals that the type is correctly set now - This is for extension in subclasses
+	}
+	public void markReferenced() {
+		// Signal that the name is used - This is for extension in subclasses
+	}
+	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
index d8f7a35..b050177 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,11 +38,14 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Function;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFilePool;
@@ -54,6 +58,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ITypeRequestor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfPackage;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 
@@ -70,27 +75,39 @@
 	 * Map from typeBinding -> accessRestriction rule
 	 */
 	private Map accessRestrictions;
-	ImportBinding[] defaultImports;
+	ImportBinding[] defaultImports;				// ROOT_ONLY
+	/**
+	 * The root environment driving the current compilation.
+	 * Other mutable fields in this class marked as ROOT_ONLY must always be accessed from the root environment.
+	 * It is assumed that external clients only know the root environment, whereas calls internally in the compiler
+	 * have to delegate to root where necessary.
+	 * Immutable fields with "global" semantics are SHARED among environments via aliasing.
+	 */
+	public final LookupEnvironment root;
+	public ModuleBinding UnNamedModule;
+	public ModuleBinding JavaBaseModule;
+	public ModuleBinding module;
 	public PackageBinding defaultPackage;
+	/** All visible toplevel packages, i.e. observable packages associated with modules read by the current module. */
 	HashtableOfPackage knownPackages;
 	// AspectJ Extension - raised visibility
-	protected int lastCompletedUnitIndex = -1;
-	protected int lastUnitIndex = -1;
+	protected int lastCompletedUnitIndex = -1; // ROOT_ONLY
+	protected int lastUnitIndex = -1; // ROOT_ONLY
 	// End AspectJ Extension
 
-	TypeSystem typeSystem;
+	TypeSystem typeSystem;					 	// SHARED
 	
-	public INameEnvironment nameEnvironment;
-	public CompilerOptions globalOptions;
+	public INameEnvironment nameEnvironment;	// SHARED
+	public CompilerOptions globalOptions;		// SHARED
 
-	public ProblemReporter problemReporter;
-	public ClassFilePool classFilePool;
+	public ProblemReporter problemReporter; 	// SHARED
+	public ClassFilePool classFilePool; 		// SHARED
 	// indicate in which step on the compilation we are.
 	// step 1 : build the reference binding
 	// step 2 : conect the hierarchy (connect bindings)
 	// step 3 : build fields and method bindings.
-	protected int stepCompleted; // AspectJ Extension - raised visibility
-	public ITypeRequestor typeRequestor;
+	protected int stepCompleted; // ROOT_ONLY AspectJ Extension - raised visibility
+	public ITypeRequestor typeRequestor; // SHARED
 
 	private SimpleLookupTable uniqueParameterizedGenericMethodBindings;
 	
@@ -98,14 +115,18 @@
 	private SimpleLookupTable uniquePolymorphicMethodBindings;
 	private SimpleLookupTable uniqueGetClassMethodBinding; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=300734
 
-	public CompilationUnitDeclaration unitBeingCompleted = null; // only set while completing units
+	boolean useModuleSystem;					// true when compliance >= 9 and nameEnvironment is module aware
+	// key is a string with the module name value is a module binding
+	public HashtableOfModule knownModules;		// SHARED
+
+	public CompilationUnitDeclaration unitBeingCompleted = null; // only set while completing units -- ROOT_ONLY
 	public Object missingClassFileLocation = null; // only set when resolving certain references, to help locating problems
     // AspectJ Extension - raised visibility
-	protected CompilationUnitDeclaration[] units = new CompilationUnitDeclaration[4];
+	protected CompilationUnitDeclaration[] units = new CompilationUnitDeclaration[4]; // ROOT_ONLY
 	private MethodVerifier verifier;
 
 	private ArrayList missingTypes;
-	Set<SourceTypeBinding> typesBeingConnected;
+	Set<SourceTypeBinding> typesBeingConnected;	// SHARED
 	public boolean isProcessingAnnotations = false;
 	public boolean mayTolerateMissingType = false;
 
@@ -115,25 +136,30 @@
 
 	AnnotationBinding nonNullAnnotation;
 	AnnotationBinding nullableAnnotation;
-	
+
 	Map<String,Integer> allNullAnnotations = null;
 
-	final List<MethodBinding> deferredEnumMethods = new ArrayList<>(); // during early initialization we cannot mark Enum-methods as nonnull.
+	final List<MethodBinding> deferredEnumMethods; // SHARED: during early initialization we cannot mark Enum-methods as nonnull.
 
 	/** Global access to the outermost active inference context as the universe for inference variable interning. */
 	InferenceContext18 currentInferenceContext;
-	
+
 	// AspectJ extension - raised visibility to protected on these four fields
 	protected final static int BUILD_FIELDS_AND_METHODS = 4;
 	protected final static int BUILD_TYPE_HIERARCHY = 1;
 	protected final static int CHECK_AND_SET_IMPORTS = 2;
 	protected final static int CONNECT_TYPE_HIERARCHY = 3;
 
+
 	static final ProblemPackageBinding TheNotFoundPackage = new ProblemPackageBinding(CharOperation.NO_CHAR, NotFound);
 	static final ProblemReferenceBinding TheNotFoundType = new ProblemReferenceBinding(CharOperation.NO_CHAR_CHAR, null, NotFound);
+	static final ModuleBinding TheNotFoundModule = new ModuleBinding(CharOperation.NO_CHAR);
 
-
+/** Construct the root LookupEnvironment, corresponding to the UnNamedModule. */
 public LookupEnvironment(ITypeRequestor typeRequestor, CompilerOptions globalOptions, ProblemReporter problemReporter, INameEnvironment nameEnvironment) {
+	this.root = this;
+	this.UnNamedModule = new ModuleBinding.UnNamedModule(this);
+	this.module = this.UnNamedModule;
 	this.typeRequestor = typeRequestor;
 	this.globalOptions = globalOptions;
 	this.problemReporter = problemReporter;
@@ -147,7 +173,55 @@
 	this.accessRestrictions = new HashMap(3);
 	this.classFilePool = ClassFilePool.newInstance();
 	this.typesBeingConnected = new HashSet<>();
+	this.deferredEnumMethods = new ArrayList<>();
 	this.typeSystem = this.globalOptions.sourceLevel >= ClassFileConstants.JDK1_8 && this.globalOptions.storeAnnotations ? new AnnotatableTypeSystem(this) : new TypeSystem(this);
+	this.knownModules = new HashtableOfModule();
+	this.useModuleSystem = nameEnvironment instanceof IModuleAwareNameEnvironment && globalOptions.complianceLevel >= ClassFileConstants.JDK9;
+	this.resolutionListeners = new IQualifiedTypeResolutionListener[0];
+}
+
+/** Construct a specific LookupEnvironment, corresponding to the given module. */
+public LookupEnvironment(LookupEnvironment rootEnv, ModuleBinding module) { // AspectJ: raised to public from default
+	this.root = rootEnv;
+	this.UnNamedModule = rootEnv.UnNamedModule;
+	this.module = module;
+	this.typeRequestor = rootEnv.typeRequestor;
+	this.globalOptions = rootEnv.globalOptions;
+	this.problemReporter = rootEnv.problemReporter;
+	this.defaultPackage = new PackageBinding(this); // assume the default package always exists
+	this.defaultImports = null;
+	this.nameEnvironment = rootEnv.nameEnvironment;
+	this.knownPackages = new HashtableOfPackage();
+	this.uniqueParameterizedGenericMethodBindings = new SimpleLookupTable(3);
+	this.uniquePolymorphicMethodBindings = new SimpleLookupTable(3);
+	this.missingTypes = null;
+	this.accessRestrictions = new HashMap(3);
+	this.classFilePool = rootEnv.classFilePool;
+	this.typesBeingConnected = rootEnv.typesBeingConnected;
+	this.deferredEnumMethods = rootEnv.deferredEnumMethods;
+	this.typeSystem = rootEnv.typeSystem;
+	// knownModules is unused in specific LookupEnvironments
+	this.useModuleSystem = rootEnv.useModuleSystem;
+}
+
+// NOTE: only for resolving!
+public ModuleBinding getModule(char[] name) {
+	if (this.root != this)
+		return this.root.getModule(name);
+	if (name == null || name == ModuleBinding.UNNAMED || CharOperation.equals(name, ModuleBinding.ALL_UNNAMED))
+		return this.UnNamedModule;
+	ModuleBinding moduleBinding = this.knownModules.get(name);
+	if (moduleBinding == null) {
+		if (this.useModuleSystem) {
+			IModule mod = ((IModuleAwareNameEnvironment) this.nameEnvironment).getModule(name);
+			if (mod != null) {
+				this.typeRequestor.accept(mod, this);
+				moduleBinding = this.root.knownModules.get(name);
+			}
+		} else 
+			return this.UnNamedModule;
+	}
+	return moduleBinding;
 }
 
 /**
@@ -155,57 +229,227 @@
  * Answer null if the name cannot be found.
  */
 
-public ReferenceBinding askForType(char[][] compoundName) {
-	NameEnvironmentAnswer answer = this.nameEnvironment.findType(compoundName);
-	if (answer == null) return null;
-
-	if (answer.isBinaryType()) {
-		// the type was found as a .class file
-		this.typeRequestor.accept(answer.getBinaryType(), computePackageFrom(compoundName, false /* valid pkg */), answer.getAccessRestriction());
-	} else if (answer.isCompilationUnit()) {
-		// the type was found as a .java file, try to build it then search the cache
-		this.typeRequestor.accept(answer.getCompilationUnit(), answer.getAccessRestriction());
-	} else if (answer.isSourceType()) {
-		// the type was found as a source model
-		this.typeRequestor.accept(answer.getSourceTypes(), computePackageFrom(compoundName, false /* valid pkg */), answer.getAccessRestriction());
+public ReferenceBinding askForType(char[][] compoundName, /*@NonNull*/ModuleBinding clientModule) {
+	assert clientModule != null : "lookup needs a module"; //$NON-NLS-1$
+	NameEnvironmentAnswer[] answers = null;
+	if (this.useModuleSystem) {
+		IModuleAwareNameEnvironment moduleEnv = (IModuleAwareNameEnvironment) this.nameEnvironment;
+		answers = askForTypeFromModules(clientModule, clientModule.getAllRequiredModules(),
+				mod -> moduleEnv.findType(compoundName, mod.nameForLookup()));
+	} else {
+		NameEnvironmentAnswer answer = this.nameEnvironment.findType(compoundName);
+		if (answer != null) {
+			answer.moduleBinding = this.module;
+			answers = new NameEnvironmentAnswer[] { answer };
+		}
 	}
-	return getCachedType(compoundName);
+	if (answers == null)
+		return null;
+
+	ReferenceBinding candidate = null;
+	for (NameEnvironmentAnswer answer : answers) {
+		if (answer == null) continue;
+
+		ModuleBinding answerModule = answer.moduleBinding != null ? answer.moduleBinding : this.UnNamedModule;
+	
+		if (answer.isBinaryType()) {
+			// the type was found as a .class file
+			PackageBinding pkg = answerModule.environment.computePackageFrom(compoundName, false /* valid pkg */);
+			this.typeRequestor.accept(answer.getBinaryType(), pkg, answer.getAccessRestriction());
+			ReferenceBinding binding = pkg.getType0(compoundName[compoundName.length - 1]);
+			if (binding instanceof BinaryTypeBinding) {
+				((BinaryTypeBinding) binding).module = answerModule;
+				if (pkg.enclosingModule == null)
+					pkg.enclosingModule = answerModule;
+			}
+		} else if (answer.isCompilationUnit()) {
+			// the type was found as a .java file, try to build it then search the cache
+			this.typeRequestor.accept(answer.getCompilationUnit(), answer.getAccessRestriction());
+		} else if (answer.isSourceType()) {
+			// the type was found as a source model
+			PackageBinding pkg = answerModule.environment.computePackageFrom(compoundName, false /* valid pkg */);
+			this.typeRequestor.accept(answer.getSourceTypes(), pkg, answer.getAccessRestriction());
+			ReferenceBinding binding = pkg.getType0(compoundName[compoundName.length - 1]);
+			if (binding instanceof SourceTypeBinding) {
+				((SourceTypeBinding) binding).module = answerModule;
+				if (pkg.enclosingModule == null)
+					pkg.enclosingModule = answerModule;
+			}
+		}
+		candidate = combine(candidate, answerModule.environment.getCachedType(compoundName), clientModule);
+	}
+	return candidate;
 }
+
 /* Ask the oracle for a type named name in the packageBinding.
 * Answer null if the name cannot be found.
 */
-
-ReferenceBinding askForType(PackageBinding packageBinding, char[] name) {
+ReferenceBinding askForType(PackageBinding packageBinding, char[] name, ModuleBinding clientModule) {
+	assert clientModule != null : "lookup needs a module"; //$NON-NLS-1$
 	if (packageBinding == null) {
 		packageBinding = this.defaultPackage;
 	}
-	NameEnvironmentAnswer answer = this.nameEnvironment.findType(name, packageBinding.compoundName);
-	if (answer == null)
+	NameEnvironmentAnswer[] answers = null;
+	if (this.useModuleSystem) {
+		IModuleAwareNameEnvironment moduleEnv = (IModuleAwareNameEnvironment) this.nameEnvironment;
+		final PackageBinding pack = packageBinding;
+		// leverage module information from the (split?) package as to prefer NotAccessible over NotFound:
+		answers = askForTypeFromModules(null, packageBinding.getDeclaringModules(),
+				mod -> fromSplitPackageOrOracle(moduleEnv, mod, pack, name));
+	} else {
+		NameEnvironmentAnswer answer = this.nameEnvironment.findType(name, packageBinding.compoundName);
+		if (answer != null) {
+			answer.moduleBinding = this.module;
+			answers = new NameEnvironmentAnswer[] { answer };
+		}
+	}
+	if (answers == null)
 		return null;
 
-	if (answer.isBinaryType()) {
-		// the type was found as a .class file
-		this.typeRequestor.accept(answer.getBinaryType(), packageBinding, answer.getAccessRestriction());
-	} else if (answer.isCompilationUnit()) {
-		// the type was found as a .java file, try to build it then search the cache
-		try {
-			this.typeRequestor.accept(answer.getCompilationUnit(), answer.getAccessRestriction());
-		} catch (AbortCompilation abort) {
-			if (CharOperation.equals(name, TypeConstants.PACKAGE_INFO_NAME))
-				return null; // silently, requestor may not be able to handle compilation units (HierarchyResolver)
-			throw abort;
+	ReferenceBinding candidate = null;
+	for (NameEnvironmentAnswer answer : answers) {
+		if (answer == null) continue;
+		ModuleBinding answerModule = answer.moduleBinding != null ? answer.moduleBinding : this.UnNamedModule;
+		PackageBinding answerPackage = packageBinding;
+		
+		if (answerModule != null) {
+			if (!answerPackage.isDeclaredIn(answerModule))
+				continue; // this answer is not reachable via the packageBinding
+			if (answerPackage instanceof SplitPackageBinding)
+				answerPackage = ((SplitPackageBinding) answerPackage).getIncarnation(answerModule);
 		}
-	} else if (answer.isSourceType()) {
-		// the type was found as a source model
-		this.typeRequestor.accept(answer.getSourceTypes(), packageBinding, answer.getAccessRestriction());
-		ReferenceBinding binding = packageBinding.getType0(name);
-		String externalAnnotationPath = answer.getExternalAnnotationPath();
-		if (externalAnnotationPath != null && this.globalOptions.isAnnotationBasedNullAnalysisEnabled && binding instanceof SourceTypeBinding) {
-			ExternalAnnotationSuperimposer.apply((SourceTypeBinding) binding, externalAnnotationPath);
+		if (answer.isResolvedBinding()) {
+			candidate = combine(candidate, answer.getResolvedBinding(), clientModule);
+			continue;
+		} else if (answer.isBinaryType()) {
+			// the type was found as a .class file
+			this.typeRequestor.accept(answer.getBinaryType(), answerPackage, answer.getAccessRestriction());
+			ReferenceBinding binding = answerPackage.getType0(name);
+			if (binding instanceof BinaryTypeBinding) {
+				((BinaryTypeBinding) binding).module = answerModule;
+			}
+		} else if (answer.isCompilationUnit()) {
+			// the type was found as a .java file, try to build it then search the cache
+			try {
+				this.typeRequestor.accept(answer.getCompilationUnit(), answer.getAccessRestriction());
+			} catch (AbortCompilation abort) {
+				if (CharOperation.equals(name, TypeConstants.PACKAGE_INFO_NAME))
+					return null; // silently, requestor may not be able to handle compilation units (HierarchyResolver)
+				throw abort;
+			}
+		} else if (answer.isSourceType()) {
+			// the type was found as a source model
+			this.typeRequestor.accept(answer.getSourceTypes(), answerPackage, answer.getAccessRestriction());
+			ReferenceBinding binding = answerPackage.getType0(name);
+			if (binding instanceof SourceTypeBinding) {
+				((SourceTypeBinding) binding).module = answerModule;
+			}
+			String externalAnnotationPath = answer.getExternalAnnotationPath();
+			if (externalAnnotationPath != null && this.globalOptions.isAnnotationBasedNullAnalysisEnabled && binding instanceof SourceTypeBinding) {
+				ExternalAnnotationSuperimposer.apply((SourceTypeBinding) binding, externalAnnotationPath);
+			}
+			candidate = combine(candidate, binding, clientModule);
+			continue;
 		}
-		return binding;
+		candidate = combine(candidate, answerPackage.getType0(name), clientModule);
+		if (candidate != null && candidate.problemId() == ProblemReasons.Ambiguous)
+			return candidate; // saw enough
 	}
-	return packageBinding.getType0(name);
+	return candidate;
+}
+/** Combine up-to two candidate types. If both types are present let accessibility from the given clientModule decide. */
+private ReferenceBinding combine(ReferenceBinding one, ReferenceBinding two, ModuleBinding clientModule) {
+	if (one == null) return two;
+	if (two == null) return one;
+	if (!clientModule.canAccess(one.fPackage)) return two;
+	if (!clientModule.canAccess(two.fPackage)) return one;
+	if (one == two) return one; //$IDENTITY-COMPARISON$
+	return new ProblemReferenceBinding(one.compoundName, one, ProblemReasons.Ambiguous); // TODO(SHMOD): use a new problem ID
+}
+/** Collect answers from the oracle concerning the given clientModule (if present) and each of a set of other modules. */
+private NameEnvironmentAnswer[] askForTypeFromModules(ModuleBinding clientModule, ModuleBinding[] otherModules,
+		Function<ModuleBinding,NameEnvironmentAnswer> oracle)
+{
+	if (clientModule != null && clientModule.nameForLookup().length == 0) {
+		NameEnvironmentAnswer answer = oracle.apply(clientModule);
+		if (answer != null)
+			answer.moduleBinding = this.root.getModuleFromAnswer(answer);
+		return new NameEnvironmentAnswer[] { answer };
+	} else {
+		boolean found = false;
+		NameEnvironmentAnswer[] answers = null;
+		if (clientModule != null) {
+			answers = new NameEnvironmentAnswer[otherModules.length+1];
+			NameEnvironmentAnswer answer = oracle.apply(clientModule);
+			if (answer != null) {
+				answer.moduleBinding = clientModule;
+				answers[answers.length-1] = answer;
+				found = true;
+			}
+		} else {
+			answers = new NameEnvironmentAnswer[otherModules.length];
+		}
+		for (int i = 0; i < otherModules.length; i++) {
+			NameEnvironmentAnswer answer = oracle.apply(otherModules[i]);
+			if (answer != null) {
+				char[] nameFromAnswer = answer.moduleName();
+				if (nameFromAnswer == null || CharOperation.equals(nameFromAnswer, otherModules[i].moduleName)) {
+					answer.moduleBinding = otherModules[i];
+				} else {
+					answer.moduleBinding = getModule(nameFromAnswer);
+				}
+				answers[i] = answer;
+				found = true;
+			}
+		}
+		return found ? answers : null;
+	}
+}
+/** First check for a known type in a split package and otherwise ask the oracle. */
+private static NameEnvironmentAnswer fromSplitPackageOrOracle(IModuleAwareNameEnvironment moduleEnv, ModuleBinding module,
+		PackageBinding packageBinding, char[] name)
+{
+	if (packageBinding instanceof SplitPackageBinding) {
+		// when asking a split package getType0() we may have answered null in case of ambiguity (not knowing the module context).
+		// now check if the module-incarnation of the package has the type:
+		// (needed because the moduleEnv will not answer initial types).
+		ReferenceBinding binding = ((SplitPackageBinding) packageBinding).getType0ForModule(module, name);
+		if (binding != null && binding.isValidBinding()) {
+			if (binding instanceof UnresolvedReferenceBinding)
+				binding = ((UnresolvedReferenceBinding) binding).resolve(module.environment, false);
+			return new NameEnvironmentAnswer(binding, module);
+		}
+	}
+	return moduleEnv.findType(name, packageBinding.compoundName, module.nameForLookup());
+}
+private ModuleBinding getModuleFromAnswer(NameEnvironmentAnswer answer) {
+	char[] moduleName = answer.moduleName();
+	if (moduleName != null) {
+		ModuleBinding moduleBinding;
+		if (!this.useModuleSystem || moduleName == ModuleBinding.UNNAMED) {
+			moduleBinding = this.UnNamedModule;
+		} else { 
+			moduleBinding = this.knownModules.get(moduleName);
+			if (moduleBinding == null && this.nameEnvironment instanceof IModuleAwareNameEnvironment) {
+				assert answer.isBinaryType();
+				IModule iModule = ((IModuleAwareNameEnvironment) this.nameEnvironment).getModule(moduleName);
+				try {
+					moduleBinding = BinaryModuleBinding.create(iModule, this);
+				} catch (NullPointerException e) {
+					System.err.println("Bug 529367: moduleName: " + new String(moduleName) + "iModule null" +  //$NON-NLS-1$ //$NON-NLS-2$
+							(iModule == null ? "true" : "false")); //$NON-NLS-1$ //$NON-NLS-2$]
+					throw e;
+				}
+			}
+		}
+		return moduleBinding;
+	}
+	return null;
+}
+
+public boolean canTypeBeAccessed(SourceTypeBinding binding, Scope scope) {
+	ModuleBinding client = scope.module();
+	return client.canAccess(binding.fPackage);
 }
 
 /* Create the initial type bindings for the compilation unit.
@@ -215,12 +459,22 @@
 * NOTE: This method can be called multiple times as additional source files are needed
 */
 public void buildTypeBindings(CompilationUnitDeclaration unit, AccessRestriction accessRestriction) {
-	CompilationUnitScope scope = new CompilationUnitScope(unit, this);
+	CompilationUnitScope scope;
+	ModuleBinding unitModule = null;
+	if (unit.moduleDeclaration != null) {
+		char[] moduleName = unit.moduleDeclaration.moduleName;
+		scope = new CompilationUnitScope(unit, this.globalOptions);
+		unitModule = unit.moduleDeclaration.setBinding(new SourceModuleBinding(moduleName, scope, this.root));
+	} else {
+		unitModule = unit.module(this);
+		scope = new CompilationUnitScope(unit, unitModule != null ? unitModule.environment : this);
+	}
 	scope.buildTypeBindings(accessRestriction);
-	int unitsLength = this.units.length;
-	if (++this.lastUnitIndex >= unitsLength)
-		System.arraycopy(this.units, 0, this.units = new CompilationUnitDeclaration[2 * unitsLength], 0, unitsLength);
-	this.units[this.lastUnitIndex] = unit;
+	LookupEnvironment rootEnv = this.root;
+	int unitsLength = rootEnv.units.length;
+	if (++rootEnv.lastUnitIndex >= unitsLength)
+		System.arraycopy(rootEnv.units, 0, rootEnv.units = new CompilationUnitDeclaration[2 * unitsLength], 0, unitsLength);
+	rootEnv.units[rootEnv.lastUnitIndex] = unit;
 }
 
 /* Cache the binary type since we know it is needed during this compile.
@@ -246,6 +500,10 @@
 }
 
 public void completeTypeBindings() {
+	if (this != this.root) {
+		this.root.completeTypeBindings();
+		return;
+	}
 	this.stepCompleted = BUILD_TYPE_HIERARCHY;
 
 	for (int i = this.lastCompletedUnitIndex + 1; i <= this.lastUnitIndex; i++) {
@@ -282,6 +540,10 @@
 * suitable replacement will be substituted (such as Object for a missing superclass)
 */
 public void completeTypeBindings(CompilationUnitDeclaration parsedUnit) {
+	if (this != this.root) {
+		this.root.completeTypeBindings(parsedUnit);
+		return;
+	}
 	if (this.stepCompleted == BUILD_FIELDS_AND_METHODS) {
 		// This can only happen because the original set of units are completely built and
 		// are now being processed, so we want to treat all the additional units as a group
@@ -315,13 +577,13 @@
 */
 public void completeTypeBindings(CompilationUnitDeclaration parsedUnit, boolean buildFieldsAndMethods) {
 	if (parsedUnit.scope == null) return; // parsing errors were too severe
-
-	(this.unitBeingCompleted = parsedUnit).scope.checkAndSetImports();
+	LookupEnvironment rootEnv = this.root;
+	(rootEnv.unitBeingCompleted = parsedUnit).scope.checkAndSetImports();
 	parsedUnit.scope.connectTypeHierarchy();
 	parsedUnit.scope.checkParameterizedTypes();
 	if (buildFieldsAndMethods)
 		parsedUnit.scope.buildFieldsAndMethods();
-	this.unitBeingCompleted = null;
+	rootEnv.unitBeingCompleted = null;
 }
 
 /*
@@ -333,28 +595,29 @@
 * 3. Create the method bindings
 */
 public void completeTypeBindings(CompilationUnitDeclaration[] parsedUnits, boolean[] buildFieldsAndMethods, int unitCount) {
+	LookupEnvironment rootEnv = this.root;
 	for (int i = 0; i < unitCount; i++) {
 		CompilationUnitDeclaration parsedUnit = parsedUnits[i];
 		if (parsedUnit.scope != null)
-			(this.unitBeingCompleted = parsedUnit).scope.checkAndSetImports();
+			(rootEnv.unitBeingCompleted = parsedUnit).scope.checkAndSetImports();
 	}
 
 	for (int i = 0; i < unitCount; i++) {
 		CompilationUnitDeclaration parsedUnit = parsedUnits[i];
 		if (parsedUnit.scope != null)
-			(this.unitBeingCompleted = parsedUnit).scope.connectTypeHierarchy();
+			(rootEnv.unitBeingCompleted = parsedUnit).scope.connectTypeHierarchy();
 	}
 
 	for (int i = 0; i < unitCount; i++) {
 		CompilationUnitDeclaration parsedUnit = parsedUnits[i];
 		if (parsedUnit.scope != null) {
-			(this.unitBeingCompleted = parsedUnit).scope.checkParameterizedTypes();
+			(rootEnv.unitBeingCompleted = parsedUnit).scope.checkParameterizedTypes();
 			if (buildFieldsAndMethods[i])
 				parsedUnit.scope.buildFieldsAndMethods();
 		}
 	}
 
-	this.unitBeingCompleted = null;
+	rootEnv.unitBeingCompleted = null;
 }
 public TypeBinding computeBoxingType(TypeBinding type) {
 	TypeBinding boxedType;
@@ -377,35 +640,35 @@
 			return TypeBinding.LONG;
 
 		case TypeIds.T_int :
-			boxedType = getType(JAVA_LANG_INTEGER);
+			boxedType = getType(JAVA_LANG_INTEGER, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_INTEGER, null, NotFound);
 		case TypeIds.T_byte :
-			boxedType = getType(JAVA_LANG_BYTE);
+			boxedType = getType(JAVA_LANG_BYTE, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_BYTE, null, NotFound);
 		case TypeIds.T_short :
-			boxedType = getType(JAVA_LANG_SHORT);
+			boxedType = getType(JAVA_LANG_SHORT, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_SHORT, null, NotFound);
 		case TypeIds.T_char :
-			boxedType = getType(JAVA_LANG_CHARACTER);
+			boxedType = getType(JAVA_LANG_CHARACTER, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_CHARACTER, null, NotFound);
 		case TypeIds.T_long :
-			boxedType = getType(JAVA_LANG_LONG);
+			boxedType = getType(JAVA_LANG_LONG, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_LONG, null, NotFound);
 		case TypeIds.T_float :
-			boxedType = getType(JAVA_LANG_FLOAT);
+			boxedType = getType(JAVA_LANG_FLOAT, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_FLOAT, null, NotFound);
 		case TypeIds.T_double :
-			boxedType = getType(JAVA_LANG_DOUBLE);
+			boxedType = getType(JAVA_LANG_DOUBLE, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_DOUBLE, null, NotFound);
 		case TypeIds.T_boolean :
-			boxedType = getType(JAVA_LANG_BOOLEAN);
+			boxedType = getType(JAVA_LANG_BOOLEAN, javaBaseModule());
 			if (boxedType != null) return boxedType;
 			return new ProblemReferenceBinding(JAVA_LANG_BOOLEAN, null, NotFound);
 //		case TypeIds.T_int :
@@ -457,27 +720,75 @@
 	return type;
 }
 
+public ModuleBinding javaBaseModule() {
+	if (this.JavaBaseModule != null)
+		return this.JavaBaseModule;
+	if (this.root != this)
+		return this.JavaBaseModule = this.root.javaBaseModule();
+	ModuleBinding resolvedModel = null;
+	if (this.useModuleSystem)
+		resolvedModel = getModule(TypeConstants.JAVA_BASE);
+	return this.JavaBaseModule = (resolvedModel != null ? resolvedModel : this.UnNamedModule); // fall back to pre-Jigsaw view
+}
+
 private PackageBinding computePackageFrom(char[][] constantPoolName, boolean isMissing) {
 	if (constantPoolName.length == 1)
 		return this.defaultPackage;
 
 	PackageBinding packageBinding = getPackage0(constantPoolName[0]);
 	if (packageBinding == null || packageBinding == TheNotFoundPackage) {
-		packageBinding = new PackageBinding(constantPoolName[0], this);
+		if (this.useModuleSystem) {
+			if (this.module.isUnnamed()) {
+				char[][] declaringModules = ((IModuleAwareNameEnvironment) this.nameEnvironment).getModulesDeclaringPackage(null, constantPoolName[0], ModuleBinding.ANY);
+				if (declaringModules != null) {
+					for (char[] mod : declaringModules) {
+						ModuleBinding declaringModule = this.root.getModule(mod);
+						if (declaringModule != null)
+							packageBinding = SplitPackageBinding.combine(declaringModule.getTopLevelPackage(constantPoolName[0]), packageBinding, this.module);
+					}
+				}
+			} else {
+				packageBinding = this.module.getTopLevelPackage(constantPoolName[0]);
+			}
+		}
+		if (packageBinding == null || packageBinding == TheNotFoundPackage) {
+			packageBinding = new PackageBinding(constantPoolName[0], this, this.module);
+		}
 		if (isMissing) packageBinding.tagBits |= TagBits.HasMissingType;
-		this.knownPackages.put(constantPoolName[0], packageBinding);
+		this.knownPackages.put(constantPoolName[0], packageBinding); // TODO: split?
 	}
 
 	for (int i = 1, length = constantPoolName.length - 1; i < length; i++) {
 		PackageBinding parent = packageBinding;
 		if ((packageBinding = parent.getPackage0(constantPoolName[i])) == null || packageBinding == TheNotFoundPackage) {
-			packageBinding = new PackageBinding(CharOperation.subarray(constantPoolName, 0, i + 1), parent, this);
+			if (this.useModuleSystem) {
+				if (this.module.isUnnamed()) {
+					char[][] declaringModules = ((IModuleAwareNameEnvironment) this.nameEnvironment).getModulesDeclaringPackage(parent.compoundName, constantPoolName[i], ModuleBinding.ANY);
+					if (declaringModules != null) {
+						for (char[] mod : declaringModules) {
+							ModuleBinding declaringModule = this.root.getModule(mod);
+							if (declaringModule != null)
+								packageBinding = SplitPackageBinding.combine(declaringModule.getPackage(parent.compoundName, constantPoolName[i]), packageBinding, this.module);
+						}
+					}
+				} else {
+					packageBinding = this.module.getVisiblePackage(parent, constantPoolName[i]);
+				}
+			}
+			if (packageBinding == null || packageBinding == TheNotFoundPackage) {
+				packageBinding = new PackageBinding(CharOperation.subarray(constantPoolName, 0, i + 1), parent, this, this.module);
+			}
 			if (isMissing) {
 				packageBinding.tagBits |= TagBits.HasMissingType;
 			}
-			parent.addPackage(packageBinding);
+			packageBinding = parent.addPackage(packageBinding, this.module, true);
 		}
 	}
+	if (packageBinding instanceof SplitPackageBinding) {
+		PackageBinding incarnation = ((SplitPackageBinding) packageBinding).getIncarnation(this.module);
+		if (incarnation != null)
+			packageBinding = incarnation;
+	}
 	return packageBinding;
 }
 
@@ -493,7 +804,7 @@
 		ReferenceBinding originalEnclosingType = originalType.enclosingType();
 		ReferenceBinding convertedEnclosingType = originalEnclosingType;
 		boolean needToConvert = isGeneric;
-		if (originalEnclosingType != null && !originalType.isStatic()) {
+		if (originalEnclosingType != null && hasInstanceContext(originalType)) {
 			convertedEnclosingType = convertToParameterizedType(originalEnclosingType);
 			needToConvert |= TypeBinding.notEquals(originalEnclosingType, convertedEnclosingType);
 		}
@@ -503,6 +814,14 @@
 	}
 	return originalType;
 }
+private boolean hasInstanceContext(ReferenceBinding type) {
+	if (type.isMemberType() && !type.isStatic())
+		return true;
+	MethodBinding enclosingMethod = type.enclosingMethod();
+	if (enclosingMethod != null)
+		return !enclosingMethod.isStatic();
+	return false;
+}
 
 /**
  * Returns the given binding's raw type binding.
@@ -545,27 +864,31 @@
 			needToConvert = false;
 			break;
 	}
-	forceRawEnclosingType &= !type.isStatic();
+	forceRawEnclosingType &= !originalType.isStatic();
 	ReferenceBinding originalEnclosing = originalType.enclosingType();
 	TypeBinding convertedType;
 	if (originalEnclosing == null) {
 		convertedType = needToConvert ? createRawType((ReferenceBinding)originalType.erasure(), null) : originalType;
 	} else {
 		ReferenceBinding convertedEnclosing;
-		if (originalEnclosing.kind() == Binding.RAW_TYPE) {
-			needToConvert |= !((ReferenceBinding)originalType).isStatic();
-			convertedEnclosing = originalEnclosing;
-		} else if (forceRawEnclosingType && !needToConvert/*stop recursion when conversion occurs*/) {
-			convertedEnclosing = (ReferenceBinding) convertToRawType(originalEnclosing, forceRawEnclosingType);
-			needToConvert = TypeBinding.notEquals(originalEnclosing, convertedEnclosing); // only convert generic or parameterized types
-		} else if (needToConvert || ((ReferenceBinding)originalType).isStatic()) {
-			convertedEnclosing = (ReferenceBinding) convertToRawType(originalEnclosing, false);
+		if(((ReferenceBinding)originalType).isStatic()) {
+			convertedEnclosing = (ReferenceBinding) originalEnclosing.original();
 		} else {
-			convertedEnclosing = convertToParameterizedType(originalEnclosing);
+			if (originalEnclosing.kind() == Binding.RAW_TYPE) {			
+				convertedEnclosing = originalEnclosing;
+				needToConvert = true;
+			} else if (forceRawEnclosingType && !needToConvert/*stop recursion when conversion occurs*/) {
+				convertedEnclosing = (ReferenceBinding) convertToRawType(originalEnclosing, forceRawEnclosingType);
+				needToConvert = TypeBinding.notEquals(originalEnclosing, convertedEnclosing); // only convert generic or parameterized types
+			} else if (needToConvert) {
+				convertedEnclosing = (ReferenceBinding) convertToRawType(originalEnclosing, false);
+			} else {
+				convertedEnclosing = convertToParameterizedType(originalEnclosing);
+			}
 		}
 		if (needToConvert) {
 			convertedType = createRawType((ReferenceBinding) originalType.erasure(), convertedEnclosing);
-		} else if (TypeBinding.notEquals(originalEnclosing, convertedEnclosing) && !originalType.isStatic()) {
+		} else if (TypeBinding.notEquals(originalEnclosing, convertedEnclosing)) {
 			convertedType = createParameterizedType((ReferenceBinding) originalType.erasure(), null, convertedEnclosing);
 		} else {
 			convertedType = originalType;
@@ -691,6 +1014,15 @@
 }
 
 public TypeBinding createIntersectionType18(ReferenceBinding[] intersectingTypes) {
+	if (!intersectingTypes[0].isClass()) {
+		Arrays.sort(intersectingTypes, new Comparator<TypeBinding>() {
+			@Override
+			public int compare(TypeBinding o1, TypeBinding o2) {
+				//
+				return o1.isClass() ? -1 : (o2.isClass() ? 1 : CharOperation.compareTo(o1.readableName(), o2.readableName()));
+			}
+		});
+	}
 	return this.typeSystem.getIntersectionType18(intersectingTypes);
 }	
 
@@ -699,6 +1031,8 @@
 }
 
 public BinaryTypeBinding createBinaryTypeFrom(IBinaryType binaryType, PackageBinding packageBinding, boolean needFieldsAndMethods, AccessRestriction accessRestriction) {
+	if (this != packageBinding.environment)
+		return packageBinding.environment.createBinaryTypeFrom(binaryType, packageBinding, needFieldsAndMethods, accessRestriction);
 	BinaryTypeBinding binaryBinding = new BinaryTypeBinding(packageBinding, binaryType, this);
 
 	// resolve any array bindings which reference the unresolvedType
@@ -730,7 +1064,7 @@
 	MissingTypeBinding missingType = new MissingTypeBinding(packageBinding, compoundName, this);
 	if (missingType.id != TypeIds.T_JavaLangObject) {
 		// make Object be its superclass - it could in turn be missing as well
-		ReferenceBinding objectType = getType(TypeConstants.JAVA_LANG_OBJECT);
+		ReferenceBinding objectType = getType(TypeConstants.JAVA_LANG_OBJECT, javaBaseModule());
 		if (objectType == null) {
 			objectType = createMissingType(null, TypeConstants.JAVA_LANG_OBJECT);	// create a proxy for the missing Object type
 		}
@@ -744,15 +1078,19 @@
 }
 
 /*
-* 1. Connect the type hierarchy for the type bindings created for parsedUnits.
-* 2. Create the field bindings
-* 3. Create the method bindings
-*/
+ * 1. Connect the type hierarchy for the type bindings created for parsedUnits.
+ * 2. Create the field bindings
+ * 3. Create the method bindings
+ */
 public PackageBinding createPackage(char[][] compoundName) {
 	PackageBinding packageBinding = getPackage0(compoundName[0]);
 	if (packageBinding == null || packageBinding == TheNotFoundPackage) {
-		packageBinding = new PackageBinding(compoundName[0], this);
+		packageBinding = new PackageBinding(compoundName[0], this, this.module);
 		this.knownPackages.put(compoundName[0], packageBinding);
+		if (this.module != null) {
+			packageBinding = this.module.addPackage(packageBinding, true);
+			this.knownPackages.put(compoundName[0], packageBinding); // update in case of split package
+		}
 	}
 
 	for (int i = 1, length = compoundName.length; i < length; i++) {
@@ -776,18 +1114,28 @@
 				//When the nameEnvironment is an instance of INameEnvironmentWithProgress, it can get avoided to search for secondaryTypes (see flag).
 				// This is a performance optimization, because it is very expensive to search for secondary types and it isn't necessary to check when creating a package,
 				// because package name can not collide with a secondary type name.
-				if (((INameEnvironmentExtension)this.nameEnvironment).findType(compoundName[i], parent.compoundName, false) != null) {
-				return null;
+				if (((INameEnvironmentExtension)this.nameEnvironment).findType(compoundName[i], parent.compoundName, false, this.module.nameForLookup()) != null) {
+					return null;
 				}
 			} else {
 				if (this.nameEnvironment.findType(compoundName[i], parent.compoundName) != null) {
 					return null;
 				}
 			}
-			packageBinding = new PackageBinding(CharOperation.subarray(compoundName, 0, i + 1), parent, this);
-			parent.addPackage(packageBinding);
+			if (parent instanceof SplitPackageBinding) {
+				// parent.getPackage0() may have been too shy, so drill into the split:
+				PackageBinding singleParent = ((SplitPackageBinding) parent).getIncarnation(this.module);
+				if (singleParent != null)
+					packageBinding = singleParent.getPackage0(compoundName[i]);
+			}
+			if (packageBinding == null) {
+				packageBinding = new PackageBinding(CharOperation.subarray(compoundName, 0, i + 1), parent, this, this.module);
+				packageBinding = parent.addPackage(packageBinding, this.module, true);
+			}
 		}
 	}
+	if (packageBinding instanceof SplitPackageBinding)
+		packageBinding = ((SplitPackageBinding) packageBinding).getIncarnation(this.module);
 	return packageBinding;
 }
 
@@ -824,10 +1172,13 @@
 }
 
 public ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod, TypeBinding[] typeArguments) {
-	return createParameterizedGenericMethod(genericMethod, typeArguments, false, false);
+	return createParameterizedGenericMethod(genericMethod, typeArguments, null);
+}
+public ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod, TypeBinding[] typeArguments, TypeBinding targetType) {
+	return createParameterizedGenericMethod(genericMethod, typeArguments, false, false, targetType);
 }
 public ParameterizedGenericMethodBinding createParameterizedGenericMethod(MethodBinding genericMethod, TypeBinding[] typeArguments,
-																			boolean inferredWithUncheckedConversion, boolean hasReturnProblem)
+																			boolean inferredWithUncheckedConversion, boolean hasReturnProblem, TypeBinding targetType)
 {
 	// cached info is array of already created parameterized types for this type
 	ParameterizedGenericMethodBinding[] cachedInfo = (ParameterizedGenericMethodBinding[])this.uniqueParameterizedGenericMethodBindings.get(genericMethod);
@@ -841,6 +1192,7 @@
 				ParameterizedGenericMethodBinding cachedMethod = cachedInfo[index];
 				if (cachedMethod == null) break nextCachedMethod;
 				if (cachedMethod.isRaw) continue nextCachedMethod;
+				if (cachedMethod.targetType != targetType) continue nextCachedMethod; //$IDENTITY-COMPARISON$
 				if (cachedMethod.inferredWithUncheckedConversion != inferredWithUncheckedConversion) continue nextCachedMethod;
 				TypeBinding[] cachedArguments = cachedMethod.typeArguments;
 				int cachedArgLength = cachedArguments == null ? 0 : cachedArguments.length;
@@ -870,7 +1222,7 @@
 	}
 	// add new binding
 	ParameterizedGenericMethodBinding parameterizedGenericMethod =
-			new ParameterizedGenericMethodBinding(genericMethod, typeArguments, this, inferredWithUncheckedConversion, hasReturnProblem);
+			new ParameterizedGenericMethodBinding(genericMethod, typeArguments, this, inferredWithUncheckedConversion, hasReturnProblem, targetType);
 	cachedInfo[index] = parameterizedGenericMethod;
 	return parameterizedGenericMethod;
 }
@@ -883,7 +1235,7 @@
 	for (int i = 0; i < parametersLength; i++) {
 		TypeBinding parameterTypeBinding = parameters[i];
 		if (parameterTypeBinding.id == TypeIds.T_null) {
-			parametersTypeBinding[i] = getType(JAVA_LANG_VOID);
+			parametersTypeBinding[i] = getType(JAVA_LANG_VOID, javaBaseModule());
 		} else {
 			parametersTypeBinding[i] = parameterTypeBinding.erasure();
 		}
@@ -1023,6 +1375,8 @@
 		for (int i = 0; i < newbies.length; i++) {
 			if (newbies[i] == null) {
 				filtered[count++] = null;
+				// reset tagBitsSeen for next array dimension
+				tagBitsSeen = 0;
 				continue;
 			}
 			long tagBits = 0;
@@ -1094,7 +1448,7 @@
 		return null;
 
 	for (int i = 1, packageLength = compoundName.length - 1; i < packageLength; i++)
-		if ((packageBinding = packageBinding.getPackage0(compoundName[i])) == null || packageBinding == TheNotFoundPackage)
+		if ((packageBinding = packageBinding.getPackage0Any(compoundName[i])) == null || packageBinding == TheNotFoundPackage)
 			return null;
 	return packageBinding.getType0(compoundName[compoundName.length - 1]);
 }
@@ -1102,6 +1456,9 @@
 public AnnotationBinding getNullableAnnotation() {
 	if (this.nullableAnnotation != null)
 		return this.nullableAnnotation;
+	if (this.root != this) {
+		return this.nullableAnnotation = this.root.getNullableAnnotation();
+	}
 	ReferenceBinding nullable = getResolvedType(this.globalOptions.nullableAnnotationName, null);
 	return this.nullableAnnotation = this.typeSystem.getAnnotationType(nullable, true);
 }
@@ -1113,6 +1470,9 @@
 public AnnotationBinding getNonNullAnnotation() {
 	if (this.nonNullAnnotation != null) 
 		return this.nonNullAnnotation;
+	if (this.root != this) {
+		return this.nonNullAnnotation = this.root.getNonNullAnnotation();
+	}
 	ReferenceBinding nonNull = getResolvedType(this.globalOptions.nonNullAnnotationName, null);
 	return this.nonNullAnnotation = this.typeSystem.getAnnotationType(nonNull, true);
 }
@@ -1155,6 +1515,9 @@
 }
 
 public boolean usesNullTypeAnnotations() {
+	if(this.root != this) {
+		return this.root.usesNullTypeAnnotations();
+	}
 	if (this.globalOptions.useNullTypeAnnotations != null)
 		return this.globalOptions.useNullTypeAnnotations;
 
@@ -1177,8 +1540,19 @@
 	this.globalOptions.useNullTypeAnnotations = Boolean.FALSE;
 	if (!this.globalOptions.isAnnotationBasedNullAnalysisEnabled || this.globalOptions.originalSourceLevel < ClassFileConstants.JDK1_8)
 		return;
-	ReferenceBinding nullable = this.nullableAnnotation != null ? this.nullableAnnotation.getAnnotationType() : getType(this.getNullableAnnotationName());
-	ReferenceBinding nonNull = this.nonNullAnnotation != null ? this.nonNullAnnotation.getAnnotationType() : getType(this.getNonNullAnnotationName());
+	ReferenceBinding nullable;
+	ReferenceBinding nonNull;
+	boolean origMayTolerateMissingType = this.mayTolerateMissingType;
+	this.mayTolerateMissingType = true;
+	try {
+		nullable = this.nullableAnnotation != null ? this.nullableAnnotation.getAnnotationType()
+				: getType(this.getNullableAnnotationName(), this.UnNamedModule); // FIXME(SHMOD) module for null
+																					// annotations??
+		nonNull = this.nonNullAnnotation != null ? this.nonNullAnnotation.getAnnotationType()
+				: getType(this.getNonNullAnnotationName(), this.UnNamedModule);
+	} finally {
+		this.mayTolerateMissingType = origMayTolerateMissingType;
+	}
 	if (nullable == null && nonNull == null)
 		return;
 	if (nullable == null || nonNull == null)
@@ -1208,17 +1582,25 @@
 * Fail with a classpath error if the type cannot be found.
 */
 public ReferenceBinding getResolvedType(char[][] compoundName, Scope scope) {
-	ReferenceBinding type = getType(compoundName);
+	return getResolvedType(compoundName, scope == null ? this.UnNamedModule : scope.module(), scope);
+}
+public ReferenceBinding getResolvedType(char[][] compoundName, ModuleBinding moduleBinding, Scope scope) {
+	if (this.module != moduleBinding)
+		return moduleBinding.environment.getResolvedType(compoundName, moduleBinding, scope);
+	ReferenceBinding type = getType(compoundName, moduleBinding);
 	if (type != null) return type;
 
 	// create a proxy for the missing BinaryType
 	// report the missing class file first
 	this.problemReporter.isClassPathCorrect(
 		compoundName,
-		scope == null ? this.unitBeingCompleted : scope.referenceCompilationUnit(),
+		scope == null ? this.root.unitBeingCompleted : scope.referenceCompilationUnit(),
 		this.missingClassFileLocation);
 	return createMissingType(null, compoundName);
 }
+public ReferenceBinding getResolvedJavaBaseType(char[][] compoundName, Scope scope) {
+	return getResolvedType(compoundName, javaBaseModule(), scope);
+}
 
 /* Answer the top level package named name.
 * Ask the oracle for the package if its not in the cache.
@@ -1231,9 +1613,17 @@
 			return null;
 		return packageBinding;
 	}
-
-	if (this.nameEnvironment.isPackage(null, name)) {
-		this.knownPackages.put(name, packageBinding = new PackageBinding(name, this));
+	if (this.useModuleSystem) {
+		if (this.module != null)
+			packageBinding = this.module.getTopLevelPackage(name);
+	} else {
+		if (this.nameEnvironment.isPackage(null, name)) {
+			this.knownPackages.put(name, packageBinding = new PackageBinding(name, this, this.module));
+		}
+	}
+	if (packageBinding != null) {
+		if (packageBinding == TheNotFoundPackage)
+			return null;
 		return packageBinding;
 	}
 
@@ -1241,11 +1631,14 @@
 	return null;
 }
 
+public ReferenceBinding getType(char[][] compoundName) {
+	return getType(compoundName, this.UnNamedModule);
+}
 /* Answer the type corresponding to the compoundName.
 * Ask the name environment for the type if its not in the cache.
 * Answer null if the type cannot be found.
 */
-public ReferenceBinding getType(char[][] compoundName) {
+public ReferenceBinding getType(char[][] compoundName, ModuleBinding mod) {
 	ReferenceBinding referenceBinding;
 
 	if (compoundName.length == 1) {
@@ -1253,7 +1646,7 @@
 			PackageBinding packageBinding = getPackage0(compoundName[0]);
 			if (packageBinding != null && packageBinding != TheNotFoundPackage)
 				return null; // collides with a known package... should not call this method in such a case
-			referenceBinding = askForType(this.defaultPackage, compoundName[0]);
+			referenceBinding = askForType(this.defaultPackage, compoundName[0], mod);
 		}
 	} else {
 		PackageBinding packageBinding = getPackage0(compoundName[0]);
@@ -1270,9 +1663,9 @@
 		}
 
 		if (packageBinding == null)
-			referenceBinding = askForType(compoundName);
+			referenceBinding = askForType(compoundName, mod);
 		else if ((referenceBinding = packageBinding.getType0(compoundName[compoundName.length - 1])) == null)
-			referenceBinding = askForType(packageBinding, compoundName[compoundName.length - 1]);
+			referenceBinding = askForType(packageBinding, compoundName[compoundName.length - 1], mod);
 	}
 
 	if (referenceBinding == null || referenceBinding == TheNotFoundType)
@@ -1313,11 +1706,17 @@
 	ReferenceBinding binding = getCachedType(compoundName);
 	if (binding == null) {
 		PackageBinding packageBinding = computePackageFrom(compoundName, false /* valid pkg */);
-		binding = new UnresolvedReferenceBinding(compoundName, packageBinding);
-		if (wasMissingType) {
-			binding.tagBits |= TagBits.HasMissingType; // record it was bound to a missing type
+		if(this.useModuleSystem) {
+			// the package might not have been seen in getCachedType, so retry
+			binding = packageBinding.getType0(compoundName[compoundName.length - 1]);
 		}
-		packageBinding.addType(binding);
+		if(binding == null) {
+			binding = new UnresolvedReferenceBinding(compoundName, packageBinding);
+			if (wasMissingType) {
+				binding.tagBits |= TagBits.HasMissingType; // record it was bound to a missing type
+			}
+			packageBinding.addType(binding);
+		}
 	} else if (binding == TheNotFoundType) {
 		// report the missing class file first
 		if (!wasMissingType) {
@@ -1325,7 +1724,7 @@
 			 * misconfiguration now that did not also exist in some equivalent form while producing the class files which encode 
 			 * these missing types. So no need to bark again. Note that wasMissingType == true signals a type referenced in a .class 
 			 * file which could not be found when the binary was produced. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=364450 */
-			this.problemReporter.isClassPathCorrect(compoundName, this.unitBeingCompleted, this.missingClassFileLocation);
+			this.problemReporter.isClassPathCorrect(compoundName, this.root.unitBeingCompleted, this.missingClassFileLocation);
 		}
 		// create a proxy for the missing BinaryType
 		binding = createMissingType(null, compoundName);
@@ -1384,7 +1783,7 @@
 	AnnotationBinding [][] annotationsOnDimensions = null;
 	if (dimension > 0 && walker != ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER) {
 		for (int i = 0; i < dimension; i++) {
-			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(0), this, missingTypeNames);
+			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(0, true), this, missingTypeNames);
 			if (annotations != Binding.NO_ANNOTATIONS) { 
 				if (annotationsOnDimensions == null)
 					annotationsOnDimensions = new AnnotationBinding[dimension][];
@@ -1462,7 +1861,7 @@
 	}
 	AnnotationBinding [][] annotations = null;
 	for (int i = 0; i < depth; i++) {
-		AnnotationBinding[] annots = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(binding.id), this, missingTypeNames);
+		AnnotationBinding[] annots = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(binding.id, i == depth - 1), this, missingTypeNames);
 		if (annots != null && annots.length > 0) {
 			if (annotations == null)
 				annotations = new AnnotationBinding[depth][];
@@ -1523,7 +1922,7 @@
 	AnnotationBinding [][] annotationsOnDimensions = null;
 	if (dimension > 0 && walker != ITypeAnnotationWalker.EMPTY_ANNOTATION_WALKER) {
 		for (int i = 0; i < dimension; i++) {
-			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(0), this, missingTypeNames);
+			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(0, true), this, missingTypeNames);
 			if (annotations != Binding.NO_ANNOTATIONS) { 
 				if (annotationsOnDimensions == null)
 					annotationsOnDimensions = new AnnotationBinding[dimension][];
@@ -1571,7 +1970,7 @@
 		int nonStaticNestingLevels = countNonStaticNestingLevels(actualType);
 		for (int i = 0; i < nonStaticNestingLevels; i++) {
 			walker = walker.toNextNestedType();
-	}
+		}
 	}
 
 	TypeBinding[] typeArguments = getTypeArgumentsFromSignature(wrapper, staticVariables, enclosingType, actualType, missingTypeNames, walker);
@@ -1591,7 +1990,7 @@
 			// may happen for class files generated by eclipse before bug 460491 was fixed. 
 			walker = savedWalker;
 		} else {
-		walker = walker.toNextNestedType();
+			walker = walker.toNextNestedType();
 		}
 		if (wrapper.signature[wrapper.start] == '<') {
 			wrapper.start++; // skip '<'
@@ -1611,12 +2010,12 @@
 		plainCurrent = memberType;
 	}
 	wrapper.start++; // skip ';'
-	currentType=(ParameterizedTypeBinding) annotateType(currentType, savedWalker, missingTypeNames);
-	return dimension == 0 ? (TypeBinding) currentType : createArrayType(currentType, dimension, AnnotatableTypeSystem.flattenedAnnotations(annotationsOnDimensions));
+	TypeBinding annotatedType = annotateType(currentType, savedWalker, missingTypeNames);
+	return dimension == 0 ? annotatedType : createArrayType(annotatedType, dimension, AnnotatableTypeSystem.flattenedAnnotations(annotationsOnDimensions));
 }
 
 private TypeBinding getTypeFromTypeVariable(TypeVariableBinding typeVariableBinding, int dimension, AnnotationBinding [][] annotationsOnDimensions, ITypeAnnotationWalker walker, char [][][] missingTypeNames) {
-	AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1), this, missingTypeNames);
+	AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1, false), this, missingTypeNames);
 	if (annotations != null && annotations != Binding.NO_ANNOTATIONS)
 		typeVariableBinding = (TypeVariableBinding) createAnnotatedType(typeVariableBinding, new AnnotationBinding [][] { annotations });
 
@@ -1643,18 +2042,18 @@
 			// ? super aType
 			wrapper.start++;
 			TypeBinding bound = getTypeFromTypeSignature(wrapper, staticVariables, enclosingType, missingTypeNames, walker.toWildcardBound());
-			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1), this, missingTypeNames);
+			AnnotationBinding [] annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1, false), this, missingTypeNames);
 			return this.typeSystem.getWildcard(genericType, rank, bound, null /*no extra bound*/, Wildcard.SUPER, annotations);
 		case '+' :
 			// ? extends aType
 			wrapper.start++;
 			bound = getTypeFromTypeSignature(wrapper, staticVariables, enclosingType, missingTypeNames, walker.toWildcardBound());
-			annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1), this, missingTypeNames);
+			annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1, false), this, missingTypeNames);
 			return this.typeSystem.getWildcard(genericType, rank, bound, null /*no extra bound*/, Wildcard.EXTENDS, annotations);
 		case '*' :
 			// ?
 			wrapper.start++;
-			annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1), this, missingTypeNames);
+			annotations = BinaryTypeBinding.createAnnotations(walker.getAnnotationsAtCursor(-1, false), this, missingTypeNames);
 			return this.typeSystem.getWildcard(genericType, rank, null, null /*no extra bound*/, Wildcard.UNBOUND, annotations);
 		default :
 			return getTypeFromTypeSignature(wrapper, staticVariables, enclosingType, missingTypeNames, walker);
@@ -1670,15 +2069,9 @@
 	return false;
 }
 
-/* Ask the oracle if a package exists named name in the package named compoundName.
-*/
-boolean isPackage(char[][] compoundName, char[] name) {
-	if (compoundName == null || compoundName.length == 0)
-		return this.nameEnvironment.isPackage(null, name);
-	return this.nameEnvironment.isPackage(compoundName, name);
-}
 // The method verifier is lazily initialized to guarantee the receiver, the compiler & the oracle are ready.
 public MethodVerifier methodVerifier() {
+	 // TODO(SHMOD): I'm not sure if the verifier would need to be created with a specific LE?
 	if (this.verifier == null)
 		this.verifier = newMethodVerifier();
 	return this.verifier;
@@ -1699,6 +2092,15 @@
 }
 
 public void reset() {
+	if (this.root != this) {
+		this.root.reset();
+		return;
+	}
+	this.knownModules = new HashtableOfModule();
+	this.UnNamedModule = new ModuleBinding.UnNamedModule(this);
+	this.module = this.UnNamedModule;
+	this.JavaBaseModule = null;
+
 	this.defaultPackage = new PackageBinding(this); // assume the default package always exists
 	this.defaultImports = null;
 	this.knownPackages = new HashtableOfPackage();
@@ -1739,17 +2141,19 @@
 	this.typeSystem.updateCaches(unresolvedType, resolvedType);
 }
 
-public IQualifiedTypeResolutionListener[] resolutionListeners = new IQualifiedTypeResolutionListener[0];
+public IQualifiedTypeResolutionListener[] resolutionListeners;	// ROOT_ONLY
 
 public void addResolutionListener(IQualifiedTypeResolutionListener resolutionListener) {
-	int length = this.resolutionListeners.length;
-	for (int i = 0; i < length; i++){
-		if (this.resolutionListeners[i].equals(resolutionListener))
-			return;
+	synchronized (this.root) {
+		int length = this.root.resolutionListeners.length;
+		for (int i = 0; i < length; i++){
+			if (this.root.resolutionListeners[i].equals(resolutionListener))
+				return;
+		}
+		System.arraycopy(this.root.resolutionListeners, 0,
+				this.root.resolutionListeners = new IQualifiedTypeResolutionListener[length + 1], 0, length);
+		this.root.resolutionListeners[length] = resolutionListener;
 	}
-	System.arraycopy(this.resolutionListeners, 0,
-			this.resolutionListeners = new IQualifiedTypeResolutionListener[length + 1], 0, length);
-	this.resolutionListeners[length] = resolutionListener;
 }
 
 
@@ -1806,6 +2210,12 @@
 		if (typeAnnotation.type.hasNullBit(TypeIds.BitNonNullAnnotation|TypeIds.BitNullableAnnotation))
 			return true;
 	}
-	return false;
+	return false;	
 }
+
+//AspectJ extension
+public LookupEnvironment wrapInModuleEnvironment(ModuleBinding moduleBinding) {
+	  return new LookupEnvironment(this, moduleBinding);
+}
+//End AspectJ
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.java
index e32badd..9b42cbd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MemberTypeBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -38,6 +38,7 @@
 * NOTE: This method should only be used during/after code gen.
 */
 
+@Override
 public char[] constantPoolName() /* java/lang/Object */ {
 	
 	if (this.constantPoolName != null)
@@ -50,6 +51,7 @@
 	return this.constantPoolName = CharOperation.concat(enclosingType().constantPoolName(), this.sourceName, '$');
 }
 
+@Override
 public TypeBinding clone(TypeBinding outerType) {
 	MemberTypeBinding copy = new MemberTypeBinding(this);
 	copy.enclosingType = (SourceTypeBinding) outerType;
@@ -59,6 +61,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#initializeDeprecatedAnnotationTagBits()
  */
+@Override
 public void initializeDeprecatedAnnotationTagBits() {
 	if (!isPrototype()) {
 		this.prototype.initializeDeprecatedAnnotationTagBits();
@@ -74,10 +77,12 @@
 			}
 			if (enclosing.isViewedAsDeprecated()) {
 				this.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+				this.tagBits |= (enclosing.tagBits & TagBits.AnnotationTerminallyDeprecated);
 			}
 		}
 	}
 }
+@Override
 public String toString() {
 	if (this.hasTypeAnnotations()) {
 		return annotatedDebugName();
@@ -85,4 +90,8 @@
     	return "Member type : " + new String(sourceName()) + " " + super.toString(); //$NON-NLS-2$ //$NON-NLS-1$
     }
 }
+@Override
+public ModuleBinding module() {
+	return this.enclosingType.module();
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
index 2912bd6..001842c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -38,6 +39,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
@@ -99,6 +101,7 @@
 	this.parameters = initialMethodBinding.parameters;
 	this.thrownExceptions = initialMethodBinding.thrownExceptions;
 	this.declaringClass = declaringClass;
+	// AspectJ
 	if (declaringClass!=null) declaringClass.storeAnnotationHolder(this, initialMethodBinding.declaringClass.retrieveAnnotationHolder(initialMethodBinding, true)); // New AspectJ Extension - check for null
 }
 /* Answer true if the argument types & the receiver's parameters have the same erasure
@@ -192,31 +195,37 @@
 	int length = this.typeVariables.length;
 	TypeBinding[] arguments = new TypeBinding[length];
 	for (int i = 0; i < length; i++) {
-		TypeVariableBinding var = this.typeVariables[i];
-		if (var.boundsCount() <= 1) {
-			arguments[i] = env.convertToRawType(var.upperBound(), false /*do not force conversion of enclosing types*/);
-		} else {
-			// use an intersection type to retain full bound information if more than 1 bound
-			TypeBinding[] itsSuperinterfaces = var.superInterfaces();
-			int superLength = itsSuperinterfaces.length;
-			TypeBinding rawFirstBound = null;
-			TypeBinding[] rawOtherBounds = null;
-			if (var.boundsCount() == superLength) {
-				rawFirstBound = env.convertToRawType(itsSuperinterfaces[0], false);
-				rawOtherBounds = new TypeBinding[superLength - 1];
-				for (int s = 1; s < superLength; s++)
-					rawOtherBounds[s - 1] = env.convertToRawType(itsSuperinterfaces[s], false);
-			} else {
-				rawFirstBound = env.convertToRawType(var.superclass(), false);
-				rawOtherBounds = new TypeBinding[superLength];
-				for (int s = 0; s < superLength; s++)
-					rawOtherBounds[s] = env.convertToRawType(itsSuperinterfaces[s], false);
-			}
-			arguments[i] = env.createWildcard(null, 0, rawFirstBound, rawOtherBounds, org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard.EXTENDS);
-		}
+		arguments[i] = makeRawArgument(env, this.typeVariables[i]);
 	}
 	return env.createParameterizedGenericMethod(this, arguments);
 }
+private TypeBinding makeRawArgument(LookupEnvironment env, TypeVariableBinding var) {
+	if (var.boundsCount() <= 1) {
+		TypeBinding upperBound = var.upperBound();
+		if (upperBound.isTypeVariable())
+			return makeRawArgument(env, (TypeVariableBinding) upperBound);
+		return env.convertToRawType(upperBound, false /*do not force conversion of enclosing types*/);
+	} else {
+		// use an intersection type to retain full bound information if more than 1 bound
+		TypeBinding[] itsSuperinterfaces = var.superInterfaces();
+		int superLength = itsSuperinterfaces.length;
+		TypeBinding rawFirstBound = null;
+		TypeBinding[] rawOtherBounds = null;
+		if (var.boundsCount() == superLength) {
+			rawFirstBound = env.convertToRawType(itsSuperinterfaces[0], false);
+			rawOtherBounds = new TypeBinding[superLength - 1];
+			for (int s = 1; s < superLength; s++)
+				rawOtherBounds[s - 1] = env.convertToRawType(itsSuperinterfaces[s], false);
+		} else {
+			rawFirstBound = env.convertToRawType(var.superclass(), false);
+			rawOtherBounds = new TypeBinding[superLength];
+			for (int s = 0; s < superLength; s++)
+				rawOtherBounds[s] = env.convertToRawType(itsSuperinterfaces[s], false);
+		}
+		return env.createWildcard(null, 0, rawFirstBound, rawOtherBounds, org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard.EXTENDS);
+	}
+}
+
 /* Answer true if the receiver is visible to the type provided by the scope.
 * InvocationSite implements isSuperAccess() to provide additional information
 * if the receiver is protected.
@@ -314,7 +323,7 @@
 
 	SourceTypeBinding invocationType = scope.invocationType(); // AspectJ Extension - was scope.enclosingSourceType()
 
-	if (this.declaringClass.isInterface() && isStatic()) {
+	if (this.declaringClass.isInterface() && isStatic() && !isPrivate()) {
 		// Static interface methods can be explicitly invoked only through the type reference of the declaring interface or implicitly in the interface itself or via static import.
 		if (scope.compilerOptions().sourceLevel < ClassFileConstants.JDK1_8)
 			return false;
@@ -451,7 +460,7 @@
 	return missingTypes;
 }
 
-MethodBinding computeSubstitutedMethod(MethodBinding method, LookupEnvironment env) {
+public MethodBinding computeSubstitutedMethod(MethodBinding method, LookupEnvironment env) {
 	int length = this.typeVariables.length;
 	TypeVariableBinding[] vars = method.typeVariables;
 	if (length != vars.length)
@@ -472,6 +481,7 @@
  * declaringUniqueKey dot selector genericSignature
  * p.X { <T> void bar(X<T> t) } --> Lp/X;.bar<T:Ljava/lang/Object;>(LX<TT;>;)V
  */
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	// declaring class
 	char[] declaringKey = this.declaringClass.computeUniqueKey(false/*not a leaf*/);
@@ -536,13 +546,18 @@
 
 /**
  * After method verifier has finished, fill in missing @NonNull specification from the applicable default.
+ * @param needToApplyParameterNonNullDefault 
+ * @param needToApplyReturnNonNullDefault 
  */
-protected void fillInDefaultNonNullness(AbstractMethodDeclaration sourceMethod) {
+protected void fillInDefaultNonNullness(AbstractMethodDeclaration sourceMethod, boolean needToApplyReturnNonNullDefault, ParameterNonNullDefaultProvider needToApplyParameterNonNullDefault) {
 	if (this.parameterNonNullness == null)
 		this.parameterNonNullness = new Boolean[this.parameters.length];
 	boolean added = false;
 	int length = this.parameterNonNullness.length;
 	for (int i = 0; i < length; i++) {
+		if(!needToApplyParameterNonNullDefault.hasNonNullDefaultForParam(i)) {
+			continue;
+		}
 		if (this.parameters[i].isBaseType())
 			continue;
 		if (this.parameterNonNullness[i] == null) {
@@ -557,6 +572,8 @@
 	}
 	if (added)
 		this.tagBits |= TagBits.HasParameterAnnotations;
+	if(!needToApplyReturnNonNullDefault)
+		return;
 	if (   this.returnType != null
 		&& !this.returnType.isBaseType()
 		&& (this.tagBits & TagBits.AnnotationNullMASK) == 0)
@@ -573,10 +590,13 @@
 	if(original == null) {
 		return;
 	}
-	if (hasNonNullDefaultFor(DefaultLocationParameter, true)) {
+	ParameterNonNullDefaultProvider hasNonNullDefaultForParameter = hasNonNullDefaultForParameter(sourceMethod);
+	if (hasNonNullDefaultForParameter.hasAnyNonNullDefault()) {
 		boolean added = false;
 		int length = this.parameters.length;
 		for (int i = 0; i < length; i++) {
+			if (!hasNonNullDefaultForParameter.hasNonNullDefaultForParam(i))
+				continue;
 			TypeBinding parameter = this.parameters[i];
 			if (!original.parameters[i].acceptsNonNullDefault())
 				continue;
@@ -596,7 +616,7 @@
 		if (added)
 			this.tagBits |= TagBits.HasParameterAnnotations;
 	}
-	if (original.returnType != null && hasNonNullDefaultFor(DefaultLocationReturnType, true) && original.returnType.acceptsNonNullDefault()) {
+	if (original.returnType != null && hasNonNullDefaultForReturnType(sourceMethod) && original.returnType.acceptsNonNullDefault()) {
 		if ((this.returnType.tagBits & TagBits.AnnotationNullMASK) == 0) {
 			this.returnType = env.createAnnotatedType(this.returnType, new AnnotationBinding[]{env.getNonNullAnnotation()});
 		} else if (sourceMethod instanceof MethodDeclaration && (this.returnType.tagBits & TagBits.AnnotationNonNull) != 0 
@@ -672,6 +692,7 @@
 	return this.modifiers & (ExtraCompilerModifiers.AccJustFlag | ExtraCompilerModifiers.AccDefaultMethod);
 }
 
+@Override
 public AnnotationBinding[] getAnnotations() {
 	MethodBinding originalMethod = original();
 	return originalMethod.declaringClass.retrieveAnnotations(originalMethod);
@@ -682,6 +703,7 @@
  * lazily resolving corresponding annotation nodes, in case of forward references.
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#getAnnotationTagBits()
  */
+@Override
 public long getAnnotationTagBits() {
 	MethodBinding originalMethod = original();
 	if ((originalMethod.tagBits & TagBits.AnnotationResolved) == 0 && originalMethod.declaringClass instanceof SourceTypeBinding) {
@@ -693,13 +715,11 @@
 				ASTNode.resolveAnnotations(methodDecl.scope, methodDecl.annotations, originalMethod);
 			CompilerOptions options = scope.compilerOptions();
 			if (options.isAnnotationBasedNullAnalysisEnabled) {
-				boolean usesNullTypeAnnotations = scope.environment().usesNullTypeAnnotations();
-				long nullDefaultBits = usesNullTypeAnnotations ? this.defaultNullness
-						: this.tagBits & (TagBits.AnnotationNonNullByDefault|TagBits.AnnotationNullUnspecifiedByDefault);
+				long nullDefaultBits = this.defaultNullness;
 				if (nullDefaultBits != 0 && this.declaringClass instanceof SourceTypeBinding) {
-					SourceTypeBinding declaringSourceType = (SourceTypeBinding) this.declaringClass;
-					if (declaringSourceType.checkRedundantNullnessDefaultOne(methodDecl, methodDecl.annotations, nullDefaultBits, usesNullTypeAnnotations)) {
-						declaringSourceType.checkRedundantNullnessDefaultRecurse(methodDecl, methodDecl.annotations, nullDefaultBits, usesNullTypeAnnotations);
+					Binding target = scope.checkRedundantDefaultNullness(this.defaultNullness, typeDecl.declarationSourceStart);
+					if (target != null) {
+						methodDecl.scope.problemReporter().nullDefaultAnnotationIsRedundant(methodDecl, methodDecl.annotations, target);
 					}
 				}
 			}
@@ -967,6 +987,7 @@
 	return (this.modifiers & (ClassFileConstants.AccDeprecated | ExtraCompilerModifiers.AccDeprecatedImplicitly)) != 0;
 }
 
+@Override
 public final int kind() {
 	return Binding.METHOD;
 }
@@ -992,6 +1013,7 @@
 	return this;
 }
 
+@Override
 public char[] readableName() /* foo(int, Thread) */ {
 	StringBuffer buffer = new StringBuffer(this.parameters.length + 1 * 20);
 	if (isConstructor())
@@ -1016,8 +1038,9 @@
 public void setTypeAnnotations(AnnotationBinding[] annotations) {
 	this.typeAnnotations = annotations;
 }
-public void setAnnotations(AnnotationBinding[] annotations) {
-	this.declaringClass.storeAnnotations(this, annotations);
+@Override
+public void setAnnotations(AnnotationBinding[] annotations, boolean forceStore) {
+	this.declaringClass.storeAnnotations(this, annotations, forceStore);
 }
 public void setAnnotations(AnnotationBinding[] annotations, AnnotationBinding[][] parameterAnnotations, Object defaultValue, LookupEnvironment optionalEnv) {
 	this.declaringClass.storeAnnotationHolder(this,  AnnotationHolder.storeAnnotations(annotations, parameterAnnotations, defaultValue, optionalEnv));
@@ -1047,6 +1070,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#shortReadableName()
  */
+@Override
 public char[] shortReadableName() {
 	StringBuffer buffer = new StringBuffer(this.parameters.length + 1 * 20);
 	if (isConstructor())
@@ -1303,8 +1327,7 @@
 public final int sourceStart() {
 	AbstractMethodDeclaration method = sourceMethod();
 	if (method == null) {
-		// AspectJ Extension - add check to ensure not asking binary for positions (AJ462782)
-		if (this.declaringClass instanceof SourceTypeBinding && !(this.declaringClass instanceof BinaryTypeBinding))
+		if (this.declaringClass instanceof SourceTypeBinding)
 			return ((SourceTypeBinding) this.declaringClass).sourceStart();
 		return 0;
 	}
@@ -1335,6 +1358,7 @@
 public MethodBinding tiebreakMethod() {
 	return this;
 }
+@Override
 public String toString() {
 	StringBuffer output = new StringBuffer(10);
 	if ((this.modifiers & ExtraCompilerModifiers.AccUnresolved) != 0) {
@@ -1376,19 +1400,86 @@
 	return this.typeVariables;
 }
 //pre: null annotation analysis is enabled
-public boolean hasNonNullDefaultFor(int location, boolean useTypeAnnotations) {
+public boolean hasNonNullDefaultForReturnType(AbstractMethodDeclaration srcMethod) {
+	return hasNonNullDefaultFor(Binding.DefaultLocationReturnType, srcMethod, srcMethod == null ? -1 : srcMethod.declarationSourceStart);
+}
+
+static int getNonNullByDefaultValue(AnnotationBinding annotation) {
+	ElementValuePair[] elementValuePairs = annotation.getElementValuePairs();
+	if (elementValuePairs == null || elementValuePairs.length == 0 ) {
+		// no argument: apply default default
+		ReferenceBinding annotationType = annotation.getAnnotationType();
+		if (annotationType == null) return 0;
+		MethodBinding[] annotationMethods = annotationType.methods();
+		if (annotationMethods != null && annotationMethods.length == 1) {
+			Object value = annotationMethods[0].getDefaultValue();
+			return Annotation.nullLocationBitsFromAnnotationValue(value);
+		}
+		return DefaultLocationsForTrueValue; // custom unconfigurable NNBD
+	} else if (elementValuePairs.length > 0) {
+		// evaluate the contained EnumConstantSignatures:
+		int nullness = 0;
+		for (int i = 0; i < elementValuePairs.length; i++)
+			nullness |= Annotation.nullLocationBitsFromAnnotationValue(elementValuePairs[i].getValue());
+		return nullness;
+	} else {
+		// empty argument: cancel all defaults from enclosing scopes
+		return NULL_UNSPECIFIED_BY_DEFAULT;
+	}
+}
+
+
+//pre: null annotation analysis is enabled
+public ParameterNonNullDefaultProvider hasNonNullDefaultForParameter(AbstractMethodDeclaration srcMethod) {
+	int len = this.parameters.length;
+	boolean[] result = new boolean[len];
+	boolean trueFound = false;
+	boolean falseFound = false;
+	for (int i = 0; i < len; i++) {
+		int start = srcMethod == null || srcMethod.arguments == null || srcMethod.arguments.length == 0 ? -1
+				: srcMethod.arguments[i].declarationSourceStart;
+		int nonNullByDefaultValue = srcMethod != null && start >= 0
+				? srcMethod.scope.localNonNullByDefaultValue(start)
+				: 0;
+		if (nonNullByDefaultValue == 0) {
+			AnnotationBinding[][] parameterAnnotations = getParameterAnnotations();
+			if (parameterAnnotations != null) {
+				AnnotationBinding[] annotationBindings = parameterAnnotations[i];
+				for (AnnotationBinding annotationBinding : annotationBindings) {
+					ReferenceBinding annotationType = annotationBinding.getAnnotationType();
+					if (!annotationType.hasNullBit(TypeIds.BitNonNullByDefaultAnnotation)) {
+						continue;
+					}
+					nonNullByDefaultValue |= getNonNullByDefaultValue(annotationBinding);
+				}
+			}
+		}
+		boolean b;
+		if (nonNullByDefaultValue != 0) {
+			// parameter specific NNBD found
+			b = (nonNullByDefaultValue & Binding.DefaultLocationParameter) != 0;
+		} else {
+			b = hasNonNullDefaultFor(Binding.DefaultLocationParameter, srcMethod, start);
+		}
+		if (b) {
+			trueFound = true;
+		} else {
+			falseFound = true;
+		}
+		result[i] = b;
+	}
+		if (trueFound && falseFound) {
+			return new ParameterNonNullDefaultProvider.MixedProvider(result);
+		}
+		return trueFound ? ParameterNonNullDefaultProvider.TRUE_PROVIDER : ParameterNonNullDefaultProvider.FALSE_PROVIDER;
+	}
+//pre: null annotation analysis is enabled
+private boolean hasNonNullDefaultFor(int location, AbstractMethodDeclaration srcMethod, int start) {
 	if ((this.modifiers & ExtraCompilerModifiers.AccIsDefaultConstructor) != 0)
 		return false;
-	if (useTypeAnnotations) {
-		if (this.defaultNullness != 0)
-			return (this.defaultNullness & location) != 0;
-	} else {
-		if ((this.tagBits & TagBits.AnnotationNonNullByDefault) != 0)
-			return true;
-		if ((this.tagBits & TagBits.AnnotationNullUnspecifiedByDefault) != 0)
-			return false;
-	}
-	return this.declaringClass.hasNonNullDefaultFor(location, useTypeAnnotations);
+	if (this.defaultNullness != 0)
+		return (this.defaultNullness & location) != 0;
+	return this.declaringClass.hasNonNullDefaultFor(location, start);
 }
 
 public boolean redeclaresPublicObjectMethod(Scope scope) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
index 50b268c..cf2a5fb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ *  * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,6 +21,7 @@
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
@@ -74,6 +75,7 @@
 	this.lastVisibleFieldID = lastVisibleFieldID;
 }
 
+@Override
 String basicToString(int tab) {
 	String newLine = "\n"; //$NON-NLS-1$
 	for (int i = tab; --i >= 0;)
@@ -165,6 +167,7 @@
 
 /**
  * Spec : 8.4.3 & 9.4
+ * TODO: Add the spec section number for private interface methods from jls 9
  */
 private void checkAndSetModifiersForMethod(MethodBinding methodBinding) {
 	int modifiers = methodBinding.modifiers;
@@ -174,17 +177,16 @@
 
 	// after this point, tests on the 16 bits reserved.
 	int realModifiers = modifiers & ExtraCompilerModifiers.AccJustFlag;
-
+	long sourceLevel = compilerOptions().sourceLevel;
 	// set the requested modifiers for a method in an interface/annotation
 	if (declaringClass.isInterface()) {
 		int expectedModifiers = ClassFileConstants.AccPublic | ClassFileConstants.AccAbstract;
 		boolean isDefaultMethod = (modifiers & ExtraCompilerModifiers.AccDefaultMethod) != 0; // no need to check validity, is done by the parser
 		boolean reportIllegalModifierCombination = false;
-		boolean isJDK18orGreater = false;
-		if (compilerOptions().sourceLevel >= ClassFileConstants.JDK1_8 && !declaringClass.isAnnotationType()) {
+		if (sourceLevel >= ClassFileConstants.JDK1_8 && !declaringClass.isAnnotationType()) {
 			expectedModifiers |= ClassFileConstants.AccStrictfp
 					| ExtraCompilerModifiers.AccDefaultMethod | ClassFileConstants.AccStatic;
-			isJDK18orGreater = true;
+			expectedModifiers |= sourceLevel >= ClassFileConstants.JDK9 ? ClassFileConstants.AccPrivate : 0;
 			if (!methodBinding.isAbstract()) {
 				reportIllegalModifierCombination = isDefaultMethod && methodBinding.isStatic();
 			} else {
@@ -195,6 +197,14 @@
 			}
 			if (reportIllegalModifierCombination) {
 				problemReporter().illegalModifierCombinationForInterfaceMethod((AbstractMethodDeclaration) this.referenceContext);
+			} 
+			if (sourceLevel >= ClassFileConstants.JDK9 && (methodBinding.modifiers & ClassFileConstants.AccPrivate) != 0) {
+				int remaining = realModifiers & ~expectedModifiers;
+				if (remaining == 0) { // check for the combination of allowed modifiers with private
+					remaining = realModifiers & ~(ClassFileConstants.AccPrivate | ClassFileConstants.AccStatic | ClassFileConstants.AccStrictfp);
+					if (isDefaultMethod || remaining != 0)
+						problemReporter().illegalModifierCombinationForPrivateInterfaceMethod((AbstractMethodDeclaration) this.referenceContext);
+				}
 			}
 			// Kludge - The AccDefaultMethod bit is outside the lower 16 bits and got removed earlier. Putting it back.
 			if (isDefaultMethod) {
@@ -205,10 +215,22 @@
 			if ((declaringClass.modifiers & ClassFileConstants.AccAnnotation) != 0)
 				problemReporter().illegalModifierForAnnotationMember((AbstractMethodDeclaration) this.referenceContext);
 			else
-				problemReporter().illegalModifierForInterfaceMethod((AbstractMethodDeclaration) this.referenceContext, isJDK18orGreater);
+				problemReporter().illegalModifierForInterfaceMethod((AbstractMethodDeclaration) this.referenceContext, sourceLevel);
 			methodBinding.modifiers &= (expectedModifiers | ~ExtraCompilerModifiers.AccJustFlag);
 		}
 		return;
+	} else if (declaringClass.isAnonymousType() && sourceLevel >= ClassFileConstants.JDK9) {
+		// If the class instance creation expression elides the supertype's type arguments using '<>',
+		// then for all non-private methods declared in the class body, it is as if the method declaration
+		// is annotated with @Override - https://bugs.openjdk.java.net/browse/JDK-8073593
+		LocalTypeBinding local = (LocalTypeBinding) declaringClass;
+		TypeReference ref = local.scope.referenceContext.allocation.type;
+		if (ref != null && (ref.bits & ASTNode.IsDiamond) != 0) {
+			// 
+			if ((realModifiers & (ClassFileConstants.AccPrivate | ClassFileConstants.AccStatic )) == 0) {
+				methodBinding.tagBits |= TagBits.AnnotationOverride;
+			}
+		}
 	}
 
 	// check for abnormal modifiers
@@ -343,6 +365,7 @@
 	// is necessary to ensure error reporting
 	this.referenceContext = method;
 	method.scope = this;
+	long sourceLevel = compilerOptions().sourceLevel;
 	SourceTypeBinding declaringClass = referenceType().binding;
 	int modifiers = method.modifiers | ExtraCompilerModifiers.AccUnresolved;
 	if (method.isConstructor()) {
@@ -352,7 +375,9 @@
 		checkAndSetModifiersForConstructor(method.binding);
 	} else {
 		if (declaringClass.isInterface()) {// interface or annotation type
-			if (method.isDefaultMethod() || method.isStatic()) {
+			if (sourceLevel >= ClassFileConstants.JDK9 && ((method.modifiers & ClassFileConstants.AccPrivate) != 0)) { // private method
+				// do nothing
+			} else if (method.isDefaultMethod() || method.isStatic()) {
 				modifiers |= ClassFileConstants.AccPublic; // default method is not abstract
 			} else {
 				modifiers |= ClassFileConstants.AccPublic | ClassFileConstants.AccAbstract;
@@ -366,7 +391,6 @@
 
 	Argument[] argTypes = method.arguments;
 	int argLength = argTypes == null ? 0 : argTypes.length;
-	long sourceLevel = compilerOptions().sourceLevel;
 	if (argLength > 0) {
 		Argument argument = argTypes[--argLength];
 		if (argument.isVarArgs() && sourceLevel >= ClassFileConstants.JDK1_5)
@@ -413,6 +437,7 @@
 	}
 }
  */
+@Override
 public FieldBinding findField(TypeBinding receiverType, char[] fieldName, InvocationSite invocationSite, boolean needResolve) {
 
 	FieldBinding field = super.findField(receiverType, fieldName, invocationSite, needResolve);
@@ -462,6 +487,7 @@
 	return (this.referenceContext instanceof TypeDeclaration);
 }
 
+@Override
 public boolean isLambdaScope() {
 	return this.referenceContext instanceof LambdaExpression;
 }
@@ -478,6 +504,7 @@
  * (unit, type or method) in case the problem handler decides it is necessary
  * to abort.
  */
+@Override
 public ProblemReporter problemReporter() {
 	ProblemReporter problemReporter = referenceCompilationUnit().problemReporter;
 	problemReporter.referenceContext = this.referenceContext;
@@ -563,21 +590,105 @@
  *  Answer the reference type of this scope.
  * It is the nearest enclosing type of this scope.
  */
+@Override
 public TypeDeclaration referenceType() {
 	ClassScope scope = enclosingClassScope();
 	return scope == null ? null : scope.referenceContext;
 }
 
+@Override
 void resolveTypeParameter(TypeParameter typeParameter) {
 	typeParameter.resolve(this);
 }
 @Override
-public boolean hasDefaultNullnessFor(int location) {
-	if (this.referenceContext instanceof AbstractMethodDeclaration) {
-		MethodBinding binding = ((AbstractMethodDeclaration) this.referenceContext).binding;
-		if (binding != null && binding.defaultNullness != 0)
-			return (binding.defaultNullness & location) != 0;
+public boolean hasDefaultNullnessFor(int location, int sourceStart) {
+	int nonNullByDefaultValue = localNonNullByDefaultValue(sourceStart);
+	if(nonNullByDefaultValue != 0) {
+		return (nonNullByDefaultValue & location) != 0;
 	}
-	return this.parent.hasDefaultNullnessFor(location);
+	AbstractMethodDeclaration referenceMethod = referenceMethod();
+	if (referenceMethod != null) {
+		MethodBinding binding = referenceMethod.binding;
+		if (binding != null && binding.defaultNullness != 0) {
+			return (binding.defaultNullness & location) != 0;
+		}
+	}
+	return this.parent.hasDefaultNullnessFor(location, sourceStart);
+}
+@Override
+public Binding checkRedundantDefaultNullness(int nullBits, int sourceStart) {
+	Binding target = localCheckRedundantDefaultNullness(nullBits, sourceStart);
+	if (target != null) {
+		return target;
+	}
+	AbstractMethodDeclaration referenceMethod = referenceMethod();
+	if (referenceMethod != null) {
+		MethodBinding binding = referenceMethod.binding;
+		if (binding != null && binding.defaultNullness != 0) {
+			return (binding.defaultNullness == nullBits) ? binding : null;
+		}
+	}
+	return this.parent.checkRedundantDefaultNullness(nullBits, sourceStart);
+}
+public boolean shouldCheckAPILeaks(ReferenceBinding declaringClass, boolean memberIsPublic) {
+	if (environment().useModuleSystem)
+		return memberIsPublic && declaringClass.isPublic() && declaringClass.fPackage.isExported();
+	return false;
+}
+public void detectAPILeaks(ASTNode typeNode, TypeBinding type) {
+	if (environment().useModuleSystem) {
+		// NB: using an ASTVisitor yields more precise locations than a TypeBindingVisitor would
+		ASTVisitor visitor = new ASTVisitor() {
+			@Override
+			public boolean visit(SingleTypeReference typeReference, BlockScope scope) {
+				if (typeReference.resolvedType instanceof ReferenceBinding)
+					checkType((ReferenceBinding) typeReference.resolvedType, typeReference.sourceStart, typeReference.sourceEnd);
+				return true;
+			}
+			@Override
+			public boolean visit(QualifiedTypeReference typeReference, BlockScope scope) {
+				if (typeReference.resolvedType instanceof ReferenceBinding)
+					checkType((ReferenceBinding) typeReference.resolvedType, typeReference.sourceStart, typeReference.sourceEnd);
+				return true;
+			}
+			@Override
+			public boolean visit(ArrayTypeReference typeReference, BlockScope scope) {
+				TypeBinding leafComponentType = typeReference.resolvedType.leafComponentType();
+				if (leafComponentType instanceof ReferenceBinding)
+					checkType((ReferenceBinding) leafComponentType, typeReference.sourceStart, typeReference.originalSourceEnd);
+				return true;
+			}
+			private void checkType(ReferenceBinding referenceBinding, int sourceStart, int sourceEnd) {
+				if (!referenceBinding.isValidBinding())
+					return;
+				ModuleBinding otherModule = referenceBinding.module();
+				if (otherModule == otherModule.environment.javaBaseModule())
+					return; // always accessible
+				if (!isFullyPublic(referenceBinding)) {
+					problemReporter().nonPublicTypeInAPI(referenceBinding, sourceStart, sourceEnd);
+				} else if (!referenceBinding.fPackage.isExported()) {
+					problemReporter().notExportedTypeInAPI(referenceBinding, sourceStart, sourceEnd);
+				} else if (isUnrelatedModule(referenceBinding.fPackage)) {
+					problemReporter().missingRequiresTransitiveForTypeInAPI(referenceBinding, sourceStart, sourceEnd);
+				}
+			}
+			private boolean isFullyPublic(ReferenceBinding referenceBinding) {
+				if (!referenceBinding.isPublic())
+					return false;
+				if (referenceBinding instanceof NestedTypeBinding)
+					return isFullyPublic(((NestedTypeBinding) referenceBinding).enclosingType);
+				return true;
+			}
+			private boolean isUnrelatedModule(PackageBinding fPackage) {
+				ModuleBinding otherModule = fPackage.enclosingModule;
+				ModuleBinding thisModule = module();
+				if (thisModule != otherModule) {
+					return !thisModule.isTransitivelyRequired(otherModule);
+				}
+				return false;
+			}
+		};
+		typeNode.traverse(visitor, this);
+	}
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
index b1703a6..69435a9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -195,7 +196,7 @@
 			}
 		}
 		if (!inheritedMethod.isStatic() && !inheritedMethod.isFinal())
-		checkForBridgeMethod(currentMethod, inheritedMethod, allInheritedMethods);
+			checkForBridgeMethod(currentMethod, inheritedMethod, allInheritedMethods);
 	}
 	MethodBinding[] overridden = (MethodBinding[])this.inheritedOverriddenMethods.get(currentMethod.selector);
 	if (overridden != null) {
@@ -203,10 +204,10 @@
 			MethodBinding inheritedMethod = overridden[i];
 			if (isParameterSubsignature(currentMethod, inheritedMethod) &&
 					!inheritedMethod.isStatic() && !inheritedMethod.isFinal())
-				checkForBridgeMethod(currentMethod, inheritedMethod, allInheritedMethods);
-		}
+		checkForBridgeMethod(currentMethod, inheritedMethod, allInheritedMethods);
 	}
 }
+}
 void addBridgeMethodCandidate(MethodBinding overriddenMethod) {
 	MethodBinding[] existing = (MethodBinding[])this.inheritedOverriddenMethods.get(overriddenMethod.selector);
 	if (existing == null) {
@@ -215,7 +216,7 @@
 		int length = existing.length;
 		System.arraycopy(existing, 0, existing = new MethodBinding[length + 1], 0, length);
 		existing[length] = overriddenMethod;
-}
+	}
 	this.inheritedOverriddenMethods.put(overriddenMethod.selector, existing);
 }
 
@@ -658,7 +659,7 @@
 			MethodBinding[] methods = superType.unResolvedMethods();
 			nextMethod : for (int m = methods.length; --m >= 0;) { // Interface methods are all abstract public
 				MethodBinding inheritedMethod = methods[m];
-				if (inheritedMethod.isStatic()) continue nextMethod;
+				if (inheritedMethod.isStatic() || inheritedMethod.isPrivate()) continue nextMethod;
 				if (!inheritedMethod.isAbstract() && !inheritedMethod.isDefaultMethod()) continue nextMethod; // AspectJ Extension - allow for ITDs on the interface
 				MethodBinding[] existingMethods = (MethodBinding[]) this.inheritedMethods.get(inheritedMethod.selector);
 				if (existingMethods == null) {
@@ -1069,6 +1070,7 @@
 	}
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(10);
 	buffer.append("MethodVerifier for type: "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java
index 09512ad..7209f33 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -55,6 +56,7 @@
 }
 // Given `overridingMethod' which overrides `inheritedMethod' answer whether some subclass method that
 // differs in erasure from overridingMethod could override `inheritedMethod'
+@Override
 protected boolean canOverridingMethodDifferInErasure(MethodBinding overridingMethod, MethodBinding inheritedMethod) {
 	if (overridingMethod.areParameterErasuresEqual(inheritedMethod))
 		return false;  // no further change in signature is possible due to parameterization.
@@ -62,16 +64,19 @@
 		return false;  // no parameterization is happening anyways.
 	return true;
 }
+@Override
 boolean canSkipInheritedMethods() {
 	if (this.type.superclass() != null)
 		if (this.type.superclass().isAbstract() || this.type.superclass().isParameterizedType())
 			return false;
 	return this.type.superInterfaces() == Binding.NO_SUPERINTERFACES;
 }
+@Override
 boolean canSkipInheritedMethods(MethodBinding one, MethodBinding two) {
 	return two == null // already know one is not null
 		|| (TypeBinding.equalsEquals(one.declaringClass, two.declaringClass) && !one.declaringClass.isParameterizedType());
 }
+@Override
 void checkConcreteInheritedMethod(MethodBinding concreteMethod, MethodBinding[] abstractMethods) {
 	super.checkConcreteInheritedMethod(concreteMethod, abstractMethods);
 	boolean analyseNullAnnotations = this.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled;
@@ -79,9 +84,8 @@
 	AbstractMethodDeclaration srcMethod = null;
 	if (analyseNullAnnotations && this.type.equals(concreteMethod.declaringClass)) // is currentMethod from the current type?
 		srcMethod = concreteMethod.sourceMethod();
-	boolean useTypeAnnotations = this.environment.usesNullTypeAnnotations();
-	boolean hasReturnNonNullDefault = analyseNullAnnotations && concreteMethod.hasNonNullDefaultFor(Binding.DefaultLocationReturnType, useTypeAnnotations);
-	boolean hasParameterNonNullDefault = analyseNullAnnotations && concreteMethod.hasNonNullDefaultFor(Binding.DefaultLocationParameter, useTypeAnnotations);
+	boolean hasReturnNonNullDefault = analyseNullAnnotations && concreteMethod.hasNonNullDefaultForReturnType(srcMethod);
+	ParameterNonNullDefaultProvider hasParameterNonNullDefault = analyseNullAnnotations ? concreteMethod.hasNonNullDefaultForParameter(srcMethod): ParameterNonNullDefaultProvider.FALSE_PROVIDER;
 
 	for (int i = 0, l = abstractMethods.length; i < l; i++) {
 		MethodBinding abstractMethod = abstractMethods[i];
@@ -108,6 +112,7 @@
 		}
 	}
 }
+@Override
 void checkForBridgeMethod(MethodBinding currentMethod, MethodBinding inheritedMethod, MethodBinding[] allInheritedMethods) {
 	if (currentMethod.isVarargs() != inheritedMethod.isVarargs())
 		problemReporter(currentMethod).varargsConflict(currentMethod, inheritedMethod, this.type);
@@ -269,6 +274,7 @@
 	detectInheritedNameClash(inheritedMethod.original(), otherInheritedMethod.original());
 }
 // 8.4.8.4
+@Override
 void checkInheritedMethods(MethodBinding[] methods, int length, boolean[] isOverridden, boolean[] isInherited) {
 	boolean continueInvestigation = true;
 	MethodBinding concreteMethod = null;
@@ -359,14 +365,15 @@
 					if (!doesMethodOverride(methods[i], methods[j]) && !doesMethodOverride(methods[j], methods[i])) { 
 						problemReporter().inheritedDefaultMethodConflictsWithOtherInherited(this.type, methods[i], methods[j]);
 						ok = false;
-					continue findDefaultMethod;
+						continue findDefaultMethod;
+					}
 				}
 			}
 		}
 	}
-	}
 	return ok;
 }
+@Override
 boolean checkInheritedReturnTypes(MethodBinding method, MethodBinding otherMethod) {
 	if (areReturnTypesCompatible(method, otherMethod)) return true;
 
@@ -385,6 +392,7 @@
 
 	return false;
 }
+@Override
 void checkAgainstInheritedMethods(MethodBinding currentMethod, MethodBinding[] methods, int length, MethodBinding[] allInheritedMethods)
 {
 	super.checkAgainstInheritedMethods(currentMethod, methods, length, allInheritedMethods);
@@ -396,20 +404,20 @@
 		AbstractMethodDeclaration srcMethod = null;
 		if (this.type.equals(currentMethod.declaringClass)) // is currentMethod from the current type?
 			srcMethod = currentMethod.sourceMethod();
-		boolean useTypeAnnotations = this.environment.usesNullTypeAnnotations();
-		boolean hasReturnNonNullDefault = currentMethod.hasNonNullDefaultFor(Binding.DefaultLocationReturnType, useTypeAnnotations);
-		boolean hasParameterNonNullDefault = currentMethod.hasNonNullDefaultFor(Binding.DefaultLocationParameter, useTypeAnnotations);
+		boolean hasReturnNonNullDefault = currentMethod.hasNonNullDefaultForReturnType(srcMethod);
+		ParameterNonNullDefaultProvider hasParameterNonNullDefault = currentMethod.hasNonNullDefaultForParameter(srcMethod);
 		for (int i = length; --i >= 0;)
 			if (!currentMethod.isStatic() && !methods[i].isStatic())
 				checkNullSpecInheritance(currentMethod, srcMethod, hasReturnNonNullDefault, hasParameterNonNullDefault, true, methods[i], methods, this.type.scope, null);
 	}
 }
 
+@Override
 void checkNullSpecInheritance(MethodBinding currentMethod, AbstractMethodDeclaration srcMethod, 
-		boolean hasReturnNonNullDefault, boolean hasParameterNonNullDefault, boolean complain, MethodBinding inheritedMethod, MethodBinding[] allInherited, Scope scope, InheritedNonNullnessInfo[] inheritedNonNullnessInfos)
+		boolean hasReturnNonNullDefault, ParameterNonNullDefaultProvider hasParameterNonNullDefault, boolean complain, MethodBinding inheritedMethod, MethodBinding[] allInherited, Scope scope, InheritedNonNullnessInfo[] inheritedNonNullnessInfos)
 {
 	complain &= !currentMethod.isConstructor();
-	if (!hasReturnNonNullDefault && !hasParameterNonNullDefault && !complain && !this.environment.globalOptions.inheritNullAnnotations) {
+	if (!hasReturnNonNullDefault && !hasParameterNonNullDefault.hasAnyNonNullDefault() && !complain && !this.environment.globalOptions.inheritNullAnnotations) {
 		// nothing to be done, take the shortcut
 		currentMethod.tagBits |= TagBits.IsNullnessKnown;
 		return;
@@ -467,6 +475,7 @@
 		}
 	}
 }
+@Override
 public void reportRawReferences(MethodBinding currentMethod, MethodBinding inheritedMethod) {
 	CompilerOptions compilerOptions = this.type.scope.compilerOptions();
 	if (compilerOptions.sourceLevel < ClassFileConstants.JDK1_5 // shouldn't whine at all
@@ -510,6 +519,7 @@
 	}
  }
 
+@Override
 void checkMethods() {
 	boolean mustImplementAbstractMethods = mustImplementAbstractMethods();
 	boolean skipInheritedMethods = mustImplementAbstractMethods && canSkipInheritedMethods(); // have a single concrete superclass so only check overridden methods
@@ -858,6 +868,7 @@
 	// one has type variables and substituteTwo did not pass bounds check in computeSubstituteMethod()
 	return one.typeVariables != Binding.NO_TYPE_VARIABLES && !(substituteTwo instanceof ParameterizedGenericMethodBinding);
 }
+@Override
 SimpleSet findSuperinterfaceCollisions(ReferenceBinding superclass, ReferenceBinding[] superInterfaces) {
 	ReferenceBinding[] interfacesToVisit = null;
 	int nextPosition = 0;
@@ -952,6 +963,7 @@
 	}
 }
 // caveat: returns false if a method is implemented, but with a return type that is incompatible with that of the interface method
+@Override
 boolean isInterfaceMethodImplemented(MethodBinding inheritedMethod, MethodBinding existingMethod, ReferenceBinding superType) {
 	if (inheritedMethod.original() != inheritedMethod && existingMethod.declaringClass.isInterface())
 		return false; // must hold onto ParameterizedMethod to see if a bridge method is necessary
@@ -964,6 +976,7 @@
 				&& !existingMethod.declaringClass.isInterface()
 				&& areReturnTypesCompatible(existingMethod, inheritedMethod)); // may have to report incompatible return type
 }
+@Override
 public boolean isMethodSubsignature(MethodBinding method, MethodBinding inheritedMethod) {
 	if (!org.aspectj.org.eclipse.jdt.core.compiler.CharOperation.equals(method.selector, inheritedMethod.selector))
 		return false;
@@ -993,6 +1006,7 @@
 	}
 	return false;
 }
+@Override
 boolean reportIncompatibleReturnTypeError(MethodBinding currentMethod, MethodBinding inheritedMethod) {
 	if (isUnsafeReturnTypeOverride(currentMethod, inheritedMethod)) {
 		problemReporter(currentMethod).unsafeReturnTypeOverride(currentMethod, inheritedMethod, this.type);
@@ -1000,6 +1014,7 @@
 	}
 	return super.reportIncompatibleReturnTypeError(currentMethod, inheritedMethod);
 }
+@Override
 void verify() {
 	if (this.type.isAnnotationType())
 		this.type.detectAnnotationCycle();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.java
index 60dfaf5..5b4273b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MissingTypeBinding.java
@@ -41,6 +41,7 @@
 	this.methods = Binding.NO_METHODS;
 }
 
+@Override
 public TypeBinding clone(TypeBinding outerType) {
 	return this; // shouldn't get here.
 }
@@ -48,6 +49,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#collectMissingTypes(java.util.List)
  */
+@Override
 public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes) {
 	if (missingTypes == null) {
 		missingTypes = new ArrayList<>(5);
@@ -62,6 +64,7 @@
  * Missing binary type will answer <code>false</code> to #isValidBinding()
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#problemId()
  */
+@Override
 public int problemId() {
 	return ProblemReasons.NotFound;
 }
@@ -75,10 +78,12 @@
 	this.superclass = missingSuperclass;
 }
 
+@Override
 public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 	return; // reject misguided attempts.
 }
 
+@Override
 public String toString() {
 		return "[MISSING:" + new String(CharOperation.concatWith(this.compoundName, '.')) + "]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java
new file mode 100644
index 0000000..6b26164
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java
@@ -0,0 +1,900 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Supplier;
+import java.util.stream.Stream;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfPackage;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSetOfCharArray;
+
+/**
+ * This class serves a dual purpose
+ * <p>
+ * First, it canonically represents modules in the world of bindings.
+ * </p>
+ * <p>
+ * Secondly, it adds a graph layer on top of {@link LookupEnvironment}:
+ * ModuleBindins are linked through "read" edges as per JPMS (see java.lang.module.Configuration).
+ * Additionally, each ModuleBinding holds its own instance of LookupEnviroment,
+ * capturing all packages and types that are visible to the current module.
+ * As a subset of all visible types, the ModuleBinding knows the set of
+ * packages locally declared in this module.
+ * </p>
+ */
+public class ModuleBinding extends Binding implements IUpdatableModule {
+
+	/** Name of the unnamed module. */
+	public static final char[] UNNAMED = "".toCharArray(); //$NON-NLS-1$
+	/** Name to represent unnamed modules in --add-exports & --add-reads options. */
+	public static final char[] ALL_UNNAMED = "ALL-UNNAMED".toCharArray(); //$NON-NLS-1$
+	/** Module name for package/type lookup that doesn't care about modules. */
+	public static final char[] ANY = "".toCharArray(); //$NON-NLS-1$
+	/** Module name for package/type lookup that should look into all named modules. */
+	public static final char[] ANY_NAMED = "".toCharArray(); //$NON-NLS-1$
+
+	public static class UnNamedModule extends ModuleBinding {
+
+		private static final char[] UNNAMED_READABLE_NAME = "<unnamed>".toCharArray(); //$NON-NLS-1$
+
+		@SuppressWarnings("synthetic-access")
+		UnNamedModule(LookupEnvironment env) {
+			super(env);
+		}
+		@Override
+		public ModuleBinding[] getAllRequiredModules() {
+			return Binding.NO_MODULES;
+		}
+		@Override
+		public boolean canAccess(PackageBinding pkg) {
+			ModuleBinding mod = pkg.enclosingModule;
+			if (mod != null && mod != this)
+				return mod.isPackageExportedTo(pkg, this);
+			return true;
+		}
+		@Override
+		public boolean isPackageExportedTo(PackageBinding pkg, ModuleBinding client) {
+			// per JLS 7.7.5 an unnamed module exports all its packages
+			return pkg.isDeclaredIn(this) && pkg.hasCompilationUnit(false);
+		}
+		@Override
+		public boolean isUnnamed() {
+			return true;
+		}
+		@Override
+		public char[] nameForLookup() {
+			return ANY;
+		}
+		@Override
+		public char[] readableName() {
+			return UNNAMED_READABLE_NAME;
+		}
+		@Override
+		public String toString() {
+			return "The Unnamed Module"; //$NON-NLS-1$
+		}
+	}
+	public char[] moduleName;
+	protected ModuleBinding[] requires;
+	protected ModuleBinding[] requiresTransitive;
+	protected PackageBinding[] exportedPackages;
+	private Map<PackageBinding,SimpleSetOfCharArray> exportRestrictions; // RHS is unresolved names, because unresolvable names are legal in this position
+	protected PackageBinding[] openedPackages;
+	private Map<PackageBinding,SimpleSetOfCharArray> openRestrictions; // RHS is unresolved names, because unresolvable names are legal in this position
+	protected TypeBinding[] uses;
+	protected TypeBinding[] services;
+	public Map<TypeBinding,TypeBinding[]> implementations;
+	public char[] mainClassName;
+	private SimpleSetOfCharArray packageNames;
+	public int modifiers;
+	public LookupEnvironment environment;
+	public long tagBits;
+	public int defaultNullness = NO_NULL_DEFAULT;
+	ModuleBinding[] requiredModules = null;
+	boolean isAuto = false;
+	private boolean[] isComplete = new boolean[UpdateKind.values().length];
+	private Set<ModuleBinding> transitiveRequires;
+	boolean isPackageLookupActive = false; // to prevent cyclic lookup caused by synthetic reads edges on behalf of auto-modules.
+	SimpleLookupTable storedAnnotations = null;
+
+	/**
+	 * Packages declared in this module (indexed by qualified name).
+	 * We consider a package as declared in a module,
+	 * if a compilation unit associated with the module
+	 * declares the package or a subpackage thereof.
+	 */
+	public HashtableOfPackage declaredPackages;
+
+	/** Constructor for the unnamed module. */
+	private ModuleBinding(LookupEnvironment env) {
+		this.moduleName = ModuleBinding.UNNAMED;
+		this.environment = env;
+		this.requires = Binding.NO_MODULES;
+		this.requiresTransitive = Binding.NO_MODULES;
+		this.exportedPackages = Binding.NO_PACKAGES;
+		this.openedPackages = Binding.NO_PACKAGES;
+		this.declaredPackages = new HashtableOfPackage(0);
+		Arrays.fill(this.isComplete, true);
+	}
+	/* For error binding and sub class SourceModuleBinding. */
+	ModuleBinding(char[] moduleName) {
+		this.moduleName = moduleName;
+		this.requires = Binding.NO_MODULES;
+		this.requiresTransitive = Binding.NO_MODULES;
+		this.exportedPackages = Binding.NO_PACKAGES;
+		this.openedPackages = Binding.NO_PACKAGES;
+		this.uses = Binding.NO_TYPES;
+		this.services = Binding.NO_TYPES;
+		this.declaredPackages = new HashtableOfPackage(5);
+	}
+
+	/* For sub class BinaryModuleBinding */
+	protected ModuleBinding(char[] moduleName, LookupEnvironment existingEnvironment) {
+		this.moduleName = moduleName;
+		this.requires = Binding.NO_MODULES;
+		this.requiresTransitive = Binding.NO_MODULES;
+		this.environment = new LookupEnvironment(existingEnvironment.root, this);
+		this.declaredPackages = new HashtableOfPackage(5);
+	}
+	
+	public PackageBinding[] getExports() {
+		completeIfNeeded(UpdateKind.PACKAGE);
+		return this.exportedPackages;
+	}
+	public String[] getExportRestrictions(PackageBinding pack) {
+		completeIfNeeded(UpdateKind.PACKAGE);
+		if (this.exportRestrictions != null) {
+			SimpleSetOfCharArray set = this.exportRestrictions.get(pack);
+			if (set != null) {
+				char[][] names = new char[set.elementSize][]; 
+				set.asArray(names);
+				return CharOperation.charArrayToStringArray(names);
+			}
+		}
+		return CharOperation.NO_STRINGS;
+	}
+	public PackageBinding[] getOpens() {
+		completeIfNeeded(UpdateKind.PACKAGE);
+		return this.openedPackages;
+	}
+	public String[] getOpenRestrictions(PackageBinding pack) {
+		completeIfNeeded(UpdateKind.PACKAGE);
+		if (this.openRestrictions != null) {
+			SimpleSetOfCharArray set = this.openRestrictions.get(pack);
+			if (set != null) {
+				char[][] names = new char[set.elementSize][]; 
+				set.asArray(names);
+				return CharOperation.charArrayToStringArray(names);
+			}
+		}
+		return CharOperation.NO_STRINGS;
+	}
+	public TypeBinding[] getImplementations(TypeBinding binding) {
+		if (this.implementations != null) {
+			return this.implementations.get(binding);
+		}
+		return null;
+	}
+	public ModuleBinding[] getRequires() {
+		completeIfNeeded(UpdateKind.MODULE);
+		return this.requires;
+	}
+	public ModuleBinding[] getRequiresTransitive() {
+		completeIfNeeded(UpdateKind.MODULE);
+		return this.requiresTransitive;
+	}
+	
+	public TypeBinding[] getUses() {
+		return this.uses;
+	}
+	
+	public TypeBinding[] getServices() {
+		return this.services;
+	}
+
+	private void completeIfNeeded(IUpdatableModule.UpdateKind kind) {
+		if (!this.isComplete[kind.ordinal()]) {
+			this.isComplete[kind.ordinal()] = true;
+			if (this.environment.nameEnvironment instanceof IModuleAwareNameEnvironment) {
+				((IModuleAwareNameEnvironment) this.environment.nameEnvironment).applyModuleUpdates(this, kind);
+			}
+		}
+	}
+
+	// ---  Implement IUpdatableModule: ---
+
+	@Override
+	public void addReads(char[] requiredModuleName) {
+		ModuleBinding requiredModule = this.environment.getModule(requiredModuleName);
+		if (requiredModule != null) {
+			int len = this.requires.length;
+			if (len == 0) {
+				this.requires = new ModuleBinding[] { requiredModule };
+			} else {
+				System.arraycopy(this.requires, 0, this.requires = new ModuleBinding[len+1], 0, len);
+				this.requires[len] = requiredModule;
+			}
+		} else {
+			// TODO(SHMOD) report error
+		}
+		// update known packages:
+		HashtableOfPackage knownPackages = this.environment.knownPackages;
+		for (int i = 0; i < knownPackages.valueTable.length; i++) {
+			PackageBinding packageBinding = knownPackages.valueTable[i];
+			if (packageBinding == null) continue;
+			PackageBinding newBinding = requiredModule.getVisiblePackage(packageBinding.compoundName);
+			newBinding = SplitPackageBinding.combine(newBinding, packageBinding, this);
+			if (packageBinding != newBinding) {
+				knownPackages.valueTable[i] = newBinding;
+				if (this.declaredPackages.containsKey(newBinding.readableName()))
+					this.declaredPackages.put(newBinding.readableName(), newBinding);
+			}
+		}
+	}
+	@Override
+	public void addExports(char[] packageName, char[][] targetModules) {
+		PackageBinding declaredPackage = getVisiblePackage(CharOperation.splitOn('.', packageName));
+		if (declaredPackage != null && declaredPackage.isValidBinding())
+			addResolvedExport(declaredPackage, targetModules);
+	}
+
+	@Override
+	public void setMainClassName(char[] mainClassName) {
+		this.mainClassName = mainClassName;
+	}
+
+	@Override
+	public void setPackageNames(SimpleSetOfCharArray packageNames) {
+		this.packageNames = packageNames;
+	}
+
+	// for code gen:
+	/** @return array of names, which may contain nulls. */
+	public char[][] getPackageNamesForClassFile() {
+		if (this.packageNames == null)
+			return null;
+		for (PackageBinding packageBinding : this.exportedPackages)
+			this.packageNames.add(packageBinding.readableName());
+		for (PackageBinding packageBinding : this.openedPackages)
+			this.packageNames.add(packageBinding.readableName());
+		if (this.implementations != null)
+			for (TypeBinding[] types : this.implementations.values())
+				for (TypeBinding typeBinding : types)
+					this.packageNames.add(((ReferenceBinding)typeBinding).fPackage.readableName());
+		return this.packageNames.values;
+	}
+
+	// ---
+
+	public void addResolvedExport(PackageBinding declaredPackage, char[][] targetModules) {
+		int len = this.exportedPackages.length;
+		if (declaredPackage == null || !declaredPackage.isValidBinding()) {
+			// FIXME(SHMOD) use a problem binding? See https://bugs.eclipse.org/518794#c13
+			return;
+		}
+		if (len == 0) {
+			this.exportedPackages = new PackageBinding[] { declaredPackage };
+		} else {
+			System.arraycopy(this.exportedPackages, 0, this.exportedPackages = new PackageBinding[len+1], 0, len);
+			this.exportedPackages[len] = declaredPackage;
+		}
+		declaredPackage.isExported = Boolean.TRUE;
+		recordExportRestrictions(declaredPackage, targetModules);
+	}
+
+	public void addResolvedOpens(PackageBinding declaredPackage, char[][] targetModules) {
+		int len = this.openedPackages.length;
+		if (declaredPackage == null || !declaredPackage.isValidBinding()) {
+			// FIXME(SHMOD) use a problem binding? See https://bugs.eclipse.org/518794#c13
+			return;
+		}
+		if (len == 0) {
+			this.openedPackages = new PackageBinding[] { declaredPackage };
+		} else {
+			System.arraycopy(this.openedPackages, 0, this.openedPackages = new PackageBinding[len+1], 0, len);
+			this.openedPackages[len] = declaredPackage;
+		}
+		recordOpensRestrictions(declaredPackage, targetModules);
+	}
+
+	protected void recordExportRestrictions(PackageBinding exportedPackage, char[][] targetModules) {
+		if (targetModules != null && targetModules.length > 0) {
+			SimpleSetOfCharArray targetModuleSet = new SimpleSetOfCharArray(targetModules.length);
+			for (int i = 0; i < targetModules.length; i++) {
+				targetModuleSet.add(targetModules[i]);
+			}
+			if (this.exportRestrictions == null)
+				this.exportRestrictions = new HashMap<>();
+			this.exportRestrictions.put(exportedPackage, targetModuleSet);
+		}
+	}
+
+	protected void recordOpensRestrictions(PackageBinding openedPackage, char[][] targetModules) {
+		if (targetModules != null && targetModules.length > 0) {
+			SimpleSetOfCharArray targetModuleSet = new SimpleSetOfCharArray(targetModules.length);
+			for (int i = 0; i < targetModules.length; i++) {
+				targetModuleSet.add(targetModules[i]);
+			}
+			if (this.openRestrictions == null)
+				this.openRestrictions = new HashMap<>();
+			this.openRestrictions.put(openedPackage, targetModuleSet);
+		}
+	}
+
+	Stream<ModuleBinding> getRequiredModules(boolean transitiveOnly) {
+		return Stream.of(transitiveOnly ? this.getRequiresTransitive() : this.getRequires());
+	}
+	private void collectAllDependencies(Set<ModuleBinding> deps) {
+		getRequiredModules(false).forEach(m -> {
+			if (deps.add(m)) {
+				m.collectAllDependencies(deps);
+			}
+		});
+	}
+	private void collectTransitiveDependencies(Set<ModuleBinding> deps) {
+		getRequiredModules(true).forEach(m -> {
+			if (deps.add(m)) {
+				m.collectTransitiveDependencies(deps);
+			}
+		});
+	}
+
+	// All modules required by this module, either directly or indirectly
+	public Supplier<Collection<ModuleBinding>> dependencyGraphCollector() {
+		return () -> getRequiredModules(false)
+			.collect(HashSet::new,
+				(set, mod) -> {
+					set.add(mod);
+					mod.collectAllDependencies(set);
+				},
+				HashSet::addAll);
+	}
+	// All direct and transitive dependencies of this module
+	public Supplier<Collection<ModuleBinding>> dependencyCollector() {
+		return () -> getRequiredModules(false)
+			.collect(HashSet::new,
+				(set, mod) -> {
+					set.add(mod);
+					mod.collectTransitiveDependencies(set);
+				},
+				HashSet::addAll);
+	}
+
+	/**
+	 * Get all the modules required by this module
+	 * All required modules include modules explicitly specified as required in the module declaration
+	 * as well as implicit dependencies - those specified as ' requires transitive ' by one of the
+	 * dependencies
+	 * 
+	 * @return
+	 *   An array of all required modules
+	 */
+	public ModuleBinding[] getAllRequiredModules() {
+		if (this.requiredModules != null)
+			return this.requiredModules;
+
+		Collection<ModuleBinding> allRequires = dependencyCollector().get();
+		if (allRequires.contains(this)) {
+			// TODO(SHMOD): report (when? where?)
+			return NO_MODULES; // avoid entering unbounded recursion due to cyclic requires
+		}
+		ModuleBinding javaBase = this.environment.javaBaseModule();
+																			// add java.base?
+		if (!CharOperation.equals(this.moduleName, TypeConstants.JAVA_BASE)	// ... not if this *is* java.base 
+				&& javaBase != null 										// ... nor when java.base is absent
+				&& javaBase != this.environment.UnNamedModule)				// ..... or faked by the unnamed module 
+		{
+			allRequires.add(javaBase);
+		}
+		return this.requiredModules = allRequires.size() > 0 ? allRequires.toArray(new ModuleBinding[allRequires.size()]) : Binding.NO_MODULES;
+	}
+
+	/** Answer the name of this module. The unnamed module is identified by {@link #UNNAMED}. */
+	@Override
+	public char[] name() {
+		return this.moduleName;
+	}
+
+	/**
+	 * Answer the name of this module as it should be used for package or type lookup.
+	 * Unnamed and automatic modules answer {@link #ANY} or {@link #ANY_NAMED} resp.,
+	 * to signal that lookup should search in all accessible (named) modules.
+	 */
+	public char[] nameForLookup() {
+		return this.moduleName;
+	}
+
+	/**
+	 * Check if the specified package is owned by the current module and exported to the client module.
+	 * True if the package appears in the list of exported packages and when the export is targeted,
+	 * the module appears in the targets of the exports statement.
+	 * @param pkg - the package whose visibility is to be checked
+	 * @param client - the module that wishes to use the package
+	 * @return true if the package is visible to the client module, false otherwise
+	 */
+	public boolean isPackageExportedTo(PackageBinding pkg, ModuleBinding client) {
+		// TODO(SHMOD): cache the result?
+		PackageBinding resolved = null;
+		if (pkg instanceof SplitPackageBinding) {
+			resolved = ((SplitPackageBinding) pkg).getIncarnation(this);
+		} else if (pkg.enclosingModule == this) {
+			resolved = pkg;
+		}
+		if (resolved != null) {
+			if (this.isAuto) { // all packages are exported by an automatic module
+				return pkg.enclosingModule == this; // no transitive export
+			}
+			PackageBinding[] initializedExports = getExports();
+			for (int i = 0; i < initializedExports.length; i++) {
+				PackageBinding export = initializedExports[i];
+				if (export.subsumes(resolved)) {
+					if (this.exportRestrictions != null) {
+						SimpleSetOfCharArray restrictions = this.exportRestrictions.get(export);
+						if (restrictions != null) {
+							if (client.isUnnamed())
+								return restrictions.includes(ALL_UNNAMED);
+							else
+								return restrictions.includes(client.name());
+						}
+					}
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Return a package binding if there exists a package named name in this module's context and it can be seen by this module.
+	 * A package can be seen by this module if it is declared in this module or any other module read by this module 
+	 * (JLS 7.4.3 for packages based on JLS 7.3 for compilation units).
+	 * Package exports are not considered for visibility check (only when checking "uniquely visible" (JLS 7.4.3)).
+	 * <p>
+	 * The returned package may be a {@link SplitPackageBinding}, if more than one package of the given name is visible.
+	 * </p>
+	 * <p>
+	 * When asked via the unnamed module or an automatic module all other named modules are considered visible. 
+	 * </p>
+	 */
+	public PackageBinding getTopLevelPackage(char[] name) {
+		// check caches:
+		PackageBinding binding = this.declaredPackages.get(name);
+		if (binding != null)
+			return binding;
+		binding = this.environment.getPackage0(name);
+		if (binding != null)
+			return binding;
+		binding = getVisiblePackage(null, name);
+		// remember:
+		if (binding != null) {
+			this.environment.knownPackages.put(name, binding);
+			binding = addPackage(binding, false);
+		} else {
+			this.environment.knownPackages.put(name, LookupEnvironment.TheNotFoundPackage);
+		}
+		return binding;
+	}
+
+	PackageBinding getDeclaredPackage(char[][] parentName, char[] name) {
+		// check caches:
+		char[][] subPkgCompoundName = CharOperation.arrayConcat(parentName, name);
+		char[] fullFlatName = CharOperation.concatWith(subPkgCompoundName, '.');
+		PackageBinding pkg = this.declaredPackages.get(fullFlatName);
+		if (pkg != null)
+			return pkg;
+		PackageBinding parent = parentName.length == 0 ? null : getVisiblePackage(parentName);
+		PackageBinding binding = new PackageBinding(subPkgCompoundName, parent, this.environment, this);
+		// remember
+		this.declaredPackages.put(fullFlatName, binding);
+		if (parent == null) {
+			this.environment.knownPackages.put(name, binding);
+		}
+		return binding;
+	}
+	// Given parent is visible in this module, see if there is sub package named name visible in this module
+	PackageBinding getVisiblePackage(PackageBinding parent, char[] name) {
+		// check caches:
+		char[][] parentName = parent == null ? CharOperation.NO_CHAR_CHAR : parent.compoundName;
+		char[][] subPkgCompoundName = CharOperation.arrayConcat(parentName, name);
+		char[] fullFlatName = CharOperation.concatWith(subPkgCompoundName, '.');
+		PackageBinding pkg = this.declaredPackages.get(fullFlatName);
+		if (pkg != null)
+			return pkg;
+		if (parent != null)
+			pkg = parent.getPackage0(name);
+		else
+			pkg = this.environment.getPackage0(name);
+		if (pkg != null) {
+			if (pkg == LookupEnvironment.TheNotFoundPackage)
+				return null;
+			else
+				return addPackage(pkg, false);
+		}
+
+		PackageBinding binding = null;
+		if (this.environment.useModuleSystem) {
+			IModuleAwareNameEnvironment moduleEnv = (IModuleAwareNameEnvironment) this.environment.nameEnvironment;
+			char[][] declaringModuleNames = moduleEnv.getModulesDeclaringPackage(parentName, name, nameForLookup());
+			if (declaringModuleNames != null) {
+				if (!this.isUnnamed() && CharOperation.containsEqual(declaringModuleNames, this.moduleName)) {
+					// declared here, not yet known, so create it now:
+					binding = new PackageBinding(subPkgCompoundName, parent, this.environment, this);
+				} else {
+					// visible but foreign (when current is unnamed or auto):
+					for (char[] declaringModuleName : declaringModuleNames) {
+						ModuleBinding declaringModule = this.environment.root.getModule(declaringModuleName);
+						if (declaringModule != null && !declaringModule.isPackageLookupActive) {
+							PackageBinding declaredPackage = declaringModule.getDeclaredPackage(parentName, name);
+							if (declaredPackage != null) {
+								// don't add foreign package to 'parent' (below), but to its own parent:
+								if (declaredPackage.parent != null)
+									declaredPackage.parent.addPackage(declaredPackage, declaringModule, true);
+								parent = null;
+								//
+								binding = SplitPackageBinding.combine(declaredPackage, binding, this);
+							}
+						}
+					}
+				}
+			}
+		} else {
+			if (this.environment.nameEnvironment.isPackage(parentName, name))
+				binding = new PackageBinding(subPkgCompoundName, parent, this.environment, this);
+		}
+
+		// enrich with split-siblings from visible modules:
+		if (!isUnnamed()) {
+			binding = combineWithPackagesFromRequired(binding, subPkgCompoundName);
+		}
+		if (binding == null || !binding.isValidBinding())
+			return null;
+		// remember
+		if (parentName.length == 0)
+			binding.environment.knownPackages.put(name, binding);
+		else if (parent != null)
+			binding = parent.addPackage(binding, this, false);
+		return addPackage(binding, false);
+	}
+
+	/**
+	 * Answer the package of the given qualified name and visible in this module,
+	 * or {@code null} if no such package exists.
+	 * Accessibility (based on package exports) is <strong>not</strong> checked.
+	 * <p>
+	 * May answer a {@link SplitPackageBinding}.
+	 * </p>
+	 */
+	public PackageBinding getVisiblePackage(char[][] qualifiedPackageName) {
+		if (qualifiedPackageName == null || qualifiedPackageName.length == 0) {
+			return this.environment.defaultPackage;
+		}
+
+		PackageBinding parent = getTopLevelPackage(qualifiedPackageName[0]);
+		if (parent == null || parent == LookupEnvironment.TheNotFoundPackage)
+			return null;
+
+		// check each sub package
+		for (int i = 1; i < qualifiedPackageName.length; i++) {
+			PackageBinding binding = getVisiblePackage(parent, qualifiedPackageName[i]); 
+			if (binding == null || binding == LookupEnvironment.TheNotFoundPackage) {
+				return null;
+			}
+			parent = binding;
+		}
+		return parent;
+	}
+
+	/**
+	 * Answer a package, that is a member named <em>packageName</em> of the parent package
+	 * named <em>parentPackageName</em>.
+	 * Considers all packages that are visible to the current module,
+	 * i.e., we consider locally declared packages and packages in all modules
+	 * read by the current module.
+	 * Accessibility (via package exports) is <strong>not</strong> checked.
+	 */
+	public PackageBinding getPackage(char[][] parentPackageName, char[] packageName) {
+		// Returns a package binding if there exists such a package in the context of this module and it is observable
+		// A package is observable if it is declared in this module or it is exported by some required module
+		if (parentPackageName == null || parentPackageName.length == 0) {
+			return getVisiblePackage(null, packageName);
+		}
+		PackageBinding binding = null;
+		PackageBinding parent = getVisiblePackage(parentPackageName);
+		if (parent != null && parent != LookupEnvironment.TheNotFoundPackage) {
+			binding = getVisiblePackage(parent, packageName);
+		}
+		if (binding != null)
+			return addPackage(binding, false);
+		return null;
+	}
+	
+	/**
+	 * Check if the given package is declared in this module,
+	 * and if so, remember this fact for later.
+	 * The package can be a {@code SplitPackageBinding} in which case
+	 * only one of its incarnations needs to be declared in this module.
+	 * @param packageBinding the package to add
+	 * @param checkForSplit if true then we should try to construct a split package from
+	 * 	same named packages in required modules.
+	 * @return the given package, possibly enriched to a {@link SplitPackageBinding}
+	 */
+	PackageBinding addPackage(PackageBinding packageBinding, boolean checkForSplit) {
+		if (packageBinding.isDeclaredIn(this)) {
+			char[] packageName = packageBinding.readableName();
+			if (checkForSplit && this.environment.useModuleSystem) {
+				if (isUnnamed()) {
+					IModuleAwareNameEnvironment moduleEnv = (IModuleAwareNameEnvironment) this.environment.nameEnvironment;
+					char[][] declaringModuleNames = moduleEnv.getModulesDeclaringPackage(null, packageName, ANY);
+					if (declaringModuleNames != null) {
+						for (int i = 0; i < declaringModuleNames.length; i++) {
+							ModuleBinding otherModule = this.environment.getModule(declaringModuleNames[i]);
+							if (otherModule != null && !otherModule.isPackageLookupActive)
+								packageBinding = SplitPackageBinding.combine(otherModule.getVisiblePackage(packageBinding.compoundName), packageBinding, this);
+						}
+					}
+				} else {
+					packageBinding = combineWithPackagesFromRequired(packageBinding, packageBinding.compoundName);
+				}
+			}
+			this.declaredPackages.put(packageName, packageBinding);
+			if (packageBinding.parent == null) {
+				this.environment.knownPackages.put(packageName, packageBinding);
+			}
+		}
+		return packageBinding;
+	}
+	
+	private PackageBinding combineWithPackagesFromRequired(PackageBinding currentBinding, char[][] compoundName) {
+		boolean save = this.isPackageLookupActive;
+		this.isPackageLookupActive = true;
+		try {
+			for (ModuleBinding moduleBinding : getAllRequiredModules())
+				if (!moduleBinding.isPackageLookupActive)
+					currentBinding = SplitPackageBinding.combine(moduleBinding.getVisiblePackage(compoundName), currentBinding, this);
+			return currentBinding;
+		} finally {
+			this.isPackageLookupActive = save;
+		}
+	}
+
+	/**
+	 * Check if the given package is accessible by this module. True when the package is declared in
+	 * this module or exported by some required module to this module.
+	 * See {@link #isPackageExportedTo(PackageBinding, ModuleBinding)}
+	 * 
+	 * @param pkg
+	 * 
+	 * @return True, if the package is accessible by this module, false otherwise
+	 */
+	public boolean canAccess(PackageBinding pkg) {
+		if (pkg.isDeclaredIn(this))
+			return true;
+		for (ModuleBinding requiredModule : getAllRequiredModules()) {
+			// If pkg is a SplitPackageBinding, we actually ask the intersection of all required modules
+			// and modules declaring the package, if any of them exports the package to this module.
+			// The intersection is computed when inside isPackageExportedTo we ask for pkg's incarnation in requiredModule.
+			if (requiredModule.isPackageExportedTo(pkg, ModuleBinding.this))
+				return true;
+			// TODO(SHMOD): store export status in the PackageBinding?
+		}
+		return false;
+	}
+	@Override
+	public char[] computeUniqueKey(boolean isLeaf) {
+		return CharOperation.prepend('"', this.moduleName);
+	}
+
+	@Override
+	public int kind() {
+		//
+		return Binding.MODULE;
+	}
+
+	@Override
+	public char[] readableName() {
+		return this.moduleName;
+	}
+
+	@Override
+	public String toString() {
+		StringBuffer buffer = new StringBuffer(30);
+		if (isOpen())
+			buffer.append("open "); //$NON-NLS-1$
+		buffer.append("module " + new String(readableName())); //$NON-NLS-1$
+		if (this.requires.length > 0) {
+			buffer.append("\n/*    requires    */\n"); //$NON-NLS-1$
+			for (int i = 0; i < this.requires.length; i++) {
+				buffer.append("\n\t"); //$NON-NLS-1$
+				if (this.requiresTransitive != null) {
+					for (ModuleBinding reqTrans : this.requiresTransitive) {
+						if (reqTrans == this.requires[i]) {
+							buffer.append("transitive "); //$NON-NLS-1$
+							break;
+						}
+					}
+				}
+				buffer.append(this.requires[i].moduleName);
+			}
+		} else {
+			buffer.append("\nNo Requires"); //$NON-NLS-1$
+		}
+		if (this.exportedPackages != null && this.exportedPackages.length > 0) {
+			buffer.append("\n/*    exports    */\n"); //$NON-NLS-1$
+			for (int i = 0; i < this.exportedPackages.length; i++) {
+				PackageBinding export = this.exportedPackages[i];
+				buffer.append("\n\t"); //$NON-NLS-1$
+				if (export == null) {
+					buffer.append("<unresolved>"); //$NON-NLS-1$
+					continue;
+				}
+				buffer.append(export.readableName());
+				SimpleSetOfCharArray restrictions = this.exportRestrictions != null ? this.exportRestrictions.get(export) : null;
+				if (restrictions != null) {
+					buffer.append(" to "); //$NON-NLS-1$
+					String sep = ""; //$NON-NLS-1$
+					char[][] allNames = new char[restrictions.elementSize][];
+					restrictions.asArray(allNames);
+					for (char[] targetModule : allNames) {
+						buffer.append(sep);
+						buffer.append(targetModule);
+						sep = ", "; //$NON-NLS-1$
+					}
+				}
+			}
+		} else {
+			buffer.append("\nNo Exports"); //$NON-NLS-1$
+		}
+		if (this.openedPackages != null && this.openedPackages.length > 0) {
+			buffer.append("\n/*    exports    */\n"); //$NON-NLS-1$
+			for (int i = 0; i < this.openedPackages.length; i++) {
+				PackageBinding opens = this.openedPackages[i];
+				buffer.append("\n\t"); //$NON-NLS-1$
+				if (opens == null) {
+					buffer.append("<unresolved>"); //$NON-NLS-1$
+					continue;
+				}
+				buffer.append(opens.readableName());
+				SimpleSetOfCharArray restrictions = this.openRestrictions != null ? this.openRestrictions.get(opens) : null;
+				if (restrictions != null) {
+					buffer.append(" to "); //$NON-NLS-1$
+					String sep = ""; //$NON-NLS-1$
+					char[][] allNames = new char[restrictions.elementSize][];
+					restrictions.asArray(allNames);
+					for (char[] targetModule : allNames) {
+						buffer.append(sep);
+						buffer.append(targetModule);
+						sep = ", "; //$NON-NLS-1$
+					}
+				}
+			}
+		} else {
+			buffer.append("\nNo Opens"); //$NON-NLS-1$
+		}
+		if (this.uses != null && this.uses.length > 0) {
+			buffer.append("\n/*    uses    /*\n"); //$NON-NLS-1$
+			for (int i = 0; i < this.uses.length; i++) {
+				buffer.append("\n\t"); //$NON-NLS-1$
+				buffer.append(this.uses[i].debugName());
+			}
+		} else {
+			buffer.append("\nNo Uses"); //$NON-NLS-1$
+		}
+		if (this.services != null && this.services.length > 0) {
+			buffer.append("\n/*    Services    */\n"); //$NON-NLS-1$
+			for (int i = 0; i < this.services.length; i++) {
+				buffer.append("\n\t"); //$NON-NLS-1$
+				buffer.append("provides "); //$NON-NLS-1$
+				buffer.append(this.services[i].debugName());
+				buffer.append(" with "); //$NON-NLS-1$
+				if (this.implementations != null && this.implementations.containsKey(this.services[i])) {
+					String sep = ""; //$NON-NLS-1$
+					for (TypeBinding impl : this.implementations.get(this.services[i])) {
+						buffer.append(sep).append(impl.debugName());
+						sep = ", "; //$NON-NLS-1$
+					}
+				} else {
+					buffer.append("<missing implementations>"); //$NON-NLS-1$
+				}
+			}
+		} else {
+			buffer.append("\nNo Services"); //$NON-NLS-1$
+		}
+		return buffer.toString();
+	}
+	public boolean isUnnamed() {
+		return false;
+	}
+	public boolean isOpen() {
+		return (this.modifiers & ClassFileConstants.ACC_OPEN) != 0;
+	}
+	public boolean isDeprecated() {
+		return (this.tagBits & TagBits.AnnotationDeprecated) != 0;
+	}
+	public boolean hasUnstableAutoName() {
+		return false;
+	}
+	public boolean isTransitivelyRequired(ModuleBinding otherModule) {
+		if (this.transitiveRequires == null) {
+			Set<ModuleBinding> transitiveDeps = new HashSet<>();
+			collectTransitiveDependencies(transitiveDeps);
+			this.transitiveRequires = transitiveDeps;
+		}
+		return this.transitiveRequires.contains(otherModule);
+	}
+
+	public int getDefaultNullness() {
+		getAnnotationTagBits(); // ensure annotations are initialized
+		return this.defaultNullness;
+	}
+	SimpleLookupTable storedAnnotations(boolean forceInitialize, boolean forceStore) {
+		
+		if (forceInitialize && this.storedAnnotations == null) {
+			if (!this.environment.globalOptions.storeAnnotations && !forceStore)
+				return null; // not supported during this compile
+			this.storedAnnotations = new SimpleLookupTable(3);
+		}
+		return this.storedAnnotations;
+	}
+	public AnnotationHolder retrieveAnnotationHolder(Binding binding, boolean forceInitialization) {
+		SimpleLookupTable store = storedAnnotations(forceInitialization, false);
+		return store == null ? null : (AnnotationHolder) store.get(binding);
+	}
+
+	AnnotationBinding[] retrieveAnnotations(Binding binding) {
+		AnnotationHolder holder = retrieveAnnotationHolder(binding, true);
+		return holder == null ? Binding.NO_ANNOTATIONS : holder.getAnnotations();
+	}
+
+	@Override
+	public void setAnnotations(AnnotationBinding[] annotations, boolean forceStore) {
+		storeAnnotations(this, annotations, forceStore);
+	}
+	void storeAnnotationHolder(Binding binding, AnnotationHolder holder) {
+		if (holder == null) {
+			SimpleLookupTable store = storedAnnotations(false, false);
+			if (store != null)
+				store.removeKey(binding);
+		} else {
+			SimpleLookupTable store = storedAnnotations(true, false);
+			if (store != null)
+				store.put(binding, holder);
+		}
+	}
+
+	void storeAnnotations(Binding binding, AnnotationBinding[] annotations, boolean forceStore) {
+		AnnotationHolder holder = null;
+		if (annotations == null || annotations.length == 0) {
+			SimpleLookupTable store = storedAnnotations(false, forceStore);
+			if (store != null)
+				holder = (AnnotationHolder) store.get(binding);
+			if (holder == null) return; // nothing to delete
+		} else {
+			SimpleLookupTable store = storedAnnotations(true, forceStore);
+			if (store == null) return; // not supported
+			holder = (AnnotationHolder) store.get(binding);
+			if (holder == null)
+				holder = new AnnotationHolder();
+		}
+		storeAnnotationHolder(binding, holder.setAnnotations(annotations));
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.java
index b1e8c95..6426ef4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/MostSpecificExceptionMethodBinding.java
@@ -34,6 +34,7 @@
 		this.defaultNullness = originalMethod.defaultNullness;
 	}
 	
+	@Override
 	public MethodBinding original() {
 		return this.originalMethod.original();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.java
index 6e4a2bf..d834a91 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NestedTypeBinding.java
@@ -15,9 +15,6 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
-
 public abstract class NestedTypeBinding extends SourceTypeBinding {
 
 	public SourceTypeBinding enclosingType;
@@ -126,20 +123,9 @@
 	return synthLocal;
 }
 
-protected void checkRedundantNullnessDefaultRecurse(ASTNode location, Annotation[] annotations, long nullBits, boolean useNullTypeAnnotations) {
-	if (!isPrototype()) throw new IllegalStateException();
-	ReferenceBinding currentType = this.enclosingType;
-	do {
-		if (!((SourceTypeBinding)currentType).checkRedundantNullnessDefaultOne(location, annotations, nullBits, useNullTypeAnnotations)) {
-			return;
-		}
-		currentType = currentType.enclosingType();
-	} while (currentType instanceof SourceTypeBinding);
-	super.checkRedundantNullnessDefaultRecurse(location, annotations, nullBits, useNullTypeAnnotations);
-}
-
 /* Answer the receiver's enclosing type... null if the receiver is a top level type.
 */
+@Override
 public ReferenceBinding enclosingType() {
 	return this.enclosingType;
 }
@@ -147,6 +133,7 @@
 /**
  * @return the enclosingInstancesSlotSize
  */
+@Override
 public int getEnclosingInstancesSlotSize() {
 	if (!isPrototype()) throw new IllegalStateException();
 	return this.enclosingInstances == null ? 0 : this.enclosingInstances.length;
@@ -155,6 +142,7 @@
 /**
  * @return the outerLocalVariablesSlotSize
  */
+@Override
 public int getOuterLocalVariablesSlotSize() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.outerLocalVariablesSlotSize < 0) {
@@ -235,6 +223,7 @@
 	return this.enclosingInstances;		// is null if no enclosing instances are required
 }
 
+@Override
 public ReferenceBinding[] syntheticEnclosingInstanceTypes() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.enclosingTypes == UNINITIALIZED_REFERENCE_TYPES) {
@@ -251,6 +240,7 @@
 	return this.enclosingTypes;
 }
 
+@Override
 public SyntheticArgumentBinding[] syntheticOuterLocalVariables() {
 	if (!isPrototype()) throw new IllegalStateException();
 	return this.outerLocalVariables;		// is null if no outer locals are required
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.java
index f099813..e2ee52c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/NullTypeBinding.java
@@ -19,14 +19,17 @@
 		super(TypeIds.T_null, TypeConstants.NULL, new char[] { 'N' }); // N stands for null even if it is never internally used);
 	}
 	
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return this;  // enforce solitude.
 	}
 	
+	@Override
 	public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 		return; // reject misguided attempt.
 	}
 	
+	@Override
 	public TypeBinding unannotated() {
 		return this;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
index 0ab9436..b62e3a3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PackageBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,7 +14,11 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
+import java.util.ArrayList;
+import java.util.function.Predicate;
+
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfPackage;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfType;
 
@@ -23,36 +27,53 @@
 
 	public char[][] compoundName;
 	PackageBinding parent;
+	ArrayList<SplitPackageBinding> wrappingSplitPackageBindings;
 	public LookupEnvironment environment;
-	HashtableOfType knownTypes;
+	/** Types in this map are either uniquely visible in the current module or ProblemReferenceBindings. */
+	public HashtableOfType knownTypes;
+	/** All visible member packages, i.e. observable packages associated with modules read by the current module. */
 	HashtableOfPackage knownPackages;
 
 	// code representing the default that has been defined for this package (using @NonNullByDefault)
 	// one of Binding.{NO_NULL_DEFAULT,NULL_UNSPECIFIED_BY_DEFAULT,NONNULL_BY_DEFAULT}
-	protected int defaultNullness = NO_NULL_DEFAULT;
+	private int defaultNullness = NO_NULL_DEFAULT;
+
+	public ModuleBinding enclosingModule;
+
+	/** Is this package exported from its module? NB: to query this property use {@link #isExported()} to ensure initialization. */
+	Boolean isExported;
 
 protected PackageBinding() {
 	// for creating problem package
 }
-public PackageBinding(char[] topLevelPackageName, LookupEnvironment environment) {
-	this(new char[][] {topLevelPackageName}, null, environment);
+public PackageBinding(char[] topLevelPackageName, LookupEnvironment environment, ModuleBinding enclosingModule) {
+	this(new char[][] {topLevelPackageName}, null, environment, enclosingModule);
 }
-/* Create the default package.
+/* Create a normal package.
 */
-public PackageBinding(char[][] compoundName, PackageBinding parent, LookupEnvironment environment) {
+public PackageBinding(char[][] compoundName, PackageBinding parent, LookupEnvironment environment, ModuleBinding enclosingModule) {
 	this.compoundName = compoundName;
 	this.parent = parent;
 	this.environment = environment;
 	this.knownTypes = null; // initialized if used... class counts can be very large 300-600
 	this.knownPackages = new HashtableOfPackage(3); // sub-package counts are typically 0-3
+	
 	if (compoundName != CharOperation.NO_CHAR_CHAR)
 		checkIfNullAnnotationPackage();
+	
+	if (enclosingModule != null)
+		this.enclosingModule = enclosingModule;
+	else if (parent != null)
+		this.enclosingModule = parent.enclosingModule; // stop-gap for any remaining calls that don't provide an enclosingModule (they should)
+	
+	if (this.enclosingModule == null)
+		throw new IllegalStateException("Package should have an enclosing module"); //$NON-NLS-1$
 }
 
 public PackageBinding(LookupEnvironment environment) {
-	this(CharOperation.NO_CHAR_CHAR, null, environment);
+	this(CharOperation.NO_CHAR_CHAR, null, environment, environment.module);
 }
-private void addNotFoundPackage(char[] simpleName) {
+protected void addNotFoundPackage(char[] simpleName) {
 	this.knownPackages.put(simpleName, LookupEnvironment.TheNotFoundPackage);
 }
 private void addNotFoundType(char[] simpleName) {
@@ -60,9 +81,15 @@
 		this.knownTypes = new HashtableOfType(25);
 	this.knownTypes.put(simpleName, LookupEnvironment.TheNotFoundType);
 }
-void addPackage(PackageBinding element) {
+/**
+ * Remembers a sub-package.
+ * For a split parent package this will include enriching with siblings, if checkForSplitSiblings is true
+ * in which case the enriched (split) binding will be returned.
+ */
+PackageBinding addPackage(PackageBinding element, ModuleBinding module, boolean checkForSplitSiblings) {
 	if ((element.tagBits & TagBits.HasMissingType) == 0) clearMissingTagBit();
 	this.knownPackages.put(element.compoundName[element.compoundName.length - 1], element);
+	return element;
 }
 void addType(ReferenceBinding element) {
 	if ((element.tagBits & TagBits.HasMissingType) == 0) clearMissingTagBit();
@@ -76,6 +103,22 @@
 	if (this.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled)
 		if (element.isAnnotationType() || element instanceof UnresolvedReferenceBinding) // unresolved types don't yet have the modifiers set
 			checkIfNullAnnotationType(element);
+
+	if (!element.isUnresolvedType() && this.wrappingSplitPackageBindings != null) {
+		for (SplitPackageBinding splitPackageBinding : this.wrappingSplitPackageBindings) {
+			if (splitPackageBinding.knownTypes != null) {
+				ReferenceBinding prior = splitPackageBinding.knownTypes.get(name);
+				if (prior != null && prior.isUnresolvedType() && !element.isUnresolvedType()) {
+					((UnresolvedReferenceBinding) prior).setResolvedType(element, this.environment);
+					splitPackageBinding.knownTypes.put(name, null); // forces re-checking for conflicts
+				}
+			}
+		}
+	}
+}
+
+ModuleBinding[] getDeclaringModules() {
+	return new ModuleBinding[] { this.enclosingModule };
 }
 
 void clearMissingTagBit() {
@@ -88,24 +131,20 @@
  * slash separated name
  * org.aspectj.org.eclipse.jdt.core --> org.aspectj.org.eclipse.jdt/core
  */
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	return CharOperation.concatWith(this.compoundName, '/');
 }
-private PackageBinding findPackage(char[] name) {
-	if (!this.environment.isPackage(this.compoundName, name))
-		return null;
-
-	char[][] subPkgCompoundName = CharOperation.arrayConcat(this.compoundName, name);
-	PackageBinding subPackageBinding = new PackageBinding(subPkgCompoundName, this, this.environment);
-	addPackage(subPackageBinding);
-	return subPackageBinding;
+protected PackageBinding findPackage(char[] name, ModuleBinding module) {
+	// delegate to the module to consider the module graph:
+	return module.getPackage(this.compoundName, name);
 }
 /* Answer the subpackage named name; ask the oracle for the package if its not in the cache.
 * Answer null if it could not be resolved.
 *
 * NOTE: This should only be used when we know there is NOT a type with the same name.
 */
-PackageBinding getPackage(char[] name) {
+PackageBinding getPackage(char[] name, ModuleBinding mod) {
 	PackageBinding binding = getPackage0(name);
 	if (binding != null) {
 		if (binding == LookupEnvironment.TheNotFoundPackage)
@@ -113,24 +152,32 @@
 		else
 			return binding;
 	}
-	if ((binding = findPackage(name)) != null)
+	if ((binding = findPackage(name, mod)) != null)
 		return binding;
 
 	// not found so remember a problem package binding in the cache for future lookups
 	addNotFoundPackage(name);
 	return null;
 }
-/* Answer the subpackage named name if it exists in the cache.
+/** Answer the subpackage named name if it exists in the cache.
 * Answer theNotFoundPackage if it could not be resolved the first time
 * it was looked up, otherwise answer null.
-*
+* <p>
+* NOTE: The returned package binding is guaranteed to be complete wrt. SplitPackageBinding,
+* or, if no complete binding is yet available, we shyly answer null.
+* </p><p>
 * NOTE: Senders must convert theNotFoundPackage into a real problem
-* package if its to returned.
+* package if its to returned.</p>
 */
-
 PackageBinding getPackage0(char[] name) {
 	return this.knownPackages.get(name);
 }
+/** Variant (see {@link #getPackage0(char[])}), that may even answer an incompletely
+ *  combined package (in the case of SplitPackageBinding).
+ */
+PackageBinding getPackage0Any(char[] name) {
+	return this.knownPackages.get(name);
+}
 /* Answer the type named name; ask the oracle for the type if its not in the cache.
 * Answer a NotVisible problem type if the type is not visible from the invocationPackage.
 * Answer null if it could not be resolved.
@@ -139,10 +186,10 @@
 * package with the same name.
 */
 
-ReferenceBinding getType(char[] name) {
+public ReferenceBinding getType(char[] name, ModuleBinding mod) {
 	ReferenceBinding referenceBinding = getType0(name);
 	if (referenceBinding == null) {
-		if ((referenceBinding = this.environment.askForType(this, name)) == null) {
+		if ((referenceBinding = this.environment.askForType(this, name, mod)) == null) {
 			// not found so remember a problem type binding in the cache for future lookups
 			addNotFoundType(name);
 			return null;
@@ -155,6 +202,9 @@
 	referenceBinding = (ReferenceBinding) BinaryTypeBinding.resolveType(referenceBinding, this.environment, false /* no raw conversion for now */);
 	if (referenceBinding.isNestedType())
 		return new ProblemReferenceBinding(new char[][]{ name }, referenceBinding, ProblemReasons.InternalNameProvided);
+	if (!mod.canAccess(this))
+		return new ProblemReferenceBinding(referenceBinding.compoundName, referenceBinding, ProblemReasons.NotAccessible);
+	// at this point we have only checked accessibility of the package, accessibility of the type will be checked by callers
 	return referenceBinding;
 }
 /* Answer the type named name if it exists in the cache.
@@ -180,13 +230,20 @@
 * THIS SHOULD ONLY BE USED BY SOURCE TYPES/SCOPES.
 */
 
-public Binding getTypeOrPackage(char[] name) {
+public Binding getTypeOrPackage(char[] name, ModuleBinding mod) {
+	ReferenceBinding problemBinding = null;
 	ReferenceBinding referenceBinding = getType0(name);
+	lookForType0:
 	if (referenceBinding != null && referenceBinding != LookupEnvironment.TheNotFoundType) {
 		referenceBinding = (ReferenceBinding) BinaryTypeBinding.resolveType(referenceBinding, this.environment, false /* no raw conversion for now */);
 		if (referenceBinding.isNestedType()) {
 			return new ProblemReferenceBinding(new char[][]{name}, referenceBinding, ProblemReasons.InternalNameProvided);
 		}
+		boolean isSameModule = (this instanceof SplitPackageBinding) ? referenceBinding.module() == mod : this.enclosingModule == mod;
+		if (!isSameModule && referenceBinding.isValidBinding() && !mod.canAccess(referenceBinding.fPackage)) {
+			problemBinding = new ProblemReferenceBinding(referenceBinding.compoundName, referenceBinding, ProblemReasons.NotAccessible);
+			break lookForType0;
+		}
 		if ((referenceBinding.tagBits & TagBits.HasMissingType) == 0) {
 			return referenceBinding;
 		}
@@ -197,12 +254,18 @@
 	if (packageBinding != null && packageBinding != LookupEnvironment.TheNotFoundPackage) {
 		return packageBinding;
 	}
-	if (referenceBinding == null) { // have not looked for it before
-		if ((referenceBinding = this.environment.askForType(this, name)) != null) {
+	lookForType:
+	if (referenceBinding == null && problemBinding == null) { // have not looked for it before
+		if ((referenceBinding = this.environment.askForType(this, name, mod)) != null) {
 			if (referenceBinding.isNestedType()) {
 				return new ProblemReferenceBinding(new char[][]{name}, referenceBinding, ProblemReasons.InternalNameProvided);
 			}
-			return referenceBinding;
+			if (referenceBinding.isValidBinding() && !mod.canAccess(referenceBinding.fPackage)) {
+				problemBinding = new ProblemReferenceBinding(referenceBinding.compoundName, referenceBinding, ProblemReasons.NotAccessible);
+				break lookForType;
+			} else {
+				return referenceBinding;
+			}
 		}
 
 		// Since name could not be found, add a problem binding
@@ -211,22 +274,24 @@
 	}
 
 	if (packageBinding == null) { // have not looked for it before
-		if ((packageBinding = findPackage(name)) != null) {
+		if ((packageBinding = findPackage(name, mod)) != null) {
 			return packageBinding;
 		}
 		if (referenceBinding != null && referenceBinding != LookupEnvironment.TheNotFoundType) {
+			if (problemBinding != null)
+				return problemBinding;
 			return referenceBinding; // found cached missing type - check if package conflict
 		}
 		addNotFoundPackage(name);
 	}
 
-	return null;
+	return problemBinding;
 }
 public final boolean isViewedAsDeprecated() {
 	if ((this.tagBits & TagBits.DeprecatedAnnotationResolved) == 0) {
 		this.tagBits |= TagBits.DeprecatedAnnotationResolved;
 		if (this.compoundName != CharOperation.NO_CHAR_CHAR) {
-			ReferenceBinding packageInfo = this.getType(TypeConstants.PACKAGE_INFO_NAME);
+			ReferenceBinding packageInfo = this.getType(TypeConstants.PACKAGE_INFO_NAME, this.enclosingModule);
 			if (packageInfo != null) {
 				packageInfo.initializeDeprecatedAnnotationTagBits();
 				this.tagBits |= packageInfo.tagBits & TagBits.AllStandardAnnotationsMask;
@@ -235,13 +300,35 @@
 	}
 	return (this.tagBits & TagBits.AnnotationDeprecated) != 0;
 }
+public int getDefaultNullness() {
+	if (this.defaultNullness == NO_NULL_DEFAULT)
+		return this.enclosingModule.getDefaultNullness();
+	return this.defaultNullness;
+}
+public void setDefaultNullness(int nullness) {
+	this.defaultNullness = nullness;
+}
+/**
+ * Find a binding (either this package or its enclosing ModuleBinding)
+ * where 'defaultNullness' matches the given predicate.
+ */
+public Binding findDefaultNullnessTarget(Predicate<Integer> predicate) {
+	if (predicate.test(this.defaultNullness))
+		return this;
+	if (this.defaultNullness == NO_NULL_DEFAULT)
+		if (predicate.test(this.enclosingModule.getDefaultNullness()))
+			return this.enclosingModule;
+	return null;
+}
 /* API
 * Answer the receiver's binding type from Binding.BindingID.
 */
+@Override
 public final int kind() {
 	return Binding.PACKAGE;
 }
 
+@Override
 public int problemId() {
 	if ((this.tagBits & TagBits.HasMissingType) != 0)
 		return ProblemReasons.NotFound;
@@ -260,7 +347,6 @@
 			env.nonnullByDefaultAnnotationPackage = this;
 	}
 }
-
 private boolean isPackageOfQualifiedTypeName(char[][] packageName, char[][] typeName) {
 	int length;
 	if (typeName == null || (length = packageName.length) != typeName.length -1)
@@ -294,9 +380,11 @@
 	}
 }
 
+@Override
 public char[] readableName() /*java.lang*/ {
 	return CharOperation.concatWith(this.compoundName, '.');
 }
+@Override
 public String toString() {
 	String str;
 	if (this.compoundName == CharOperation.NO_CHAR_CHAR) {
@@ -309,4 +397,53 @@
 	}
 	return str;
 }
+public boolean isDeclaredIn(ModuleBinding moduleBinding) {
+	return this.enclosingModule == moduleBinding;
+}
+public boolean subsumes(PackageBinding binding) {
+	return binding == this;
+}
+/**
+ * Is this package exported from its module?
+ * Does not consider export restrictions.
+ */
+public boolean isExported() {
+	if (this.isExported == null) {
+		this.enclosingModule.getExports(); // ensure resolved and completed
+		if (this.isExported == null)
+			this.isExported = Boolean.FALSE;
+	}
+	return this.isExported == Boolean.TRUE;
+}
+/**
+ * If this package is uniquely visible to 'module' return a plain PackageBinding.
+ * In case of a conflict between a local package and foreign package
+ * the plain local package is returned, because this conflict will more
+ * appropriately be reported against the package declaration, not its references.
+ * In case of multiple accessible foreign packages a SplitPackageBinding is returned
+ * to indicate a conflict.
+ */
+public PackageBinding getVisibleFor(ModuleBinding module) {
+	return this;
+}
+public boolean hasCompilationUnit(boolean checkCUs) {
+	if (this.knownTypes != null) {
+		for (ReferenceBinding knownType : this.knownTypes.valueTable) {
+			if (knownType != null && knownType != LookupEnvironment.TheNotFoundType)
+				return true;
+		}
+	}
+	if (this.environment.useModuleSystem) {
+		IModuleAwareNameEnvironment moduleEnv = (IModuleAwareNameEnvironment) this.environment.nameEnvironment;
+		return moduleEnv.hasCompilationUnit(this.compoundName, this.enclosingModule.nameForLookup(), checkCUs);
+	}
+	return false;
+}
+
+public void addWrappingSplitPackageBinding(SplitPackageBinding splitPackageBinding) {
+	if (this.wrappingSplitPackageBindings == null) {
+		this.wrappingSplitPackageBindings = new ArrayList<>();
+	}
+	this.wrappingSplitPackageBindings.add(splitPackageBinding);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.java
new file mode 100644
index 0000000..5abeaec
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterNonNullDefaultProvider.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Till Brychcy and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Till Brychcy - initial API and implementation
+ *******************************************************************************/
+
+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
+
+interface ParameterNonNullDefaultProvider {
+	public boolean hasAnyNonNullDefault();
+	public boolean hasNonNullDefaultForParam(int i);
+
+	public static final ParameterNonNullDefaultProvider FALSE_PROVIDER = new ParameterNonNullDefaultProvider() {
+		@Override
+		public boolean hasNonNullDefaultForParam(int i) {
+			return false;
+		}
+
+		@Override
+		public boolean hasAnyNonNullDefault() {
+			return false;
+		}
+	};
+	public static final ParameterNonNullDefaultProvider TRUE_PROVIDER = new ParameterNonNullDefaultProvider() {
+		@Override
+		public boolean hasNonNullDefaultForParam(int i) {
+			return true;
+		}
+
+		@Override
+		public boolean hasAnyNonNullDefault() {
+			return true;
+		}
+	};
+	public static class MixedProvider implements ParameterNonNullDefaultProvider {
+		private final boolean[] result;
+
+		public MixedProvider(boolean[] result) {
+			this.result = result;
+		}
+
+		@Override
+		public boolean hasNonNullDefaultForParam(int i) {
+			return this.result[i];
+		}
+
+		@Override
+		public boolean hasAnyNonNullDefault() {
+			return true;
+		}
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.java
index e012d9d..fa27404 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedFieldBinding.java
@@ -42,6 +42,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding#constant()
  */
+@Override
 public Constant constant() {
 	return this.originalField.constant();
 }
@@ -49,6 +50,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding#original()
  */
+@Override
 public FieldBinding original() {
 	return this.originalField.original();
 }
@@ -56,21 +58,25 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding#constant()
  */
+@Override
 public void setConstant(Constant constant) {
 	this.originalField.setConstant(constant);
 }
 	
 	// AspectJ Extension - delegate to the original method
 	
+	@Override
 	public boolean canBeSeenBy(TypeBinding receiverType, InvocationSite invocationSite, Scope scope) {
 		if (alwaysNeedsAccessMethod(true)) 	return originalField.canBeSeenBy(receiverType, invocationSite, scope);
 		else                               return super.canBeSeenBy(receiverType,invocationSite,scope);
 	}
 	
+	@Override
 	public boolean alwaysNeedsAccessMethod(boolean isReadAccess) {
 		return originalField.alwaysNeedsAccessMethod(isReadAccess);
 	}		
 	
+	@Override
 	public SyntheticMethodBinding getAccessMethod(boolean isReadAccess) {
 		return originalField.getAccessMethod(isReadAccess);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
index b351c90..1cb5db5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -50,6 +51,7 @@
     public boolean isRaw; // set to true for method behaving as raw for substitution purpose
     private MethodBinding tiebreakMethod;
 	public boolean inferredWithUncheckedConversion;
+	public TypeBinding targetType; // used to distinguish different PGMB created for different target types (needed because inference contexts are remembered per PGMB)
 
 	/**
 	 * Perform inference of generic method type parameters and/or expected type
@@ -61,10 +63,8 @@
 	public static MethodBinding computeCompatibleMethod(MethodBinding originalMethod, TypeBinding[] arguments, Scope scope,	InvocationSite invocationSite)
 	{
 		LookupEnvironment environment = scope.environment();
-		if ((originalMethod.tagBits & TagBits.IsNullnessKnown) == 0) {
-			// ensure nullness of originalMethod is known (but we are not interested in reporting problems against originalMethod)
-			new ImplicitNullAnnotationVerifier(environment, environment.globalOptions.inheritNullAnnotations)
-					.checkImplicitNullAnnotations(originalMethod, null/*srcMethod*/, false, scope);
+		if(environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
+			ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(originalMethod, scope);
 		}
 		ParameterizedGenericMethodBinding methodSubstitute;
 		TypeVariableBinding[] typeVariables = originalMethod.typeVariables;
@@ -88,33 +88,33 @@
 			CompilerOptions compilerOptions = scope.compilerOptions();
 			if (compilerOptions.sourceLevel >= ClassFileConstants.JDK1_8)
 				return computeCompatibleMethod18(originalMethod, arguments, scope, invocationSite);
-							
+
 			// 1.7- only.
-				inferenceContext = new InferenceContext(originalMethod);
-				methodSubstitute = inferFromArgumentTypes(scope, originalMethod, arguments, parameters, inferenceContext);
+			inferenceContext = new InferenceContext(originalMethod);
+			methodSubstitute = inferFromArgumentTypes(scope, originalMethod, arguments, parameters, inferenceContext);
+			if (methodSubstitute == null)
+				return null;
+
+			// substitutes may hold null to denote unresolved vars, but null arguments got replaced with respective original variable in param method
+			// 15.12.2.8 - inferring unresolved type arguments
+			if (inferenceContext.hasUnresolvedTypeArgument()) {
+				if (inferenceContext.isUnchecked) { // only remember unchecked status post 15.12.2.7
+					int length = inferenceContext.substitutes.length;
+					System.arraycopy(inferenceContext.substitutes, 0, uncheckedArguments = new TypeBinding[length], 0, length);
+				}
+				if (methodSubstitute.returnType != TypeBinding.VOID) {
+					TypeBinding expectedType = invocationSite.invocationTargetType();
+					if (expectedType != null) {
+						// record it was explicit from context, as opposed to assumed by default (see below)
+						inferenceContext.hasExplicitExpectedType = true;
+					} else {
+						expectedType = scope.getJavaLangObject(); // assume Object by default
+					}
+					inferenceContext.expectedType = expectedType;
+				}
+				methodSubstitute = methodSubstitute.inferFromExpectedType(scope, inferenceContext);
 				if (methodSubstitute == null)
 					return null;
-				
-				// substitutes may hold null to denote unresolved vars, but null arguments got replaced with respective original variable in param method
-				// 15.12.2.8 - inferring unresolved type arguments
-				if (inferenceContext.hasUnresolvedTypeArgument()) {
-					if (inferenceContext.isUnchecked) { // only remember unchecked status post 15.12.2.7
-						int length = inferenceContext.substitutes.length;
-						System.arraycopy(inferenceContext.substitutes, 0, uncheckedArguments = new TypeBinding[length], 0, length);
-					}
-					if (methodSubstitute.returnType != TypeBinding.VOID) {
-						TypeBinding expectedType = invocationSite.invocationTargetType();
-						if (expectedType != null) {
-							// record it was explicit from context, as opposed to assumed by default (see below)
-							inferenceContext.hasExplicitExpectedType = true;
-						} else {
-							expectedType = scope.getJavaLangObject(); // assume Object by default
-						}
-						inferenceContext.expectedType = expectedType;
-					}
-					methodSubstitute = methodSubstitute.inferFromExpectedType(scope, inferenceContext);
-					if (methodSubstitute == null)
-						return null;
 			} else if (compilerOptions.sourceLevel == ClassFileConstants.JDK1_7) {
 				// bug 425203 - consider additional constraints to conform to buggy javac behavior
 				if (methodSubstitute.returnType != TypeBinding.VOID) {
@@ -213,12 +213,14 @@
 		CompilerOptions compilerOptions = scope.compilerOptions();
 		boolean invocationTypeInferred = false;
 		boolean requireBoxing = false;
+		boolean allArgumentsAreProper = true;
 		
 		// See if we should start in loose inference mode.
 		TypeBinding [] argumentsCopy = new TypeBinding[arguments.length];
 		for (int i = 0, length = arguments.length, parametersLength = parameters.length ; i < length; i++) {
 			TypeBinding parameter = i < parametersLength ? parameters[i] : parameters[parametersLength - 1];
 			final TypeBinding argument = arguments[i];
+			allArgumentsAreProper &= argument.isProperType(true);
 			if (argument.isPrimitiveType() != parameter.isPrimitiveType()) { // Scope.cCM incorrectly but harmlessly uses isBaseType which answers true for null.
 				argumentsCopy[i] = scope.environment().computeBoxingType(argument);
 				requireBoxing = true; // can't be strict mode, needs at least loose.
@@ -264,7 +266,7 @@
 				// ---- 18.5.2 (Invocation type): ----
 				provisionalResult = result;
 				result = infCtx18.inferInvocationType(expectedType, invocationSite, originalMethod);
-				invocationTypeInferred = true;
+				invocationTypeInferred = infCtx18.stepCompleted == InferenceContext18.TYPE_INFERRED_FINAL;
 				hasReturnProblem |= result == null;
 				if (hasReturnProblem)
 					result = provisionalResult; // let's prefer a type error regarding the return type over reporting no match at all
@@ -273,31 +275,33 @@
 				// assemble the solution etc:
 				TypeBinding[] solutions = infCtx18.getSolutions(typeVariables, invocationSite, result);
 				if (solutions != null) {
-					methodSubstitute = scope.environment().createParameterizedGenericMethod(originalMethod, solutions, infCtx18.usesUncheckedConversion, hasReturnProblem);
-					if (invocationSite instanceof Invocation)
+					methodSubstitute = scope.environment().createParameterizedGenericMethod(originalMethod, solutions, infCtx18.usesUncheckedConversion, hasReturnProblem, expectedType);
+					if (invocationSite instanceof Invocation && allArgumentsAreProper)
 						infCtx18.forwardResults(result, (Invocation) invocationSite, methodSubstitute, expectedType);
 					try {
-					if (hasReturnProblem) { // illegally working from the provisional result?
-						MethodBinding problemMethod = infCtx18.getReturnProblemMethodIfNeeded(expectedType, methodSubstitute);
-						if (problemMethod instanceof ProblemMethodBinding) {
-							return problemMethod;
+						if (hasReturnProblem) { // illegally working from the provisional result?
+							MethodBinding problemMethod = infCtx18.getReturnProblemMethodIfNeeded(expectedType, methodSubstitute);
+							if (problemMethod instanceof ProblemMethodBinding) {
+								return problemMethod;
+							}
 						}
-					}
-					if (invocationTypeInferred) {
-						if (compilerOptions.isAnnotationBasedNullAnalysisEnabled)
-							NullAnnotationMatching.checkForContradictions(methodSubstitute, invocationSite, scope);
+						if (invocationTypeInferred) {
+							if (compilerOptions.isAnnotationBasedNullAnalysisEnabled)
+								NullAnnotationMatching.checkForContradictions(methodSubstitute, invocationSite, scope);
 							MethodBinding problemMethod = methodSubstitute.boundCheck18(scope, arguments, invocationSite);
-						if (problemMethod != null) {
-							return problemMethod;
+							if (problemMethod != null) {
+								return problemMethod;
+							}
+						} else {
+							methodSubstitute = new PolyParameterizedGenericMethodBinding(methodSubstitute);
 						}
-					} else {
-						methodSubstitute = new PolyParameterizedGenericMethodBinding(methodSubstitute);
-					}
 					} finally {
-					if (invocationSite instanceof Invocation)
-						((Invocation) invocationSite).registerInferenceContext(methodSubstitute, infCtx18); // keep context so we can finish later
-					else if (invocationSite instanceof ReferenceExpression)
-						((ReferenceExpression) invocationSite).registerInferenceContext(methodSubstitute, infCtx18); // keep context so we can finish later
+						if (allArgumentsAreProper) {
+						if (invocationSite instanceof Invocation)
+							((Invocation) invocationSite).registerInferenceContext(methodSubstitute, infCtx18); // keep context so we can finish later
+						else if (invocationSite instanceof ReferenceExpression)
+							((ReferenceExpression) invocationSite).registerInferenceContext(methodSubstitute, infCtx18); // keep context so we can finish later
+					}
 					}
 					return methodSubstitute; 
 				}
@@ -535,9 +539,10 @@
     /**
      * Create method of parameterized type, substituting original parameters with type arguments.
      */
-	public ParameterizedGenericMethodBinding(MethodBinding originalMethod, TypeBinding[] typeArguments, LookupEnvironment environment, boolean inferredWithUncheckConversion, boolean hasReturnProblem) {
+	public ParameterizedGenericMethodBinding(MethodBinding originalMethod, TypeBinding[] typeArguments, LookupEnvironment environment, boolean inferredWithUncheckConversion, boolean hasReturnProblem, TypeBinding targetType) {
 	    this.environment = environment;
 		this.inferredWithUncheckedConversion = inferredWithUncheckConversion;
+		this.targetType = targetType;
 		this.modifiers = originalMethod.modifiers;
 		this.selector = originalMethod.selector;
 		this.declaringClass = originalMethod.declaringClass;
@@ -558,8 +563,8 @@
 	    		this.thrownExceptions[i] = (ReferenceBinding) getErasure18_5_2(originalMethod.thrownExceptions[i], environment, false); // no excuse for exceptions
 			}
 	    } else {
-	    this.returnType = Scope.substitute(this, originalMethod.returnType);
-	    this.thrownExceptions = Scope.substitute(this, originalMethod.thrownExceptions);
+	    	this.returnType = Scope.substitute(this, originalMethod.returnType);
+	    	this.thrownExceptions = Scope.substitute(this, originalMethod.thrownExceptions);
 	    }
 	    if (this.thrownExceptions == null) this.thrownExceptions = Binding.NO_EXCEPTIONS;
 		checkMissingType: {
@@ -614,6 +619,7 @@
 	 * parameterizedDeclaringUniqueKey dot selector originalMethodGenericSignature percent typeArguments
 	 * p.X<U> { <T> void bar(T t, U u) { new X<String>().bar(this, "") } } --> Lp/X<Ljava/lang/String;>;.bar<T:Ljava/lang/Object;>(TT;Ljava/lang/String;)V%<Lp/X;>
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append(this.originalMethod.computeUniqueKey(false/*not a leaf*/));
@@ -636,6 +642,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#environment()
 	 */
+	@Override
 	public LookupEnvironment environment() {
 		return this.environment;
 	}
@@ -643,6 +650,7 @@
 	 * Returns true if some parameters got substituted.
 	 * NOTE: generic method invocation delegates to its declaring method (could be a parameterized one)
 	 */
+	@Override
 	public boolean hasSubstitutedParameters() {
 		// generic parameterized method can represent either an invocation or a raw generic method
 		if (this.wasInferred)
@@ -653,6 +661,7 @@
 	 * Returns true if the return type got substituted.
 	 * NOTE: generic method invocation delegates to its declaring method (could be a parameterized one)
 	 */
+	@Override
 	public boolean hasSubstitutedReturnType() {
 		if (this.inferredReturnType)
 			return this.originalMethod.hasSubstitutedReturnType();
@@ -778,6 +787,7 @@
 			this.scope = scope;
 		}
 		// With T mapping to I<T>, answer of I<?>, when given T, having eliminated the circularity/self reference.
+		@Override
 		public TypeBinding substitute(TypeVariableBinding typeVariable) {
 			if (typeVariable.rank >= this.variables.length || TypeBinding.notEquals(this.variables[typeVariable.rank], typeVariable)) {   // not kosher, don't touch.
 				return typeVariable;
@@ -789,10 +799,12 @@
 			return this.scope.environment().createWildcard(genericType, typeVariable.rank, null, null, Wildcard.UNBOUND, typeVariable.getTypeAnnotations());
 		}
 
+		@Override
 		public LookupEnvironment environment() {
 			return this.scope.environment();
 		}
 
+		@Override
 		public boolean isRawSubstitution() {
 			return false;
 		}
@@ -801,6 +813,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#isRawSubstitution()
 	 */
+	@Override
 	public boolean isRawSubstitution() {
 		return this.isRaw;
 	}
@@ -808,6 +821,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding)
 	 */
+	@Override
 	public TypeBinding substitute(TypeVariableBinding originalVariable) {
         TypeVariableBinding[] variables = this.originalMethod.typeVariables;
         int length = variables.length;
@@ -821,6 +835,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding#tiebreakMethod()
 	 */
+	@Override
 	public MethodBinding tiebreakMethod() {
 		if (this.tiebreakMethod == null)
 			this.tiebreakMethod = this.originalMethod.asRawMethod(this.environment);
@@ -836,11 +851,12 @@
 	
 	// AspectJ Extension
 	// delegate to the original method since it might be an intertypemethodbinding ...
-	public boolean alwaysNeedsAccessMethod() { return originalMethod.alwaysNeedsAccessMethod(); }
+	@Override
+	public boolean alwaysNeedsAccessMethod() { return this.originalMethod.alwaysNeedsAccessMethod(); }
 	
+	@Override
 	public MethodBinding getAccessMethod(boolean staticReference) {
-		return originalMethod.getAccessMethod(staticReference);
+		return this.originalMethod.getAccessMethod(staticReference);
     }
 	// End AspectJ Extension
-	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java
index 3cfac5b..675f2c5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -70,12 +71,15 @@
 
 			// need to substitute old var refs with new ones (double substitution: declaringClass + new type variables)
 			substitution = new Substitution() {
+				@Override
 				public LookupEnvironment environment() {
 					return parameterizedDeclaringClass.environment;
 				}
+				@Override
 				public boolean isRawSubstitution() {
 					return !isStatic && parameterizedDeclaringClass.isRawSubstitution();
 				}
+				@Override
 				public TypeBinding substitute(TypeVariableBinding typeVariable) {
 					// check this variable can be substituted given copied variables
 					if (typeVariable.rank < length && TypeBinding.equalsEquals(originalVariables[typeVariable.rank], typeVariable)) {
@@ -103,7 +107,7 @@
 				}
 				switch (substitutedSuperclass.kind()) {
 					case Binding.ARRAY_TYPE :
-						substitutedVariable.setSuperClass(parameterizedDeclaringClass.environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null));
+						substitutedVariable.setSuperClass(parameterizedDeclaringClass.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null));
 						substitutedVariable.setSuperInterfaces(substitutedInterfaces);
 						break;
 					default:
@@ -210,12 +214,15 @@
 
 			// need to substitute old var refs with new ones (double substitution: declaringClass + new type variables)
 			substitution = new Substitution() {
+				@Override
 				public LookupEnvironment environment() {
 					return environment;
 				}
+				@Override
 				public boolean isRawSubstitution() {
 					return false;
 				}
+				@Override
 				public TypeBinding substitute(TypeVariableBinding typeVariable) {
 			        // check this variable can be substituted given copied variables
 			        if (typeVariable.rank < length && TypeBinding.equalsEquals(originalVariables[typeVariable.rank], typeVariable)) {
@@ -241,7 +248,7 @@
 				}
 				switch (substitutedSuperclass.kind()) {
 					case Binding.ARRAY_TYPE :
-						substitutedVariable.setSuperClass(environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null));
+						substitutedVariable.setSuperClass(environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null));
 						substitutedVariable.setSuperInterfaces(substitutedInterfaces);
 						break;
 					default:
@@ -328,6 +335,7 @@
 	/**
 	 * Returns true if some parameters got substituted.
 	 */
+	@Override
 	public boolean hasSubstitutedParameters() {
 		return this.parameters != this.originalMethod.parameters;
 	}
@@ -335,6 +343,7 @@
 	/**
 	 * Returns true if the return type got substituted.
 	 */
+	@Override
 	public boolean hasSubstitutedReturnType() {
 		return this.returnType != this.originalMethod.returnType; //$IDENTITY-COMPARISON$
 	}
@@ -342,30 +351,36 @@
 	/**
 	 * Returns the original method (as opposed to parameterized instances)
 	 */
+	@Override
 	public MethodBinding original() {
 		return this.originalMethod.original();
 	}
 	
 	
+	@Override
 	public MethodBinding shallowOriginal() {
 		return this.originalMethod;
 	}
 	
 	// AspectJ Extension - delegate to the original method
 	
+	@Override
 	public boolean alwaysNeedsAccessMethod() {
 		return originalMethod.alwaysNeedsAccessMethod();
 	}
 
+	@Override
 	public boolean canBeSeenBy(TypeBinding receiverType, InvocationSite invocationSite, Scope scope) {
 		if (alwaysNeedsAccessMethod()) return originalMethod.canBeSeenBy(receiverType,invocationSite,scope);
 		else                           return super.canBeSeenBy(receiverType,invocationSite,scope);
 	}
 
+	@Override
 	public MethodBinding getAccessMethod(boolean staticReference) {
 		return originalMethod.getAccessMethod(staticReference);
 	}
 	
+	@Override
 	public AbstractMethodDeclaration sourceMethod() {
 		return originalMethod.sourceMethod();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java
index a02330f..463c46f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,6 +40,8 @@
  *								Bug 435805 - [1.8][compiler][null] Java 8 compiler does not recognize declaration style null annotations
  *								Bug 456508 - Unexpected RHS PolyTypeBinding for: <code-snippet>
  *								Bug 390064 - [compiler][resource] Resource leak warning missing when extending parameterized class
+ *     Jesper S Møller  - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
+ *								Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -99,10 +102,12 @@
 	 * May return an UnresolvedReferenceBinding.
 	 * @see ParameterizedTypeBinding#genericType()
 	 */
+	@Override
 	public ReferenceBinding actualType() {
 		return this.type;
 	}
 
+	@Override
 	public boolean isParameterizedType() {
 		return true;
 	}
@@ -115,28 +120,32 @@
 			boolean hasErrors = false;
 			TypeVariableBinding[] typeVariables = this.type.typeVariables();
 			if (this.arguments != null && typeVariables != null) { // arguments may be null in error cases
+				// per JLS 4.5 we should capture 'this'
 				for (int i = 0, length = typeVariables.length; i < length; i++) {
 				    BoundCheckStatus checkStatus = typeVariables[i].boundCheck(this, this.arguments[i], scope, argumentReferences[i]);
 				    hasErrors |= checkStatus != BoundCheckStatus.OK;
 			    	if (!checkStatus.isOKbyJLS() && (this.arguments[i].tagBits & TagBits.HasMissingType) == 0) {
-				    		// do not report secondary error, if type reference already got complained against
-							scope.problemReporter().typeMismatchError(this.arguments[i], typeVariables[i], this.type, argumentReferences[i]);
-				    	}
-				    }
+			    		// do not report secondary error, if type reference already got complained against
+						scope.problemReporter().typeMismatchError(this.arguments[i], typeVariables[i], this.type, argumentReferences[i]);
+			    	}
 				}
+			}
 			if (!hasErrors) this.tagBits |= TagBits.PassedBoundCheck; // no need to recheck it in the future
 		}
 	}
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#canBeInstantiated()
 	 */
+	@Override
 	public boolean canBeInstantiated() {
 		return ((this.tagBits & TagBits.HasDirectWildcard) == 0) && super.canBeInstantiated(); // cannot instantiate param type with wildcard arguments
 	}
+
 	/**
 	 * Perform capture conversion for a parameterized type with wildcard arguments
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#capture(Scope,int, int)
 	 */
+	@Override
 	public ParameterizedTypeBinding capture(Scope scope, int start, int end) {
 		if ((this.tagBits & TagBits.HasDirectWildcard) == 0)
 			return this;
@@ -162,7 +171,7 @@
 					capturedArguments[i] = wildcard.bound;
 				else if (needUniqueCapture)
 					capturedArguments[i] = this.environment.createCapturedWildcard(wildcard, contextType, start, end, cud, compilationUnitScope.nextCaptureID());
-				else
+				else 
 					capturedArguments[i] = new CaptureBinding(wildcard, contextType, start, end, cud, compilationUnitScope.nextCaptureID());	
 			} else {
 				capturedArguments[i] = argument;
@@ -177,11 +186,12 @@
 		}
 		return capturedParameterizedType;
 	}
-	
+
 	/**
 	 * Perform capture deconversion for a parameterized type with captured wildcard arguments
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#uncapture(Scope)
 	 */
+	@Override
 	public TypeBinding uncapture(Scope scope) {
 		if ((this.tagBits & TagBits.HasCapturedWildcard) == 0)
 			return this;
@@ -198,6 +208,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#collectMissingTypes(java.util.List)
 	 */
+	@Override
 	public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes) {
 		if ((this.tagBits & TagBits.HasMissingType) != 0) {
 			if (this.enclosingType != null) {
@@ -221,6 +232,7 @@
 	 *   A = F   corresponds to:      F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0))
 	 *   A >> F   corresponds to:   F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2))
 	 */
+	@Override
 	public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint) {
 		if ((this.tagBits & TagBits.HasTypeVariable) == 0) {
 			TypeBinding actualEquivalent = actualType.findSuperTypeOriginatingFrom(this.type);
@@ -323,10 +335,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#computeId()
 	 */
+	@Override
 	public void computeId() {
 		this.id = TypeIds.NoId;
 	}
 
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 	    StringBuffer sig = new StringBuffer(10);
 	    ReferenceBinding enclosing;
@@ -375,10 +389,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#constantPoolName()
 	 */
+	@Override
 	public char[] constantPoolName() {
 		return this.type.constantPoolName(); // erasure
 	}
 	
+	@Override
 	public TypeBinding clone(TypeBinding outerType) {
 		return new ParameterizedTypeBinding(this.type, this.arguments, (ReferenceBinding) outerType, this.environment);
 	}
@@ -389,6 +405,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#debugName()
 	 */
+	@Override
 	public String debugName() {
 	    if (this.hasTypeAnnotations())
 	    	return annotatedDebugName();
@@ -409,6 +426,7 @@
 	    return nameBuffer.toString();
 	}
 	
+	@Override
 	public String annotatedDebugName() {
 		StringBuffer nameBuffer = new StringBuffer(super.annotatedDebugName());
 		if (this.arguments != null && this.arguments.length > 0) {
@@ -425,6 +443,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#enclosingType()
 	 */
+	@Override
 	public ReferenceBinding enclosingType() {
 	    return this.enclosingType;
 	}
@@ -432,6 +451,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#environment()
 	 */
+	@Override
 	public LookupEnvironment environment() {
 		return this.environment;
 	}
@@ -439,12 +459,122 @@
 	/**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#erasure()
      */
-    public TypeBinding erasure() {
+    @Override
+	public TypeBinding erasure() {
         return this.type.erasure(); // erasure
     }
+    /* (non-Javadoc)
+     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#upwardsProjection(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding[])
+     */
+    @Override
+	public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+    		TypeBinding[] typeVariables = this.arguments;
+		if (typeVariables == null) return this; // How would that be possible?
+		
+		TypeBinding[] a_i_primes = new TypeBinding[typeVariables.length];
+		for (int i = 0, length = typeVariables.length; i < length; i++) {
+			TypeBinding a_i = typeVariables[i];
+			
+			// If Ai does not mention any restricted type variable, then Ai' = Ai.
+			int typeVariableKind = a_i.kind();
+			if (! a_i.mentionsAny(mentionedTypeVariables, -1)) {
+				a_i_primes[i] = a_i;
+			} else if (typeVariableKind != Binding.WILDCARD_TYPE) {
+				// If Ai is a type that mentions a restricted type variable, then Ai' is a wildcard.
+				//  Let U be the upward projection of Ai. There are three cases:
+				TypeBinding u = a_i.upwardsProjection(scope, mentionedTypeVariables);
+				TypeVariableBinding[] g_vars = this.type.typeVariables();
+				if (g_vars == null || g_vars.length == 0) return this; // Careful - could be a MissingTypeBinding here
+				TypeBinding b_i = g_vars[i].upperBound();
+								
+				// If U is not Object,
+				// and if either
+				//  * the declared bound of the ith parameter of G, Bi, mentions a type parameter of G, or
+				//  * Bi is not a subtype of U,
+				// then Ai' is an upper-bounded wildcard, ? extends U.
+				if (u.id != TypeIds.T_JavaLangObject
+						&& (b_i.mentionsAny(typeVariables, -1) || !b_i.isSubtypeOf(u, false))) {
+					a_i_primes[i] = this.environment().createWildcard(genericType(), i, u, null, Wildcard.EXTENDS);
+				} else {
+					TypeBinding l = a_i.downwardsProjection(scope, mentionedTypeVariables);
+					// Otherwise, if the downward projection of Ai is L,
+					// then Ai' is a lower-bounded wildcard, ? super L.
+					if (l != null) {
+						a_i_primes[i] = this.environment().createWildcard(genericType(), i, l, null, Wildcard.SUPER);
+					} else {
+						// Otherwise, the downward projection of Ai is undefined and Ai' is an unbounded wildcard, ?.
+						a_i_primes[i] = this.environment().createWildcard(genericType(), i, null, null, Wildcard.UNBOUND);
+					}
+				}
+			} else  { 
+				WildcardBinding wildcard = (WildcardBinding)a_i;
+				if (wildcard.boundKind() == Wildcard.EXTENDS) {
+					// If Ai is an upper-bounded wildcard that mentions a restricted type variable, 
+					// then let U be the upward projection of the wildcard bound.
+					TypeBinding u = wildcard.bound().upwardsProjection(scope, mentionedTypeVariables);
+					// Ai' is a wildcard ? extends U.
+					a_i_primes[i] = this.environment().createWildcard(null, 0, u, null, Wildcard.EXTENDS);
+				} else if (wildcard.boundKind() == Wildcard.SUPER) {
+					// If Ai is a lower-bounded wildcard that mentions a restricted type variable,
+					TypeBinding l = wildcard.bound().downwardsProjection(scope, mentionedTypeVariables);
+					if (l != null) {
+						// then if the downward projection of the wildcard bound is L, then Ai' is a wildcard ? super L;
+						a_i_primes[i] = this.environment().createWildcard(null, 0, l, null, Wildcard.SUPER);
+					} else {
+						// if the downward projection of the wildcard bound is undefined, then Ai' is an unbounded wildcard, ?.
+						a_i_primes[i] = this.environment().createWildcard(null, 0, null, null, Wildcard.UNBOUND);
+					}
+				}
+			}
+		}
+		return this.environment.createParameterizedType(this.type, a_i_primes, this.enclosingType);
+    }
+    @Override
+	public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		TypeBinding[] typeVariables = this.arguments;
+		if (typeVariables == null) return this; // How would that be possible?
+		
+		TypeBinding[] a_i_primes = new TypeBinding[typeVariables.length];
+		for (int i = 0, length = typeVariables.length; i < length; i++) {
+			TypeBinding a_i = typeVariables[i];
+			
+			// If Ai does not mention any restricted type variable, then Ai' = Ai.
+			int typeVariableKind = a_i.kind();
+			if (! a_i.mentionsAny(mentionedTypeVariables, -1)) {
+				a_i_primes[i] = a_i;
+			} else if (typeVariableKind != Binding.WILDCARD_TYPE) {
+				return null;
+			} else  { 
+				WildcardBinding wildcard = (WildcardBinding)a_i;
+				if (wildcard.boundKind() == Wildcard.EXTENDS) {
+					// Ai is an upper-bounded wildcard that mentions a restricted type variable,
+					TypeBinding u = wildcard.bound().downwardsProjection(scope, mentionedTypeVariables);
+					// then if the downward projection of the wildcard bound is U, then Ai' is a wildcard ? extends U;
+					if (u != null) {
+						// Ai' is a wildcard ? extends U.
+						a_i_primes[i] = this.environment().createWildcard(null, 0, u, null, Wildcard.EXTENDS);
+					} else {
+						// if the downward projection of the wildcard bound is undefined, then Ai' is undefined.
+						return null;
+					}
+				} else if (wildcard.boundKind() == Wildcard.SUPER) {
+					// If Ai is a lower-bounded wildcard that mentions a restricted type variable,
+					// then let L be the upward projection of the wildcard bound.
+					TypeBinding l = wildcard.bound().upwardsProjection(scope, mentionedTypeVariables);
+					//  Ai' is a wildcard ? super L.
+					a_i_primes[i] = this.environment().createWildcard(null, 0, l, null, Wildcard.SUPER);
+				} else {
+					return null;
+				}
+			}
+		}
+		return this.environment.createParameterizedType(this.type, a_i_primes, this.enclosingType);
+	}
+ 
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#fieldCount()
 	 */
+	@Override
 	public int fieldCount() {
 		return this.type.fieldCount(); // same as erasure (lazy)
 	}
@@ -452,6 +582,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#fields()
 	 */
+	@Override
 	public FieldBinding[] fields() {
 		if ((this.tagBits & TagBits.AreFieldsComplete) != 0)
 			return this.fields;
@@ -488,6 +619,7 @@
 	 * Ltype<param1 ... paramN>;
 	 * LY<TT;>;
 	 */
+	@Override
 	public char[] genericTypeSignature() {
 		if (this.genericTypeSignature == null) {
 			if ((this.modifiers & ExtraCompilerModifiers.AccGenericSignature) == 0) {
@@ -527,10 +659,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#getAnnotationTagBits()
 	 */
+	@Override
 	public long getAnnotationTagBits() {
 		return this.type.getAnnotationTagBits();
 	}
 
+	@Override
 	public int getEnclosingInstancesSlotSize() {
 		return genericType().getEnclosingInstancesSlotSize();
 	}
@@ -538,6 +672,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#getExactConstructor(TypeBinding[])
 	 */
+	@Override
 	public MethodBinding getExactConstructor(TypeBinding[] argumentTypes) {
 		int argCount = argumentTypes.length;
 		MethodBinding match = null;
@@ -641,6 +776,7 @@
 	 /**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#getField(char[], boolean)
 	 */
+	@Override
 	public FieldBinding getField(char[] fieldName, boolean needResolve) {
 		fields(); // ensure fields have been initialized... must create all at once unlike methods
 		return ReferenceBinding.binarySearch(fieldName, this.fields);
@@ -649,6 +785,7 @@
  	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#getMemberType(char[])
 	 */
+	@Override
 	public ReferenceBinding getMemberType(char[] typeName) {
 		memberTypes(); // ensure memberTypes have been initialized... must create all at once unlike methods
 		int typeLength = typeName.length;
@@ -715,14 +852,17 @@
 		}
 	}
 
+	@Override
 	public int getOuterLocalVariablesSlotSize() {
 		return genericType().getOuterLocalVariablesSlotSize();
 	}
 
+	@Override
 	public boolean hasMemberTypes() {
 	    return this.type.hasMemberTypes();
 	}
 
+	@Override
 	public boolean hasTypeBit(int bit) {
 		TypeBinding erasure = erasure();
 		if (erasure instanceof ReferenceBinding)
@@ -733,6 +873,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#implementsMethod(MethodBinding)
 	 */
+	@Override
 	public boolean implementsMethod(MethodBinding method) {
 		return this.type.implementsMethod(method); // erasure
 	}
@@ -778,8 +919,7 @@
 			}
 		}
 		this.tagBits |= someType.tagBits & (TagBits.IsLocalType| TagBits.IsMemberType | TagBits.IsNestedType | TagBits.ContainsNestedTypeReferences
-				 | TagBits.HasMissingType | TagBits.AnnotationNullMASK
-				 | TagBits.AnnotationNonNullByDefault | TagBits.AnnotationNullUnspecifiedByDefault | TagBits.HasCapturedWildcard);
+				 | TagBits.HasMissingType | TagBits.AnnotationNullMASK | TagBits.HasCapturedWildcard);
 		this.tagBits &= ~(TagBits.AreFieldsComplete|TagBits.AreMethodsComplete);
 	}
 
@@ -787,17 +927,17 @@
 	    // do nothing for true parameterized types (only for raw types)
 	}
 
+	@Override
 	void initializeForStaticImports() {
 		this.type.initializeForStaticImports();
 	}
 	
-	/**
-	 *  Returns true if parameterized type AND not of the form List<?>
-	 */
+	@Override
 	public boolean isBoundParameterizedType() {
 		return (this.tagBits & TagBits.IsBoundParameterizedType) != 0;
 	}
 
+	@Override
 	public boolean isEquivalentTo(TypeBinding otherType) {
 		if (equalsEquals(this, otherType))
 		    return true;
@@ -826,16 +966,16 @@
 	            	}
 	            }
 	            if (this.arguments != ParameterizedSingleTypeReference.DIAMOND_TYPE_ARGUMENTS) {
-	            if (this.arguments == null) {
-	            	return otherParamType.arguments == null;
-	            }
-	            int length = this.arguments.length;
-	            TypeBinding[] otherArguments = otherParamType.arguments;
-	            if (otherArguments == null || otherArguments.length != length) return false;
-	            for (int i = 0; i < length; i++) {
-	            	if (!this.arguments[i].isTypeArgumentContainedBy(otherArguments[i]))
-	            		return false;
-	            }
+		            if (this.arguments == null) {
+		            	return otherParamType.arguments == null;
+		            }
+		            int length = this.arguments.length;
+		            TypeBinding[] otherArguments = otherParamType.arguments;
+		            if (otherArguments == null || otherArguments.length != length) return false;
+		            for (int i = 0; i < length; i++) {
+		            	if (!this.arguments[i].isTypeArgumentContainedBy(otherArguments[i]))
+		            		return false;
+		            }
 	            }
 	            return true;
 
@@ -855,10 +995,12 @@
 	    return false;
 	}
 
+	@Override
 	public boolean isHierarchyConnected() {
 		return this.superclass != null && this.superInterfaces != null;
 	}
 
+	@Override
 	public boolean isProperType(boolean admitCapture18) {
 		if (this.arguments != null) {
 			for (int i = 0; i < this.arguments.length; i++)
@@ -868,6 +1010,7 @@
 		return super.isProperType(admitCapture18);
 	}
 
+	@Override
 	TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 		if (this.arguments != null) {
 			TypeBinding[] newArgs = null;
@@ -890,10 +1033,12 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#isRawSubstitution()
 	 */
+	@Override
 	public boolean isRawSubstitution() {
 		return isRawType();
 	}
 
+	@Override
 	public TypeBinding unannotated() {
 		return this.hasTypeAnnotations() ? this.environment.getUnannotatedType(this) : this;
 	}
@@ -902,11 +1047,12 @@
 	public TypeBinding withoutToplevelNullAnnotation() {
 		if (!hasNullTypeAnnotations())
 			return this;
-			ReferenceBinding unannotatedGenericType = (ReferenceBinding) this.environment.getUnannotatedType(this.type);
-			AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
+		ReferenceBinding unannotatedGenericType = (ReferenceBinding) this.environment.getUnannotatedType(this.type);
+		AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
 		return this.environment.createParameterizedType(unannotatedGenericType, this.arguments, this.enclosingType, newAnnotations);
 	}
 
+	@Override
 	public int kind() {
 		return PARAMETERIZED_TYPE;
 	}
@@ -914,6 +1060,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#memberTypes()
 	 */
+	@Override
 	public ReferenceBinding[] memberTypes() {
 		if (this.memberTypes == null) {
 			try {
@@ -937,6 +1084,7 @@
 		return this.memberTypes;
 	}
 
+	@Override
 	public boolean mentionsAny(TypeBinding[] parameters, int idx) {
 		if (super.mentionsAny(parameters, idx))
 			return true;
@@ -950,6 +1098,7 @@
 		return false;
 	}
 
+	@Override
 	void collectInferenceVariables(Set<InferenceVariable> variables) {
 		if (this.arguments != null) {
 			int len = this.arguments.length;
@@ -963,6 +1112,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#methods()
 	 */
+	@Override
 	public MethodBinding[] methods() {
 		if ((this.tagBits & TagBits.AreMethodsComplete) != 0)
 			return this.methods;
@@ -994,12 +1144,14 @@
 	 *
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#problemId()
 	 */
+	@Override
 	public int problemId() {
 		return this.type.problemId();
 	}
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#qualifiedPackageName()
 	 */
+	@Override
 	public char[] qualifiedPackageName() {
 		return this.type.qualifiedPackageName();
 	}
@@ -1007,6 +1159,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#qualifiedSourceName()
 	 */
+	@Override
 	public char[] qualifiedSourceName() {
 		return this.type.qualifiedSourceName();
 	}
@@ -1014,9 +1167,11 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#readableName()
 	 */
+	@Override
 	public char[] readableName() {
 		return readableName(true);
 	}
+	@Override
 	public char[] readableName(boolean showGenerics) {
 	    StringBuffer nameBuffer = new StringBuffer(10);
 		if (isMemberType()) {
@@ -1025,14 +1180,14 @@
 			nameBuffer.append(CharOperation.concatWith(this.type.compoundName, '.'));
 		}
 		if (showGenerics) {
-		if (this.arguments != null && this.arguments.length > 0) { // empty arguments array happens when PTB has been created just to capture type annotations
-			nameBuffer.append('<');
-		    for (int i = 0, length = this.arguments.length; i < length; i++) {
-		        if (i > 0) nameBuffer.append(',');
-		        nameBuffer.append(this.arguments[i].readableName());
-		    }
-		    nameBuffer.append('>');
-		}
+			if (this.arguments != null && this.arguments.length > 0) { // empty arguments array happens when PTB has been created just to capture type annotations
+				nameBuffer.append('<');
+			    for (int i = 0, length = this.arguments.length; i < length; i++) {
+			        if (i > 0) nameBuffer.append(',');
+			        nameBuffer.append(this.arguments[i].readableName());
+			    }
+			    nameBuffer.append('>');
+			}
 		}
 		int nameLength = nameBuffer.length();
 		char[] readableName = new char[nameLength];
@@ -1090,9 +1245,11 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#shortReadableName()
 	 */
+	@Override
 	public char[] shortReadableName() {
 		return shortReadableName(true);
 	}
+	@Override
 	public char[] shortReadableName(boolean showGenerics) {
 	    StringBuffer nameBuffer = new StringBuffer(10);
 		if (isMemberType()) {
@@ -1101,14 +1258,14 @@
 			nameBuffer.append(this.type.sourceName);
 		}
 		if (showGenerics) {
-		if (this.arguments != null && this.arguments.length > 0) { // empty arguments array happens when PTB has been created just to capture type annotations
-			nameBuffer.append('<');
-		    for (int i = 0, length = this.arguments.length; i < length; i++) {
-		        if (i > 0) nameBuffer.append(',');
-		        nameBuffer.append(this.arguments[i].shortReadableName());
-		    }
-		    nameBuffer.append('>');
-		}
+			if (this.arguments != null && this.arguments.length > 0) { // empty arguments array happens when PTB has been created just to capture type annotations
+				nameBuffer.append('<');
+			    for (int i = 0, length = this.arguments.length; i < length; i++) {
+			        if (i > 0) nameBuffer.append(',');
+			        nameBuffer.append(this.arguments[i].shortReadableName());
+			    }
+			    nameBuffer.append('>');
+			}
 		}
 		int nameLength = nameBuffer.length();
 		char[] shortReadableName = new char[nameLength];
@@ -1119,12 +1276,14 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#nullAnnotatedReadableName(CompilerOptions,boolean)
 	 */
+	@Override
 	public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames) {
 		if (shortNames)
 			return nullAnnotatedShortReadableName(options);
 		return nullAnnotatedReadableName(options);
 	}
 
+	@Override
 	char[] nullAnnotatedReadableName(CompilerOptions options) {
 	    StringBuffer nameBuffer = new StringBuffer(10);
 		if (isMemberType()) {
@@ -1163,6 +1322,7 @@
 	    return readableName;
 	}
 
+	@Override
 	char[] nullAnnotatedShortReadableName(CompilerOptions options) {
 	    StringBuffer nameBuffer = new StringBuffer(10);
 		if (isMemberType()) {
@@ -1195,6 +1355,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#signature()
 	 */
+	@Override
 	public char[] signature() {
 	    if (this.signature == null) {
 	        this.signature = this.type.signature();  // erasure
@@ -1205,6 +1366,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#sourceName()
 	 */
+	@Override
 	public char[] sourceName() {
 		return this.type.sourceName();
 	}
@@ -1212,6 +1374,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Substitution#substitute(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding)
 	 */
+	@Override
 	public TypeBinding substitute(TypeVariableBinding originalVariable) {
 
 		ParameterizedTypeBinding currentType = this;
@@ -1244,6 +1407,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#superclass()
 	 */
+	@Override
 	public ReferenceBinding superclass() {
 	    if (this.superclass == null) {
 	        // note: Object cannot be generic
@@ -1260,6 +1424,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#superInterfaces()
 	 */
+	@Override
 	public ReferenceBinding[] superInterfaces() {
 	    if (this.superInterfaces == null) {
     		if (this.type.isHierarchyBeingConnected())
@@ -1276,6 +1441,7 @@
 		return this.superInterfaces;
 	}
 
+	@Override
 	public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env) {
 		boolean update = false;
 		if (this.type == unresolvedType) { //$IDENTITY-COMPARISON$
@@ -1301,6 +1467,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#syntheticEnclosingInstanceTypes()
 	 */
+	@Override
 	public ReferenceBinding[] syntheticEnclosingInstanceTypes() {
 		return genericType().syntheticEnclosingInstanceTypes();
 	}
@@ -1308,6 +1475,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#syntheticOuterLocalVariables()
 	 */
+	@Override
 	public SyntheticArgumentBinding[] syntheticOuterLocalVariables() {
 		return genericType().syntheticOuterLocalVariables();
 	}
@@ -1315,6 +1483,7 @@
 	/**
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		if (this.hasTypeAnnotations()) {
 			return annotatedDebugName();
@@ -1394,6 +1563,7 @@
 
 	}
 
+	@Override
 	public TypeVariableBinding[] typeVariables() {
 		if (this.arguments == null) {
 			// retain original type variables if not substituted (member type of parameterized type)
@@ -1402,15 +1572,17 @@
 		return Binding.NO_TYPE_VARIABLES;
 	}
 	
+	@Override
 	public TypeBinding[] typeArguments() {
 		return this.arguments;
 	}
 	
+	@Override
 	public FieldBinding[] unResolvedFields() {
 		return this.fields;
 	}
 	@Override
-	protected MethodBinding[] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards) throws InvalidInputException {
+	protected MethodBinding[] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards, boolean filterDefaultMethods) throws InvalidInputException {
 		if (replaceWildcards) {
 			TypeBinding[] types = getNonWildcardParameterization(scope);
 			if (types == null)
@@ -1424,12 +1596,13 @@
 						if (!typeParameters[j].boundCheck(declaringType, types[j], scope, null).isOKbyJLS())
 							return new MethodBinding[] { new ProblemMethodBinding(TypeConstants.ANONYMOUS_METHOD, null, ProblemReasons.NotAWellFormedParameterizedType) };			
 					}
-					return declaringType.getInterfaceAbstractContracts(scope, replaceWildcards);
+					return declaringType.getInterfaceAbstractContracts(scope, replaceWildcards, filterDefaultMethods);
 				}
 			}
 		}
-		return super.getInterfaceAbstractContracts(scope, replaceWildcards);
+		return super.getInterfaceAbstractContracts(scope, replaceWildcards, filterDefaultMethods);
 	}
+	@Override
 	public MethodBinding getSingleAbstractMethod(final Scope scope, boolean replaceWildcards) {
 		return getSingleAbstractMethod(scope, replaceWildcards, -1, -1 /* do not capture */);
 	}	
@@ -1437,7 +1610,7 @@
 		int index = replaceWildcards ? end < 0 ? 0 : 1 : 2; // capturePosition >= 0 IFF replaceWildcard == true
 		if (this.singleAbstractMethod != null) {
 			if (this.singleAbstractMethod[index] != null)
-			return this.singleAbstractMethod[index];
+				return this.singleAbstractMethod[index];
 		} else {
 			this.singleAbstractMethod = new MethodBinding[3];
 		}
@@ -1550,7 +1723,6 @@
 		}
 		return types;
 	}
-	
 	@Override
 	public long updateTagBits() {
 		if (this.arguments != null)
@@ -1558,34 +1730,20 @@
 				this.tagBits |= argument.updateTagBits();
 		return super.updateTagBits();
 	}
-	/* need this still?
-	static boolean typeParametersMentioned(TypeBinding upperBound) {
-		class MentionListener extends TypeBindingVisitor {
-			private boolean typeParametersMentioned = false;
-			public boolean visit(TypeVariableBinding typeVariable) {
-				this.typeParametersMentioned = true;
-				return false;
-			}
-			public boolean typeParametersMentioned() {
-				return this.typeParametersMentioned;
-			}
-		}
-		MentionListener mentionListener = new MentionListener();
-		TypeBindingVisitor.visit(mentionListener, upperBound);
-		return mentionListener.typeParametersMentioned();
-	}*/
 	// AspectJ extension - delegate to the source type (the generic type) as it has a memberFinder for resolving ITDs
+		@Override
 		public FieldBinding getField(char[] fieldName, boolean resolve, InvocationSite site, Scope scope) {
 			FieldBinding fb = null;
 	        fb = super.getField(fieldName, resolve, site, scope); // Check this parameterized type
 			if (fb==null) {
-				fb = type.getField(fieldName,resolve,site,scope); // Not found? then check the generic type, this may discover ITDs
+				fb = this.type.getField(fieldName,resolve,site,scope); // Not found? then check the generic type, this may discover ITDs
 				if (fb!=null) return new ParameterizedFieldBinding(this,fb);
 			}
 			return fb;
 	    }
 	    
 		// Also renamed getExactMethod() in the original PTB class to getExactMethodBase
+		@Override
 		public MethodBinding getExactMethod(char[] selector, TypeBinding[] argumentTypes, CompilationUnitScope refScope) {
 		  MethodBinding mb = null;
 		  mb = getExactMethodBase(selector,argumentTypes,refScope);
@@ -1598,6 +1756,7 @@
 		}
 		
 			
+		@Override
 		public MethodBinding[] getMethods(char[] selector) { 
 			MethodBinding[] mbs = null;
 			mbs = getMethodsBase(selector);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.java
index 5070a73..dbed7c7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyParameterizedGenericMethodBinding.java
@@ -1,33 +1,34 @@
-/*******************************************************************************
- * Copyright (c) 2014, 2015 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
-
-public class PolyParameterizedGenericMethodBinding extends ParameterizedGenericMethodBinding { // confused citizen.
-
-	private ParameterizedGenericMethodBinding wrappedBinding; 
-	public PolyParameterizedGenericMethodBinding(ParameterizedGenericMethodBinding applicableMethod) {
-		super(applicableMethod.originalMethod, applicableMethod.typeArguments, applicableMethod.environment, false, false);
-		this.wrappedBinding = applicableMethod;
-	}
-	
-	public boolean equals(Object other) {
-		if (other instanceof PolyParameterizedGenericMethodBinding) {
-			PolyParameterizedGenericMethodBinding ppgmb = (PolyParameterizedGenericMethodBinding)other;
-			return this.wrappedBinding.equals(ppgmb.wrappedBinding);
-		}
-		return false;
-	}
-
-	@Override
-	public int hashCode() {
-		return this.wrappedBinding.hashCode();
-	}
-}
+/*******************************************************************************

+ * Copyright (c) 2014, 2015 IBM Corporation and others.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *     IBM Corporation - initial API and implementation

+ *******************************************************************************/

+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;

+

+public class PolyParameterizedGenericMethodBinding extends ParameterizedGenericMethodBinding { // confused citizen.

+

+	private ParameterizedGenericMethodBinding wrappedBinding; 

+	public PolyParameterizedGenericMethodBinding(ParameterizedGenericMethodBinding applicableMethod) {

+		super(applicableMethod.originalMethod, applicableMethod.typeArguments, applicableMethod.environment, applicableMethod.inferredWithUncheckedConversion, false,  applicableMethod.targetType);

+		this.wrappedBinding = applicableMethod;

+	}

+	

+	@Override

+	public boolean equals(Object other) {

+		if (other instanceof PolyParameterizedGenericMethodBinding) {

+			PolyParameterizedGenericMethodBinding ppgmb = (PolyParameterizedGenericMethodBinding)other;

+			return this.wrappedBinding.equals(ppgmb.wrappedBinding);

+		}

+		return false;

+	}

+

+	@Override

+	public int hashCode() {

+		return this.wrappedBinding.hashCode();

+	}

+}

diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.java
index 1f68b25..3c7cf4e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolyTypeBinding.java
@@ -25,18 +25,21 @@
 		this.expression = expression;
 	}
 	
+	@Override
 	public char[] constantPoolName() {
 		throw new UnsupportedOperationException();  // should never reach code generation
 	}
 
+	@Override
 	public PackageBinding getPackage() {
 		throw new UnsupportedOperationException();  // nobody should be asking this question.
 	}
 
+	@Override
 	public boolean isCompatibleWith(TypeBinding left, Scope scope) {
 		return this.vanillaCompatibilty ? this.expression.isCompatibleWith(left, scope) : this.expression.isBoxingCompatibleWith(left, scope);
 	}
-
+	
 	@Override
 	public boolean isPotentiallyCompatibleWith(TypeBinding targetType, Scope scope) {
 		return this.expression.isPotentiallyCompatibleWith(targetType, scope);
@@ -52,32 +55,39 @@
 		return this.expression.isFunctionalType();
 	}
 
+	@Override
 	public char[] qualifiedSourceName() {
 		return readableName();
 	}
 
+	@Override
 	public char[] sourceName() {
 		return readableName();
 	}
 
+	@Override
 	public char[] readableName() {
 		return this.expression.printExpression(0,  new StringBuffer()).toString().toCharArray();
 	}
 
+	@Override
 	public char[] shortReadableName() {
 		return this.expression instanceof LambdaExpression ?
 				((LambdaExpression) this.expression).printExpression(0, new StringBuffer(), true).toString().toCharArray() : readableName();
 	}
 
+	@Override
 	public boolean sIsMoreSpecific(TypeBinding s, TypeBinding t, Scope scope) {
 		return this.expression.sIsMoreSpecific(s, t, scope);
 	}
 	
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer("PolyTypeBinding for: "); //$NON-NLS-1$
 		return this.expression.printExpression(0,  buffer).toString();
 	}
 	
+	@Override
 	public int kind() {
 		return Binding.POLY_TYPE;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.java
index 8d69c4e..b2a34d7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/PolymorphicMethodBinding.java
@@ -41,10 +41,12 @@
 		this.tagBits = polymorphicMethod.tagBits;
 	}
 
+	@Override
 	public MethodBinding original() {
 		return this.polymorphicMethod;
 	}
 	
+	@Override
 	public boolean isPolymorphic() {
 		return true;
 	}
@@ -77,6 +79,7 @@
 	/*
 	 * Even if polymorphic methods are varargs method, we don't want them to be treated as varargs method
 	 */
+	@Override
 	public boolean isVarargs() {
 		return false;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.java
index 2715fc2..d31df9f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemBinding.java
@@ -38,6 +38,7 @@
 * Answer the receiver's binding type from Binding.BindingID.
 */
 
+@Override
 public final int kind() {
 	return VARIABLE | TYPE;
 }
@@ -46,9 +47,11 @@
 * NoError if the receiver is a valid binding.
 */
 
+@Override
 public final int problemId() {
 	return this.problemId;
 }
+@Override
 public char[] readableName() {
 	return this.name;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.java
index 1123fc7..c507b9c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemFieldBinding.java
@@ -30,6 +30,7 @@
 * NoError if the receiver is a valid binding.
 */
 
+@Override
 public final int problemId() {
 	return this.problemId;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.java
index c4b8233..2bdc5ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemMethodBinding.java
@@ -47,7 +47,7 @@
 	}
 }
 @Override
-MethodBinding computeSubstitutedMethod(MethodBinding method, LookupEnvironment env) {
+public MethodBinding computeSubstitutedMethod(MethodBinding method, LookupEnvironment env) {
 	return this.closestMatch == null ? this : this.closestMatch.computeSubstitutedMethod(method, env);
 }
 @Override
@@ -84,6 +84,7 @@
  * Answer the problem id associated with the receiver.
  * NoError if the receiver is a valid binding.
  */
+@Override
 public final int problemId() {
 	return this.problemReason;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.java
index 7d68ee4..75c79b6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemPackageBinding.java
@@ -26,6 +26,7 @@
 * NoError if the receiver is a valid binding.
 */
 
+@Override
 public final int problemId() {
 	return this.problemId;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java
index c0466af..4ef19e8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -47,4 +47,5 @@
 	final int InferredApplicableMethodInapplicable = 27; // 18.5.1 ignores arguments not pertinent to applicability. When these are taken into consideration method could fail applicability
 	final int NoProperEnclosingInstance = 28;
 	final int InterfaceMethodInvocationNotBelow18 = 29;
+	final int NotAccessible = 30; // JLS 6.6.1 - module aspects
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.java
index 2da24ed..f2d7192 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ProblemReferenceBinding.java
@@ -28,12 +28,14 @@
 	this.problemReason = problemReason;
 }
 
+@Override
 public TypeBinding clone(TypeBinding enclosingType) {
 	throw new IllegalStateException(); // shouldn't get here.
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#closestMatch()
  */
+@Override
 public TypeBinding closestMatch() {
 	return this.closestMatch;
 }
@@ -45,6 +47,7 @@
 	return this.closestMatch;
 }
 
+@Override
 public boolean hasTypeBit(int bit) {
 	if (this.closestMatch != null)
 		return this.closestMatch.hasTypeBit(bit);
@@ -55,6 +58,7 @@
 * Answer the problem id associated with the receiver.
 * NoError if the receiver is a valid binding.
 */
+@Override
 public int problemId() {
 	return this.problemReason;
 }
@@ -81,20 +85,24 @@
 	return "unknown"; //$NON-NLS-1$
 }
 
+@Override
 public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 	return; // reject misguided attempts.
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#shortReadableName()
  */
+@Override
 public char[] shortReadableName() {
 	return readableName();
 }
 
+@Override
 public char[] sourceName() {
 	return this.compoundName.length == 0 ? null : this.compoundName[this.compoundName.length - 1]; // last segment of [java][util][Map$Entry]
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(10);
 	buffer.append("ProblemType:[compoundName="); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.java
index 4b39127..79ef4d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/RawTypeBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
+import java.util.Set;
+
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 
 /**
@@ -55,11 +57,12 @@
 				}
 			}
 		}
-		if (enclosingType == null || (enclosingType.modifiers & ExtraCompilerModifiers.AccGenericSignature) == 0) {
+		if (enclosingType == null || this.isStatic() || (enclosingType.modifiers & ExtraCompilerModifiers.AccGenericSignature) == 0) {
 			this.modifiers &= ~ExtraCompilerModifiers.AccGenericSignature; // only need signature if enclosing needs one
 		}
 	}
 
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 	    StringBuffer sig = new StringBuffer(10);
 		if (isMemberType() && (enclosingType().isParameterizedType() || enclosingType().isRawType())) {
@@ -87,6 +90,7 @@
 		return uniqueKey;
    	}
 	
+	@Override
 	public TypeBinding clone(TypeBinding outerType) {
 		return new RawTypeBinding(this.actualType(), (ReferenceBinding) outerType, this.environment);
 	}
@@ -103,6 +107,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding#createParameterizedMethod(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding)
 	 */
+	@Override
 	public ParameterizedMethodBinding createParameterizedMethod(MethodBinding originalMethod) {
 		if (originalMethod.typeVariables == Binding.NO_TYPE_VARIABLES || originalMethod.isStatic()) {
 			return super.createParameterizedMethod(originalMethod);
@@ -110,10 +115,12 @@
 		return this.environment.createParameterizedGenericMethod(originalMethod, this);
 	}
 
+	@Override
 	public boolean isParameterizedType() {
 		return false;
 	}
 
+	@Override
 	public int kind() {
 		return RAW_TYPE;
 	}
@@ -121,6 +128,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#debugName()
 	 */
+	@Override
 	public String debugName() {
 		if (this.hasTypeAnnotations())
 			return annotatedDebugName();
@@ -128,6 +136,7 @@
 		nameBuffer.append(actualType().sourceName()).append("#RAW"); //$NON-NLS-1$
 	    return nameBuffer.toString();
 	}
+	@Override
 	public String annotatedDebugName() {
 		StringBuffer buffer = new StringBuffer(super.annotatedDebugName());
 		buffer.append("#RAW"); //$NON-NLS-1$
@@ -137,13 +146,14 @@
 	 * Ltype<param1 ... paramN>;
 	 * LY<TT;>;
 	 */
+	@Override
 	public char[] genericTypeSignature() {
 		if (this.genericTypeSignature == null) {
 			if ((this.modifiers & ExtraCompilerModifiers.AccGenericSignature) == 0) {
 		    	this.genericTypeSignature = genericType().signature();
 			} else {
 			    StringBuffer sig = new StringBuffer(10);
-			    if (isMemberType()) {
+			    if (isMemberType() && !isStatic()) {
 			    	ReferenceBinding enclosing = enclosingType();
 					char[] typeSig = enclosing.genericTypeSignature();
 					sig.append(typeSig, 0, typeSig.length-1);// copy all but trailing semicolon
@@ -166,7 +176,8 @@
 		return this.genericTypeSignature;
 	}
 
-    public boolean isEquivalentTo(TypeBinding otherType) {
+    @Override
+	public boolean isEquivalentTo(TypeBinding otherType) {
 		if (equalsEquals(this, otherType) || equalsEquals(erasure(), otherType))
 		    return true;
 	    if (otherType == null)
@@ -185,7 +196,8 @@
         return false;
 	}
 
-    public boolean isProvablyDistinct(TypeBinding otherType) {
+    @Override
+	public boolean isProvablyDistinct(TypeBinding otherType) {
 		if (TypeBinding.equalsEquals(this, otherType) || TypeBinding.equalsEquals(erasure(), otherType)) // https://bugs.eclipse.org/bugs/show_bug.cgi?id=329588
 		    return false;
 	    if (otherType == null)
@@ -199,12 +211,21 @@
 	    }
         return true;
 	}
+    @Override
+	public boolean isSubtypeOf(TypeBinding right, boolean simulatingBugJDK8026527) {
+    	if (simulatingBugJDK8026527) {
+    		right = this.environment.convertToRawType(right.erasure(), false);
+    	}
+    	return super.isSubtypeOf(right, simulatingBugJDK8026527);
+    }
 
-    public boolean isProperType(boolean admitCapture18) {
+    @Override
+	public boolean isProperType(boolean admitCapture18) {
     	TypeBinding actualType = actualType();
     	return actualType != null && actualType.isProperType(admitCapture18);
     }
 
+	@Override
 	protected void initializeArguments() {
 		TypeVariableBinding[] typeVariables = genericType().typeVariables();
 		int length = typeVariables.length;
@@ -232,6 +253,7 @@
 		return this;
 	}
 
+	@Override
 	public MethodBinding getSingleAbstractMethod(Scope scope, boolean replaceWildcards) {
 		int index = replaceWildcards ? 0 : 1;
 		if (this.singleAbstractMethod != null) {
@@ -256,12 +278,14 @@
 		}
 		return this.singleAbstractMethod[index];
 	}
+	@Override
 	public boolean mentionsAny(TypeBinding[] parameters, int idx) {
 		return false;
 	}
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#readableName()
 	 */
+	@Override
 	public char[] readableName(boolean showGenerics) /*java.lang.Object,  p.X<T> */ {
 	    char[] readableName;
 		if (isMemberType()) {
@@ -275,6 +299,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#shortReadableName()
 	 */
+	@Override
 	public char[] shortReadableName(boolean showGenerics) /*Object*/ {
 	    char[] shortReadableName;
 		if (isMemberType()) {
@@ -284,4 +309,19 @@
 		}
 		return shortReadableName;
 	}
+	
+	@Override
+	void collectInferenceVariables(Set<InferenceVariable> variables) {
+		// nothing to collect for a raw type.
+	}
+
+	@Override
+	public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		return this;
+	}
+
+	@Override
+	public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		return this;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.java
index bc38bc9..53866bf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReductionResult.java
@@ -18,12 +18,16 @@
 
 	protected static final ConstraintTypeFormula TRUE = new ConstraintTypeFormula() {
 		/* empty body just to make abstract class instantiable */
+		@Override
 		public Object reduce(InferenceContext18 context) { return this; }
+		@Override
 		public String toString() { return "TRUE"; } //$NON-NLS-1$
 	};
 	protected static final ConstraintTypeFormula FALSE = new ConstraintTypeFormula() { 
 		/* empty body just to make abstract class instantiable */ 
+		@Override
 		public Object reduce(InferenceContext18 context) { return this; }
+		@Override
 		public String toString() { return "FALSE"; } //$NON-NLS-1$
 	};
 	
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java
index 90dbb94..7dbe889 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,9 +36,11 @@
  *								Bug 452788 - [1.8][compiler] Type not correctly inferred in lambda expression
  *								Bug 446442 - [1.8] merge null annotations from super methods
  *								Bug 456532 - [1.8][null] ReferenceBinding.appendNullAnnotation() includes phantom annotations in error messages
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *      Jesper S Moller - Contributions for
  *								bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
  *								bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
+ *								bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *     Ulrich Grave <ulrich.grave@gmx.de> - Contributions for
  *                              bug 386692 - Missing "unused" warning on "autowired" fields
  *******************************************************************************/
@@ -84,10 +87,12 @@
 
 	public static final ReferenceBinding LUB_GENERIC = new ReferenceBinding() { /* used for lub computation */
 		{ this.id = TypeIds.T_undefined; }
+		@Override
 		public boolean hasTypeBit(int bit) { return false; }
 	};
 
 	private static final Comparator<FieldBinding> FIELD_COMPARATOR = new Comparator<FieldBinding>() {
+		@Override
 		public int compare(FieldBinding o1, FieldBinding o2) {
 			char[] n1 = o1.name;
 			char[] n2 = o2.name;
@@ -95,6 +100,7 @@
 		}
 	};
 	private static final Comparator<MethodBinding> METHOD_COMPARATOR = new Comparator<MethodBinding>() {
+		@Override
 		public int compare(MethodBinding o1, MethodBinding o2) {
 			MethodBinding m1 = o1;
 			MethodBinding m2 = o2;
@@ -241,6 +247,7 @@
 /**
  * Answer true if the receiver can be instantiated
  */
+@Override
 public boolean canBeInstantiated() {
 	return (this.modifiers & (ClassFileConstants.AccAbstract | ClassFileConstants.AccInterface | ClassFileConstants.AccEnum | ClassFileConstants.AccAnnotation)) == 0;
 }
@@ -361,6 +368,7 @@
  * Answer true if the receiver is visible to the type provided by the scope.
  */
 // AspectJ Extension: replace existing implementation with alternative that can access the privileged handler
+@Override
 public boolean canBeSeenBy(Scope scope) {
 	
 	boolean ret = innerCanBeSeenBy(scope);
@@ -541,13 +549,27 @@
 						if (CharOperation.equals(packageName, TypeConstants.UTIL)) {
 							switch (typeName[0]) {
 								case 'C' :
-									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_COLLECTION[2]))
+									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_COLLECTION[2])) {
 										this.id = TypeIds.T_JavaUtilCollection;
+										this.typeBits |= TypeIds.BitCollection;
+									}										
 									return;
 								case 'I' :
 									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_ITERATOR[2]))
 										this.id = TypeIds.T_JavaUtilIterator;
 									return;
+								case 'L' :
+									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_LIST[2])) {
+										this.id = TypeIds.T_JavaUtilList;
+										this.typeBits |= TypeIds.BitList;
+									}										
+									return;
+								case 'M' :
+									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_MAP[2])) {
+										this.id = TypeIds.T_JavaUtilMap;
+										this.typeBits |= TypeIds.BitMap;
+									}
+									return;
 								case 'O' :
 									if (CharOperation.equals(typeName, TypeConstants.JAVA_UTIL_OBJECTS[2]))
 										this.id = TypeIds.T_JavaUtilObjects;
@@ -903,10 +925,10 @@
 					}
 					return;
 				}
-			if (!CharOperation.equals(TypeConstants.JDT, this.compoundName[2]) || !CharOperation.equals(TypeConstants.ITYPEBINDING, this.compoundName[5]))
-				return;
-			if (CharOperation.equals(TypeConstants.ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, this.compoundName))
-				this.typeBits |= TypeIds.BitUninternedType;
+				if (!CharOperation.equals(TypeConstants.JDT, this.compoundName[2]) || !CharOperation.equals(TypeConstants.ITYPEBINDING, this.compoundName[5]))
+					return;
+				if (CharOperation.equals(TypeConstants.ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, this.compoundName))
+					this.typeBits |= TypeIds.BitUninternedType;
 			}
 			break;
 		case 7 :
@@ -925,6 +947,7 @@
 /**
  * p.X<T extends Y & I, U extends Y> {} -> Lp/X<TT;TU;>;
  */
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	if (!isLeaf) return signature();
 	return genericTypeSignature();
@@ -935,15 +958,18 @@
  *
  * NOTE: This method should only be used during/after code gen.
  */
+@Override
 public char[] constantPoolName() /* java/lang/Object */ {
 	if (this.constantPoolName != null) return this.constantPoolName;
 	return this.constantPoolName = CharOperation.concatWith(this.compoundName, '/');
 }
 
+@Override
 public String debugName() {
 	return (this.compoundName != null) ? this.hasTypeAnnotations() ? annotatedDebugName() : new String(readableName()) : "UNNAMED TYPE"; //$NON-NLS-1$
 }
 
+@Override
 public int depth() {
 	int depth = 0;
 	ReferenceBinding current = this;
@@ -1011,6 +1037,7 @@
 /**
  * @return the JSR 175 annotations for this type.
  */
+@Override
 public AnnotationBinding[] getAnnotations() {
 	return retrieveAnnotations(this);
 }
@@ -1018,6 +1045,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#getAnnotationTagBits()
  */
+@Override
 public long getAnnotationTagBits() {
 	return this.tagBits;
 }
@@ -1068,6 +1096,7 @@
 	return null;
 }
 
+@Override
 public MethodBinding[] getMethods(char[] selector) {
 	return Binding.NO_METHODS;
 }
@@ -1085,6 +1114,7 @@
 	return 0;
 }
 
+@Override
 public PackageBinding getPackage() {
 	return this.fPackage;
 }
@@ -1097,6 +1127,7 @@
 	return null;
 }
 
+@Override
 public int hashCode() {
 	// ensure ReferenceBindings hash to the same position as UnresolvedReferenceBindings so they can be replaced without rehashing
 	// ALL ReferenceBindings are unique when created so equals() is the same as ==
@@ -1173,33 +1204,24 @@
  * for 1.8 check if the default is applicable to the given kind of location.
  */
 // pre: null annotation analysis is enabled
-boolean hasNonNullDefaultFor(int location, boolean useTypeAnnotations) {
+boolean hasNonNullDefaultFor(int location, int sourceStart) {
 	// Note, STB overrides for correctly handling local types
 	ReferenceBinding currentType = this;
 	while (currentType != null) {
-		if (useTypeAnnotations) {
-			int nullDefault = ((ReferenceBinding)currentType.original()).getNullDefault();
-			if (nullDefault != 0)
-				return (nullDefault & location) != 0;
-		} else {
-			if ((currentType.tagBits & TagBits.AnnotationNonNullByDefault) != 0)
-				return true;
-			if ((currentType.tagBits & TagBits.AnnotationNullUnspecifiedByDefault) != 0)
-				return false;
-		}
+		int nullDefault = ((ReferenceBinding)currentType.original()).getNullDefault();
+		if (nullDefault != 0)
+			return (nullDefault & location) != 0;
 		currentType = currentType.enclosingType();
 	}
 	// package
-	if (useTypeAnnotations)
-		return (this.getPackage().defaultNullness & location) != 0;
-	else
-		return this.getPackage().defaultNullness == NONNULL_BY_DEFAULT;
+	return (this.getPackage().getDefaultNullness() & location) != 0;
 }
 
 int getNullDefault() {
 	return 0;
 }
 
+@Override
 public boolean acceptsNonNullDefault() {
 	return true;
 }
@@ -1292,6 +1314,7 @@
 	return (this.modifiers & ClassFileConstants.AccAbstract) != 0;
 }
 
+@Override
 public boolean isAnnotationType() {
 	return (this.modifiers & ClassFileConstants.AccAnnotation) != 0;
 }
@@ -1300,10 +1323,12 @@
 	return (this.tagBits & TagBits.IsBinaryBinding) != 0;
 }
 
+@Override
 public boolean isClass() {
 	return (this.modifiers & (ClassFileConstants.AccInterface | ClassFileConstants.AccAnnotation | ClassFileConstants.AccEnum)) == 0;
 }
 
+@Override
 public boolean isProperType(boolean admitCapture18) {
 	ReferenceBinding outer = enclosingType();
 	if (outer != null && !outer.isProperType(admitCapture18))
@@ -1316,6 +1341,7 @@
  * In addition to improving performance, caching also ensures there is no infinite regression
  * since per nature, the compatibility check is recursive through parameterized type arguments (122775)
  */
+@Override
 public boolean isCompatibleWith(TypeBinding otherType, /*@Nullable*/ Scope captureScope) {
 	if (equalsEquals(otherType, this))
 		return true;
@@ -1392,6 +1418,7 @@
 		case Binding.TYPE :
 		case Binding.PARAMETERIZED_TYPE :
 		case Binding.RAW_TYPE :
+		case Binding.INTERSECTION_TYPE18 :
 			switch (kind()) {
 				case Binding.GENERIC_TYPE :
 				case Binding.PARAMETERIZED_TYPE :
@@ -1401,6 +1428,14 @@
 										// above if same erasure
 			}
 			ReferenceBinding otherReferenceType = (ReferenceBinding) otherType;
+			if (otherReferenceType.isIntersectionType18()) {
+				ReferenceBinding[] intersectingTypes = ((IntersectionTypeBinding18)otherReferenceType).intersectingTypes;
+				for (ReferenceBinding binding : intersectingTypes) {
+					if (!isCompatibleWith(binding))
+						return false;
+				}
+				return true;
+			}
 			if (otherReferenceType.isInterface()) { // could be annotation type
 				if (implementsInterface(otherReferenceType, true))
 					return true;
@@ -1421,7 +1456,8 @@
 	}
 }
 
-public boolean isSubtypeOf(TypeBinding other) {
+@Override
+public boolean isSubtypeOf(TypeBinding other, boolean simulatingBugJDK8026527) {
 	if (isSubTypeOfRTL(other))
 		return true;
 	// TODO: if this has wildcards, perform capture before the next call:
@@ -1454,13 +1490,13 @@
 	if (other instanceof CaptureBinding) {
 		// for this one kind we must first unwrap the rhs:
 		TypeBinding lower = ((CaptureBinding) other).lowerBound;
-		return (lower != null && isSubtypeOf(lower));
+		return (lower != null && isSubtypeOf(lower, false));
 	}
 	if (other instanceof ReferenceBinding) {
 		TypeBinding[] intersecting = ((ReferenceBinding) other).getIntersectingTypes();
 		if (intersecting != null) {
 			for (int i = 0; i < intersecting.length; i++) {
-				if (!isSubtypeOf(intersecting[i]))
+				if (!isSubtypeOf(intersecting[i], false))
 					return false;
 			}
 			return true;
@@ -1483,6 +1519,7 @@
 	return (this.modifiers & ClassFileConstants.AccDeprecated) != 0;
 }
 
+@Override
 public boolean isEnum() {
 	return (this.modifiers & ClassFileConstants.AccEnum) != 0;
 }
@@ -1515,11 +1552,13 @@
 	return true;
 }
 
+@Override
 public boolean isInterface() {
 	// consider strict interfaces and annotation types
 	return (this.modifiers & ClassFileConstants.AccInterface) != 0;
 }
 
+@Override
 public boolean isFunctionalInterface(Scope scope) {
 	MethodBinding method;
 	return isInterface() && (method = getSingleAbstractMethod(scope, true)) != null && method.isValidBinding();
@@ -1563,6 +1602,7 @@
 /**
  * Answer true if the receiver is a static member type (or toplevel)
  */
+@Override
 public final boolean isStatic() {
 	return (this.modifiers & (ClassFileConstants.AccStatic | ClassFileConstants.AccInterface)) != 0 || (this.tagBits & TagBits.IsNestedType) == 0;
 }
@@ -1588,6 +1628,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#isThrowable()
  */
+@Override
 public boolean isThrowable() {
 	ReferenceBinding current = this;
 	do {
@@ -1610,6 +1651,7 @@
  * type (i.e. Throwable or Exception).
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#isUncheckedException(boolean)
  */
+@Override
 public boolean isUncheckedException(boolean includeSupertype) {
 	switch (this.id) {
 			case TypeIds.T_JavaLangError :
@@ -1658,7 +1700,11 @@
 		System.err.println("Unexpectedly null package found for type " + debugName());
 		return b;
 	} else {
-		return this.getPackage().isViewedAsDeprecated();
+		if (getPackage().isViewedAsDeprecated()) {
+			this.tagBits |= (getPackage().tagBits & TagBits.AnnotationTerminallyDeprecated);
+			return true;
+		}
+		return false;
 	}
 	// End AspectJ Extension
 }
@@ -1685,6 +1731,7 @@
  * In the case of member types, as the qualified name from its top level type.
  * For example, for a member type N defined inside M & A: "A.M.N".
  */
+@Override
 public char[] qualifiedSourceName() {
 	if (isMemberType())
 		return CharOperation.concat(enclosingType().qualifiedSourceName(), sourceName(), '.');
@@ -1696,6 +1743,7 @@
  *
  * NOTE: This method should only be used during/after code gen.
  */
+@Override
 public char[] readableName() /*java.lang.Object,  p.X<T> */ {
 	return readableName(true);
 }
@@ -1707,19 +1755,19 @@
 		readableName = CharOperation.concatWith(this.compoundName, '.');
 	}
 	if (showGenerics) {
-	TypeVariableBinding[] typeVars;
-	if ((typeVars = typeVariables()) != Binding.NO_TYPE_VARIABLES) {
-	    StringBuffer nameBuffer = new StringBuffer(10);
-	    nameBuffer.append(readableName).append('<');
-	    for (int i = 0, length = typeVars.length; i < length; i++) {
-	        if (i > 0) nameBuffer.append(',');
-	        nameBuffer.append(typeVars[i].readableName());
-	    }
-	    nameBuffer.append('>');
-		int nameLength = nameBuffer.length();
-		readableName = new char[nameLength];
-		nameBuffer.getChars(0, nameLength, readableName, 0);
-	}
+		TypeVariableBinding[] typeVars;
+		if ((typeVars = typeVariables()) != Binding.NO_TYPE_VARIABLES) {
+		    StringBuffer nameBuffer = new StringBuffer(10);
+		    nameBuffer.append(readableName).append('<');
+		    for (int i = 0, length = typeVars.length; i < length; i++) {
+		        if (i > 0) nameBuffer.append(',');
+		        nameBuffer.append(typeVars[i].readableName());
+		    }
+		    nameBuffer.append('>');
+			int nameLength = nameBuffer.length();
+			readableName = new char[nameLength];
+			nameBuffer.getChars(0, nameLength, readableName, 0);
+		}
 	}
 	return readableName;
 }
@@ -1734,21 +1782,21 @@
 				}
 			}
 		} else {
-		// restore applied null annotation from tagBits:
-	    if ((this.tagBits & TagBits.AnnotationNonNull) != 0) {
-	    	char[][] nonNullAnnotationName = options.nonNullAnnotationName;
-			nameBuffer.append('@').append(nonNullAnnotationName[nonNullAnnotationName.length-1]).append(' ');
-	    }
-	    if ((this.tagBits & TagBits.AnnotationNullable) != 0) {
-	    	char[][] nullableAnnotationName = options.nullableAnnotationName;
-			nameBuffer.append('@').append(nullableAnnotationName[nullableAnnotationName.length-1]).append(' ');
-	    }
+			// restore applied null annotation from tagBits:
+		    if ((this.tagBits & TagBits.AnnotationNonNull) != 0) {
+		    	char[][] nonNullAnnotationName = options.nonNullAnnotationName;
+				nameBuffer.append('@').append(nonNullAnnotationName[nonNullAnnotationName.length-1]).append(' ');
+		    }
+		    if ((this.tagBits & TagBits.AnnotationNullable) != 0) {
+		    	char[][] nullableAnnotationName = options.nullableAnnotationName;
+				nameBuffer.append('@').append(nullableAnnotationName[nullableAnnotationName.length-1]).append(' ');
+		    }
+		}
 	}
 }
-}
 
 public AnnotationHolder retrieveAnnotationHolder(Binding binding, boolean forceInitialization) {
-	SimpleLookupTable store = storedAnnotations(forceInitialization);
+	SimpleLookupTable store = storedAnnotations(forceInitialization, false);
 	return store == null ? null : (AnnotationHolder) store.get(binding);
 }
 
@@ -1757,8 +1805,9 @@
 	return holder == null ? Binding.NO_ANNOTATIONS : holder.getAnnotations();
 }
 
-public void setAnnotations(AnnotationBinding[] annotations) {
-	storeAnnotations(this, annotations);
+@Override
+public void setAnnotations(AnnotationBinding[] annotations, boolean forceStore) {
+	storeAnnotations(this, annotations, forceStore);
 }
 public void setContainerAnnotationType(ReferenceBinding value) {
 	// Leave this to subclasses
@@ -1770,6 +1819,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#nullAnnotatedReadableName(CompilerOptions,boolean)
  */
+@Override
 public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames) {
 	if (shortNames)
 		return nullAnnotatedShortReadableName(options);
@@ -1844,6 +1894,7 @@
     return shortReadableName;
 }
 
+@Override
 public char[] shortReadableName() /*Object*/ {
 	return shortReadableName(true);
 }
@@ -1855,23 +1906,24 @@
 		shortReadableName = this.sourceName;
 	}
 	if (showGenerics) {
-	TypeVariableBinding[] typeVars;
-	if ((typeVars = typeVariables()) != Binding.NO_TYPE_VARIABLES) {
-	    StringBuffer nameBuffer = new StringBuffer(10);
-	    nameBuffer.append(shortReadableName).append('<');
-	    for (int i = 0, length = typeVars.length; i < length; i++) {
-	        if (i > 0) nameBuffer.append(',');
-	        nameBuffer.append(typeVars[i].shortReadableName());
-	    }
-	    nameBuffer.append('>');
-		int nameLength = nameBuffer.length();
-		shortReadableName = new char[nameLength];
-		nameBuffer.getChars(0, nameLength, shortReadableName, 0);
-	}
+		TypeVariableBinding[] typeVars;
+		if ((typeVars = typeVariables()) != Binding.NO_TYPE_VARIABLES) {
+		    StringBuffer nameBuffer = new StringBuffer(10);
+		    nameBuffer.append(shortReadableName).append('<');
+		    for (int i = 0, length = typeVars.length; i < length; i++) {
+		        if (i > 0) nameBuffer.append(',');
+		        nameBuffer.append(typeVars[i].shortReadableName());
+		    }
+		    nameBuffer.append('>');
+			int nameLength = nameBuffer.length();
+			shortReadableName = new char[nameLength];
+			nameBuffer.getChars(0, nameLength, shortReadableName, 0);
+		}
 	}
 	return shortReadableName;
 }
 
+@Override
 public char[] signature() /* Ljava/lang/Object; */ {
 	if (this.signature != null)
 		return this.signature;
@@ -1879,31 +1931,54 @@
 	return this.signature = CharOperation.concat('L', constantPoolName(), ';');
 }
 
+@Override
 public char[] sourceName() {
 	return this.sourceName;
 }
 
+/**
+ * Perform an upwards type projection as per JLS 4.10.5
+ * @param scope Relevant scope for evaluating type projection
+ * @param mentionedTypeVariables Filter for mentioned type variabled
+ * @returns Upwards type projection of 'this', or null if downwards projection is undefined 
+*/
+@Override
+public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	return this;
+}
+
+/**
+ * Perform a downwards type projection as per JLS 4.10.5
+ * @param scope Relevant scope for evaluating type projection
+ * @param mentionedTypeVariables Filter for mentioned type variabled
+ * @returns Downwards type projection of 'this', or null if downwards projection is undefined 
+*/
+@Override
+public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	return this;
+}
+
 void storeAnnotationHolder(Binding binding, AnnotationHolder holder) {
 	if (holder == null) {
-		SimpleLookupTable store = storedAnnotations(false);
+		SimpleLookupTable store = storedAnnotations(false, false);
 		if (store != null)
 			store.removeKey(binding);
 	} else {
-		SimpleLookupTable store = storedAnnotations(true);
+		SimpleLookupTable store = storedAnnotations(true, false);
 		if (store != null)
 			store.put(binding, holder);
 	}
 }
 
-void storeAnnotations(Binding binding, AnnotationBinding[] annotations) {
+void storeAnnotations(Binding binding, AnnotationBinding[] annotations, boolean forceStore) {
 	AnnotationHolder holder = null;
 	if (annotations == null || annotations.length == 0) {
-		SimpleLookupTable store = storedAnnotations(false);
+		SimpleLookupTable store = storedAnnotations(false, forceStore);
 		if (store != null)
 			holder = (AnnotationHolder) store.get(binding);
 		if (holder == null) return; // nothing to delete
 	} else {
-		SimpleLookupTable store = storedAnnotations(true);
+		SimpleLookupTable store = storedAnnotations(true, forceStore);
 		if (store == null) return; // not supported
 		holder = (AnnotationHolder) store.get(binding);
 		if (holder == null)
@@ -1912,14 +1987,16 @@
 	storeAnnotationHolder(binding, holder.setAnnotations(annotations));
 }
 
-SimpleLookupTable storedAnnotations(boolean forceInitialize) {
+SimpleLookupTable storedAnnotations(boolean forceInitialize, boolean forceStore) {
 	return null; // overrride if interested in storing annotations for the receiver, its fields and methods
 }
 
+@Override
 public ReferenceBinding superclass() {
 	return null;
 }
 
+@Override
 public ReferenceBinding[] superInterfaces() {
 	return Binding.NO_SUPERINTERFACES;
 }
@@ -1994,14 +2071,18 @@
 protected int applyCloseableInterfaceWhitelists() {
 	switch (this.compoundName.length) {
 		case 4:
-			if (CharOperation.equals(this.compoundName, TypeConstants.RESOURCE_FREE_CLOSEABLE_STREAM))
-				return TypeIds.BitResourceFreeCloseable;
+			for (int i=0; i<2; i++)
+				if (!CharOperation.equals(this.compoundName[i], TypeConstants.JAVA_UTIL_STREAM[i]))
+					return 0;
+			for (char[] streamName : TypeConstants.RESOURCE_FREE_CLOSEABLE_J_U_STREAMS)
+				if (CharOperation.equals(this.compoundName[3], streamName))
+					return TypeIds.BitResourceFreeCloseable;
 			break;
 	}
 	return 0;
 }
 
-protected MethodBinding [] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards) throws InvalidInputException {
+protected MethodBinding [] getInterfaceAbstractContracts(Scope scope, boolean replaceWildcards, boolean filterDefaultMethods) throws InvalidInputException {
 	
 	if (!isInterface() || !isValidBinding()) {
 		throw new InvalidInputException("Not a functional interface"); //$NON-NLS-1$
@@ -2014,7 +2095,8 @@
 	
 	ReferenceBinding [] superInterfaces = superInterfaces();
 	for (int i = 0, length = superInterfaces.length; i < length; i++) {
-		MethodBinding [] superInterfaceContracts = superInterfaces[i].getInterfaceAbstractContracts(scope, replaceWildcards);
+		// filterDefaultMethods=false => keep default methods needed to filter out any abstract methods they may override:
+		MethodBinding [] superInterfaceContracts = superInterfaces[i].getInterfaceAbstractContracts(scope, replaceWildcards, false);
 		final int superInterfaceContractsLength = superInterfaceContracts == null  ? 0 : superInterfaceContracts.length;
 		if (superInterfaceContractsLength == 0) continue;
 		if (contractsLength < contractsCount + superInterfaceContractsLength) {
@@ -2024,35 +2106,70 @@
 		contractsCount += superInterfaceContractsLength;
 	}
 
+	LookupEnvironment environment = scope.environment();
 	for (int i = 0, length = methods == null ? 0 : methods.length; i < length; i++) {
 		final MethodBinding method = methods[i];
-		if (method == null || method.isStatic() || method.redeclaresPublicObjectMethod(scope)) 
+		if (method == null || method.isStatic() || method.redeclaresPublicObjectMethod(scope) || method.isPrivate()) 
 			continue;
 		if (!method.isValidBinding()) 
 			throw new InvalidInputException("Not a functional interface"); //$NON-NLS-1$
 		for (int j = 0; j < contractsCount;) {
-			if ( contracts[j] != null && MethodVerifier.doesMethodOverride(method, contracts[j], scope.environment())) {
-					contractsCount--;
+			if ( contracts[j] != null && MethodVerifier.doesMethodOverride(method, contracts[j], environment)) {
+				contractsCount--;
 				// abstract method from super type overridden by present interface ==> contracts[j] = null;
 				if (j < contractsCount) {
-						System.arraycopy(contracts, j+1, contracts, j, contractsCount - j);
+					System.arraycopy(contracts, j+1, contracts, j, contractsCount - j);
 					continue;
 				}
 			}
 			j++;
 		}
-		if (method.isDefaultMethod())
+		if (filterDefaultMethods && method.isDefaultMethod())
 			continue; // skip default method itself
 		if (contractsCount == contractsLength) {
 			System.arraycopy(contracts, 0, contracts = new MethodBinding[contractsLength += 16], 0, contractsCount);
 		}
+		if(environment.globalOptions.isAnnotationBasedNullAnalysisEnabled) {
+			ImplicitNullAnnotationVerifier.ensureNullnessIsKnown(method, scope);
+		}
 		contracts[contractsCount++] = method;
 	}
+	// check mutual overriding of inherited methods (i.e., not from current type):
+	for (int i = 0; i < contractsCount; i++) {
+		MethodBinding contractI = contracts[i];
+		if (TypeBinding.equalsEquals(contractI.declaringClass, this))
+			continue;
+		for (int j = 0; j < contractsCount; j++) {
+			MethodBinding contractJ = contracts[j];
+			if (i == j || TypeBinding.equalsEquals(contractJ.declaringClass, this))
+				continue;
+			if (contractI == contractJ || MethodVerifier.doesMethodOverride(contractI, contractJ, environment)) {
+				contractsCount--;
+				// abstract method from one super type overridden by other super interface ==> contracts[j] = null;
+				if (j < contractsCount) {
+					System.arraycopy(contracts, j+1, contracts, j, contractsCount - j);
+				}				
+				j--;
+				if (j < i)
+					i--;
+				continue;
+			}
+		}
+		if (filterDefaultMethods && contractI.isDefaultMethod()) {
+			contractsCount--;
+			// remove default method after it has eliminated any matching abstract methods from contracts
+			if (i < contractsCount) {
+				System.arraycopy(contracts, i+1, contracts, i, contractsCount - i);
+			}				
+			i--;				
+		}
+	}
 	if (contractsCount < contractsLength) {
 		System.arraycopy(contracts, 0, contracts = new MethodBinding[contractsCount], 0, contractsCount);
 	}
 	return contracts;
 }
+@Override
 public MethodBinding getSingleAbstractMethod(Scope scope, boolean replaceWildcards) {
 	
 	int index = replaceWildcards ? 0 : 1;
@@ -2067,7 +2184,7 @@
 		scope.compilationUnitScope().recordQualifiedReference(this.compoundName);
 	MethodBinding[] methods = null;
 	try {
-		methods = getInterfaceAbstractContracts(scope, replaceWildcards);
+		methods = getInterfaceAbstractContracts(scope, replaceWildcards, true);
 		if (methods == null || methods.length == 0)
 			return this.singleAbstractMethod[index] = samProblemBinding;
 		int contractParameterLength = 0;
@@ -2113,7 +2230,7 @@
 					continue next;
 			}
 			if (!MethodVerifier.isSubstituteParameterSubsignature(method, otherMethod, environment) || !MethodVerifier.areReturnTypesCompatible(method, otherMethod, environment)) 
-				continue next; 
+				continue next;
 			if (analyseNullAnnotations) {
 				returnType = NullAnnotationMatching.strongerType(returnType, otherMethod.returnType, environment);
 				parameters = NullAnnotationMatching.weakerTypes(parameters, otherMethod.parameters, environment);
@@ -2207,13 +2324,18 @@
 		// when invoked during type inference we only want to check inconsistency among real types:
 		if (current.isTypeVariable() || current.isWildcard() || !current.isProperType(true))
 			continue;
-		if (mostSpecific.isSubtypeOf(current))
+		if (mostSpecific.isSubtypeOf(current, false))
 			continue;
-		else if (current.isSubtypeOf(mostSpecific))
+		else if (current.isSubtypeOf(mostSpecific, false))
 			mostSpecific = current;
 		else
 			return false;
 	}
 	return true;
 }
+public ModuleBinding module() {
+	if (this.fPackage != null)
+		return this.fPackage.enclosingModule;
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.java
index d058452..b337099 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/Scope.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -75,6 +76,18 @@
 @SuppressWarnings({ "rawtypes", "unchecked" })
 public abstract class Scope {
 
+	public static Binding NOT_REDUNDANT = new Binding() {
+		@Override
+		public int kind() {
+			throw new IllegalStateException();
+		}
+	
+		@Override
+		public char[] readableName() {
+			throw new IllegalStateException();
+		}
+	};
+
 	/* Scope kinds */
 	public final static int BLOCK_SCOPE = 1;
 	public final static int CLASS_SCOPE = 3;
@@ -94,6 +107,39 @@
 
 	public int kind;
 	public Scope parent;
+	
+	private static class NullDefaultRange {
+		final int start, end;
+		int value;
+		private Annotation[] annotations;
+		Binding target;
+
+		NullDefaultRange(int value, Annotation annotation, int start, int end, Binding target) {
+			this.start = start;
+			this.end = end;
+			this.value = value;
+			this.annotations = new Annotation[] { annotation };
+			this.target = target;
+		}
+
+		boolean contains(Annotation annotation) {
+			for (Annotation annotation2 : this.annotations) {
+				if (annotation2 == annotation)
+					return true;
+			}
+			return false;
+		}
+
+		void merge(int nextValue, Annotation nextAnnotation, Binding nextTarget) {
+			int len = this.annotations.length;
+			System.arraycopy(this.annotations, 0, this.annotations = new Annotation[len + 1], 0, len);
+			this.annotations[len] = nextAnnotation;
+			this.target = nextTarget;
+			this.value |= nextValue;
+		}
+	}
+
+	private /* @Nullable */ ArrayList<NullDefaultRange> nullDefaultRanges;
 
 	protected Scope(int kind, Scope parent) {
 		this.kind = kind;
@@ -314,6 +360,9 @@
 				if (i == j) continue;
 				ReferenceBinding jType = result[j];
 				if (jType == null) continue;
+				if (isMalformedPair(iType, jType, null)) {
+					return null;
+				}
 				if (iType.isCompatibleWith(jType)) { // if Vi <: Vj, Vj is removed
 					if (result == types) { // defensive copy
 						System.arraycopy(result, 0, result = new ReferenceBinding[length], 0, length);
@@ -349,6 +398,9 @@
 				if (i == j) continue;
 				TypeBinding jType = result[j];
 				if (jType == null) continue;
+				if (isMalformedPair(iType, jType, scope)) {
+					return null;
+				}
 				if (iType.isCompatibleWith(jType, scope)) { // if Vi <: Vj, Vj is removed
 					if (result == types) { // defensive copy
 						System.arraycopy(result, 0, result = new TypeBinding[length], 0, length);
@@ -409,6 +461,24 @@
 		return trimmedResult;
 	}
 
+	static boolean isMalformedPair(TypeBinding t1, TypeBinding t2, Scope scope) {
+		// not spec-ed in JLS, but per email communication (2017-09-13) it should be
+		switch (t1.kind()) {
+			case Binding.TYPE:
+			case Binding.GENERIC_TYPE:
+			case Binding.PARAMETERIZED_TYPE:
+			case Binding.RAW_TYPE:
+				if (t1.isClass()) {
+					if (t2.getClass() == TypeVariableBinding.class) {
+						TypeBinding bound = ((TypeVariableBinding) t2).firstBound;
+						if (bound == null || !bound.erasure().isCompatibleWith(t1.erasure())) { // use of erasure is heuristic-based
+							return true; // malformed, because substitution could create a contradiction.
+						}
+					}
+				}
+		}
+		return false;
+	}
 	/**
 	 * Returns an array of types, where original types got substituted given a substitution.
 	 * Only allocate an array if anything is different.
@@ -549,7 +619,7 @@
 				        }
 			        } 
 					break;
-	
+
 				case Binding.INTERSECTION_TYPE18:
 					IntersectionTypeBinding18 intersection = (IntersectionTypeBinding18) originalType;
 					ReferenceBinding[] types = intersection.getIntersectingTypes();
@@ -662,7 +732,9 @@
 		} while (scope != null);
 		return (CompilationUnitScope) lastScope;
 	}
-	
+	public final ModuleBinding module() {
+		return environment().module;
+	}
 	public boolean isLambdaScope() {
 		return false;
 	}
@@ -693,7 +765,7 @@
 	 * Internal use only
 	 * Given a method, returns null if arguments cannot be converted to parameters.
 	 * Will answer a substituted method in case the method was generic and type inference got triggered;
-	 * in case the method was originally compatible, then simply answer it back.
+	 * in case the method was originally compatible, then simply answer it back. 
 	 */
 	protected final MethodBinding computeCompatibleMethod(MethodBinding method, TypeBinding[] arguments, InvocationSite invocationSite) {
 		return computeCompatibleMethod(method, arguments, invocationSite, false);
@@ -726,17 +798,17 @@
 		if (typeVariables != Binding.NO_TYPE_VARIABLES && compilerOptions.sourceLevel >= ClassFileConstants.JDK1_5) { // generic method
 			TypeBinding[] newArgs = null;
 			if (compilerOptions.sourceLevel < ClassFileConstants.JDK1_8 || genericTypeArguments != null) { // for 1.8+ inferred calls, we do this inside PGMB.cCM18.
-			for (int i = 0; i < argLength; i++) {
-				TypeBinding param = i < paramLength ? parameters[i] : parameters[paramLength - 1];
-				if (arguments[i].isBaseType() != param.isBaseType()) {
-					if (newArgs == null) {
-						newArgs = new TypeBinding[argLength];
-						System.arraycopy(arguments, 0, newArgs, 0, argLength);
+				for (int i = 0; i < argLength; i++) {
+					TypeBinding param = i < paramLength ? parameters[i] : parameters[paramLength - 1];
+					if (arguments[i].isBaseType() != param.isBaseType()) {
+						if (newArgs == null) {
+							newArgs = new TypeBinding[argLength];
+							System.arraycopy(arguments, 0, newArgs, 0, argLength);
+						}
+						newArgs[i] = environment().computeBoxingType(arguments[i]);
 					}
-					newArgs[i] = environment().computeBoxingType(arguments[i]);
 				}
 			}
-			}
 			if (newArgs != null)
 				arguments = newArgs;
 			method = ParameterizedGenericMethodBinding.computeCompatibleMethod(method, arguments, this, invocationSite);
@@ -842,8 +914,8 @@
 									problemReporter().forwardTypeVariableReference(typeParameter, varSuperType);
 									typeVariable.tagBits |= TagBits.HierarchyHasProblems;
 									break firstBound; // do not keep first bound
-				}
-			}
+								}
+							}
 							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=335751
 							if (compilerOptions().complianceLevel > ClassFileConstants.JDK1_6) {
 								if (typeVariable.rank >= varSuperType.rank && varSuperType.declaringElement == typeVariable.declaringElement) {
@@ -858,27 +930,29 @@
 										} else {
 											set.add(superBinding);
 											superBinding = ((TypeVariableBinding)superBinding).superclass;
-				}
-			}
-		}
-	}
+										}
+									}
+								}
+							}
 							break;
 						default :
 							if (((ReferenceBinding) superType).isFinal()) {
-								problemReporter().finalVariableBound(typeVariable, typeRef);
-		}
+								if (!environment().usesNullTypeAnnotations() || (superType.tagBits & TagBits.AnnotationNullable) == 0) {
+									problemReporter().finalVariableBound(typeVariable, typeRef);
+								}
+							}
 							break;
 					}
 					ReferenceBinding superRefType = (ReferenceBinding) superType;
 					if (!superType.isInterface()) {
 						typeVariable.setSuperClass(superRefType);
-			} else {
+					} else {
 						typeVariable.setSuperInterfaces(new ReferenceBinding[] {superRefType});
-							}
+					}
 					typeVariable.tagBits |= superType.tagBits & TagBits.ContainsNestedTypeReferences;
 					typeVariable.setFirstBound(superRefType); // first bound used to compute erasure
-							}
-						}
+				}
+			}
 			TypeReference[] boundRefs = typeParameter.bounds;
 			if (boundRefs != null) {
 				nextBound: for (int j = 0, boundLength = boundRefs.length; j < boundLength; j++) {
@@ -1172,8 +1246,8 @@
 						if (concreteMatches != null) {
 							for (int j = 0, length = concreteMatches.length; j < length; j++) {
 								if (methodVerifier.areMethodsCompatible(concreteMatches[j], compatibleMethod))
-								continue; // can skip this method since concreteMatch overrides it
-						}
+									continue; // can skip this method since concreteMatch overrides it
+							}
 						}
 						if (sourceLevel18 || !(compatibleMethod.isVarargs() && compatibleMethod instanceof ParameterizedGenericMethodBinding)) {
 							for (int j = 0; j < startFoundSize; j++) {
@@ -1197,7 +1271,7 @@
 			}
 			concreteMatch = candidates[0];
 			if (concreteMatch != null)
-			compilationUnitScope().recordTypeReferences(concreteMatch.thrownExceptions);
+				compilationUnitScope().recordTypeReferences(concreteMatch.thrownExceptions);
 			return concreteMatch;
 		}
 		// no need to check for visibility - interface methods are public
@@ -1221,19 +1295,6 @@
 				if (memberType.canBeSeenBy(getCurrentPackage())) {
 					return memberType;
 				}
-				// maybe some type in the compilation unit is extending some class in some package
-				// and the selection is for some protected inner class of that superclass
-				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=235658
-				if (this instanceof CompilationUnitScope) {
-					TypeDeclaration[] types = ((CompilationUnitScope)this).referenceContext.types;
-					if (types != null) {
-						for (int i = 0, max = types.length; i < max; i++) {
-							if (memberType.canBeSeenBy(enclosingType, types[i].binding)) {
-								return memberType;
-							}
-						}
-					}
-				}
 			} else if (memberType.canBeSeenBy(enclosingType, enclosingReceiverType)) {
 				return memberType;
 			}
@@ -1371,11 +1432,11 @@
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=316456
 		boolean insideTypeAnnotations = this instanceof MethodScope && ((MethodScope) this).insideTypeAnnotation;
 		if (field != null) {
-                        //      AspectJ Extension
-                        FieldBinding ret = field.getVisibleBinding(currentType, invocationSite, this);
-                        if (ret != null)
-                                return ret;
-                        //      End AspectJ Extension
+            //      AspectJ Extension
+            FieldBinding ret = field.getVisibleBinding(currentType, invocationSite, this);
+            if (ret != null)
+                return ret;
+            //      End AspectJ Extension
 			if (invisibleFieldsOk) {
 				return field;
 			}
@@ -1421,9 +1482,9 @@
 					return field;
 				}
 				keepLooking = false;
-                                //      AspectJ Extension
-                                field = field.getVisibleBinding(receiverType, invocationSite, this);
-                                if (field != null) {
+                //      AspectJ Extension
+                field = field.getVisibleBinding(receiverType, invocationSite, this);
+                if (field != null) {
 				// End AspectJ Extension
 				if (field.canBeSeenBy(receiverType, invocationSite, this)) {
 					if (visibleField == null)
@@ -1446,10 +1507,10 @@
 				unitScope.recordTypeReference(anInterface);
 				// no need to capture rcv interface, since member field is going to be static anyway
 				if ((field = anInterface.getField(fieldName, true /*resolve*/, invocationSite, this)) != null) { // AspectJ Extension - was getField(fieldName,true/*resolve*/)
-									 //      AspectJ Extension
-                                        field = field.getVisibleBinding(receiverType, invocationSite, this);
-                                        if (field != null) {
-                                    //  End AspectJ Extension
+					//      AspectJ Extension
+                    field = field.getVisibleBinding(receiverType, invocationSite, this);
+                    if (field != null) {
+                    //  End AspectJ Extension
 					if (invisibleFieldsOk) {
 						return field;
 					}
@@ -1828,6 +1889,7 @@
 			}
 //				// End AspectJ Extension
 		}
+		
 		switch (visiblesCount) {
 			case 0 :
 				MethodBinding interfaceMethod =
@@ -1835,7 +1897,7 @@
 				if (interfaceMethod != null) return interfaceMethod;
 				MethodBinding candidate = candidates[0];
 				int reason = ProblemReasons.NotVisible;
-				if (candidate.isStatic() && candidate.declaringClass.isInterface()) {
+				if (candidate.isStatic() && candidate.declaringClass.isInterface() && !candidate.isPrivate()) {
 					if (soureLevel18)
 						reason = ProblemReasons.NonStaticOrAlienTypeReceiver;
 					else
@@ -1847,7 +1909,7 @@
 					return findDefaultAbstractMethod(receiverType, selector, argumentTypes, invocationSite, classHierarchyStart, found, new MethodBinding [] { candidates[0] });
 				candidate = candidates[0];
 				if (candidate != null)
-				unitScope.recordTypeReferences(candidate.thrownExceptions);
+					unitScope.recordTypeReferences(candidate.thrownExceptions);
 				return candidate;
 			default :
 				break;
@@ -1991,7 +2053,7 @@
 		PackageBinding invocationPackage) {
 
 		compilationUnitScope().recordReference(declarationPackage.compoundName, typeName);
-		ReferenceBinding typeBinding = declarationPackage.getType(typeName);
+		ReferenceBinding typeBinding = declarationPackage.getType(typeName, module());
 		if (typeBinding == null)
 			return null;
 
@@ -2805,90 +2867,90 @@
 	public final ReferenceBinding getJavaIoSerializable() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_IO_SERIALIZABLE);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_IO_SERIALIZABLE, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_IO_SERIALIZABLE, this);
 	}
 
 	public final ReferenceBinding getJavaLangAnnotationAnnotation() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_ANNOTATION_ANNOTATION);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_ANNOTATION_ANNOTATION, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ANNOTATION_ANNOTATION, this);
 	}
 
 	public final ReferenceBinding getJavaLangAssertionError() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_ASSERTIONERROR);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_ASSERTIONERROR, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ASSERTIONERROR, this);
 	}
 
 	public final ReferenceBinding getJavaLangClass() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_CLASS);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_CLASS, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_CLASS, this);
 	}
 
 	public final ReferenceBinding getJavaLangCloneable() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_CLONEABLE);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_CLONEABLE, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_CLONEABLE, this);
 	}
 	public final ReferenceBinding getJavaLangEnum() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_ENUM);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_ENUM, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ENUM, this);
 	}
 
 	public final ReferenceBinding getJavaLangInvokeLambdaMetafactory() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_INVOKE_LAMBDAMETAFACTORY);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, this);
 	}
 	
 	public final ReferenceBinding getJavaLangInvokeSerializedLambda() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_INVOKE_SERIALIZEDLAMBDA);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, this);
 	}
 
 	public final ReferenceBinding getJavaLangInvokeMethodHandlesLookup() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_INVOKE_METHODHANDLES);
-		ReferenceBinding outerType = unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_INVOKE_METHODHANDLES, this);
+		ReferenceBinding outerType = unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_INVOKE_METHODHANDLES, this);
 		return findDirectMemberType("Lookup".toCharArray(), outerType); //$NON-NLS-1$
 	}
 
 	public final ReferenceBinding getJavaLangIterable() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_ITERABLE);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_ITERABLE, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ITERABLE, this);
 	}
 	public final ReferenceBinding getJavaLangObject() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_OBJECT);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, this);
 	}
 
 	public final ReferenceBinding getJavaLangString() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_STRING);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_STRING, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_STRING, this);
 	}
 
 	public final ReferenceBinding getJavaLangThrowable() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_THROWABLE);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_THROWABLE, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_THROWABLE, this);
 	}
 	
 	public final ReferenceBinding getJavaLangIllegalArgumentException() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_LANG_ILLEGALARGUMENTEXCEPTION);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_LANG_ILLEGALARGUMENTEXCEPTION, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_ILLEGALARGUMENTEXCEPTION, this);
 	}
 	
 	public final ReferenceBinding getJavaUtilIterator() {
 		CompilationUnitScope unitScope = compilationUnitScope();
 		unitScope.recordQualifiedReference(TypeConstants.JAVA_UTIL_ITERATOR);
-		return unitScope.environment.getResolvedType(TypeConstants.JAVA_UTIL_ITERATOR, this);
+		return unitScope.environment.getResolvedJavaBaseType(TypeConstants.JAVA_UTIL_ITERATOR, this);
 	}
 
 	/* Answer the type binding corresponding to the typeName argument, relative to the enclosingType.
@@ -2978,11 +3040,11 @@
 		int currentIndex = 1, length = compoundName.length;
 		PackageBinding packageBinding = (PackageBinding) binding;
 		while (currentIndex < length) {
-			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]);
+			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], module());
 			if (binding == null) {
 				return new ProblemReferenceBinding(CharOperation.subarray(compoundName, 0, currentIndex), null /* no closest match since search for pkg*/, ProblemReasons.NotFound);
 			}
-			if (!binding.isValidBinding())
+			if (!binding.isValidBinding() && binding.problemId() != ProblemReasons.Ambiguous)
 				return new ProblemReferenceBinding(
 					CharOperation.subarray(compoundName, 0, currentIndex),
 					binding instanceof ReferenceBinding ? (ReferenceBinding)((ReferenceBinding)binding).closestMatch() : null,
@@ -3013,7 +3075,7 @@
 		int currentIndex = 1, length = compoundName.length;
 		PackageBinding packageBinding = (PackageBinding) binding;
 		while (currentIndex < length) {
-			binding = packageBinding.getPackage(compoundName[currentIndex++]);
+			binding = packageBinding.getPackage(compoundName[currentIndex++], module());
 			if (binding == null) {
 				return new ProblemReferenceBinding(CharOperation.subarray(compoundName, 0, currentIndex), null /* no closest match since search for pkg*/, ProblemReasons.NotFound);
 			}
@@ -3049,7 +3111,7 @@
 		if (packageBinding == null)
 			return getType(name);
 
-		Binding binding = packageBinding.getTypeOrPackage(name);
+		Binding binding = packageBinding.getTypeOrPackage(name, module());
 		if (binding == null) {
 			return new ProblemReferenceBinding(
 				CharOperation.arrayConcat(packageBinding.compoundName, name),
@@ -3105,7 +3167,7 @@
 		if (binding instanceof PackageBinding) {
 			PackageBinding packageBinding = (PackageBinding) binding;
 			while (currentIndex < typeNameLength) {
-				binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]); // does not check visibility
+				binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], module()); // does not check visibility
 				if (binding == null) {
 					char[][] qName = CharOperation.subarray(compoundName, 0, currentIndex);
 					return new ProblemReferenceBinding(
@@ -3343,7 +3405,7 @@
 			// check if the name is in the current package, skip it if its a sub-package
 			PackageBinding currentPackage = unitScope.fPackage;
 			unitScope.recordReference(currentPackage.compoundName, name);
-			Binding binding = currentPackage.getTypeOrPackage(name);
+			Binding binding = currentPackage.getTypeOrPackage(name, module());
 			if (binding instanceof ReferenceBinding) {
 				ReferenceBinding referenceType = (ReferenceBinding) binding;
 				if ((referenceType.tagBits & TagBits.HasMissingType) == 0) {
@@ -3365,11 +3427,12 @@
 						if (resolvedImport instanceof PackageBinding) {
 							temp = findType(name, (PackageBinding) resolvedImport, currentPackage);
 						} else if (someImport.isStatic()) {
-							temp = findMemberType(name, (ReferenceBinding) resolvedImport); // static imports are allowed to see inherited member types
+							// Imports are always resolved in the CU Scope (bug 520874)
+							temp = compilationUnitScope().findMemberType(name, (ReferenceBinding) resolvedImport); // static imports are allowed to see inherited member types
 							if (temp != null && !temp.isStatic())
 								temp = null;
 						} else {
-							temp = findDirectMemberType(name, (ReferenceBinding) resolvedImport);
+							temp = compilationUnitScope().findDirectMemberType(name, (ReferenceBinding) resolvedImport);
 						}
 						if (TypeBinding.notEquals(temp, type) && temp != null) {
 							if (temp.isValidBinding()) {
@@ -3458,7 +3521,7 @@
 			PackageBinding packageBinding = (PackageBinding) binding;
 
 			while (currentIndex < nameLength) {
-				binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]);
+				binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], module());
 				if (binding == null)
 					return new ProblemReferenceBinding(
 						CharOperation.subarray(compoundName, 0, currentIndex),
@@ -3720,11 +3783,19 @@
 				MethodScope methodScope = methodScope();
 				if (!methodScope.isInsideInitializer()){
 					// check method modifiers to see if deprecated
-					ReferenceContext referenceContext = methodScope.referenceContext;
-					MethodBinding context = referenceContext instanceof AbstractMethodDeclaration ?
-							((AbstractMethodDeclaration)referenceContext).binding : ((LambdaExpression)referenceContext).binding;
-					if (context != null && context.isViewedAsDeprecated())
-						return true;
+					ReferenceContext referenceContext = methodScope.referenceContext();
+					if (referenceContext instanceof AbstractMethodDeclaration) {
+						MethodBinding context = ((AbstractMethodDeclaration) referenceContext).binding;
+						if (context != null && context.isViewedAsDeprecated())
+							return true;
+					} else if (referenceContext instanceof LambdaExpression) {
+						MethodBinding context = ((LambdaExpression) referenceContext).binding;
+						if (context != null && context.isViewedAsDeprecated())
+							return true;
+					} else if (referenceContext instanceof ModuleDeclaration) {
+						ModuleBinding context = ((ModuleDeclaration) referenceContext).binding;
+						return context != null && context.isDeprecated();
+					}
 				} else if (methodScope.initializedField != null && methodScope.initializedField.isViewedAsDeprecated()) {
 					// inside field declaration ? check field modifier to see if deprecated
 					return true;
@@ -4408,7 +4479,7 @@
 		} else if (compatibleCount == 1) {
 			MethodBinding candidate = visible[0];
 			if (candidate != null)
-			compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
+				compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
 			return candidate;
 		}
 		if (compatibleCount != visibleSize) {
@@ -4416,7 +4487,7 @@
 			System.arraycopy(compatibilityLevels, 0, compatibilityLevels = new int[compatibleCount], 0, compatibleCount);
 		}
 		
-
+		
 		MethodBinding[] moreSpecific = new MethodBinding[visibleSize];
 		if (isJdk18) {
 			// 15.12.2.5 Choosing the Most Specific Method
@@ -4466,11 +4537,11 @@
 						if (levelj == VARARGS_COMPATIBLE && levelk == VARARGS_COMPATIBLE) {
 							TypeBinding s = InferenceContext18.getParameter(mbjParameters, argumentTypes.length, true);
 							TypeBinding t = InferenceContext18.getParameter(mbkParameters, argumentTypes.length, true);
-							if (TypeBinding.notEquals(s, t) && t.isSubtypeOf(s))
+							if (TypeBinding.notEquals(s, t) && t.isSubtypeOf(s, false))
 								continue nextJ;
 						}
 					}
-					}
+				}
 				moreSpecific[count++] = visible[j];
 			}
 			if (count == 0) {
@@ -4478,7 +4549,7 @@
 			} else if (count == 1) {
 				MethodBinding candidate = moreSpecific[0];
 				if (candidate != null)
-				compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
+					compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
 				return candidate;
 			} else {
 				visibleSize = count;
@@ -4489,20 +4560,35 @@
 			// JLS7 implementation  
 	
 			InvocationSite tieBreakInvocationSite = new InvocationSite() {
+				@Override
 				public TypeBinding[] genericTypeArguments() { return null; } // ignore genericTypeArgs
+				@Override
 				public boolean isSuperAccess() { return invocationSite.isSuperAccess(); }
+				@Override
 				public boolean isTypeAccess() { return invocationSite.isTypeAccess(); }
+				@Override
 				public void setActualReceiverType(ReferenceBinding actualReceiverType) { /* ignore */}
+				@Override
 				public void setDepth(int depth) { /* ignore */}
+				@Override
 				public void setFieldIndex(int depth) { /* ignore */}
+				@Override
 				public int sourceStart() { return invocationSite.sourceStart(); }
+				@Override
 				public int sourceEnd() { return invocationSite.sourceStart(); }
+				@Override
 				public TypeBinding invocationTargetType() { return invocationSite.invocationTargetType(); }
+				@Override
 				public boolean receiverIsImplicitThis() { return invocationSite.receiverIsImplicitThis();}
+				@Override
 				public InferenceContext18 freshInferenceContext(Scope scope) { return null; /* no inference when ignoring genericTypeArgs */ }
+				@Override
 				public ExpressionContext getExpressionContext() { return ExpressionContext.VANILLA_CONTEXT; }
+				@Override
 				public boolean isQualifiedSuper() { return invocationSite.isQualifiedSuper(); }
+				@Override
 				public boolean checkingPotentialCompatibility() { return false; }
+				@Override
 				public void acceptPotentiallyCompatibleMethods(MethodBinding[] methods) {/* ignore */}
 			};
 			int count = 0;
@@ -4558,7 +4644,7 @@
 					if (moreSpecific[i] != null) {
 						MethodBinding candidate = visible[i];
 						if (candidate != null)
-						compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
+							compilationUnitScope().recordTypeReferences(candidate.thrownExceptions);
 						return candidate;
 					}
 				}
@@ -4787,9 +4873,9 @@
 								continue;
 						}
 						return NOT_COMPATIBLE;
+					}
 				}
 			}
-			}
 			switch (inferenceKind) {
 				case InferenceContext18.CHECK_STRICT:
 					return COMPATIBLE;
@@ -4799,7 +4885,7 @@
 					return VARARGS_COMPATIBLE;
 				default:
 					break;
-	}
+				}
 		}
 		return parameterCompatibilityLevel(method, arguments, false);
 	}
@@ -5024,8 +5110,10 @@
 				break;
 			currentType = currentType.enclosingType();
 		}
+		boolean isInterface = allocationType.isInterface();
+		ReferenceBinding typeToSearch = isInterface ? getJavaLangObject() : allocationType;
 	
-		MethodBinding[] methods = allocationType.getMethods(TypeConstants.INIT, argumentTypes.length);
+		MethodBinding[] methods = typeToSearch.getMethods(TypeConstants.INIT, argumentTypes.length);
 		MethodBinding [] staticFactories = new MethodBinding[methods.length];
 		int sfi = 0;
 		for (int i = 0, length = methods.length; i < length; i++) {
@@ -5043,8 +5131,8 @@
 			int methodTypeVariablesArity = methodTypeVariables.length;
 			final int factoryArity = classTypeVariablesArity + methodTypeVariablesArity;
 			final LookupEnvironment environment = environment();
-			
-			MethodBinding staticFactory = new SyntheticFactoryMethodBinding(method.original(), environment, originalEnclosingType);
+			MethodBinding targetMethod = isInterface ? new MethodBinding(method.original(), genericType) : method.original();
+			MethodBinding staticFactory = new SyntheticFactoryMethodBinding(targetMethod, environment, originalEnclosingType);
 			staticFactory.typeVariables = new TypeVariableBinding[factoryArity];
 			final SimpleLookupTable map = new SimpleLookupTable(factoryArity);
 			
@@ -5071,12 +5159,15 @@
 			}
 			final Scope scope = this;
 			Substitution substitution = new Substitution() {
+					@Override
 					public LookupEnvironment environment() {
 						return scope.environment();
 					}
+					@Override
 					public boolean isRawSubstitution() {
 						return false;
 					}
+					@Override
 					public TypeBinding substitute(TypeVariableBinding typeVariable) {
 						TypeBinding retVal = (TypeBinding) map.get(typeVariable.unannotated());
 						return retVal == null ? typeVariable : typeVariable.hasTypeAnnotations() ? environment().createAnnotatedType(retVal, typeVariable.getTypeAnnotations()) : retVal;
@@ -5099,12 +5190,12 @@
 				}
 				switch (substitutedSuperclass.kind()) {
 					case Binding.ARRAY_TYPE :
-						substitutedVariable.setSuperClass(environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null));
+						substitutedVariable.setSuperClass(environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null));
 						substitutedVariable.setSuperInterfaces(substitutedInterfaces);
 						break;
 					default:
 						if (substitutedSuperclass.isInterface()) {
-							substitutedVariable.setSuperClass(environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null));
+							substitutedVariable.setSuperClass(environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null));
 							int interfaceCount = substitutedInterfaces.length;
 							System.arraycopy(substitutedInterfaces, 0, substitutedInterfaces = new ReferenceBinding[interfaceCount+1], 1, interfaceCount);
 							substitutedInterfaces[0] = (ReferenceBinding) substitutedSuperclass;
@@ -5121,7 +5212,7 @@
 			if (staticFactory.thrownExceptions == null) { 
 				staticFactory.thrownExceptions = Binding.NO_EXCEPTIONS;
 			}
-			staticFactories[sfi++] = new ParameterizedMethodBinding((ParameterizedTypeBinding) environment.convertToParameterizedType(staticFactory.declaringClass),
+			staticFactories[sfi++] = new ParameterizedMethodBinding((ParameterizedTypeBinding) environment.convertToParameterizedType(isInterface ? allocationType : staticFactory.declaringClass),
 																												staticFactory);
 		}
 		if (sfi == 0)
@@ -5148,7 +5239,7 @@
 	public boolean validateNullAnnotation(long tagBits, TypeReference typeRef, Annotation[] annotations) {
 		if (typeRef == null)
 			return true;
-			TypeBinding type = typeRef.resolvedType;
+		TypeBinding type = typeRef.resolvedType;
 
 		boolean usesNullTypeAnnotations = this.environment().usesNullTypeAnnotations();
 		long nullAnnotationTagBit;
@@ -5170,9 +5261,92 @@
 		}
 		return true;
 	}
-	
+
+	/**
+	 * Record a NNBD annotation applying to a given source range within the current scope
+	 * @param target the annotated element
+	 * @param value bitset describing the default nullness (see Binding.NullnessDefaultMASK)
+	 * @param annotation the NNBD annotation 
+	 * @param scopeStart start of the source range affected by the default
+	 * @param scopeEnd end of the source range affected by the default
+	 * @return <code>true</code> if the annotation was newly recorded, <code>false</code> if a corresponding entry already existed.
+	 */
+	public boolean recordNonNullByDefault(Binding target, int value, Annotation annotation, int scopeStart, int scopeEnd) {
+		ReferenceContext context = referenceContext();
+		if (context instanceof LambdaExpression && context != ((LambdaExpression) context).original)
+			return false; // Do not record from copies. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=441929
+			
+		if (this.nullDefaultRanges == null) {
+			this.nullDefaultRanges=new ArrayList<>(3);
+		}
+		for (NullDefaultRange nullDefaultRange : this.nullDefaultRanges) {
+			if (nullDefaultRange.start== scopeStart && nullDefaultRange.end==scopeEnd) {
+				if (nullDefaultRange.contains(annotation)) {
+					// annotation data already recorded
+					return false;
+				} else {
+					nullDefaultRange.merge(value, annotation, target);
+					return true;
+				}
+			}
+		}
+		this.nullDefaultRanges.add(new NullDefaultRange(value, annotation, scopeStart, scopeEnd, target));
+		return true;
+	}
+
+	/**
+	 * Check whether the given null default is redundant at the given position inside this scope.
+	 * @param nullBits locally defined nullness default, see Binding.NullnessDefaultMASK
+	 * @param sourceStart
+	 * @return enclosing binding that already has a matching NonNullByDefault annotation,
+	 * 		or the special binding {@link #NOT_REDUNDANT}, indicating that a different enclosing nullness default was found, 
+	 * 		or null to indicate that no enclosing nullness default was found.
+	 */
+	public Binding checkRedundantDefaultNullness(int nullBits, int sourceStart) {
+		Binding target = localCheckRedundantDefaultNullness(nullBits, sourceStart);
+		if (target != null) {
+			return target;
+		}
+		return this.parent.checkRedundantDefaultNullness(nullBits, sourceStart);
+	}
+
 	/** Answer a defaultNullness defined for the closest enclosing scope, using bits from Binding.NullnessDefaultMASK. */
-	public abstract boolean hasDefaultNullnessFor(int location);
+	public boolean hasDefaultNullnessFor(int location, int sourceStart) {
+		int nonNullByDefaultValue = localNonNullByDefaultValue(sourceStart);
+		if (nonNullByDefaultValue != 0) {
+			return (nonNullByDefaultValue & location) != 0;
+		}
+		return this.parent.hasDefaultNullnessFor(location, sourceStart);
+	}
+
+	/*
+	 * helper for hasDefaultNullnessFor(..) which inspects only ranges recorded within this scope.
+	 */
+	public final int localNonNullByDefaultValue(int start) {
+		NullDefaultRange nullDefaultRange = nullDefaultRangeForPosition(start);
+		return nullDefaultRange != null ? nullDefaultRange.value : 0;
+	}
+
+	/*
+	 * local variant of checkRedundantDefaultNullness(..), i.e., only inspect ranges recorded within this scope.
+	 */
+	final protected /* @Nullable */ Binding localCheckRedundantDefaultNullness(int nullBits, int position) {
+		NullDefaultRange nullDefaultRange = nullDefaultRangeForPosition(position);
+		if (nullDefaultRange != null)
+			return (nullBits == nullDefaultRange.value) ? nullDefaultRange.target : NOT_REDUNDANT;
+		return null;
+	}
+
+	private /* @Nullable */ NullDefaultRange nullDefaultRangeForPosition(int start) {
+		if (this.nullDefaultRanges != null) {
+			for (NullDefaultRange nullDefaultRange : this.nullDefaultRanges) {
+				if (start >= nullDefaultRange.start && start < nullDefaultRange.end) {
+					return nullDefaultRange;
+				}
+			}
+		}
+		return null;
+	}
 
 	public static BlockScope typeAnnotationsResolutionScope(Scope scope) {
 		BlockScope resolutionScope = null;
@@ -5200,7 +5374,7 @@
 		while (methodScope != null) {
 			while (methodScope != null && methodScope.referenceContext instanceof LambdaExpression) {
 				LambdaExpression lambda = (LambdaExpression) methodScope.referenceContext;
-				if (!typeVariableAccess)
+				if (!typeVariableAccess && !lambda.scope.isStatic)
 					lambda.shouldCaptureInstance = true;  // lambda can still be static, only when `this' is touched (implicitly or otherwise) it cannot be.
 				methodScope = methodScope.enclosingMethodScope();
 			}
@@ -5223,7 +5397,7 @@
 			}
 		}
 	}
-
+	
 	// AspectJ Extension
 	/**
      * Other scopes can override this method
@@ -5231,6 +5405,11 @@
 	public TypeVariableBinding findTypeVariable(char[] name, SourceTypeBinding sourceType) {
 		return sourceType.getTypeVariable(name);
 	}
+
+	public boolean isInterTypeScope() {
+		return false;
+	}
+
 	// End AspectJ Extension
 	
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.java
index 9467f17..f4f443f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SignatureWrapper.java
@@ -191,6 +191,7 @@
 	public char[] tail() {
 		return CharOperation.subarray(this.signature, this.start, this.signature.length);
 	}
+	@Override
 	public String toString() {
 		if (this.start >= 0 && this.start <= this.signature.length) {
 			return new String(CharOperation.subarray(this.signature, 0, this.start)) + " ^ " //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.java
new file mode 100644
index 0000000..27c7416
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceModuleBinding.java
@@ -0,0 +1,157 @@
+// AspectJ
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.function.IntFunction;
+import java.util.stream.Stream;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
+
+public class SourceModuleBinding extends ModuleBinding {
+
+	final public CompilationUnitScope scope; // TODO(SHMOD): consider cleanup at end of compile
+
+	/**
+	 * Construct a named module from source.
+	 * <p><strong>Side effects:</strong> adds the new module to root.knownModules,
+	 * creates a new LookupEnvironment and links that into the scope.</p>
+	 */
+	public SourceModuleBinding(char[] moduleName, CompilationUnitScope scope, LookupEnvironment rootEnv) {
+		super(moduleName);
+		rootEnv.knownModules.put(moduleName, this);
+		// AspectJ Extension - ask the lookup environment to wrap itself
+		this.environment = rootEnv.wrapInModuleEnvironment(this);
+		// was:
+		// this.environment = new LookupEnvironment(rootEnv, this);
+		// End AspectJ
+		this.scope = scope;
+		scope.environment = this.environment;
+	}
+
+	public void setRequires(ModuleBinding[] requires, ModuleBinding[] requiresTransitive) {
+		// TODO(SHMOD): it's a bit awkward that we may get called after applyModuleUpdates() has already worked.
+		ModuleBinding javaBase = this.environment.javaBaseModule();
+		if (javaBase.isUnnamed()) // happens when no java.base can be found in the name environment.
+			javaBase = null;
+		this.requires = merge(this.requires, requires, javaBase, ModuleBinding[]::new);
+		this.requiresTransitive = merge(this.requiresTransitive, requiresTransitive, null, ModuleBinding[]::new);
+	}
+	
+	public void setUses(TypeBinding[] uses) {
+		this.uses = merge(this.uses, uses, null, TypeBinding[]::new);
+	}
+
+	@Override
+	public TypeBinding[] getUses() {
+		resolveTypes();
+		return super.getUses();
+	}
+	
+	@Override
+	public TypeBinding[] getServices() {
+		resolveTypes();
+		return super.getServices();
+	}
+	
+	@Override
+	public TypeBinding[] getImplementations(TypeBinding binding) {
+		resolveTypes();
+		return super.getImplementations(binding);
+	}
+
+	private void resolveTypes() {
+		if (this.scope != null) {
+			ModuleDeclaration ast = this.scope.referenceCompilationUnit().moduleDeclaration;
+			if (ast != null)
+				ast.resolveTypeDirectives(this.scope);
+		}
+	}
+
+	public void setServices(TypeBinding[] services) {
+		this.services = merge(this.services, services, null, TypeBinding[]::new);
+	}
+
+	public void setImplementations(TypeBinding infBinding, Collection<TypeBinding> resolvedImplementations) {
+		if (this.implementations == null)
+			this.implementations = new HashMap<>();
+		this.implementations.put(infBinding, resolvedImplementations.toArray(new TypeBinding[resolvedImplementations.size()]));
+	}
+
+	private <T> T[] merge(T[] one, T[] two, T extra, IntFunction<T[]> supplier) {
+		if (one.length == 0 && extra == null) {
+			if (two.length > 0)
+				return two;
+			return one;
+		}
+		int len0 = extra == null ? 0 : 1;
+		int len1 = one.length;
+		int len2 = two.length;
+		T[] result = supplier.apply(len0+len1+len2);
+		if (extra != null)
+			result[0] = extra;
+		System.arraycopy(one, 0, result, len0, len1);
+		System.arraycopy(two, 0, result, len0+len1, len2);
+		return result;
+	}
+	
+	@Override
+	Stream<ModuleBinding> getRequiredModules(boolean transitiveOnly) {
+		if (this.requires == NO_MODULES) {
+			this.scope.referenceContext.moduleDeclaration.resolveModuleDirectives(this.scope);
+		}
+		return super.getRequiredModules(transitiveOnly);
+	}
+
+	@Override
+	public ModuleBinding[] getAllRequiredModules() {
+		if (this.scope != null)
+			this.scope.referenceContext.moduleDeclaration.resolveModuleDirectives(this.scope);
+		return super.getAllRequiredModules();
+	}
+	@Override
+	public long getAnnotationTagBits() {
+		ensureAnnotationsResolved();
+		return this.tagBits;
+	}
+	protected void ensureAnnotationsResolved() {
+		if ((this.tagBits & TagBits.AnnotationResolved) == 0 && this.scope != null) {
+			ModuleDeclaration module = this.scope.referenceContext.moduleDeclaration;
+			ASTNode.resolveAnnotations(module.scope, module.annotations, this);
+			if ((this.tagBits & TagBits.AnnotationDeprecated) != 0) {
+				this.modifiers |= ClassFileConstants.AccDeprecated;
+				this.tagBits |= TagBits.DeprecatedAnnotationResolved;
+			}
+			this.tagBits |= TagBits.AnnotationResolved;
+		}
+	}
+	@Override
+	public AnnotationBinding[] getAnnotations() {
+		ensureAnnotationsResolved();
+		return retrieveAnnotations(this);
+	}
+
+	@Override
+	SimpleLookupTable storedAnnotations(boolean forceInitialize, boolean forceStore) {
+		if (this.scope != null) { // scope null when no annotation cached, and module got processed fully (159631)
+			SimpleLookupTable annotationTable = super.storedAnnotations(forceInitialize, forceStore); 
+			if (annotationTable != null)
+				this.scope.referenceCompilationUnit().compilationResult.hasAnnotations = true;
+			return annotationTable;
+		}
+		return null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
index 3d92a04..6a3edb0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,11 +35,11 @@
  *								Bug 432348 - [1.8] Internal compiler error (NPE) after upgrade to 1.8
  *								Bug 438458 - [1.8][null] clean up handling of null type annotations wrt type variables
  *								Bug 435570 - [1.8][null] @NonNullByDefault illegally tries to affect "throws E"
- *								Bug 441693 - [1.8][null] Bogus warning for type argument annotated with @NonNull

- *								Bug 435805 - [1.8][compiler][null] Java 8 compiler does not recognize declaration style null annotations

- *								Bug 457210 - [1.8][compiler][null] Wrong Nullness errors given on full build build but not on incremental build?

- *								Bug 461250 - ArrayIndexOutOfBoundsException in SourceTypeBinding.fields

- *								Bug 466713 - Null Annotations: NullPointerException using <int @Nullable []> as Type Param

+ *								Bug 441693 - [1.8][null] Bogus warning for type argument annotated with @NonNull
+ *								Bug 435805 - [1.8][compiler][null] Java 8 compiler does not recognize declaration style null annotations
+ *								Bug 457210 - [1.8][compiler][null] Wrong Nullness errors given on full build build but not on incremental build?
+ *								Bug 461250 - ArrayIndexOutOfBoundsException in SourceTypeBinding.fields
+ *								Bug 466713 - Null Annotations: NullPointerException using <int @Nullable []> as Type Param
  *      Jesper S Moller <jesper@selskabet.org> -  Contributions for
  *								Bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
  *      Till Brychcy - Contributions for
@@ -50,10 +51,12 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.IErrorHandlingPolicy;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
@@ -66,11 +69,14 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference.AnnotationPosition;

+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference.AnnotationPosition;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider;
+import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream;
+import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.Opcodes;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
@@ -102,7 +108,7 @@
 	public ClassScope scope;
 	protected SourceTypeBinding prototype;
 	LookupEnvironment environment;
-
+	public ModuleBinding module;
 	// Synthetics are separated into 4 categories: methods, super methods, fields, class literals and bridge methods
 	// if a new category is added, also increment MAX_SYNTHETICS
 	private final static int METHOD_EMUL = 0;
@@ -118,7 +124,6 @@
 
 	public int defaultNullness;
 	private int nullnessDefaultInitialized = 0; // 0: nothing; 1: type; 2: package
-	private int lambdaOrdinal = 0;
 	private ReferenceBinding containerAnnotationType = null;
   // AspectJ Extension
   // for AspectJ... (because we extend this type with BinaryTypeBinding)
@@ -128,8 +133,8 @@
   }
   // End AspectJ Extension
 	
-	public ExternalAnnotationProvider externalAnnotationProvider;
-	
+	public ExternalAnnotationProvider externalAnnotationProvider;

+	

 public SourceTypeBinding(char[][] compoundName, PackageBinding fPackage, ClassScope scope) {
 	this.compoundName = compoundName;
 	this.fPackage = fPackage;
@@ -168,7 +173,6 @@
 	this.storedAnnotations = prototype.storedAnnotations;
 	this.defaultNullness = prototype.defaultNullness;
 	this.nullnessDefaultInitialized= prototype.nullnessDefaultInitialized;
-	this.lambdaOrdinal = prototype.lambdaOrdinal;
 	this.containerAnnotationType = prototype.containerAnnotationType;
 	this.tagBits |= TagBits.HasUnresolvedMemberTypes; // see memberTypes()
 }
@@ -653,7 +657,7 @@
 	SyntheticMethodBinding lambdaMethod = null;
 	SyntheticMethodBinding[] lambdaMethods = (SyntheticMethodBinding[]) this.synthetics[SourceTypeBinding.METHOD_EMUL].get(lambda);
 	if (lambdaMethods == null) {
-		lambdaMethod = new SyntheticMethodBinding(lambda, CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.lambdaOrdinal++).toCharArray()), this);
+		lambdaMethod = new SyntheticMethodBinding(lambda, CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(lambda.ordinal).toCharArray()), this);
 		this.synthetics[SourceTypeBinding.METHOD_EMUL].put(lambda, lambdaMethods = new SyntheticMethodBinding[1]);
 		lambdaMethods[0] = lambdaMethod;
 	} else {
@@ -696,13 +700,13 @@
 	return lambdaMethod;
 }
 private void addDeserializeLambdaMethod() {
-		SyntheticMethodBinding[] deserializeLambdaMethods = (SyntheticMethodBinding[]) this.synthetics[SourceTypeBinding.METHOD_EMUL].get(TypeConstants.DESERIALIZE_LAMBDA);
-		if (deserializeLambdaMethods == null) {
-			SyntheticMethodBinding deserializeLambdaMethod = new SyntheticMethodBinding(this);
-			this.synthetics[SourceTypeBinding.METHOD_EMUL].put(TypeConstants.DESERIALIZE_LAMBDA,deserializeLambdaMethods = new SyntheticMethodBinding[1]);
-			deserializeLambdaMethods[0] = deserializeLambdaMethod;
-		}
+	SyntheticMethodBinding[] deserializeLambdaMethods = (SyntheticMethodBinding[]) this.synthetics[SourceTypeBinding.METHOD_EMUL].get(TypeConstants.DESERIALIZE_LAMBDA);
+	if (deserializeLambdaMethods == null) {
+		SyntheticMethodBinding deserializeLambdaMethod = new SyntheticMethodBinding(this);
+		this.synthetics[SourceTypeBinding.METHOD_EMUL].put(TypeConstants.DESERIALIZE_LAMBDA,deserializeLambdaMethods = new SyntheticMethodBinding[1]);
+		deserializeLambdaMethods[0] = deserializeLambdaMethod;
 	}
+}
 /* Add a new synthetic access method for access to <targetMethod>.
  * Must distinguish access method used for super access from others (need to use invokespecial bytecode)
 	Answer the new method or the existing method if one already existed.
@@ -737,7 +741,7 @@
 	}
 	return accessMethod;
 }
-public SyntheticMethodBinding addSyntheticArrayMethod(ArrayBinding arrayType, int purpose) {
+public SyntheticMethodBinding addSyntheticArrayMethod(ArrayBinding arrayType, int purpose, char[] selector) {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.synthetics == null)
 		this.synthetics = new HashMap[MAX_SYNTHETICS];
@@ -747,27 +751,24 @@
 	SyntheticMethodBinding arrayMethod = null;
 	SyntheticMethodBinding[] arrayMethods = (SyntheticMethodBinding[]) this.synthetics[SourceTypeBinding.METHOD_EMUL].get(arrayType);
 	if (arrayMethods == null) {
-		char [] selector = CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.lambdaOrdinal++).toCharArray());
 		arrayMethod = new SyntheticMethodBinding(purpose, arrayType, selector, this);
 		this.synthetics[SourceTypeBinding.METHOD_EMUL].put(arrayType, arrayMethods = new SyntheticMethodBinding[2]);
 		arrayMethods[purpose == SyntheticMethodBinding.ArrayConstructor ? 0 : 1] = arrayMethod;
 	} else {
 		if ((arrayMethod = arrayMethods[purpose == SyntheticMethodBinding.ArrayConstructor ? 0 : 1]) == null) {
-			char [] selector = CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.lambdaOrdinal++).toCharArray());
 			arrayMethod = new SyntheticMethodBinding(purpose, arrayType, selector, this);
 			arrayMethods[purpose == SyntheticMethodBinding.ArrayConstructor ? 0 : 1] = arrayMethod;
 		}
 	}
 	return arrayMethod;
 }
-public SyntheticMethodBinding addSyntheticFactoryMethod(MethodBinding privateConstructor, MethodBinding publicConstructor, TypeBinding [] enclosingInstances) {
+public SyntheticMethodBinding addSyntheticFactoryMethod(MethodBinding privateConstructor, MethodBinding publicConstructor, TypeBinding [] enclosingInstances, char[] selector) {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.synthetics == null)
 		this.synthetics = new HashMap[MAX_SYNTHETICS];
 	if (this.synthetics[SourceTypeBinding.METHOD_EMUL] == null)
 		this.synthetics[SourceTypeBinding.METHOD_EMUL] = new HashMap(5);
 
-	char [] selector = CharOperation.concat(TypeConstants.ANONYMOUS_METHOD, Integer.toString(this.lambdaOrdinal++).toCharArray());
 	SyntheticMethodBinding factory = new SyntheticMethodBinding(privateConstructor, publicConstructor, selector, enclosingInstances, this);
 	this.synthetics[SourceTypeBinding.METHOD_EMUL].put(selector, new SyntheticMethodBinding[] { factory });
 	return factory;
@@ -777,7 +778,7 @@
  */
 public SyntheticMethodBinding addSyntheticBridgeMethod(MethodBinding inheritedMethodToBridge, MethodBinding targetMethod) {
 	if (!isPrototype()) throw new IllegalStateException();
-	if (isInterface() && this.scope.compilerOptions().sourceLevel <= ClassFileConstants.JDK1_7) return null; // only classes & enums get bridge methods, interfaces too at 1.8+

+	if (isInterface() && this.scope.compilerOptions().sourceLevel <= ClassFileConstants.JDK1_7) return null; // only classes & enums get bridge methods, interfaces too at 1.8+
 	// targetMethod may be inherited
 	if (TypeBinding.equalsEquals(inheritedMethodToBridge.returnType.erasure(), targetMethod.returnType.erasure())
 		&& inheritedMethodToBridge.areParameterErasuresEqual(targetMethod)) {
@@ -875,6 +876,7 @@
 		return this.prototype.areMethodsInitialized();
 	return this.methods != Binding.UNINITIALIZED_METHODS;
 }
+@Override
 public int kind() {
 	if (!isPrototype())
 		return this.prototype.kind();
@@ -882,10 +884,12 @@
 	return Binding.TYPE;
 }
 
+@Override
 public TypeBinding clone(TypeBinding immaterial) {
 	return new SourceTypeBinding(this);
 }
 
+@Override
 public char[] computeUniqueKey(boolean isLeaf) {
 	if (!isPrototype())
 		return this.prototype.computeUniqueKey();
@@ -932,8 +936,10 @@
 	// check @Deprecated annotation
 	getAnnotationTagBits(); // marks as deprecated by side effect
 	ReferenceBinding enclosingType = enclosingType();
-	if (enclosingType != null && enclosingType.isViewedAsDeprecated() && !isDeprecated())
+	if (enclosingType != null && enclosingType.isViewedAsDeprecated() && !isDeprecated()) {
 		this.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+		this.tagBits |= (enclosingType.tagBits & TagBits.AnnotationTerminallyDeprecated);
+	}
 
 	for (int i = 0, length = this.memberTypes.length; i < length; i++)
 		((SourceTypeBinding) this.memberTypes[i]).checkAnnotationsInType();
@@ -941,18 +947,19 @@
 
 void faultInTypesForFieldsAndMethods() {
 	if (!isPrototype()) throw new IllegalStateException();
-	checkAnnotationsInType();

-	internalFaultInTypeForFieldsAndMethods();

-}

-

-private void internalFaultInTypeForFieldsAndMethods() {

+	checkAnnotationsInType();
+	internalFaultInTypeForFieldsAndMethods();
+}
+
+private void internalFaultInTypeForFieldsAndMethods() {
 	fields();
 	methods();
 
 	for (int i = 0, length = this.memberTypes.length; i < length; i++)
-		((SourceTypeBinding) this.memberTypes[i]).internalFaultInTypeForFieldsAndMethods();

+		((SourceTypeBinding) this.memberTypes[i]).internalFaultInTypeForFieldsAndMethods();
 }
 // NOTE: the type of each field of a source type is resolved when needed
+@Override
 public FieldBinding[] fields() {
 	
 	if (!isPrototype()) {
@@ -975,12 +982,12 @@
 				ReferenceBinding.sortFields(this.fields, 0, length);
 			this.tagBits |= TagBits.AreFieldsSorted;
 		}
-		FieldBinding[] fieldsSnapshot = this.fields;

-		for (int i = 0, length = fieldsSnapshot.length; i < length; i++) {

-			if (resolveTypeFor(fieldsSnapshot[i]) == null) {

+		FieldBinding[] fieldsSnapshot = this.fields;
+		for (int i = 0, length = fieldsSnapshot.length; i < length; i++) {
+			if (resolveTypeFor(fieldsSnapshot[i]) == null) {
 				// do not alter original field array until resolution is over, due to reentrance (143259)
-				if (resolvedFields == fieldsSnapshot) {

-					System.arraycopy(fieldsSnapshot, 0, resolvedFields = new FieldBinding[length], 0, length);

+				if (resolvedFields == fieldsSnapshot) {
+					System.arraycopy(fieldsSnapshot, 0, resolvedFields = new FieldBinding[length], 0, length);
 				}
 				resolvedFields[i] = null;
 				failed++;
@@ -1007,6 +1014,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#genericTypeSignature()
  */
+@Override
 public char[] genericTypeSignature() {
 	if (!isPrototype())
 		return this.prototype.genericTypeSignature();
@@ -1070,6 +1078,7 @@
  * declaration binding.
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#getAnnotationTagBits()
  */
+@Override
 public long getAnnotationTagBits() {
 	if (!isPrototype())
 		return this.prototype.getAnnotationTagBits();
@@ -1106,6 +1115,7 @@
 	return result;
 }
 // NOTE: the return type, arg & exception types of each method of a source type are resolved when needed
+@Override
 public MethodBinding getExactConstructor(TypeBinding[] argumentTypes) {
 	if (!isPrototype())
 		return this.prototype.getExactConstructor(argumentTypes);
@@ -1157,6 +1167,7 @@
 // AspectJ Extension - renamed original method getExactMethodBase and added this one
 //NOTE: the return type, arg & exception types of each method of a source type are resolved when needed
 //searches up the hierarchy as long as no potential (but not exact) match was found.
+@Override
 public MethodBinding getExactMethod(char[] selector, TypeBinding[] argumentTypes, CompilationUnitScope refScope) {
   if (memberFinder != null) return memberFinder.getExactMethod(this, selector, argumentTypes, refScope);
   else return getExactMethodBase(selector, argumentTypes, refScope);
@@ -1254,13 +1265,15 @@
 
 //NOTE: the type of a field of a source type is resolved when needed
 // AspectJ Extension - replaced original impl with this
+@Override
 public FieldBinding getField(char[] fieldName, boolean needResolve) {
-  if (memberFinder != null) return memberFinder.getField(this, fieldName, null, null);
+  if (this.memberFinder != null) return this.memberFinder.getField(this, fieldName, null, null);
   else return this.getFieldBase(fieldName, needResolve);
 }
 
+@Override
 public FieldBinding getField(char[] fieldName, boolean needResolve, InvocationSite site, Scope scope) {
-  if (memberFinder != null) return memberFinder.getField(this, fieldName, site, scope);
+  if (this.memberFinder != null) return this.memberFinder.getField(this, fieldName, site, scope);
   else return this.getFieldBase(fieldName, needResolve);
 }
 
@@ -1309,13 +1322,15 @@
 	return null;
 }
 
-// AspectJ Extension - replaced original impl with this 
+// AspectJ Extension - replaced original impl with this
+@Override
 public MethodBinding[] getMethods(char[] selector) {
   if (memberFinder != null) return memberFinder.getMethods(this, selector);
   else return getMethodsBase(selector);
 }
 
 // overrides superclass method to consult ITD finder
+@Override
 public MethodBinding[] getMethods(char[] selector, int suggestedParameterLength) {
 	if (memberFinder != null) return memberFinder.getMethods(this, selector);
 	  else return getMethodsBase(selector);
@@ -1377,6 +1392,20 @@
 	}
 	return result;
 }
+public void generateSyntheticFinalFieldInitialization(CodeStream codeStream) {
+	if (this.synthetics == null || this.synthetics[SourceTypeBinding.FIELD_EMUL] == null)
+		return;
+	Collection<FieldBinding> syntheticFields = this.synthetics[SourceTypeBinding.FIELD_EMUL].values();
+	for (FieldBinding field : syntheticFields) {
+		if (CharOperation.prefixEquals(TypeConstants.SYNTHETIC_SWITCH_ENUM_TABLE, field.name)) {
+			MethodBinding[] accessors = (MethodBinding[]) this.synthetics[SourceTypeBinding.METHOD_EMUL].get(new String(field.name));
+			if (accessors == null || accessors[0] == null) // not a field for switch enum
+				continue;
+			codeStream.invoke(Opcodes.OPC_invokestatic, accessors[0], null /* default declaringClass */);
+			codeStream.fieldAccess(Opcodes.OPC_putstatic, field, null /* default declaringClass */);
+		}
+	}
+}
 /* Answer the synthetic field for <actualOuterLocalVariable>
 *	or null if one does not exist.
 */
@@ -1420,6 +1449,7 @@
 	return accessors[1];
 }
 
+@Override
 public boolean hasTypeBit(int bit) {
 	if (!isPrototype()) {
 		return this.prototype.hasTypeBit(bit);
@@ -1431,6 +1461,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#initializeDeprecatedAnnotationTagBits()
  */
+@Override
 public void initializeDeprecatedAnnotationTagBits() {
 	if (!isPrototype()) {
 		this.prototype.initializeDeprecatedAnnotationTagBits();
@@ -1454,6 +1485,7 @@
 
 // ensure the receiver knows its hierarchy & fields/methods so static imports can be resolved correctly
 // see bug 230026
+@Override
 void initializeForStaticImports() {
 	if (!isPrototype()) {
 		this.prototype.initializeForStaticImports();
@@ -1467,6 +1499,7 @@
 	this.scope.buildMethods();
 }
 
+@Override
 int getNullDefault() {
 	
 	if (!isPrototype()) {
@@ -1488,6 +1521,7 @@
  * Returns true if a type is identical to another one,
  * or for generic types, true if compared to its raw type.
  */
+@Override
 public boolean isEquivalentTo(TypeBinding otherType) {
 	if (!isPrototype())
 		return this.prototype.isEquivalentTo(otherType);
@@ -1533,25 +1567,37 @@
 	}
 	return false;
 }
+@Override
 public boolean isGenericType() {
 	if (!isPrototype())
 		return this.prototype.isGenericType();
     return this.typeVariables != Binding.NO_TYPE_VARIABLES;
 }
+@Override
 public boolean isHierarchyConnected() {
 	if (!isPrototype())
 		return this.prototype.isHierarchyConnected();
 	return (this.tagBits & TagBits.EndHierarchyCheck) != 0;
 }
+@Override
 public boolean isRepeatableAnnotationType() {
 	if (!isPrototype()) throw new IllegalStateException();
 	return this.containerAnnotationType != null;
 }
 
+@Override
 public boolean isTaggedRepeatable() {  // tagged but not necessarily repeatable. see isRepeatableAnnotationType.
 	return (this.tagBits & TagBits.AnnotationRepeatable) != 0;
 }
-
+@Override
+public boolean canBeSeenBy(Scope sco) {
+	SourceTypeBinding invocationType = sco.enclosingSourceType();
+	if (TypeBinding.equalsEquals(invocationType, this)) 
+		return true;
+	return ((this.environment.canTypeBeAccessed(this, sco)) &&
+			super.canBeSeenBy(sco));
+}
+@Override
 public ReferenceBinding[] memberTypes() {
 	if (!isPrototype()) {
 		if ((this.tagBits & TagBits.HasUnresolvedMemberTypes) == 0)
@@ -1567,6 +1613,7 @@
 	return this.memberTypes;
 }
 
+@Override
 public boolean hasMemberTypes() {
 	if (!isPrototype())
 		return this.prototype.hasMemberTypes();
@@ -1799,6 +1846,7 @@
 	return this.methods;
 }
 
+@Override
 public TypeBinding prototype() {
 	return this.prototype;
 }
@@ -1807,6 +1855,7 @@
 	return this == this.prototype;  //$IDENTITY-COMPARISON$
 }
 
+@Override
 public ReferenceBinding containerAnnotationType() {
 	
 	if (!isPrototype()) throw new IllegalStateException();
@@ -1830,8 +1879,10 @@
 		if ((field.getAnnotationTagBits() & TagBits.AnnotationDeprecated) != 0)
 			field.modifiers |= ClassFileConstants.AccDeprecated;
 	}
-	if (isViewedAsDeprecated() && !field.isDeprecated())
+	if (isViewedAsDeprecated() && !field.isDeprecated()) {
 		field.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+		field.tagBits |= this.tagBits & TagBits.AnnotationTerminallyDeprecated;
+	}
 	if (hasRestrictedAccess())
 		field.modifiers |= ExtraCompilerModifiers.AccRestrictedAccess;
 	FieldDeclaration[] fieldDecls = this.scope.referenceContext.fields;
@@ -1890,7 +1941,7 @@
 					// enum constants neither have a type declaration nor can they be null
 					field.tagBits |= TagBits.AnnotationNonNull;
 				} else {
-					if (hasNonNullDefaultFor(DefaultLocationField, this.environment.usesNullTypeAnnotations())) {
+					if (hasNonNullDefaultFor(DefaultLocationField, fieldDecl.sourceStart)) {

 						field.fillInDefaultNonNullness(fieldDecl, initializationScope);
 					}
 					// validate null annotation:
@@ -1898,6 +1949,8 @@
 						field.tagBits &= ~TagBits.AnnotationNullMASK;
 				}
 			}
+			if (initializationScope.shouldCheckAPILeaks(this, field.isPublic()) && fieldDecl.type != null) // fieldDecl.type is null for enum constants
+				initializationScope.detectAPILeaks(fieldDecl.type, fieldType);
 		} finally {
 		    initializationScope.initializedField = previousField;
 		}
@@ -1908,8 +1961,18 @@
 	}
 	return null; // should never reach this point
 }
+
 public MethodBinding resolveTypesFor(MethodBinding method) {
-	
+	ProblemReporter problemReporter = this.scope.problemReporter();
+	IErrorHandlingPolicy suspendedPolicy = problemReporter.suspendTempErrorHandlingPolicy();
+	try {
+		return resolveTypesWithSuspendedTempErrorHandlingPolicy(method);
+	} finally {
+		problemReporter.resumeTempErrorHandlingPolicy(suspendedPolicy);
+	}
+}
+
+private MethodBinding resolveTypesWithSuspendedTempErrorHandlingPolicy(MethodBinding method) {
 	if (!isPrototype())
 		return this.prototype.resolveTypesFor(method);
 	
@@ -1926,8 +1989,10 @@
 		if ((method.getAnnotationTagBits() & TagBits.AnnotationDeprecated) != 0)
 			method.modifiers |= ClassFileConstants.AccDeprecated;
 	}
-	if (isViewedAsDeprecated() && !method.isDeprecated())
+	if (isViewedAsDeprecated() && !method.isDeprecated()) {
 		method.modifiers |= ExtraCompilerModifiers.AccDeprecatedImplicitly;
+		method.tagBits |= this.tagBits & TagBits.AnnotationTerminallyDeprecated;
+	}
 	if (hasRestrictedAccess())
 		method.modifiers |= ExtraCompilerModifiers.AccRestrictedAccess;
 
@@ -1967,7 +2032,7 @@
 			if ((resolvedExceptionType.tagBits & TagBits.HasMissingType) != 0) {
 				method.tagBits |= TagBits.HasMissingType;
 			}
-			if (exceptionTypes[i].hasNullTypeAnnotation(AnnotationPosition.ANY)) {

+			if (exceptionTypes[i].hasNullTypeAnnotation(AnnotationPosition.ANY)) {
 				methodDecl.scope.problemReporter().nullAnnotationUnsupportedLocation(exceptionTypes[i]);
 			}
 			method.modifiers |= (resolvedExceptionType.modifiers & ExtraCompilerModifiers.AccGenericSignature);
@@ -1982,6 +2047,7 @@
 	}
 	final boolean reportUnavoidableGenericTypeProblems = this.scope.compilerOptions().reportUnavoidableGenericTypeProblems;
 	boolean foundArgProblem = false;
+	boolean checkAPIleak = methodDecl.scope.shouldCheckAPILeaks(this, method.isPublic());
 	Argument[] arguments = methodDecl.arguments;
 	if (arguments != null) {
 		int size = arguments.length;
@@ -1999,6 +2065,9 @@
 				arg.type.bits |= ASTNode.IgnoreRawTypeCheck;
 			}
 			try {
+				// AspectJ - skip this for now, it sets resolvedType but not the other bits of an annotation so later the check
+				// annotation.resolvedType==null fails (at ASTNode.resolveAnnotations) to resolve the annotation doesn't work.
+				// ASTNode.handleNonNullByDefault(methodDecl.scope, arg.annotations, arg);
 				parameterType = arg.type.resolveType(methodDecl.scope, true /* check bounds*/);
 			} finally {
 				if (deferRawTypeCheck) { 
@@ -2019,6 +2088,8 @@
 				if (leafType instanceof ReferenceBinding && (((ReferenceBinding) leafType).modifiers & ExtraCompilerModifiers.AccGenericSignature) != 0)
 					method.modifiers |= ExtraCompilerModifiers.AccGenericSignature;
 				newParameters[i] = parameterType;
+				if (checkAPIleak)
+					methodDecl.scope.detectAPILeaks(arg.type, parameterType);
 				arg.binding = new LocalVariableBinding(arg, parameterType, arg.modifiers, methodDecl.scope);
 			}
 		}
@@ -2033,7 +2104,8 @@
 		if ((method.tagBits & TagBits.AnnotationSafeVarargs) != 0) {
 			if (!method.isVarargs()) {
 				methodDecl.scope.problemReporter().safeVarargsOnFixedArityMethod(method);
-			} else if (!method.isStatic() && !method.isFinal() && !method.isConstructor()) {
+			} else if (!method.isStatic() && !method.isFinal() && !method.isConstructor() 
+					&& !(sourceLevel >= ClassFileConstants.JDK9 && method.isPrivate())) {
 				methodDecl.scope.problemReporter().safeVarargsOnNonFinalInstanceMethod(method);
 			}
 		} else if (method.parameters != null && method.parameters.length > 0 && method.isVarargs()) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=337795
@@ -2085,6 +2157,8 @@
 					method.modifiers |= ExtraCompilerModifiers.AccGenericSignature;
 				else if (leafType == TypeBinding.VOID && methodDecl.annotations != null)
 					rejectTypeAnnotatedVoidMethod(methodDecl);
+				if (checkAPIleak)
+					methodDecl.scope.detectAPILeaks(returnType, methodType);
 			}
 		}
 	} else {
@@ -2092,7 +2166,7 @@
 			Annotation [] annotations = methodDecl.annotations;
 			if (annotations != null && annotations.length != 0) {
 				ASTNode.copySE8AnnotationsToType(methodDecl.scope, method, methodDecl.annotations, false);
-	}
+			}
 		}
 	}
 	if (foundArgProblem) {
@@ -2111,17 +2185,17 @@
 			long nullTagBits = method.tagBits & TagBits.AnnotationNullMASK;
 			if (nullTagBits != 0) {
 				TypeReference returnTypeRef = ((MethodDeclaration)methodDecl).returnType;
-				if (this.scope.environment().usesNullTypeAnnotations()) {

+				if (this.scope.environment().usesNullTypeAnnotations()) {
 					if (!this.scope.validateNullAnnotation(nullTagBits, returnTypeRef, methodDecl.annotations))
-						method.returnType.tagBits &= ~TagBits.AnnotationNullMASK;

-						method.tagBits &= ~TagBits.AnnotationNullMASK;
+						method.returnType.tagBits &= ~TagBits.AnnotationNullMASK;
+					method.tagBits &= ~TagBits.AnnotationNullMASK;
 				} else {
-					if (!this.scope.validateNullAnnotation(nullTagBits, returnTypeRef, methodDecl.annotations))

+					if (!this.scope.validateNullAnnotation(nullTagBits, returnTypeRef, methodDecl.annotations))
 						method.tagBits &= ~TagBits.AnnotationNullMASK;
-					}
 				}
 			}
 		}
+	}
 	if (compilerOptions.storeAnnotations)
 		createArgumentBindings(method, compilerOptions); // need annotations resolved already at this point
 	if (foundReturnTypeProblem)
@@ -2164,111 +2238,84 @@
 	}
 }
 
-public void evaluateNullAnnotations() {

+public void evaluateNullAnnotations() {
 	
 	if (!isPrototype()) throw new IllegalStateException();
+	
 	// AspectJ added guard for null scope (happens for aspects in the 'BcelWorld.hasUnsatisfiedDependency' chain call
-	if (this.nullnessDefaultInitialized > 0 || this.scope==null || !this.scope.compilerOptions().isAnnotationBasedNullAnalysisEnabled)
+	if (this.nullnessDefaultInitialized > 0 || this.scope == null || !this.scope.compilerOptions().isAnnotationBasedNullAnalysisEnabled)
 		return;
-

-	if ((this.tagBits & TagBits.AnnotationNullMASK) != 0) {

-		Annotation[] annotations = this.scope.referenceContext.annotations;

-		for (int i = 0; i < annotations.length; i++) {

-			ReferenceBinding annotationType = annotations[i].getCompilerAnnotation().getAnnotationType();

-			if (annotationType != null) {

+
+	if ((this.tagBits & TagBits.AnnotationNullMASK) != 0) {
+		Annotation[] annotations = this.scope.referenceContext.annotations;
+		for (int i = 0; i < annotations.length; i++) {
+			ReferenceBinding annotationType = annotations[i].getCompilerAnnotation().getAnnotationType();
+			if (annotationType != null) {
 				if (annotationType.hasNullBit(TypeIds.BitNonNullAnnotation|TypeIds.BitNullableAnnotation)) {
-					this.scope.problemReporter().nullAnnotationUnsupportedLocation(annotations[i]);

-					this.tagBits &= ~TagBits.AnnotationNullMASK;

-				}

-			}

-		}

-	}

-

+					this.scope.problemReporter().nullAnnotationUnsupportedLocation(annotations[i]);
+					this.tagBits &= ~TagBits.AnnotationNullMASK;
+				}
+			}
+		}
+	}
+
 	boolean isPackageInfo = CharOperation.equals(this.sourceName, TypeConstants.PACKAGE_INFO_NAME);
 	PackageBinding pkg = getPackage();
 	boolean isInDefaultPkg = (pkg.compoundName == CharOperation.NO_CHAR_CHAR);
 	if (!isPackageInfo) {
 		boolean isInNullnessAnnotationPackage = this.scope.environment().isNullnessAnnotationPackage(pkg);
-		if (pkg.defaultNullness == NO_NULL_DEFAULT && !isInDefaultPkg && !isInNullnessAnnotationPackage && !(this instanceof NestedTypeBinding)) {
-			ReferenceBinding packageInfo = pkg.getType(TypeConstants.PACKAGE_INFO_NAME);
+		if (pkg.getDefaultNullness() == NO_NULL_DEFAULT && !isInDefaultPkg && !isInNullnessAnnotationPackage && !(this instanceof NestedTypeBinding)) {
+			ReferenceBinding packageInfo = pkg.getType(TypeConstants.PACKAGE_INFO_NAME, this.module);
 			if (packageInfo == null) {
 				// no pkgInfo - complain
 				this.scope.problemReporter().missingNonNullByDefaultAnnotation(this.scope.referenceContext);
-				pkg.defaultNullness = NULL_UNSPECIFIED_BY_DEFAULT;
+				pkg.setDefaultNullness(NULL_UNSPECIFIED_BY_DEFAULT);
 			} else {
 				// if pkgInfo has no default annot. - complain
-					if (packageInfo instanceof SourceTypeBinding
-							&& (packageInfo.tagBits & TagBits.EndHierarchyCheck) == 0) {
-						CompilationUnitScope pkgCUS = ((SourceTypeBinding) packageInfo).scope.compilationUnitScope();
-						boolean current = pkgCUS.connectingHierarchy;
-						pkgCUS.connectingHierarchy = true;
-						try {
-				packageInfo.getAnnotationTagBits();
-						} finally {
-							pkgCUS.connectingHierarchy = current;
-						}
-					} else {
+				if (packageInfo instanceof SourceTypeBinding
+						&& (packageInfo.tagBits & TagBits.EndHierarchyCheck) == 0) {
+					CompilationUnitScope pkgCUS = ((SourceTypeBinding) packageInfo).scope.compilationUnitScope();
+					boolean current = pkgCUS.connectingHierarchy;
+					pkgCUS.connectingHierarchy = true;
+					try {
 						packageInfo.getAnnotationTagBits();
+					} finally {
+						pkgCUS.connectingHierarchy = current;
 					}
+				} else {
+					packageInfo.getAnnotationTagBits();
+				}
 			}
 		}
 	}
 	this.nullnessDefaultInitialized = 1;
-	boolean usesNullTypeAnnotations = this.scope.environment().usesNullTypeAnnotations();

-	if (usesNullTypeAnnotations) {

-		if (this.defaultNullness != 0) {
-			if (isPackageInfo) {
-				pkg.defaultNullness = this.defaultNullness;
+	if (this.defaultNullness != 0) {
+		TypeDeclaration typeDecl = this.scope.referenceContext;
+		if (isPackageInfo) {
+			if (pkg.enclosingModule.getDefaultNullness() == this.defaultNullness) {
+				this.scope.problemReporter().nullDefaultAnnotationIsRedundant(typeDecl, typeDecl.annotations, pkg.enclosingModule);
 			} else {
-				TypeDeclaration typeDecl = this.scope.referenceContext;
-				checkRedundantNullnessDefaultRecurse(typeDecl, typeDecl.annotations, this.defaultNullness, true);

+				pkg.setDefaultNullness(this.defaultNullness);
 			}
-		} else if (isPackageInfo || (isInDefaultPkg && !(this instanceof NestedTypeBinding))) {
-			this.scope.problemReporter().missingNonNullByDefaultAnnotation(this.scope.referenceContext);
-			if (!isInDefaultPkg)
-				pkg.defaultNullness = NULL_UNSPECIFIED_BY_DEFAULT;
-		}
-	} else {
-		// transfer nullness info from tagBits to this.defaultNullness

-		long annotationTagBits = this.tagBits;

-		int newDefaultNullness = NO_NULL_DEFAULT;
-		if ((annotationTagBits & TagBits.AnnotationNullUnspecifiedByDefault) != 0) {

-			newDefaultNullness = NULL_UNSPECIFIED_BY_DEFAULT;
-		} else if ((annotationTagBits & TagBits.AnnotationNonNullByDefault) != 0) {

-			newDefaultNullness = NONNULL_BY_DEFAULT;

-		} else if (this.defaultNullness != 0) {

-			 // NNBD with argument while NN & NU are SE5 annotations, revert to old default & encoding.

-			if (this.defaultNullness == NULL_UNSPECIFIED_BY_DEFAULT) {

-				annotationTagBits = TagBits.AnnotationNullUnspecifiedByDefault;

-				newDefaultNullness = NULL_UNSPECIFIED_BY_DEFAULT;

-			} else {

-				annotationTagBits = TagBits.AnnotationNonNullByDefault;

-			newDefaultNullness = NONNULL_BY_DEFAULT;
-			}

-		}

-		if (newDefaultNullness != NO_NULL_DEFAULT) {
-			if (isPackageInfo) {
-				pkg.defaultNullness = newDefaultNullness;
-			} else {
-				this.defaultNullness = newDefaultNullness;
-				TypeDeclaration typeDecl = this.scope.referenceContext;
-				long nullDefaultBits = annotationTagBits & (TagBits.AnnotationNullUnspecifiedByDefault|TagBits.AnnotationNonNullByDefault);
-				checkRedundantNullnessDefaultRecurse(typeDecl, typeDecl.annotations, nullDefaultBits, false);
+		} else {
+			Binding target = this.scope.parent.checkRedundantDefaultNullness(this.defaultNullness, typeDecl.declarationSourceStart);
+			if(target != null) {
+				this.scope.problemReporter().nullDefaultAnnotationIsRedundant(typeDecl, typeDecl.annotations, target);
 			}
-		} else if (isPackageInfo || (isInDefaultPkg && !(this instanceof NestedTypeBinding))) {
-			this.scope.problemReporter().missingNonNullByDefaultAnnotation(this.scope.referenceContext);
-			if (!isInDefaultPkg)
-				pkg.defaultNullness = NULL_UNSPECIFIED_BY_DEFAULT;
 		}
+	} else if (isPackageInfo || (isInDefaultPkg && !(this instanceof NestedTypeBinding))) {
+		this.scope.problemReporter().missingNonNullByDefaultAnnotation(this.scope.referenceContext);
+		if (!isInDefaultPkg)
+			pkg.setDefaultNullness(NULL_UNSPECIFIED_BY_DEFAULT);
 	}
 	maybeMarkTypeParametersNonNull();
 }
 
 private void maybeMarkTypeParametersNonNull() {
+	if (this.typeVariables != null && this.typeVariables.length > 0) {

 	// when creating type variables we didn't yet have the defaultNullness, fill it in now:
-	if (this.scope == null || !this.scope.hasDefaultNullnessFor(DefaultLocationTypeParameter))
+		if (this.scope == null || !this.scope.hasDefaultNullnessFor(DefaultLocationTypeParameter, this.sourceStart()))

 		return;
-	if (this.typeVariables != null && this.typeVariables.length > 0) {
 		AnnotationBinding[] annots = new AnnotationBinding[]{ this.environment.getNonNullAnnotation() };
 		for (int i = 0; i < this.typeVariables.length; i++) {
 			TypeVariableBinding tvb = this.typeVariables[i];
@@ -2278,101 +2325,21 @@
 	}
 }
 
-/**
- * Recursively check if the given annotations are redundant with equal annotations at an enclosing level.
- * @param location fallback location to report the warning against (if we can't blame a specific annotation)
- * @param annotations search these for the annotation that should be blamed in warning messages
- * @param nullBits when using declaration annotations these are the annotationTagBits, for type annotations the bitvector from {@link Binding#NullnessDefaultMASK}

- * @param useNullTypeAnnotations toggles the interpretation of 'nullBits'

- * 
- * @pre null annotation analysis is enabled
- */
-protected void checkRedundantNullnessDefaultRecurse(ASTNode location, Annotation[] annotations, long nullBits, boolean useNullTypeAnnotations) {

+@Override

+boolean hasNonNullDefaultFor(int location, int sourceStart) {

 	
 	if (!isPrototype()) throw new IllegalStateException();
 	
-	if (this.fPackage.defaultNullness != NO_NULL_DEFAULT) {
-		boolean isRedundant = useNullTypeAnnotations

-				? this.fPackage.defaultNullness == nullBits
-				: (this.fPackage.defaultNullness == NONNULL_BY_DEFAULT
-						&& ((nullBits & TagBits.AnnotationNonNullByDefault) != 0));
-		if (isRedundant) {
-			this.scope.problemReporter().nullDefaultAnnotationIsRedundant(location, annotations, this.fPackage);
-		}
-		return;
+	if (this.scope == null) {
+		return (this.defaultNullness & location) != 0;
 	}
+	Scope skope = this.scope.referenceContext.initializerScope; // for @NNBD on a field
+	if (skope == null)
+		skope = this.scope;
+	return skope.hasDefaultNullnessFor(location, sourceStart);

 }
 
-// return: should caller continue searching?
-protected boolean checkRedundantNullnessDefaultOne(ASTNode location, Annotation[] annotations, long nullBits, boolean useNullTypeAnnotations) {

-	
-	if (!isPrototype()) throw new IllegalStateException();
-	
-	int thisDefault = getNullDefault();
-	if (thisDefault != NO_NULL_DEFAULT) {
-		boolean isRedundant = useNullTypeAnnotations

-				? thisDefault == nullBits
-				: (nullBits & TagBits.AnnotationNonNullByDefault) != 0;
-		if (isRedundant) {
-			this.scope.problemReporter().nullDefaultAnnotationIsRedundant(location, annotations, this);
-		}
-		return false; // different default means inner default is not redundant -> we're done
-	}
-	return true;
-}
-
-boolean hasNonNullDefaultFor(int location, boolean useTypeAnnotations) {
-	
-	if (!isPrototype()) throw new IllegalStateException();
-	
-	// 1.8:
-	if (useTypeAnnotations) {
-		if (this.scope == null) {
-			return (this.defaultNullness & location) != 0;
-		}
-		return this.scope.hasDefaultNullnessFor(location);
-	}
-
-	// find the applicable default inside->out:
-
-	SourceTypeBinding currentType = null;
-	Scope currentScope = this.scope;
-	while (currentScope != null) {
-		switch (currentScope.kind) {
-			case Scope.METHOD_SCOPE:
-				AbstractMethodDeclaration referenceMethod = ((MethodScope)currentScope).referenceMethod();
-				if (referenceMethod != null && referenceMethod.binding != null) {
-					long methodTagBits = referenceMethod.binding.tagBits;
-					if ((methodTagBits & TagBits.AnnotationNonNullByDefault) != 0)
-						return true;
-					if ((methodTagBits & TagBits.AnnotationNullUnspecifiedByDefault) != 0)
-						return false;
-				}
-				break;
-			case Scope.CLASS_SCOPE:
-				currentType = ((ClassScope)currentScope).referenceContext.binding;
-				if (currentType != null) {
-					int foundDefaultNullness = currentType.getNullDefault();
-					if ((foundDefaultNullness & NullnessDefaultMASK) > NULL_UNSPECIFIED_BY_DEFAULT) {
-						return true;
-					}
-					if (foundDefaultNullness != NO_NULL_DEFAULT) {
-						return foundDefaultNullness == NONNULL_BY_DEFAULT;
-					}
-				}
-				break;
-		}
-		currentScope = currentScope.parent;
-	}
-
-	// package
-	if (currentType != null) {
-		return currentType.getPackage().defaultNullness == NONNULL_BY_DEFAULT;
-	}
-
-	return false;
-}
-
+@Override
 public AnnotationHolder retrieveAnnotationHolder(Binding binding, boolean forceInitialization) {
 	if (!isPrototype())
 		return this.prototype.retrieveAnnotationHolder(binding, forceInitialization);
@@ -2381,11 +2348,13 @@
 	return super.retrieveAnnotationHolder(binding, false);
 }
 
+@Override
 public void setContainerAnnotationType(ReferenceBinding value) {
 	if (!isPrototype()) throw new IllegalStateException();
 	this.containerAnnotationType  = value;
 }
 
+@Override
 public void tagAsHavingDefectiveContainerType() {
 	if (!isPrototype()) throw new IllegalStateException();
 	if (this.containerAnnotationType != null && this.containerAnnotationType.isValidBinding())
@@ -2502,26 +2471,29 @@
 
 	return this.scope.referenceContext.sourceStart;
 }
-SimpleLookupTable storedAnnotations(boolean forceInitialize) {
+@Override
+SimpleLookupTable storedAnnotations(boolean forceInitialize, boolean forceStore) {
 	if (!isPrototype())
-		return this.prototype.storedAnnotations(forceInitialize);
+		return this.prototype.storedAnnotations(forceInitialize, forceStore);
 
 	if (forceInitialize && this.storedAnnotations == null && this.scope != null) { // scope null when no annotation cached, and type got processed fully (159631)
 		this.scope.referenceCompilationUnit().compilationResult.hasAnnotations = true;
 		final CompilerOptions globalOptions = this.scope.environment().globalOptions;
-		if (!globalOptions.storeAnnotations)
+		if (!globalOptions.storeAnnotations && !forceStore)
 			return null; // not supported during this compile
 		this.storedAnnotations = new SimpleLookupTable(3);
 	}
 	return this.storedAnnotations;
 }
 
+@Override
 public ReferenceBinding superclass() {
 	if (!isPrototype())
 		return this.superclass = this.prototype.superclass();
 	return this.superclass;
 }
 
+@Override
 public ReferenceBinding[] superInterfaces() {
 	if (!isPrototype())
 		return this.superInterfaces = this.prototype.superInterfaces();
@@ -2593,6 +2565,7 @@
 	}
 	return bindings;
 }
+@Override
 public String toString() {
 	if (this.hasTypeAnnotations()) {
 		return annotatedDebugName();
@@ -2688,6 +2661,7 @@
 	buffer.append("\n\n"); //$NON-NLS-1$
 	return buffer.toString();
 }
+@Override
 public TypeVariableBinding[] typeVariables() {
 	if (!isPrototype())
 		return this.typeVariables = this.prototype.typeVariables();
@@ -2703,20 +2677,22 @@
 		 ((SourceTypeBinding) this.memberTypes[i]).verifyMethods(verifier);
 }
 
-public TypeBinding unannotated() {

-	return this.prototype;

-}

-

-@Override

-public TypeBinding withoutToplevelNullAnnotation() {

-		if (!hasNullTypeAnnotations())
-			return this;
-		AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
-		if (newAnnotations.length > 0)
-			return this.environment.createAnnotatedType(this.prototype, newAnnotations);
+@Override
+public TypeBinding unannotated() {
 	return this.prototype;
 }
 
+@Override
+public TypeBinding withoutToplevelNullAnnotation() {
+	if (!hasNullTypeAnnotations())
+		return this;
+	AnnotationBinding[] newAnnotations = this.environment.filterNullTypeAnnotations(this.typeAnnotations);
+	if (newAnnotations.length > 0)
+		return this.environment.createAnnotatedType(this.prototype, newAnnotations);
+	return this.prototype;
+}
+
+@Override
 public FieldBinding[] unResolvedFields() {
 	if (!isPrototype())
 		return this.prototype.unResolvedFields();
@@ -2741,6 +2717,13 @@
 		if (this.superclass instanceof SourceTypeBinding)  // should always be true because private super type can only be accessed in same CU
 			((SourceTypeBinding) this.superclass).tagIndirectlyAccessibleMembers();
 }
+@Override
+public ModuleBinding module() {
+	if (!isPrototype())
+		return this.prototype.module;
+	return this.module;
+}
+
 //AspectJ Extension
 public void addField(FieldBinding binding) {
    if (fields == null) {
@@ -2774,18 +2757,20 @@
 }
 
 public void rememberTypeHierarchy() {
-  if (originalSuperclass==null) originalSuperclass = superclass;
-  if (originalSuperInterfaces==null) {
-    originalSuperInterfaces = new ReferenceBinding[superInterfaces.length];
-    System.arraycopy(superInterfaces,0,originalSuperInterfaces,0,superInterfaces.length);
+  if (this.originalSuperclass==null) this.originalSuperclass = superclass;
+  if (this.originalSuperInterfaces==null) {
+	  this.originalSuperInterfaces = new ReferenceBinding[superInterfaces.length];
+    System.arraycopy(superInterfaces,0,this.originalSuperInterfaces,0,superInterfaces.length);
   }
 }
 
+@Override
 public MethodBinding[] methods() {
 	   if (memberFinder!=null) return memberFinder.methods(this);
 	   else return methodsBase();
 }
 
+@Override
 public ReferenceBinding getMemberType(char[] typeName) {
 	   ReferenceBinding rb = super.getMemberType(typeName);
 	   if (rb==null && typeFinder!=null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java
new file mode 100644
index 0000000..5f9f815
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java
@@ -0,0 +1,299 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software SE, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
+public class SplitPackageBinding extends PackageBinding {
+	Set<ModuleBinding> declaringModules;
+	public Set<PackageBinding> incarnations;
+	
+	/**
+	 * Combine two potential package bindings, answering either the better of those if the other has a problem,
+	 * or combine both into a split package.
+	 * @param binding one candidate
+	 * @param previous a previous candidate
+	 * @param primaryModule when constructing a new SplitPackageBinding this primary module will define the
+	 * 	focus when later an UnresolvedReferenceBinding is resolved relative to this SplitPackageBinding.
+	 * @return one of: <code>null</code>, a regular PackageBinding or a SplitPackageBinding.
+	 */
+	public static PackageBinding combine(PackageBinding binding, PackageBinding previous, ModuleBinding primaryModule) {
+		// if a candidate has problems, pick the "better" candidate:
+		int prevRank = rank(previous);
+		int curRank = rank(binding);
+		if (prevRank < curRank)
+			return binding;
+		if (prevRank > curRank)
+			return previous;
+		if (previous == null)
+			return null;
+		// both are valid
+		if (previous.subsumes(binding))
+			return previous;
+		if (binding.subsumes(previous))
+			return binding;
+		SplitPackageBinding split = new SplitPackageBinding(previous, primaryModule);
+		split.add(binding);
+		return split;
+	}
+	private static int rank(PackageBinding candidate) {
+		if (candidate == null)
+			return 0;
+		if (candidate == LookupEnvironment.TheNotFoundPackage)
+			return 1;
+		if (!candidate.isValidBinding())
+			return 2;
+		return 3;
+	}
+
+	public SplitPackageBinding(PackageBinding initialBinding, ModuleBinding primaryModule) {
+		super(initialBinding.compoundName, initialBinding.parent, primaryModule.environment, primaryModule);
+		this.declaringModules = new HashSet<>();
+		this.incarnations = new HashSet<>();
+		add(initialBinding);
+	}
+	public void add(PackageBinding packageBinding) {
+		if (packageBinding instanceof SplitPackageBinding) {
+			SplitPackageBinding split = (SplitPackageBinding) packageBinding;
+			this.declaringModules.addAll(split.declaringModules);
+			for(PackageBinding incarnation: split.incarnations) {
+				if(this.incarnations.add(incarnation)) {
+					incarnation.addWrappingSplitPackageBinding(this);
+				}
+			}
+		} else {
+			this.declaringModules.add(packageBinding.enclosingModule);
+			if(this.incarnations.add(packageBinding)) {
+				packageBinding.addWrappingSplitPackageBinding(this);
+			}
+		}
+	}
+	PackageBinding addPackage(PackageBinding element, ModuleBinding module) {
+		return addPackage(element, module, true);
+	}
+	@Override
+	PackageBinding addPackage(PackageBinding element, ModuleBinding module, boolean enrichWithSplitSiblings) {
+		char[] simpleName = element.compoundName[element.compoundName.length-1];
+		// enrich
+		if (enrichWithSplitSiblings)
+			element = combineWithSiblings(element, simpleName, module);
+
+		PackageBinding visible = this.knownPackages.get(simpleName);
+		visible = SplitPackageBinding.combine(element, visible, this.enclosingModule);
+		this.knownPackages.put(simpleName, visible);
+		PackageBinding incarnation = getIncarnation(element.enclosingModule);
+		if (incarnation != null)
+			incarnation.addPackage(element, module, enrichWithSplitSiblings);
+		return element;
+	}
+
+	PackageBinding combineWithSiblings(PackageBinding childPackage, char[] name, ModuleBinding module) {
+		ModuleBinding primaryModule = childPackage != null ? childPackage.enclosingModule : this.enclosingModule;
+		// see if other incarnations contribute to the child package, too:
+		boolean activeSave = primaryModule.isPackageLookupActive;
+		primaryModule.isPackageLookupActive = true;
+		try {
+			for (PackageBinding incarnation :  this.incarnations) {
+				ModuleBinding moduleBinding = incarnation.enclosingModule;
+				if (moduleBinding == module)
+					continue;
+				PackageBinding next = moduleBinding.getVisiblePackage(incarnation, name); // TODO(SHMOD): reduce split-package work during this invocation?
+				childPackage = combine(next, childPackage, primaryModule);
+			}
+			return childPackage;
+		} finally {
+			primaryModule.isPackageLookupActive = activeSave;
+		}
+	}
+	
+	@Override
+	ModuleBinding[] getDeclaringModules() {
+		return this.declaringModules.toArray(new ModuleBinding[this.declaringModules.size()]);
+	}
+
+	@Override
+	PackageBinding getPackage0(char[] name) {
+		PackageBinding knownPackage = super.getPackage0(name);
+		if (knownPackage != null)
+			return knownPackage;
+
+		PackageBinding candidate = null;
+		for (PackageBinding incarnation : this.incarnations) {
+			PackageBinding package0 = incarnation.getPackage0(name);
+			if (package0 == null)
+				return null; // if any incarnation lacks cached info, a full findPackage will be necessary 
+			candidate = combine(package0, candidate, this.enclosingModule);
+		}
+		if (candidate != null)
+			this.knownPackages.put(name, candidate);
+		
+		return candidate;
+	}
+
+	@Override
+	PackageBinding getPackage0Any(char[] name) {
+		PackageBinding knownPackage = super.getPackage0(name);
+		if (knownPackage != null)
+			return knownPackage;
+
+		PackageBinding candidate = null;
+		for (PackageBinding incarnation : this.incarnations) {
+			PackageBinding package0 = incarnation.getPackage0(name);
+			if (package0 == null)
+				continue;
+			candidate = combine(package0, candidate, this.enclosingModule);
+		}
+		// don't cache the result, maybe incomplete
+		return candidate;
+	}
+
+	@Override
+	protected PackageBinding findPackage(char[] name, ModuleBinding module) {
+		Set<PackageBinding> candidates = new HashSet<>();
+		for (ModuleBinding candidateModule : this.declaringModules) {
+			PackageBinding candidate = super.findPackage(name, candidateModule);
+			if (candidate != null
+					&& candidate != LookupEnvironment.TheNotFoundPackage
+					&& ((candidate.tagBits & TagBits.HasMissingType) == 0))
+			{
+				candidates.add(candidate);
+			}
+		}
+		int count = candidates.size();
+		PackageBinding result = null;
+		if (count == 1) {
+			result = candidates.iterator().next();
+		} else if (count > 1) {
+			Iterator<PackageBinding> iterator = candidates.iterator();
+			SplitPackageBinding split = new SplitPackageBinding(iterator.next(), this.enclosingModule);
+			while (iterator.hasNext())
+				split.add(iterator.next());
+			result = split;
+		}
+		if (result == null)
+			addNotFoundPackage(name);
+		else
+			addPackage(result, module);
+		return result;
+	}
+
+	public PackageBinding getIncarnation(ModuleBinding requestedModule) {
+		for (PackageBinding incarnation : this.incarnations) {
+			if (incarnation.enclosingModule == requestedModule)
+				return incarnation;
+		}
+		return null;
+	}
+
+	@Override
+	public boolean subsumes(PackageBinding binding) {
+		if (!CharOperation.equals(this.compoundName, binding.compoundName))
+			return false;
+		if (binding instanceof SplitPackageBinding)
+			return this.declaringModules.containsAll(((SplitPackageBinding) binding).declaringModules);
+		else
+			return this.declaringModules.contains(binding.enclosingModule);
+	}
+
+	@Override
+	ReferenceBinding getType0(char[] name) {
+		ReferenceBinding knownType = super.getType0(name);
+		if (knownType != null)
+			return knownType;
+
+		ReferenceBinding candidate = null;
+		for (PackageBinding incarnation : this.incarnations) {
+			ReferenceBinding next = incarnation.getType0(name);
+			if (next != null) {
+				if (next.isValidBinding()) {
+					if (candidate != null)
+						return null; // unable to disambiguate without a module context
+					candidate = next;
+				}
+			}
+		}
+		if (candidate != null) {
+			addType(candidate);
+		}
+		
+		return candidate;
+	}
+
+	/** Similar to getType0() but now we have a module and can ask the specific incarnation! */
+	ReferenceBinding getType0ForModule(ModuleBinding module, char[] name) {
+		if (this.declaringModules.contains(module))
+			return getIncarnation(module).getType0(name);
+		return null;
+	}
+
+	@Override
+	public ReferenceBinding getType(char[] name, ModuleBinding mod) {
+		ReferenceBinding candidate = null;
+		boolean accessible = false;
+		for (PackageBinding incarnation : this.incarnations) {
+			ReferenceBinding type = incarnation.getType(name, mod);
+			if (type != null) {
+				if (candidate == null || !accessible) {
+					candidate = type;
+					accessible = mod.canAccess(incarnation);
+				} else if (mod.canAccess(incarnation)) {
+					return new ProblemReferenceBinding(type.compoundName, candidate, ProblemReasons.Ambiguous); // TODO(SHMOD) add module information
+				}
+			}
+		}
+		if (candidate != null && !accessible)
+			return new ProblemReferenceBinding(candidate.compoundName, candidate, ProblemReasons.NotAccessible); // TODO(SHMOD) more info
+		// at this point we have only checked unique accessibility of the package, accessibility of the type will be checked by callers
+		return candidate;
+	}
+
+	@Override
+	public boolean isDeclaredIn(ModuleBinding moduleBinding) {
+		return this.declaringModules.contains(moduleBinding);
+	}
+
+	@Override
+	public PackageBinding getVisibleFor(ModuleBinding clientModule) {
+		int visibleCount = 0;
+		PackageBinding unique = null;
+		for (PackageBinding incarnation : this.incarnations) {
+			if (incarnation.hasCompilationUnit(false)) {
+				if (incarnation.enclosingModule == clientModule) {
+					return incarnation; // prefer local package over foreign
+				} else {
+					if (clientModule.canAccess(incarnation)) {
+						if (++visibleCount > 1)
+							return this;
+						unique = incarnation;
+					}
+				}
+			}
+		}
+		return unique;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder buf = new StringBuilder(super.toString());
+		buf.append(" (from "); //$NON-NLS-1$
+		String sep = ""; //$NON-NLS-1$
+		for (ModuleBinding mod : this.declaringModules) {
+			buf.append(sep).append(mod.readableName());
+			sep = ", "; //$NON-NLS-1$
+		}
+		buf.append(")"); //$NON-NLS-1$
+		return buf.toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.java
index e298af8..6005cff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticFactoryMethodBinding.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 GK Software AG.
+ * Copyright (c) 2014, 2017 GK Software AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,15 +35,16 @@
 	
 	/** Apply the given type arguments on the (declaring class of the) actual constructor being represented by this factory method and
 	    if method type arguments is not empty materialize the parameterized generic constructor 
+	 * @param targetType 
 	*/
-	public ParameterizedMethodBinding applyTypeArgumentsOnConstructor(TypeBinding[] typeArguments, TypeBinding[] constructorTypeArguments, boolean inferredWithUncheckedConversion) {
+	public ParameterizedMethodBinding applyTypeArgumentsOnConstructor(TypeBinding[] typeArguments, TypeBinding[] constructorTypeArguments, boolean inferredWithUncheckedConversion, TypeBinding targetType) {
 		ReferenceBinding parameterizedType = typeArguments == null
 				? this.environment.createRawType(this.declaringClass, this.enclosingType)
 				: this.environment.createParameterizedType(this.declaringClass, typeArguments, this.enclosingType);
 		for (MethodBinding parameterizedMethod : parameterizedType.methods()) {
 			if (parameterizedMethod.original() == this.staticFactoryFor)
 				return (constructorTypeArguments.length > 0 || inferredWithUncheckedConversion)
-						? this.environment.createParameterizedGenericMethod(parameterizedMethod, constructorTypeArguments, inferredWithUncheckedConversion, false)
+						? this.environment.createParameterizedGenericMethod(parameterizedMethod, constructorTypeArguments, inferredWithUncheckedConversion, false, targetType)
 						: (ParameterizedMethodBinding) parameterizedMethod;
 			if (parameterizedMethod instanceof ProblemMethodBinding) {
 				MethodBinding closestMatch = ((ProblemMethodBinding)parameterizedMethod).closestMatch;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.java
index b47fb01..61abddf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/SyntheticMethodBinding.java
@@ -1,5 +1,6 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -515,8 +516,12 @@
 		this.targetMethod = accessedMethod;
 		if (isSuperAccess && receiverType.isInterface() && !accessedMethod.isStatic())
 			this.modifiers = ClassFileConstants.AccPrivate | ClassFileConstants.AccSynthetic;
+		else {
+			if (receiverType.isInterface()) // default is not allowed. TODO: do we need a target level check here?
+				this.modifiers = ClassFileConstants.AccPublic | ClassFileConstants.AccStatic | ClassFileConstants.AccSynthetic;
 		else
 			this.modifiers = ClassFileConstants.AccDefault | ClassFileConstants.AccStatic | ClassFileConstants.AccSynthetic;
+		}
 		this.tagBits |= (TagBits.AnnotationResolved | TagBits.DeprecatedAnnotationResolved);
 		SourceTypeBinding declaringSourceType = (SourceTypeBinding) receiverType;
 		SyntheticMethodBinding[] knownAccessMethods = declaringSourceType.syntheticMethods();
@@ -582,9 +587,12 @@
 		return this.purpose == SyntheticMethodBinding.ConstructorAccess;
 	}
 	
+	@Override
 	public LambdaExpression sourceLambda() {
 		return this.lambda;
 	}
+
+
 	public void markNonNull(LookupEnvironment environment) {
 		markNonNull(this, this.purpose, environment);
 	}
@@ -610,7 +618,7 @@
 				}
 				return;
 		}
-	}	
+	}
 	
 	// AspectJ Extension
 	public SyntheticMethodBinding(MethodBinding myBinding) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.java
index 8622506..058ea06 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TagBits.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contributions for
@@ -120,11 +120,12 @@
 	long AnnotationForPackage = ASTNode.Bit44L;
 	long AnnotationForTypeUse = ASTNode.Bit54L;
 	long AnnotationForTypeParameter = ASTNode.Bit55L;
+	long AnnotationForModule = ASTNode.Bit62L;
 	long SE7AnnotationTargetMASK = AnnotationForType | AnnotationForField | AnnotationForMethod
 				| AnnotationForParameter | AnnotationForConstructor | AnnotationForLocalVariable
 				| AnnotationForAnnotationType | AnnotationForPackage;
 	long AnnotationTargetMASK = SE7AnnotationTargetMASK | AnnotationTarget
-				| AnnotationForTypeUse | AnnotationForTypeParameter;
+				| AnnotationForTypeUse | AnnotationForTypeParameter | AnnotationForModule;
 	// 2-bits for retention (should check (tagBits & RetentionMask) == RuntimeRetention
 	long AnnotationSourceRetention = ASTNode.Bit45L;
 	long AnnotationClassRetention = ASTNode.Bit46L;
@@ -145,19 +146,24 @@
 	/** @since 3.8 null annotation for MethodBinding or LocalVariableBinding (argument): */
 	long AnnotationNonNull = ASTNode.Bit57L;
 	/** @since 3.8 null-default annotation for PackageBinding or TypeBinding or MethodBinding: */
+	@Deprecated
 	long AnnotationNonNullByDefault = ASTNode.Bit58L;
 	/** @since 3.8 canceling null-default annotation for PackageBinding or TypeBinding or MethodBinding: */
+	@Deprecated
 	long AnnotationNullUnspecifiedByDefault = ASTNode.Bit59L;
 	/** From Java 8 */
 	long AnnotationFunctionalInterface = ASTNode.Bit60L;
 	/** From Java 8 */
 	long AnnotationRepeatable = ASTNode.Bit61L; // Only for annotation types and since these cannot have constructors, we can overload HasNonPrivateConstructor.
 
+	/** From Java 9 */
+	long AnnotationTerminallyDeprecated = ASTNode.Bit63L;
 
 	long AllStandardAnnotationsMask =
 				  AnnotationTargetMASK
 				| AnnotationRetentionMASK
 				| AnnotationDeprecated
+				| AnnotationTerminallyDeprecated
 				| AnnotationDocumented
 				| AnnotationInherited
 				| AnnotationOverride
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.java
index ebd92cb..e16403f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *      Stephen Herrmann <stephan@cs.tu-berlin.de> -  Contributions for
@@ -30,6 +30,8 @@
  *								Bug 446434 - [1.8][null] Enable interned captures also when analysing null type annotations
  *      Jesper S Moller <jesper@selskabet.org> -  Contributions for
  *								bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
+ *								bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
+ *
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -60,7 +62,9 @@
 	// jsr 308
 	public static final ReferenceBinding TYPE_USE_BINDING = new ReferenceBinding() { /* used for type annotation resolution. */
 		{ this.id = TypeIds.T_undefined; }
+		@Override
 		public int kind() { return Binding.TYPE_USE; }
+		@Override
 		public boolean hasTypeBit(int bit) { return false; }
 	};
 	
@@ -271,6 +275,26 @@
 }
 
 /**
+ * Perform an upwards type projection as per JLS 4.10.5
+ * @param scope Relevant scope for evaluating type projection
+ * @param mentionedTypeVariables Filter for mentioned type variabled
+ * @returns Upwards type projection of 'this', or null if downwards projection is undefined 
+*/
+public TypeBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	return this;
+}
+
+/**
+ * Perform a downwards type projection as per JLS 4.10.5
+ * @param scope Relevant scope for evaluating type projection
+ * @param mentionedTypeVariables Filter for mentioned type variabled
+ * @returns Downwards type projection of 'this', or null if downwards projection is undefined 
+*/
+public TypeBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+	return this;
+}
+
+/**
  * Find supertype which originates from a given well-known type, or null if not found
  * (using id avoids triggering the load of well-known type: 73740)
  * NOTE: only works for erasures of well-known types, as random other types may share
@@ -1408,6 +1432,7 @@
 /* API
  * Answer the receiver's binding type from Binding.BindingID.
  */
+@Override
 public int kind() {
 	return Binding.TYPE;
 }
@@ -1633,7 +1658,7 @@
 	return s.isCompatibleWith(t, scope) && !s.needsUncheckedConversion(t);
 }
 
-public boolean isSubtypeOf(TypeBinding right) {
+public boolean isSubtypeOf(TypeBinding right, boolean simulatingBugJDK8026527) {
 	return isCompatibleWith(right);
 }
 
@@ -1658,7 +1683,7 @@
 }
 /**
  * Call this before descending into type details to prevent infinite recursion.
- * @return true if a recursion has already been started.
+ * @return true if a recursion was not already started.
  */
 public boolean enterRecursiveFunction() {
 	return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.java
index f485927..81e2d67 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeBound.java
@@ -62,8 +62,12 @@
 	private TypeBinding safeType(TypeBinding type) {
 		if (type != null && type.isLocalType()) {
 			MethodBinding enclosingMethod = ((LocalTypeBinding) type.original()).enclosingMethod;
-			if (enclosingMethod != null && CharOperation.prefixEquals(TypeConstants.ANONYMOUS_METHOD, enclosingMethod.selector))
-				return type.superclass(); // don't use local class inside lambda: lambda is copied, type will be re-created and thus is unmatchable
+			if (enclosingMethod != null && CharOperation.prefixEquals(TypeConstants.ANONYMOUS_METHOD, enclosingMethod.selector)) {
+				// don't use local class inside lambda: lambda is copied, type will be re-created and thus is unmatchable
+				if (type.superclass().id == TypeIds.T_JavaLangObject && type.superInterfaces().length > 0)
+					return type.superInterfaces()[0];
+				return type.superclass();
+			}
 		}
 		return type;
 	}
@@ -73,9 +77,13 @@
 	boolean isBound() {
 		return this.right.isProperType(true);
 	}
+	
+	@Override
 	public int hashCode() {
 		return this.left.hashCode() + this.right.hashCode() + this.relation;
 	}
+	
+	@Override
 	public boolean equals(Object obj) {
 		if (obj instanceof TypeBound) {
 			TypeBound other = (TypeBound) obj;
@@ -85,6 +93,7 @@
 	}
 	
 	// debugging:
+	@Override
 	public String toString() {
 		boolean isBound = this.right.isProperType(true);
 		StringBuffer buf = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.java
index b62264a..d8a020f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeConstants.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contributions for
@@ -17,9 +17,11 @@
  *								Bug 427199 - [1.8][resource] avoid resource leak warnings on Streams that have no resource
  *								Bug 425183 - [1.8][inference] make CaptureBinding18 safe
  *								Bug 429958 - [1.8][null] evaluate new DefaultLocation attribute of @NonNullByDefault
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *    Jesper S Moller - Contributions for
  *								Bug 405066 - [1.8][compiler][codegen] Implement code generation infrastructure for JSR335
  *								Bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
+ *								bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *    Andy Clement (GoPivotal, Inc) aclement@gopivotal.com - Contributions for
  *                              Bug 405104 - [1.8][compiler][codegen] Implement support for serializeable lambdas
  *    Ulrich Grave <ulrich.grave@gmx.de> - Contributions for
@@ -27,6 +29,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
 // TODO should rename into TypeNames (once extracted last non name constants)
 public interface TypeConstants {
 
@@ -99,8 +103,12 @@
     char[] ANONYMOUS_METHOD = "lambda$".toCharArray(); //$NON-NLS-1$
     char[] DESERIALIZE_LAMBDA = "$deserializeLambda$".toCharArray(); //$NON-NLS-1$
     char[] LAMBDA_TYPE = "<lambda>".toCharArray(); //$NON-NLS-1$
-    
-	// jsr308
+    char[] UPPER_MODULE = "MODULE".toCharArray(); //$NON-NLS-1$
+
+    // JEP 286
+	char[] VAR = "var".toCharArray(); //$NON-NLS-1$
+
+    // jsr308
 	char[] TYPE_USE_TARGET  = "TYPE_USE".toCharArray(); //$NON-NLS-1$
 	char[] TYPE_PARAMETER_TARGET = "TYPE_PARAMETER".toCharArray(); //$NON-NLS-1$
     
@@ -160,7 +168,10 @@
 	char[][] JAVA_UTIL_COLLECTION = {JAVA, UTIL, "Collection".toCharArray()}; //$NON-NLS-1$
 	char[][] JAVA_UTIL_ITERATOR = {JAVA, UTIL, "Iterator".toCharArray()}; //$NON-NLS-1$
 	char[][] JAVA_UTIL_OBJECTS = {JAVA, UTIL, "Objects".toCharArray()}; //$NON-NLS-1$
+	char[][] JAVA_UTIL_LIST = {JAVA, UTIL, "List".toCharArray()}; //$NON-NLS-1$
 	char[][] JAVA_LANG_DEPRECATED = {JAVA, LANG, "Deprecated".toCharArray()}; //$NON-NLS-1$
+	char[] FOR_REMOVAL = "forRemoval".toCharArray(); //$NON-NLS-1$
+	char[] SINCE = "since".toCharArray(); //$NON-NLS-1$
 	char[][] JAVA_LANG_ANNOTATION_DOCUMENTED = {JAVA, LANG, ANNOTATION, "Documented".toCharArray()}; //$NON-NLS-1$
 	char[][] JAVA_LANG_ANNOTATION_INHERITED = {JAVA, LANG, ANNOTATION, "Inherited".toCharArray()}; //$NON-NLS-1$
 	char[][] JAVA_LANG_ANNOTATION_REPEATABLE = {JAVA, LANG, ANNOTATION, "Repeatable".toCharArray()}; //$NON-NLS-1$
@@ -286,8 +297,12 @@
 		"CharArrayWriter".toCharArray(), //$NON-NLS-1$
 		"StringBufferInputStream".toCharArray(), //$NON-NLS-1$
 	};
-	char[][] RESOURCE_FREE_CLOSEABLE_STREAM = new char[][] {
-		JAVA, UTIL, "stream".toCharArray(), "Stream".toCharArray() //$NON-NLS-1$ //$NON-NLS-2$
+	char[][] JAVA_UTIL_STREAM = { JAVA, UTIL, "stream".toCharArray() }; //$NON-NLS-1$
+	char[][] RESOURCE_FREE_CLOSEABLE_J_U_STREAMS = {
+		"Stream".toCharArray(), //$NON-NLS-1$
+		"DoubleStream".toCharArray(), //$NON-NLS-1$
+		"LongStream".toCharArray(), //$NON-NLS-1$
+		"IntStream".toCharArray() //$NON-NLS-1$
 	};
 	
 	// different assertion utilities:
@@ -315,7 +330,8 @@
 	// ... methods:
 	char[] IS_TRUE = "isTrue".toCharArray(); //$NON-NLS-1$
 	char[] NOT_NULL = "notNull".toCharArray(); //$NON-NLS-1$
-	
+	char[] PROVIDER = "provider".toCharArray(); //$NON-NLS-1$
+
 	char[][] COM_GOOGLE_COMMON_BASE_PRECONDITIONS = new char[][] { 
 			COM, GOOGLE, "common".toCharArray(), "base".toCharArray(), "Preconditions".toCharArray() }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	// ... methods:
@@ -333,6 +349,75 @@
 	char[][] COM_GOOGLE_INJECT_INJECT = new char[][] {COM, GOOGLE, INJECT_PACKAGE, INJECT_TYPE };
 	//    detail for the above:
 	char[] OPTIONAL = "optional".toCharArray(); //$NON-NLS-1$
+	
+	// well-known methods with "dangerous" signatures:
+	char[][] JAVA_UTIL_MAP = new char[][] { JAVA, UTIL, "Map".toCharArray() }; //$NON-NLS-1$
+	char[] GET = "get".toCharArray(); //$NON-NLS-1$
+	char[] REMOVE = "remove".toCharArray(); //$NON-NLS-1$
+	char[] REMOVE_ALL = "removeAll".toCharArray(); //$NON-NLS-1$
+	char[] CONTAINS_ALL = "containsAll".toCharArray(); //$NON-NLS-1$
+	char[] RETAIN_ALL = "retainAll".toCharArray(); //$NON-NLS-1$
+	char[] CONTAINS_KEY = "containsKey".toCharArray(); //$NON-NLS-1$
+	char[] CONTAINS_VALUE = "containsValue".toCharArray(); //$NON-NLS-1$
+	// for Collection.contains:
+	char[] CONTAINS = "contains".toCharArray(); //$NON-NLS-1$
+	// for List.*indexOf:
+	char[] INDEX_OF = "indexOf".toCharArray(); //$NON-NLS-1$
+	char[] LAST_INDEX_OF = "lastIndexOf".toCharArray(); //$NON-NLS-1$
+	enum DangerousMethod {
+		// Collection:
+		Contains, Remove, RemoveAll, ContainsAll, RetainAll,
+		// Map:
+		Get, ContainsKey, ContainsValue,
+		// List:
+		IndexOf, LastIndexOf,
+		// Object:
+		Equals;
+
+		public static DangerousMethod detectSelector(char[] selector) {
+			switch (selector[0]) {
+				case 'r':
+					if (CharOperation.prefixEquals(TypeConstants.REMOVE, selector)) {
+						if (CharOperation.equals(selector, TypeConstants.REMOVE))
+							return DangerousMethod.Remove;
+						else if (CharOperation.equals(selector, TypeConstants.REMOVE_ALL))
+							return DangerousMethod.RemoveAll;
+					} else if (CharOperation.equals(selector, TypeConstants.RETAIN_ALL)) {
+						return DangerousMethod.RetainAll;
+					}
+					break;
+				case 'c':
+					if (CharOperation.prefixEquals(TypeConstants.CONTAINS, selector)) {
+						if (CharOperation.equals(selector, TypeConstants.CONTAINS))
+							return DangerousMethod.Contains;
+						else if (CharOperation.equals(selector, TypeConstants.CONTAINS_ALL))
+							return DangerousMethod.ContainsAll;
+						else if (CharOperation.equals(selector, TypeConstants.CONTAINS_KEY))
+							return DangerousMethod.ContainsKey;
+						else if (CharOperation.equals(selector, TypeConstants.CONTAINS_VALUE))
+							return DangerousMethod.ContainsValue;
+					}
+					break;
+				case 'g':
+					if (CharOperation.equals(selector, TypeConstants.GET))
+						return DangerousMethod.Get;
+					break;
+				case 'i':
+					if (CharOperation.equals(selector, TypeConstants.INDEX_OF))
+						return DangerousMethod.IndexOf;
+					break;
+				case 'l':
+					if (CharOperation.equals(selector, TypeConstants.LAST_INDEX_OF))
+						return DangerousMethod.LastIndexOf;
+					break;
+				case 'e':
+					if (CharOperation.equals(selector, TypeConstants.EQUALS))
+						return DangerousMethod.Equals;
+					break;
+			}
+			return null;
+		}
+	}
 
 	// Spring @Autowired annotation
 	char [] AUTOWIRED = "Autowired".toCharArray();  //$NON-NLS-1$
@@ -391,4 +476,14 @@
 
 	// synthetic package-info name
 	public static final char[] PACKAGE_INFO_NAME = "package-info".toCharArray(); //$NON-NLS-1$
+	public static final char[] MODULE_INFO_NAME = "module-info".toCharArray(); //$NON-NLS-1$
+	public static final String MODULE_INFO_NAME_STRING = "module-info"; //$NON-NLS-1$
+	public static final char[] MODULE_INFO_FILE_NAME = "module-info.java".toCharArray(); //$NON-NLS-1$
+	public static final char[] MODULE_INFO_CLASS_NAME = "module-info.class".toCharArray(); //$NON-NLS-1$
+	public static final String MODULE_INFO_FILE_NAME_STRING = "module-info.java"; //$NON-NLS-1$
+	public static final String MODULE_INFO_CLASS_NAME_STRING = "module-info.class"; //$NON-NLS-1$
+	// java.base module name
+	char[] JAVA_BASE = "java.base".toCharArray(); //$NON-NLS-1$
+	String META_INF_MANIFEST_MF = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
+	String AUTOMATIC_MODULE_NAME = "Automatic-Module-Name";  //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java
index a19f4c9..88d7301 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java
@@ -14,6 +14,7 @@
  *								bug 358903 - Filter practically unimportant resource leak warnings
  *								bug 400421 - [compiler] Null analysis for fields does not take @com.google.inject.Inject into account
  *								bug 382069 - [null] Make the null analysis consider JUnit's assertNotNull similarly to assertions
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *      Jesper S Moller <jesper@selskabet.org> -  Contributions for
  *								Bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
  *     Ulrich Grave <ulrich.grave@gmx.de> - Contributions for
@@ -132,6 +133,11 @@
 
 	// Java 8 - JEP 120
 	final int T_JavaLangAnnotationRepeatable = 90;
+	
+	// classes with methods with "dangerous" signatures:
+	final int T_JavaUtilMap = 91;
+	final int T_JavaUtilList = 92;
+
 	// If you add new type id, make sure to bump up T_LastWellKnownTypeId if there is a cross over.
 	final int T_LastWellKnownTypeId = 128;
 	
@@ -253,8 +259,17 @@
 	final int BitNonNullByDefaultAnnotation = 128;
 	final int BitAnyNullAnnotation = BitNonNullAnnotation | BitNullableAnnotation | BitNonNullByDefaultAnnotation;
 
+	/** Mark subtypes of Map to analyze dangerous get/remove et al. */
+	final int BitMap = 256;
+
+	/** Mark subtypes of Collection to analyze dangerous contains/remove. */
+	final int BitCollection = 512;
+
+	/** Mark subtypes of List to analyze dangerous indexOf. */
+	final int BitList = 1024;
+
 	/**
 	 * Set of type bits that should be inherited by any sub types.
 	 */
-	final int InheritableBits = BitAutoCloseable | BitCloseable | BitUninternedType;
+	final int InheritableBits = BitAutoCloseable | BitCloseable | BitUninternedType | BitMap | BitCollection | BitList ;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.java
index 862c664..ccac9eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeSystem.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2015 IBM Corporation and others.
+ * Copyright (c) 2013, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,27 +65,69 @@
 	
 	public final class HashedParameterizedTypes {
 		
-		private final class InternalParameterizedTypeBinding extends ParameterizedTypeBinding {
-						
-			public InternalParameterizedTypeBinding(ReferenceBinding genericType, TypeBinding[] typeArguments, ReferenceBinding enclosingType, LookupEnvironment environment) {
-				super(genericType, typeArguments, enclosingType, environment);
+		private final class PTBKey extends ReferenceBinding { // extends ReferenceBinding so it can be used as wrapper
+			protected ReferenceBinding type; // must ensure the type is resolved
+			public TypeBinding[] arguments;
+			private ReferenceBinding enclosingType;
+			public PTBKey(ReferenceBinding type, TypeBinding[] arguments, ReferenceBinding enclosingType, LookupEnvironment environment) {
+				this.type = type;
+				this.arguments = arguments;
+				this.enclosingType = enclosingType;
+
+				if(environment != null) {
+					// only add as wrapper when used in put()
+					if (type instanceof UnresolvedReferenceBinding)
+						((UnresolvedReferenceBinding) type).addWrapper(this, environment);
+					if (arguments != null) {
+						for (int i = 0, l = arguments.length; i < l; i++) {
+							if (arguments[i] instanceof UnresolvedReferenceBinding)
+								((UnresolvedReferenceBinding) arguments[i]).addWrapper(this, environment);
+							if (arguments[i].hasNullTypeAnnotations())
+								this.tagBits |= TagBits.HasNullTypeAnnotation;
+						}
+					}
+				}
 			}
-			
+			@Override
+			public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env) {
+				if (this.type == unresolvedType) { //$IDENTITY-COMPARISON$
+					this.type = resolvedType; // cannot be raw since being parameterized below
+					ReferenceBinding enclosing = resolvedType.enclosingType();
+					if (enclosing != null) {
+						this.enclosingType = (ReferenceBinding) env.convertUnresolvedBinaryToRawType(enclosing); // needed when binding unresolved member type
+					}
+				}
+				if (this.arguments != null) {
+					for (int i = 0, l = this.arguments.length; i < l; i++) {
+						if (this.arguments[i] == unresolvedType) { //$IDENTITY-COMPARISON$
+							this.arguments[i] = env.convertUnresolvedBinaryToRawType(resolvedType);
+						}
+					}
+				}
+			}
+			@Override
 			public boolean equals(Object other) {
-				ParameterizedTypeBinding that = (ParameterizedTypeBinding) other;  // homogeneous container. 
+				PTBKey that = (PTBKey) other;  // homogeneous container. 
 				return this.type == that.type && this.enclosingType == that.enclosingType && Util.effectivelyEqual(this.arguments, that.arguments); //$IDENTITY-COMPARISON$
 			}
-			
+			final int hash(TypeBinding b) {
+				if(b instanceof WildcardBinding || b instanceof TypeVariableBinding) {
+					return System.identityHashCode(b);
+				}
+				return b.hashCode();
+			}
+			@Override
 			public int hashCode() {
-				int hashCode = this.type.hashCode() + 13 * (this.enclosingType != null ? this.enclosingType.hashCode() : 0);
+				final int prime=31;
+				int hashCode = 1 + hash(this.type) + (this.enclosingType != null ? hash(this.enclosingType) : 0);
 				for (int i = 0, length = this.arguments == null ? 0 : this.arguments.length; i < length; i++) {
-					hashCode += (i + 1) * this.arguments[i].id * this.arguments[i].hashCode();
+					hashCode = hashCode * prime + hash(this.arguments[i]);
 				}
 				return hashCode;
 			}
 		}
 		
-		HashMap<ParameterizedTypeBinding, ParameterizedTypeBinding []> hashedParameterizedTypes = new HashMap<ParameterizedTypeBinding, ParameterizedTypeBinding[]>(256);
+		HashMap<PTBKey, ParameterizedTypeBinding []> hashedParameterizedTypes = new HashMap<>(256);
 
 		ParameterizedTypeBinding get(ReferenceBinding genericType, TypeBinding[] typeArguments, ReferenceBinding enclosingType, AnnotationBinding[] annotations) {
 			
@@ -97,7 +139,7 @@
 			}
 			ReferenceBinding unannotatedEnclosingType = enclosingType == null ? null : (ReferenceBinding) getUnannotatedType(enclosingType);
 			
-			ParameterizedTypeBinding typeParameterization = new InternalParameterizedTypeBinding(unannotatedGenericType, unannotatedTypeArguments, unannotatedEnclosingType, TypeSystem.this.environment);
+			PTBKey key = new PTBKey(unannotatedGenericType, unannotatedTypeArguments, unannotatedEnclosingType, null);
 			ReferenceBinding genericTypeToMatch = unannotatedGenericType, enclosingTypeToMatch = unannotatedEnclosingType;
 			TypeBinding [] typeArgumentsToMatch = unannotatedTypeArguments;
 			if (TypeSystem.this instanceof AnnotatableTypeSystem) {
@@ -105,7 +147,7 @@
 				enclosingTypeToMatch = enclosingType;
 				typeArgumentsToMatch = typeArguments;
 			}
-			ParameterizedTypeBinding [] parameterizedTypeBindings = this.hashedParameterizedTypes.get(typeParameterization);
+			ParameterizedTypeBinding [] parameterizedTypeBindings = this.hashedParameterizedTypes.get(key);
 			for (int i = 0, length = parameterizedTypeBindings == null ? 0 : parameterizedTypeBindings.length; i < length; i++) {
 				ParameterizedTypeBinding parameterizedType = parameterizedTypeBindings[i];
 				if (parameterizedType.actualType() != genericTypeToMatch) { //$IDENTITY-COMPARISON$
@@ -130,9 +172,9 @@
 			}
 			ReferenceBinding unannotatedEnclosingType = enclosingType == null ? null : (ReferenceBinding) getUnannotatedType(enclosingType);
 			
-			ParameterizedTypeBinding typeParameterization = new InternalParameterizedTypeBinding(unannotatedGenericType, unannotatedTypeArguments, unannotatedEnclosingType, TypeSystem.this.environment);
+			PTBKey key = new PTBKey(unannotatedGenericType, unannotatedTypeArguments, unannotatedEnclosingType, TypeSystem.this.environment);
 			
-			ParameterizedTypeBinding [] parameterizedTypeBindings = this.hashedParameterizedTypes.get(typeParameterization);
+			ParameterizedTypeBinding [] parameterizedTypeBindings = this.hashedParameterizedTypes.get(key);
 			int slot;
 			if (parameterizedTypeBindings == null) {
 				slot = 0;
@@ -142,7 +184,7 @@
 				System.arraycopy(parameterizedTypeBindings, 0, parameterizedTypeBindings = new ParameterizedTypeBinding[slot + 1], 0, slot);
 			}
 			parameterizedTypeBindings[slot] = parameterizedType;
-			this.hashedParameterizedTypes.put(typeParameterization, parameterizedTypeBindings);
+			this.hashedParameterizedTypes.put(key, parameterizedTypeBindings);
 		}
 	}	
 	
@@ -295,6 +337,9 @@
 	   they may and we need to materialize the unannotated versions and work on them.
 	*/ 
 	public RawTypeBinding getRawType(ReferenceBinding genericType, ReferenceBinding enclosingType) {
+		if (genericType.isStatic() && enclosingType != null) {
+			enclosingType = (ReferenceBinding) enclosingType.original();
+		}
 		ReferenceBinding unannotatedGenericType = (ReferenceBinding) getUnannotatedType(genericType);
 		ReferenceBinding unannotatedEnclosingType = enclosingType == null ? null : (ReferenceBinding) getUnannotatedType(enclosingType);
 	
@@ -342,7 +387,9 @@
 		}
 		TypeBinding unannotatedBound = bound == null ? null : getUnannotatedType(bound);
 
-		TypeBinding[] derivedTypes = this.types[unannotatedGenericType.id];  // by construction, cachedInfo != null now.
+		boolean useDerivedTypesOfBound = unannotatedBound instanceof TypeVariableBinding || (unannotatedBound instanceof ParameterizedTypeBinding && !(unannotatedBound instanceof RawTypeBinding));
+		TypeBinding[] derivedTypes = this.types[useDerivedTypesOfBound ? unannotatedBound.id :unannotatedGenericType.id];  // by construction, cachedInfo != null now.
+
 		int i, length = derivedTypes.length;
 		for (i = 0; i < length; i++) {
 			TypeBinding derivedType = derivedTypes[i];
@@ -358,7 +405,7 @@
 		
 		if (i == length) {
 			System.arraycopy(derivedTypes, 0, derivedTypes = new TypeBinding[length * 2], 0, length);
-			this.types[unannotatedGenericType.id] = derivedTypes;
+			this.types[useDerivedTypesOfBound ? unannotatedBound.id :unannotatedGenericType.id] = derivedTypes;
 		}
 		TypeBinding wildcard = derivedTypes[i] = new WildcardBinding(unannotatedGenericType, rank, unannotatedBound, unannotatedOtherBounds, boundKind, this.environment);
 	
@@ -503,6 +550,9 @@
 	
 	public void updateCaches(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType) {
 		final int unresolvedTypeId = unresolvedType.id;
+		if (resolvedType.id != TypeIds.NoId) {
+			unresolvedType.id = resolvedType.id;
+		}
 		if (unresolvedTypeId != TypeIds.NoId) {
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=432977
 			TypeBinding[] derivedTypes = this.types[unresolvedTypeId];
@@ -510,7 +560,8 @@
 				if (derivedTypes[i] == null)
 					break;
 				if (derivedTypes[i] == unresolvedType) { //$IDENTITY-COMPARISON$
-					resolvedType.id = unresolvedTypeId;
+					if(resolvedType.id == TypeIds.NoId)
+						resolvedType.id = unresolvedTypeId;
 					derivedTypes[i] = resolvedType;
 				}
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java
index da03e60..8aa393c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann <stephan@cs.tu-berlin.de> - Contributions for
@@ -34,6 +34,8 @@
  *								Bug 456487 - [1.8][null] @Nullable type variant of @NonNull-constrained type parameter causes grief
  *								Bug 462790 - [null] NPE in Expression.computeConversion()
  *								Bug 456532 - [1.8][null] ReferenceBinding.appendNullAnnotation() includes phantom annotations in error messages
+ *     Jesper S Møller <jesper@selskabet.org>  - Contributions for bug 381345 : [1.8] Take care of the Java 8 major version
+ *								Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.lookup;
 
@@ -141,7 +143,7 @@
 			return BoundCheckStatus.OK;
 
 		BoundCheckStatus nullStatus = BoundCheckStatus.OK;
-		boolean checkNullAnnotations = scope.environment().usesNullTypeAnnotations();
+		boolean checkNullAnnotations = scope.environment().usesNullTypeAnnotations() && (location == null || (location.bits & ASTNode.InsideJavadoc) == 0);
 
 		if (argumentType.kind() == Binding.WILDCARD_TYPE) {
 			WildcardBinding wildcard = (WildcardBinding) argumentType;
@@ -176,6 +178,16 @@
 												// non-object real superclass should have produced a valid 'match' above
 												return BoundCheckStatus.MISMATCH;
 											}
+											// not fully spec-ed in JLS, but based on email communication (2017-09-13):
+											// (a) bound check should apply capture
+											// (b) capture applies glb
+											// (c) and then the glb should be checked for well-formedness (see Scope.isMalformedPair() - this part missing in JLS).
+											// Since we don't do (a), nor (b) for this case, we just directly proceed to (b) here.
+											// For (a) see ParameterizedTypeBinding.boundCheck() - comment added as of this commit
+											// for (b) see CaptureBinding.initializeBounds()  - comment added as of this commit
+											if (Scope.greaterLowerBound(new TypeBinding[] {substitutedSuperType, wildcardBound}, scope, this.environment) == null) {
+												return BoundCheckStatus.MISMATCH;
+											}
 										}
 									}
 								}
@@ -305,6 +317,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#canBeInstantiated()
 	 */
+	@Override
 	public boolean canBeInstantiated() {
 		return false;
 	}
@@ -316,6 +329,7 @@
 	 *   A = F   corresponds to:      F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0))
 	 *   A >> F   corresponds to:   F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2))
 	 */
+	@Override
 	public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint) {
 
 		//	only infer for type params of the generic method
@@ -356,6 +370,7 @@
 	 * p.X<T> { ... } --> Lp/X;:TT;
 	 * p.X { <T> void foo() {...} } --> Lp/X;.foo()V:TT;
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		StringBuffer buffer = new StringBuffer();
 		Binding declaring = this.declaringElement;
@@ -383,6 +398,7 @@
 		buffer.getChars(0, length, uniqueKey, 0);
 		return uniqueKey;
 	}
+	@Override
 	public char[] constantPoolName() { /* java/lang/Object */
 	    if (this.firstBound != null) {
 			return this.firstBound.constantPoolName();
@@ -390,9 +406,11 @@
 	    return this.superclass.constantPoolName(); // java/lang/Object
 	}
 	
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return new TypeVariableBinding(this);
 	}
+	@Override
 	public String annotatedDebugName() {
 		StringBuffer buffer = new StringBuffer(10);
 		buffer.append(super.annotatedDebugName());
@@ -422,11 +440,13 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#debugName()
 	 */
+	@Override
 	public String debugName() {
 		if (this.hasTypeAnnotations())
 			return super.annotatedDebugName();
 	    return new String(this.sourceName);
 	}
+	@Override
 	public TypeBinding erasure() {
 	    if (this.firstBound != null) {
 			return this.firstBound.erasure();
@@ -457,6 +477,7 @@
 	 * T::Ljava/util/Map;:Ljava/io/Serializable;
 	 * T:LY<TT;>
 	 */
+	@Override
 	public char[] genericTypeSignature() {
 	    if (this.genericTypeSignature != null) return this.genericTypeSignature;
 		return this.genericTypeSignature = CharOperation.concat('T', this.sourceName, ';');
@@ -491,6 +512,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean hasTypeBit(int bit) {
 		if (this.typeBits == TypeIds.BitUninitialized) {
 			// initialize from bounds
@@ -518,6 +540,7 @@
 		return false;
 	}
 
+	@Override
 	public boolean isHierarchyConnected() {
 		return (this.modifiers & ExtraCompilerModifiers.AccUnresolved) == 0;
 	}
@@ -548,16 +571,16 @@
 	}
 
 	@Override
-	public boolean isSubtypeOf(TypeBinding other) {
+	public boolean isSubtypeOf(TypeBinding other, boolean simulatingBugJDK8026527) {
 		if (isSubTypeOfRTL(other))
 			return true;
-		if (this.firstBound != null && this.firstBound.isSubtypeOf(other))
+		if (this.firstBound != null && this.firstBound.isSubtypeOf(other, simulatingBugJDK8026527))
 			return true;
-		if (this.superclass != null && this.superclass.isSubtypeOf(other))
+		if (this.superclass != null && this.superclass.isSubtypeOf(other, simulatingBugJDK8026527))
 			return true;
 		if (this.superInterfaces != null)
 			for (int i = 0, l = this.superInterfaces.length; i < l; i++)
-		   		if (this.superInterfaces[i].isSubtypeOf(other))
+		   		if (this.superInterfaces[i].isSubtypeOf(other, false))
 					return true;
 		return other.id == TypeIds.T_JavaLangObject;
 	}
@@ -576,7 +599,21 @@
 	public void exitRecursiveFunction() {
 		this.inRecursiveFunction = false;
 	}
+
+	// to prevent infinite recursion when inspecting recursive generics:
+	boolean inRecursiveProjectionFunction = false;
 	
+	public boolean enterRecursiveProjectionFunction() {
+		if (this.inRecursiveProjectionFunction)
+			return false;
+		this.inRecursiveProjectionFunction = true;
+		return true;
+	}
+	public void exitRecursiveProjectionFunction() {
+		this.inRecursiveProjectionFunction = false;
+	}
+
+	@Override
 	public boolean isProperType(boolean admitCapture18) {
 		// handle recursive calls:
 		if (this.inRecursiveFunction) // be optimistic, since this node is not an inference variable
@@ -598,6 +635,7 @@
 		}
 	}
 
+	@Override
 	TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 		if (this.inRecursiveFunction) return this;
 		this.inRecursiveFunction = true;
@@ -642,6 +680,7 @@
 	/**
 	 * Returns true if the type was declared as a type variable
 	 */
+	@Override
 	public boolean isTypeVariable() {
 	    return true;
 	}
@@ -667,10 +706,12 @@
 //		return this;
 //	}
 
+	@Override
 	public int kind() {
 		return Binding.TYPE_PARAMETER;
 	}
 	
+	@Override
 	public boolean mentionsAny(TypeBinding[] parameters, int idx) {
 		if (this.inRecursiveFunction)
 			return false; // nothing seen
@@ -691,6 +732,7 @@
 		}
 	}
 
+	@Override
 	void collectInferenceVariables(Set<InferenceVariable> variables) {
 		if (this.inRecursiveFunction)
 			return; // nothing seen
@@ -724,7 +766,8 @@
 	/**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#readableName()
      */
-    public char[] readableName() {
+    @Override
+	public char[] readableName() {
         return this.sourceName;
     }
 	ReferenceBinding resolve() {
@@ -784,6 +827,7 @@
 		return this;
 	}
 	
+	@Override
 	public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 		if (getClass() == TypeVariableBinding.class) {
 			// TVB only: if the declaration itself carries type annotations,
@@ -798,13 +842,16 @@
 	/**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#shortReadableName()
      */
-    public char[] shortReadableName() {
+    @Override
+	public char[] shortReadableName() {
         return readableName();
     }
+	@Override
 	public ReferenceBinding superclass() {
 		return this.superclass;
 	}
 	
+	@Override
 	public ReferenceBinding[] superInterfaces() {
 		return this.superInterfaces;
 	}
@@ -812,6 +859,7 @@
 	/**
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		if (this.hasTypeAnnotations())
 			return annotatedDebugName();
@@ -867,6 +915,7 @@
 	    return readableName;
 	}
 
+	@Override
 	protected void appendNullAnnotation(StringBuffer nameBuffer, CompilerOptions options) {
 		int oldSize = nameBuffer.length();
 		super.appendNullAnnotation(nameBuffer, options);
@@ -888,6 +937,7 @@
 		}
 	}
 
+	@Override
 	public TypeBinding unannotated() {
 		return this.hasTypeAnnotations() ? this.environment.getUnannotatedType(this) : this;
 	}
@@ -984,7 +1034,7 @@
 			TypeBinding [] annotatedTypes = getDerivedTypesForDeferredInitialization();
 			for (int i = 0, length = annotatedTypes == null ? 0 : annotatedTypes.length; i < length; i++) {
 				TypeVariableBinding annotatedType = (TypeVariableBinding) annotatedTypes[i];
-					annotatedType.firstBound = firstBound;
+				annotatedType.firstBound = firstBound;
 			}
 		}
 		if (firstBound != null && firstBound.hasNullTypeAnnotations())
@@ -1000,7 +1050,7 @@
 			TypeBinding [] annotatedTypes = getDerivedTypesForDeferredInitialization();
 			for (int i = 0, length = annotatedTypes == null ? 0 : annotatedTypes.length; i < length; i++) {
 				TypeVariableBinding annotatedType = (TypeVariableBinding) annotatedTypes[i];
-					annotatedType.superclass = superclass;
+				annotatedType.superclass = superclass;
 			}
 		}
 		return superclass;
@@ -1014,7 +1064,7 @@
 			TypeBinding [] annotatedTypes = getDerivedTypesForDeferredInitialization();
 			for (int i = 0, length = annotatedTypes == null ? 0 : annotatedTypes.length; i < length; i++) {
 				TypeVariableBinding annotatedType = (TypeVariableBinding) annotatedTypes[i];
-					annotatedType.superInterfaces = superInterfaces;
+				annotatedType.superInterfaces = superInterfaces;
 			}
 		}
 		return superInterfaces;
@@ -1054,6 +1104,7 @@
 		return (currentNullBits & ~declarationNullBits) != 0;
 	}
 
+	@Override
 	public boolean acceptsNonNullDefault() {
 		return false;
 	}
@@ -1081,4 +1132,15 @@
 				&& this.environment.globalOptions.pessimisticNullAnalysisForFreeTypeVariablesEnabled 
 				&& (this.tagBits & TagBits.AnnotationNullMASK) == 0;	
 	}
+
+	@Override
+	public ReferenceBinding upwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		return this;
+	}
+
+	@Override
+	public ReferenceBinding downwardsProjection(Scope scope, TypeBinding[] mentionedTypeVariables) {
+		return this;
+	}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.java
index c7c0e93..a9e5e99 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedAnnotationBinding.java
@@ -19,6 +19,7 @@
 	this.env = env;
 }
 
+@Override
 public void resolve() { // in place resolution.
 	if (this.typeUnresolved) { // the type is resolved when requested
 		boolean wasToleratingMissingTypeProcessingAnnotations = this.env.mayTolerateMissingType;
@@ -32,11 +33,13 @@
 		this.typeUnresolved = false;
 	}
 }
+@Override
 public ReferenceBinding getAnnotationType() {
 	resolve();
 	return this.type;
 }
 
+@Override
 public ElementValuePair[] getElementValuePairs() {
 	if (this.env != null) {
 		if (this.typeUnresolved) {
@@ -55,6 +58,13 @@
 				pair.setValue(((UnresolvedReferenceBinding) value).
 						resolve(this.env, false));
 							// no parameterized types in annotation values
+			} else if (value instanceof Object[]) {
+				Object[] values = (Object[]) value;
+				for (int j = 0; j < values.length; j++) {
+					if (values[j] instanceof UnresolvedReferenceBinding) {
+						values[j] = ((UnresolvedReferenceBinding) values[j]).resolve(this.env, false);
+					}
+				}
 			} // do nothing for UnresolvedAnnotationBinding-s, since their
 			  // content is only accessed through get* methods
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.java
index b25b0e1..b4a6086 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/UnresolvedReferenceBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contributions for
@@ -39,6 +39,7 @@
 	this.prototype = prototype.prototype;
 }
 
+@Override
 public TypeBinding clone(TypeBinding outerType) {
 	if (this.resolvedType != null)
 		return this.resolvedType.clone(outerType);
@@ -62,23 +63,28 @@
 		this.wrappers[length] = wrapper;
 	}
 }
+@Override
 public boolean isUnresolvedType() {
 	return true;
 }
+@Override
 public String debugName() {
 	return toString();
 }
+@Override
 public int depth() {
 	// we don't yet have our enclosing types wired, but we know the nesting depth from our compoundName:
 	// (NOTE: this an upper bound, because class names may contain '$')
 	int last = this.compoundName.length-1;
 	return CharOperation.occurencesOf('$', this.compoundName[last], 1); // leading '$' must be part of the class name, so start at 1.
 }
+@Override
 public boolean hasTypeBit(int bit) {
 	// shouldn't happen since we are not called before analyseCode(), but play safe:
 	return false;
 }
 
+@Override
 public TypeBinding prototype() {
 	return this.prototype;
 }
@@ -99,26 +105,26 @@
 		char[] typeName = this.compoundName[this.compoundName.length - 1];
 		targetType = this.fPackage.getType0(typeName);
 		if (targetType == this) { //$IDENTITY-COMPARISON$
-			targetType = environment.askForType(this.compoundName);
+			if (this.fPackage instanceof SplitPackageBinding) // leverage SplitPackageBinding to avoid duplicate creation of BinaryTypeBinding
+				targetType = environment.askForType(this.fPackage, typeName, this.fPackage.enclosingModule);
+			else
+				targetType = environment.askForType(this.compoundName, this.fPackage.enclosingModule);
 		}
 		if ((targetType == null || targetType == this) && CharOperation.contains('.', typeName)) { //$IDENTITY-COMPARISON$
 			// bug 491354: this complements the NameLookup#seekTypes(..), which performs the same adaptation
-			targetType = environment.askForType(this.fPackage, CharOperation.replaceOnCopy(typeName, '.', '$'));
+			targetType = environment.askForType(this.fPackage, CharOperation.replaceOnCopy(typeName, '.', '$'), this.fPackage.enclosingModule);
 		}
 		if (targetType == null || targetType == this) { // could not resolve any better, error was already reported against it //$IDENTITY-COMPARISON$
 			// report the missing class file first - only if not resolving a previously missing type
 			if ((this.tagBits & TagBits.HasMissingType) == 0 && !environment.mayTolerateMissingType) {
 				environment.problemReporter.isClassPathCorrect(
 					this.compoundName,
-					environment.unitBeingCompleted,
+					environment.root.unitBeingCompleted,
 					environment.missingClassFileLocation);
 			}
 			// create a proxy for the missing BinaryType
 			targetType = environment.createMissingType(null, this.compoundName);
 		}
-		if (targetType.id != TypeIds.NoId) {
-			this.id = targetType.id;
-		}
 		setResolvedType(targetType, environment);
 	}
 	if (convertGenericToRawType) {
@@ -139,18 +145,20 @@
 			this.wrappers[i].swapUnresolved(this, targetType, environment);
 }
 
+@Override
 public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding unannotatedType, LookupEnvironment environment) {
 	if (this.resolvedType != null) return;
 	ReferenceBinding annotatedType = (ReferenceBinding) unannotatedType.clone(null);
 	this.resolvedType = annotatedType;
 	annotatedType.setTypeAnnotations(getTypeAnnotations(), environment.globalOptions.isAnnotationBasedNullAnalysisEnabled);
-	annotatedType.id = unannotatedType.id = this.id;
+
 	environment.updateCaches(this, annotatedType);
 	if (this.wrappers != null)
 		for (int i = 0, l = this.wrappers.length; i < l; i++)
 			this.wrappers[i].swapUnresolved(this, annotatedType, environment);
 }
 
+@Override
 public String toString() {
 	if (this.hasTypeAnnotations())
 		return super.annotatedDebugName() + "(unresolved)"; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.java
index b41eb33..ca6d54f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VariableBinding.java
@@ -23,7 +23,7 @@
 	public int modifiers;
 	public TypeBinding type;
 	public char[] name;
-	public Constant constant; // AspectJ Extension, raise visibility
+	protected Constant constant;
 	public int id; // for flow-analysis (position in flowInfo bit vector)
 	public long tagBits;
 
@@ -40,7 +40,7 @@
 	public Constant constant() {
 		return this.constant;
 	}
-
+	
 	/**
 	 * Call this variant during resolve / analyse, so we can handle the case 
 	 * when a tentative lambda resolve triggers resolving of outside code.
@@ -49,6 +49,7 @@
 		return constant();
 	}
 
+	@Override
 	public abstract AnnotationBinding[] getAnnotations();
 
 	public final boolean isBlankFinal(){
@@ -81,12 +82,14 @@
 				&& (this.type.tagBits & TagBits.AnnotationNullable) != 0);
 	}
 
+	@Override
 	public char[] readableName() {
 		return this.name;
 	}
 	public void setConstant(Constant constant) {
 		this.constant = constant;
 	}
+	@Override
 	public String toString() {
 		StringBuffer output = new StringBuffer(10);
 		ASTNode.printModifiers(this.modifiers, output);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.java
index 71555f2..50a6f0b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/VoidTypeBinding.java
@@ -19,14 +19,17 @@
 		super(TypeIds.T_void, TypeConstants.VOID, new char[] { 'V' });
 	}
 	
+	@Override
 	public TypeBinding clone(TypeBinding enclosingType) {
 		return this;  // enforce solitude.
 	}
 	
+	@Override
 	public void setTypeAnnotations(AnnotationBinding[] annotations, boolean evalNullAnnotations) {
 		return; // reject misguided attempt.
 	}
 	
+	@Override
 	public TypeBinding unannotated() {
 		return this;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.java
index e8182c7..05216ce 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/lookup/WildcardBinding.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
@@ -68,10 +68,12 @@
 		this.typeBits = TypeIds.BitUninitialized;
 	}
 
+	@Override
 	TypeBinding bound() {
 		return this.bound;
 	}
 	
+	@Override
 	int boundKind() {
 		return this.boundKind;
 	}
@@ -209,14 +211,17 @@
 	}
 
 	
+	@Override
 	public ReferenceBinding actualType() {
 		return this.genericType;
 	}
 	
+	@Override
 	TypeBinding[] additionalBounds() {
 		return this.otherBounds;
 	}
 	
+	@Override
 	public int kind() {
 		return this.otherBounds == null ? Binding.WILDCARD_TYPE : Binding.INTERSECTION_TYPE;
 	}
@@ -243,6 +248,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#canBeInstantiated()
 	 */
+	@Override
 	public boolean canBeInstantiated() {
 		// cannot be asked per construction
 		return false;
@@ -251,6 +257,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#collectMissingTypes(java.util.List)
 	 */
+	@Override
 	public List<TypeBinding> collectMissingTypes(List<TypeBinding> missingTypes) {
 		if ((this.tagBits & TagBits.HasMissingType) != 0) {
 			missingTypes = this.bound.collectMissingTypes(missingTypes);
@@ -266,6 +273,7 @@
 	 *   A = F   corresponds to:      F.collectSubstitutes(..., A, ..., CONSTRAINT_EQUAL (0))
 	 *   A >> F   corresponds to:   F.collectSubstitutes(..., A, ..., CONSTRAINT_SUPER (2))
 	 */
+	@Override
 	public void collectSubstitutes(Scope scope, TypeBinding actualType, InferenceContext inferenceContext, int constraint) {
 
 		if ((this.tagBits & TagBits.HasTypeVariable) == 0) return;
@@ -506,6 +514,7 @@
 	 * genericTypeKey {rank}*|+|- [boundKey]
 	 * p.X<T> { X<?> ... } --> Lp/X<TT;>;{0}*
 	 */
+	@Override
 	public char[] computeUniqueKey(boolean isLeaf) {
 		char[] genericTypeKey = this.genericType.computeUniqueKey(false/*not a leaf*/);
 		char[] wildCardKey;
@@ -530,14 +539,17 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#constantPoolName()
 	 */
+	@Override
 	public char[] constantPoolName() {
 		return erasure().constantPoolName();
 	}
 
+	@Override
 	public TypeBinding clone(TypeBinding immaterial) {
 		return new WildcardBinding(this.genericType, this.rank, this.bound, this.otherBounds, this.boundKind, this.environment);
 	}
 	
+	@Override
 	public String annotatedDebugName() {
 		StringBuffer buffer = new StringBuffer(16);
 		AnnotationBinding [] annotations = getTypeAnnotations();
@@ -563,14 +575,13 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#debugName()
 	 */
+	@Override
 	public String debugName() {
 	    return toString();
 	}
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#erasure()
-     */
-    public TypeBinding erasure() {
+    @Override
+	public TypeBinding erasure() {
     	if (this.otherBounds == null) {
 	    	if (this.boundKind == Wildcard.EXTENDS)
 		        return this.bound.erasure();
@@ -585,10 +596,8 @@
     		: this.bound.erasure();
     }
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#signature()
-     */
-    public char[] genericTypeSignature() {
+    @Override
+	public char[] genericTypeSignature() {
         if (this.genericSignature == null) {
             switch (this.boundKind) {
                 case Wildcard.UNBOUND :
@@ -604,10 +613,12 @@
         return this.genericSignature;
     }
 
+	@Override
 	public int hashCode() {
 		return this.genericType.hashCode();
 	}
 
+	@Override
 	public boolean hasTypeBit(int bit) {
 		if (this.typeBits == TypeIds.BitUninitialized) {
 			// initialize from upper bounds
@@ -644,7 +655,8 @@
 	/**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#isSuperclassOf(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding)
      */
-    public boolean isSuperclassOf(ReferenceBinding otherType) {
+    @Override
+	public boolean isSuperclassOf(ReferenceBinding otherType) {
         if (this.boundKind == Wildcard.SUPER) {
             if (this.bound instanceof ReferenceBinding) {
                 return ((ReferenceBinding) this.bound).isSuperclassOf(otherType);
@@ -655,10 +667,8 @@
         return false;
     }
 
-    /**
-     * Returns true if the current type denotes an intersection type: Number & Comparable<?>
-     */
-    public boolean isIntersectionType() {
+    @Override
+	public boolean isIntersectionType() {
     	return this.otherBounds != null;
     }
 
@@ -679,6 +689,7 @@
     	return null;
     }
 
+	@Override
 	public boolean isHierarchyConnected() {
 		return this.superclass != null && this.superInterfaces != null;
 	}
@@ -698,6 +709,7 @@
 		this.inRecursiveFunction = false;
 	}
 
+	@Override
 	public boolean isProperType(boolean admitCapture18) {
 		if (this.inRecursiveFunction)
 			return true;
@@ -717,6 +729,7 @@
 		}
 	}
 
+	@Override
 	TypeBinding substituteInferenceVariable(InferenceVariable var, TypeBinding substituteType) {
 		boolean haveSubstitution = false;
 		TypeBinding currentBound = this.bound;
@@ -748,28 +761,23 @@
 		return this;
 	}
 
-	/**
-	 * Returns true if the type is a wildcard
-	 */
+	@Override
 	public boolean isUnboundWildcard() {
 	    return this.boundKind == Wildcard.UNBOUND;
 	}
 
-    /**
-	 * Returns true if the type is a wildcard
-	 */
+	@Override
 	public boolean isWildcard() {
 	    return true;
 	}
 
+	@Override
 	int rank() {
 		return this.rank;
 	}
 	
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#readableName()
-     */
-    public char[] readableName() {
+    @Override
+	public char[] readableName() {
         switch (this.boundKind) {
             case Wildcard.UNBOUND :
                 return TypeConstants.WILDCARD_NAME;
@@ -790,7 +798,8 @@
         }
     }
 
-    public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames) {
+    @Override
+	public char[] nullAnnotatedReadableName(CompilerOptions options, boolean shortNames) {
     	StringBuffer buffer = new StringBuffer(10);
     	appendNullAnnotation(buffer, options);
         switch (this.boundKind) {
@@ -848,10 +857,8 @@
 		return this;
 	}
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding#shortReadableName()
-     */
-    public char[] shortReadableName() {
+    @Override
+	public char[] shortReadableName() {
         switch (this.boundKind) {
             case Wildcard.UNBOUND :
                 return TypeConstants.WILDCARD_NAME;
@@ -875,7 +882,8 @@
     /**
      * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding#signature()
      */
-    public char[] signature() {
+    @Override
+	public char[] signature() {
      	// should not be called directly on a wildcard; signature should only be asked on
     	// original methods or type erasures (which cannot denote wildcards at first level)
 		if (this.signature == null) {
@@ -889,10 +897,8 @@
 		return this.signature;
     }
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#sourceName()
-     */
-    public char[] sourceName() {
+    @Override
+	public char[] sourceName() {
         switch (this.boundKind) {
             case Wildcard.UNBOUND :
                 return TypeConstants.WILDCARD_NAME;
@@ -903,10 +909,8 @@
         }
     }
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding#superclass()
-     */
-    public ReferenceBinding superclass() {
+    @Override
+	public ReferenceBinding superclass() {
 		if (this.superclass == null) {
 			TypeBinding superType = null;
 			if (this.boundKind == Wildcard.EXTENDS && !this.bound.isInterface()) {
@@ -917,16 +921,14 @@
 			}
 			this.superclass = superType instanceof ReferenceBinding && !superType.isInterface()
 				? (ReferenceBinding) superType
-				: this.environment.getResolvedType(TypeConstants.JAVA_LANG_OBJECT, null);
+				: this.environment.getResolvedJavaBaseType(TypeConstants.JAVA_LANG_OBJECT, null);
 		}
 
 		return this.superclass;
     }
 
-    /* (non-Javadoc)
-     * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding#superInterfaces()
-     */
-    public ReferenceBinding[] superInterfaces() {
+    @Override
+	public ReferenceBinding[] superInterfaces() {
         if (this.superInterfaces == null) {
         	if (typeVariable() != null) {
         		this.superInterfaces = this.typeVariable.superInterfaces();
@@ -954,6 +956,7 @@
         return this.superInterfaces;
     }
 
+	@Override
 	public void swapUnresolved(UnresolvedReferenceBinding unresolvedType, ReferenceBinding resolvedType, LookupEnvironment env) {
 		boolean affected = false;
 		if (this.genericType == unresolvedType) { //$IDENTITY-COMPARISON$
@@ -979,6 +982,7 @@
 	/**
 	 * @see java.lang.Object#toString()
 	 */
+	@Override
 	public String toString() {
 		if (this.hasTypeAnnotations())
 			return annotatedDebugName();
@@ -1009,6 +1013,7 @@
 		return this.typeVariable;
 	}
 
+	@Override
 	public TypeBinding unannotated() {
 		return this.hasTypeAnnotations() ? this.environment.getUnannotatedType(this) : this;
 	}
@@ -1061,6 +1066,7 @@
 		return false;
 	}
 
+	@Override
 	public boolean acceptsNonNullDefault() {
 		return false;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java
index 7919101..d1bada6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java
@@ -1613,6 +1613,7 @@
 		return null;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		int startPos = this.scanner.currentPosition<this.index ? this.scanner.currentPosition : this.index;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.java
index ecfb5c1..4e5d2b0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ConflictedParser.java
@@ -18,4 +18,10 @@
 	   we treat the type annotation as a declarative annotation.
 	*/
 	boolean atConflictScenario(int token);
+	/*
+	 * Return true if the parser is parsing a module declaration. In Java 9, module, requires, exports,
+	 * to, uses, provides, and with are restricted keywords (i.e. they are keywords solely where they
+	 * appear as terminals in ModuleDeclaration, and are identifiers everywhere else)
+	 */
+	boolean isParsingModuleDeclaration();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java
index 31e5776..3837daa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocParser.java
@@ -146,9 +146,7 @@
 		return this.deprecated;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createArgumentReference(char[], java.lang.Object, int)
-	 */
+	@Override
 	protected Object createArgumentReference(char[] name, int dim, boolean isVarargs, Object typeRef, long[] dimPositions, long argNamePos) throws InvalidInputException {
 		try {
 			TypeReference argTypeRef = (TypeReference) typeRef;
@@ -176,9 +174,8 @@
 			throw new InvalidInputException();
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createFieldReference()
-	 */
+
+	@Override
 	protected Object createFieldReference(Object receiver) throws InvalidInputException {
 		try {
 			// Get receiver type
@@ -199,9 +196,8 @@
 			throw new InvalidInputException();
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createMethodReference(java.lang.Object[])
-	 */
+
+	@Override
 	protected Object createMethodReference(Object receiver, List arguments) throws InvalidInputException {
 		try {
 			// Get receiver type
@@ -295,24 +291,19 @@
 			throw new InvalidInputException();
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createReturnStatement()
-	 */
+
+	@Override
 	protected Object createReturnStatement() {
 		return new JavadocReturnStatement(this.scanner.getCurrentTokenStartPosition(),
 					this.scanner.getCurrentTokenEndPosition());
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#parseTagName()
-	 */
+	@Override
 	protected void createTag() {
 		this.tagValue = TAG_OTHERS_VALUE;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#createTypeReference()
-	 */
+	@Override
 	protected Object createTypeReference(int primitiveToken) {
 		TypeReference typeRef = null;
 		int size = this.identifierLengthStack[this.identifierLengthPtr];
@@ -353,6 +344,7 @@
 	/*
 	 * Parse @throws tag declaration and flag missing description if corresponding option is enabled
 	 */
+	@Override
 	protected boolean parseThrows() {
 		boolean valid = super.parseThrows();
 		this.tagWaitingForDescription = valid && this.reportProblems ? TAG_THROWS_VALUE : NO_TAG_VALUE;
@@ -417,6 +409,7 @@
 		}
 	}
 
+	@Override
 	protected boolean parseTag(int previousPosition) throws InvalidInputException {
 
 		// Complain when tag is missing a description
@@ -706,6 +699,7 @@
 	/*
 	 * Parse @param tag declaration and flag missing description if corresponding option is enabled
 	 */
+	@Override
 	protected boolean parseParam() throws InvalidInputException {
 		boolean valid = super.parseParam();
 		this.tagWaitingForDescription = valid && this.reportProblems ? TAG_PARAM_VALUE : NO_TAG_VALUE;
@@ -715,6 +709,7 @@
 	/*
 	 * Push a param name in ast node stack.
 	 */
+	@Override
 	protected boolean pushParamName(boolean isTypeParam) {
 		// Create param reference
 		ASTNode nameRef = null;
@@ -776,6 +771,7 @@
 	/*
 	 * Push a reference statement in ast node stack.
 	 */
+	@Override
 	protected boolean pushSeeRef(Object statement) {
 		if (this.astLengthPtr == -1) { // First push
 			pushOnAstStack(null, true);
@@ -803,9 +799,7 @@
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#pushText(int, int)
-	 */
+	@Override
 	protected void pushText(int start, int end) {
 		// The tag gets its description => clear the flag
 		this.tagWaitingForDescription = NO_TAG_VALUE;
@@ -814,6 +808,7 @@
 	/*
 	 * Push a throws type ref in ast node stack.
 	 */
+	@Override
 	protected boolean pushThrowName(Object typeRef) {
 		if (this.astLengthPtr == -1) { // First push
 			pushOnAstStack(null, true);
@@ -840,9 +835,7 @@
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.AbstractCommentParser#refreshInlineTagPosition(int)
-	 */
+	@Override
 	protected void refreshInlineTagPosition(int previousPosition) {
 
 		// Signal tag missing description if necessary
@@ -855,10 +848,12 @@
 	/*
 	 * Refresh return statement
 	 */
+	@Override
 	protected void refreshReturnStatement() {
 		((JavadocReturnStatement) this.returnStatement).bits &= ~ASTNode.Empty;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append("check javadoc: ").append(this.checkDocComment).append("\n");	//$NON-NLS-1$ //$NON-NLS-2$
@@ -870,6 +865,7 @@
 	/*
 	 * Fill associated comment fields with ast nodes information stored in stack.
 	 */
+	@Override
 	protected void updateDocComment() {
 
 		// Complain when tag is missing a description
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java
index 405dcb7..cb74158 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -148,6 +148,10 @@
 		// since 1.7
 		{},
 		// since 1.8
+		{},
+		// since 9
+		{},
+		// since 10
 		{}
 	};
 	public static final char[][][] INLINE_TAGS = {
@@ -168,6 +172,10 @@
 		// since 1.7
 		{},
 		// since 1.8
+		{},
+		// since 9
+		{},
+		// since 10
 		{}
 	};
 	public final static int INLINE_TAGS_LENGTH = INLINE_TAGS.length;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.java
index 13b0111..768b4fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/NLSTag.java
@@ -24,6 +24,7 @@
 		this.index = index;
 	}
 
+	@Override
 	public String toString() {
 		return "NLSTag(" + this.start + "," + this.end + "," + this.lineNumber + ")"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.java
index 9dd6ce2..3aafa4b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Parser.java
@@ -117,21 +117,21 @@
 	protected int aspectIntPtr;
 	protected int[] aspectIntStack;
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.TheOriginalJDTParserClass#initialize()
-	 */
+	@Override
 	public void initialize() {
 		super.initialize();
 		aspectIntPtr = -1;
 		aspectIntStack = new int[4];
 	}
 
+	@Override
 	public void initialize(boolean initializeNLS) {
 		super.initialize(initializeNLS);
 		aspectIntPtr = -1;
 		aspectIntStack = new int[4];
 	}
 	
+	@Override
 	public void initializeScanner(){
 		this.scanner = new Scanner(
 			false /*comment*/, 
@@ -213,14 +213,17 @@
 
 
 //************** Overriding behavior for standard Java rules
+	@Override
 	protected MethodDeclaration createMethodDeclaration(CompilationResult result) {
 		return declarationFactory.createMethodDeclaration(result);
 	}
 	
+	@Override
 	protected ConstructorDeclaration createConstructorDeclaration(CompilationResult result) {
 		return declarationFactory.createConstructorDeclaration(result);
 	}
 	
+	@Override
 	protected void consumeMethodInvocationName() {
 		super.consumeMethodInvocationName();
 
@@ -230,6 +233,7 @@
 		}
 	}
 	
+	@Override
 	protected void consumeToken(int type) {
 		currentTokenStart = scanner.startPosition;
 		super.consumeToken(type);
@@ -999,1880 +1003,2613 @@
 		optimizedConcatNodeLists();
 	}
 	// This method is part of an automatic generation : do NOT edit-modify
-	// This method is part of an automatic generation : do NOT edit-modify
+	@Override
 	protected void consumeRule(int act) {
 	  switch ( act ) {
 	    case 39 : if (DEBUG) { System.out.println("Type ::= PrimitiveType"); }  //$NON-NLS-1$
-			    consumePrimitiveType(); 			break;
+			    consumePrimitiveType();  
+				break;
 	 
 	    case 53 : if (DEBUG) { System.out.println("ReferenceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
-			    consumeReferenceType(); 			break;
+			    consumeReferenceType();  
+				break;
 	 
 	    case 57 : if (DEBUG) { System.out.println("ClassOrInterface ::= Name"); }  //$NON-NLS-1$
-			    consumeClassOrInterfaceName(); 			break;
+			    consumeClassOrInterfaceName();  
+				break;
 	 
 	    case 58 : if (DEBUG) { System.out.println("ClassOrInterface ::= GenericType DOT Name"); }  //$NON-NLS-1$
-			    consumeClassOrInterface(); 			break;
+			    consumeClassOrInterface();  
+				break;
 	 
 	    case 59 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface TypeArguments"); }  //$NON-NLS-1$
-			    consumeGenericType(); 			break;
+			    consumeGenericType();  
+				break;
 	 
 	    case 60 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface LESS GREATER"); }  //$NON-NLS-1$
-			    consumeGenericTypeWithDiamond(); 			break;
+			    consumeGenericTypeWithDiamond();  
+				break;
 	 
 	    case 61 : if (DEBUG) { System.out.println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); }  //$NON-NLS-1$
-			    consumeArrayTypeWithTypeArgumentsName(); 			break;
+			    consumeArrayTypeWithTypeArgumentsName();  
+				break;
 	 
 	    case 62 : if (DEBUG) { System.out.println("ArrayType ::= PrimitiveType Dims"); }  //$NON-NLS-1$
-			    consumePrimitiveArrayType(); 			break;
+			    consumePrimitiveArrayType();  
+				break;
 	 
 	    case 63 : if (DEBUG) { System.out.println("ArrayType ::= Name Dims"); }  //$NON-NLS-1$
-			    consumeNameArrayType(); 			break;
+			    consumeNameArrayType();  
+				break;
 	 
 	    case 64 : if (DEBUG) { System.out.println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); }  //$NON-NLS-1$
-			    consumeGenericTypeNameArrayType(); 			break;
+			    consumeGenericTypeNameArrayType();  
+				break;
 	 
 	    case 65 : if (DEBUG) { System.out.println("ArrayType ::= GenericType Dims"); }  //$NON-NLS-1$
-			    consumeGenericTypeArrayType(); 			break;
+			    consumeGenericTypeArrayType();  
+				break;
 	 
 	    case 71 : if (DEBUG) { System.out.println("AjName ::= AjSimpleName"); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
 	    case 72 : if (DEBUG) { System.out.println("AjName ::= AjQualifiedName"); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
 	    case 81 : if (DEBUG) { System.out.println("AjQualifiedName ::= AjName DOT SimpleNameOrAj"); }  //$NON-NLS-1$
-			    consumeQualifiedName(); 			break;
+			    consumeQualifiedName();  
+				break;
 	 
 	    case 84 : if (DEBUG) { System.out.println("Name ::= SimpleName"); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
 	    case 89 : if (DEBUG) { System.out.println("UnannotatableName ::= UnannotatableName DOT SimpleName"); }  //$NON-NLS-1$
-			    consumeUnannotatableQualifiedName(); 			break;
+			    consumeUnannotatableQualifiedName();  
+				break;
 	 
 	    case 90 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeQualifiedName(false); 			break;
+			    consumeQualifiedName(false);  
+				break;
 	 
 	    case 91 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT TypeAnnotations JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeQualifiedName(true); 			break;
+			    consumeQualifiedName(true);  
+				break;
 	 
 	    case 92 : if (DEBUG) { System.out.println("TypeAnnotationsopt ::="); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
 	     case 96 : if (DEBUG) { System.out.println("TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation"); }  //$NON-NLS-1$
-			    consumeOneMoreTypeAnnotation(); 			break;
+			    consumeOneMoreTypeAnnotation();  
+				break;
 	 
 	     case 97 : if (DEBUG) { System.out.println("TypeAnnotation ::= NormalTypeAnnotation"); }  //$NON-NLS-1$
-			    consumeTypeAnnotation(); 			break;
+			    consumeTypeAnnotation();  
+				break;
 	 
 	     case 98 : if (DEBUG) { System.out.println("TypeAnnotation ::= MarkerTypeAnnotation"); }  //$NON-NLS-1$
-			    consumeTypeAnnotation(); 			break;
+			    consumeTypeAnnotation();  
+				break;
 	 
 	     case 99 : if (DEBUG) { System.out.println("TypeAnnotation ::= SingleMemberTypeAnnotation"); }  //$NON-NLS-1$
-			    consumeTypeAnnotation(); 			break;
+			    consumeTypeAnnotation();  
+				break;
 	 
 	    case 100 : if (DEBUG) { System.out.println("TypeAnnotationName ::= AT308 UnannotatableName"); }  //$NON-NLS-1$
-			    consumeAnnotationName() ; 			break;
+			    consumeAnnotationName() ;  
+				break;
 	 
 	    case 101 : if (DEBUG) { System.out.println("NormalTypeAnnotation ::= TypeAnnotationName LPAREN..."); }  //$NON-NLS-1$
-			    consumeNormalAnnotation(true) ; 			break;
+			    consumeNormalAnnotation(true) ;  
+				break;
 	 
 	    case 102 : if (DEBUG) { System.out.println("MarkerTypeAnnotation ::= TypeAnnotationName"); }  //$NON-NLS-1$
-			    consumeMarkerAnnotation(true) ; 			break;
+			    consumeMarkerAnnotation(true) ;  
+				break;
 	 
 	    case 103 : if (DEBUG) { System.out.println("SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN"); }  //$NON-NLS-1$
-			    consumeSingleMemberAnnotation(true) ; 			break;
+			    consumeSingleMemberAnnotation(true) ;  
+				break;
 	 
 	    case 104 : if (DEBUG) { System.out.println("RejectTypeAnnotations ::="); }  //$NON-NLS-1$
-			    consumeNonTypeUseName(); 			break;
+			    consumeNonTypeUseName();  
+				break;
 	 
 	    case 105 : if (DEBUG) { System.out.println("PushZeroTypeAnnotations ::="); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
 	    case 106 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= this"); }  //$NON-NLS-1$
-			    consumeExplicitThisParameter(false); 			break;
+			    consumeExplicitThisParameter(false);  
+				break;
 	 
 	    case 107 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= UnannotatableName DOT..."); }  //$NON-NLS-1$
-			    consumeExplicitThisParameter(true); 			break;
+			    consumeExplicitThisParameter(true);  
+				break;
 	 
 	    case 108 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= VariableDeclaratorId"); }  //$NON-NLS-1$
-			    consumeVariableDeclaratorIdParameter(); 			break;
+			    consumeVariableDeclaratorIdParameter();  
+				break;
 	 
 	    case 109 : if (DEBUG) { System.out.println("CompilationUnit ::= EnterCompilationUnit..."); }  //$NON-NLS-1$
-			    consumeCompilationUnit(); 			break;
+			    consumeCompilationUnit();  
+				break;
 	 
 	    case 110 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration"); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnit(); 			break;
+			    consumeInternalCompilationUnit();  
+				break;
 	 
 	    case 111 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnit(); 			break;
+			    consumeInternalCompilationUnit();  
+				break;
 	 
 	    case 112 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnitWithTypes(); 			break;
+			    consumeInternalCompilationUnitWithTypes();  
+				break;
 	 
 	    case 113 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnitWithTypes(); 			break;
+			    consumeInternalCompilationUnitWithTypes();  
+				break;
 	 
 	    case 114 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnit(); 			break;
+			    consumeInternalCompilationUnit();  
+				break;
 	 
 	    case 115 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= TypeDeclarations"); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnitWithTypes(); 			break;
+			    consumeInternalCompilationUnitWithTypes();  
+				break;
 	 
 	    case 116 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); }  //$NON-NLS-1$
-			    consumeInternalCompilationUnitWithTypes(); 			break;
+			    consumeInternalCompilationUnitWithTypes();  
+				break;
 	 
 	    case 117 : if (DEBUG) { System.out.println("InternalCompilationUnit ::="); }  //$NON-NLS-1$
-			    consumeEmptyInternalCompilationUnit(); 			break;
+			    consumeEmptyInternalCompilationUnit();  
+				break;
 	 
-	    case 118 : if (DEBUG) { System.out.println("ReduceImports ::="); }  //$NON-NLS-1$
-			    consumeReduceImports(); 			break;
+	    case 118 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); }  //$NON-NLS-1$
+			    consumeInternalCompilationUnitWithModuleDeclaration();  
+				break;
 	 
-	    case 119 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); }  //$NON-NLS-1$
-			    consumeEnterCompilationUnit(); 			break;
+	    case 119 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ModuleDeclaration"); }  //$NON-NLS-1$
+			    consumeInternalCompilationUnitWithModuleDeclaration();  
+				break;
 	 
-	    case 135 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN"); }  //$NON-NLS-1$
-			    consumeCatchHeader(); 			break;
+	    case 120 : if (DEBUG) { System.out.println("ModuleDeclaration ::= ModuleHeader ModuleBody"); }  //$NON-NLS-1$
+			    consumeModuleDeclaration();  
+				break;
 	 
-	    case 137 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); }  //$NON-NLS-1$
-			    consumeImportDeclarations(); 			break;
+	    case 121 : if (DEBUG) { System.out.println("ModuleHeader ::= Modifiersopt ModuleModifieropt module"); }  //$NON-NLS-1$
+			    consumeModuleHeader();  
+				break;
 	 
-	    case 139 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); }  //$NON-NLS-1$
-			    consumeTypeDeclarations(); 			break;
+	    case 123 : if (DEBUG) { System.out.println("ModuleModifieropt ::= ModuleModifier"); }  //$NON-NLS-1$
+			    consumeModuleModifiers();  
+				break;
 	 
-	    case 140 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); }  //$NON-NLS-1$
-			    consumePackageDeclaration(); 			break;
+	    case 126 : if (DEBUG) { System.out.println("ModuleStatementsOpt ::="); }  //$NON-NLS-1$
+			    consumeEmptyModuleStatementsOpt();  
+				break;
 	 
-	    case 141 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); }  //$NON-NLS-1$
-			    consumePackageDeclarationNameWithModifiers(); 			break;
+	    case 129 : if (DEBUG) { System.out.println("ModuleStatements ::= ModuleStatements ModuleStatement"); }  //$NON-NLS-1$
+			    consumeModuleStatements();  
+				break;
 	 
-	    case 142 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); }  //$NON-NLS-1$
-			    consumePackageDeclarationName(); 			break;
+	    case 135 : if (DEBUG) { System.out.println("RequiresStatement ::= SingleRequiresModuleName SEMICOLON"); }  //$NON-NLS-1$
+			    consumeRequiresStatement();  
+				break;
 	 
-	    case 143 : if (DEBUG) { System.out.println("PackageComment ::="); }  //$NON-NLS-1$
-			    consumePackageComment(); 			break;
+	    case 136 : if (DEBUG) { System.out.println("SingleRequiresModuleName ::= requires..."); }  //$NON-NLS-1$
+			    consumeSingleRequiresModuleName();  
+				break;
 	 
-	    case 148 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration(); 			break;
+	    case 137 : if (DEBUG) { System.out.println("RequiresModifiersopt ::= RequiresModifiers"); }  //$NON-NLS-1$
+			    consumeModifiers();  
+				break;
 	 
-	    case 149 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name..."); }  //$NON-NLS-1$
-			    consumeSingleTypeImportDeclarationName(); 			break;
+	    case 138 : if (DEBUG) { System.out.println("RequiresModifiersopt ::="); }  //$NON-NLS-1$
+			    consumeDefaultModifiers();  
+				break;
 	 
-	    case 150 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration(); 			break;
+	    case 140 : if (DEBUG) { System.out.println("RequiresModifiers ::= RequiresModifiers RequiresModifier"); }  //$NON-NLS-1$
+			    consumeModifiers2();  
+				break;
 	 
-	    case 151 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT..."); }  //$NON-NLS-1$
-			    consumeTypeImportOnDemandDeclarationName(); 			break;
+	    case 143 : if (DEBUG) { System.out.println("ExportsStatement ::= ExportsHeader TargetModuleListopt"); }  //$NON-NLS-1$
+			    consumeExportsStatement();  
+				break;
 	 
-	     case 154 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeEmptyTypeDeclaration(); 			break;
+	    case 144 : if (DEBUG) { System.out.println("ExportsHeader ::= exports SinglePkgName"); }  //$NON-NLS-1$
+			    consumeExportsHeader();  
+				break;
 	 
-	    case 158 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); }  //$NON-NLS-1$
-			    consumeModifiers2(); 			break;
+	    case 146 : if (DEBUG) { System.out.println("TargetModuleListopt ::= to TargetModuleNameList"); }  //$NON-NLS-1$
+			    consumeTargetModuleList();  
+				break;
 	 
-	    case 171 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); }  //$NON-NLS-1$
-			    consumeAnnotationAsModifier(); 			break;
+	    case 147 : if (DEBUG) { System.out.println("TargetModuleName ::= UnannotatableName"); }  //$NON-NLS-1$
+			    consumeSingleTargetModuleName();  
+				break;
 	 
-	    case 184 : if (DEBUG) { System.out.println("AspectDeclaration ::= AspectHeader AspectBody"); }  //$NON-NLS-1$
-			    consumeAspectDeclaration(); 			break;
+	    case 149 : if (DEBUG) { System.out.println("TargetModuleNameList ::= TargetModuleNameList COMMA..."); }  //$NON-NLS-1$
+			    consumeTargetModuleNameList();  
+				break;
 	 
-	    case 185 : if (DEBUG) { System.out.println("AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt"); }  //$NON-NLS-1$
-			    consumeAspectHeader(); 			break;
+	    case 150 : if (DEBUG) { System.out.println("SinglePkgName ::= UnannotatableName"); }  //$NON-NLS-1$
+			    consumeSinglePkgName();  
+				break;
 	 
-	    case 188 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName1 TypeParameters"); }  //$NON-NLS-1$
-			    consumeAspectHeaderNameWithTypeParameters(false); 			break;
+	    case 151 : if (DEBUG) { System.out.println("OpensStatement ::= OpensHeader TargetModuleListopt..."); }  //$NON-NLS-1$
+			    consumeOpensStatement();  
+				break;
 	 
-	    case 189 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName2 TypeParameters"); }  //$NON-NLS-1$
-			    consumeAspectHeaderNameWithTypeParameters(true); 			break;
+	    case 152 : if (DEBUG) { System.out.println("OpensHeader ::= opens SinglePkgName"); }  //$NON-NLS-1$
+			    consumeOpensHeader();  
+				break;
 	 
-	    case 190 : if (DEBUG) { System.out.println("AspectHeaderName1 ::= Modifiersopt aspect Identifier"); }  //$NON-NLS-1$
-			    consumeAspectHeaderName(false); 			break;
+	    case 153 : if (DEBUG) { System.out.println("UsesStatement ::= UsesHeader SEMICOLON"); }  //$NON-NLS-1$
+			    consumeUsesStatement();  
+				break;
 	 
-	    case 191 : if (DEBUG) { System.out.println("AspectHeaderName2 ::= Modifiersopt privileged..."); }  //$NON-NLS-1$
-			    consumeAspectHeaderName(true); 			break;
+	    case 154 : if (DEBUG) { System.out.println("UsesHeader ::= uses Name"); }  //$NON-NLS-1$
+			    consumeUsesHeader();  
+				break;
 	 
-	    case 193 : if (DEBUG) { System.out.println("AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens"); }  //$NON-NLS-1$
-			    consumeAspectHeaderRest(); 			break;
+	    case 155 : if (DEBUG) { System.out.println("ProvidesStatement ::= ProvidesInterface WithClause..."); }  //$NON-NLS-1$
+			    consumeProvidesStatement();  
+				break;
 	 
-	    case 194 : if (DEBUG) { System.out.println("AspectHeaderRestStart ::= Identifier"); }  //$NON-NLS-1$
-			    consumePseudoTokenIdentifier(); 			break;
+	    case 156 : if (DEBUG) { System.out.println("ProvidesInterface ::= provides Name"); }  //$NON-NLS-1$
+			    consumeProvidesInterface();  
+				break;
 	 
-	    case 197 : if (DEBUG) { System.out.println("AspectBodyDeclarations ::= AspectBodyDeclarations..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarations(); 			break;
+	    case 157 : if (DEBUG) { System.out.println("ServiceImplName ::= Name"); }  //$NON-NLS-1$
+			    consumeSingleServiceImplName();  
+				break;
 	 
-	    case 198 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyClassBodyDeclarationsopt(); 			break;
+	    case 159 : if (DEBUG) { System.out.println("ServiceImplNameList ::= ServiceImplNameList COMMA..."); }  //$NON-NLS-1$
+			    consumeServiceImplNameList();  
+				break;
 	 
-	    case 199 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarationsopt(); 			break;
+	    case 160 : if (DEBUG) { System.out.println("WithClause ::= with ServiceImplNameList"); }  //$NON-NLS-1$
+			    consumeWithClause();  
+				break;
 	 
-	    case 200 : if (DEBUG) { System.out.println("AspectBodyDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarationInAspect(); 			break;
+	    case 161 : if (DEBUG) { System.out.println("ReduceImports ::="); }  //$NON-NLS-1$
+			    consumeReduceImports();  
+				break;
 	 
-	    case 204 : if (DEBUG) { System.out.println("ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod"); }  //$NON-NLS-1$
-			    consumeClassBodyDeclaration(); 			break;
+	    case 162 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); }  //$NON-NLS-1$
+			    consumeEnterCompilationUnit();  
+				break;
 	 
-	    case 214 : if (DEBUG) { System.out.println("ClassMemberDeclarationNoAroundMethod ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeEmptyTypeDeclaration(); 			break;
+	    case 184 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN"); }  //$NON-NLS-1$
+			    consumeCatchHeader();  
+				break;
+	 
+	    case 186 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); }  //$NON-NLS-1$
+			    consumeImportDeclarations();  
+				break;
+	 
+	    case 188 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); }  //$NON-NLS-1$
+			    consumeTypeDeclarations();  
+				break;
+	 
+	    case 189 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); }  //$NON-NLS-1$
+			    consumePackageDeclaration();  
+				break;
+	 
+	    case 190 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); }  //$NON-NLS-1$
+			    consumePackageDeclarationNameWithModifiers();  
+				break;
+	 
+	    case 191 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); }  //$NON-NLS-1$
+			    consumePackageDeclarationName();  
+				break;
+	 
+	    case 192 : if (DEBUG) { System.out.println("PackageComment ::="); }  //$NON-NLS-1$
+			    consumePackageComment();  
+				break;
+	 
+	    case 197 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
+	 
+	    case 198 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name..."); }  //$NON-NLS-1$
+			    consumeSingleTypeImportDeclarationName();  
+				break;
+	 
+	    case 199 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
+	 
+	    case 200 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT..."); }  //$NON-NLS-1$
+			    consumeTypeImportOnDemandDeclarationName();  
+				break;
+	 
+	     case 203 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeEmptyTypeDeclaration();  
+				break;
+	 
+	    case 207 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); }  //$NON-NLS-1$
+			    consumeModifiers2();  
+				break;
+	 
+	    case 220 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); }  //$NON-NLS-1$
+			    consumeAnnotationAsModifier();  
+				break;
+	 
+	    case 233 : if (DEBUG) { System.out.println("AspectDeclaration ::= AspectHeader AspectBody"); }  //$NON-NLS-1$
+			    consumeAspectDeclaration();  
+				break;
+	 
+	    case 234 : if (DEBUG) { System.out.println("AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt"); }  //$NON-NLS-1$
+			    consumeAspectHeader();  
+				break;
+	 
+	    case 237 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName1 TypeParameters"); }  //$NON-NLS-1$
+			    consumeAspectHeaderNameWithTypeParameters(false);  
+				break;
+	 
+	    case 238 : if (DEBUG) { System.out.println("AspectHeaderName ::= AspectHeaderName2 TypeParameters"); }  //$NON-NLS-1$
+			    consumeAspectHeaderNameWithTypeParameters(true);  
+				break;
+	 
+	    case 239 : if (DEBUG) { System.out.println("AspectHeaderName1 ::= Modifiersopt aspect Identifier"); }  //$NON-NLS-1$
+			    consumeAspectHeaderName(false);  
+				break;
+	 
+	    case 240 : if (DEBUG) { System.out.println("AspectHeaderName2 ::= Modifiersopt privileged..."); }  //$NON-NLS-1$
+			    consumeAspectHeaderName(true);  
+				break;
+	 
+	    case 242 : if (DEBUG) { System.out.println("AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens"); }  //$NON-NLS-1$
+			    consumeAspectHeaderRest();  
+				break;
+	 
+	    case 243 : if (DEBUG) { System.out.println("AspectHeaderRestStart ::= Identifier"); }  //$NON-NLS-1$
+			    consumePseudoTokenIdentifier();  
+				break;
+	 
+	    case 246 : if (DEBUG) { System.out.println("AspectBodyDeclarations ::= AspectBodyDeclarations..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarations();  
+				break;
+	 
+	    case 247 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyClassBodyDeclarationsopt();  
+				break;
+	 
+	    case 248 : if (DEBUG) { System.out.println("AspectBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarationsopt();  
+				break;
+	 
+	    case 249 : if (DEBUG) { System.out.println("AspectBodyDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarationInAspect();  
+				break;
+	 
+	    case 253 : if (DEBUG) { System.out.println("ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod"); }  //$NON-NLS-1$
+			    consumeClassBodyDeclaration();  
+				break;
+	 
+	    case 263 : if (DEBUG) { System.out.println("ClassMemberDeclarationNoAroundMethod ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeEmptyTypeDeclaration();  
+				break;
 
-	    case 216 : if (DEBUG) { System.out.println("MethodDeclarationNoAround ::= MethodHeaderNoAround..."); }  //$NON-NLS-1$
+	    case 265 : if (DEBUG) { System.out.println("MethodDeclarationNoAround ::= MethodHeaderNoAround..."); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
-	  consumeMethodDeclaration(true,false);  			break;
+	 consumeMethodDeclaration(true, false);   
+				break;
 	 
-	    case 217 : if (DEBUG) { System.out.println("AbstractMethodDeclarationNoAround ::=..."); }  //$NON-NLS-1$
+	    case 266 : if (DEBUG) { System.out.println("AbstractMethodDeclarationNoAround ::=..."); }  //$NON-NLS-1$
 			    // set to false to consume a method without body
-	  consumeMethodDeclaration(false,false); 			break;
+	 consumeMethodDeclaration(false, false);  
+				break;
 	 
-	    case 218 : if (DEBUG) { System.out.println("MethodHeaderNoAround ::= MethodHeaderNameNoAround..."); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 267 : if (DEBUG) { System.out.println("MethodHeaderNoAround ::= MethodHeaderNameNoAround..."); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
-	    case 219 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
-			    consumeMethodHeaderNameWithTypeParameters(false); 			break;
+	    case 268 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
+			    consumeMethodHeaderNameWithTypeParameters(false);  
+				break;
 	 
-	    case 220 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderName(false); 			break;
+	    case 269 : if (DEBUG) { System.out.println("MethodHeaderNameNoAround ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderName(false);  
+				break;
 	 
-	    case 221 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
-			    consumeEmptyPointcutDeclaration(); 			break;
+	    case 270 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
+			    consumeEmptyPointcutDeclaration();  
+				break;
 	 
-	    case 222 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
-			    consumePointcutDeclaration(); 			break;
+	    case 271 : if (DEBUG) { System.out.println("PointcutDeclaration ::= PointcutHeader..."); }  //$NON-NLS-1$
+			    consumePointcutDeclaration();  
+				break;
 	 
-	    case 223 : if (DEBUG) { System.out.println("PointcutHeader ::= Modifiersopt pointcut JavaIdentifier"); }  //$NON-NLS-1$
-			    consumePointcutHeader(); 			break;
+	    case 272 : if (DEBUG) { System.out.println("PointcutHeader ::= Modifiersopt pointcut JavaIdentifier"); }  //$NON-NLS-1$
+			    consumePointcutHeader();  
+				break;
 	 
-	    case 226 : if (DEBUG) { System.out.println("AroundDeclaration ::= AroundHeader MethodBody"); }  //$NON-NLS-1$
-			    consumeAroundDeclaration(); 			break;
+	    case 275 : if (DEBUG) { System.out.println("AroundDeclaration ::= AroundHeader MethodBody"); }  //$NON-NLS-1$
+			    consumeAroundDeclaration();  
+				break;
 	 
-	    case 227 : if (DEBUG) { System.out.println("AroundHeader ::= AroundHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
-			    consumeAroundHeader(); 			break;
+	    case 276 : if (DEBUG) { System.out.println("AroundHeader ::= AroundHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
+			    consumeAroundHeader();  
+				break;
 	 
-	    case 228 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt Type around LPAREN"); }  //$NON-NLS-1$
-			    consumeAroundHeaderName(); 			break;
+	    case 277 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt Type around LPAREN"); }  //$NON-NLS-1$
+			    consumeAroundHeaderName();  
+				break;
 	 
-	    case 229 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt around LPAREN"); }  //$NON-NLS-1$
-			    consumeAroundHeaderNameMissingReturnType(); 			break;
+	    case 278 : if (DEBUG) { System.out.println("AroundHeaderName ::= Modifiersopt around LPAREN"); }  //$NON-NLS-1$
+			    consumeAroundHeaderNameMissingReturnType();  
+				break;
 	 
-	    case 230 : if (DEBUG) { System.out.println("BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody"); }  //$NON-NLS-1$
-			    consumeBasicAdviceDeclaration(); 			break;
+	    case 279 : if (DEBUG) { System.out.println("BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody"); }  //$NON-NLS-1$
+			    consumeBasicAdviceDeclaration();  
+				break;
 	 
-	    case 233 : if (DEBUG) { System.out.println("BeforeAdviceHeader ::= BeforeAdviceHeaderName..."); }  //$NON-NLS-1$
-			    consumeBasicAdviceHeader(); 			break;
+	    case 282 : if (DEBUG) { System.out.println("BeforeAdviceHeader ::= BeforeAdviceHeaderName..."); }  //$NON-NLS-1$
+			    consumeBasicAdviceHeader();  
+				break;
 	 
-	    case 234 : if (DEBUG) { System.out.println("AfterAdviceHeader ::= AfterAdviceHeaderName..."); }  //$NON-NLS-1$
-			    consumeBasicAdviceHeader(); 			break;
+	    case 283 : if (DEBUG) { System.out.println("AfterAdviceHeader ::= AfterAdviceHeaderName..."); }  //$NON-NLS-1$
+			    consumeBasicAdviceHeader();  
+				break;
 	 
-	    case 235 : if (DEBUG) { System.out.println("BeforeAdviceHeaderName ::= Modifiersopt before LPAREN"); }  //$NON-NLS-1$
-			    consumeBasicAdviceHeaderName(false); 			break;
+	    case 284 : if (DEBUG) { System.out.println("BeforeAdviceHeaderName ::= Modifiersopt before LPAREN"); }  //$NON-NLS-1$
+			    consumeBasicAdviceHeaderName(false);  
+				break;
 	 
-	    case 236 : if (DEBUG) { System.out.println("AfterAdviceHeaderName ::= Modifiersopt after LPAREN"); }  //$NON-NLS-1$
-			    consumeBasicAdviceHeaderName(true); 			break;
+	    case 285 : if (DEBUG) { System.out.println("AfterAdviceHeaderName ::= Modifiersopt after LPAREN"); }  //$NON-NLS-1$
+			    consumeBasicAdviceHeaderName(true);  
+				break;
 	 
-	    case 237 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN FormalParameter..."); }  //$NON-NLS-1$
-			    consumeExtraParameterWithFormal(); 			break;
+	    case 286 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN FormalParameter..."); }  //$NON-NLS-1$
+			    consumeExtraParameterWithFormal();  
+				break;
 	 
-	    case 238 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN RPAREN"); }  //$NON-NLS-1$
-			    consumeExtraParameterNoFormal(); 			break;
+	    case 287 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier LPAREN RPAREN"); }  //$NON-NLS-1$
+			    consumeExtraParameterNoFormal();  
+				break;
 	 
-	    case 239 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier"); }  //$NON-NLS-1$
-			    consumeExtraParameterNoFormal(); 			break;
+	    case 288 : if (DEBUG) { System.out.println("ExtraParamopt ::= Identifier"); }  //$NON-NLS-1$
+			    consumeExtraParameterNoFormal();  
+				break;
 	 
-	    case 241 : if (DEBUG) { System.out.println("OnType ::= JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); 			break;
+	    case 290 : if (DEBUG) { System.out.println("OnType ::= JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeZeroTypeAnnotations();  
+				break;
 	 
-	    case 242 : if (DEBUG) { System.out.println("OnType ::= OnType DOT JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeZeroTypeAnnotations(); consumeQualifiedName(); 			break;
+	    case 291 : if (DEBUG) { System.out.println("OnType ::= OnType DOT JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeZeroTypeAnnotations(); consumeQualifiedName();  
+				break;
 	 
-	    case 247 : if (DEBUG) { System.out.println("InterTypeMethodDeclaration ::= InterTypeMethodHeader..."); }  //$NON-NLS-1$
+	    case 296 : if (DEBUG) { System.out.println("InterTypeMethodDeclaration ::= InterTypeMethodHeader..."); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
-	  consumeInterTypeMethodDeclaration(true);  			break;
+	  consumeInterTypeMethodDeclaration(true);   
+				break;
 	 
-	    case 248 : if (DEBUG) { System.out.println("InterTypeMethodHeader ::= InterTypeMethodHeaderName..."); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeader(); 			break;
+	    case 297 : if (DEBUG) { System.out.println("InterTypeMethodHeader ::= InterTypeMethodHeaderName..."); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeader();  
+				break;
 	 
-	    case 249 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderName(false,false); 			break;
+	    case 298 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderName(false,false);  
+				break;
 	 
-	    case 250 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("*"); 			break;
+	    case 299 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("*");  
+				break;
 	 
-	    case 251 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("+"); 			break;
+	    case 300 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("+");  
+				break;
 	 
-	    case 252 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderName(false,true); 			break;
+	    case 301 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt Type OnType"); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderName(false,true);  
+				break;
 	 
-	    case 253 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderName(true,false); 			break;
+	    case 302 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderName(true,false);  
+				break;
 	 
-	    case 254 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeInterTypeMethodHeaderName(true,true); 			break;
+	    case 303 : if (DEBUG) { System.out.println("InterTypeMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeInterTypeMethodHeaderName(true,true);  
+				break;
 	 
-	    case 255 : if (DEBUG) { System.out.println("AbstractInterTypeMethodDeclaration ::=..."); }  //$NON-NLS-1$
+	    case 304 : if (DEBUG) { System.out.println("AbstractInterTypeMethodDeclaration ::=..."); }  //$NON-NLS-1$
 			    // set to false to consume a method without body
-	  consumeInterTypeMethodDeclaration(false); 			break;
+	  consumeInterTypeMethodDeclaration(false);  
+				break;
 	 
-	    case 256 : if (DEBUG) { System.out.println("TypeParametersAsReference ::= TypeParameters"); }  //$NON-NLS-1$
-			    convertTypeParametersToSingleTypeReferences(); 			break;
+	    case 305 : if (DEBUG) { System.out.println("TypeParametersAsReference ::= TypeParameters"); }  //$NON-NLS-1$
+			    convertTypeParametersToSingleTypeReferences();  
+				break;
 	 
-	    case 257 : if (DEBUG) { System.out.println("InterTypeConstructorDeclaration ::=..."); }  //$NON-NLS-1$
+	    case 306 : if (DEBUG) { System.out.println("InterTypeConstructorDeclaration ::=..."); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
-	  consumeInterTypeConstructorDeclaration();  			break;
+	  consumeInterTypeConstructorDeclaration();   
+				break;
 	 
-	    case 258 : if (DEBUG) { System.out.println("InterTypeConstructorHeader ::=..."); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeader(); 			break;
+	    case 307 : if (DEBUG) { System.out.println("InterTypeConstructorHeader ::=..."); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeader();  
+				break;
 	 
-	    case 259 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderName(false,false); 			break;
+	    case 308 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderName(false,false);  
+				break;
 	 
-	    case 260 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("*"); 			break;
+	    case 309 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name DOT"); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("*");  
+				break;
 	 
-	    case 261 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("+"); 			break;
+	    case 310 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt Name..."); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("+");  
+				break;
 	 
-	    case 262 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderName(true,false); 			break;
+	    case 311 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderName(true,false);  
+				break;
 	 
-	    case 263 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderName(false,true); 			break;
+	    case 312 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderName(false,true);  
+				break;
 	 
-	    case 264 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeInterTypeConstructorHeaderName(true,true); 			break;
+	    case 313 : if (DEBUG) { System.out.println("InterTypeConstructorHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeInterTypeConstructorHeaderName(true,true);  
+				break;
 	 
-	    case 265 : if (DEBUG) { System.out.println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); }  //$NON-NLS-1$
-			    consumeInterTypeFieldDeclaration(); 			break;
+	    case 314 : if (DEBUG) { System.out.println("InterTypeFieldDeclaration ::= InterTypeFieldHeader..."); }  //$NON-NLS-1$
+			    consumeInterTypeFieldDeclaration();  
+				break;
 	 
-	    case 266 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
-			    consumeInterTypeFieldHeader(false); 			break;
+	    case 315 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
+			    consumeInterTypeFieldHeader(false);  
+				break;
 	 
-	    case 267 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
-			    consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("*"); 			break;
+	    case 316 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType DOT..."); }  //$NON-NLS-1$
+			    consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("*");  
+				break;
 	 
-	    case 268 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS"); }  //$NON-NLS-1$
-			    consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("+"); 			break;
+	    case 317 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS"); }  //$NON-NLS-1$
+			    consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("+");  
+				break;
 	 
-	    case 269 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); }  //$NON-NLS-1$
-			    consumeInterTypeFieldHeader(true); 			break;
+	    case 318 : if (DEBUG) { System.out.println("InterTypeFieldHeader ::= Modifiersopt Type OnType..."); }  //$NON-NLS-1$
+			    consumeInterTypeFieldHeader(true);  
+				break;
 	 
-	    case 270 : if (DEBUG) { System.out.println("InterTypeFieldBody ::="); }  //$NON-NLS-1$
-			    consumeExitITDVariableWithoutInitializer(); 			break;
+	    case 319 : if (DEBUG) { System.out.println("InterTypeFieldBody ::="); }  //$NON-NLS-1$
+			    consumeExitITDVariableWithoutInitializer();  
+				break;
 	 
-	    case 271 : if (DEBUG) { System.out.println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); }  //$NON-NLS-1$
-			    consumeExitITDVariableWithInitializer(); 			break;
+	    case 320 : if (DEBUG) { System.out.println("InterTypeFieldBody ::= EQUAL ForceNoDiet..."); }  //$NON-NLS-1$
+			    consumeExitITDVariableWithInitializer();  
+				break;
 	 
-	    case 273 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); }  //$NON-NLS-1$
-			    consumeDeclareDeclaration(); 			break;
+	    case 322 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareHeader PseudoTokens..."); }  //$NON-NLS-1$
+			    consumeDeclareDeclaration();  
+				break;
 	 
-	    case 274 : if (DEBUG) { System.out.println("DeclareHeader ::= declare Identifier COLON"); }  //$NON-NLS-1$
-			    consumeDeclareHeader(); 			break;
+	    case 323 : if (DEBUG) { System.out.println("DeclareHeader ::= declare Identifier COLON"); }  //$NON-NLS-1$
+			    consumeDeclareHeader();  
+				break;
 	 
-	    case 275 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
-			    consumeDeclareAnnotation(' '); 			break;
+	    case 324 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
+			    consumeDeclareAnnotation(' ');  
+				break;
 	 
-	    case 276 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
-			    consumeDeclareAnnotation('+'); 			break;
+	    case 325 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
+			    consumeDeclareAnnotation('+');  
+				break;
 	 
-	    case 277 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
-			    consumeDeclareAnnotation('-'); 			break;
+	    case 326 : if (DEBUG) { System.out.println("DeclareDeclaration ::= DeclareAnnotationHeader..."); }  //$NON-NLS-1$
+			    consumeDeclareAnnotation('-');  
+				break;
 	 
-	    case 280 : if (DEBUG) { System.out.println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); }  //$NON-NLS-1$
-			    consumeDeclareAnnotationHeader(); 			break;
+	    case 329 : if (DEBUG) { System.out.println("DeclareAnnotationHeader ::= declare AT Identifier COLON"); }  //$NON-NLS-1$
+			    consumeDeclareAnnotationHeader();  
+				break;
 	 
-	    case 283 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); }  //$NON-NLS-1$
-			    consumePseudoTokens(); 			break;
+	    case 332 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens ColonPseudoToken"); }  //$NON-NLS-1$
+			    consumePseudoTokens();  
+				break;
 	 
-	    case 284 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens PseudoToken"); }  //$NON-NLS-1$
-			    consumePseudoTokens(); 			break;
+	    case 333 : if (DEBUG) { System.out.println("PseudoTokens ::= PseudoTokens PseudoToken"); }  //$NON-NLS-1$
+			    consumePseudoTokens();  
+				break;
 	 
-	    case 286 : if (DEBUG) { System.out.println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); }  //$NON-NLS-1$
-			    consumePseudoTokens(); 			break;
+	    case 335 : if (DEBUG) { System.out.println("PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken"); }  //$NON-NLS-1$
+			    consumePseudoTokens();  
+				break;
 	 
-	    case 287 : if (DEBUG) { System.out.println("ColonPseudoToken ::= COLON"); }  //$NON-NLS-1$
-			    consumePseudoToken(":"); 			break;
+	    case 336 : if (DEBUG) { System.out.println("ColonPseudoToken ::= COLON"); }  //$NON-NLS-1$
+			    consumePseudoToken(":");  
+				break;
 	 
-	    case 288 : if (DEBUG) { System.out.println("PseudoToken ::= JavaIdentifier"); }  //$NON-NLS-1$
-			    consumePseudoTokenIdentifier(); 			break;
+	    case 337 : if (DEBUG) { System.out.println("PseudoToken ::= JavaIdentifier"); }  //$NON-NLS-1$
+			    consumePseudoTokenIdentifier();  
+				break;
 	 
-	    case 289 : if (DEBUG) { System.out.println("PseudoToken ::= LPAREN"); }  //$NON-NLS-1$
-			    consumePseudoToken("("); 			break;
+	    case 338 : if (DEBUG) { System.out.println("PseudoToken ::= LPAREN"); }  //$NON-NLS-1$
+			    consumePseudoToken("(");  
+				break;
 	 
-	    case 290 : if (DEBUG) { System.out.println("PseudoToken ::= RPAREN"); }  //$NON-NLS-1$
-			    consumePseudoToken(")"); 			break;
+	    case 339 : if (DEBUG) { System.out.println("PseudoToken ::= RPAREN"); }  //$NON-NLS-1$
+			    consumePseudoToken(")");  
+				break;
 	 
-	    case 291 : if (DEBUG) { System.out.println("PseudoToken ::= DOT"); }  //$NON-NLS-1$
-			    consumePseudoToken("."); 			break;
+	    case 340 : if (DEBUG) { System.out.println("PseudoToken ::= DOT"); }  //$NON-NLS-1$
+			    consumePseudoToken(".");  
+				break;
 	 
-	    case 292 : if (DEBUG) { System.out.println("PseudoToken ::= MULTIPLY"); }  //$NON-NLS-1$
-			    consumePseudoToken("*"); 			break;
+	    case 341 : if (DEBUG) { System.out.println("PseudoToken ::= MULTIPLY"); }  //$NON-NLS-1$
+			    consumePseudoToken("*");  
+				break;
 	 
-	    case 293 : if (DEBUG) { System.out.println("PseudoToken ::= PLUS"); }  //$NON-NLS-1$
-			    consumePseudoToken("+"); 			break;
+	    case 342 : if (DEBUG) { System.out.println("PseudoToken ::= PLUS"); }  //$NON-NLS-1$
+			    consumePseudoToken("+");  
+				break;
 	 
-	    case 294 : if (DEBUG) { System.out.println("PseudoToken ::= EQUAL"); }  //$NON-NLS-1$
-			    consumePseudoToken("="); 			break;
+	    case 343 : if (DEBUG) { System.out.println("PseudoToken ::= EQUAL"); }  //$NON-NLS-1$
+			    consumePseudoToken("=");  
+				break;
 	 
-	    case 295 : if (DEBUG) { System.out.println("PseudoToken ::= AND_AND"); }  //$NON-NLS-1$
-			    consumePseudoToken("&&"); 			break;
+	    case 344 : if (DEBUG) { System.out.println("PseudoToken ::= AND_AND"); }  //$NON-NLS-1$
+			    consumePseudoToken("&&");  
+				break;
 	 
-	    case 296 : if (DEBUG) { System.out.println("PseudoToken ::= OR_OR"); }  //$NON-NLS-1$
-			    consumePseudoToken("||"); 			break;
+	    case 345 : if (DEBUG) { System.out.println("PseudoToken ::= OR_OR"); }  //$NON-NLS-1$
+			    consumePseudoToken("||");  
+				break;
 	 
-	    case 297 : if (DEBUG) { System.out.println("PseudoToken ::= NOT"); }  //$NON-NLS-1$
-			    consumePseudoToken("!"); 			break;
+	    case 346 : if (DEBUG) { System.out.println("PseudoToken ::= NOT"); }  //$NON-NLS-1$
+			    consumePseudoToken("!");  
+				break;
 	 
-	    case 298 : if (DEBUG) { System.out.println("PseudoToken ::= COMMA"); }  //$NON-NLS-1$
-			    consumePseudoToken(","); 			break;
+	    case 347 : if (DEBUG) { System.out.println("PseudoToken ::= COMMA"); }  //$NON-NLS-1$
+			    consumePseudoToken(",");  
+				break;
 	 
-	    case 299 : if (DEBUG) { System.out.println("PseudoToken ::= LBRACKET"); }  //$NON-NLS-1$
-			    consumePseudoToken("["); 			break;
+	    case 348 : if (DEBUG) { System.out.println("PseudoToken ::= LBRACKET"); }  //$NON-NLS-1$
+			    consumePseudoToken("[");  
+				break;
 	 
-	    case 300 : if (DEBUG) { System.out.println("PseudoToken ::= RBRACKET"); }  //$NON-NLS-1$
-			    consumePseudoToken("]"); 			break;
+	    case 349 : if (DEBUG) { System.out.println("PseudoToken ::= RBRACKET"); }  //$NON-NLS-1$
+			    consumePseudoToken("]");  
+				break;
 	 
-	    case 301 : if (DEBUG) { System.out.println("PseudoToken ::= AT"); }  //$NON-NLS-1$
-			    consumePseudoToken("@"); 			break;
+	    case 350 : if (DEBUG) { System.out.println("PseudoToken ::= AT"); }  //$NON-NLS-1$
+			    consumePseudoToken("@");  
+				break;
 	 
-	    case 302 : if (DEBUG) { System.out.println("PseudoToken ::= ELLIPSIS"); }  //$NON-NLS-1$
-			    consumePseudoToken("..."); 			break;
+	    case 351 : if (DEBUG) { System.out.println("PseudoToken ::= ELLIPSIS"); }  //$NON-NLS-1$
+			    consumePseudoToken("...");  
+				break;
 	 
-	    case 303 : if (DEBUG) { System.out.println("PseudoToken ::= QUESTION"); }  //$NON-NLS-1$
-			    consumePseudoToken("?"); 			break;
+	    case 352 : if (DEBUG) { System.out.println("PseudoToken ::= QUESTION"); }  //$NON-NLS-1$
+			    consumePseudoToken("?");  
+				break;
 	 
-	    case 304 : if (DEBUG) { System.out.println("PseudoToken ::= LESS"); }  //$NON-NLS-1$
-			    consumePseudoToken("<"); 			break;
+	    case 353 : if (DEBUG) { System.out.println("PseudoToken ::= LESS"); }  //$NON-NLS-1$
+			    consumePseudoToken("<");  
+				break;
 	 
-	    case 305 : if (DEBUG) { System.out.println("PseudoToken ::= GREATER"); }  //$NON-NLS-1$
-			    consumePseudoToken(">"); 			break;
+	    case 354 : if (DEBUG) { System.out.println("PseudoToken ::= GREATER"); }  //$NON-NLS-1$
+			    consumePseudoToken(">");  
+				break;
 	 
-	    case 306 : if (DEBUG) { System.out.println("PseudoToken ::= RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumePseudoToken(">>"); 			break;
+	    case 355 : if (DEBUG) { System.out.println("PseudoToken ::= RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumePseudoToken(">>");  
+				break;
 	 
-	    case 307 : if (DEBUG) { System.out.println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumePseudoToken(">>>"); 			break;
+	    case 356 : if (DEBUG) { System.out.println("PseudoToken ::= UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumePseudoToken(">>>");  
+				break;
 	 
-	    case 308 : if (DEBUG) { System.out.println("PseudoToken ::= AND"); }  //$NON-NLS-1$
-			    consumePseudoToken("&"); 			break;
+	    case 357 : if (DEBUG) { System.out.println("PseudoToken ::= AND"); }  //$NON-NLS-1$
+			    consumePseudoToken("&");  
+				break;
 	 
-	    case 309 : if (DEBUG) { System.out.println("PseudoToken ::= NOT_EQUAL"); }  //$NON-NLS-1$
-			    consumePseudoToken("!="); 			break;
+	    case 358 : if (DEBUG) { System.out.println("PseudoToken ::= NOT_EQUAL"); }  //$NON-NLS-1$
+			    consumePseudoToken("!=");  
+				break;
 	 
-	    case 310 : if (DEBUG) { System.out.println("PseudoToken ::= PrimitiveType"); }  //$NON-NLS-1$
-			    consumePseudoTokenPrimitiveType(); 			break;
+	    case 359 : if (DEBUG) { System.out.println("PseudoToken ::= PrimitiveType"); }  //$NON-NLS-1$
+			    consumePseudoTokenPrimitiveType();  
+				break;
 	 
-	    case 311 : if (DEBUG) { System.out.println("PseudoToken ::= SimpleModifier"); }  //$NON-NLS-1$
-			    consumePseudoTokenModifier(); 			break;
+	    case 360 : if (DEBUG) { System.out.println("PseudoToken ::= SimpleModifier"); }  //$NON-NLS-1$
+			    consumePseudoTokenModifier();  
+				break;
 	 
-	    case 312 : if (DEBUG) { System.out.println("PseudoToken ::= Literal"); }  //$NON-NLS-1$
-			    consumePseudoTokenLiteral(); 			break;
+	    case 361 : if (DEBUG) { System.out.println("PseudoToken ::= Literal"); }  //$NON-NLS-1$
+			    consumePseudoTokenLiteral();  
+				break;
 	 
-	    case 313 : if (DEBUG) { System.out.println("PseudoToken ::= this"); }  //$NON-NLS-1$
-			    consumePseudoToken("this", 1, true); 			break;
+	    case 362 : if (DEBUG) { System.out.println("PseudoToken ::= this"); }  //$NON-NLS-1$
+			    consumePseudoToken("this", 1, true);  
+				break;
 	 
-	    case 314 : if (DEBUG) { System.out.println("PseudoToken ::= class"); }  //$NON-NLS-1$
-			    consumePseudoToken("class", 1, true); 			break;
+	    case 363 : if (DEBUG) { System.out.println("PseudoToken ::= class"); }  //$NON-NLS-1$
+			    consumePseudoToken("class", 1, true);  
+				break;
 	 
-	    case 315 : if (DEBUG) { System.out.println("PseudoToken ::= super"); }  //$NON-NLS-1$
-			    consumePseudoToken("super", 1, true); 			break;
+	    case 364 : if (DEBUG) { System.out.println("PseudoToken ::= super"); }  //$NON-NLS-1$
+			    consumePseudoToken("super", 1, true);  
+				break;
 	 
-	    case 316 : if (DEBUG) { System.out.println("PseudoToken ::= if LPAREN Expression RPAREN"); }  //$NON-NLS-1$
-			    consumePseudoTokenIf(); 			break;
+	    case 365 : if (DEBUG) { System.out.println("PseudoToken ::= if LPAREN Expression RPAREN"); }  //$NON-NLS-1$
+			    consumePseudoTokenIf();  
+				break;
 	 
-	    case 317 : if (DEBUG) { System.out.println("PseudoToken ::= assert"); }  //$NON-NLS-1$
-			    consumePseudoToken("assert", 1, true); 			break;
+	    case 366 : if (DEBUG) { System.out.println("PseudoToken ::= assert"); }  //$NON-NLS-1$
+			    consumePseudoToken("assert", 1, true);  
+				break;
 	 
-	    case 318 : if (DEBUG) { System.out.println("PseudoToken ::= import"); }  //$NON-NLS-1$
-			    consumePseudoToken("import", 1, true); 			break;
+	    case 367 : if (DEBUG) { System.out.println("PseudoToken ::= import"); }  //$NON-NLS-1$
+			    consumePseudoToken("import", 1, true);  
+				break;
 	 
-	    case 319 : if (DEBUG) { System.out.println("PseudoToken ::= package"); }  //$NON-NLS-1$
-			    consumePseudoToken("package", 1, true); 			break;
+	    case 368 : if (DEBUG) { System.out.println("PseudoToken ::= package"); }  //$NON-NLS-1$
+			    consumePseudoToken("package", 1, true);  
+				break;
 	 
-	    case 320 : if (DEBUG) { System.out.println("PseudoToken ::= throw"); }  //$NON-NLS-1$
-			    consumePseudoToken("throw", 1, true); 			break;
+	    case 369 : if (DEBUG) { System.out.println("PseudoToken ::= throw"); }  //$NON-NLS-1$
+			    consumePseudoToken("throw", 1, true);  
+				break;
 	 
-	    case 321 : if (DEBUG) { System.out.println("PseudoToken ::= new"); }  //$NON-NLS-1$
-			    consumePseudoToken("new", 1, true); 			break;
+	    case 370 : if (DEBUG) { System.out.println("PseudoToken ::= new"); }  //$NON-NLS-1$
+			    consumePseudoToken("new", 1, true);  
+				break;
 	 
-	    case 322 : if (DEBUG) { System.out.println("PseudoToken ::= do"); }  //$NON-NLS-1$
-			    consumePseudoToken("do", 1, true); 			break;
+	    case 371 : if (DEBUG) { System.out.println("PseudoToken ::= do"); }  //$NON-NLS-1$
+			    consumePseudoToken("do", 1, true);  
+				break;
 	 
-	    case 323 : if (DEBUG) { System.out.println("PseudoToken ::= for"); }  //$NON-NLS-1$
-			    consumePseudoToken("for", 1, true); 			break;
+	    case 372 : if (DEBUG) { System.out.println("PseudoToken ::= for"); }  //$NON-NLS-1$
+			    consumePseudoToken("for", 1, true);  
+				break;
 	 
-	    case 324 : if (DEBUG) { System.out.println("PseudoToken ::= switch"); }  //$NON-NLS-1$
-			    consumePseudoToken("switch", 1, true); 			break;
+	    case 373 : if (DEBUG) { System.out.println("PseudoToken ::= switch"); }  //$NON-NLS-1$
+			    consumePseudoToken("switch", 1, true);  
+				break;
 	 
-	    case 325 : if (DEBUG) { System.out.println("PseudoToken ::= try"); }  //$NON-NLS-1$
-			    consumePseudoToken("try", 1, true); 			break;
+	    case 374 : if (DEBUG) { System.out.println("PseudoToken ::= try"); }  //$NON-NLS-1$
+			    consumePseudoToken("try", 1, true);  
+				break;
 	 
-	    case 326 : if (DEBUG) { System.out.println("PseudoToken ::= while"); }  //$NON-NLS-1$
-			    consumePseudoToken("while", 1, true); 			break;
+	    case 375 : if (DEBUG) { System.out.println("PseudoToken ::= while"); }  //$NON-NLS-1$
+			    consumePseudoToken("while", 1, true);  
+				break;
 	 
-	    case 327 : if (DEBUG) { System.out.println("PseudoToken ::= break"); }  //$NON-NLS-1$
-			    consumePseudoToken("break", 1, true); 			break;
+	    case 376 : if (DEBUG) { System.out.println("PseudoToken ::= break"); }  //$NON-NLS-1$
+			    consumePseudoToken("break", 1, true);  
+				break;
 	 
-	    case 328 : if (DEBUG) { System.out.println("PseudoToken ::= continue"); }  //$NON-NLS-1$
-			    consumePseudoToken("continue", 1, true); 			break;
+	    case 377 : if (DEBUG) { System.out.println("PseudoToken ::= continue"); }  //$NON-NLS-1$
+			    consumePseudoToken("continue", 1, true);  
+				break;
 	 
-	    case 329 : if (DEBUG) { System.out.println("PseudoToken ::= return"); }  //$NON-NLS-1$
-			    consumePseudoToken("return", 1, true); 			break;
+	    case 378 : if (DEBUG) { System.out.println("PseudoToken ::= return"); }  //$NON-NLS-1$
+			    consumePseudoToken("return", 1, true);  
+				break;
 	 
-	    case 330 : if (DEBUG) { System.out.println("PseudoToken ::= case"); }  //$NON-NLS-1$
-			    consumePseudoToken("case", 1, true); 			break;
+	    case 379 : if (DEBUG) { System.out.println("PseudoToken ::= case"); }  //$NON-NLS-1$
+			    consumePseudoToken("case", 1, true);  
+				break;
 	 
-	    case 331 : if (DEBUG) { System.out.println("PseudoToken ::= catch"); }  //$NON-NLS-1$
-			    consumePseudoToken("catch", 0, true); 			break;
+	    case 380 : if (DEBUG) { System.out.println("PseudoToken ::= catch"); }  //$NON-NLS-1$
+			    consumePseudoToken("catch", 0, true);  
+				break;
 	 
-	    case 332 : if (DEBUG) { System.out.println("PseudoToken ::= instanceof"); }  //$NON-NLS-1$
-			    consumePseudoToken("instanceof", 0, true); 			break;
+	    case 381 : if (DEBUG) { System.out.println("PseudoToken ::= instanceof"); }  //$NON-NLS-1$
+			    consumePseudoToken("instanceof", 0, true);  
+				break;
 	 
-	    case 333 : if (DEBUG) { System.out.println("PseudoToken ::= else"); }  //$NON-NLS-1$
-			    consumePseudoToken("else", 0, true); 			break;
+	    case 382 : if (DEBUG) { System.out.println("PseudoToken ::= else"); }  //$NON-NLS-1$
+			    consumePseudoToken("else", 0, true);  
+				break;
 	 
-	    case 334 : if (DEBUG) { System.out.println("PseudoToken ::= extends"); }  //$NON-NLS-1$
-			    consumePseudoToken("extends", 0, true); 			break;
+	    case 383 : if (DEBUG) { System.out.println("PseudoToken ::= extends"); }  //$NON-NLS-1$
+			    consumePseudoToken("extends", 0, true);  
+				break;
 	 
-	    case 335 : if (DEBUG) { System.out.println("PseudoToken ::= finally"); }  //$NON-NLS-1$
-			    consumePseudoToken("finally", 0, true); 			break;
+	    case 384 : if (DEBUG) { System.out.println("PseudoToken ::= finally"); }  //$NON-NLS-1$
+			    consumePseudoToken("finally", 0, true);  
+				break;
 	 
-	    case 336 : if (DEBUG) { System.out.println("PseudoToken ::= implements"); }  //$NON-NLS-1$
-			    consumePseudoToken("implements", 0, true); 			break;
+	    case 385 : if (DEBUG) { System.out.println("PseudoToken ::= implements"); }  //$NON-NLS-1$
+			    consumePseudoToken("implements", 0, true);  
+				break;
 	 
-	    case 337 : if (DEBUG) { System.out.println("PseudoToken ::= throws"); }  //$NON-NLS-1$
-			    consumePseudoToken("throws", 0, true); 			break;
+	    case 386 : if (DEBUG) { System.out.println("PseudoToken ::= throws"); }  //$NON-NLS-1$
+			    consumePseudoToken("throws", 0, true);  
+				break;
 	 
-	    case 338 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); }  //$NON-NLS-1$
-			    consumeClassDeclaration(); 			break;
+	    case 387 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); }  //$NON-NLS-1$
+			    consumeClassDeclaration();  
+				break;
 	 
-	    case 339 : if (DEBUG) { System.out.println("IntertypeClassDeclaration ::= IntertypeClassHeader..."); }  //$NON-NLS-1$
-			    consumeIntertypeClassDeclaration(); 			break;
+	    case 388 : if (DEBUG) { System.out.println("IntertypeClassDeclaration ::= IntertypeClassHeader..."); }  //$NON-NLS-1$
+			    consumeIntertypeClassDeclaration();  
+				break;
 	 
-	    case 340 : if (DEBUG) { System.out.println("IntertypeClassHeader ::= IntertypeClassHeaderName..."); }  //$NON-NLS-1$
-			    consumeIntertypeClassHeader(); 			break;
+	    case 389 : if (DEBUG) { System.out.println("IntertypeClassHeader ::= IntertypeClassHeaderName..."); }  //$NON-NLS-1$
+			    consumeIntertypeClassHeader();  
+				break;
 	 
-	    case 341 : if (DEBUG) { System.out.println("IntertypeClassHeaderName ::= IntertypeClassHeaderName1"); }  //$NON-NLS-1$
-			    consumeIntertypeTypeHeaderNameWithTypeParameters(); 			break;
+	    case 390 : if (DEBUG) { System.out.println("IntertypeClassHeaderName ::= IntertypeClassHeaderName1"); }  //$NON-NLS-1$
+			    consumeIntertypeTypeHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 343 : if (DEBUG) { System.out.println("IntertypeClassHeaderName1 ::= Modifiersopt class OnType"); }  //$NON-NLS-1$
-			    consumeIntertypeClassHeaderName(false); 			break;
+	    case 392 : if (DEBUG) { System.out.println("IntertypeClassHeaderName1 ::= Modifiersopt class OnType"); }  //$NON-NLS-1$
+			    consumeIntertypeClassHeaderName(false);  
+				break;
 	 
-	    case 344 : if (DEBUG) { System.out.println("InterTypeClassHeaderName1 ::= Modifiersopt class OnType"); }  //$NON-NLS-1$
-			    consumeIntertypeClassHeaderName(true); 			break;
+	    case 393 : if (DEBUG) { System.out.println("InterTypeClassHeaderName1 ::= Modifiersopt class OnType"); }  //$NON-NLS-1$
+			    consumeIntertypeClassHeaderName(true);  
+				break;
 	 
-	    case 345 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); }  //$NON-NLS-1$
-			    consumeClassHeader(); 			break;
+	    case 394 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); }  //$NON-NLS-1$
+			    consumeClassHeader();  
+				break;
 	 
-	    case 346 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); }  //$NON-NLS-1$
-			    consumeTypeHeaderNameWithTypeParameters(); 			break;
+	    case 395 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); }  //$NON-NLS-1$
+			    consumeTypeHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 348 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeClassHeaderName1(); 			break;
+	    case 397 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeClassHeaderName1();  
+				break;
 	 
-	    case 349 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); }  //$NON-NLS-1$
-			    consumeClassHeaderExtends(); 			break;
+	    case 398 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); }  //$NON-NLS-1$
+			    consumeClassHeaderExtends();  
+				break;
 	 
-	    case 350 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); }  //$NON-NLS-1$
-			    consumeClassHeaderImplements(); 			break;
+	    case 399 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); }  //$NON-NLS-1$
+			    consumeClassHeaderImplements();  
+				break;
 	 
-	    case 352 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); }  //$NON-NLS-1$
-			    consumeInterfaceTypeList(); 			break;
+	    case 401 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); }  //$NON-NLS-1$
+			    consumeInterfaceTypeList();  
+				break;
 	 
-	    case 353 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
-			    consumeInterfaceType(); 			break;
+	    case 402 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); }  //$NON-NLS-1$
+			    consumeInterfaceType();  
+				break;
 	 
-	    case 356 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarations(); 			break;
+	    case 405 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarations();  
+				break;
 	 
-	    case 360 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclaration(); 			break;
+	    case 409 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclaration();  
+				break;
 	 
-	    case 361 : if (DEBUG) { System.out.println("Diet ::="); }  //$NON-NLS-1$
-			    consumeDiet(); 			break;
+	    case 410 : if (DEBUG) { System.out.println("Diet ::="); }  //$NON-NLS-1$
+			    consumeDiet();  
+				break;
 
-	    case 362 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod CreateInitializer..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclaration(); 			break;
+	    case 411 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod CreateInitializer..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclaration();  
+				break;
 	 
-	    case 363 : if (DEBUG) { System.out.println("CreateInitializer ::="); }  //$NON-NLS-1$
-			    consumeCreateInitializer(); 			break;
+	    case 412 : if (DEBUG) { System.out.println("CreateInitializer ::="); }  //$NON-NLS-1$
+			    consumeCreateInitializer();  
+				break;
 
-	    case 370 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeEmptyTypeDeclaration(); 			break;
+	    case 419 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeEmptyTypeDeclaration();  
+				break;
 
-	    case 373 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeFieldDeclaration(); 			break;
+	    case 422 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeFieldDeclaration();  
+				break;
 	 
-	    case 375 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); }  //$NON-NLS-1$
-			    consumeVariableDeclarators(); 			break;
+	    case 424 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); }  //$NON-NLS-1$
+			    consumeVariableDeclarators();  
+				break;
 	 
-	    case 378 : if (DEBUG) { System.out.println("EnterVariable ::="); }  //$NON-NLS-1$
-			    consumeEnterVariable(); 			break;
+	    case 427 : if (DEBUG) { System.out.println("EnterVariable ::="); }  //$NON-NLS-1$
+			    consumeEnterVariable();  
+				break;
 	 
-	    case 379 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); }  //$NON-NLS-1$
-			    consumeExitVariableWithInitialization(); 			break;
+	    case 428 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); }  //$NON-NLS-1$
+			    consumeExitVariableWithInitialization();  
+				break;
 	 
-	    case 380 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); }  //$NON-NLS-1$
-			    consumeExitVariableWithoutInitialization(); 			break;
+	    case 429 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); }  //$NON-NLS-1$
+			    consumeExitVariableWithoutInitialization();  
+				break;
 	 
-	    case 381 : if (DEBUG) { System.out.println("ForceNoDiet ::="); }  //$NON-NLS-1$
-			    consumeForceNoDiet(); 			break;
+	    case 430 : if (DEBUG) { System.out.println("ForceNoDiet ::="); }  //$NON-NLS-1$
+			    consumeForceNoDiet();  
+				break;
 	 
-	    case 382 : if (DEBUG) { System.out.println("RestoreDiet ::="); }  //$NON-NLS-1$
-			    consumeRestoreDiet(); 			break;
+	    case 431 : if (DEBUG) { System.out.println("RestoreDiet ::="); }  //$NON-NLS-1$
+			    consumeRestoreDiet();  
+				break;
 	 
-	    case 387 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
+	    case 436 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
-	 consumeMethodDeclaration(true, false); 			break;
+	 consumeMethodDeclaration(true, false);  
+				break;
 	 
-	    case 388 : if (DEBUG) { System.out.println("MethodDeclaration ::= DefaultMethodHeader MethodBody"); }  //$NON-NLS-1$
+	    case 437 : if (DEBUG) { System.out.println("MethodDeclaration ::= DefaultMethodHeader MethodBody"); }  //$NON-NLS-1$
 			    // set to true to consume a method with a body
-	 consumeMethodDeclaration(true, true); 			break;
+	 consumeMethodDeclaration(true, true);  
+				break;
 	 
-	    case 389 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); }  //$NON-NLS-1$
+	    case 438 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); }  //$NON-NLS-1$
 			    // set to false to consume a method without body
-	 consumeMethodDeclaration(false, false); 			break;
+	 consumeMethodDeclaration(false, false);  
+				break;
 	 
-	    case 390 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 439 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
-	    case 391 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 440 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
-	    case 392 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderNameWithTypeParameters(false); 			break;
+	    case 441 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderNameWithTypeParameters(false);  
+				break;
 	 
-	    case 393 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderName(false); 			break;
+	    case 442 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type JavaIdentifier..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderName(false);  
+				break;
 	 
-	    case 394 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderNameWithTypeParameters(false); 			break;
+	    case 443 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderNameWithTypeParameters(false);  
+				break;
 	 
-	    case 395 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderName(false); 			break;
+	    case 444 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderName(false);  
+				break;
 	 
-	    case 396 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); }  //$NON-NLS-1$
-			    consumePushCombineModifiers(); 			break;
+	    case 445 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); }  //$NON-NLS-1$
+			    consumePushCombineModifiers();  
+				break;
 	 
-	    case 397 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); }  //$NON-NLS-1$
-			    consumeMethodHeaderRightParen(); 			break;
+	    case 446 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); }  //$NON-NLS-1$
+			    consumeMethodHeaderRightParen();  
+				break;
 	 
-	    case 398 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); }  //$NON-NLS-1$
-			    consumeMethodHeaderExtendedDims(); 			break;
+	    case 447 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); }  //$NON-NLS-1$
+			    consumeMethodHeaderExtendedDims();  
+				break;
 	 
-	    case 399 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); }  //$NON-NLS-1$
-			    consumeMethodHeaderThrowsClause(); 			break;
+	    case 448 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); }  //$NON-NLS-1$
+			    consumeMethodHeaderThrowsClause();  
+				break;
 	 
-	    case 400 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); }  //$NON-NLS-1$
-			    consumeConstructorHeader(); 			break;
+	    case 449 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); }  //$NON-NLS-1$
+			    consumeConstructorHeader();  
+				break;
 	 
-	    case 401 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); }  //$NON-NLS-1$
-			    consumeConstructorHeaderNameWithTypeParameters(); 			break;
+	    case 450 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); }  //$NON-NLS-1$
+			    consumeConstructorHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 402 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); }  //$NON-NLS-1$
-			    consumeConstructorHeaderName(); 			break;
+	    case 451 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); }  //$NON-NLS-1$
+			    consumeConstructorHeaderName();  
+				break;
 	 
-	    case 403 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); }  //$NON-NLS-1$
-			    consumeConstructorHeaderName(); 			break;
+	    case 452 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt aspect LPAREN"); }  //$NON-NLS-1$
+			    consumeConstructorHeaderName();  
+				break;
 	 
-	    case 405 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); }  //$NON-NLS-1$
-			    consumeFormalParameterList(); 			break;
+	    case 454 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); }  //$NON-NLS-1$
+			    consumeFormalParameterList();  
+				break;
 	 
-	    case 406 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeFormalParameter(false); 			break;
+	    case 455 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeFormalParameter(false);  
+				break;
 	 
-	    case 407 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeFormalParameter(true); 			break;
+	    case 456 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeFormalParameter(true);  
+				break;
 	 
-	    case 408 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); }  //$NON-NLS-1$
-			    consumeFormalParameter(true); 			break;
+	    case 457 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); }  //$NON-NLS-1$
+			    consumeFormalParameter(true);  
+				break;
 	 
-	    case 409 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); }  //$NON-NLS-1$
-			    consumeCatchFormalParameter(); 			break;
+	    case 458 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); }  //$NON-NLS-1$
+			    consumeCatchFormalParameter();  
+				break;
 	 
-	    case 410 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); }  //$NON-NLS-1$
-			    consumeCatchType(); 			break;
+	    case 459 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); }  //$NON-NLS-1$
+			    consumeCatchType();  
+				break;
 	 
-	    case 411 : if (DEBUG) { System.out.println("UnionType ::= Type"); }  //$NON-NLS-1$
-			    consumeUnionTypeAsClassType(); 			break;
+	    case 460 : if (DEBUG) { System.out.println("UnionType ::= Type"); }  //$NON-NLS-1$
+			    consumeUnionTypeAsClassType();  
+				break;
 	 
-	    case 412 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); }  //$NON-NLS-1$
-			    consumeUnionType(); 			break;
+	    case 461 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); }  //$NON-NLS-1$
+			    consumeUnionType();  
+				break;
 	 
-	    case 414 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); }  //$NON-NLS-1$
-			    consumeClassTypeList(); 			break;
+	    case 463 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); }  //$NON-NLS-1$
+			    consumeClassTypeList();  
+				break;
 	 
-	    case 415 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); }  //$NON-NLS-1$
-			    consumeClassTypeElt(); 			break;
+	    case 464 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); }  //$NON-NLS-1$
+			    consumeClassTypeElt();  
+				break;
 	 
-	    case 416 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); }  //$NON-NLS-1$
-			    consumeMethodBody(); 			break;
+	    case 465 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); }  //$NON-NLS-1$
+			    consumeMethodBody();  
+				break;
 	 
-	    case 417 : if (DEBUG) { System.out.println("NestedMethod ::="); }  //$NON-NLS-1$
-			    consumeNestedMethod(); 			break;
+	    case 466 : if (DEBUG) { System.out.println("NestedMethod ::="); }  //$NON-NLS-1$
+			    consumeNestedMethod();  
+				break;
 	 
-	    case 418 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); }  //$NON-NLS-1$
-			    consumeStaticInitializer(); 			break;
+	    case 467 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); }  //$NON-NLS-1$
+			    consumeStaticInitializer();  
+				break;
 
-	    case 419 : if (DEBUG) { System.out.println("StaticOnly ::= static"); }  //$NON-NLS-1$
-			    consumeStaticOnly(); 			break;
+	    case 468 : if (DEBUG) { System.out.println("StaticOnly ::= static"); }  //$NON-NLS-1$
+			    consumeStaticOnly();  
+				break;
 	 
-	    case 420 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); }  //$NON-NLS-1$
-			    consumeConstructorDeclaration() ; 			break;
+	    case 469 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); }  //$NON-NLS-1$
+			    consumeConstructorDeclaration() ;  
+				break;
 	 
-	    case 421 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); }  //$NON-NLS-1$
-			    consumeInvalidConstructorDeclaration() ; 			break;
+	    case 470 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); }  //$NON-NLS-1$
+			    consumeInvalidConstructorDeclaration() ;  
+				break;
 	 
-	    case 422 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(0, THIS_CALL); 			break;
+	    case 471 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(0, THIS_CALL);  
+				break;
 	 
-	    case 423 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); 			break;
+	    case 472 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL);  
+				break;
 	 
-	    case 424 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(0,SUPER_CALL); 			break;
+	    case 473 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(0,SUPER_CALL);  
+				break;
 	 
-	    case 425 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); 			break;
+	    case 474 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL);  
+				break;
 	 
-	    case 426 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(1, SUPER_CALL); 			break;
+	    case 475 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(1, SUPER_CALL);  
+				break;
 	 
-	    case 427 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); 			break;
+	    case 476 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL);  
+				break;
 	 
-	    case 428 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(2, SUPER_CALL); 			break;
+	    case 477 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(2, SUPER_CALL);  
+				break;
 	 
-	    case 429 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); 			break;
+	    case 478 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL);  
+				break;
 	 
-	    case 430 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(1, THIS_CALL); 			break;
+	    case 479 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(1, THIS_CALL);  
+				break;
 	 
-	    case 431 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); 			break;
+	    case 480 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL);  
+				break;
 	 
-	    case 432 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocation(2, THIS_CALL); 			break;
+	    case 481 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocation(2, THIS_CALL);  
+				break;
 	 
-	    case 433 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
-			    consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); 			break;
+	    case 482 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); }  //$NON-NLS-1$
+			    consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL);  
+				break;
 	 
-	    case 434 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); }  //$NON-NLS-1$
-			    consumeInterfaceDeclaration(); 			break;
+	    case 483 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); }  //$NON-NLS-1$
+			    consumeInterfaceDeclaration();  
+				break;
 	 
-	    case 435 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); }  //$NON-NLS-1$
-			    consumeInterfaceHeader(); 			break;
+	    case 484 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); }  //$NON-NLS-1$
+			    consumeInterfaceHeader();  
+				break;
 	 
-	    case 436 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); }  //$NON-NLS-1$
-			    consumeTypeHeaderNameWithTypeParameters(); 			break;
+	    case 485 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); }  //$NON-NLS-1$
+			    consumeTypeHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 438 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); }  //$NON-NLS-1$
-			    consumeInterfaceHeaderName1(); 			break;
+	    case 487 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); }  //$NON-NLS-1$
+			    consumeInterfaceHeaderName1();  
+				break;
 	 
-	    case 439 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); }  //$NON-NLS-1$
-			    consumeInterfaceHeaderExtends(); 			break;
+	    case 488 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); }  //$NON-NLS-1$
+			    consumeInterfaceHeaderExtends();  
+				break;
 	 
-	    case 442 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); }  //$NON-NLS-1$
-			    consumeInterfaceMemberDeclarations(); 			break;
+	    case 491 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); }  //$NON-NLS-1$
+			    consumeInterfaceMemberDeclarations();  
+				break;
 	 
-	    case 443 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeEmptyTypeDeclaration(); 			break;
+	    case 492 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeEmptyTypeDeclaration();  
+				break;
 	 
-	    case 445 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); }  //$NON-NLS-1$
-			    consumeInterfaceMethodDeclaration(false); 			break;
+	    case 494 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); }  //$NON-NLS-1$
+			    consumeInterfaceMethodDeclaration(false);  
+				break;
 	 
-	    case 446 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
-			    consumeInterfaceMethodDeclaration(false); 			break;
+	    case 495 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); }  //$NON-NLS-1$
+			    consumeInterfaceMethodDeclaration(false);  
+				break;
 	 
-	    case 447 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); }  //$NON-NLS-1$
-			    consumeInterfaceMethodDeclaration(true); 			break;
+	    case 496 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); }  //$NON-NLS-1$
+			    consumeInterfaceMethodDeclaration(true);  
+				break;
 	 
-	    case 448 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
-			    consumeInvalidConstructorDeclaration(true); 			break;
+	    case 497 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
+			    consumeInvalidConstructorDeclaration(true);  
+				break;
 	 
-	    case 449 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
-			    consumeInvalidConstructorDeclaration(false); 			break;
+	    case 498 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); }  //$NON-NLS-1$
+			    consumeInvalidConstructorDeclaration(false);  
+				break;
 	 
-	    case 460 : if (DEBUG) { System.out.println("PushLeftBrace ::="); }  //$NON-NLS-1$
-			    consumePushLeftBrace(); 			break;
+	    case 509 : if (DEBUG) { System.out.println("PushLeftBrace ::="); }  //$NON-NLS-1$
+			    consumePushLeftBrace();  
+				break;
 	 
-	    case 461 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); }  //$NON-NLS-1$
-			    consumeEmptyArrayInitializer(); 			break;
+	    case 510 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); }  //$NON-NLS-1$
+			    consumeEmptyArrayInitializer();  
+				break;
 	 
-	    case 462 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
-			    consumeArrayInitializer(); 			break;
+	    case 511 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
+			    consumeArrayInitializer();  
+				break;
 	 
-	    case 463 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
-			    consumeArrayInitializer(); 			break;
+	    case 512 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); }  //$NON-NLS-1$
+			    consumeArrayInitializer();  
+				break;
 	 
-	    case 465 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); }  //$NON-NLS-1$
-			    consumeVariableInitializers(); 			break;
+	    case 514 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); }  //$NON-NLS-1$
+			    consumeVariableInitializers();  
+				break;
 	 
-	    case 466 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); }  //$NON-NLS-1$
-			    consumeBlock(); 			break;
+	    case 515 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); }  //$NON-NLS-1$
+			    consumeBlock();  
+				break;
 	 
-	    case 467 : if (DEBUG) { System.out.println("OpenBlock ::="); }  //$NON-NLS-1$
-			    consumeOpenBlock() ; 			break;
+	    case 516 : if (DEBUG) { System.out.println("OpenBlock ::="); }  //$NON-NLS-1$
+			    consumeOpenBlock() ;  
+				break;
 	 
-	    case 468 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); }  //$NON-NLS-1$
-			    consumeBlockStatement() ; 			break;
+	    case 517 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); }  //$NON-NLS-1$
+			    consumeBlockStatement() ;  
+				break;
 	 
-	    case 469 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); }  //$NON-NLS-1$
-			    consumeBlockStatements() ; 			break;
+	    case 518 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); }  //$NON-NLS-1$
+			    consumeBlockStatements() ;  
+				break;
 	 
-	    case 476 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); }  //$NON-NLS-1$
-			    consumeInvalidInterfaceDeclaration(); 			break;
+	    case 525 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); }  //$NON-NLS-1$
+			    consumeInvalidInterfaceDeclaration();  
+				break;
 	 
-	    case 477 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); }  //$NON-NLS-1$
-			    consumeInvalidAnnotationTypeDeclaration(); 			break;
+	    case 526 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); }  //$NON-NLS-1$
+			    consumeInvalidAnnotationTypeDeclaration();  
+				break;
 	 
-	    case 478 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); }  //$NON-NLS-1$
-			    consumeInvalidEnumDeclaration(); 			break;
+	    case 527 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); }  //$NON-NLS-1$
+			    consumeInvalidEnumDeclaration();  
+				break;
 	 
-	    case 479 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); }  //$NON-NLS-1$
-			    consumeLocalVariableDeclarationStatement(); 			break;
+	    case 528 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); }  //$NON-NLS-1$
+			    consumeLocalVariableDeclarationStatement();  
+				break;
 	 
-	    case 480 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); }  //$NON-NLS-1$
-			    consumeLocalVariableDeclaration(); 			break;
+	    case 529 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); }  //$NON-NLS-1$
+			    consumeLocalVariableDeclaration();  
+				break;
 	 
-	    case 481 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); }  //$NON-NLS-1$
-			    consumeLocalVariableDeclaration(); 			break;
+	    case 530 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); }  //$NON-NLS-1$
+			    consumeLocalVariableDeclaration();  
+				break;
 	 
-	    case 482 : if (DEBUG) { System.out.println("PushModifiers ::="); }  //$NON-NLS-1$
-			    consumePushModifiers(); 			break;
+	    case 531 : if (DEBUG) { System.out.println("PushModifiers ::="); }  //$NON-NLS-1$
+			    consumePushModifiers();  
+				break;
 	 
-	    case 483 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); }  //$NON-NLS-1$
-			    consumePushModifiersForHeader(); 			break;
+	    case 532 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); }  //$NON-NLS-1$
+			    consumePushModifiersForHeader();  
+				break;
 	 
-	    case 484 : if (DEBUG) { System.out.println("PushRealModifiers ::="); }  //$NON-NLS-1$
-			    consumePushRealModifiers(); 			break;
+	    case 533 : if (DEBUG) { System.out.println("PushRealModifiers ::="); }  //$NON-NLS-1$
+			    consumePushRealModifiers();  
+				break;
 	 
-	    case 511 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeEmptyStatement(); 			break;
+	    case 560 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeEmptyStatement();  
+				break;
 	 
-	    case 512 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); }  //$NON-NLS-1$
-			    consumeStatementLabel() ; 			break;
+	    case 561 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); }  //$NON-NLS-1$
+			    consumeStatementLabel() ;  
+				break;
 	 
-	    case 513 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); }  //$NON-NLS-1$
-			    consumeStatementLabel() ; 			break;
+	    case 562 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); }  //$NON-NLS-1$
+			    consumeStatementLabel() ;  
+				break;
 	 
-	    case 514 : if (DEBUG) { System.out.println("Label ::= JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeLabel() ; 			break;
+	    case 563 : if (DEBUG) { System.out.println("Label ::= JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeLabel() ;  
+				break;
 	 
-	     case 515 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); }  //$NON-NLS-1$
-			    consumeExpressionStatement(); 			break;
+	     case 564 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); }  //$NON-NLS-1$
+			    consumeExpressionStatement();  
+				break;
 	 
-	    case 524 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
-			    consumeStatementIfNoElse(); 			break;
+	    case 573 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+			    consumeStatementIfNoElse();  
+				break;
 	 
-	    case 525 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
-			    consumeStatementIfWithElse(); 			break;
+	    case 574 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+			    consumeStatementIfWithElse();  
+				break;
 	 
-	    case 526 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); }  //$NON-NLS-1$
-			    consumeStatementIfWithElse(); 			break;
+	    case 575 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); }  //$NON-NLS-1$
+			    consumeStatementIfWithElse();  
+				break;
 	 
-	    case 527 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
-			    consumeStatementSwitch() ; 			break;
+	    case 576 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+			    consumeStatementSwitch() ;  
+				break;
 	 
-	    case 528 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); }  //$NON-NLS-1$
-			    consumeEmptySwitchBlock() ; 			break;
+	    case 577 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); }  //$NON-NLS-1$
+			    consumeEmptySwitchBlock() ;  
+				break;
 	 
-	    case 531 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); }  //$NON-NLS-1$
-			    consumeSwitchBlock() ; 			break;
+	    case 580 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); }  //$NON-NLS-1$
+			    consumeSwitchBlock() ;  
+				break;
 	 
-	    case 533 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); }  //$NON-NLS-1$
-			    consumeSwitchBlockStatements() ; 			break;
+	    case 582 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); }  //$NON-NLS-1$
+			    consumeSwitchBlockStatements() ;  
+				break;
 	 
-	    case 534 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); }  //$NON-NLS-1$
-			    consumeSwitchBlockStatement() ; 			break;
+	    case 583 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); }  //$NON-NLS-1$
+			    consumeSwitchBlockStatement() ;  
+				break;
 	 
-	    case 536 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); }  //$NON-NLS-1$
-			    consumeSwitchLabels() ; 			break;
+	    case 585 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); }  //$NON-NLS-1$
+			    consumeSwitchLabels() ;  
+				break;
 	 
-	     case 537 : if (DEBUG) { System.out.println("SwitchLabel ::= case ConstantExpression COLON"); }  //$NON-NLS-1$
-			    consumeCaseLabel(); 			break;
+	     case 586 : if (DEBUG) { System.out.println("SwitchLabel ::= case ConstantExpression COLON"); }  //$NON-NLS-1$
+			    consumeCaseLabel();  
+				break;
 	 
-	     case 538 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); }  //$NON-NLS-1$
-			    consumeDefaultLabel(); 			break;
+	     case 587 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); }  //$NON-NLS-1$
+			    consumeDefaultLabel();  
+				break;
 	 
-	    case 539 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
-			    consumeStatementWhile() ; 			break;
+	    case 588 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); }  //$NON-NLS-1$
+			    consumeStatementWhile() ;  
+				break;
 	 
-	    case 540 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); }  //$NON-NLS-1$
-			    consumeStatementWhile() ; 			break;
+	    case 589 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); }  //$NON-NLS-1$
+			    consumeStatementWhile() ;  
+				break;
 	 
-	    case 541 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); }  //$NON-NLS-1$
-			    consumeStatementDo() ; 			break;
+	    case 590 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); }  //$NON-NLS-1$
+			    consumeStatementDo() ;  
+				break;
 	 
-	    case 542 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); }  //$NON-NLS-1$
-			    consumeStatementFor() ; 			break;
+	    case 591 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); }  //$NON-NLS-1$
+			    consumeStatementFor() ;  
+				break;
 	 
-	    case 543 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); }  //$NON-NLS-1$
-			    consumeStatementFor() ; 			break;
+	    case 592 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); }  //$NON-NLS-1$
+			    consumeStatementFor() ;  
+				break;
 	 
-	    case 544 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); }  //$NON-NLS-1$
-			    consumeForInit() ; 			break;
+	    case 593 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); }  //$NON-NLS-1$
+			    consumeForInit() ;  
+				break;
 	 
-	    case 548 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); }  //$NON-NLS-1$
-			    consumeStatementExpressionList() ; 			break;
+	    case 597 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); }  //$NON-NLS-1$
+			    consumeStatementExpressionList() ;  
+				break;
 	 
-	    case 549 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); }  //$NON-NLS-1$
-			    consumeSimpleAssertStatement() ; 			break;
+	    case 598 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); }  //$NON-NLS-1$
+			    consumeSimpleAssertStatement() ;  
+				break;
 	 
-	    case 550 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); }  //$NON-NLS-1$
-			    consumeAssertStatement() ; 			break;
+	    case 599 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); }  //$NON-NLS-1$
+			    consumeAssertStatement() ;  
+				break;
 	 
-	    case 551 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementBreak() ; 			break;
+	    case 600 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementBreak() ;  
+				break;
 	 
-	    case 552 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementBreakWithLabel() ; 			break;
+	    case 601 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementBreakWithLabel() ;  
+				break;
 	 
-	    case 553 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementContinue() ; 			break;
+	    case 602 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementContinue() ;  
+				break;
 	 
-	    case 554 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementContinueWithLabel() ; 			break;
+	    case 603 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementContinueWithLabel() ;  
+				break;
 	 
-	    case 555 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementReturn() ; 			break;
+	    case 604 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementReturn() ;  
+				break;
 	 
-	    case 556 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); }  //$NON-NLS-1$
-			    consumeStatementThrow(); 			break;
+	    case 605 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); }  //$NON-NLS-1$
+			    consumeStatementThrow();  
+				break;
 	 
-	    case 557 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); }  //$NON-NLS-1$
-			    consumeStatementSynchronized(); 			break;
+	    case 606 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); }  //$NON-NLS-1$
+			    consumeStatementSynchronized();  
+				break;
 	 
-	    case 558 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); }  //$NON-NLS-1$
-			    consumeOnlySynchronized(); 			break;
+	    case 607 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); }  //$NON-NLS-1$
+			    consumeOnlySynchronized();  
+				break;
 	 
-	    case 559 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); }  //$NON-NLS-1$
-			    consumeStatementTry(false, false); 			break;
+	    case 608 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); }  //$NON-NLS-1$
+			    consumeStatementTry(false, false);  
+				break;
 	 
-	    case 560 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); }  //$NON-NLS-1$
-			    consumeStatementTry(true, false); 			break;
+	    case 609 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); }  //$NON-NLS-1$
+			    consumeStatementTry(true, false);  
+				break;
 	 
-	    case 561 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); }  //$NON-NLS-1$
-			    consumeStatementTry(false, true); 			break;
+	    case 610 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); }  //$NON-NLS-1$
+			    consumeStatementTry(false, true);  
+				break;
 	 
-	    case 562 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); }  //$NON-NLS-1$
-			    consumeStatementTry(true, true); 			break;
+	    case 611 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); }  //$NON-NLS-1$
+			    consumeStatementTry(true, true);  
+				break;
 	 
-	    case 563 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); }  //$NON-NLS-1$
-			    consumeResourceSpecification(); 			break;
+	    case 612 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); }  //$NON-NLS-1$
+			    consumeResourceSpecification();  
+				break;
 	 
-	    case 564 : if (DEBUG) { System.out.println(";opt ::="); }  //$NON-NLS-1$
-			    consumeResourceOptionalTrailingSemiColon(false); 			break;
+	    case 613 : if (DEBUG) { System.out.println(";opt ::="); }  //$NON-NLS-1$
+			    consumeResourceOptionalTrailingSemiColon(false);  
+				break;
 	 
-	    case 565 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeResourceOptionalTrailingSemiColon(true); 			break;
+	    case 614 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeResourceOptionalTrailingSemiColon(true);  
+				break;
 	 
-	    case 566 : if (DEBUG) { System.out.println("Resources ::= Resource"); }  //$NON-NLS-1$
-			    consumeSingleResource(); 			break;
+	    case 615 : if (DEBUG) { System.out.println("Resources ::= Resource"); }  //$NON-NLS-1$
+			    consumeSingleResource();  
+				break;
 	 
-	    case 567 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); }  //$NON-NLS-1$
-			    consumeMultipleResources(); 			break;
+	    case 616 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); }  //$NON-NLS-1$
+			    consumeMultipleResources();  
+				break;
 	 
-	    case 568 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); }  //$NON-NLS-1$
-			    consumeResourceOptionalTrailingSemiColon(true); 			break;
+	    case 617 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); }  //$NON-NLS-1$
+			    consumeResourceOptionalTrailingSemiColon(true);  
+				break;
 	 
-	    case 569 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); }  //$NON-NLS-1$
-			    consumeResourceAsLocalVariableDeclaration(); 			break;
+	    case 618 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); }  //$NON-NLS-1$
+			    consumeResourceAsLocalVariableDeclaration();  
+				break;
 	 
-	    case 570 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); }  //$NON-NLS-1$
-			    consumeResourceAsLocalVariableDeclaration(); 			break;
+	    case 619 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); }  //$NON-NLS-1$
+			    consumeResourceAsLocalVariableDeclaration();  
+				break;
 	 
-	    case 572 : if (DEBUG) { System.out.println("ExitTryBlock ::="); }  //$NON-NLS-1$
-			    consumeExitTryBlock(); 			break;
+	    case 620 : if (DEBUG) { System.out.println("Resource ::= Name"); }  //$NON-NLS-1$
+			    consumeResourceAsLocalVariable();  
+				break;
 	 
-	    case 574 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); }  //$NON-NLS-1$
-			    consumeCatches(); 			break;
+	    case 621 : if (DEBUG) { System.out.println("Resource ::= FieldAccess"); }  //$NON-NLS-1$
+			    consumeResourceAsFieldAccess();  
+				break;
 	 
-	    case 575 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); }  //$NON-NLS-1$
-			    consumeStatementCatch() ; 			break;
+	    case 623 : if (DEBUG) { System.out.println("ExitTryBlock ::="); }  //$NON-NLS-1$
+			    consumeExitTryBlock();  
+				break;
 	 
-	    case 577 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); }  //$NON-NLS-1$
-			    consumeLeftParen(); 			break;
+	    case 625 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); }  //$NON-NLS-1$
+			    consumeCatches();  
+				break;
 	 
-	    case 578 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); }  //$NON-NLS-1$
-			    consumeRightParen(); 			break;
+	    case 626 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); }  //$NON-NLS-1$
+			    consumeStatementCatch() ;  
+				break;
 	 
-	    case 583 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayThis(); 			break;
+	    case 628 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); }  //$NON-NLS-1$
+			    consumeLeftParen();  
+				break;
 	 
-	    case 584 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArray(); 			break;
+	    case 629 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); }  //$NON-NLS-1$
+			    consumeRightParen();  
+				break;
 	 
-	    case 585 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayWithName(); 			break;
+	    case 634 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayThis();  
+				break;
 	 
-	    case 588 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayNameThis(); 			break;
+	    case 635 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArray();  
+				break;
 	 
-	    case 589 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); }  //$NON-NLS-1$
-			    consumeQualifiedSuperReceiver(); 			break;
+	    case 636 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayWithName();  
+				break;
 	 
-	    case 590 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayName(); 			break;
+	    case 639 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayNameThis();  
+				break;
 	 
-	    case 591 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayArrayType(); 			break;
+	    case 640 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); }  //$NON-NLS-1$
+			    consumeQualifiedSuperReceiver();  
+				break;
 	 
-	    case 592 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayPrimitiveArrayType(); 			break;
+	    case 641 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayName();  
+				break;
 	 
-	    case 593 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); }  //$NON-NLS-1$
-			    consumePrimaryNoNewArrayPrimitiveType(); 			break;
+	    case 642 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayArrayType();  
+				break;
 	 
-	    case 599 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionTypeArgumentsAndTrunk(false); 			break;
+	    case 643 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayPrimitiveArrayType();  
+				break;
 	 
-	    case 600 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionTypeArgumentsAndTrunk(true); 			break;
+	    case 644 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); }  //$NON-NLS-1$
+			    consumePrimaryNoNewArrayPrimitiveType();  
+				break;
 	 
-	    case 601 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); }  //$NON-NLS-1$
-			    consumeReferenceExpressionTypeForm(true); 			break;
+	    case 650 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionTypeArgumentsAndTrunk(false);  
+				break;
 	 
-	    case 602 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionTypeForm(false); 			break;
+	    case 651 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionTypeArgumentsAndTrunk(true);  
+				break;
 	 
-	    case 603 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionGenericTypeForm(); 			break;
+	    case 652 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); }  //$NON-NLS-1$
+			    consumeReferenceExpressionTypeForm(true);  
+				break;
 	 
-	    case 604 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionPrimaryForm(); 			break;
+	    case 653 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionTypeForm(false);  
+				break;
 	 
-	    case 605 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionPrimaryForm(); 			break;
+	    case 654 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionGenericTypeForm();  
+				break;
 	 
-	    case 606 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); }  //$NON-NLS-1$
-			    consumeReferenceExpressionSuperForm(); 			break;
+	    case 655 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionPrimaryForm();  
+				break;
 	 
-	    case 607 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyTypeArguments(); 			break;
+	    case 656 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionPrimaryForm();  
+				break;
 	 
-	    case 609 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); }  //$NON-NLS-1$
-			    consumeIdentifierOrNew(false); 			break;
+	    case 657 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); }  //$NON-NLS-1$
+			    consumeReferenceExpressionSuperForm();  
+				break;
 	 
-	    case 610 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); }  //$NON-NLS-1$
-			    consumeIdentifierOrNew(true); 			break;
+	    case 658 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyTypeArguments();  
+				break;
+	 
+	    case 660 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); }  //$NON-NLS-1$
+			    consumeIdentifierOrNew(false);  
+				break;
+	 
+	    case 661 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); }  //$NON-NLS-1$
+			    consumeIdentifierOrNew(true);  
+				break;
 	 
-	    case 611 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); }  //$NON-NLS-1$
-			    consumeLambdaExpression(); 			break;
+	    case 662 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); }  //$NON-NLS-1$
+			    consumeLambdaExpression();  
+				break;
 	 
-	    case 612 : if (DEBUG) { System.out.println("NestedLambda ::="); }  //$NON-NLS-1$
-			    consumeNestedLambda(); 			break;
+	    case 663 : if (DEBUG) { System.out.println("NestedLambda ::="); }  //$NON-NLS-1$
+			    consumeNestedLambda();  
+				break;
 	 
-	    case 613 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); }  //$NON-NLS-1$
-			    consumeTypeElidedLambdaParameter(false); 			break;
+	    case 664 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); }  //$NON-NLS-1$
+			    consumeTypeElidedLambdaParameter(false);  
+				break;
 	 
-	    case 619 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); }  //$NON-NLS-1$
-			    consumeFormalParameterList(); 			break;
+	    case 670 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); }  //$NON-NLS-1$
+			    consumeFormalParameterList();  
+				break;
 	 
-	    case 620 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
-			    consumeTypeElidedLambdaParameter(true); 			break;
+	    case 671 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
+			    consumeTypeElidedLambdaParameter(true);  
+				break;
 	 
-	    case 623 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); }  //$NON-NLS-1$
-			    consumeElidedLeftBraceAndReturn(); 			break;
+	    case 674 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); }  //$NON-NLS-1$
+			    consumeElidedLeftBraceAndReturn();  
+				break;
 	 
-	    case 624 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); }  //$NON-NLS-1$
-			    consumeAllocationHeader(); 			break;
+	    case 675 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); }  //$NON-NLS-1$
+			    consumeAllocationHeader();  
+				break;
 	 
-	    case 625 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionWithTypeArguments(); 			break;
+	    case 676 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionWithTypeArguments();  
+				break;
 	 
-	    case 626 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpression(); 			break;
+	    case 677 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpression();  
+				break;
 	 
-	    case 627 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; 			break;
+	    case 678 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;  
+				break;
 	 
-	    case 628 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionQualified() ; 			break;
+	    case 679 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionQualified() ;  
+				break;
 	 
-	    case 629 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionQualified() ; 			break;
+	    case 680 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionQualified() ;  
+				break;
 	 
-	    case 630 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; 			break;
+	    case 681 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ;  
+				break;
 	 
-	    case 631 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); }  //$NON-NLS-1$
-			    consumeEnterInstanceCreationArgumentList(); 			break;
+	    case 682 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); }  //$NON-NLS-1$
+			    consumeEnterInstanceCreationArgumentList();  
+				break;
 	 
-	    case 632 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); }  //$NON-NLS-1$
-			    consumeClassInstanceCreationExpressionName() ; 			break;
+	    case 683 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); }  //$NON-NLS-1$
+			    consumeClassInstanceCreationExpressionName() ;  
+				break;
 	 
-	    case 633 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); }  //$NON-NLS-1$
-			    consumeClassBodyopt(); 			break;
+	    case 684 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); }  //$NON-NLS-1$
+			    consumeClassBodyopt();  
+				break;
 	 
-	    case 635 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); }  //$NON-NLS-1$
-			    consumeEnterAnonymousClassBody(false); 			break;
+	    case 686 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); }  //$NON-NLS-1$
+			    consumeEnterAnonymousClassBody(false);  
+				break;
 	 
-	    case 636 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); }  //$NON-NLS-1$
-			    consumeClassBodyopt(); 			break;
+	    case 687 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); }  //$NON-NLS-1$
+			    consumeClassBodyopt();  
+				break;
 	 
-	    case 638 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); }  //$NON-NLS-1$
-			    consumeEnterAnonymousClassBody(true); 			break;
+	    case 689 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); }  //$NON-NLS-1$
+			    consumeEnterAnonymousClassBody(true);  
+				break;
 	 
-	    case 640 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); }  //$NON-NLS-1$
-			    consumeArgumentList(); 			break;
+	    case 691 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); }  //$NON-NLS-1$
+			    consumeArgumentList();  
+				break;
 	 
-	    case 641 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); }  //$NON-NLS-1$
-			    consumeArrayCreationHeader(); 			break;
+	    case 692 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); }  //$NON-NLS-1$
+			    consumeArrayCreationHeader();  
+				break;
 	 
-	    case 642 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); }  //$NON-NLS-1$
-			    consumeArrayCreationHeader(); 			break;
+	    case 693 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); }  //$NON-NLS-1$
+			    consumeArrayCreationHeader();  
+				break;
 	 
-	    case 643 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
-			    consumeArrayCreationExpressionWithoutInitializer(); 			break;
+	    case 694 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
+			    consumeArrayCreationExpressionWithoutInitializer();  
+				break;
 	 
-	    case 644 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); }  //$NON-NLS-1$
-			    consumeArrayCreationExpressionWithInitializer(); 			break;
+	    case 695 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); }  //$NON-NLS-1$
+			    consumeArrayCreationExpressionWithInitializer();  
+				break;
 	 
-	    case 645 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
-			    consumeArrayCreationExpressionWithoutInitializer(); 			break;
+	    case 696 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); }  //$NON-NLS-1$
+			    consumeArrayCreationExpressionWithoutInitializer();  
+				break;
 	 
-	    case 646 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); }  //$NON-NLS-1$
-			    consumeArrayCreationExpressionWithInitializer(); 			break;
+	    case 697 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); }  //$NON-NLS-1$
+			    consumeArrayCreationExpressionWithInitializer();  
+				break;
 	 
-	    case 648 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); }  //$NON-NLS-1$
-			    consumeDimWithOrWithOutExprs(); 			break;
+	    case 699 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); }  //$NON-NLS-1$
+			    consumeDimWithOrWithOutExprs();  
+				break;
 	 
-	     case 650 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); }  //$NON-NLS-1$
-			    consumeDimWithOrWithOutExpr(); 			break;
+	     case 701 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); }  //$NON-NLS-1$
+			    consumeDimWithOrWithOutExpr();  
+				break;
 	 
-	     case 651 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); }  //$NON-NLS-1$
-			    consumeDims(); 			break;
+	     case 702 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); }  //$NON-NLS-1$
+			    consumeDims();  
+				break;
 	 
-	     case 654 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
-			    consumeOneDimLoop(false); 			break;
+	     case 705 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); }  //$NON-NLS-1$
+			    consumeOneDimLoop(false);  
+				break;
 	 
-	     case 655 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); }  //$NON-NLS-1$
-			    consumeOneDimLoop(true); 			break;
+	     case 706 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); }  //$NON-NLS-1$
+			    consumeOneDimLoop(true);  
+				break;
 	 
-	    case 656 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeFieldAccess(false); 			break;
+	    case 707 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeFieldAccess(false);  
+				break;
 	 
-	    case 657 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeFieldAccess(true); 			break;
+	    case 708 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeFieldAccess(true);  
+				break;
 	 
-	    case 658 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT Identifier"); }  //$NON-NLS-1$
-			    consumeFieldAccess(false); 			break;
+	    case 709 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT..."); }  //$NON-NLS-1$
+			    consumeFieldAccess(false);  
+				break;
 	 
-	    case 659 : if (DEBUG) { System.out.println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationName(); 			break;
+	    case 710 : if (DEBUG) { System.out.println("MethodInvocation ::= NameOrAj LPAREN ArgumentListopt..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationName();  
+				break;
 	 
-	    case 660 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationNameWithTypeArguments(); 			break;
+	    case 711 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationNameWithTypeArguments();  
+				break;
 	 
-	    case 661 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationPrimaryWithTypeArguments(); 			break;
+	    case 712 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationPrimaryWithTypeArguments();  
+				break;
 	 
-	    case 662 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); }  //$NON-NLS-1$
-			    consumeMethodInvocationPrimary(); 			break;
+	    case 713 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT JavaIdentifier LPAREN"); }  //$NON-NLS-1$
+			    consumeMethodInvocationPrimary();  
+				break;
 	 
-	    case 663 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationPrimary(); 			break;
+	    case 714 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationPrimary();  
+				break;
 	 
-	    case 664 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationPrimaryWithTypeArguments(); 			break;
+	    case 715 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationPrimaryWithTypeArguments();  
+				break;
 	 
-	    case 665 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationSuperWithTypeArguments(); 			break;
+	    case 716 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationSuperWithTypeArguments();  
+				break;
 	 
-	    case 666 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); }  //$NON-NLS-1$
-			    consumeMethodInvocationSuper(); 			break;
+	    case 717 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT JavaIdentifier LPAREN..."); }  //$NON-NLS-1$
+			    consumeMethodInvocationSuper();  
+				break;
 	 
-	    case 667 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
-			    consumeArrayAccess(true); 			break;
+	    case 718 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
+			    consumeArrayAccess(true);  
+				break;
 	 
-	    case 668 : if (DEBUG) { System.out.println("ArrayAccess ::= AjName LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
-			    consumeArrayAccess(true); 			break;
+	    case 719 : if (DEBUG) { System.out.println("ArrayAccess ::= AjName LBRACKET Expression RBRACKET"); }  //$NON-NLS-1$
+			    consumeArrayAccess(true);  
+				break;
 	 
-	    case 669 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); }  //$NON-NLS-1$
-			    consumeArrayAccess(false); 			break;
+	    case 720 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); }  //$NON-NLS-1$
+			    consumeArrayAccess(false);  
+				break;
 	 
-	    case 670 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); }  //$NON-NLS-1$
-			    consumeArrayAccess(false); 			break;
+	    case 721 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); }  //$NON-NLS-1$
+			    consumeArrayAccess(false);  
+				break;
 	 
-	    case 672 : if (DEBUG) { System.out.println("PostfixExpression ::= NameOrAj"); }  //$NON-NLS-1$
-			    consumePostfixExpression(); 			break;
+	    case 723 : if (DEBUG) { System.out.println("PostfixExpression ::= NameOrAj"); }  //$NON-NLS-1$
+			    consumePostfixExpression();  
+				break;
 	 
-	    case 675 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.PLUS,true); 			break;
+	    case 726 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.PLUS,true);  
+				break;
 	 
-	    case 676 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.MINUS,true); 			break;
+	    case 727 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.MINUS,true);  
+				break;
 	 
-	    case 677 : if (DEBUG) { System.out.println("PushPosition ::="); }  //$NON-NLS-1$
-			    consumePushPosition(); 			break;
+	    case 728 : if (DEBUG) { System.out.println("PushPosition ::="); }  //$NON-NLS-1$
+			    consumePushPosition();  
+				break;
 	 
-	    case 680 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.PLUS); 			break;
+	    case 731 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.PLUS);  
+				break;
 	 
-	    case 681 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.MINUS); 			break;
+	    case 732 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.MINUS);  
+				break;
 	 
-	    case 683 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.PLUS,false); 			break;
+	    case 734 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.PLUS,false);  
+				break;
 	 
-	    case 684 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.MINUS,false); 			break;
+	    case 735 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.MINUS,false);  
+				break;
 	 
-	    case 686 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.TWIDDLE); 			break;
+	    case 737 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.TWIDDLE);  
+				break;
 	 
-	    case 687 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.NOT); 			break;
+	    case 738 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.NOT);  
+				break;
 	 
-	    case 689 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); }  //$NON-NLS-1$
-			    consumeCastExpressionWithPrimitiveType(); 			break;
+	    case 740 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); }  //$NON-NLS-1$
+			    consumeCastExpressionWithPrimitiveType();  
+				break;
 	 
-	    case 690 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
-			    consumeCastExpressionWithGenericsArray(); 			break;
+	    case 741 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
+			    consumeCastExpressionWithGenericsArray();  
+				break;
 	 
-	    case 691 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
-			    consumeCastExpressionWithQualifiedGenericsArray(); 			break;
+	    case 742 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); }  //$NON-NLS-1$
+			    consumeCastExpressionWithQualifiedGenericsArray();  
+				break;
 	 
-	    case 692 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); }  //$NON-NLS-1$
-			    consumeCastExpressionLL1(); 			break;
+	    case 743 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); }  //$NON-NLS-1$
+			    consumeCastExpressionLL1();  
+				break;
 	 
-	    case 693 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); }  //$NON-NLS-1$
-			    consumeCastExpressionLL1WithBounds(); 			break;
+	    case 744 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); }  //$NON-NLS-1$
+			    consumeCastExpressionLL1WithBounds();  
+				break;
 	 
-	    case 694 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); }  //$NON-NLS-1$
-			    consumeCastExpressionWithNameArray(); 			break;
+	    case 745 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); }  //$NON-NLS-1$
+			    consumeCastExpressionWithNameArray();  
+				break;
 	 
-	    case 695 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); }  //$NON-NLS-1$
-			    consumeZeroAdditionalBounds(); 			break;
+	    case 746 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); }  //$NON-NLS-1$
+			    consumeZeroAdditionalBounds();  
+				break;
 	 
-	    case 699 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); }  //$NON-NLS-1$
-			    consumeOnlyTypeArgumentsForCastExpression(); 			break;
+	    case 750 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); }  //$NON-NLS-1$
+			    consumeOnlyTypeArgumentsForCastExpression();  
+				break;
 	 
-	    case 700 : if (DEBUG) { System.out.println("InsideCastExpression ::="); }  //$NON-NLS-1$
-			    consumeInsideCastExpression(); 			break;
+	    case 751 : if (DEBUG) { System.out.println("InsideCastExpression ::="); }  //$NON-NLS-1$
+			    consumeInsideCastExpression();  
+				break;
 	 
-	    case 701 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); }  //$NON-NLS-1$
-			    consumeInsideCastExpressionLL1(); 			break;
+	    case 752 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); }  //$NON-NLS-1$
+			    consumeInsideCastExpressionLL1();  
+				break;
 	 
-	    case 702 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); }  //$NON-NLS-1$
-			    consumeInsideCastExpressionLL1WithBounds (); 			break;
+	    case 753 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); }  //$NON-NLS-1$
+			    consumeInsideCastExpressionLL1WithBounds ();  
+				break;
 	 
-	    case 703 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); }  //$NON-NLS-1$
-			    consumeInsideCastExpressionWithQualifiedGenerics(); 			break;
+	    case 754 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); }  //$NON-NLS-1$
+			    consumeInsideCastExpressionWithQualifiedGenerics();  
+				break;
 	 
-	    case 705 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MULTIPLY); 			break;
+	    case 756 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
+				break;
 	 
-	    case 706 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.DIVIDE); 			break;
+	    case 757 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.DIVIDE);  
+				break;
 	 
-	    case 707 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.REMAINDER); 			break;
+	    case 758 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.REMAINDER);  
+				break;
 	 
-	    case 709 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.PLUS); 			break;
+	    case 760 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.PLUS);  
+				break;
 	 
-	    case 710 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MINUS); 			break;
+	    case 761 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MINUS);  
+				break;
 	 
-	    case 712 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT); 			break;
+	    case 763 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT);  
+				break;
 	 
-	    case 713 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); 			break;
+	    case 764 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);  
+				break;
 	 
-	    case 714 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); 			break;
+	    case 765 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
+				break;
 	 
-	    case 716 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS); 			break;
+	    case 767 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS);  
+				break;
 	 
-	    case 717 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER); 			break;
+	    case 768 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER);  
+				break;
 	 
-	    case 718 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS_EQUAL); 			break;
+	    case 769 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS_EQUAL);  
+				break;
 	 
-	    case 719 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL); 			break;
+	    case 770 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL);  
+				break;
 	 
-	    case 721 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression instanceof"); }  //$NON-NLS-1$
-			    consumeInstanceOfExpression(); 			break;
+	    case 772 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression instanceof"); }  //$NON-NLS-1$
+			    consumeInstanceOfExpression();  
+				break;
 	 
-	    case 723 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); 			break;
+	    case 774 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);  
+				break;
 	 
-	    case 724 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.NOT_EQUAL); 			break;
+	    case 775 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.NOT_EQUAL);  
+				break;
 	 
-	    case 726 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND); 			break;
+	    case 777 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND);  
+				break;
 	 
-	    case 728 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.XOR); 			break;
+	    case 779 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.XOR);  
+				break;
 	 
-	    case 730 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR); 			break;
+	    case 781 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR);  
+				break;
 	 
-	    case 732 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND_AND); 			break;
+	    case 783 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND_AND);  
+				break;
 	 
-	    case 734 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR_OR); 			break;
+	    case 785 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR_OR);  
+				break;
 	 
-	    case 736 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
-			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; 			break;
+	    case 787 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); }  //$NON-NLS-1$
+			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;  
+				break;
 	 
-	    case 739 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); }  //$NON-NLS-1$
-			    consumeAssignment(); 			break;
+	    case 790 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); }  //$NON-NLS-1$
+			    consumeAssignment();  
+				break;
 	 
-	    case 741 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); }  //$NON-NLS-1$
-			    ignoreExpressionAssignment();			break;
+	    case 792 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); }  //$NON-NLS-1$
+			    ignoreExpressionAssignment(); 
+				break;
 	 
-	    case 742 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(EQUAL); 			break;
+	    case 793 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(EQUAL);  
+				break;
 	 
-	    case 743 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(MULTIPLY); 			break;
+	    case 794 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(MULTIPLY);  
+				break;
 	 
-	    case 744 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(DIVIDE); 			break;
+	    case 795 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(DIVIDE);  
+				break;
 	 
-	    case 745 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(REMAINDER); 			break;
+	    case 796 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(REMAINDER);  
+				break;
 	 
-	    case 746 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(PLUS); 			break;
+	    case 797 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(PLUS);  
+				break;
 	 
-	    case 747 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(MINUS); 			break;
+	    case 798 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(MINUS);  
+				break;
 	 
-	    case 748 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(LEFT_SHIFT); 			break;
+	    case 799 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(LEFT_SHIFT);  
+				break;
 	 
-	    case 749 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(RIGHT_SHIFT); 			break;
+	    case 800 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(RIGHT_SHIFT);  
+				break;
 	 
-	    case 750 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); 			break;
+	    case 801 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT);  
+				break;
 	 
-	    case 751 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(AND); 			break;
+	    case 802 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(AND);  
+				break;
 	 
-	    case 752 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(XOR); 			break;
+	    case 803 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(XOR);  
+				break;
 	 
-	    case 753 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); }  //$NON-NLS-1$
-			    consumeAssignmentOperator(OR); 			break;
+	    case 804 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); }  //$NON-NLS-1$
+			    consumeAssignmentOperator(OR);  
+				break;
 	 
-	    case 754 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); }  //$NON-NLS-1$
-			    consumeExpression(); 			break;
+	    case 805 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); }  //$NON-NLS-1$
+			    consumeExpression();  
+				break;
 	 
-	    case 757 : if (DEBUG) { System.out.println("Expressionopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyExpression(); 			break;
+	    case 808 : if (DEBUG) { System.out.println("Expressionopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyExpression();  
+				break;
 	 
-	    case 762 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyClassBodyDeclarationsopt(); 			break;
+	    case 813 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyClassBodyDeclarationsopt();  
+				break;
 	 
-	    case 763 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeClassBodyDeclarationsopt(); 			break;
+	    case 814 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeClassBodyDeclarationsopt();  
+				break;
 	 
-	     case 764 : if (DEBUG) { System.out.println("Modifiersopt ::="); }  //$NON-NLS-1$
-			    consumeDefaultModifiers(); 			break;
+	     case 815 : if (DEBUG) { System.out.println("Modifiersopt ::="); }  //$NON-NLS-1$
+			    consumeDefaultModifiers();  
+				break;
 	 
-	    case 765 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); }  //$NON-NLS-1$
-			    consumeModifiers(); 			break;
+	    case 816 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); }  //$NON-NLS-1$
+			    consumeModifiers();  
+				break;
 	 
-	    case 766 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyBlockStatementsopt(); 			break;
+	    case 817 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyBlockStatementsopt();  
+				break;
 	 
-	     case 768 : if (DEBUG) { System.out.println("Dimsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyDimsopt(); 			break;
+	     case 819 : if (DEBUG) { System.out.println("Dimsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyDimsopt();  
+				break;
 	 
-	     case 770 : if (DEBUG) { System.out.println("ArgumentListopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyArgumentListopt(); 			break;
+	     case 821 : if (DEBUG) { System.out.println("ArgumentListopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyArgumentListopt();  
+				break;
 	 
-	    case 774 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); }  //$NON-NLS-1$
-			    consumeFormalParameterListopt(); 			break;
+	    case 825 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); }  //$NON-NLS-1$
+			    consumeFormalParameterListopt();  
+				break;
 	 
-	     case 778 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyInterfaceMemberDeclarationsopt(); 			break;
+	     case 829 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyInterfaceMemberDeclarationsopt();  
+				break;
 	 
-	     case 779 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeInterfaceMemberDeclarationsopt(); 			break;
+	     case 830 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeInterfaceMemberDeclarationsopt();  
+				break;
 	 
-	    case 780 : if (DEBUG) { System.out.println("NestedType ::="); }  //$NON-NLS-1$
-			    consumeNestedType(); 			break;
+	    case 831 : if (DEBUG) { System.out.println("NestedType ::="); }  //$NON-NLS-1$
+			    consumeNestedType();  
+				break;
 
-	     case 781 : if (DEBUG) { System.out.println("ForInitopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyForInitopt(); 			break;
+	     case 832 : if (DEBUG) { System.out.println("ForInitopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyForInitopt();  
+				break;
 	 
-	     case 783 : if (DEBUG) { System.out.println("ForUpdateopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyForUpdateopt(); 			break;
+	     case 834 : if (DEBUG) { System.out.println("ForUpdateopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyForUpdateopt();  
+				break;
 	 
-	     case 787 : if (DEBUG) { System.out.println("Catchesopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyCatchesopt(); 			break;
+	     case 838 : if (DEBUG) { System.out.println("Catchesopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyCatchesopt();  
+				break;
 	 
-	     case 789 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); }  //$NON-NLS-1$
-			    consumeEnumDeclaration(); 			break;
+	     case 840 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); }  //$NON-NLS-1$
+			    consumeEnumDeclaration();  
+				break;
 	 
-	     case 790 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); }  //$NON-NLS-1$
-			    consumeEnumHeader(); 			break;
+	     case 841 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); }  //$NON-NLS-1$
+			    consumeEnumHeader();  
+				break;
 	 
-	     case 791 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); }  //$NON-NLS-1$
-			    consumeEnumHeaderName(); 			break;
+	     case 842 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier"); }  //$NON-NLS-1$
+			    consumeEnumHeaderName();  
+				break;
 	 
-	     case 792 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier..."); }  //$NON-NLS-1$
-			    consumeEnumHeaderNameWithTypeParameters(); 			break;
+	     case 843 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum JavaIdentifier..."); }  //$NON-NLS-1$
+			    consumeEnumHeaderNameWithTypeParameters();  
+				break;
 	 
-	     case 793 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); }  //$NON-NLS-1$
-			    consumeEnumBodyNoConstants(); 			break;
+	     case 844 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); }  //$NON-NLS-1$
+			    consumeEnumBodyNoConstants();  
+				break;
 	 
-	     case 794 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); }  //$NON-NLS-1$
-			    consumeEnumBodyNoConstants(); 			break;
+	     case 845 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); }  //$NON-NLS-1$
+			    consumeEnumBodyNoConstants();  
+				break;
 	 
-	     case 795 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); }  //$NON-NLS-1$
-			    consumeEnumBodyWithConstants(); 			break;
+	     case 846 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); }  //$NON-NLS-1$
+			    consumeEnumBodyWithConstants();  
+				break;
 	 
-	     case 796 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); }  //$NON-NLS-1$
-			    consumeEnumBodyWithConstants(); 			break;
+	     case 847 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); }  //$NON-NLS-1$
+			    consumeEnumBodyWithConstants();  
+				break;
 	 
-	    case 798 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); }  //$NON-NLS-1$
-			    consumeEnumConstants(); 			break;
+	    case 849 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); }  //$NON-NLS-1$
+			    consumeEnumConstants();  
+				break;
 	 
-	    case 799 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
-			    consumeEnumConstantHeaderName(); 			break;
+	    case 850 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); }  //$NON-NLS-1$
+			    consumeEnumConstantHeaderName();  
+				break;
 	 
-	    case 800 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); }  //$NON-NLS-1$
-			    consumeEnumConstantHeader(); 			break;
+	    case 851 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); }  //$NON-NLS-1$
+			    consumeEnumConstantHeader();  
+				break;
 	 
-	    case 801 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); }  //$NON-NLS-1$
-			    consumeEnumConstantWithClassBody(); 			break;
+	    case 852 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); }  //$NON-NLS-1$
+			    consumeEnumConstantWithClassBody();  
+				break;
 	 
-	    case 802 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); }  //$NON-NLS-1$
-			    consumeEnumConstantNoClassBody(); 			break;
+	    case 853 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); }  //$NON-NLS-1$
+			    consumeEnumConstantNoClassBody();  
+				break;
 	 
-	    case 803 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); }  //$NON-NLS-1$
-			    consumeArguments(); 			break;
+	    case 854 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); }  //$NON-NLS-1$
+			    consumeArguments();  
+				break;
 	 
-	    case 804 : if (DEBUG) { System.out.println("Argumentsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyArguments(); 			break;
+	    case 855 : if (DEBUG) { System.out.println("Argumentsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyArguments();  
+				break;
 	 
-	    case 806 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); }  //$NON-NLS-1$
-			    consumeEnumDeclarations(); 			break;
+	    case 857 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); }  //$NON-NLS-1$
+			    consumeEnumDeclarations();  
+				break;
 	 
-	    case 807 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyEnumDeclarations(); 			break;
+	    case 858 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyEnumDeclarations();  
+				break;
 	 
-	    case 809 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatement(); 			break;
+	    case 860 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatement();  
+				break;
 	 
-	    case 810 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatement(); 			break;
+	    case 861 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatement();  
+				break;
 	 
-	    case 811 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatementHeaderInit(false); 			break;
+	    case 862 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatementHeaderInit(false);  
+				break;
 	 
-	    case 812 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); }  //$NON-NLS-1$
-			    consumeEnhancedForStatementHeaderInit(true); 			break;
+	    case 863 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); }  //$NON-NLS-1$
+			    consumeEnhancedForStatementHeaderInit(true);  
+				break;
 	 
-	    case 813 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); }  //$NON-NLS-1$
-			    consumeEnhancedForStatementHeader(); 			break;
+	    case 864 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); }  //$NON-NLS-1$
+			    consumeEnhancedForStatementHeader();  
+				break;
 	 
-	    case 814 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration(); 			break;
+	    case 865 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
 	 
-	    case 815 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); }  //$NON-NLS-1$
-			    consumeSingleStaticImportDeclarationName(); 			break;
+	    case 866 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); }  //$NON-NLS-1$
+			    consumeSingleStaticImportDeclarationName();  
+				break;
 	 
-	    case 816 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeImportDeclaration(); 			break;
+	    case 867 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeImportDeclaration();  
+				break;
 	 
-	    case 817 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); }  //$NON-NLS-1$
-			    consumeStaticImportOnDemandDeclarationName(); 			break;
+	    case 868 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); }  //$NON-NLS-1$
+			    consumeStaticImportOnDemandDeclarationName();  
+				break;
 	 
-	    case 818 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
-			    consumeTypeArguments(); 			break;
+	    case 869 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
+			    consumeTypeArguments();  
+				break;
 	 
-	    case 819 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
-			    consumeOnlyTypeArguments(); 			break;
+	    case 870 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); }  //$NON-NLS-1$
+			    consumeOnlyTypeArguments();  
+				break;
 	 
-	    case 821 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList1(); 			break;
+	    case 872 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList1();  
+				break;
 	 
-	    case 823 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); }  //$NON-NLS-1$
-			    consumeTypeArgumentList(); 			break;
+	    case 874 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); }  //$NON-NLS-1$
+			    consumeTypeArgumentList();  
+				break;
 	 
-	    case 824 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); }  //$NON-NLS-1$
-			    consumeTypeArgument(); 			break;
+	    case 875 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); }  //$NON-NLS-1$
+			    consumeTypeArgument();  
+				break;
 	 
-	    case 828 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); }  //$NON-NLS-1$
-			    consumeReferenceType1(); 			break;
+	    case 879 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); }  //$NON-NLS-1$
+			    consumeReferenceType1();  
+				break;
 	 
-	    case 829 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentReferenceType1(); 			break;
+	    case 880 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentReferenceType1();  
+				break;
 	 
-	    case 831 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList2(); 			break;
+	    case 882 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList2();  
+				break;
 	 
-	    case 834 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeReferenceType2(); 			break;
+	    case 885 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeReferenceType2();  
+				break;
 	 
-	    case 835 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentReferenceType2(); 			break;
+	    case 886 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentReferenceType2();  
+				break;
 	 
-	    case 837 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeArgumentList3(); 			break;
+	    case 888 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeArgumentList3();  
+				break;
 	 
-	    case 840 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeReferenceType3(); 			break;
+	    case 891 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeReferenceType3();  
+				break;
 	 
-	    case 841 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); }  //$NON-NLS-1$
-			    consumeWildcard(); 			break;
+	    case 892 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); }  //$NON-NLS-1$
+			    consumeWildcard();  
+				break;
 	 
-	    case 842 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); }  //$NON-NLS-1$
-			    consumeWildcardWithBounds(); 			break;
+	    case 893 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); }  //$NON-NLS-1$
+			    consumeWildcardWithBounds();  
+				break;
 	 
-	    case 843 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); }  //$NON-NLS-1$
-			    consumeWildcardBoundsExtends(); 			break;
+	    case 894 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); }  //$NON-NLS-1$
+			    consumeWildcardBoundsExtends();  
+				break;
 	 
-	    case 844 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); }  //$NON-NLS-1$
-			    consumeWildcardBoundsSuper(); 			break;
+	    case 895 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); }  //$NON-NLS-1$
+			    consumeWildcardBoundsSuper();  
+				break;
 	 
-	    case 845 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); }  //$NON-NLS-1$
-			    consumeWildcard1(); 			break;
+	    case 896 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); }  //$NON-NLS-1$
+			    consumeWildcard1();  
+				break;
 	 
-	    case 846 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
-			    consumeWildcard1WithBounds(); 			break;
+	    case 897 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
+			    consumeWildcard1WithBounds();  
+				break;
 	 
-	    case 847 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); }  //$NON-NLS-1$
-			    consumeWildcardBounds1Extends(); 			break;
+	    case 898 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); }  //$NON-NLS-1$
+			    consumeWildcardBounds1Extends();  
+				break;
 	 
-	    case 848 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); }  //$NON-NLS-1$
-			    consumeWildcardBounds1Super(); 			break;
+	    case 899 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); }  //$NON-NLS-1$
+			    consumeWildcardBounds1Super();  
+				break;
 	 
-	    case 849 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); }  //$NON-NLS-1$
-			    consumeWildcard2(); 			break;
+	    case 900 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); }  //$NON-NLS-1$
+			    consumeWildcard2();  
+				break;
 	 
-	    case 850 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
-			    consumeWildcard2WithBounds(); 			break;
+	    case 901 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
+			    consumeWildcard2WithBounds();  
+				break;
 	 
-	    case 851 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); }  //$NON-NLS-1$
-			    consumeWildcardBounds2Extends(); 			break;
+	    case 902 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); }  //$NON-NLS-1$
+			    consumeWildcardBounds2Extends();  
+				break;
 	 
-	    case 852 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); }  //$NON-NLS-1$
-			    consumeWildcardBounds2Super(); 			break;
+	    case 903 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); }  //$NON-NLS-1$
+			    consumeWildcardBounds2Super();  
+				break;
 	 
-	    case 853 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
-			    consumeWildcard3(); 			break;
+	    case 904 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
+			    consumeWildcard3();  
+				break;
 	 
-	    case 854 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
-			    consumeWildcard3WithBounds(); 			break;
+	    case 905 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); }  //$NON-NLS-1$
+			    consumeWildcard3WithBounds();  
+				break;
 	 
-	    case 855 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); }  //$NON-NLS-1$
-			    consumeWildcardBounds3Extends(); 			break;
+	    case 906 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); }  //$NON-NLS-1$
+			    consumeWildcardBounds3Extends();  
+				break;
 	 
-	    case 856 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); }  //$NON-NLS-1$
-			    consumeWildcardBounds3Super(); 			break;
+	    case 907 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); }  //$NON-NLS-1$
+			    consumeWildcardBounds3Super();  
+				break;
 	 
-	    case 857 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt..."); }  //$NON-NLS-1$
-			    consumeTypeParameterHeader(); 			break;
+	    case 908 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt..."); }  //$NON-NLS-1$
+			    consumeTypeParameterHeader();  
+				break;
 	 
-	    case 858 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); }  //$NON-NLS-1$
-			    consumeTypeParameters(); 			break;
+	    case 909 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); }  //$NON-NLS-1$
+			    consumeTypeParameters();  
+				break;
 	 
-	    case 860 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeParameterList(); 			break;
+	    case 911 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeParameterList();  
+				break;
 	 
-	    case 862 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameterWithExtends(); 			break;
+	    case 913 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameterWithExtends();  
+				break;
 	 
-	    case 863 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameterWithExtendsAndBounds(); 			break;
+	    case 914 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameterWithExtendsAndBounds();  
+				break;
 	 
-	    case 865 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); }  //$NON-NLS-1$
-			    consumeAdditionalBoundList(); 			break;
+	    case 916 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); }  //$NON-NLS-1$
+			    consumeAdditionalBoundList();  
+				break;
 	 
-	    case 866 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); }  //$NON-NLS-1$
-			    consumeAdditionalBound(); 			break;
+	    case 917 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); }  //$NON-NLS-1$
+			    consumeAdditionalBound();  
+				break;
 	 
-	    case 868 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
-			    consumeTypeParameterList1(); 			break;
+	    case 919 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); }  //$NON-NLS-1$
+			    consumeTypeParameterList1();  
+				break;
 	 
-	    case 869 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); }  //$NON-NLS-1$
-			    consumeTypeParameter1(); 			break;
+	    case 920 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); }  //$NON-NLS-1$
+			    consumeTypeParameter1();  
+				break;
 	 
-	    case 870 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameter1WithExtends(); 			break;
+	    case 921 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameter1WithExtends();  
+				break;
 	 
-	    case 871 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
-			    consumeTypeParameter1WithExtendsAndBounds(); 			break;
+	    case 922 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); }  //$NON-NLS-1$
+			    consumeTypeParameter1WithExtendsAndBounds();  
+				break;
 	 
-	    case 873 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); }  //$NON-NLS-1$
-			    consumeAdditionalBoundList1(); 			break;
+	    case 924 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); }  //$NON-NLS-1$
+			    consumeAdditionalBoundList1();  
+				break;
 	 
-	    case 874 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); }  //$NON-NLS-1$
-			    consumeAdditionalBound1(); 			break;
+	    case 925 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); }  //$NON-NLS-1$
+			    consumeAdditionalBound1();  
+				break;
 	 
-	    case 880 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.PLUS); 			break;
+	    case 931 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.PLUS);  
+				break;
 	 
-	    case 881 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.MINUS); 			break;
+	    case 932 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.MINUS);  
+				break;
 	 
-	    case 884 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.TWIDDLE); 			break;
+	    case 935 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.TWIDDLE);  
+				break;
 	 
-	    case 885 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); }  //$NON-NLS-1$
-			    consumeUnaryExpression(OperatorIds.NOT); 			break;
+	    case 936 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); }  //$NON-NLS-1$
+			    consumeUnaryExpression(OperatorIds.NOT);  
+				break;
 	 
-	    case 888 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MULTIPLY); 			break;
+	    case 939 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MULTIPLY);  
+				break;
 	 
-	    case 889 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY"); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); 			break;
+	    case 940 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY"); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.MULTIPLY);  
+				break;
 	 
-	    case 890 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.DIVIDE); 			break;
+	    case 941 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.DIVIDE);  
+				break;
 	 
-	    case 891 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj DIVIDE..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.DIVIDE); 			break;
+	    case 942 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj DIVIDE..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.DIVIDE);  
+				break;
 	 
-	    case 892 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.REMAINDER); 			break;
+	    case 943 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.REMAINDER);  
+				break;
 	 
-	    case 893 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj REMAINDER"); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.REMAINDER); 			break;
+	    case 944 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= NameOrAj REMAINDER"); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.REMAINDER);  
+				break;
 	 
-	    case 895 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.PLUS); 			break;
+	    case 946 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.PLUS);  
+				break;
 	 
-	    case 896 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj PLUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.PLUS); 			break;
+	    case 947 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj PLUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.PLUS);  
+				break;
 	 
-	    case 897 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.MINUS); 			break;
+	    case 948 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.MINUS);  
+				break;
 	 
-	    case 898 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj MINUS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.MINUS); 			break;
+	    case 949 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= NameOrAj MINUS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.MINUS);  
+				break;
 	 
-	    case 900 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT); 			break;
+	    case 951 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LEFT_SHIFT);  
+				break;
 	 
-	    case 901 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); 			break;
+	    case 952 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT);  
+				break;
 	 
-	    case 902 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); 			break;
+	    case 953 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.RIGHT_SHIFT);  
+				break;
 	 
-	    case 903 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); 			break;
+	    case 954 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT);  
+				break;
 	 
-	    case 904 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); 			break;
+	    case 955 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
+				break;
 	 
-	    case 905 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); 			break;
+	    case 956 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= NameOrAj..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT);  
+				break;
 	 
-	    case 907 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS); 			break;
+	    case 958 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS);  
+				break;
 	 
-	    case 908 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LESS); 			break;
+	    case 959 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LESS);  
+				break;
 	 
-	    case 909 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER); 			break;
+	    case 960 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER);  
+				break;
 	 
-	    case 910 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.GREATER); 			break;
+	    case 961 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.GREATER);  
+				break;
 	 
-	    case 911 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.LESS_EQUAL); 			break;
+	    case 962 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.LESS_EQUAL);  
+				break;
 	 
-	    case 912 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj LESS_EQUAL..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); 			break;
+	    case 963 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj LESS_EQUAL..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL);  
+				break;
 	 
-	    case 913 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL); 			break;
+	    case 964 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.GREATER_EQUAL);  
+				break;
 	 
-	    case 914 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL"); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); 			break;
+	    case 965 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL"); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL);  
+				break;
 	 
-	    case 916 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= NameOrAj instanceof..."); }  //$NON-NLS-1$
-			    consumeInstanceOfExpressionWithName(); 			break;
+	    case 967 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= NameOrAj instanceof..."); }  //$NON-NLS-1$
+			    consumeInstanceOfExpressionWithName();  
+				break;
 	 
-	    case 917 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeInstanceOfExpression(); 			break;
+	    case 968 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeInstanceOfExpression();  
+				break;
 	 
-	    case 919 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); 			break;
+	    case 970 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.EQUAL_EQUAL);  
+				break;
 	 
-	    case 920 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); 			break;
+	    case 971 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL);  
+				break;
 	 
-	    case 921 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeEqualityExpression(OperatorIds.NOT_EQUAL); 			break;
+	    case 972 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeEqualityExpression(OperatorIds.NOT_EQUAL);  
+				break;
 	 
-	    case 922 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj NOT_EQUAL..."); }  //$NON-NLS-1$
-			    consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); 			break;
+	    case 973 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= NameOrAj NOT_EQUAL..."); }  //$NON-NLS-1$
+			    consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL);  
+				break;
 	 
-	    case 924 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND); 			break;
+	    case 975 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND);  
+				break;
 	 
-	    case 925 : if (DEBUG) { System.out.println("AndExpression_NotName ::= NameOrAj AND..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.AND); 			break;
+	    case 976 : if (DEBUG) { System.out.println("AndExpression_NotName ::= NameOrAj AND..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.AND);  
+				break;
 	 
-	    case 927 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.XOR); 			break;
+	    case 978 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.XOR);  
+				break;
 	 
-	    case 928 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= NameOrAj XOR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.XOR); 			break;
+	    case 979 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= NameOrAj XOR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.XOR);  
+				break;
 	 
-	    case 930 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR); 			break;
+	    case 981 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR);  
+				break;
 	 
-	    case 931 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= NameOrAj OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.OR); 			break;
+	    case 982 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= NameOrAj OR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.OR);  
+				break;
 	 
-	    case 933 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.AND_AND); 			break;
+	    case 984 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.AND_AND);  
+				break;
 	 
-	    case 934 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= NameOrAj AND_AND..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.AND_AND); 			break;
+	    case 985 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= NameOrAj AND_AND..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.AND_AND);  
+				break;
 	 
-	    case 936 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeBinaryExpression(OperatorIds.OR_OR); 			break;
+	    case 987 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeBinaryExpression(OperatorIds.OR_OR);  
+				break;
 	 
-	    case 937 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= NameOrAj OR_OR..."); }  //$NON-NLS-1$
-			    consumeBinaryExpressionWithName(OperatorIds.OR_OR); 			break;
+	    case 988 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= NameOrAj OR_OR..."); }  //$NON-NLS-1$
+			    consumeBinaryExpressionWithName(OperatorIds.OR_OR);  
+				break;
 	 
-	    case 939 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); }  //$NON-NLS-1$
-			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; 			break;
+	    case 990 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); }  //$NON-NLS-1$
+			    consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ;  
+				break;
 	 
-	    case 940 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= NameOrAj QUESTION..."); }  //$NON-NLS-1$
-			    consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; 			break;
+	    case 991 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= NameOrAj QUESTION..."); }  //$NON-NLS-1$
+			    consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ;  
+				break;
 	 
-	    case 944 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclarationHeaderName() ; 			break;
+	    case 995 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclarationHeaderName() ;  
+				break;
 	 
-	    case 945 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; 			break;
+	    case 996 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ;  
+				break;
 	 
-	    case 946 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; 			break;
+	    case 997 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ;  
+				break;
 	 
-	    case 947 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclarationHeaderName() ; 			break;
+	    case 998 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclarationHeaderName() ;  
+				break;
 	 
-	    case 948 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclarationHeader() ; 			break;
+	    case 999 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclarationHeader() ;  
+				break;
 	 
-	    case 949 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeDeclaration() ; 			break;
+	    case 1000 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeDeclaration() ;  
+				break;
 	 
-	    case 951 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyAnnotationTypeMemberDeclarationsopt() ; 			break;
+	    case 1002 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyAnnotationTypeMemberDeclarationsopt() ;  
+				break;
 	 
-	    case 952 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeMemberDeclarationsopt() ; 			break;
+	    case 1003 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeMemberDeclarationsopt() ;  
+				break;
 	 
-	    case 954 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeMemberDeclarations() ; 			break;
+	    case 1005 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeMemberDeclarations() ;  
+				break;
 	 
-	    case 955 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderNameWithTypeParameters(true); 			break;
+	    case 1006 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderNameWithTypeParameters(true);  
+				break;
 	 
-	    case 956 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeMethodHeaderName(true); 			break;
+	    case 1007 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeMethodHeaderName(true);  
+				break;
 	 
-	    case 957 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyMethodHeaderDefaultValue() ; 			break;
+	    case 1008 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyMethodHeaderDefaultValue() ;  
+				break;
 	 
-	    case 958 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); }  //$NON-NLS-1$
-			    consumeMethodHeaderDefaultValue(); 			break;
+	    case 1009 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); }  //$NON-NLS-1$
+			    consumeMethodHeaderDefaultValue();  
+				break;
 	 
-	    case 959 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 1010 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName"); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
-	    case 960 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); }  //$NON-NLS-1$
-			    consumeAnnotationTypeMemberDeclaration() ; 			break;
+	    case 1011 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); }  //$NON-NLS-1$
+			    consumeAnnotationTypeMemberDeclaration() ;  
+				break;
 	 
-	    case 968 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableNameOrAj"); }  //$NON-NLS-1$
-			    consumeAnnotationName() ; 			break;
+	    case 1019 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableNameOrAj"); }  //$NON-NLS-1$
+			    consumeAnnotationName() ;  
+				break;
 	 
-	    case 969 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
-			    consumeNormalAnnotation(false) ; 			break;
+	    case 1020 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
+			    consumeNormalAnnotation(false) ;  
+				break;
 	 
-	    case 970 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); }  //$NON-NLS-1$
-			    consumeEmptyMemberValuePairsopt() ; 			break;
+	    case 1021 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); }  //$NON-NLS-1$
+			    consumeEmptyMemberValuePairsopt() ;  
+				break;
 	 
-	    case 973 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); }  //$NON-NLS-1$
-			    consumeMemberValuePairs() ; 			break;
+	    case 1024 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); }  //$NON-NLS-1$
+			    consumeMemberValuePairs() ;  
+				break;
 	 
-	    case 974 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); }  //$NON-NLS-1$
-			    consumeMemberValuePair() ; 			break;
+	    case 1025 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleNameOrAj EQUAL..."); }  //$NON-NLS-1$
+			    consumeMemberValuePair() ;  
+				break;
 	 
-	    case 975 : if (DEBUG) { System.out.println("EnterMemberValue ::="); }  //$NON-NLS-1$
-			    consumeEnterMemberValue() ; 			break;
+	    case 1026 : if (DEBUG) { System.out.println("EnterMemberValue ::="); }  //$NON-NLS-1$
+			    consumeEnterMemberValue() ;  
+				break;
 	 
-	    case 976 : if (DEBUG) { System.out.println("ExitMemberValue ::="); }  //$NON-NLS-1$
-			    consumeExitMemberValue() ; 			break;
+	    case 1027 : if (DEBUG) { System.out.println("ExitMemberValue ::="); }  //$NON-NLS-1$
+			    consumeExitMemberValue() ;  
+				break;
 	 
-	    case 978 : if (DEBUG) { System.out.println("MemberValue ::= NameOrAj"); }  //$NON-NLS-1$
-			    consumeMemberValueAsName() ; 			break;
+	    case 1029 : if (DEBUG) { System.out.println("MemberValue ::= NameOrAj"); }  //$NON-NLS-1$
+			    consumeMemberValueAsName() ;  
+				break;
 	 
-	    case 981 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
-			    consumeMemberValueArrayInitializer() ; 			break;
+	    case 1032 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
+			    consumeMemberValueArrayInitializer() ;  
+				break;
 	 
-	    case 982 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
-			    consumeMemberValueArrayInitializer() ; 			break;
+	    case 1033 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
+			    consumeMemberValueArrayInitializer() ;  
+				break;
 	 
-	    case 983 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
-			    consumeEmptyMemberValueArrayInitializer() ; 			break;
+	    case 1034 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
+			    consumeEmptyMemberValueArrayInitializer() ;  
+				break;
 	 
-	    case 984 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
-			    consumeEmptyMemberValueArrayInitializer() ; 			break;
+	    case 1035 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); }  //$NON-NLS-1$
+			    consumeEmptyMemberValueArrayInitializer() ;  
+				break;
 	 
-	    case 985 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); }  //$NON-NLS-1$
-			    consumeEnterMemberValueArrayInitializer() ; 			break;
+	    case 1036 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); }  //$NON-NLS-1$
+			    consumeEnterMemberValueArrayInitializer() ;  
+				break;
 	 
-	    case 987 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); }  //$NON-NLS-1$
-			    consumeMemberValues() ; 			break;
+	    case 1038 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); }  //$NON-NLS-1$
+			    consumeMemberValues() ;  
+				break;
 	 
-	    case 988 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); }  //$NON-NLS-1$
-			    consumeMarkerAnnotation(false) ; 			break;
+	    case 1039 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); }  //$NON-NLS-1$
+			    consumeMarkerAnnotation(false) ;  
+				break;
 	 
-	    case 989 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); }  //$NON-NLS-1$
-			    consumeSingleMemberAnnotationMemberValue() ; 			break;
+	    case 1040 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); }  //$NON-NLS-1$
+			    consumeSingleMemberAnnotationMemberValue() ;  
+				break;
 	 
-	    case 990 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
-			    consumeSingleMemberAnnotation(false) ; 			break;
+	    case 1041 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); }  //$NON-NLS-1$
+			    consumeSingleMemberAnnotation(false) ;  
+				break;
 	 
-	    case 991 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); }  //$NON-NLS-1$
-			    consumeRecoveryMethodHeaderNameWithTypeParameters(); 			break;
+	    case 1042 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt..."); }  //$NON-NLS-1$
+			    consumeRecoveryMethodHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 992 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
-			    consumeRecoveryMethodHeaderName(); 			break;
+	    case 1043 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); }  //$NON-NLS-1$
+			    consumeRecoveryMethodHeaderName();  
+				break;
 	 
-	    case 993 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); }  //$NON-NLS-1$
-			    consumeRecoveryMethodHeaderNameWithTypeParameters(); 			break;
+	    case 1044 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); }  //$NON-NLS-1$
+			    consumeRecoveryMethodHeaderNameWithTypeParameters();  
+				break;
 	 
-	    case 994 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); }  //$NON-NLS-1$
-			    consumeRecoveryMethodHeaderName(); 			break;
+	    case 1045 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); }  //$NON-NLS-1$
+			    consumeRecoveryMethodHeaderName();  
+				break;
 	 
-	    case 995 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 1046 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
-	    case 996 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
-			    consumeMethodHeader(); 			break;
+	    case 1047 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); }  //$NON-NLS-1$
+			    consumeMethodHeader();  
+				break;
 	 
 		}
 	}
 
 
-
-
 // AspectJ: new method
 // TODO - review if this is right, should we make the choice in the java.g file?
 protected void consumeQualifiedName() {
@@ -3134,6 +3871,7 @@
 		this.restartRecovery = true;
 	}
 
+@Override
 protected void consumeSimpleAssertStatement() {
 	super.consumeSimpleAssertStatement();
 }
@@ -3164,6 +3902,7 @@
 }
 
 // don't try to recover if we're parsing AspectJ constructs
+@Override
 protected boolean shouldTryToRecover() {
 	int index = 0;
 	ASTNode node;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
index e1382b0..72a5433 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2014 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -14,24 +14,24 @@
  about the parser such as the number of rules in the grammar, the starting state, etc...*/
 public interface ParserBasicInformation {
 
-	   public final static int
+	int
 
-	      ERROR_SYMBOL      = 125,
-	      MAX_NAME_LENGTH   = 41,
-	      NUM_STATES        = 1275,
+    ERROR_SYMBOL      = 135,
+    MAX_NAME_LENGTH   = 41,
+    NUM_STATES        = 1325,
 
-	      NT_OFFSET         = 125,
-	      SCOPE_UBOUND      = 373,
-	      SCOPE_SIZE        = 374,
-	      LA_STATE_OFFSET   = 19301,
-	      MAX_LA            = 1,
-	      NUM_RULES         = 996,
-	      NUM_TERMINALS     = 125,
-	      NUM_NON_TERMINALS = 424,
-	      NUM_SYMBOLS       = 549,
-	      START_STATE       = 1046,
-	      EOFT_SYMBOL       = 70,
-	      EOLT_SYMBOL       = 70,
-	      ACCEPT_ACTION     = 19300,
-	      ERROR_ACTION      = 19301;
+    NT_OFFSET         = 135,
+    SCOPE_UBOUND      = 373,
+    SCOPE_SIZE        = 374,
+    LA_STATE_OFFSET   = 19529,
+    MAX_LA            = 1,
+    NUM_RULES         = 1047,
+    NUM_TERMINALS     = 135,
+    NUM_NON_TERMINALS = 452,
+    NUM_SYMBOLS       = 587,
+    START_STATE       = 1246,
+    EOFT_SYMBOL       = 70,
+    EOLT_SYMBOL       = 70,
+    ACCEPT_ACTION     = 19528,
+    ERROR_ACTION      = 19529;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.java
index 2879460..987c1cc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredAnnotation.java
@@ -42,6 +42,7 @@
 		this.sourceStart = sourceStart;
 	}
 
+	@Override
 	public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
 		if (this.annotation == null && (typeDeclaration.bits & ASTNode.IsAnonymousType) != 0){
 			// ignore anonymous type in annotations when annotation isn't fully recovered
@@ -50,6 +51,7 @@
 		return super.add(typeDeclaration, bracketBalanceValue);
 	}
 
+	@Override
 	public RecoveredElement addAnnotationName(int identPtr, int identLengthPtr, int annotationStart, int bracketBalanceValue) {
 
 		RecoveredAnnotation element = new RecoveredAnnotation(identPtr, identLengthPtr, annotationStart, this, bracketBalanceValue);
@@ -64,6 +66,7 @@
 		return this;
 	}
 
+	@Override
 	public void updateFromParserState() {
 		Parser parser = parser();
 
@@ -180,10 +183,12 @@
 		}
 	}
 
+	@Override
 	public ASTNode parseTree() {
 		return this.annotation;
 	}
 
+	@Override
 	public void resetPendingModifiers() {
 		if (this.parent != null) this.parent.resetPendingModifiers();
 	}
@@ -192,6 +197,7 @@
 		this.kind = kind;
 	}
 
+	@Override
 	public int sourceEnd() {
 		if (this.annotation == null) {
 			Parser parser = parser();
@@ -204,6 +210,7 @@
 		return this.annotation.declarationSourceEnd;
 	}
 
+	@Override
 	public String toString(int tab) {
 		if (this.annotation != null) {
 			return tabString(tab) + "Recovered annotation:\n" + this.annotation.print(tab + 1, new StringBuffer(10)); //$NON-NLS-1$
@@ -216,6 +223,7 @@
 		return this.annotation;
 	}
 
+	@Override
 	public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 		if (this.bracketBalance > 0){ // was an member value array initializer
 			this.bracketBalance--;
@@ -227,6 +235,7 @@
 		return this;
 	}
 
+	@Override
 	public void updateParseTree() {
 		updatedAnnotationReference();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.java
index 3d044cd..7042c4b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredBlock.java
@@ -44,6 +44,7 @@
 
 	this.preserveContent = parser().methodRecoveryActivated || parser().statementRecoveryActivated;
 }
+@Override
 public RecoveredElement add(AbstractMethodDeclaration methodDeclaration, int bracketBalanceValue) {
 	if (this.parent != null && this.parent instanceof RecoveredMethod) {
 		RecoveredMethod enclosingRecoveredMethod = (RecoveredMethod) this.parent;
@@ -58,6 +59,7 @@
 /*
  * Record a nested block declaration
  */
+@Override
 public RecoveredElement add(Block nestedBlockDeclaration, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -85,6 +87,7 @@
 /*
  * Record a local declaration
  */
+@Override
 public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {
 	return this.add(localDeclaration, bracketBalanceValue, false);
 }
@@ -144,6 +147,7 @@
 /*
  * Record a statement declaration
  */
+@Override
 public RecoveredElement add(Statement stmt, int bracketBalanceValue) {
 	return this.add(stmt, bracketBalanceValue, false);
 }
@@ -171,6 +175,7 @@
 /*
  * Addition of a type to an initializer (act like inside method body)
  */
+@Override
 public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
 	return this.add(typeDeclaration, bracketBalanceValue, false);
 }
@@ -201,6 +206,7 @@
 	if (typeDeclaration.declarationSourceEnd == 0) return element;
 	return this;
 }
+@Override
 public RecoveredElement addAnnotationName(int identifierPtr, int identifierLengthPtr, int annotationStart, int bracketBalanceValue) {
 	if (this.pendingAnnotations == null) {
 		this.pendingAnnotations = new RecoveredAnnotation[5];
@@ -222,6 +228,7 @@
 
 	return element;
 }
+@Override
 public void addModifier(int flag, int modifiersSourceStart) {
 	this.pendingModifiers |= flag;
 
@@ -258,15 +265,18 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.blockDeclaration;
 }
+@Override
 public void resetPendingModifiers() {
 	this.pendingAnnotations = null;
 	this.pendingAnnotationCount = 0;
 	this.pendingModifiers = 0;
 	this.pendingModifersSourceStart = -1;
 }
+@Override
 public String toString(int tab) {
 	StringBuffer result = new StringBuffer(tabString(tab));
 	result.append("Recovered block:\n"); //$NON-NLS-1$
@@ -382,6 +392,7 @@
 /*
  * Rebuild a statement from the nested structure which is in scope
  */
+@Override
 public Statement updatedStatement(int depth, Set<TypeDeclaration> knownTypes){
 
 	return updatedBlock(depth, knownTypes);
@@ -390,6 +401,7 @@
  * A closing brace got consumed, might have closed the current element,
  * in which case both the currentElement is exited
  */
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if ((--this.bracketBalance <= 0) && (this.parent != null)){
 		this.updateSourceEndIfNecessary(braceStart, braceEnd);
@@ -411,6 +423,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 
 	// create a nested block
@@ -421,6 +434,7 @@
 /*
  * Final update the corresponding parse node
  */
+@Override
 public void updateParseTree(){
 
 	updatedBlock(0, new HashSet<TypeDeclaration>());
@@ -428,6 +442,7 @@
 /*
  * Record a field declaration
  */
+@Override
 public RecoveredElement add(FieldDeclaration fieldDeclaration, int bracketBalanceValue) {
 	resetPendingModifiers();
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java
index 3c7564c..46f1400 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,6 +20,8 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
@@ -73,6 +75,17 @@
 	return this.parent.add(nestedBlockDeclaration, bracketBalanceValue);
 }
 /*
+ *	Record an e reference
+ */
+public RecoveredElement add(ModuleStatement moduleStatement, int bracketBalanceValue){
+
+	/* default behavior is to delegate recording to parent if any */
+	resetPendingModifiers();
+	if (this.parent == null) return this; // ignore
+	this.updateSourceEndIfNecessary(previousAvailableLineEnd(moduleStatement.declarationSourceStart - 1));
+	return this.parent.add(moduleStatement, bracketBalanceValue);
+}
+/*
  * Record a field declaration
  */
 public RecoveredElement add(FieldDeclaration fieldDeclaration, int bracketBalanceValue) {
@@ -125,6 +138,12 @@
 	this.updateSourceEndIfNecessary(previousAvailableLineEnd(statement.sourceStart - 1));
 	return this.parent.add(statement, bracketBalanceValue);
 }
+public RecoveredElement add(ModuleDeclaration moduleDeclaration, int bracketBalanceValue){
+	resetPendingModifiers();
+	if (this.parent == null) return this; // ignore
+	this.updateSourceEndIfNecessary(previousAvailableLineEnd(moduleDeclaration.declarationSourceStart - 1));
+	return this.parent.add(moduleDeclaration, bracketBalanceValue);
+}
 /*
  *	Record a type declaration
  */
@@ -263,6 +282,10 @@
 public int sourceEnd(){
 	return 0;
 }
+public int getLastStart() {
+	ASTNode parseTree = parseTree();
+	return parseTree == null ? -1 : parseTree.sourceStart;
+}
 protected String tabString(int tab) {
 	StringBuffer result = new StringBuffer();
 	for (int i = tab; i > 0; i--) {
@@ -280,6 +303,7 @@
 	}
 	return current;
 }
+@Override
 public String toString() {
 	return toString(0);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.java
new file mode 100644
index 0000000..fcaeed4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExport.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+
+public class RecoveredExport extends RecoveredElement {
+
+	public ExportsStatement exportReference;
+	RecoveredModuleReference[] targets;
+	int targetCount = 0;
+	
+	public RecoveredExport(ExportsStatement exportReference, RecoveredElement parent, int bracketBalance) {
+		super(parent, bracketBalance);
+		this.exportReference = exportReference;
+	}
+	public RecoveredElement add(ModuleReference target,  int bracketBalance1) {
+
+		if (this.targets == null) {
+			this.targets = new RecoveredModuleReference[5];
+			this.targetCount = 0;
+		} else {
+			if (this.targetCount == this.targets.length) {
+				System.arraycopy(
+					this.targets,
+					0,
+					(this.targets = new RecoveredModuleReference[2 * this.targetCount]),
+					0,
+					this.targetCount);
+			}
+		}
+		RecoveredModuleReference element = new RecoveredModuleReference(target, this, bracketBalance1);
+		this.targets[this.targetCount++] = element;
+
+		/* if target not finished, then target becomes current */
+		if (target.sourceEnd == 0) return element;
+		return this;
+		
+	}
+	/*
+	 * Answer the associated parsed structure
+	 */
+	@Override
+	public ASTNode parseTree(){
+		return this.exportReference;
+	}
+	/*
+	 * Answer the very source end of the corresponding parse node
+	 */
+	@Override
+	public int sourceEnd(){
+		return this.exportReference.declarationSourceEnd;
+	}
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered export: " + this.exportReference.toString(); //$NON-NLS-1$
+	}
+	public ExportsStatement updatedExportReference(){
+		if (this.targetCount > 0) {
+			int existingCount = this.exportReference.targets != null ? this.exportReference.targets.length : 0, actualCount = 0;
+			ModuleReference[] moduleRef1 = new ModuleReference[existingCount + this.targetCount];
+			if (existingCount > 0) {
+				System.arraycopy(this.exportReference.targets, 0, moduleRef1, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0, l = this.targetCount; i < l; ++i) {
+				moduleRef1[actualCount++] = this.targets[i].updatedModuleReference();
+			}
+			this.exportReference.targets = moduleRef1;
+		}
+		return this.exportReference;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedExportReference();
+	}
+	/*
+	 * Update the declarationSourceEnd of the corresponding parse node
+	 */
+	@Override
+	public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
+		if (this.exportReference.declarationSourceEnd == 0) {
+			this.exportReference.declarationSourceEnd = bodyEnd;
+			this.exportReference.declarationEnd = bodyEnd;
+		}
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.java
new file mode 100644
index 0000000..17b4486
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredExportsStatement.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+
+public class RecoveredExportsStatement extends RecoveredPackageVisibilityStatement {
+
+	public RecoveredExportsStatement(ExportsStatement exportsStatement, RecoveredElement parent, int bracketBalance) {
+		super(exportsStatement, parent, bracketBalance);
+	}
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered exports stmt: " + super.toString(); //$NON-NLS-1$
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
index 57502e0..da2c965 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
@@ -52,6 +53,7 @@
 /*
  * Record a local declaration
  */
+@Override
 public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {
 	if (this.lambdaNestLevel > 0) // current element is really the lambda which is recovered in full elsewhere.
 		return this;
@@ -60,6 +62,7 @@
 /*
  * Record a field declaration
  */
+@Override
 public RecoveredElement add(FieldDeclaration addedfieldDeclaration, int bracketBalanceValue) {
 
 	/* default behavior is to delegate recording to parent if any */
@@ -81,6 +84,7 @@
  * Record an expression statement if field is expecting an initialization expression,
  * used for completion inside field initializers.
  */
+@Override
 public RecoveredElement add(Statement statement, int bracketBalanceValue) {
 
 	if (this.alreadyCompletedFieldInitialization || !(statement instanceof Expression)) {
@@ -89,9 +93,16 @@
 		if (statement.sourceEnd > 0)
 				this.alreadyCompletedFieldInitialization = true;
 		// else we may still be inside the initialization, having parsed only a part of it yet
-		this.fieldDeclaration.initialization = (Expression)statement;
-		this.fieldDeclaration.declarationSourceEnd = statement.sourceEnd;
-		this.fieldDeclaration.declarationEnd = statement.sourceEnd;
+		if (!(statement instanceof AllocationExpression) && 
+				this.fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
+			AllocationExpression alloc = new AllocationExpression();
+			alloc.arguments = new Expression[] {(Expression) statement};
+			this.fieldDeclaration.initialization = alloc;
+		} else {
+			this.fieldDeclaration.initialization = (Expression) statement;
+			this.fieldDeclaration.declarationSourceEnd = statement.sourceEnd;
+			this.fieldDeclaration.declarationEnd = statement.sourceEnd;
+		}
 		return this;
 	}
 }
@@ -100,6 +111,7 @@
  * and the type is an anonymous type.
  * Used for completion inside field initializers.
  */
+@Override
 public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
 
 	if (this.alreadyCompletedFieldInitialization
@@ -153,15 +165,18 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.fieldDeclaration;
 }
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.fieldDeclaration.declarationSourceEnd;
 }
+@Override
 public String toString(int tab){
 	StringBuffer buffer = new StringBuffer(tabString(tab));
 	buffer.append("Recovered field:\n"); //$NON-NLS-1$
@@ -241,8 +256,16 @@
 					}
 				}
 			}
-			if (this.anonymousTypeCount > 0) this.fieldDeclaration.bits |= ASTNode.HasLocalType;
-		} else if(this.fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
+			if (this.anonymousTypeCount > 0) {
+				this.fieldDeclaration.bits |= ASTNode.HasLocalType;
+				if (recoveredInitializers != null) {
+					recoveredInitializers.sourceStart = this.anonymousTypes[0].typeDeclaration.sourceStart;
+					recoveredInitializers.sourceEnd = this.anonymousTypes[this.anonymousTypeCount-1].
+							typeDeclaration.sourceEnd;
+				}
+			}
+		}
+		else if(this.fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
 			// fieldDeclaration is an enum constant
 			for (int i = 0; i < this.anonymousTypeCount; i++){
 				RecoveredType recoveredType = this.anonymousTypes[i];
@@ -265,6 +288,7 @@
  *
  * Fields have no associated braces, thus if matches, then update parent.
  */
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if (this.bracketBalance > 0){ // was an array initializer
 		this.bracketBalance--;
@@ -291,6 +315,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 	if (this.fieldDeclaration.declarationSourceEnd == 0) {
 		if (this.fieldDeclaration.type instanceof ArrayTypeReference || this.fieldDeclaration.type instanceof ArrayQualifiedTypeReference) {
@@ -314,12 +339,14 @@
 	this.updateSourceEndIfNecessary(braceStart - 1, braceEnd - 1);
 	return this.parent.updateOnOpeningBrace(braceStart, braceEnd);
 }
+@Override
 public void updateParseTree(){
 	updatedFieldDeclaration(0, new HashSet<TypeDeclaration>());
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
 	if (this.fieldDeclaration.declarationSourceEnd == 0) {
 		this.fieldDeclaration.declarationSourceEnd = bodyEnd;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.java
index 13cb2e6..329e66e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredImport.java
@@ -26,15 +26,18 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.importReference;
 }
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.importReference.declarationSourceEnd;
 }
+@Override
 public String toString(int tab) {
 	return tabString(tab) + "Recovered import: " + this.importReference.toString(); //$NON-NLS-1$
 }
@@ -42,12 +45,14 @@
 
 	return this.importReference;
 }
+@Override
 public void updateParseTree(){
 	updatedImportReference();
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
 	if (this.importReference.declarationSourceEnd == 0) {
 		this.importReference.declarationSourceEnd = bodyEnd;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.java
index 33d62b9..1a47361 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredInitializer.java
@@ -45,6 +45,7 @@
 /*
  * Record a nested block declaration
  */
+@Override
 public RecoveredElement add(Block nestedBlockDeclaration, int bracketBalanceValue) {
 
 	/* default behavior is to delegate recording to parent if any,
@@ -64,13 +65,15 @@
 	}
 	if (this.initializerBody == null) {
 		return this.initializerBody = new RecoveredBlock(nestedBlockDeclaration, this, bracketBalanceValue);
-	}
+	}	
+	this.initializerBody.blockDeclaration.sourceEnd = 0; /* needed to allow adding more elements to the existing initializerBody */
 	if (nestedBlockDeclaration.sourceEnd == 0) return this.initializerBody;
 	return this.initializerBody.add(nestedBlockDeclaration, bracketBalanceValue, true);
 }
 /*
  * Record a field declaration (act like inside method body)
  */
+@Override
 public RecoveredElement add(FieldDeclaration newFieldDeclaration, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -100,6 +103,7 @@
 /*
  * Record a local declaration - regular method should have been created a block body
  */
+@Override
 public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {
 
 	/* do not consider a type starting passed the type end (if set)
@@ -135,6 +139,7 @@
 /*
  * Record a statement - regular method should have been created a block body
  */
+@Override
 public RecoveredElement add(Statement statement, int bracketBalanceValue) {
 
 	/* do not consider a statement starting passed the initializer end (if set)
@@ -161,6 +166,7 @@
 
 	return element.add(statement, bracketBalanceValue);
 }
+@Override
 public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
 
 	/* do not consider a type starting passed the type end (if set)
@@ -218,6 +224,7 @@
 	}
 	return element;
 }
+@Override
 public RecoveredElement addAnnotationName(int identifierPtr, int identifierLengthPtr, int annotationStart, int bracketBalanceValue) {
 	if (this.pendingAnnotations == null) {
 		this.pendingAnnotations = new RecoveredAnnotation[5];
@@ -239,6 +246,7 @@
 
 	return element;
 }
+@Override
 public void addModifier(int flag, int modifiersSourceStart) {
 	this.pendingModifiers |= flag;
 
@@ -246,12 +254,14 @@
 		this.pendingModifersSourceStart = modifiersSourceStart;
 	}
 }
+@Override
 public void resetPendingModifiers() {
 	this.pendingAnnotations = null;
 	this.pendingAnnotationCount = 0;
 	this.pendingModifiers = 0;
 	this.pendingModifersSourceStart = -1;
 }
+@Override
 public String toString(int tab) {
 	StringBuffer result = new StringBuffer(tabString(tab));
 	result.append("Recovered initializer:\n"); //$NON-NLS-1$
@@ -268,6 +278,7 @@
 	}
 	return result.toString();
 }
+@Override
 public FieldDeclaration updatedFieldDeclaration(int depth, Set<TypeDeclaration> knownTypes){
 
 	if (this.initializerBody != null){
@@ -293,6 +304,7 @@
  * A closing brace got consumed, might have closed the current element,
  * in which case both the currentElement is exited
  */
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if ((--this.bracketBalance <= 0) && (this.parent != null)){
 		this.updateSourceEndIfNecessary(braceStart, braceEnd);
@@ -304,6 +316,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 	this.bracketBalance++;
 	return this; // request to restart
@@ -311,6 +324,7 @@
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int braceStart, int braceEnd){
 	if (this.fieldDeclaration.declarationSourceEnd == 0) {
 		Initializer initializer = (Initializer)this.fieldDeclaration;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.java
index 43d7488..4f9b663 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredLocalVariable.java
@@ -42,6 +42,7 @@
 /*
  * Record an expression statement if local variable is expecting an initialization expression.
  */
+@Override
 public RecoveredElement add(Statement stmt, int bracketBalanceValue) {
 
 	if (this.alreadyCompletedLocalInitialization || !(stmt instanceof Expression)) {
@@ -80,18 +81,22 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.localDeclaration;
 }
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.localDeclaration.declarationSourceEnd;
 }
+@Override
 public String toString(int tab) {
 	return tabString(tab) + "Recovered local variable:\n" + this.localDeclaration.print(tab + 1, new StringBuffer(10)); //$NON-NLS-1$
 }
+@Override
 public Statement updatedStatement(int depth, Set knownTypes){
 	/* update annotations */
 	if (this.modifiers != 0) {
@@ -125,6 +130,7 @@
  *
  * Fields have no associated braces, thus if matches, then update parent.
  */
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if (this.bracketBalance > 0){ // was an array initializer
 		this.bracketBalance--;
@@ -140,6 +146,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 	if (this.localDeclaration.declarationSourceEnd == 0
 		&& (this.localDeclaration.type instanceof ArrayTypeReference || this.localDeclaration.type instanceof ArrayQualifiedTypeReference)
@@ -151,12 +158,14 @@
 	this.updateSourceEndIfNecessary(braceStart - 1, braceEnd - 1);
 	return this.parent.updateOnOpeningBrace(braceStart, braceEnd);
 }
+@Override
 public void updateParseTree(){
 	updatedStatement(0, new HashSet());
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
 	if (this.localDeclaration.declarationSourceEnd == 0) {
 		this.localDeclaration.declarationSourceEnd = bodyEnd;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.java
index 0c11f15..7a99342 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredMethod.java
@@ -72,6 +72,7 @@
 /*
  * Record a nested block declaration
  */
+@Override
 public RecoveredElement add(Block nestedBlockDeclaration, int bracketBalanceValue) {
 	return this.add(nestedBlockDeclaration, bracketBalanceValue, false);
 }
@@ -107,6 +108,7 @@
 /*
  * Record a field declaration
  */
+@Override
 public RecoveredElement add(FieldDeclaration fieldDeclaration, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -147,6 +149,7 @@
 /*
  * Record a local declaration - regular method should have been created a block body
  */
+@Override
 public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -194,6 +197,7 @@
 /*
  * Record a statement - regular method should have been created a block body
  */
+@Override
 public RecoveredElement add(Statement statement, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -222,6 +226,7 @@
 	}
 	return this.methodBody.add(statement, bracketBalanceValue, true);
 }
+@Override
 public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
 
 	/* do not consider a type starting passed the type end (if set)
@@ -297,9 +302,11 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.methodDeclaration;
 }
+@Override
 public void resetPendingModifiers() {
 	this.pendingAnnotations = null;
 	this.pendingAnnotationCount = 0;
@@ -309,9 +316,11 @@
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.methodDeclaration.declarationSourceEnd;
 }
+@Override
 public String toString(int tab) {
 	StringBuffer result = new StringBuffer(tabString(tab));
 	result.append("Recovered method:\n"); //$NON-NLS-1$
@@ -337,6 +346,7 @@
 /*
  * Update the bodyStart of the corresponding parse node
  */
+@Override
 public void updateBodyStart(int bodyStart){
 	this.foundOpeningBrace = true;
 	this.methodDeclaration.bodyStart = bodyStart;
@@ -416,6 +426,7 @@
  * Update the corresponding parse node from parser state which
  * is about to disappear because of restarting recovery
  */
+@Override
 public void updateFromParserState(){
 	// if parent is null then recovery already occured in diet parser.
 	if(bodyStartsAtHeaderEnd() && this.parent != null){
@@ -537,6 +548,7 @@
 		}
 	}
 }
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if(this.methodDeclaration.isAnnotationMethod()) {
 		this.updateSourceEndIfNecessary(braceStart, braceEnd);
@@ -560,6 +572,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 
 	/* in case the opening brace is close enough to the signature */
@@ -579,12 +592,14 @@
 	}
 	return super.updateOnOpeningBrace(braceStart, braceEnd);
 }
+@Override
 public void updateParseTree(){
 	updatedMethodDeclaration(0, new HashSet<TypeDeclaration>());
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int braceStart, int braceEnd){
 	if (this.methodDeclaration.declarationSourceEnd == 0) {
 		if(parser().rBraceSuccessorStart >= braceEnd) {
@@ -596,6 +611,7 @@
 		}
 	}
 }
+@Override
 public RecoveredElement addAnnotationName(int identifierPtr, int identifierLengthPtr, int annotationStart, int bracketBalanceValue) {
 	if (this.pendingAnnotations == null) {
 		this.pendingAnnotations = new RecoveredAnnotation[5];
@@ -617,6 +633,7 @@
 
 	return element;
 }
+@Override
 public void addModifier(int flag, int modifiersSourceStart) {
 	this.pendingModifiers |= flag;
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.java
new file mode 100644
index 0000000..a22a694
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModule.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement;
+
+public class RecoveredModule extends RecoveredElement {
+	
+	public RecoveredExportsStatement[] exports;
+	public int exportCount;
+	public RecoveredOpensStatement[] opens;
+	public int opensCount;
+	public RecoveredRequiresStatement[] requires;
+	public int requiresCount;
+	public RecoveredUsesStatement[] uses;
+	public int usesCount;
+	public RecoveredProvidesStatement[] services;
+	public int servicesCount;
+	public ModuleDeclaration moduleDeclaration;
+
+	public RecoveredModule(ModuleDeclaration moduleDeclaration, RecoveredElement parent, int bracketBalance) {
+		super(parent, bracketBalance);
+		this.moduleDeclaration = moduleDeclaration;
+	}
+	@Override
+	public RecoveredElement add(ModuleStatement moduleStatement, int bracketBalanceValue) {
+		
+		// TODO: can't we do away with all these additions except for ProvidesStatement - to check
+		// if there are any corner cases that uses these.
+		if (moduleStatement instanceof ExportsStatement) {
+			return add((ExportsStatement) moduleStatement, bracketBalanceValue);
+		}
+		if (moduleStatement instanceof OpensStatement) {
+			return add((OpensStatement) moduleStatement, bracketBalanceValue);
+		}
+		if (moduleStatement instanceof RequiresStatement) {
+			return add((RequiresStatement) moduleStatement, bracketBalanceValue);
+		}
+		if (moduleStatement instanceof ProvidesStatement) {
+			return add((ProvidesStatement) moduleStatement, bracketBalanceValue);
+		}
+		if (moduleStatement instanceof UsesStatement) {
+			return add((UsesStatement) moduleStatement, bracketBalanceValue);
+		}
+		
+		return this;
+	}
+
+	public RecoveredElement add(ExportsStatement exportsStatement, int bracketBalanceValue) {
+		resetPendingModifiers();
+
+		if (this.exports == null) {
+			this.exports = new RecoveredExportsStatement[5];
+			this.exportCount = 0;
+		} else {
+			if (this.exportCount == this.exports.length) {
+				System.arraycopy(
+					this.exports,
+					0,
+					(this.exports = new RecoveredExportsStatement[2 * this.exportCount]),
+					0,
+					this.exportCount);
+			}
+		}
+		RecoveredExportsStatement element = new RecoveredExportsStatement(exportsStatement, this, bracketBalanceValue);
+		this.exports[this.exportCount++] = element;
+
+		return element;
+	}
+	public RecoveredElement add(OpensStatement opensStatement, int bracketBalanceValue) {
+		resetPendingModifiers();
+
+		if (this.opens == null) {
+			this.opens = new RecoveredOpensStatement[5];
+			this.opensCount = 0;
+		} else {
+			if (this.opensCount == this.opens.length) {
+				System.arraycopy(
+					this.opens,
+					0,
+					(this.opens = new RecoveredOpensStatement[2 * this.opensCount]),
+					0,
+					this.opensCount);
+			}
+		}
+		RecoveredOpensStatement element = new RecoveredOpensStatement(opensStatement, this, bracketBalanceValue);
+		this.opens[this.opensCount++] = element;
+
+		return element;
+	}
+	public RecoveredElement add(RequiresStatement requiresStatement, int bracketBalanceValue) {
+		if (this.requires == null) {
+			this.requires = new RecoveredRequiresStatement[5];
+			this.requiresCount = 0;
+		} else {
+			if (this.requiresCount == this.requires.length) {
+				System.arraycopy(
+					this.requires,
+					0,
+					(this.requires = new RecoveredRequiresStatement[2 * this.requiresCount]),
+					0,
+					this.requiresCount);
+			}
+		}
+		RecoveredRequiresStatement element = new RecoveredRequiresStatement(requiresStatement, this, bracketBalanceValue);
+		this.requires[this.requiresCount++] = element;
+		return this;
+	}
+	public RecoveredElement add(ProvidesStatement providesStatement, int bracketBalanceValue) {
+		if (this.services == null) {
+			this.services = new RecoveredProvidesStatement[5];
+			this.servicesCount = 0;
+		} else {
+			if (this.servicesCount == this.services.length) {
+				System.arraycopy(
+					this.services,
+					0,
+					(this.services = new RecoveredProvidesStatement[2 * this.servicesCount]),
+					0,
+					this.servicesCount);
+			}
+		}
+		RecoveredProvidesStatement element = new RecoveredProvidesStatement(providesStatement, this, bracketBalanceValue);
+		this.services[this.servicesCount++] = element;
+		return element;
+	}
+	public RecoveredElement add(UsesStatement usesStatement, int bracketBalanceValue) {
+		genAssign(usesStatement, bracketBalanceValue);
+		return this;
+	}
+	private void genAssign(UsesStatement usesStatement, int bracketBalanceValue) {
+		if (this.uses == null) {
+			this.uses = new RecoveredUsesStatement[5];
+			this.usesCount = 0;
+		} else {
+			if (this.usesCount == this.uses.length) {
+				System.arraycopy(
+					this.uses,
+					0,
+					(this.uses = new RecoveredUsesStatement[2 * this.usesCount]),
+					0,
+					this.usesCount);
+			}
+		}
+		RecoveredUsesStatement element = new RecoveredUsesStatement(usesStatement, this, bracketBalanceValue);
+		this.uses[this.usesCount++] = element;
+	}
+	@Override
+	public String toString(int tab) {
+		StringBuffer result = new StringBuffer(tabString(tab));
+		result.append("Recovered module:\n"); //$NON-NLS-1$
+		result.append("module ");//$NON-NLS-1$
+		result.append(CharOperation.charToString(this.moduleDeclaration.moduleName));
+		result.append(" {");//$NON-NLS-1$
+		if (this.exportCount > 0) {
+			for (int i = 0; i < this.exportCount; ++i) {
+				result.append("\n"); //$NON-NLS-1$
+				result.append(this.exports[i].toString(tab + 1));
+			}
+		}
+		if (this.requiresCount > 0) {
+			for (int i = 0; i < this.requiresCount; ++i) {
+				result.append("\n"); //$NON-NLS-1$
+				result.append(this.requires[i].toString(tab + 1));
+			}
+		}
+		if (this.usesCount > 0) {
+			for (int i = 0; i < this.usesCount; ++i) {
+				result.append("\n"); //$NON-NLS-1$
+				result.append(this.uses[i].toString(tab + 1));
+			}
+		}
+		if (this.servicesCount > 0) {
+			for (int i = 0; i < this.servicesCount; ++i) {
+				result.append("\n"); //$NON-NLS-1$
+				result.append(this.services[i].toString(tab + 1));
+			}
+		}
+		result.append("\n}");//$NON-NLS-1$
+		return result.toString();
+	}
+	public ModuleDeclaration updatedModuleDeclaration() {
+
+		updateExports(this.moduleDeclaration);
+		updateOpens(this.moduleDeclaration);
+		updateRequires(this.moduleDeclaration);
+		updateUses(this.moduleDeclaration);
+		updateServices(this.moduleDeclaration);
+		return this.moduleDeclaration;
+	}
+	private void updateExports(ModuleDeclaration mod) {
+		if (this.exportCount > 0) {
+			int existingCount = mod.exportsCount, actualCount = 0;
+			ExportsStatement[] exports1 = new ExportsStatement[existingCount + this.exportCount];
+			if (existingCount > 0){
+				System.arraycopy(mod.exports, 0, exports1, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0; i < this.exportCount; i++){
+				exports1[actualCount++] = (ExportsStatement)this.exports[i].updatedPackageVisibilityStatement();
+			}
+			mod.exports = exports1;
+			mod.exportsCount = actualCount;
+		}
+	}
+	private void updateOpens(ModuleDeclaration mod) {
+		if (this.opensCount > 0) {
+			int existingCount = mod.opensCount, actualCount = 0;
+			OpensStatement[] opens1 = new OpensStatement[existingCount + this.opensCount];
+			if (existingCount > 0){
+				System.arraycopy(mod.exports, 0, opens1, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0; i < this.opensCount; i++){
+				opens1[actualCount++] = (OpensStatement)this.opens[i].updatedPackageVisibilityStatement();
+			}
+			mod.opens = opens1;
+			mod.opensCount = actualCount;
+		}
+	}
+	private void updateRequires(ModuleDeclaration mod) {
+		if (this.requiresCount > 0) {
+			int existingCount = mod.requiresCount, actualCount = 0;
+			RequiresStatement[] requiresStmts = new RequiresStatement[existingCount + this.requiresCount];
+			if (existingCount > 0){
+				System.arraycopy(mod.requires, 0, requiresStmts, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0; i < this.requiresCount; i++){
+				requiresStmts[actualCount++] = this.requires[i].updatedRequiresStatement();
+			}
+			mod.requires = requiresStmts;
+			mod.requiresCount = actualCount;
+		}
+	}
+	private void updateUses(ModuleDeclaration mod) {
+		if (this.usesCount > 0) {
+			int existingCount = mod.usesCount, actualCount = 0;
+			UsesStatement[] usesStmts = new UsesStatement[existingCount + this.usesCount];
+			if (existingCount > 0){
+				System.arraycopy(mod.uses, 0, usesStmts, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0; i < this.usesCount; ++i) {
+				usesStmts[actualCount++] = this.uses[i].updatedUsesStatement();
+			}
+			mod.uses = usesStmts;
+			mod.usesCount = actualCount;
+		}
+	}
+	private void updateServices(ModuleDeclaration mod) {
+		if (this.servicesCount > 0) {
+			int existingCount = mod.servicesCount, actualCount = 0;
+			ProvidesStatement[] providesStmts = new ProvidesStatement[existingCount + this.servicesCount];
+			if (existingCount > 0){
+				System.arraycopy(mod.services, 0, providesStmts, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0; i < this.servicesCount; ++i) {
+				providesStmts[actualCount++] = this.services[i].updatedProvidesStatement();
+			}
+			mod.services = providesStmts;
+			mod.servicesCount = actualCount;  			
+		}
+	}
+	@Override
+	public void updateParseTree(){
+		updatedModuleDeclaration();
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.java
new file mode 100644
index 0000000..6c91205
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleReference.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+
+public class RecoveredModuleReference extends RecoveredElement {
+
+	public ModuleReference moduleReference;
+public RecoveredModuleReference(ModuleReference moduleReference, RecoveredElement parent, int bracketBalance){
+	super(parent, bracketBalance);
+	this.moduleReference = moduleReference;
+}
+/*
+ * Answer the associated parsed structure
+ */
+@Override
+public ASTNode parseTree(){
+	return this.moduleReference;
+}
+/*
+ * Answer the very source end of the corresponding parse node
+ */
+@Override
+public int sourceEnd(){
+	return this.moduleReference.sourceEnd;
+}
+@Override
+public String toString(int tab) {
+	return tabString(tab) + "Recovered ModuleReference: " + this.moduleReference.toString(); //$NON-NLS-1$
+}
+public ModuleReference updatedModuleReference(){
+
+	return this.moduleReference;
+}
+@Override
+public void updateParseTree(){
+	updatedModuleReference();
+}
+/*
+ * Update the declarationSourceEnd of the corresponding parse node
+ */
+//public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
+//	if (this.moduleReference.declarationSourceEnd == 0) {
+//		this.moduleReference.declarationSourceEnd = bodyEnd;
+//		this.moduleReference.declarationEnd = bodyEnd;
+//	}
+//}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.java
new file mode 100644
index 0000000..d6ac4b4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredModuleStatement.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleStatement;
+
+public abstract class RecoveredModuleStatement extends RecoveredElement {
+
+	public ModuleStatement moduleStatement;
+
+	public RecoveredModuleStatement(ModuleStatement moduleStmt, RecoveredElement parent, int bracketBalance) {
+		super(parent, bracketBalance);
+		this.moduleStatement = moduleStmt;
+	}
+	/*
+	 * Answer the associated parsed structure
+	 */
+	@Override
+	public ASTNode parseTree(){
+		return this.moduleStatement;
+	}
+	/*
+	 * Answer the very source end of the corresponding parse node
+	 */
+	@Override
+	public int sourceEnd(){
+		return this.moduleStatement.declarationSourceEnd;
+	}
+	@Override
+	public String toString(int tab) {
+		return this.moduleStatement.toString();
+	}
+	protected ModuleStatement updatedModuleStatement(){
+		return this.moduleStatement;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedModuleStatement();
+	}
+	/*
+	 * Update the declarationSourceEnd of the corresponding parse node
+	 */
+	@Override
+	public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
+		if (this.moduleStatement.declarationSourceEnd == 0) {
+			this.moduleStatement.declarationSourceEnd = bodyEnd;
+			this.moduleStatement.declarationEnd = bodyEnd;
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.java
new file mode 100644
index 0000000..99916c2
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredOpensStatement.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
+
+public class RecoveredOpensStatement extends RecoveredPackageVisibilityStatement {
+
+	public RecoveredOpensStatement(OpensStatement opensStatement, RecoveredElement parent, int bracketBalance) {
+		super(opensStatement, parent, bracketBalance);
+	}
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered opens stmt: " + super.toString(); //$NON-NLS-1$
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.java
new file mode 100644
index 0000000..552e6fd
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredPackageVisibilityStatement.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PackageVisibilityStatement;
+
+public class RecoveredPackageVisibilityStatement extends RecoveredModuleStatement {
+
+	// PackageVisibilityStatement pvs;
+	RecoveredImport pkgRef;
+	RecoveredModuleReference[] targets;
+	int targetCount = 0;
+
+	public RecoveredPackageVisibilityStatement(PackageVisibilityStatement pvs, RecoveredElement parent, int bracketBalance) {
+		super(pvs, parent, bracketBalance);
+	}
+	@Override
+	public RecoveredElement add(ImportReference pkgRef1,  int bracketBalance1) {
+		this.pkgRef = new RecoveredImport(pkgRef1, this, bracketBalance1);
+		return this;
+	}
+	public RecoveredElement add(ModuleReference target,  int bracketBalance1) {
+		if (this.targets == null) {
+			this.targets = new RecoveredModuleReference[5];
+			this.targetCount = 0;
+		} else {
+			if (this.targetCount == this.targets.length) {
+				System.arraycopy(
+					this.targets,
+					0,
+					(this.targets = new RecoveredModuleReference[2 * this.targetCount]),
+					0,
+					this.targetCount);
+			}
+		}
+		RecoveredModuleReference element = new RecoveredModuleReference(target, this, bracketBalance1);
+		this.targets[this.targetCount++] = element;
+		return this;
+
+	}
+	@Override
+	public String toString(int tab) {
+		return super.toString();
+	}
+	public PackageVisibilityStatement updatedPackageVisibilityStatement(){
+		PackageVisibilityStatement pvs = (PackageVisibilityStatement) this.moduleStatement;
+		if (this.pkgRef != null) {
+			pvs.pkgRef = this.pkgRef.updatedImportReference();
+		}
+		if (this.targetCount > 0) {
+			int existingCount = pvs.targets != null ? pvs.targets.length : 0, actualCount = 0;
+			ModuleReference[] moduleRef1 = new ModuleReference[existingCount + this.targetCount];
+			if (existingCount > 0) {
+				System.arraycopy(pvs.targets, 0, moduleRef1, 0, existingCount);
+				actualCount = existingCount;
+			}
+			for (int i = 0, l = this.targetCount; i < l; ++i) {
+				moduleRef1[actualCount++] = this.targets[i].updatedModuleReference();
+			}
+			pvs.targets = moduleRef1;
+		}
+		return pvs;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedPackageVisibilityStatement();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.java
new file mode 100644
index 0000000..f9ba59a
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredProvidesStatement.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+
+public class RecoveredProvidesStatement extends RecoveredModuleStatement {
+	SingleTypeReference impl;
+
+	public RecoveredProvidesStatement(ProvidesStatement providesStatement, RecoveredElement parent, int bracketBalance) {
+		super(providesStatement, parent, bracketBalance);
+	}
+	public RecoveredElement add(SingleTypeReference impl1,  int bracketBalance1) {
+		this.impl = impl1;
+		return this;
+	}
+
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered Provides: " + super.toString(); //$NON-NLS-1$
+	}
+	public ProvidesStatement updatedProvidesStatement(){
+		ProvidesStatement providesStatement = (ProvidesStatement) this.moduleStatement;
+		if (providesStatement.implementations == null) { // only for with - actual impl by normal parse
+			providesStatement.implementations = this.impl != null ? new TypeReference[] {this.impl} : new TypeReference[0]; // dummy for completion
+		}
+		return providesStatement;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedProvidesStatement();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.java
new file mode 100644
index 0000000..7d5849c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredRequiresStatement.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
+
+public class RecoveredRequiresStatement extends RecoveredModuleStatement {
+
+	public RecoveredRequiresStatement(RequiresStatement requiresStatement, RecoveredElement parent, int bracketBalance) {
+		super(requiresStatement, parent, bracketBalance);
+	}
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered requires: " + super.toString(); //$NON-NLS-1$
+	}
+	public RequiresStatement updatedRequiresStatement(){
+		return (RequiresStatement)this.moduleStatement;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.java
index 3692f60..bf77954 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredStatement.java
@@ -32,31 +32,37 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree() {
 	return this.statement;
 }
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.statement.sourceEnd;
 }
+@Override
 public String toString(int tab){
 	return tabString(tab) + "Recovered statement:\n" + this.statement.print(tab + 1, new StringBuffer(10)); //$NON-NLS-1$
 }
 public Statement updatedStatement(int depth, Set<TypeDeclaration> knownTypes){
 	return this.statement;
 }
+@Override
 public void updateParseTree(){
 	updatedStatement(0, new HashSet<TypeDeclaration>());
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
 	if (this.statement.sourceEnd == 0)
 		this.statement.sourceEnd = bodyEnd;
 }
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if ((--this.bracketBalance <= 0) && (this.parent != null)){
 		this.updateSourceEndIfNecessary(braceStart, braceEnd);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java
index 7ef4db1..00088e0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java
@@ -82,6 +82,7 @@
 
 	this.preserveContent = parser().methodRecoveryActivated || parser().statementRecoveryActivated;
 }
+@Override
 public RecoveredElement add(AbstractMethodDeclaration methodDeclaration, int bracketBalanceValue) {
 
 	/* do not consider a method starting passed the type end (if set)
@@ -135,6 +136,7 @@
 	if (methodDeclaration.declarationSourceEnd == 0) return element;
 	return this;
 }
+@Override
 public RecoveredElement add(Block nestedBlockDeclaration,int bracketBalanceValue) {
 	this.pendingTypeParameters = null;
 	resetPendingModifiers();
@@ -145,6 +147,7 @@
 	}
 	return this.add(new Initializer(nestedBlockDeclaration, mods), bracketBalanceValue);
 }
+@Override
 public RecoveredElement add(FieldDeclaration fieldDeclaration, int bracketBalanceValue) {
 	this.pendingTypeParameters = null;
 
@@ -203,6 +206,7 @@
 	if (fieldDeclaration.declarationSourceEnd == 0) return element;
 	return this;
 }
+@Override
 public RecoveredElement add(TypeDeclaration memberTypeDeclaration, int bracketBalanceValue) {
 	this.pendingTypeParameters = null;
 
@@ -273,6 +277,7 @@
 	this.pendingTypeParameters = parameters;
 	this.pendingTypeParametersStart = startPos;
 }
+@Override
 public RecoveredElement addAnnotationName(int identifierPtr, int identifierLengthPtr, int annotationStart, int bracketBalanceValue) {
 	if (this.pendingAnnotations == null) {
 		this.pendingAnnotations = new RecoveredAnnotation[5];
@@ -294,6 +299,7 @@
 
 	return element;
 }
+@Override
 public void addModifier(int flag, int modifiersSourceStart) {
 	this.pendingModifiers |= flag;
 
@@ -350,6 +356,7 @@
 /*
  * Answer the enclosing type node, or null if none
  */
+@Override
 public RecoveredType enclosingType(){
 	RecoveredElement current = this.parent;
 	while (current != null){
@@ -386,15 +393,44 @@
 
 	return lastMemberEnd;
 }
+@Override
+public int getLastStart() {
+	int lastMemberStart = this.typeDeclaration.bodyStart;
+
+	if (this.fieldCount > 0) {
+		FieldDeclaration lastField = this.fields[this.fieldCount - 1].fieldDeclaration;
+		if (lastMemberStart < lastField.declarationSourceStart && lastField.declarationSourceStart != 0) {
+			lastMemberStart = lastField.declarationSourceStart;
+		}
+	}
+
+	if (this.methodCount > 0) {
+		AbstractMethodDeclaration lastMethod = this.methods[this.methodCount - 1].methodDeclaration;
+		if (lastMemberStart < lastMethod.declarationSourceStart && lastMethod.declarationSourceStart != 0) {
+			lastMemberStart = lastMethod.declarationSourceStart;
+		}
+	}
+
+	if (this.memberTypeCount > 0) {
+		TypeDeclaration lastType = this.memberTypes[this.memberTypeCount - 1].typeDeclaration;
+		if (lastMemberStart < lastType.declarationSourceStart && lastType.declarationSourceStart != 0) {
+			lastMemberStart = lastType.declarationSourceStart;
+		}
+	}
+
+	return lastMemberStart;
+}
 public char[] name(){
 	return this.typeDeclaration.name;
 }
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.typeDeclaration;
 }
+@Override
 public void resetPendingModifiers() {
 	this.pendingAnnotations = null;
 	this.pendingAnnotationCount = 0;
@@ -404,9 +440,11 @@
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.typeDeclaration.declarationSourceEnd;
 }
+@Override
 public String toString(int tab) {
 	StringBuffer result = new StringBuffer(tabString(tab));
 	result.append("Recovered type:\n"); //$NON-NLS-1$
@@ -444,10 +482,12 @@
 /*
  * Update the bodyStart of the corresponding parse node
  */
+@Override
 public void updateBodyStart(int bodyStart){
 	this.foundOpeningBrace = true;
 	this.typeDeclaration.bodyStart = bodyStart;
 }
+@Override
 public Statement updatedStatement(int depth, Set knownTypes){
 
 	// ignore closed anonymous type
@@ -669,6 +709,7 @@
  * Update the corresponding parse node from parser state which
  * is about to disappear because of restarting recovery
  */
+@Override
 public void updateFromParserState(){
 
 	// anymous type and enum constant doesn't need to be updated
@@ -726,6 +767,7 @@
  * A closing brace got consumed, might have closed the current element,
  * in which case both the currentElement is exited
  */
+@Override
 public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
 	if ((--this.bracketBalance <= 0) && (this.parent != null)){
 		this.updateSourceEndIfNecessary(braceStart, braceEnd);
@@ -738,6 +780,7 @@
  * An opening brace got consumed, might be the expected opening one of the current element,
  * in which case the bodyStart is updated.
  */
+@Override
 public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){
 	/* in case the opening brace is not close enough to the signature, ignore it */
 	if (this.bracketBalance == 0){
@@ -777,12 +820,14 @@
 	}
 	return super.updateOnOpeningBrace(braceStart, braceEnd);
 }
+@Override
 public void updateParseTree(){
 	updatedTypeDeclaration(0, new HashSet());
 }
 /*
  * Update the declarationSourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int start, int end){
 	if (this.typeDeclaration.declarationSourceEnd == 0){
 		this.bodyEnd = 0;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.java
new file mode 100644
index 0000000..b82a001
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredTypeReference.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+
+public class RecoveredTypeReference extends RecoveredElement {
+	public TypeReference typeReference;
+
+	public RecoveredTypeReference(TypeReference typeReference, RecoveredElement parent, int bracketBalance) {
+		super(parent, bracketBalance);
+		this.typeReference = typeReference;
+	}
+
+	/*
+	 * Answer the associated parsed structure
+	 */
+	@Override
+	public ASTNode parseTree(){
+		return this.typeReference;
+	}
+	public TypeReference updateTypeReference() {
+		return this.typeReference;
+	}
+	/*
+	 * Answer the very source end of the corresponding parse node
+	 */
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered typereference: " + this.typeReference.toString(); //$NON-NLS-1$
+	}
+	public TypeReference updatedImportReference(){
+		return this.typeReference;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedImportReference();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.java
index b39d5aa..8774cdd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,9 +20,11 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Block;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Initializer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 
 public class RecoveredUnit extends RecoveredElement {
@@ -31,6 +33,7 @@
 
 	public RecoveredImport[] imports;
 	public int importCount;
+	public RecoveredModule module;
 	public RecoveredType[] types;
 	public int typeCount;
 
@@ -43,6 +46,7 @@
 	super(null, bracketBalance, parser);
 	this.unitDeclaration = unitDeclaration;
 }
+@Override
 public RecoveredElement addAnnotationName(int identifierPtr, int identifierLengthPtr, int annotationStart, int bracketBalanceValue) {
 	if (this.pendingAnnotations == null) {
 		this.pendingAnnotations = new RecoveredAnnotation[5];
@@ -64,6 +68,7 @@
 
 	return element;
 }
+@Override
 public void addModifier(int flag, int modifiersSourceStart) {
 	this.pendingModifiers |= flag;
 
@@ -74,6 +79,7 @@
 /*
  *	Record a method declaration: should be attached to last type
  */
+@Override
 public RecoveredElement add(AbstractMethodDeclaration methodDeclaration, int bracketBalanceValue) {
 
 	/* attach it to last type - if any */
@@ -112,6 +118,7 @@
 /*
  *	Record a field declaration: should be attached to last type
  */
+@Override
 public RecoveredElement add(FieldDeclaration fieldDeclaration, int bracketBalanceValue) {
 
 	/* attach it to last type - if any */
@@ -127,6 +134,11 @@
 	}
 	return this; // ignore
 }
+public RecoveredElement add(ExportsStatement exportReference, int bracketBalanceValue) {
+	return this.module != null ? this.module.add(exportReference, bracketBalanceValue) : null;
+}
+
+@Override
 public RecoveredElement add(ImportReference importReference, int bracketBalanceValue) {
 	resetPendingModifiers();
 
@@ -150,8 +162,14 @@
 	if (importReference.declarationSourceEnd == 0) return element;
 	return this;
 }
+@Override
+public RecoveredElement add(ModuleDeclaration moduleDeclaration, int bracketBalanceValue){
+	this.module = new RecoveredModule(moduleDeclaration, this, bracketBalanceValue);
+	return this.module;
+}
+@Override
 public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) {
-
+	
 	if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0){
 		if (this.typeCount > 0) {
 			// add it to the last type
@@ -198,9 +216,11 @@
 /*
  * Answer the associated parsed structure
  */
+@Override
 public ASTNode parseTree(){
 	return this.unitDeclaration;
 }
+@Override
 public void resetPendingModifiers() {
 	this.pendingAnnotations = null;
 	this.pendingAnnotationCount = 0;
@@ -210,9 +230,23 @@
 /*
  * Answer the very source end of the corresponding parse node
  */
+@Override
 public int sourceEnd(){
 	return this.unitDeclaration.sourceEnd;
 }
+@Override
+public int getLastStart() {
+	int lastTypeStart = -1;
+
+	if (this.typeCount > 0) {
+		TypeDeclaration lastType = this.types[this.typeCount - 1].typeDeclaration;
+		if (lastTypeStart < lastType.declarationSourceStart && lastType.declarationSourceStart != 0) {
+			lastTypeStart = lastType.declarationSourceStart;
+		}
+	}
+	return lastTypeStart;
+}
+@Override
 public String toString(int tab) {
 	StringBuffer result = new StringBuffer(tabString(tab));
 	result.append("Recovered unit: [\n"); //$NON-NLS-1$
@@ -243,6 +277,9 @@
 		}
 		this.unitDeclaration.imports = importRefences;
 	}
+	if (this.module != null) {
+		this.unitDeclaration.moduleDeclaration = this.module.updatedModuleDeclaration();
+	}
 	/* update types */
 	if (this.typeCount > 0){
 		int existingCount = this.unitDeclaration.types == null ? 0 : this.unitDeclaration.types.length;
@@ -277,12 +314,14 @@
 	}
 	return this.unitDeclaration;
 }
+@Override
 public void updateParseTree(){
 	updatedCompilationUnitDeclaration();
 }
 /*
  * Update the sourceEnd of the corresponding parse node
  */
+@Override
 public void updateSourceEndIfNecessary(int bodyStart, int bodyEnd){
 	if (this.unitDeclaration.sourceEnd == 0)
 		this.unitDeclaration.sourceEnd = bodyEnd;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.java
new file mode 100644
index 0000000..4046361
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveredUsesStatement.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.parser;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement;
+
+public class RecoveredUsesStatement extends RecoveredModuleStatement {
+
+	public RecoveredUsesStatement(UsesStatement usesStatement, RecoveredElement parent, int bracketBalance) {
+		super(usesStatement, parent, bracketBalance);
+	}
+	@Override
+	public String toString(int tab) {
+		return tabString(tab) + "Recovered Uses: " + super.toString(); //$NON-NLS-1$
+	}
+	public UsesStatement updatedUsesStatement(){
+		return (UsesStatement)this.moduleStatement;
+	}
+	@Override
+	public void updateParseTree(){
+		updatedUsesStatement();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.java
index 0406231..db41f3b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/RecoveryScanner.java
@@ -147,6 +147,7 @@
 		this.data.removedTokenUsed[this.data.removedTokensPtr] = false;
 	}
 
+	@Override
 	protected int getNextToken0() throws InvalidInputException {
 		if(this.pendingTokensPtr > -1) {
 			int pendingToken = this.pendingTokens[this.pendingTokensPtr--];
@@ -221,16 +222,19 @@
 		return currentToken;
 	}
 
+	@Override
 	public char[] getCurrentIdentifierSource() {
 		if(this.fakeTokenSource != null) return this.fakeTokenSource;
 		return super.getCurrentIdentifierSource();
 	}
 
+	@Override
 	public char[] getCurrentTokenSourceString() {
 		if(this.fakeTokenSource != null) return this.fakeTokenSource;
 		return super.getCurrentTokenSourceString();
 	}
 
+	@Override
 	public char[] getCurrentTokenSource() {
 		if(this.fakeTokenSource != null) return this.fakeTokenSource;
 		return super.getCurrentTokenSource();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.java
index 428b835..11cbeca 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/Scanner.java
@@ -73,6 +73,7 @@
 	
 	
 	
+	@Override
 	public int scanIdentifierOrKeyword() {
 		int kind = super.scanIdentifierOrKeyword();
 		if (kind != TerminalTokens.TokenNameIdentifier) return kind;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
index e957483..8261b13 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2011 IBM Corporation and others.
+ * Copyright (c) 2005, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,6 +42,7 @@
 	private static long[][][] Tables;
 	private static long[][][] Tables7;
 	private static long[][][] Tables8;
+	private static long[][][] Tables9;
 
 	public final static int MAX_OBVIOUS = 128;
 	public final static int[] OBVIOUS_IDENT_CHAR_NATURES = new int[MAX_OBVIOUS];
@@ -140,6 +141,9 @@
 static void initializeTable18() {
 	Tables8 = initializeTables("unicode6_2"); //$NON-NLS-1$
 }
+static void initializeTable19() {
+	Tables9 = initializeTables("unicode8"); //$NON-NLS-1$
+}
 static long[][][] initializeTables(String unicode_path) {
 	long[][][] tempTable = new long[2][][];
 	tempTable[START_INDEX] = new long[3][];
@@ -286,8 +290,8 @@
 			case 14 :
 				return isBitSet(Tables7[PART_INDEX][3], codePoint & 0xFFFF);
 		}
-	} else {
-		// java 7 supports Unicode 6.2
+	} else if (complianceLevel <= ClassFileConstants.JDK1_8) {
+		// java 8 supports Unicode 6.2
 		if (Tables8 == null) {
 			initializeTable18();
 		}
@@ -301,6 +305,21 @@
 			case 14 :
 				return isBitSet(Tables8[PART_INDEX][3], codePoint & 0xFFFF);
 		}
+	} else {
+		// java 9 supports Unicode 8
+		if (Tables9 == null) {
+			initializeTable19();
+		}
+		switch((codePoint & 0x1F0000) >> 16) {
+			case 0 :
+				return isBitSet(Tables9[PART_INDEX][0], codePoint & 0xFFFF);
+			case 1 :
+				return isBitSet(Tables9[PART_INDEX][1], codePoint & 0xFFFF);
+			case 2 :
+				return isBitSet(Tables9[PART_INDEX][2], codePoint & 0xFFFF);
+			case 14 :
+				return isBitSet(Tables9[PART_INDEX][3], codePoint & 0xFFFF);
+		}
 	}
 	return false;
 }
@@ -348,7 +367,7 @@
 			case 2 :
 				return isBitSet(Tables7[START_INDEX][2], codePoint & 0xFFFF);
 		}
-	} else {
+	} else if (complianceLevel <= ClassFileConstants.JDK1_8) {
 		// java 7 supports Unicode 6
 		if (Tables8 == null) {
 			initializeTable18();
@@ -361,6 +380,19 @@
 			case 2 :
 				return isBitSet(Tables8[START_INDEX][2], codePoint & 0xFFFF);
 		}
+	} else {
+		// java 9 supports Unicode 7
+		if (Tables9 == null) {
+			initializeTable19();
+		}
+		switch((codePoint & 0x1F0000) >> 16) {
+			case 0 :
+				return isBitSet(Tables9[START_INDEX][0], codePoint & 0xFFFF);
+			case 1 :
+				return isBitSet(Tables9[START_INDEX][1], codePoint & 0xFFFF);
+			case 2 :
+				return isBitSet(Tables9[START_INDEX][2], codePoint & 0xFFFF);
+		}
 	}
 	return false;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java
index 9edd632..1ff4d75 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -101,6 +101,19 @@
 */		}
 	}
 
+	public static CompilationUnitDeclaration buildModularCompilationUnit(
+		IModule module,
+		ProblemReporter problemReporter,
+		CompilationResult compilationResult) {
+
+		SourceTypeConverter converter = new SourceTypeConverter(0, problemReporter);
+		try {
+			return converter.convert(module, compilationResult);
+		} catch (JavaModelException e) {
+			return null;
+		}
+	}
+
 	/*
 	 * Convert a set of source element types into a parsed compilation unit declaration
 	 * The argument types are then all grouped in the same unit. The argument types must
@@ -114,7 +127,6 @@
 		SourceTypeElementInfo topLevelTypeInfo = (SourceTypeElementInfo) sourceTypes[0];
 		org.aspectj.org.eclipse.jdt.core.ICompilationUnit cuHandle = topLevelTypeInfo.getHandle().getCompilationUnit();
 		this.cu = (ICompilationUnit) cuHandle;
-
 		final CompilationUnitElementInfo compilationUnitElementInfo = (CompilationUnitElementInfo) ((JavaElement) this.cu).getElementInfo();
 		if (this.has1_5Compliance && 
 				(compilationUnitElementInfo.annotationNumber >= CompilationUnitElementInfo.ANNOTATION_THRESHOLD_FOR_DIET_PARSE ||
@@ -173,6 +185,17 @@
 		}
 	}
 
+	private CompilationUnitDeclaration convert(IModule module, CompilationResult compilationResult) throws JavaModelException {
+		this.unit = new CompilationUnitDeclaration(this.problemReporter, compilationResult, 0);
+		// not filled at this point
+
+		ModuleDescriptionInfo moduleInfo = (ModuleDescriptionInfo) module;
+		org.aspectj.org.eclipse.jdt.core.ICompilationUnit cuHandle = moduleInfo.getHandle().getCompilationUnit();
+		this.cu = (ICompilationUnit) cuHandle;
+		// always parse, because (a) dietParse is always sufficient, (b) we don't yet have the necessary conversion methods for module directives 
+		return new Parser(this.problemReporter, true).dietParse(this.cu, compilationResult);
+	}
+
 	/*
 	 * Convert an initializerinfo into a parsed initializer declaration
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
index dad1e93..b48ec26 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
@@ -35,130 +35,140 @@
 		TokenNameCOMMENT_BLOCK = 1002,
 		TokenNameCOMMENT_JAVADOC = 1003;
 
-    public final static int
-      TokenNameIdentifier = 18,
-      TokenNameabstract = 47,
-      TokenNameassert = 78,
-      TokenNameboolean = 112,
-      TokenNamebreak = 79,
-      TokenNamebyte = 113,
-      TokenNamecase = 91,
-      TokenNamecatch = 92,
-      TokenNamechar = 114,
-      TokenNameclass = 71,
-      TokenNamecontinue = 80,
-      TokenNameconst = 123,
-      TokenNamedefault = 97,
-      TokenNamedo = 81,
-      TokenNamedouble = 115,
-      TokenNameelse = 95,
-      TokenNameenum = 88,
-      TokenNameextends = 90,
-      TokenNamefalse = 56,
-      TokenNamefinal = 48,
-      TokenNamefinally = 94,
-      TokenNamefloat = 116,
-      TokenNamefor = 82,
-      TokenNamegoto = 124,
-      TokenNameif = 83,
-      TokenNameimplements = 111,
-      TokenNameimport = 93,
-      TokenNameinstanceof = 15,
-      TokenNameint = 117,
-      TokenNameinterface = 76,
-      TokenNamelong = 118,
-      TokenNamenative = 49,
-      TokenNamenew = 42,
-      TokenNamenull = 57,
-      TokenNamepackage = 89,
-      TokenNameprivate = 50,
-      TokenNameprotected = 51,
-      TokenNamepublic = 52,
-      TokenNamereturn = 84,
-      TokenNameshort = 119,
-      TokenNamestatic = 45,
-      TokenNamestrictfp = 53,
-      TokenNamesuper = 43,
-      TokenNameswitch = 85,
-      TokenNamesynchronized = 46,
-      TokenNamethis = 44,
-      TokenNamethrow = 86,
-      TokenNamethrows = 98,
-      TokenNametransient = 54,
-      TokenNametrue = 58,
-      TokenNametry = 87,
-      TokenNamevoid = 120,
-      TokenNamevolatile = 55,
-      TokenNamewhile = 77,
-      TokenNameaspect = 26,
-      TokenNamepointcut = 30,
-      TokenNamearound = 34,
-      TokenNamebefore = 31,
-      TokenNameafter = 32,
-      TokenNamedeclare = 33,
-      TokenNameprivileged = 27,
-      TokenNameIntegerLiteral = 59,
-      TokenNameLongLiteral = 60,
-      TokenNameFloatingPointLiteral = 61,
-      TokenNameDoubleLiteral = 62,
-      TokenNameCharacterLiteral = 63,
-      TokenNameStringLiteral = 64,
-      TokenNamePLUS_PLUS = 3,
-      TokenNameMINUS_MINUS = 4,
-      TokenNameEQUAL_EQUAL = 23,
-      TokenNameLESS_EQUAL = 16,
-      TokenNameGREATER_EQUAL = 17,
-      TokenNameNOT_EQUAL = 20,
-      TokenNameLEFT_SHIFT = 21,
-      TokenNameRIGHT_SHIFT = 12,
-      TokenNameUNSIGNED_RIGHT_SHIFT = 14,
-      TokenNamePLUS_EQUAL = 99,
-      TokenNameMINUS_EQUAL = 100,
-      TokenNameMULTIPLY_EQUAL = 101,
-      TokenNameDIVIDE_EQUAL = 102,
-      TokenNameAND_EQUAL = 103,
-      TokenNameOR_EQUAL = 104,
-      TokenNameXOR_EQUAL = 105,
-      TokenNameREMAINDER_EQUAL = 106,
-      TokenNameLEFT_SHIFT_EQUAL = 107,
-      TokenNameRIGHT_SHIFT_EQUAL = 108,
-      TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL = 109,
-      TokenNameOR_OR = 38,
-      TokenNameAND_AND = 37,
-      TokenNamePLUS = 2,
-      TokenNameMINUS = 5,
-      TokenNameNOT = 69,
-      TokenNameREMAINDER = 10,
-      TokenNameXOR = 28,
-      TokenNameAND = 22,
-      TokenNameMULTIPLY = 7,
-      TokenNameOR = 36,
-      TokenNameTWIDDLE = 72,
-      TokenNameDIVIDE = 11,
-      TokenNameGREATER = 13,
-      TokenNameLESS = 6,
-      TokenNameLPAREN = 19,
-      TokenNameRPAREN = 25,
-      TokenNameLBRACE = 65,
-      TokenNameRBRACE = 40,
-      TokenNameLBRACKET = 8,
-      TokenNameRBRACKET = 68,
-      TokenNameSEMICOLON = 29,
-      TokenNameQUESTION = 35,
-      TokenNameCOLON = 66,
-      TokenNameCOMMA = 39,
-      TokenNameDOT = 1,
-      TokenNameEQUAL = 73,
-      TokenNameAT = 41,
-      TokenNameELLIPSIS = 110,
-      TokenNameARROW = 121,
-      TokenNameCOLON_COLON = 9,
-      TokenNameBeginLambda = 67,
-      TokenNameBeginIntersectionCast = 74,
-      TokenNameBeginTypeArguments = 96,
-      TokenNameElidedSemicolonAndRightBrace = 75,
-      TokenNameAT308 = 24,
-      TokenNameAT308DOTDOTDOT = 122,
-      TokenNameEOF = 70,
-      TokenNameERROR = 125;
+	public final static int
+    TokenNameIdentifier = 15,
+    TokenNameabstract = 47,
+    TokenNameassert = 78,
+    TokenNameboolean = 112,
+    TokenNamebreak = 79,
+    TokenNamebyte = 113,
+    TokenNamecase = 91,
+    TokenNamecatch = 92,
+    TokenNamechar = 114,
+    TokenNameclass = 71,
+    TokenNamecontinue = 80,
+    TokenNameconst = 133,
+    TokenNamedefault = 97,
+    TokenNamedo = 81,
+    TokenNamedouble = 115,
+    TokenNameelse = 96,
+    TokenNameenum = 82,
+    TokenNameextends = 90,
+    TokenNamefalse = 56,
+    TokenNamefinal = 48,
+    TokenNamefinally = 95,
+    TokenNamefloat = 116,
+    TokenNamefor = 83,
+    TokenNamegoto = 134,
+    TokenNameif = 84,
+    TokenNameimplements = 100,
+    TokenNameimport = 93,
+    TokenNameinstanceof = 16,
+    TokenNameint = 117,
+    TokenNameopens = 122,
+    TokenNameinterface = 75,
+    TokenNamelong = 118,
+    TokenNamenative = 49,
+    TokenNamenew = 42,
+    TokenNamenull = 57,
+    TokenNamepackage = 89,
+    TokenNameprivate = 50,
+    TokenNameprotected = 51,
+    TokenNamepublic = 52,
+    TokenNamereturn = 85,
+    TokenNameshort = 119,
+    TokenNamestatic = 45,
+    TokenNamestrictfp = 53,
+    TokenNamesuper = 43,
+    TokenNameswitch = 86,
+    TokenNamesynchronized = 46,
+    TokenNamethis = 44,
+    TokenNamethrow = 87,
+    TokenNamethrows = 98,
+    TokenNametransient = 54,
+    TokenNametrue = 58,
+    TokenNametry = 88,
+    TokenNamevoid = 120,
+    TokenNamevolatile = 55,
+    TokenNamewhile = 77,
+    TokenNamemodule = 123,
+    TokenNameopen = 124,
+    TokenNamerequires = 125,
+    TokenNametransitive = 129,
+    TokenNameexports = 126,
+    TokenNameto = 130,
+    TokenNameuses = 127,
+    TokenNameprovides = 128,
+    TokenNamewith = 131,
+    TokenNameaspect = 27,
+    TokenNamepointcut = 29,
+    TokenNamearound = 34,
+    TokenNamebefore = 31,
+    TokenNameafter = 32,
+    TokenNamedeclare = 33,
+    TokenNameprivileged = 28,
+    TokenNameIntegerLiteral = 59,
+    TokenNameLongLiteral = 60,
+    TokenNameFloatingPointLiteral = 61,
+    TokenNameDoubleLiteral = 62,
+    TokenNameCharacterLiteral = 63,
+    TokenNameStringLiteral = 64,
+    TokenNamePLUS_PLUS = 3,
+    TokenNameMINUS_MINUS = 4,
+    TokenNameEQUAL_EQUAL = 23,
+    TokenNameLESS_EQUAL = 17,
+    TokenNameGREATER_EQUAL = 18,
+    TokenNameNOT_EQUAL = 20,
+    TokenNameLEFT_SHIFT = 21,
+    TokenNameRIGHT_SHIFT = 12,
+    TokenNameUNSIGNED_RIGHT_SHIFT = 14,
+    TokenNamePLUS_EQUAL = 101,
+    TokenNameMINUS_EQUAL = 102,
+    TokenNameMULTIPLY_EQUAL = 103,
+    TokenNameDIVIDE_EQUAL = 104,
+    TokenNameAND_EQUAL = 105,
+    TokenNameOR_EQUAL = 106,
+    TokenNameXOR_EQUAL = 107,
+    TokenNameREMAINDER_EQUAL = 108,
+    TokenNameLEFT_SHIFT_EQUAL = 109,
+    TokenNameRIGHT_SHIFT_EQUAL = 110,
+    TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL = 111,
+    TokenNameOR_OR = 38,
+    TokenNameAND_AND = 37,
+    TokenNamePLUS = 2,
+    TokenNameMINUS = 6,
+    TokenNameNOT = 68,
+    TokenNameREMAINDER = 10,
+    TokenNameXOR = 30,
+    TokenNameAND = 22,
+    TokenNameMULTIPLY = 8,
+    TokenNameOR = 36,
+    TokenNameTWIDDLE = 72,
+    TokenNameDIVIDE = 11,
+    TokenNameGREATER = 13,
+    TokenNameLESS = 7,
+    TokenNameLPAREN = 19,
+    TokenNameRPAREN = 25,
+    TokenNameLBRACE = 65,
+    TokenNameRBRACE = 40,
+    TokenNameLBRACKET = 5,
+    TokenNameRBRACKET = 69,
+    TokenNameSEMICOLON = 26,
+    TokenNameQUESTION = 35,
+    TokenNameCOLON = 66,
+    TokenNameCOMMA = 39,
+    TokenNameDOT = 1,
+    TokenNameEQUAL = 74,
+    TokenNameAT = 41,
+    TokenNameELLIPSIS = 99,
+    TokenNameARROW = 121,
+    TokenNameCOLON_COLON = 9,
+    TokenNameBeginLambda = 67,
+    TokenNameBeginIntersectionCast = 73,
+    TokenNameBeginTypeArguments = 94,
+    TokenNameElidedSemicolonAndRightBrace = 76,
+    TokenNameAT308 = 24,
+    TokenNameAT308DOTDOTDOT = 132,
+    TokenNameEOF = 70,
+    TokenNameERROR = 135;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.java
index 526fe3a..a4ff449 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTParserClass.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -20,7 +20,8 @@
  *							bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
  *							bug 399695 - [1.8][compiler] [1.8][compiler] migrate parser to other syntax for default methods
  *							bug 384567 - [1.5][compiler] Compiler accepts illegal modifiers on package declaration
- *									bug 393192 - Incomplete type hierarchy with > 10 annotations
+ *							bug 393192 - Incomplete type hierarchy with > 10 annotations
+ *							bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *        Andy Clement - Contributions for
  *                          Bug 383624 - [1.8][compiler] Revive code generation support for type annotations (from Olivier's work)
  *                          Bug 409250 - [1.8][compiler] Various loose ends in 308 code generation
@@ -44,98 +45,7 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ASTVisitor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AllocationExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AnnotationMethodDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayAllocationExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AssertStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Assignment;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.BinaryExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Block;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.BreakStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CaseStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CastExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CharLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ClassLiteralAccess;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CombinedBinaryExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompoundAssignment;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConditionalExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ConstructorDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ContinueStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.DoStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.DoubleLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.EmptyStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.EqualExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Expression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FalseLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FieldReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.FloatLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ForStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ForeachStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.IfStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Initializer;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.InstanceOfExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.IntLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.IntersectionCastTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Javadoc;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LabeledStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LongLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MarkerAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NullLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OR_OR_Expression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OperatorIds;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PostfixExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PrefixExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedSuperReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedThisReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Receiver;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Reference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReferenceExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ReturnStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleMemberAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.StringLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SuperReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SwitchStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ThisReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ThrowStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TrueLiteral;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TryStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeParameter;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnaryExpression;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnionTypeReference;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.WhileStatement;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.ConstantPool;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
@@ -212,7 +122,7 @@
 
 	public static final int RoundBracket = 0;
 
-    public static byte scope_la[] = null;
+    public static char scope_la[] = null;
     public static char scope_lhs[] = null;
 
 	public static char scope_prefix[] = null;
@@ -227,7 +137,7 @@
 	protected final static int StackIncrement = 255;
 
 	public static char term_action[] = null;
-	public static byte term_check[] = null;
+	public static char term_check[] = null; // Promoted to char as > 128 terminals
 
 	public static char terminal_index[] = null;
 
@@ -305,6 +215,8 @@
 						compliance = ClassFileConstants.JDK1_7;
 					} else if("1.8".equals(token)) { //$NON-NLS-1$
 						compliance = ClassFileConstants.JDK1_8;
+					}  else if("9".equals(token)) { //$NON-NLS-1$
+						compliance = ClassFileConstants.JDK9;
 					} else if("recovery".equals(token)) { //$NON-NLS-1$
 						compliance = ClassFileConstants.JDK_DEFERRED;
 					}
@@ -635,8 +547,8 @@
 		buildFileOfIntFor(prefix + (++i) + ".rsc", "in_symb", tokens); //$NON-NLS-2$ //$NON-NLS-1$
 	
 		byte[] newRhs = buildFileOfByteFor(prefix + (++i) + ".rsc", "rhs", tokens); //$NON-NLS-2$ //$NON-NLS-1$
-		buildFileOfByteFor(prefix + (++i) + ".rsc", "term_check", tokens); //$NON-NLS-2$ //$NON-NLS-1$
-		buildFileOfByteFor(prefix + (++i) + ".rsc", "scope_la", tokens); //$NON-NLS-2$ //$NON-NLS-1$
+		buildFileOfIntFor(prefix + (++i) + ".rsc", "term_check", tokens); //$NON-NLS-2$ //$NON-NLS-1$
+		buildFileOfIntFor(prefix + (++i) + ".rsc", "scope_la", tokens); //$NON-NLS-2$ //$NON-NLS-1$
 	
 		String[] newName = buildFileForName(prefix + (++i) + ".rsc", new String(contents)); //$NON-NLS-1$
 	
@@ -737,8 +649,8 @@
 		in_symb = readTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
 	
 		rhs = readByteTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
-		term_check = readByteTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
-		scope_la = readByteTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
+		term_check = readTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
+		scope_la = readTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
 	
 		name = readNameTable(parserClass,prefix + (++i) + ".rsc"); //$NON-NLS-1$
 	
@@ -768,7 +680,6 @@
 
 	protected static byte[] readByteTable(Class parserClass, String filename) throws java.io.IOException { 	//	AspectJ Extension - used passed class not static ref
 	
-	
 		//files are located at Parser.class directory
 	
 		InputStream stream = parserClass.getResourceAsStream(filename); 	//	AspectJ Extension - used passed class not static ref
@@ -1038,6 +949,7 @@
 protected int valueLambdaNestDepth = -1;
 protected /*private*/ int stateStackLengthStack[] = new int[0]; // AspectJ Extension: made protected
 protected boolean parsingJava8Plus;
+protected boolean parsingJava9Plus;
 protected int unstackedAct = ERROR_ACTION;
 private boolean haltOnSyntaxError = false;
 private boolean tolerateDefaultClassMethods = false;
@@ -1055,6 +967,7 @@
 	this.optimizeStringLiterals = optimizeStringLiterals;
 	initializeScanner();
 	this.parsingJava8Plus = this.options.sourceLevel >= ClassFileConstants.JDK1_8;
+	this.parsingJava9Plus = this.options.sourceLevel >= ClassFileConstants.JDK9;
 	this.astLengthStack = new int[50];
 	this.expressionLengthStack = new int[30];
 	this.typeAnnotationLengthStack = new int[30];
@@ -3620,6 +3533,7 @@
 			final int annotationsLength = annotations.length;
 			System.arraycopy(annotations, 0, declaration.annotations = new Annotation[annotationsLength], 0, annotationsLength);
 		}
+		declaration.bits |= ASTNode.IsAdditionalDeclarator;
 	}
 
 	declaration.type = extendedDimensions == 0 ? type : augmentTypeWithAdditionalDimensions(type, extendedDimensions, annotationsOnExtendedDimensions, false);
@@ -4811,7 +4725,8 @@
 	
 	boolean isDefault = (md.modifiers & ExtraCompilerModifiers.AccDefaultMethod) != 0;
 	boolean isStatic = (md.modifiers & ClassFileConstants.AccStatic) != 0;
-	boolean bodyAllowed = isDefault || isStatic;
+	boolean isPrivate = (md.modifiers & ClassFileConstants.AccPrivate) != 0;
+	boolean bodyAllowed = (this.parsingJava9Plus && isPrivate) || isDefault || isStatic;
 	if (this.parsingJava8Plus) {
 		if (bodyAllowed && hasSemicolonBody) {
 			md.modifiers |= ExtraCompilerModifiers.AccSemicolonBody; // avoid complaints regarding undocumented empty body
@@ -5642,6 +5557,466 @@
 		resetModifiers();
 	}
 }
+protected void consumeInternalCompilationUnitWithModuleDeclaration() {
+	this.compilationUnit.moduleDeclaration = (ModuleDeclaration)this.astStack[this.astPtr--];
+	this.astLengthStack[this.astLengthPtr--] = 0;
+}
+protected void consumeRequiresStatement() {
+	RequiresStatement req = (RequiresStatement) this.astStack[this.astPtr];
+	req.declarationEnd = req.declarationSourceEnd = this.endStatementPosition;
+	// recovery
+	if (this.currentElement instanceof RecoveredModule) {
+		this.lastCheckPoint = req.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.add(req, 0);
+		this.lastIgnoredToken = -1;
+		this.restartRecovery = true; // used to avoid branching back into the regular automaton
+	}
+}
+protected void consumeSingleRequiresModuleName() {
+	ModuleReference impt;
+	int length;
+	char[][] tokens = new char[length = this.identifierLengthStack[this.identifierLengthPtr--]][];
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(this.identifierStack, this.identifierPtr + 1, tokens, 0, length);
+	System.arraycopy(this.identifierPositionStack, this.identifierPtr + 1, positions, 0, length);
+	RequiresStatement req = new RequiresStatement(impt = new ModuleReference(tokens, positions));
+	if (this.currentToken == TokenNameSEMICOLON){
+		req.declarationSourceEnd = impt.sourceEnd + 1;
+	} else {
+		req.declarationSourceEnd = impt.sourceEnd;
+	}
+	req.declarationEnd = req.declarationSourceEnd;
+	req.modifiersSourceStart = this.intStack[this.intPtr--];
+	req.modifiers |= this.intStack[this.intPtr--];
+	req.sourceStart = req.declarationSourceStart = this.intStack[this.intPtr--];
+	req.sourceEnd = impt.sourceEnd;
+	pushOnAstStack(req);
+	// recovery
+	if (this.currentElement instanceof RecoveredModule){
+		this.lastCheckPoint = req.declarationSourceEnd;
+	}
+}
+protected void consumeExportsStatement() {
+	ExportsStatement expt = (ExportsStatement) this.astStack[this.astPtr];
+	expt.declarationSourceEnd = this.endStatementPosition;
+	expt.declarationEnd = expt.declarationSourceEnd;
+	// recovery
+	if (this.currentElement instanceof RecoveredPackageVisibilityStatement) {
+		this.lastCheckPoint = expt.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.parent;
+		this.lastIgnoredToken = -1;
+		this.restartRecovery = true;
+		// used to avoid branching back into the regular automaton
+	}
+}
+protected void consumeExportsHeader() {
+	ImportReference impt = (ImportReference) this.astStack[this.astPtr];
+	impt.bits |= ASTNode.inModule;
+	ExportsStatement expt = new ExportsStatement(impt);
+	expt.declarationSourceStart = this.intStack[this.intPtr--];
+	expt.sourceStart = expt.declarationSourceStart;
+	expt.sourceEnd = impt.sourceEnd;
+	if (this.currentToken == TokenNameSEMICOLON){
+		expt.declarationSourceEnd = this.scanner.currentPosition - 1;
+	} else {
+		expt.declarationSourceEnd = expt.sourceEnd;
+	}
+	expt.declarationEnd = expt.declarationSourceEnd;
+	this.astStack[this.astPtr] = expt; // replace with ExportsStatement
+	// recovery
+	if (this.currentElement instanceof RecoveredModule) {
+		this.lastCheckPoint = expt.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.add(expt, 0);
+	}
+}
+protected void consumeOpensHeader() {
+	ImportReference impt = (ImportReference) this.astStack[this.astPtr];
+	impt.bits |= ASTNode.inModule;
+	OpensStatement stmt = new OpensStatement(impt);
+	stmt.declarationSourceStart = this.intStack[this.intPtr--];
+	stmt.sourceStart = stmt.declarationSourceStart;
+	stmt.sourceEnd = impt.sourceEnd;
+	if (this.currentToken == TokenNameSEMICOLON){
+		stmt.declarationSourceEnd = this.scanner.currentPosition - 1;
+	} else {
+		stmt.declarationSourceEnd = stmt.sourceEnd;
+	}
+	stmt.declarationEnd = stmt.declarationSourceEnd;
+	this.astStack[this.astPtr] = stmt; // replace with OpensStatement
+	// recovery
+	if (this.currentElement instanceof RecoveredModule) {
+		this.lastCheckPoint = stmt.declarationSourceEnd + 1;
+		this.lastCheckPoint = stmt.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.add(stmt, 0);
+	}
+}
+protected void consumeOpensStatement() {
+	OpensStatement expt = (OpensStatement) this.astStack[this.astPtr];
+	expt.declarationSourceEnd = this.endStatementPosition;
+	expt.declarationEnd = expt.declarationSourceEnd;
+	// recovery
+	if (this.currentElement instanceof RecoveredPackageVisibilityStatement) {
+		this.lastCheckPoint = expt.declarationSourceEnd + 1;
+		this.currentElement = this.currentElement.parent;
+		this.lastIgnoredToken = -1;
+		this.restartRecovery = true;
+		// used to avoid branching back into the regular automaton
+	}
+}
+protected void consumeSingleTargetModuleName() {
+	ModuleReference reference;
+	int length;
+	char[][] tokens = new char[length = this.identifierLengthStack[this.identifierLengthPtr--]][];
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(this.identifierStack, this.identifierPtr + 1, tokens, 0, length);
+	System.arraycopy(this.identifierPositionStack, this.identifierPtr + 1, positions, 0, length);
+	pushOnAstStack(reference = new ModuleReference(tokens, positions));
+
+	// recovery
+	if (this.currentElement != null) {
+		this.lastCheckPoint = reference.sourceEnd + 1;
+	}
+
+}
+protected void consumeTargetModuleList() {
+	int length = this.astLengthStack[this.astLengthPtr--];
+	this.astPtr -= length;
+	PackageVisibilityStatement node = (PackageVisibilityStatement) this.astStack[this.astPtr];
+	if (length > 0) {
+	System.arraycopy(
+		this.astStack,
+		this.astPtr + 1,
+		node.targets = new ModuleReference[length],
+		0,
+		length);
+		node.sourceEnd = node.targets[length - 1].sourceEnd;
+		if (this.currentToken == TokenNameSEMICOLON){
+			node.declarationSourceEnd = node.sourceEnd + 1;
+		} else {
+			node.declarationSourceEnd = node.sourceEnd;
+		}
+	}
+	
+	this.listLength = 0; // reset after having read target modules list
+	// recovery TBD
+	if (this.currentElement != null) { // is recovering
+		this.lastCheckPoint = node.sourceEnd;
+	}
+}
+protected void consumeTargetModuleNameList() {
+	this.listLength++;
+	optimizedConcatNodeLists();
+}
+protected void consumeSinglePkgName() {
+	ImportReference impt;
+	int length;
+	char[][] tokens = new char[length = this.identifierLengthStack[this.identifierLengthPtr--]][];
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(this.identifierStack, this.identifierPtr + 1, tokens, 0, length);
+	System.arraycopy(this.identifierPositionStack, this.identifierPtr + 1, positions, 0, length);
+	pushOnAstStack(impt = new ImportReference(tokens, positions, false, ClassFileConstants.AccDefault));
+
+	// recovery
+	if (this.currentElement instanceof RecoveredModule){
+		this.lastCheckPoint = impt.sourceEnd + 1;
+	}
+}
+protected void consumeUsesStatement() {
+	UsesStatement stmt = (UsesStatement) this.astStack[this.astPtr];
+	stmt.declarationEnd = stmt.declarationSourceEnd = this.endStatementPosition;
+	// recovery
+	if (this.currentElement instanceof RecoveredModule){
+		this.lastCheckPoint = stmt.declarationSourceEnd;
+		this.lastIgnoredToken = -1;
+		this.restartRecovery = true;
+	}
+}
+protected void consumeUsesHeader() {
+	pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
+	pushOnGenericsLengthStack(0);
+	TypeReference siName = getTypeReference(0);
+	if (siName.annotations != null) {
+		for (int j = 0; j < siName.annotations.length; j++) {
+			Annotation[] qualifierAnnot = siName.annotations[j];
+			if (qualifierAnnot != null && qualifierAnnot.length > 0) {
+				problemReporter().misplacedTypeAnnotations(qualifierAnnot[0], qualifierAnnot[qualifierAnnot.length - 1]);
+				siName.annotations[j] = null;
+			}
+		}
+	}
+	UsesStatement stmt = new UsesStatement(siName);
+	if (this.currentToken == TokenNameSEMICOLON){
+		stmt.declarationSourceEnd = siName.sourceEnd + 1;
+	} else {
+		stmt.declarationSourceEnd = siName.sourceEnd;
+	}
+	stmt.declarationEnd = stmt.declarationSourceEnd;
+	stmt.sourceStart = stmt.declarationSourceStart = this.intStack[this.intPtr--];
+	stmt.sourceEnd = siName.sourceEnd;
+	pushOnAstStack(stmt);
+	// recovery
+	if (this.currentElement instanceof RecoveredModule){
+		this.lastCheckPoint = stmt.sourceEnd + 1;
+		this.currentElement = this.currentElement.add(stmt, 0);
+	}
+}
+protected void consumeProvidesInterface() {
+	pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
+	pushOnGenericsLengthStack(0);
+	TypeReference siName = getTypeReference(0);
+	if (siName.annotations != null) {
+		for (int j = 0; j < siName.annotations.length; j++) {
+			Annotation[] qualifierAnnot = siName.annotations[j];
+			if (qualifierAnnot != null && qualifierAnnot.length > 0) {
+				problemReporter().misplacedTypeAnnotations(qualifierAnnot[0], qualifierAnnot[qualifierAnnot.length - 1]);
+				siName.annotations[j] = null;
+			}
+		}
+	}
+	ProvidesStatement ref = new ProvidesStatement();
+	ref.serviceInterface = siName;
+	pushOnAstStack(ref);
+	ref.declarationSourceStart = this.intStack[this.intPtr--];
+	ref.sourceStart = ref.declarationSourceStart;
+	ref.sourceEnd = siName.sourceEnd;
+	ref.declarationSourceEnd = ref.sourceEnd;
+	// recovery
+	if (this.currentElement instanceof RecoveredModule) {
+		this.lastCheckPoint = siName.sourceEnd + 1;
+		this.currentElement = this.currentElement.add(ref, 0);
+		this.lastIgnoredToken = -1;
+	}
+}
+protected void consumeSingleServiceImplName() {
+	pushOnGenericsIdentifiersLengthStack(this.identifierLengthStack[this.identifierLengthPtr]);
+	pushOnGenericsLengthStack(0);
+	TypeReference siName = getTypeReference(0);
+	if (siName.annotations != null) {
+		for (int j = 0; j < siName.annotations.length; j++) {
+			Annotation[] qualifierAnnot = siName.annotations[j];
+			if (qualifierAnnot != null && qualifierAnnot.length > 0) {
+				problemReporter().misplacedTypeAnnotations(qualifierAnnot[0], qualifierAnnot[qualifierAnnot.length - 1]);
+				siName.annotations[j] = null;
+			}
+		}
+	}
+	pushOnAstStack(siName);
+	// recovery
+	if (this.currentElement instanceof RecoveredModule) {
+		this.lastCheckPoint = siName.sourceEnd + 1;
+	}
+
+}
+protected void consumeServiceImplNameList() {
+	this.listLength++;
+	optimizedConcatNodeLists();
+}
+protected void consumeProvidesStatement() {
+	ProvidesStatement ref = (ProvidesStatement) this.astStack[this.astPtr];
+	ref.declarationEnd = ref.declarationSourceEnd = this.endStatementPosition;
+	//recovery
+	if (this.currentElement instanceof RecoveredProvidesStatement) {
+		this.lastIgnoredToken = -1;
+		this.currentElement = this.currentElement.parent;
+		this.restartRecovery = true; // used to avoid branching back into the regular automaton
+	}
+}
+protected void consumeWithClause() {
+	int length = this.astLengthStack[this.astLengthPtr--];
+	this.astPtr -= length;
+
+	ProvidesStatement service = (ProvidesStatement) this.astStack[this.astPtr];
+	System.arraycopy(
+		this.astStack,
+		this.astPtr + 1,
+		service.implementations = new TypeReference[length],
+		0,
+		length);
+
+	service.sourceEnd = service.implementations[length - 1].sourceEnd;
+
+	if (this.currentToken == TokenNameSEMICOLON){
+		service.declarationSourceEnd = service.sourceEnd + 1;
+	} else {
+		service.declarationSourceEnd = service.sourceEnd;
+	}
+	this.listLength = 0; // reset after having read super-interfaces
+	// recovery
+	if (this.currentElement instanceof RecoveredProvidesStatement) { // is recovering
+		this.lastCheckPoint = service.declarationSourceEnd;
+	}
+}
+protected void consumeEmptyModuleStatementsOpt() {
+	pushOnAstLengthStack(0);
+}
+protected void consumeModuleStatements() {
+	concatNodeLists();
+}
+protected void consumeModuleModifiers() {
+	checkComment(); // might update modifiers with AccDeprecated
+	// Merge with other modifiers
+	this.intStack[this.intPtr -1] |= this.modifiers;
+	resetModifiers();
+	// Account for the possible presence of annotations as well
+	this.expressionLengthStack[this.expressionLengthPtr - 1] += this.expressionLengthStack[this.expressionLengthPtr--];
+}
+protected void consumeModuleHeader() {
+	// ModuleHeader ::= 'module' Name
+	
+	int length;
+	char[][] tokens =
+		new char[length = this.identifierLengthStack[this.identifierLengthPtr--]][];
+	this.identifierPtr -= length;
+	long[] positions = new long[length];
+	System.arraycopy(this.identifierStack, ++this.identifierPtr, tokens, 0, length);
+	System.arraycopy(
+		this.identifierPositionStack,
+		this.identifierPtr--,
+		positions,
+		0,
+		length);
+
+	ModuleDeclaration typeDecl = new ModuleDeclaration(this.compilationUnit.compilationResult, tokens, positions);
+	//compute the declaration source too
+	typeDecl.declarationSourceStart = this.intStack[this.intPtr--];
+	typeDecl.bodyStart = typeDecl.sourceEnd + 1;
+	typeDecl.modifiersSourceStart = this.intStack[this.intPtr--];
+	typeDecl.modifiers = this.intStack[this.intPtr--];
+	if (typeDecl.modifiersSourceStart >= 0) {
+		typeDecl.declarationSourceStart = typeDecl.modifiersSourceStart;
+	}
+//	int otherModifiersStart = this.intStack[this.intPtr--];
+//	int otherModifiers = this.intStack[this.intPtr--];
+//	if (otherModifiersStart >= 0) {
+//		typeDecl.declarationSourceStart = typeDecl.modifiersSourceStart = otherModifiersStart;
+//	}
+	// Merge with other modifiers
+//	typeDecl.modifiers |= otherModifiers;
+	if ((length = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) {
+		System.arraycopy(
+			this.expressionStack,
+			(this.expressionPtr -= length) + 1,
+			typeDecl.annotations = new Annotation[length],
+			0,
+			length);
+	}
+	pushOnAstStack(typeDecl);
+
+	this.listLength = 0;
+	// recovery
+	if (this.currentElement != null){
+		this.lastCheckPoint = typeDecl.bodyStart;
+		this.currentElement = this.currentElement.add(typeDecl, 0);
+		this.lastIgnoredToken = -1;
+	}
+		// javadoc
+//		typeDecl.javadoc = this.javadoc;
+//		this.javadoc = null;
+}
+protected void consumeModuleDeclaration() {
+	// ModuleDeclaration ::= ModuleHeader ModuleBody
+	int length = this.astLengthStack[this.astLengthPtr--];
+	int[] flag = new int[length + 1]; //plus one -- see <HERE>
+	int size1 = 0, size2 = 0, size3 = 0, size4 = 0, size5 = 0;
+	if (length != 0) {
+		//there are length declarations
+		//dispatch according to the type of the declarations
+		for (int i = length - 1; i >= 0; i--) {
+			ASTNode astNode = this.astStack[this.astPtr--];
+			if (astNode instanceof RequiresStatement) {
+				flag[i] = 1;
+				size1++;
+			} else if (astNode instanceof ExportsStatement) {
+				flag[i] = 2;
+				size2++;
+			} else if (astNode instanceof UsesStatement) {
+				//field
+				flag[i] = 3;
+				size3++;
+			} else if (astNode instanceof ProvidesStatement){
+				flag[i] = 4;
+				size4++;
+			} else if (astNode instanceof OpensStatement) {
+				flag[i] = 5;
+				size5++;
+			}
+		}
+	}
+	ModuleDeclaration modul = (ModuleDeclaration) this.astStack[this.astPtr];
+	modul.requiresCount = size1;
+	modul.exportsCount = size2;
+	modul.usesCount = size3;
+	modul.servicesCount = size4;
+	modul.opensCount = size5;
+	modul.requires = new RequiresStatement[size1];
+	modul.exports = new ExportsStatement[size2];
+	modul.uses = new UsesStatement[size3];
+	modul.services = new ProvidesStatement[size4];
+	modul.opens = new OpensStatement[size5];
+	//arrays fill up
+	size1 = size2 = size3 = size4 = size5 = 0;
+	int flagI = flag[0], start = 0;
+	int length2;
+	for (int end = 0; end <= length; end++) //<HERE> the plus one allows to
+		{
+		if (flagI != flag[end]) //treat the last element as a ended flag.....
+			{ //array copy
+			switch (flagI) {
+				case 1 :
+					size1 += (length2 = end - start);
+					System.arraycopy(
+						this.astStack,
+						this.astPtr + start + 1,
+						modul.requires,
+						size1 - length2,
+						length2);
+					break;
+				case 2 :
+					size2 += (length2 = end - start);
+					System.arraycopy(
+						this.astStack,
+						this.astPtr + start + 1,
+						modul.exports,
+						size2 - length2,
+						length2);
+					break;
+				case 3 :
+					size3 += (length2 = end - start);
+					System.arraycopy(
+						this.astStack,
+						this.astPtr + start + 1,
+						modul.uses,
+						size3 - length2,
+						length2);
+					break;
+				case 4 :
+					size4 += (length2 = end - start);
+					System.arraycopy(
+						this.astStack,
+						this.astPtr + start + 1,
+						modul.services,
+						size4 - length2,
+						length2);
+					break;
+				case 5 :
+					size5 += (length2 = end - start);
+					System.arraycopy(
+						this.astStack,
+						this.astPtr + start + 1,
+						modul.opens,
+						size5 - length2,
+						length2);
+					break;
+			}
+			flagI = flag[start = end];
+		}
+	}
+	modul.bodyEnd = this.endStatementPosition;
+	modul.declarationSourceEnd = flushCommentsDefinedPriorTo(this.endStatementPosition);
+}
 protected void consumePackageDeclaration() {
 	// PackageDeclaration ::= 'package' Name ';'
 	/* build an ImportRef build from the last name
@@ -5653,6 +6028,8 @@
 	// flush comments defined prior to import statements
 	impt.declarationEnd = this.endStatementPosition;
 	impt.declarationSourceEnd = flushCommentsDefinedPriorTo(impt.declarationSourceEnd);
+	if (this.firstToken == TokenNameQUESTION)
+		this.unstackedAct = ACCEPT_ACTION; // force termination at goal
 }
 protected void consumePackageDeclarationName() {
 	// PackageDeclarationName ::= PackageComment 'package' Name RejectTypeAnnotations
@@ -5804,9 +6181,6 @@
 	}
 }
 private void rejectIllegalTypeAnnotations(TypeReference typeReference) {
-	rejectIllegalTypeAnnotations(typeReference, false);
-}
-private void rejectIllegalTypeAnnotations(TypeReference typeReference, boolean tolerateAnnotationsOnDimensions) {
 	// Reject misplaced annotations on type reference; Used when grammar is permissive enough to allow them in the first place.
 	Annotation [][]  annotations = typeReference.annotations;
 	Annotation[] misplacedAnnotations;
@@ -5817,23 +6191,15 @@
 		}
 	}
 	annotations = typeReference.getAnnotationsOnDimensions(true);
-	boolean tolerated = false;
 	for (int i = 0, length = annotations == null ? 0 : annotations.length; i < length; i++) {
 		misplacedAnnotations = annotations[i];
 		if (misplacedAnnotations != null) {
-			if (tolerateAnnotationsOnDimensions) {
-				problemReporter().toleratedMisplacedTypeAnnotations(misplacedAnnotations[0], misplacedAnnotations[misplacedAnnotations.length - 1]);
-				tolerated = true;
-			}
-			else 
 				problemReporter().misplacedTypeAnnotations(misplacedAnnotations[0], misplacedAnnotations[misplacedAnnotations.length - 1]);
 		}
 	}
-	if (!tolerated) {
-		typeReference.annotations = null;
-		typeReference.setAnnotationsOnDimensions(null);
-		typeReference.bits &= ~ASTNode.HasTypeAnnotations;
-	}
+typeReference.annotations = null;
+typeReference.setAnnotationsOnDimensions(null);
+typeReference.bits &= ~ASTNode.HasTypeAnnotations;
 }
 protected void consumeQualifiedSuperReceiver() {
 	// QualifiedSuperReceiver ::= Name '.' 'super'
@@ -5869,7 +6235,7 @@
 	ClassLiteralAccess cla;
 	pushOnExpressionStack(
 		cla = new ClassLiteralAccess(this.intStack[this.intPtr--], getTypeReference(this.intStack[this.intPtr--])));
-	rejectIllegalTypeAnnotations(cla.type, true /* tolerate annotations on dimensions for bug compatibility for now */);
+	rejectIllegalTypeAnnotations(cla.type);
 }
 protected void consumePrimaryNoNewArrayPrimitiveType() {
 	// PrimaryNoNewArray ::= PrimitiveType '.' 'class'
@@ -6012,6 +6378,19 @@
 protected void consumeReferenceType3() {
 	pushOnGenericsStack(getTypeReference(this.intStack[this.intPtr--]));
 }
+protected void consumeResourceAsLocalVariable() {
+	// Resource ::= Name
+	NameReference ref = getUnspecifiedReference(true);
+	//ref.bits |= ASTNode.IsCapturedOuterLocal;
+	pushOnAstStack(ref);
+ }
+protected void consumeResourceAsFieldAccess() {
+	// Resource ::= FieldAccess
+	FieldReference ref = (FieldReference) this.expressionStack[this.expressionPtr--];
+	//NameReference ref = getUnspecifiedReference(true);
+	//ref.bits |= ASTNode.IsCapturedOuterLocal;
+	pushOnAstStack(ref);
+ }
 protected void consumeResourceAsLocalVariableDeclaration() {
 	// Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
 	// Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
@@ -6022,9 +6401,12 @@
 }
 protected void consumeResourceOptionalTrailingSemiColon(boolean punctuated) {
 	// TrailingSemiColon ::= ';'
-	LocalDeclaration localDeclaration = (LocalDeclaration) this.astStack[this.astPtr];
+	Statement statement = (Statement) this.astStack[this.astPtr];
+	
 	if (punctuated) {
-		localDeclaration.declarationSourceEnd = this.endStatementPosition;
+		if (statement instanceof LocalDeclaration) {
+			((LocalDeclaration) statement).declarationSourceEnd = this.endStatementPosition;
+		}
 	}
 }
 protected void consumeRestoreDiet() {
@@ -6260,7 +6642,7 @@
 }
 
 public ReferenceExpression newReferenceExpression() {
-	return new ReferenceExpression();
+	return new ReferenceExpression(this.scanner);
 }
 
 protected void consumeReferenceExpressionTypeForm(boolean isPrimitive) { // actually Name or Type form.
@@ -6839,16 +7221,26 @@
 	if (hasResources) {
 		// get the resources
 		length = this.astLengthStack[this.astLengthPtr--];
-		LocalDeclaration[] resources = new LocalDeclaration[length];
+		Statement[] stmts  = new Statement[length];
 		System.arraycopy(
-				this.astStack,
-				(this.astPtr -= length) + 1,
-				resources,
-				0,
-				length);
-		tryStmt.resources = resources;
+		this.astStack,
+		(this.astPtr -= length) + 1,
+		stmts,
+		0,
+		length);
+
+		tryStmt.resources = stmts;
+			
 		if (this.options.sourceLevel < ClassFileConstants.JDK1_7) {
-			problemReporter().autoManagedResourcesNotBelow17(resources);
+			problemReporter().autoManagedResourcesNotBelow17(stmts);
+		}
+		if (this.options.sourceLevel < ClassFileConstants.JDK9) {
+			for (int i = 0, l = stmts.length; i < l; ++i) {
+				Statement stmt = stmts[i];
+				if (stmt instanceof FieldReference || stmt instanceof NameReference) {
+					problemReporter().autoManagedVariableResourcesNotBelow9((Expression) stmt);
+				}
+			}
 		}
 	}
 	//positions
@@ -7038,6 +7430,10 @@
 			checkAndSetModifiers(ClassFileConstants.AccNative);
 			pushOnExpressionStackLengthStack(0);
 			break;
+		case TokenNameopen :
+			checkAndSetModifiers(ClassFileConstants.ACC_OPEN);
+			pushOnExpressionStackLengthStack(0);
+			break;
 		case TokenNameprivate :
 			checkAndSetModifiers(ClassFileConstants.AccPrivate);
 			pushOnExpressionStackLengthStack(0);
@@ -7054,12 +7450,19 @@
 			checkAndSetModifiers(ClassFileConstants.AccTransient);
 			pushOnExpressionStackLengthStack(0);
 			break;
+		case TokenNametransitive :
+			checkAndSetModifiers(ClassFileConstants.ACC_TRANSITIVE);
+			pushOnExpressionStackLengthStack(0);
+			break;
 		case TokenNamevolatile :
 			checkAndSetModifiers(ClassFileConstants.AccVolatile);
 			pushOnExpressionStackLengthStack(0);
 			break;
 		case TokenNamestatic :
-			checkAndSetModifiers(ClassFileConstants.AccStatic);
+			if (isParsingModuleDeclaration())
+				checkAndSetModifiers(ClassFileConstants.ACC_STATIC_PHASE);
+			else
+				checkAndSetModifiers(ClassFileConstants.AccStatic);
 			pushOnExpressionStackLengthStack(0);
 			break;
 		case TokenNamesynchronized :
@@ -7208,6 +7611,12 @@
 		case TokenNamecontinue :
 		case TokenNamereturn :
 		case TokenNamecase :
+		case TokenNamemodule:
+		case TokenNamerequires:
+		case TokenNameexports:
+		case TokenNameopens:
+		case TokenNameuses:
+		case TokenNameprovides:
 			pushOnIntStack(this.scanner.startPosition);
 			break;
 		case TokenNamenew :
@@ -8599,6 +9008,7 @@
 		this.firstToken = TokenNameUNSIGNED_RIGHT_SHIFT;
 	}
 	this.scanner.recordLineSeparator = true; // recovery goals must record line separators
+	this.scanner.scanContext = null;
 }
 public void goForImportDeclaration(){
 	//tells the scanner to go for import declaration parsing
@@ -8625,10 +9035,13 @@
 	this.scanner.recordLineSeparator = false;
 }
 public void goForPackageDeclaration() {
+	goForPackageDeclaration(true);
+}
+public void goForPackageDeclaration(boolean recordLineSeparators) {
 	//tells the scanner to go for package declaration parsing
 
 	this.firstToken = TokenNameQUESTION;
-	this.scanner.recordLineSeparator = true;
+	this.scanner.recordLineSeparator = recordLineSeparators;
 }
 public void goForTypeDeclaration() {
 	//tells the scanner to go for type (interface or class) declaration parsing
@@ -9051,6 +9464,7 @@
 
 	this.astLengthStack[--this.astLengthPtr]++;
 }
+@Override
 public boolean atConflictScenario(int token) {
 	
 	/* Answer true if the parser is at a configuration where the scanner must look ahead and help disambiguate between (a) '<' as an operator and '<' as the
@@ -9235,6 +9649,10 @@
 			consumeRule(act);
 			act = this.unstackedAct;
 
+			if (act == ACCEPT_ACTION) {
+				break ProcessTerminals;
+			}
+
 			if (DEBUG_AUTOMATON) {
 				if (act <= NUM_RULES) {
 					System.out.print("             - ");  //$NON-NLS-1$
@@ -9668,16 +10086,19 @@
 		// collect all body declaration inside the compilation unit except the default constructor
 		final List bodyDeclarations = new ArrayList();
 		ASTVisitor visitor = new ASTVisitor() {
+			@Override
 			public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 				if (!methodDeclaration.isDefaultConstructor()) {
 					bodyDeclarations.add(methodDeclaration);
 				}
 				return false;
 			}
+			@Override
 			public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) {
 				bodyDeclarations.add(fieldDeclaration);
 				return false;
 			}
+			@Override
 			public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) {
 				bodyDeclarations.add(memberTypeDeclaration);
 				return false;
@@ -9754,6 +10175,29 @@
 	return parseExpression(source, offset, length, unit, recordLineSeparators);
 }
 
+public char[][] parsePackageDeclaration(char[] source, CompilationResult result) {
+	initialize();
+	goForPackageDeclaration(false);
+	this.referenceContext =
+			this.compilationUnit =
+				new CompilationUnitDeclaration(
+					problemReporter(),
+					result,
+					source.length);
+	this.scanner.setSource(source);
+	try {
+		parse();
+	} catch (AbortCompilation ex) {
+		this.lastAct = ERROR_ACTION;
+	}
+
+	if (this.lastAct == ERROR_ACTION) {
+		return null;
+	}
+
+	return this.compilationUnit.currentPackage == null ? null : this.compilationUnit.currentPackage.getImportName();
+
+}
 public Expression parseExpression(char[] source, int offset, int length, CompilationUnitDeclaration unit, boolean recordLineSeparators) {
 
 	initialize();
@@ -9905,7 +10349,7 @@
 	}
 	this.identifierLengthStack[this.identifierLengthPtr] = 1;
 	if (this.parsingJava8Plus && identifier.length == 1 && identifier[0] == '_' && !this.processingLambdaParameterList) {
-		problemReporter().illegalUseOfUnderscoreAsAnIdentifier((int) (position >>> 32), (int) position, false /* not a lambda parameter */);
+		problemReporter().illegalUseOfUnderscoreAsAnIdentifier((int) (position >>> 32), (int) position, this.parsingJava9Plus);
 	}
 }
 protected void pushIdentifier() {
@@ -10099,9 +10543,11 @@
 
 		TypeDeclaration[] types = new TypeDeclaration[0];
 		int typePtr = -1;
+		@Override
 		public void endVisit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 			endVisitMethod(constructorDeclaration, scope);
 		}
+		@Override
 		public void endVisit(Initializer initializer, MethodScope scope) {
 			if (initializer.block == null) return;
 			TypeDeclaration[] foundTypes = null;
@@ -10128,6 +10574,7 @@
 				foundTypes[i].traverse(this.typeVisitor, scope);
 			}
 		}
+		@Override
 		public void endVisit(MethodDeclaration methodDeclaration, ClassScope scope) {
 			endVisitMethod(methodDeclaration, scope);
 		}
@@ -10156,15 +10603,18 @@
 				foundTypes[i].traverse(this.typeVisitor, scope);
 			}
 		}
+		@Override
 		public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 			this.typePtr = -1;
 			return true;
 		}
+		@Override
 		public boolean visit(Initializer initializer, MethodScope scope) {
 			this.typePtr = -1;
 			if (initializer.block == null) return false;
 			return true;
 		}
+		@Override
 		public boolean visit(MethodDeclaration methodDeclaration,ClassScope scope) {
 			this.typePtr = -1;
 			return true;
@@ -10177,9 +10627,11 @@
 			this.types[this.typePtr] = typeDeclaration;
 			return false;
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, BlockScope scope) {
 			return this.visit(typeDeclaration);
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, ClassScope scope) {
 			return this.visit(typeDeclaration);
 		}
@@ -10190,27 +10642,32 @@
 		TypeDeclaration[] types = new TypeDeclaration[0];
 		int typePtr = -1;
 
+		@Override
 		public void endVisit(TypeDeclaration typeDeclaration, BlockScope scope) {
 			endVisitType();
 		}
+		@Override
 		public void endVisit(TypeDeclaration typeDeclaration, ClassScope scope) {
 			endVisitType();
 		}
 		private void endVisitType() {
 			this.typePtr--;
 		}
+		@Override
 		public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 			if(constructorDeclaration.isDefaultConstructor()) return false;
 
 			constructorDeclaration.traverse(this.methodVisitor, scope);
 			return false;
 		}
+		@Override
 		public boolean visit(Initializer initializer, MethodScope scope) {
 			if (initializer.block == null) return false;
 			this.methodVisitor.enclosingType = this.types[this.typePtr];
 			initializer.traverse(this.methodVisitor, scope);
 			return false;
 		}
+		@Override
 		public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 			methodDeclaration.traverse(this.methodVisitor, scope);
 			return false;
@@ -10223,9 +10680,11 @@
 			this.types[this.typePtr] = typeDeclaration;
 			return true;
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, BlockScope scope) {
 			return this.visit(typeDeclaration);
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, ClassScope scope) {
 			return this.visit(typeDeclaration);
 		}
@@ -10545,6 +11004,7 @@
 	if(enabled) this.options.performMethodsFullRecovery = true;
 	this.options.performStatementsRecovery = enabled;
 }
+@Override
 public String toString() {
 
 
@@ -10740,5 +11200,11 @@
 		return lastAction != ERROR_ACTION;
 	}
 }
+@Override
+public boolean isParsingModuleDeclaration() {
+	// It can be a null in case of a Vanguard parser, which means no module to be dealt with.
+	return (this.parsingJava9Plus && this.compilationUnit != null && this.compilationUnit.isModuleInfo());
+}
+
 protected boolean shouldTryToRecover() { return true; } // AspectJ Extension - to be overridden
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.java
index 4eb6487..d69b6f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/TheOriginalJDTScannerClass.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,8 +15,12 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Statement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
 /**
@@ -79,7 +83,7 @@
 	public int[] commentStarts = new int[COMMENT_ARRAYS_SIZE];
 	public int[] commentTagStarts = new int[COMMENT_ARRAYS_SIZE];
 	public int commentPtr = -1; // no comment test with commentPtr value -1
-	protected int lastCommentLinePosition = -1;
+	public int lastCommentLinePosition = -1;
 
 	// task tag support
 	public char[][] foundTaskTags = null;
@@ -100,6 +104,17 @@
 	public int linePtr = -1;
 	public boolean wasAcr = false;
 
+	public boolean fakeInModule = false;
+	/**
+	 * The current context of the scanner w.r.t restricted keywords
+	 *
+	 */
+	enum ScanContext {
+		EXPECTING_KEYWORD, EXPECTING_IDENTIFIER, AFTER_REQUIRES, INACTIVE
+	}
+	protected ScanContext scanContext = null;
+	protected boolean insideModuleInfo = false;
+
 	public static final String END_OF_SOURCE = "End_Of_Source"; //$NON-NLS-1$
 
 	public static final String INVALID_HEXA = "Invalid_Hexa_Literal"; //$NON-NLS-1$
@@ -1151,7 +1166,15 @@
 		this.nextToken = TokenNameNotAToken;
 		return token; // presumed to be unambiguous.
 	}
+	if (this.scanContext == null) { // init lazily, since isInModuleDeclaration needs the parser to be known
+		this.scanContext = isInModuleDeclaration() ? ScanContext.EXPECTING_KEYWORD : ScanContext.INACTIVE;
+	}
 	token = getNextToken0();
+	if (areRestrictedModuleKeywordsActive()) {
+		if (isRestrictedKeyword(token))
+			token = disambiguatedRestrictedKeyword(token);
+		updateScanContext(token);
+	}
 	if (this.activeParser == null) { // anybody interested in the grammatical structure of the program should have registered.
 		return token;
 	}
@@ -2532,6 +2555,51 @@
 	//newIdentCount++;
 	return table[this.newEntry6 = max] = r; //(r = new char[] {c0, c1, c2, c3, c4, c5});
 }
+public boolean isInModuleDeclaration() {
+	return this.fakeInModule || this.insideModuleInfo ||
+			(this.activeParser != null ? this.activeParser.isParsingModuleDeclaration() : false);
+}
+protected boolean areRestrictedModuleKeywordsActive() {
+	return this.scanContext != null && this.scanContext != ScanContext.INACTIVE;
+}
+void updateScanContext(int token) {
+	switch (token) {
+		case TerminalTokens.TokenNameSEMICOLON:	// next could be a KEYWORD
+		case TerminalTokens.TokenNameRBRACE:
+		case TokenNameRPAREN:
+			this.scanContext = ScanContext.EXPECTING_KEYWORD;
+			break;
+		case TokenNameopen:
+			this.scanContext = ScanContext.EXPECTING_KEYWORD;
+			break;
+		case TokenNamerequires:
+			this.scanContext = ScanContext.AFTER_REQUIRES;
+			break;
+		case TokenNamemodule:
+		case TokenNameexports:
+		case TokenNameopens:
+		case TokenNameuses:
+		case TokenNameprovides:
+		case TokenNameto:
+		case TokenNamewith:
+		case TokenNametransitive:			
+		case TokenNameDOT:
+		case TokenNameimport:
+		case TokenNameAT:
+		case TokenNameAT308:
+		case TokenNameCOMMA:
+			this.scanContext = ScanContext.EXPECTING_IDENTIFIER;
+			break;
+		case TokenNameIdentifier:
+			this.scanContext = ScanContext.EXPECTING_KEYWORD;
+			break;
+		case TerminalTokens.TokenNameLBRACE:
+			this.scanContext = ScanContext.EXPECTING_KEYWORD;
+			break;
+		default: // anything else is unexpected and should not alter the context
+			break;
+	}
+}
 
 private void parseTags() {
 	int position = 0;
@@ -2661,7 +2729,7 @@
 		if ((this.linePtr >= 0) && (this.lineEnds[this.linePtr] >= separatorPos)) return;
 		int length = this.lineEnds.length;
 		if (++this.linePtr >=  length)
-			System.arraycopy(this.lineEnds, 0, this.lineEnds = new int[length + INCREMENT], 0, length);
+			System.arraycopy(this.lineEnds, 0, this.lineEnds = new int[2*length + INCREMENT], 0, length);
 		this.lineEnds[this.linePtr] = separatorPos;
 		// look-ahead for merged cr+lf
 		try {
@@ -2687,7 +2755,7 @@
 				if ((this.linePtr >= 0) && (this.lineEnds[this.linePtr] >= separatorPos)) return;
 				int length = this.lineEnds.length;
 				if (++this.linePtr >=  length)
-					System.arraycopy(this.lineEnds, 0, this.lineEnds = new int[length + INCREMENT], 0, length);
+					System.arraycopy(this.lineEnds, 0, this.lineEnds = new int[2*length + INCREMENT], 0, length);
 				this.lineEnds[this.linePtr] = separatorPos;
 			}
 			this.wasAcr = false;
@@ -2746,6 +2814,21 @@
  * @param end the given end position
  */
 public void resetTo(int begin, int end) {
+	resetTo(begin, end, isInModuleDeclaration());
+}
+public void resetTo(int begin, int end, boolean isModuleInfo) {
+	resetTo(begin, end, isModuleInfo, null);
+}
+/**
+ * Reposition the scanner on some portion of the original source. The given endPosition is the last valid position.
+ * Beyond this position, the scanner will answer EOF tokens (<code>ITerminalSymbols.TokenNameEOF</code>).
+ *
+ * @param begin the given start position
+ * @param end the given end position
+ * @param isModuleInfo if true apply rules for restricted keywords even without a connection to a properly configured parser
+ * @param context The scan context to use for restricted keyword support, use null to compute
+ */
+public void resetTo(int begin, int end, boolean isModuleInfo, ScanContext context) {
 	//reset the scanner to a given position where it may rescan again
 
 	this.diet = false;
@@ -2759,6 +2842,20 @@
 	this.foundTaskCount = 0;
 	this.lookBack[0] = this.lookBack[1] = this.nextToken = TokenNameNotAToken;
 	this.consumingEllipsisAnnotations = false;
+	this.insideModuleInfo = isModuleInfo;
+	this.scanContext = context == null ? getScanContext(begin) : context;
+}
+
+private ScanContext getScanContext(int begin) {
+	if (!isInModuleDeclaration())
+		return ScanContext.INACTIVE;
+	if (begin == 0)
+		return ScanContext.EXPECTING_KEYWORD;
+	CompilerOptions options = new CompilerOptions();
+	options.complianceLevel = this.complianceLevel;
+	options.sourceLevel = this.sourceLevel;
+	ScanContextDetector parser = new ScanContextDetector(options);
+	return parser.getScanContext(this.source, begin - 1);
 }
 
 protected final void scanEscapeCharacter() throws InvalidInputException {
@@ -3095,7 +3192,7 @@
 				default :
 					return TokenNameIdentifier;
 			}
-		case 'e' : //else extends
+		case 'e' : //else extends exports
 			switch (length) {
 				case 4 :
 					if (data[++index] == 'l') {
@@ -3116,15 +3213,18 @@
 					}
 					return TokenNameIdentifier;
 				case 7 :
-					if ((data[++index] == 'x')
-						&& (data[++index] == 't')
-						&& (data[++index] == 'e')
-						&& (data[++index] == 'n')
-						&& (data[++index] == 'd')
-						&& (data[++index] == 's'))
-						return TokenNameextends;
-					else
-						return TokenNameIdentifier;
+						if ((data[++index] == 'x')) {
+							if ((data[++index] == 't') && (data[++index] == 'e') && (data[++index] == 'n')
+									&& (data[++index] == 'd') && (data[++index] == 's')) {
+								return TokenNameextends;
+							} else if (areRestrictedModuleKeywordsActive()
+									&& (data[index] == 'p') && (data[++index] == 'o') && (data[++index] == 'r')
+									&& (data[++index] == 't') && (data[++index] == 's')) {
+								return TokenNameexports;
+							} else
+								return TokenNameIdentifier;
+						} else
+							return TokenNameIdentifier;
 				default :
 					return TokenNameIdentifier;
 			}
@@ -3258,6 +3358,22 @@
 			}
 			return TokenNameIdentifier;
 
+		case 'm': //module
+			switch (length) {
+				case 6 :
+					if (areRestrictedModuleKeywordsActive()
+						&& (data[++index] == 'o')
+						&& (data[++index] == 'd')
+						&& (data[++index] == 'u')
+						&& (data[++index] == 'l')
+						&& (data[++index] == 'e'))
+						return TokenNamemodule;
+					else
+						return TokenNameIdentifier;
+				default :
+					return TokenNameIdentifier;
+			}
+
 		case 'n' : //native new null
 			switch (length) {
 				case 3 :
@@ -3283,7 +3399,26 @@
 					return TokenNameIdentifier;
 			}
 
-		case 'p' : //package private protected public
+		case 'o':
+			switch (length) {
+				case 4 :
+					if (areRestrictedModuleKeywordsActive() && (data[++index] == 'p') && (data[++index] == 'e') && (data[++index] == 'n'))
+						return TokenNameopen;
+					else
+						return TokenNameIdentifier;
+				case 5 :
+					if (areRestrictedModuleKeywordsActive()
+							&& (data[++index] == 'p')
+							&& (data[++index] == 'e')
+							&& (data[++index] == 'n')
+							&& (data[++index] == 's'))
+						return TokenNameopens;
+					else
+						return TokenNameIdentifier;
+				default :
+					return TokenNameIdentifier;
+			}
+		case 'p' : //package private protected public provides
 			switch (length) {
 				case 6 :
 					if ((data[++index] == 'u')
@@ -3314,6 +3449,18 @@
 							return TokenNameprivate;
 						} else
 							return TokenNameIdentifier;
+				case 8 :
+					if (areRestrictedModuleKeywordsActive()
+						&& (data[++index] == 'r')
+						&& (data[++index] == 'o')
+						&& (data[++index] == 'v')
+						&& (data[++index] == 'i')
+						&& (data[++index] == 'd')
+						&& (data[++index] == 'e')
+						&& (data[++index] == 's')) {
+						return TokenNameprovides;
+					} else
+						return TokenNameIdentifier;
 				case 9 :
 					if ((data[++index] == 'r')
 						&& (data[++index] == 'o')
@@ -3331,15 +3478,29 @@
 					return TokenNameIdentifier;
 			}
 
-		case 'r' : //return
-			if (length == 6) {
-				if ((data[++index] == 'e')
-					&& (data[++index] == 't')
-					&& (data[++index] == 'u')
-					&& (data[++index] == 'r')
-					&& (data[++index] == 'n')) {
-					return TokenNamereturn;
-				}
+		case 'r' : //return requires
+			switch (length) {
+				case 6:
+					if ((data[++index] == 'e')
+						&& (data[++index] == 't')
+						&& (data[++index] == 'u')
+						&& (data[++index] == 'r')
+						&& (data[++index] == 'n')) {
+						return TokenNamereturn;
+					} else 
+						return TokenNameIdentifier;
+				case 8:
+					if (areRestrictedModuleKeywordsActive()
+						&& (data[++index] == 'e')
+						&& (data[++index] == 'q')
+						&& (data[++index] == 'u')
+						&& (data[++index] == 'i')
+						&& (data[++index] == 'r')
+						&& (data[++index] == 'e')
+						&& (data[++index] == 's')) {
+						return TokenNamerequires;
+					} else 
+						return TokenNameIdentifier;
 			}
 			return TokenNameIdentifier;
 
@@ -3410,6 +3571,11 @@
 
 		case 't' : //try throw throws transient this true
 			switch (length) {
+				case 2:
+					if (areRestrictedModuleKeywordsActive() && data[++index] == 'o')
+						return TokenNameto;
+					else
+						return TokenNameIdentifier;
 				case 3 :
 					if ((data[++index] == 'r') && (data[++index] == 'y'))
 						return TokenNametry;
@@ -3455,11 +3621,33 @@
 						return TokenNametransient;
 					} else
 						return TokenNameIdentifier;
-
+				case 10:
+					if (areRestrictedModuleKeywordsActive() && (data[++index] == 'r')
+						&& (data[++index] == 'a')
+						&& (data[++index] == 'n')
+						&& (data[++index] == 's')
+						&& (data[++index] == 'i')
+						&& (data[++index] == 't')
+						&& (data[++index] == 'i')
+						&& (data[++index] == 'v')
+						&& (data[++index] == 'e')) {
+						return TokenNametransitive;
+					} else
+						return TokenNameIdentifier;
 				default :
 					return TokenNameIdentifier;
 			}
-
+		case 'u' : //uses
+			switch(length) {
+				case 4 :
+					if (areRestrictedModuleKeywordsActive() 
+							&& (data[++index] == 's') && (data[++index] == 'e') && (data[++index] == 's'))
+						return TokenNameuses;
+					else
+						return TokenNameIdentifier;
+				default :
+					return TokenNameIdentifier;
+			}
 		case 'v' : //void volatile
 			switch (length) {
 				case 4 :
@@ -3483,8 +3671,16 @@
 					return TokenNameIdentifier;
 			}
 
-		case 'w' : //while widefp
+		case 'w' : //while widefp with
 			switch (length) {
+				case 4:
+					if (areRestrictedModuleKeywordsActive()
+						&& (data[++index] == 'i')
+						&& (data[++index] == 't')
+						&& (data[++index] == 'h'))
+						return TokenNamewith;
+					else
+						return TokenNameIdentifier;
 				case 5 :
 					if ((data[++index] == 'h')
 						&& (data[++index] == 'i')
@@ -3840,6 +4036,8 @@
 	this.initialPosition = this.currentPosition = 0;
 	this.containsAssertKeyword = false;
 	this.linePtr = -1;
+	this.scanContext = null;
+	this.insideModuleInfo = false;
 }
 /*
  * Should be used if a parse (usually a diet parse) has already been performed on the unit,
@@ -3865,6 +4063,7 @@
 public final void setSource(CompilationResult compilationResult) {
 	setSource(null, compilationResult);
 }
+@Override
 public String toString() {
 	if (this.startPosition == this.eofPosition)
 		return "EOF\n\n" + new String(this.source); //$NON-NLS-1$
@@ -3998,6 +4197,12 @@
 			return "volatile"; //$NON-NLS-1$
 		case TokenNamewhile :
 			return "while"; //$NON-NLS-1$
+		case TokenNamemodule :
+			return "module"; //$NON-NLS-1$
+		case TokenNamerequires :
+			return "requires"; //$NON-NLS-1$
+		case TokenNameexports :
+			return "exports"; //$NON-NLS-1$
 
 		case TokenNameIntegerLiteral :
 			return "Integer(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
@@ -4227,6 +4432,7 @@
 		super (false /*comment*/, false /*whitespace*/, false /*nls*/, sourceLevel, complianceLevel, null/*taskTag*/, null/*taskPriorities*/, false /*taskCaseSensitive*/);
 	}
 	
+	@Override
 	public int getNextToken() throws InvalidInputException {
 		int token;
 		if (this.nextToken != TokenNameNotAToken) {
@@ -4234,7 +4440,15 @@
 			this.nextToken = TokenNameNotAToken;
 			return token; // presumed to be unambiguous.
 		}
+		if (this.scanContext == null) { // init lazily, since isInModuleDeclaration may need the parser to be known
+			this.scanContext = isInModuleDeclaration() ? ScanContext.EXPECTING_KEYWORD : ScanContext.INACTIVE;
+		}
 		token = getNextToken0();
+		if (areRestrictedModuleKeywordsActive()) {
+			if (isRestrictedKeyword(token))
+				token = disambiguatedRestrictedKeyword(token);
+			updateScanContext(token);
+		}
 		if (token == TokenNameAT && atTypeAnnotation()) {
 			if (((VanguardParser) this.activeParser).currentGoal == Goal.LambdaParameterListGoal) {
 				token = disambiguatedToken(token);
@@ -4246,7 +4460,7 @@
 	}
 }
 
-private static final class Goal {
+private static class Goal {
 	
 	int first;      // steer the parser towards a single minded pursuit.
 	int [] follow;  // the definite terminal symbols that signal the successful reduction to goal.
@@ -4323,7 +4537,7 @@
 	}
 }
 // Vanguard Parser - A Private utility helper class for the scanner.
-private static final class VanguardParser extends Parser {
+private static class VanguardParser extends Parser {
 	
 	public static final boolean SUCCESS = true;
 	public static final boolean FAILURE = false;
@@ -4333,6 +4547,10 @@
 	public VanguardParser(VanguardScanner scanner) {
 		this.scanner = scanner;
 	}
+
+	public VanguardParser(ProblemReporter reporter) {
+		super(reporter, false);
+	}
 	
 	// Canonical LALR pushdown automaton identical to Parser.parse() minus side effects of any kind, returns the rule reduced.
 	protected boolean parse(Goal goal) {
@@ -4390,11 +4608,65 @@
 			return FAILURE;
 		}
 	}
+	@Override
 	public String toString() {
 		return "\n\n\n----------------Scanner--------------\n" + this.scanner.toString(); //$NON-NLS-1$;
 	}
 }
 
+private class ScanContextDetector extends VanguardParser {
+	ScanContextDetector(CompilerOptions options) {
+		super(new ProblemReporter(
+					DefaultErrorHandlingPolicies.ignoreAllProblems(),
+					options,
+					new DefaultProblemFactory()));
+		this.problemReporter.options.performStatementsRecovery = false;
+		this.reportSyntaxErrorIsRequired = false;
+		this.reportOnlyOneSyntaxError = false;
+	}
+
+	@Override
+	public void initializeScanner(){
+		this.scanner = new Scanner(
+			false /*comment*/,
+			false /*whitespace*/,
+			false, /* will be set in initialize(boolean) */
+			this.options.sourceLevel /*sourceLevel*/,
+			this.options.complianceLevel /*complianceLevel*/,
+			this.options.taskTags/*taskTags*/,
+			this.options.taskPriorities/*taskPriorities*/,
+			this.options.isTaskCaseSensitive/*taskCaseSensitive*/)
+		{
+			@Override
+			void updateScanContext(int token) {
+				if (token != TokenNameEOF)
+					super.updateScanContext(token);
+			}
+		};
+		this.scanner.recordLineSeparator = false;
+		this.scanner.setActiveParser(this);
+	}
+
+	@Override
+	public boolean isParsingModuleDeclaration() {
+		return true;
+	}
+
+	public ScanContext getScanContext(char[] src, int begin) {
+		this.scanner.setSource(src);
+		this.scanner.resetTo(0, begin);
+		goForCompilationUnit();
+		Goal goal = new Goal(TokenNamePLUS_PLUS, null, 0) {
+			@Override
+			boolean hasBeenReached(int act, int token) {
+				return token == TokenNameEOF;
+			}
+		};
+		parse(goal);
+		return this.scanner.scanContext;
+	}
+}
+
 private VanguardParser getVanguardParser() {
 	if (this.vanguardParser == null) {
 		this.vanguardScanner = new VanguardScanner(this.sourceLevel, this.complianceLevel);
@@ -4402,7 +4674,7 @@
 		this.vanguardScanner.setActiveParser(this.vanguardParser);
 	}
 	this.vanguardScanner.setSource(this.source);
-	this.vanguardScanner.resetTo(this.startPosition, this.eofPosition - 1);
+	this.vanguardScanner.resetTo(this.startPosition, this.eofPosition - 1, isInModuleDeclaration(), this.scanContext);
 	return this.vanguardParser;
 }
 
@@ -4491,6 +4763,63 @@
 public void setActiveParser(ConflictedParser parser) {
 	this.activeParser  = parser;
 	this.lookBack[0] = this.lookBack[1] = TokenNameNotAToken;  // no hand me downs please.
+	if (parser != null) {
+		this.insideModuleInfo = parser.isParsingModuleDeclaration();
+	}
+}
+public static boolean isRestrictedKeyword(int token) {
+	switch(token) {
+		case TokenNameopen:
+		case TokenNamemodule:
+		case TokenNamerequires:
+		case TokenNametransitive:
+		case TokenNameexports:
+		case TokenNameto:
+		case TokenNameopens:
+		case TokenNameuses:
+		case TokenNameprovides:
+		case TokenNamewith:
+			return true;
+		default:
+			return false;
+	}
+}
+int disambiguatedRestrictedKeyword(int restrictedKeywordToken) {
+	int token = restrictedKeywordToken;
+	if (this.scanContext == ScanContext.EXPECTING_IDENTIFIER)
+		return TokenNameIdentifier;
+
+	switch(restrictedKeywordToken) {
+		case TokenNametransitive:
+			if (this.scanContext != ScanContext.AFTER_REQUIRES) {
+				token = TokenNameIdentifier;
+			} else {
+				getVanguardParser();
+				this.vanguardScanner.resetTo(this.currentPosition, this.eofPosition - 1, true, ScanContext.EXPECTING_IDENTIFIER);
+				try {
+					int lookAhead = this.vanguardScanner.getNextToken();
+					if (lookAhead == TokenNameSEMICOLON)
+						token = TokenNameIdentifier;
+				} catch (InvalidInputException e) {
+					// 
+				}
+			}
+			break;
+		case TokenNameopen:
+		case TokenNamemodule:
+		case TokenNameexports:
+		case TokenNameopens:
+		case TokenNamerequires:
+		case TokenNameprovides:
+		case TokenNameuses:
+		case TokenNameto:
+		case TokenNamewith:
+			if (this.scanContext != ScanContext.EXPECTING_KEYWORD) {
+				token = TokenNameIdentifier;
+			}
+			break;
+	}
+	return token;
 }
 int disambiguatedToken(int token) {
 	final VanguardParser parser = getVanguardParser();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class
deleted file mode 100644
index 006afb0..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.java
deleted file mode 100644
index bf105fc..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/UpdateParserFiles.java
+++ /dev/null
@@ -1,18 +0,0 @@
-import java.io.IOException;
-import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
-
-public class UpdateParserFiles {
-
-	public static void main(String[] args) throws IOException {
-		if (args.length != 2) {
-			printUsage();
-			return;
-		}
-		Parser.buildFilesFromLPG(args[0], args[1]);
-	}
-	
-	public static void printUsage() {
-		System.out.println("Usage: UpdateParserFiles <path to javadcl.java> <path to javahdr.java>");
-		System.out.println("e.g. UpdateParserFiles c:/javadcl.java c:/javahdr.java");
-	}
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.java
index 56f46a0..ca0b696 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/DiagnoseParser.java
@@ -1,3 +1,4 @@
+// ASPECTJ
 /*******************************************************************************
  * Copyright (c) 2000, 2014 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -2545,6 +2546,7 @@
     	}
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer res = new StringBuffer();
 
@@ -2553,6 +2555,7 @@
 		return res.toString();
 	}
 
+	@Override
 	public boolean atConflictScenario(int token) {
 		/* There is too much voodoo that goes on here in DiagnoseParser (multiple machines, lexer stream reset etc.)
 		   So we take a simple minded view that we will always ask for disambiguation, except there is one scenario 
@@ -2562,4 +2565,10 @@
 		*/ 
 		return (token == TokenNameLPAREN || token == TokenNameAT || (token == TokenNameLESS && !this.lexStream.awaitingColonColon()));
 	}
+
+	@Override
+	public boolean isParsingModuleDeclaration() {
+		//
+		return this.parser.isParsingModuleDeclaration();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.java
index 8af6838..d8a89ff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.java
@@ -28,6 +28,7 @@
 		int line;
 		int flags;
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append(this.name).append('[').append(this.kind).append(']');
@@ -222,9 +223,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		StringBuffer res = new StringBuffer();
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g
deleted file mode 100644
index b53cf56..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.g
+++ /dev/null
@@ -1,3374 +0,0 @@
--- AspectJ Extension
--- Andy Clement, Nov 2007, Nov 2011, Jul 2013
--- previous versions, Adrian Colyer, Jim Hugunin
---main options
-%options ACTION, AN=JavaAction.java, GP=java,
-%options FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 ,
-%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE,
-
---error recovering options.....
--- ASPECTJ: INCLUDE THE COMMAS OR JIKESPG CAN GIVE AN ARRAYINDEXOUTOFBOUNDS EXCEPTION
-%options ERROR_MAPS,
-
---grammar understanding options
-%options first follow
-%options TRACE=FULL,
-%options VERBOSE,
-
-%options DEFERRED,
-%options NAMES=MAXIMUM,
-%options SCOPES,
-
---Usefull macros helping reading/writing semantic actions
-$Define
-$putCase
-/.    case $rule_number : if (DEBUG) { System.out.println("$rule_text"); }  //$NON-NLS-1$
-		   ./
-
-$break
-/.
-			break;
-./
-
-
-$readableName
-/.1#$rule_number#./
-$compliance
-/.2#$rule_number#./
-$recovery
-/.2#$rule_number# recovery./
-$recovery_template
-/.3#$rule_number#./
-$no_statements_recovery
-/.4#$rule_number# 1./
--- here it starts really ------------------------------------------
-$Terminals
-
-	Identifier
-
-	abstract assert boolean break byte case catch char class
-	continue const default do double else enum extends false final finally float
-	for goto if implements import instanceof int
-	interface long native new null package private
-	protected public return short static strictfp super switch
-	synchronized this throw throws transient true try void
-	volatile while
-
--- AspectJ Extension
-	aspect pointcut around before after declare privileged
--- End AspectJ Extension
-
-	IntegerLiteral
-	LongLiteral
-	FloatingPointLiteral
-	DoubleLiteral
-	CharacterLiteral
-	StringLiteral
-
-	PLUS_PLUS
-	MINUS_MINUS
-	EQUAL_EQUAL
-	LESS_EQUAL
-	GREATER_EQUAL
-	NOT_EQUAL
-	LEFT_SHIFT
-	RIGHT_SHIFT
-	UNSIGNED_RIGHT_SHIFT
-	PLUS_EQUAL
-	MINUS_EQUAL
-	MULTIPLY_EQUAL
-	DIVIDE_EQUAL
-	AND_EQUAL
-	OR_EQUAL
-	XOR_EQUAL
-	REMAINDER_EQUAL
-	LEFT_SHIFT_EQUAL
-	RIGHT_SHIFT_EQUAL
-	UNSIGNED_RIGHT_SHIFT_EQUAL
-	OR_OR
-	AND_AND
-	PLUS
-	MINUS
-	NOT
-	REMAINDER
-	XOR
-	AND
-	MULTIPLY
-	OR
-	TWIDDLE
-	DIVIDE
-	GREATER
-	LESS
-	LPAREN
-	RPAREN
-	LBRACE
-	RBRACE
-	LBRACKET
-	RBRACKET
-	SEMICOLON
-	QUESTION
-	COLON
-	COMMA
-	DOT
-	EQUAL
-	AT
-	ELLIPSIS
-	ARROW
-	COLON_COLON
-	BeginLambda
-	BeginIntersectionCast
-	BeginTypeArguments
-	ElidedSemicolonAndRightBrace
-	AT308
-	AT308DOTDOTDOT
-
---    BodyMarker
-
-$Alias
-
-	'::'   ::= COLON_COLON
-	'->'   ::= ARROW
-	'++'   ::= PLUS_PLUS
-	'--'   ::= MINUS_MINUS
-	'=='   ::= EQUAL_EQUAL
-	'<='   ::= LESS_EQUAL
-	'>='   ::= GREATER_EQUAL
-	'!='   ::= NOT_EQUAL
-	'<<'   ::= LEFT_SHIFT
-	'>>'   ::= RIGHT_SHIFT
-	'>>>'  ::= UNSIGNED_RIGHT_SHIFT
-	'+='   ::= PLUS_EQUAL
-	'-='   ::= MINUS_EQUAL
-	'*='   ::= MULTIPLY_EQUAL
-	'/='   ::= DIVIDE_EQUAL
-	'&='   ::= AND_EQUAL
-	'|='   ::= OR_EQUAL
-	'^='   ::= XOR_EQUAL
-	'%='   ::= REMAINDER_EQUAL
-	'<<='  ::= LEFT_SHIFT_EQUAL
-	'>>='  ::= RIGHT_SHIFT_EQUAL
-	'>>>=' ::= UNSIGNED_RIGHT_SHIFT_EQUAL
-	'||'   ::= OR_OR
-	'&&'   ::= AND_AND
-	'+'    ::= PLUS
-	'-'    ::= MINUS
-	'!'    ::= NOT
-	'%'    ::= REMAINDER
-	'^'    ::= XOR
-	'&'    ::= AND
-	'*'    ::= MULTIPLY
-	'|'    ::= OR
-	'~'    ::= TWIDDLE
-	'/'    ::= DIVIDE
-	'>'    ::= GREATER
-	'<'    ::= LESS
-	'('    ::= LPAREN
-	')'    ::= RPAREN
-	'{'    ::= LBRACE
-	'}'    ::= RBRACE
-	'['    ::= LBRACKET
-	']'    ::= RBRACKET
-	';'    ::= SEMICOLON
-	'?'    ::= QUESTION
-	':'    ::= COLON
-	','    ::= COMMA
-	'.'    ::= DOT
-	'='    ::= EQUAL
-	'@'	   ::= AT
-	'...'  ::= ELLIPSIS
-	'@308' ::= AT308
-	'@308...' ::= AT308DOTDOTDOT
-
-$Start
-	Goal
-
-$Rules
-
-/.// This method is part of an automatic generation : do NOT edit-modify
-protected void consumeRule(int act) {
-  switch ( act ) {
-./
-
-Goal ::= '++' CompilationUnit
-Goal ::= '--' MethodBody
--- Initializer
-Goal ::= '>>' StaticInitializer
-Goal ::= '>>' Initializer
--- error recovery
--- Modifiersopt is used to properly consume a header and exit the rule reduction at the end of the parse() method
-Goal ::= '>>>' Header1 Modifiersopt
-Goal ::= '!' Header2 Modifiersopt
-Goal ::= '*' BlockStatements
-Goal ::= '*' CatchHeader
--- JDOM
-Goal ::= '&&' FieldDeclaration
-Goal ::= '||' ImportDeclaration
-Goal ::= '?' PackageDeclaration
-Goal ::= '+' TypeDeclaration
-Goal ::= '/' GenericMethodDeclaration
-Goal ::= '&' ClassBodyDeclarations
--- code snippet
-Goal ::= '%' Expression
-Goal ::= '%' ArrayInitializer
--- completion parser
-Goal ::= '~' BlockStatementsopt
-Goal ::= '{' BlockStatementopt
--- source type converter
-Goal ::= '||' MemberValue
--- syntax diagnosis
-Goal ::= '?' AnnotationTypeMemberDeclaration
--- JSR 335 Reconnaissance missions.
-Goal ::= '->' ParenthesizedLambdaParameterList
-Goal ::= '(' ParenthesizedCastNameAndBounds
-Goal ::= '<' ReferenceExpressionTypeArgumentsAndTrunk
--- JSR 308 Reconnaissance mission.
-Goal ::= '@' TypeAnnotations
-/:$readableName Goal:/
-
-Literal -> IntegerLiteral
-Literal -> LongLiteral
-Literal -> FloatingPointLiteral
-Literal -> DoubleLiteral
-Literal -> CharacterLiteral
-Literal -> StringLiteral
-Literal -> null
-Literal -> BooleanLiteral
-/:$readableName Literal:/
-BooleanLiteral -> true
-BooleanLiteral -> false
-/:$readableName BooleanLiteral:/
-
--- AspectJ Extension
--- we do this because AspectJ keywords are 'pseudo' keywords
--- although they are recognised by the scanner as tokens, there
--- are many places where they are still allowed as identifiers
--- for maximum compatibility with existing Java programs.
--- JavaIdentifer replaces Identifier at many points in the productions
--- that follow, and allows any Java identifier or an AspectJ 'pseudo'
--- keyword to appear at those points in the grammar.
-JavaIdentifier -> 'Identifier'
-JavaIdentifier -> AjSimpleName
-/:$readableName identifier:/
-
-JavaIdentifierNoAround -> 'Identifier'
-JavaIdentifierNoAround -> AjSimpleNameNoAround
-/:$readableName identifier:/
--- End AspectJ Extension
-
-Type ::= PrimitiveType
-/.$putCase consumePrimitiveType(); $break ./
-Type -> ReferenceType
-/:$readableName Type:/
-
-PrimitiveType -> TypeAnnotationsopt NumericType
-/:$readableName PrimitiveType:/
-NumericType -> IntegralType
-NumericType -> FloatingPointType
-/:$readableName NumericType:/
-
-PrimitiveType -> TypeAnnotationsopt 'boolean'
-PrimitiveType -> TypeAnnotationsopt 'void'
-IntegralType -> 'byte'
-IntegralType -> 'short'
-IntegralType -> 'int'
-IntegralType -> 'long'
-IntegralType -> 'char'
-/:$readableName IntegralType:/
-FloatingPointType -> 'float'
-FloatingPointType -> 'double'
-/:$readableName FloatingPointType:/
-
-ReferenceType ::= ClassOrInterfaceType
-/.$putCase consumeReferenceType(); $break ./
-ReferenceType -> ArrayType
-/:$readableName ReferenceType:/
-
----------------------------------------------------------------
--- 1.5 feature
----------------------------------------------------------------
-ClassOrInterfaceType -> ClassOrInterface
-ClassOrInterfaceType -> GenericType
-/:$readableName Type:/
-
-ClassOrInterface ::= Name
-/.$putCase consumeClassOrInterfaceName(); $break ./
-ClassOrInterface ::= GenericType '.' Name
-/.$putCase consumeClassOrInterface(); $break ./
-/:$readableName Type:/
-
-GenericType ::= ClassOrInterface TypeArguments
-/.$putCase consumeGenericType(); $break ./
-/:$readableName GenericType:/
-
-GenericType ::= ClassOrInterface '<' '>'
-/.$putCase consumeGenericTypeWithDiamond(); $break ./
-/:$readableName GenericType:/
-/:$compliance 1.7:/
-
---
--- These rules have been rewritten to avoid some conflicts introduced
--- by adding the 1.1 features
---
--- ArrayType ::= PrimitiveType '[' ']'
--- ArrayType ::= Name '[' ']'
--- ArrayType ::= ArrayType '[' ']'
---
-
-ArrayTypeWithTypeArgumentsName ::= GenericType '.' Name
-/.$putCase consumeArrayTypeWithTypeArgumentsName(); $break ./
-/:$readableName ArrayTypeWithTypeArgumentsName:/
-
-ArrayType ::= PrimitiveType Dims
-/.$putCase consumePrimitiveArrayType(); $break ./
-ArrayType ::= Name Dims
-/.$putCase consumeNameArrayType(); $break ./
-ArrayType ::= ArrayTypeWithTypeArgumentsName Dims
-/.$putCase consumeGenericTypeNameArrayType(); $break ./
-ArrayType ::= GenericType Dims
-/.$putCase consumeGenericTypeArrayType(); $break ./
-/:$readableName ArrayType:/
-
-ClassType -> ClassOrInterfaceType
-/:$readableName ClassType:/
-
---------------------------------------------------------------
---------------------------------------------------------------
-
--- Was this in the old version (37 compiler):
--- START
--- Name -> SimpleName
--- Name -> QualifiedName
--- /:$readableName Name:/
--- /:$recovery_template Identifier:/
---
--- SimpleName -> 'Identifier'
--- /:$readableName SimpleName:/
---
--- QualifiedName ::= Name '.' SimpleName
--- /.$putCase consumeQualifiedName(); $break ./
--- /:$readableName QualifiedName:/
--- END
-
--- AspectJ Extension
--- see earlier comments for why we do this... its all about
--- treating aspectj keywords as pseudo keywords for maximum
--- compatibility with existing Java applications.
-NameOrAj -> AjName
-NameOrAj -> Name
-/:$readableName name:/
-
-SimpleNameOrAj -> AjSimpleName
-SimpleNameOrAj -> SimpleName
-/:$readableName name:/
-
--- the addition of the consumeZero calls here is what has caused the jikespg parser to crash at the end?!?
-AjName ::= AjSimpleName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-AjName ::= AjQualifiedName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-/:$readableName name:/
-
-AjSimpleName -> AjSimpleNameNoAround
-/:$readableName identifer:/
-
-AjSimpleNameNoAround -> 'aspect'
-AjSimpleNameNoAround -> 'privileged'
-AjSimpleNameNoAround -> 'pointcut'
-AjSimpleName -> 'around'
-AjSimpleNameNoAround -> 'before'
-AjSimpleNameNoAround -> 'after'
-AjSimpleNameNoAround -> 'declare'
-/:$readableName identifier (aspect keywords permitted):/
-
-AjQualifiedName ::= AjName '.' SimpleNameOrAj
-/.$putCase consumeQualifiedName(); $break ./
-/:$readableName qualified name:/
-
-UnannotatableNameOrAj -> AjName
-UnannotatableNameOrAj -> UnannotatableName
-/:$readableName name:/
-
--- End AspectJ Extension
-
-
-Name ::= SimpleName
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-Name -> TypeAnnotations SimpleName
-/:$compliance 1.8:/
-Name -> QualifiedName
-/:$readableName Name:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension (JavaIdentifier was Identifier)
-
-SimpleName -> 'Identifier'
-/:$readableName SimpleName:/
-
-UnannotatableName -> SimpleName
-UnannotatableName ::= UnannotatableName '.' SimpleName
-/.$putCase consumeUnannotatableQualifiedName(); $break ./
-/:$readableName UnannotatableQualifiedName:/
-
-QualifiedName ::= Name '.' JavaIdentifier -- AspectJ Extension (JavaIdentifier was SimpleName)
-/.$putCase consumeQualifiedName(false); $break ./
-QualifiedName ::= Name '.' TypeAnnotations JavaIdentifier -- AspectJ Extension (JavaIdentifier was SimpleName)
-/.$putCase consumeQualifiedName(true); $break ./
-/:$compliance 1.8:/
-/:$readableName QualifiedName:/
-
-TypeAnnotationsopt ::= $empty
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-TypeAnnotationsopt -> TypeAnnotations
-/:$compliance 1.8:/
-/:$readableName TypeAnnotationsopt:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-TypeAnnotations ::= TypeAnnotations0
-/:$readableName TypeAnnotations:/
-
-TypeAnnotations0 -> TypeAnnotation
-/:$compliance 1.8:/
-TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation
-/. $putCase consumeOneMoreTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-/:$readableName TypeAnnotations:/
-
-TypeAnnotation ::= NormalTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-TypeAnnotation ::= MarkerTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-TypeAnnotation ::= SingleMemberTypeAnnotation
-/. $putCase consumeTypeAnnotation(); $break ./
-/:$compliance 1.8:/
-/:$readableName TypeAnnotation:/
-
-TypeAnnotationName ::= @308 UnannotatableName
-/.$putCase consumeAnnotationName() ; $break ./
-/:$readableName AnnotationName:/
-/:$compliance 1.8:/
-/:$recovery_template @ Identifier:/
-NormalTypeAnnotation ::= TypeAnnotationName '(' MemberValuePairsopt ')'
-/.$putCase consumeNormalAnnotation(true) ; $break ./
-/:$readableName NormalAnnotation:/
-/:$compliance 1.8:/
-MarkerTypeAnnotation ::= TypeAnnotationName
-/.$putCase consumeMarkerAnnotation(true) ; $break ./
-/:$readableName MarkerAnnotation:/
-/:$compliance 1.8:/
-SingleMemberTypeAnnotation ::= TypeAnnotationName '(' SingleMemberAnnotationMemberValue ')'
-/.$putCase consumeSingleMemberAnnotation(true) ; $break ./
-/:$readableName SingleMemberAnnotation:/
-/:$compliance 1.8:/
-
-RejectTypeAnnotations ::= $empty
-/.$putCase consumeNonTypeUseName(); $break ./
-/:$readableName RejectTypeAnnotations:/
-
-PushZeroTypeAnnotations ::= $empty
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-/:$readableName ZeroTypeAnnotations:/
-
-VariableDeclaratorIdOrThis ::= 'this'
-/.$putCase consumeExplicitThisParameter(false); $break ./
-/:$compliance 1.8:/
-VariableDeclaratorIdOrThis ::= UnannotatableName '.' 'this'
-/.$putCase consumeExplicitThisParameter(true); $break ./
-/:$compliance 1.8:/
-VariableDeclaratorIdOrThis ::= VariableDeclaratorId
-/.$putCase consumeVariableDeclaratorIdParameter(); $break ./
-/:$readableName VariableDeclaratorId:/
-
-CompilationUnit ::= EnterCompilationUnit InternalCompilationUnit
-/.$putCase consumeCompilationUnit(); $break ./
-/:$readableName CompilationUnit:/
-
-InternalCompilationUnit ::= PackageDeclaration
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= PackageDeclaration TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= ImportDeclarations ReduceImports
-/.$putCase consumeInternalCompilationUnit(); $break ./
-InternalCompilationUnit ::= TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= ImportDeclarations ReduceImports TypeDeclarations
-/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./
-InternalCompilationUnit ::= $empty
-/.$putCase consumeEmptyInternalCompilationUnit(); $break ./
-/:$readableName CompilationUnit:/
-
-ReduceImports ::= $empty
-/.$putCase consumeReduceImports(); $break ./
-/:$readableName ReduceImports:/
-
-EnterCompilationUnit ::= $empty
-/.$putCase consumeEnterCompilationUnit(); $break ./
-/:$readableName EnterCompilationUnit:/
-
-Header -> ImportDeclaration
-Header -> PackageDeclaration
-Header -> ClassHeader
-Header -> InterfaceHeader
-Header -> EnumHeader
-Header -> AnnotationTypeDeclarationHeader
-Header -> StaticInitializer
-Header -> RecoveryMethodHeader
-Header -> FieldDeclaration
-Header -> AllocationHeader
-Header -> ArrayCreationHeader
-/:$readableName Header:/
-
-Header1 -> Header
-Header1 -> ConstructorHeader
-/:$readableName Header1:/
-
-Header2 -> Header
-Header2 -> EnumConstantHeader
-/:$readableName Header2:/
-
-CatchHeader ::= 'catch' '(' CatchFormalParameter ')' '{'
-/.$putCase consumeCatchHeader(); $break ./
-/:$readableName CatchHeader:/
-
-ImportDeclarations -> ImportDeclaration
-ImportDeclarations ::= ImportDeclarations ImportDeclaration
-/.$putCase consumeImportDeclarations(); $break ./
-/:$readableName ImportDeclarations:/
-
-TypeDeclarations -> TypeDeclaration
-TypeDeclarations ::= TypeDeclarations TypeDeclaration
-/.$putCase consumeTypeDeclarations(); $break ./
-/:$readableName TypeDeclarations:/
-
-PackageDeclaration ::= PackageDeclarationName ';'
-/.$putCase consumePackageDeclaration(); $break ./
-/:$readableName PackageDeclaration:/
-
-PackageDeclarationName ::= Modifiers 'package' PushRealModifiers Name RejectTypeAnnotations
-/.$putCase consumePackageDeclarationNameWithModifiers(); $break ./
-/:$readableName PackageDeclarationName:/
-/:$compliance 1.5:/
-
-PackageDeclarationName ::= PackageComment 'package' Name RejectTypeAnnotations
-/.$putCase consumePackageDeclarationName(); $break ./
-/:$readableName PackageDeclarationName:/
-
-PackageComment ::= $empty
-/.$putCase consumePackageComment(); $break ./
-/:$readableName PackageComment:/
-
-ImportDeclaration -> SingleTypeImportDeclaration
-ImportDeclaration -> TypeImportOnDemandDeclaration
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-ImportDeclaration -> SingleStaticImportDeclaration
-ImportDeclaration -> StaticImportOnDemandDeclaration
-/:$readableName ImportDeclaration:/
-
-SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName SingleTypeImportDeclaration:/
-
-SingleTypeImportDeclarationName ::= 'import' Name RejectTypeAnnotations
-/.$putCase consumeSingleTypeImportDeclarationName(); $break ./
-/:$readableName SingleTypeImportDeclarationName:/
-
-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName TypeImportOnDemandDeclaration:/
-
-TypeImportOnDemandDeclarationName ::= 'import' Name '.' RejectTypeAnnotations '*'
-/.$putCase consumeTypeImportOnDemandDeclarationName(); $break ./
-/:$readableName TypeImportOnDemandDeclarationName:/
-
-TypeDeclaration -> ClassDeclaration
-TypeDeclaration -> InterfaceDeclaration
--- this declaration in part of a list od declaration and we will
--- use and optimized list length calculation process
--- thus we decrement the number while it will be incremend.....
-TypeDeclaration ::= ';'
-/. $putCase consumeEmptyTypeDeclaration(); $break ./
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-TypeDeclaration -> EnumDeclaration
-TypeDeclaration -> AnnotationTypeDeclaration
-/:$readableName TypeDeclaration:/
-
---18.7 Only in the LALR(1) Grammar
-
-Modifiers -> Modifier
-Modifiers ::= Modifiers Modifier
-/.$putCase consumeModifiers2(); $break ./
-/:$readableName Modifiers:/
-
--- AspectJ Extension, introduced SimpleModifier to avoid shift/reduce conflict with PseudoTokens
-SimpleModifier -> 'public'
-SimpleModifier -> 'protected'
-SimpleModifier -> 'private'
-SimpleModifier -> 'static'
-SimpleModifier -> 'abstract'
-SimpleModifier -> 'final'
-SimpleModifier -> 'native'
-SimpleModifier -> 'synchronized'
-SimpleModifier -> 'transient'
-SimpleModifier -> 'volatile'
-SimpleModifier -> 'strictfp'
-/:$readableName Modifiers:/
--- End AspectJ Extension, for LALR(1)
-Modifier -> SimpleModifier
-Modifier ::= Annotation
-/.$putCase consumeAnnotationAsModifier(); $break ./
-/:$readableName Modifier:/
-
--- AspectJ Extensions - main block
-Header -> DeclareDeclaration
-Header -> InterTypeMethodDeclaration
-Header -> InterTypeFieldDeclaration
-Header -> PointcutDeclaration
-Header -> BasicAdviceDeclaration
-Header -> AroundDeclaration
-
-TypeDeclaration -> AspectDeclaration
-Header -> AspectDeclaration
-
-ClassMemberDeclaration -> AspectDeclaration
-InterfaceMemberDeclaration -> AspectDeclaration
-
-
-ClassMemberDeclaration -> PointcutDeclaration
-InterfaceMemberDeclaration -> PointcutDeclaration
-
--- everthing else is only visible inside an aspect
-AspectDeclaration ::= AspectHeader AspectBody
-/.$putCase consumeAspectDeclaration(); $break ./
-/:$readableName declaration:/
--- shortened readable name above works better in error recovery situations
-
-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt AspectHeaderRest
-/.$putCase consumeAspectHeader(); $break ./
-/:$readableName aspect header:/
-
-AspectHeaderName -> AspectHeaderName1
-/:$readableName aspect header:/
-
-AspectHeaderName -> AspectHeaderName2
-/:$readableName aspect header:/
-
-AspectHeaderName ::= AspectHeaderName1 TypeParameters
-/.$putCase consumeAspectHeaderNameWithTypeParameters(false); $break ./
-
--- (pr235505)
-AspectHeaderName ::= AspectHeaderName2 TypeParameters
-/.$putCase consumeAspectHeaderNameWithTypeParameters(true); $break ./
-
-AspectHeaderName1 ::= Modifiersopt 'aspect' 'Identifier'
-/.$putCase consumeAspectHeaderName(false); $break ./
-/:$readableName aspect declaration:/
-
-AspectHeaderName2 ::= Modifiersopt 'privileged' Modifiersopt  'aspect' 'Identifier'
-/.$putCase consumeAspectHeaderName(true); $break ./
-/:$readableName privileged aspect declaration:/
-
-AspectHeaderRest ::= $empty
-
---[dominates TypePattern] [persingleton() | percflow(PCD) | perthis(PCD) | pertarget(PCD)]
-AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens
-/.$putCase consumeAspectHeaderRest(); $break ./
-/:$readableName per-clause:/
-
-AspectHeaderRestStart ::= 'Identifier'
-/.$putCase consumePseudoTokenIdentifier(); $break ./
-/:$readableName per-clause:/
-
-AspectBody ::= '{' AspectBodyDeclarationsopt '}'
-/:$readableName body:/
-
-AspectBodyDeclarations ::= AspectBodyDeclaration
-AspectBodyDeclarations ::= AspectBodyDeclarations AspectBodyDeclaration
-/.$putCase consumeClassBodyDeclarations(); $break ./
-/:$readableName member declaration:/
-
-AspectBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./
-/:$readableName empty aspect body:/
-
--- ??? why is NestedType here
-AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations
-/.$putCase consumeClassBodyDeclarationsopt(); $break ./
-
-
-AspectBodyDeclaration ::= ClassBodyDeclarationNoAroundMethod
-/.$putCase consumeClassBodyDeclarationInAspect(); $break ./
-/:$readableName aspect member declaration:/
-
---*****************************************
--- these rules are a copy of ClassBodyDeclaration rules, going down the member route until
--- we hit method declarations, at which point we disallow a method called around.
---*****************************************
-
-ClassBodyDeclarationNoAroundMethod -> ClassMemberDeclarationNoAroundMethod
-ClassBodyDeclarationNoAroundMethod -> StaticInitializer
-ClassBodyDeclarationNoAroundMethod -> ConstructorDeclaration
---1.1 feature
-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName ClassBodyDeclarationNoAroundMethod:/
-
-ClassMemberDeclarationNoAroundMethod -> PointcutDeclaration
-ClassMemberDeclarationNoAroundMethod -> AspectDeclaration
-ClassMemberDeclarationNoAroundMethod -> FieldDeclaration
-ClassMemberDeclarationNoAroundMethod -> MethodDeclarationNoAround
---1.1 feature
-ClassMemberDeclarationNoAroundMethod -> ClassDeclaration
---1.1 feature
-ClassMemberDeclarationNoAroundMethod -> InterfaceDeclaration
-ClassMemberDeclarationNoAroundMethod -> IntertypeClassDeclaration
--- 1.5 feature
-ClassMemberDeclarationNoAroundMethod -> EnumDeclaration
-ClassMemberDeclarationNoAroundMethod -> AnnotationTypeDeclaration
-/:$readableName ClassMemberDeclaration:/
-
--- Empty declarations are not valid Java ClassMemberDeclarations.
--- However, since the current (2/14/97) Java compiler accepts them
--- (in fact, some of the official tests contain this erroneous
--- syntax)
-ClassMemberDeclarationNoAroundMethod ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break./
-
-MethodDeclarationNoAround -> AbstractMethodDeclarationNoAround
-MethodDeclarationNoAround ::= MethodHeaderNoAround MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeMethodDeclaration(true,false);  $break ./
-/:$readableName MethodDeclarationNoAround:/
-
-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround ';'
-/.$putCase // set to false to consume a method without body
-  consumeMethodDeclaration(false,false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type JavaIdentifierNoAround '('
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround '('
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
---*****************************************
--- end copy of ClassBodyDeclaration rules *
---*****************************************
-
--- pointcuts and advice
-
-PointcutDeclaration ::= PointcutHeader FormalParameterListopt MethodHeaderRightParen ';'
-/.$putCase consumeEmptyPointcutDeclaration(); $break ./
-/:$readableName pointcut declaration:/
-
-PointcutDeclaration ::= PointcutHeader FormalParameterListopt MethodHeaderRightParen ':' PseudoTokens  ';'
-/.$putCase consumePointcutDeclaration(); $break ./
-/:$readableName pointcut declaration:/
-
-PointcutHeader ::= Modifiersopt 'pointcut'  JavaIdentifier '('
-/.$putCase consumePointcutHeader(); $break ./
-/:$readableName pointcut declaration:/
-
-AspectBodyDeclaration -> AroundDeclaration
-AspectBodyDeclaration -> BasicAdviceDeclaration
-
-AroundDeclaration ::= AroundHeader MethodBody
-/.$putCase consumeAroundDeclaration(); $break ./
-/:$readableName around advice:/
-
-AroundHeader ::= AroundHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeAroundHeader(); $break ./
-/:$readableName around advice header:/
-
-
--- no modifiers are actually allowed on around, but the grammar is happier this way
-AroundHeaderName ::= Modifiersopt Type  'around' '('
-/.$putCase consumeAroundHeaderName(); $break ./
-/:$readableName [modifiers] <return-type> around ( :/
-
--- Recovery rule for around with no return (pr64222)
-AroundHeaderName ::= Modifiersopt 'around' '('
-/.$putCase consumeAroundHeaderNameMissingReturnType(); $break ./
-/:$readableName [modifiers] around (:/
-
-BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody
-/.$putCase consumeBasicAdviceDeclaration(); $break ./
-/:$readableName AdviceDeclaration:/
-
-
-BasicAdviceHeader -> BeforeAdviceHeader
-BasicAdviceHeader -> AfterAdviceHeader
-/:$readableName advice header:/
-
-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeBasicAdviceHeader(); $break ./
-/:$readableName AdviceHeader:/
-
-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt MethodHeaderRightParen ExtraParamopt MethodHeaderThrowsClauseopt ':' PseudoTokens
-/.$putCase consumeBasicAdviceHeader(); $break ./
-/:$readableName AdviceHeader:/
-
-BeforeAdviceHeaderName ::= Modifiersopt 'before' '('
-/.$putCase consumeBasicAdviceHeaderName(false); $break ./
-/:$readableName AdviceHeaderName:/
-
-AfterAdviceHeaderName ::= Modifiersopt 'after' '('
-/.$putCase consumeBasicAdviceHeaderName(true); $break ./
-/:$readableName AdviceHeaderName:/
-
-ExtraParamopt ::= 'Identifier' '(' FormalParameter ')'
-/.$putCase consumeExtraParameterWithFormal(); $break ./
-/:$readableName ExtraParam:/
-
-ExtraParamopt ::= 'Identifier' '(' ')'
-/.$putCase consumeExtraParameterNoFormal(); $break ./
-/:$readableName ExtraParam:/
-
--- deprecated, but were probably stuck with it now
-ExtraParamopt ::= 'Identifier'
-/.$putCase consumeExtraParameterNoFormal(); $break ./
-/:$readableName ExtraParam:/
-
-ExtraParamopt ::= $empty
-
-
--- intertype declarations
-
-OnType ::= JavaIdentifier
-/.$putCase consumeZeroTypeAnnotations(); $break ./
-OnType ::= OnType '.' JavaIdentifier
-/.$putCase consumeZeroTypeAnnotations(); consumeQualifiedName(); $break ./
-/:$readableName QualifiedName:/
-
-AspectBodyDeclaration -> InterTypeMethodDeclaration
-AspectBodyDeclaration -> InterTypeConstructorDeclaration
-AspectBodyDeclaration -> InterTypeFieldDeclaration
-
-InterTypeMethodDeclaration -> AbstractInterTypeMethodDeclaration
-InterTypeMethodDeclaration ::= InterTypeMethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeInterTypeMethodDeclaration(true);  $break ./
-/:$readableName inter-type method declaration:/
-
-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeInterTypeMethodHeader(); $break ./
-/:$readableName inter-type method declaration header:/
-
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(false,false); $break ./
-
--- Recovery Rule
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '.' '*' '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("*"); $break ./
-
--- Recovery Rule
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType '+' '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderNameIllegallyUsingTypePattern("+"); $break ./
-
-InterTypeMethodHeaderName ::= Modifiersopt Type OnType TypeParametersAsReference '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(false,true); $break ./
-/:$readableName inter-type method declaration header:/
-
-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(true,false); $break ./
-
-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType TypeParametersAsReference '.' JavaIdentifier '('
-/.$putCase consumeInterTypeMethodHeaderName(true,true); $break ./
-
-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader ';'
-/.$putCase // set to false to consume a method without body
-  consumeInterTypeMethodDeclaration(false); $break ./
-/:$readableName abstract inter-type method declaration:/
-
-TypeParametersAsReference ::= TypeParameters
-/.$putCase convertTypeParametersToSingleTypeReferences(); $break ./
-/:$readableName type parameter list:/
-
-InterTypeConstructorDeclaration ::= InterTypeConstructorHeader MethodBody
-/.$putCase // set to true to consume a method with a body
-  consumeInterTypeConstructorDeclaration();  $break ./
-/:$readableName inter-type constructor declaration:/
-
-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt
-/.$putCase consumeInterTypeConstructorHeader(); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- using Name instead of OnType to make jikespg happier
-InterTypeConstructorHeaderName ::= Modifiersopt Name '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(false,false); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- Recovery Rule
-InterTypeConstructorHeaderName ::= Modifiersopt Name '.' '*' '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("*"); $break ./
-/:$readableName inter-type constructor declaration header:/
-
--- Recovery Rule
-InterTypeConstructorHeaderName ::= Modifiersopt Name '+' '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderNameIllegallyUsingTypePattern("+"); $break ./
-/:$readableName inter-type constructor declaration header:/
-
-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(true,false); $break ./
-
-InterTypeConstructorHeaderName ::= Modifiersopt GenericType '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(false,true); $break ./
-
-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType '.' 'new' '('
-/.$putCase consumeInterTypeConstructorHeaderName(true,true); $break ./
-
-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody ';'
-/.$putCase consumeInterTypeFieldDeclaration(); $break ./
-/:$readableName inter-type field declaration:/
-
-InterTypeFieldHeader ::= Modifiersopt Type OnType '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeader(false); $break ./
-/:$readableName inter-type field declaration header:/
-
--- Recovery Rule
-InterTypeFieldHeader ::= Modifiersopt Type OnType '.' '*' '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("*"); $break ./
-/:$readableName inter-type field declaration header:/
-
--- Recovery Rule
-InterTypeFieldHeader ::= Modifiersopt Type OnType '+' '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeaderIllegallyAttemptingToUseATypePattern("+"); $break ./
-/:$readableName inter-type field declaration header:/
-
-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference '.' JavaIdentifier
-/.$putCase consumeInterTypeFieldHeader(true); $break ./
-
---InterTypeFieldDeclaration ::= Modifiersopt Type OnType '.' ITDFieldVariableDeclarator ';'
---/.$putCase consumeInterTypeFieldDeclaration(); $break ./
---
---InterTypeFieldDeclaration ::= Modifiersopt Type OnType TypeParameters '.' ITDFieldVariableDeclarator ';'
---/.$putCase consumeInterTypeFieldDeclarationWithTypeParameters(); $break ./
---
---ITDFieldVariableDeclarator ::= JavaIdentifier EnterITDVariable InterTypeFieldBody
---/:$readableName ITDFieldVariableDeclarator:/
---
---EnterITDVariable ::= $empty
---/.$putCase consumeEnterITDVariable(); $break ./
---/:$readableName EnterITDVariable:/
-
-InterTypeFieldBody ::=  $empty
-/.$putCase consumeExitITDVariableWithoutInitializer(); $break ./
-
-InterTypeFieldBody ::= '=' ForceNoDiet VariableInitializer RestoreDiet
-/.$putCase consumeExitITDVariableWithInitializer(); $break ./
-/:$readableName field initialization expression:/
-
--- declares (more fun than a pcd)
-AspectBodyDeclaration -> DeclareDeclaration
-
-DeclareDeclaration ::= DeclareHeader PseudoTokens ';'
-/.$putCase consumeDeclareDeclaration(); $break ./
-/:$readableName declare statement:/
-
-DeclareHeader ::= 'declare' 'Identifier' ':'
-/.$putCase consumeDeclareHeader(); $break ./
-/:$readableName declare [error | warning | parents | soft | precedence]:/
-
-
--- for declare annotation support
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' Annotations ';'
-/.$putCase consumeDeclareAnnotation(' '); $break ./
-
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' '+' Annotations ';'
-/.$putCase consumeDeclareAnnotation('+'); $break ./
-
-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon ':' '-' Annotations ';'
-/.$putCase consumeDeclareAnnotation('-'); $break ./
-
-Annotations -> Annotation
-Annotations ::= Annotations Annotation
-/:$readableName Annotations:/
-
-DeclareAnnotationHeader ::= 'declare' '@' 'Identifier' ':'
-/.$putCase consumeDeclareAnnotationHeader(); $break ./
-/:$readableName declare @AnnotationName:/
-
--- the joy of pcds
-PseudoTokens ::= PseudoToken
-PseudoTokens ::= ColonPseudoToken
-/:$readableName type pattern or pointcut expression:/
-
-PseudoTokens ::= PseudoTokens ColonPseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-
-PseudoTokens ::= PseudoTokens PseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-
-
-PseudoTokensNoColon ::= PseudoToken
-PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken
-/.$putCase consumePseudoTokens(); $break ./
-/:$readableName allowable token in pointcut or type pattern:/
-
-
-ColonPseudoToken ::= ':'
-/.$putCase consumePseudoToken(":"); $break ./
-/:$readableName any allowable token in pointcut or type pattern, except ':':/
-
-PseudoToken ::= JavaIdentifier
-/.$putCase consumePseudoTokenIdentifier(); $break ./
-/:$readableName allowable token in pointcut or type pattern:/
-
-
-PseudoToken ::= '('
-/.$putCase consumePseudoToken("("); $break ./
-
-PseudoToken ::= ')'
-/.$putCase consumePseudoToken(")"); $break ./
-
-PseudoToken ::= '.'
-/.$putCase consumePseudoToken("."); $break ./
-PseudoToken ::= '*'
-/.$putCase consumePseudoToken("*"); $break ./
-
-PseudoToken ::= '+'
-/.$putCase consumePseudoToken("+"); $break ./
-
-PseudoToken ::= '='
-/.$putCase consumePseudoToken("="); $break ./
-
-PseudoToken ::= '&&'
-/.$putCase consumePseudoToken("&&"); $break ./
-
-PseudoToken ::= '||'
-/.$putCase consumePseudoToken("||"); $break ./
-
-PseudoToken ::= '!'
-/.$putCase consumePseudoToken("!"); $break ./
-
-PseudoToken ::= ','
-/.$putCase consumePseudoToken(","); $break ./
-
-PseudoToken ::= '['
-/.$putCase consumePseudoToken("["); $break ./
-
-PseudoToken ::= ']'
-/.$putCase consumePseudoToken("]"); $break ./
-
-PseudoToken ::= '@'
-/.$putCase consumePseudoToken("@"); $break ./
-
-PseudoToken ::= '...'
-/.$putCase consumePseudoToken("..."); $break ./
-
-PseudoToken ::= '?'
-/.$putCase consumePseudoToken("?"); $break ./
-
-PseudoToken ::= '<'
-/.$putCase consumePseudoToken("<"); $break ./
-
-PseudoToken ::= '>'
-/.$putCase consumePseudoToken(">"); $break ./
-
-PseudoToken ::= '>>'
-/.$putCase consumePseudoToken(">>"); $break ./
-
-PseudoToken ::= '>>>'
-/.$putCase consumePseudoToken(">>>"); $break ./
-
-PseudoToken ::= '&'
-/.$putCase consumePseudoToken("&"); $break ./
-
-PseudoToken ::= '!='
-/.$putCase consumePseudoToken("!="); $break ./
-
-PseudoToken ::= PrimitiveType
-/.$putCase consumePseudoTokenPrimitiveType(); $break ./
-
-PseudoToken ::= SimpleModifier
-/.$putCase consumePseudoTokenModifier(); $break ./
-
-PseudoToken ::= Literal
-/.$putCase consumePseudoTokenLiteral(); $break ./
-
-
-PseudoToken ::= 'this'
-/.$putCase consumePseudoToken("this", 1, true); $break ./
-
-PseudoToken ::= 'class'
-/.$putCase consumePseudoToken("class", 1, true); $break ./
-
-PseudoToken ::= 'super'
-/.$putCase consumePseudoToken("super", 1, true); $break ./
-
-
--- special handling for if
-PseudoToken ::= 'if' '(' Expression ')'
-/.$putCase consumePseudoTokenIf(); $break ./
-
-PseudoToken ::= 'assert'
-/.$putCase consumePseudoToken("assert", 1, true); $break ./
-
-PseudoToken ::= 'import'
-/.$putCase consumePseudoToken("import", 1, true); $break ./
-
-PseudoToken ::= 'package'
-/.$putCase consumePseudoToken("package", 1, true); $break ./
-
-PseudoToken ::= 'throw'
-/.$putCase consumePseudoToken("throw", 1, true); $break ./
-
-PseudoToken ::= 'new'
-/.$putCase consumePseudoToken("new", 1, true); $break ./
-
-PseudoToken ::= 'do'
-/.$putCase consumePseudoToken("do", 1, true); $break ./
-
-PseudoToken ::= 'for'
-/.$putCase consumePseudoToken("for", 1, true); $break ./
-
-PseudoToken ::= 'switch'
-/.$putCase consumePseudoToken("switch", 1, true); $break ./
-
-PseudoToken ::= 'try'
-/.$putCase consumePseudoToken("try", 1, true); $break ./
-
-PseudoToken ::= 'while'
-/.$putCase consumePseudoToken("while", 1, true); $break ./
-
-PseudoToken ::= 'break'
-/.$putCase consumePseudoToken("break", 1, true); $break ./
-
-PseudoToken ::= 'continue'
-/.$putCase consumePseudoToken("continue", 1, true); $break ./
-
-PseudoToken ::= 'return'
-/.$putCase consumePseudoToken("return", 1, true); $break ./
-
-PseudoToken ::= 'case'
-/.$putCase consumePseudoToken("case", 1, true); $break ./
-
-PseudoToken ::= 'catch'
-/.$putCase consumePseudoToken("catch", 0, true); $break ./
-
-PseudoToken ::= 'instanceof'
-/.$putCase consumePseudoToken("instanceof", 0, true); $break ./
-
-PseudoToken ::= 'else'
-/.$putCase consumePseudoToken("else", 0, true); $break ./
-
-PseudoToken ::= 'extends'
-/.$putCase consumePseudoToken("extends", 0, true); $break ./
-
-PseudoToken ::= 'finally'
-/.$putCase consumePseudoToken("finally", 0, true); $break ./
-
-PseudoToken ::= 'implements'
-/.$putCase consumePseudoToken("implements", 0, true); $break ./
-
-PseudoToken ::= 'throws'
-/.$putCase consumePseudoToken("throws", 0, true); $break ./
-
--- add all other keywords as identifiers
--- End AspectJ Extensions main block
-
-
---18.8 Productions from 8: Class Declarations
---ClassModifier ::=
---      'abstract'
---    | 'final'
---    | 'public'
---18.8.1 Productions from 8.1: Class Declarations
-
-ClassDeclaration ::= ClassHeader ClassBody
-/.$putCase consumeClassDeclaration(); $break ./
-/:$readableName ClassDeclaration:/
-
-IntertypeClassDeclaration ::= IntertypeClassHeader ClassBody
-/.$putCase consumeIntertypeClassDeclaration(); $break ./
-/:$readableName IntertypeClassDeclaration:/
-
-IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeIntertypeClassHeader(); $break ./
-/:$readableName IntertypeClassHeader:/
-
-IntertypeClassHeaderName ::= IntertypeClassHeaderName1 TypeParameters
-/.$putCase consumeIntertypeTypeHeaderNameWithTypeParameters(); $break ./
-
-IntertypeClassHeaderName -> IntertypeClassHeaderName1
-/:$readableName IntertypeClassHeaderName:/
-
-IntertypeClassHeaderName1 ::= Modifiersopt 'class' OnType '.' JavaIdentifier
-/.$putCase consumeIntertypeClassHeaderName(false); $break ./
-
-InterTypeClassHeaderName1 ::= Modifiersopt 'class' OnType TypeParametersAsReference '.' JavaIdentifier
-/.$putCase consumeIntertypeClassHeaderName(true); $break ./
-/:$readableName IntertypeClassHeader:/
-
-ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeClassHeader(); $break ./
-/:$readableName ClassHeader:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-ClassHeaderName ::= ClassHeaderName1 TypeParameters
-/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./
-
-ClassHeaderName -> ClassHeaderName1
-/:$readableName ClassHeaderName:/
-
-ClassHeaderName1 ::= Modifiersopt 'class' JavaIdentifier -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeClassHeaderName1(); $break ./
-/:$readableName ClassHeaderName:/
-
-ClassHeaderExtends ::= 'extends' ClassType
-/.$putCase consumeClassHeaderExtends(); $break ./
-/:$readableName ClassHeaderExtends:/
-
-ClassHeaderImplements ::= 'implements' InterfaceTypeList
-/.$putCase consumeClassHeaderImplements(); $break ./
-/:$readableName ClassHeaderImplements:/
-
-InterfaceTypeList -> InterfaceType
-InterfaceTypeList ::= InterfaceTypeList ',' InterfaceType
-/.$putCase consumeInterfaceTypeList(); $break ./
-/:$readableName InterfaceTypeList:/
-
-InterfaceType ::= ClassOrInterfaceType
-/.$putCase consumeInterfaceType(); $break ./
-/:$readableName InterfaceType:/
-
-ClassBody ::= '{' ClassBodyDeclarationsopt '}'
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-ClassBodyDeclarations ::= ClassBodyDeclaration
-ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration
-/.$putCase consumeClassBodyDeclarations(); $break ./
-/:$readableName ClassBodyDeclarations:/
-
-ClassBodyDeclaration -> ClassMemberDeclaration
-ClassBodyDeclaration -> StaticInitializer
-ClassBodyDeclaration -> ConstructorDeclaration
---1.1 feature
-ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName ClassBodyDeclaration:/
-
-Diet ::= $empty
-/.$putCase consumeDiet(); $break./
-/:$readableName Diet:/
-
-Initializer ::= Diet NestedMethod CreateInitializer Block
-/.$putCase consumeClassBodyDeclaration(); $break ./
-/:$readableName Initializer:/
-
-CreateInitializer ::= $empty
-/.$putCase consumeCreateInitializer(); $break./
-/:$readableName CreateInitializer:/
-
-ClassMemberDeclaration -> FieldDeclaration
-ClassMemberDeclaration -> MethodDeclaration
---1.1 feature
-ClassMemberDeclaration -> ClassDeclaration
---1.1 feature
-ClassMemberDeclaration -> InterfaceDeclaration
--- 1.5 feature
-ClassMemberDeclaration -> EnumDeclaration
-ClassMemberDeclaration -> AnnotationTypeDeclaration
-/:$readableName ClassMemberDeclaration:/
-
--- Empty declarations are not valid Java ClassMemberDeclarations.
--- However, since the current (2/14/97) Java compiler accepts them
--- (in fact, some of the official tests contain this erroneous
--- syntax)
-ClassMemberDeclaration ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break./
-
-GenericMethodDeclaration -> MethodDeclaration
-GenericMethodDeclaration -> ConstructorDeclaration
-/:$readableName GenericMethodDeclaration:/
-
---18.8.2 Productions from 8.3: Field Declarations
---VariableModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---    | 'static'
---    | 'final'
---    | 'transient'
---    | 'volatile'
-
-FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';'
-/.$putCase consumeFieldDeclaration(); $break ./
-/:$readableName FieldDeclaration:/
-
-VariableDeclarators -> VariableDeclarator
-VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator
-/.$putCase consumeVariableDeclarators(); $break ./
-/:$readableName VariableDeclarators:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-VariableDeclarator ::= VariableDeclaratorId EnterVariable ExitVariableWithoutInitialization
-VariableDeclarator ::= VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/:$readableName VariableDeclarator:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-EnterVariable ::= $empty
-/.$putCase consumeEnterVariable(); $break ./
-/:$readableName EnterVariable:/
-
-ExitVariableWithInitialization ::= $empty
-/.$putCase consumeExitVariableWithInitialization(); $break ./
-/:$readableName ExitVariableWithInitialization:/
-
-ExitVariableWithoutInitialization ::= $empty
-/.$putCase consumeExitVariableWithoutInitialization(); $break ./
-/:$readableName ExitVariableWithoutInitialization:/
-
-ForceNoDiet ::= $empty
-/.$putCase consumeForceNoDiet(); $break ./
-/:$readableName ForceNoDiet:/
-RestoreDiet ::= $empty
-/.$putCase consumeRestoreDiet(); $break ./
-/:$readableName RestoreDiet:/
-
-VariableDeclaratorId ::= JavaIdentifier Dimsopt -- AspectJ extension : was 'Identifier'
-/:$readableName VariableDeclaratorId:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
-VariableInitializer -> Expression
-VariableInitializer -> ArrayInitializer
-/:$readableName VariableInitializer:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ Extension, was Identifier
-
---18.8.3 Productions from 8.4: Method Declarations
---MethodModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---    | 'static'
---    | 'abstract'
---    | 'final'
---    | 'native'
---    | 'synchronized'
---
-
-MethodDeclaration -> AbstractMethodDeclaration
-MethodDeclaration ::= MethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
- consumeMethodDeclaration(true, false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodDeclaration ::= DefaultMethodHeader MethodBody
-/.$putCase // set to true to consume a method with a body
- consumeMethodDeclaration(true, true); $break ./
-/:$readableName MethodDeclaration:/
-
-AbstractMethodDeclaration ::= MethodHeader ';'
-/.$putCase // set to false to consume a method without body
- consumeMethodDeclaration(false, false); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeader ::= MethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodDeclaration:/
-
-MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier '(' -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-MethodHeaderName ::= Modifiersopt Type JavaIdentifier '('  -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 'Identifier' '('
-/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./
-DefaultMethodHeaderName ::= ModifiersWithDefault Type 'Identifier' '('
-/.$putCase consumeMethodHeaderName(false); $break ./
-/:$readableName MethodHeaderName:/
-
-ModifiersWithDefault ::= Modifiersopt 'default' Modifiersopt
-/.$putCase consumePushCombineModifiers(); $break ./
-/:$readableName Modifiers:/
-/:$compliance 1.8:/
-
-MethodHeaderRightParen ::= ')'
-/.$putCase consumeMethodHeaderRightParen(); $break ./
-/:$readableName ):/
-/:$recovery_template ):/
-
-MethodHeaderExtendedDims ::= Dimsopt
-/.$putCase consumeMethodHeaderExtendedDims(); $break ./
-/:$readableName MethodHeaderExtendedDims:/
-
-MethodHeaderThrowsClause ::= 'throws' ClassTypeList
-/.$putCase consumeMethodHeaderThrowsClause(); $break ./
-/:$readableName MethodHeaderThrowsClause:/
-
-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt
-/.$putCase consumeConstructorHeader(); $break ./
-/:$readableName ConstructorDeclaration:/
-
-ConstructorHeaderName ::= Modifiersopt TypeParameters 'Identifier' '('
-/.$putCase consumeConstructorHeaderNameWithTypeParameters(); $break ./
-ConstructorHeaderName ::= Modifiersopt 'Identifier' '('
-/.$putCase consumeConstructorHeaderName(); $break ./
-/:$readableName ConstructorHeaderName:/
-
--- AspectJ Extension
-ConstructorHeaderName ::=  Modifiersopt 'aspect' '('  -- makes aspect harder
-/.$putCase consumeConstructorHeaderName(); $break ./
--- End AspectJ Extension
-
-FormalParameterList -> FormalParameter
-FormalParameterList ::= FormalParameterList ',' FormalParameter
-/.$putCase consumeFormalParameterList(); $break ./
-/:$readableName FormalParameterList:/
-
---1.1 feature
-FormalParameter ::= Modifiersopt Type VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(false); $break ./
-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations '...' VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(true); $break ./
-/:$compliance 1.5:/
-FormalParameter ::= Modifiersopt Type @308... TypeAnnotations '...' VariableDeclaratorIdOrThis
-/.$putCase consumeFormalParameter(true); $break ./
-/:$readableName FormalParameter:/
-/:$compliance 1.8:/
-/:$recovery_template JavaIdentifier JavaIdentifier:/ -- AspectJ Extension, was Identifier Identifier
-
-CatchFormalParameter ::= Modifiersopt CatchType VariableDeclaratorId
-/.$putCase consumeCatchFormalParameter(); $break ./
-/:$readableName FormalParameter:/
-/:$recovery_template JavaIdentifier JavaIdentifier:/ -- AspectJ Extension, was Identifier Identifier
-
-CatchType ::= UnionType
-/.$putCase consumeCatchType(); $break ./
-/:$readableName CatchType:/
-
-UnionType ::= Type
-/.$putCase consumeUnionTypeAsClassType(); $break ./
-UnionType ::= UnionType '|' Type
-/.$putCase consumeUnionType(); $break ./
-/:$readableName UnionType:/
-/:$compliance 1.7:/
-
-ClassTypeList -> ClassTypeElt
-ClassTypeList ::= ClassTypeList ',' ClassTypeElt
-/.$putCase consumeClassTypeList(); $break ./
-/:$readableName ClassTypeList:/
-
-ClassTypeElt ::= ClassType
-/.$putCase consumeClassTypeElt(); $break ./
-/:$readableName ClassType:/
-
-MethodBody ::= NestedMethod '{' BlockStatementsopt '}'
-/.$putCase consumeMethodBody(); $break ./
-/:$readableName MethodBody:/
-/:$no_statements_recovery:/
-
-NestedMethod ::= $empty
-/.$putCase consumeNestedMethod(); $break ./
-/:$readableName NestedMethod:/
-
---18.8.4 Productions from 8.5: Static Initializers
-
-StaticInitializer ::= StaticOnly Block
-/.$putCase consumeStaticInitializer(); $break./
-/:$readableName StaticInitializer:/
-
-StaticOnly ::= 'static'
-/.$putCase consumeStaticOnly(); $break ./
-/:$readableName StaticOnly:/
-
---18.8.5 Productions from 8.6: Constructor Declarations
---ConstructorModifier ::=
---      'public'
---    | 'protected'
---    | 'private'
---
---
-ConstructorDeclaration ::= ConstructorHeader MethodBody
-/.$putCase consumeConstructorDeclaration() ; $break ./
--- These rules are added to be able to parse constructors with no body
-ConstructorDeclaration ::= ConstructorHeader ';'
-/.$putCase consumeInvalidConstructorDeclaration() ; $break ./
-/:$readableName ConstructorDeclaration:/
-
--- the rules ExplicitConstructorInvocationopt has been expanded
--- in the rule below in order to make the grammar lalr(1).
-
-ExplicitConstructorInvocation ::= 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(0, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(0,SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Primary '.' 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(1, SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Name '.' 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(2, SUPER_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Primary '.' 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(1, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); $break ./
-
---1.1 feature
-ExplicitConstructorInvocation ::= Name '.' 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocation(2, THIS_CALL); $break ./
-
-ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';'
-/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); $break ./
-/:$readableName ExplicitConstructorInvocation:/
-
---18.9 Productions from 9: Interface Declarations
-
---18.9.1 Productions from 9.1: Interface Declarations
---InterfaceModifier ::=
---      'public'
---    | 'abstract'
---
-InterfaceDeclaration ::= InterfaceHeader InterfaceBody
-/.$putCase consumeInterfaceDeclaration(); $break ./
-/:$readableName InterfaceDeclaration:/
-
-InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt
-/.$putCase consumeInterfaceHeader(); $break ./
-/:$readableName InterfaceHeader:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-InterfaceHeaderName ::= InterfaceHeaderName1 TypeParameters
-/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./
-
-InterfaceHeaderName -> InterfaceHeaderName1
-/:$readableName InterfaceHeaderName:/
-
-InterfaceHeaderName1 ::= Modifiersopt interface JavaIdentifier -- AspectJ Extension, was Identifier
-/.$putCase consumeInterfaceHeaderName1(); $break ./
-/:$readableName InterfaceHeaderName:/
-
-InterfaceHeaderExtends ::= 'extends' InterfaceTypeList
-/.$putCase consumeInterfaceHeaderExtends(); $break ./
-/:$readableName InterfaceHeaderExtends:/
-
-InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}'
-/:$readableName InterfaceBody:/
-
-InterfaceMemberDeclarations -> InterfaceMemberDeclaration
-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration
-/.$putCase consumeInterfaceMemberDeclarations(); $break ./
-/:$readableName InterfaceMemberDeclarations:/
-
---same as for class members
-InterfaceMemberDeclaration ::= ';'
-/.$putCase consumeEmptyTypeDeclaration(); $break ./
-/:$readableName InterfaceMemberDeclaration:/
-
-
-InterfaceMemberDeclaration -> ConstantDeclaration
-InterfaceMemberDeclaration ::= DefaultMethodHeader MethodBody
-/:$compliance 1.8:/
-/.$putCase consumeInterfaceMethodDeclaration(false); $break ./
-InterfaceMemberDeclaration ::= MethodHeader MethodBody
-/.$putCase consumeInterfaceMethodDeclaration(false); $break ./
-/:$readableName InterfaceMemberDeclaration:/
--- the next rule is illegal but allows to give a more canonical error message from inside consumeInterfaceMethodDeclaration():
-InterfaceMemberDeclaration ::= DefaultMethodHeader ';'
-/:$compliance 1.8:/
-/.$putCase consumeInterfaceMethodDeclaration(true); $break ./
-
--- These rules are added to be able to parse constructors inside interface and then report a relevent error message
-InvalidConstructorDeclaration ::= ConstructorHeader MethodBody
-/.$putCase consumeInvalidConstructorDeclaration(true); $break ./
-InvalidConstructorDeclaration ::= ConstructorHeader ';'
-/.$putCase consumeInvalidConstructorDeclaration(false); $break ./
-/:$readableName InvalidConstructorDeclaration:/
-
--- These rules are added to be able to parse initializers inside an interface and then report a relevent error message (bug 212713)
-InvalidInitializer -> StaticInitializer
-InvalidInitializer -> Initializer
-/:$readableName InvalidInitializer:/
-
-
-InterfaceMemberDeclaration -> AbstractMethodDeclaration
-InterfaceMemberDeclaration -> InvalidConstructorDeclaration
-InterfaceMemberDeclaration -> InvalidInitializer
---1.1 feature
-InterfaceMemberDeclaration -> ClassDeclaration
---1.1 feature
-InterfaceMemberDeclaration -> InterfaceDeclaration
-InterfaceMemberDeclaration -> EnumDeclaration
-InterfaceMemberDeclaration -> AnnotationTypeDeclaration
-/:$readableName InterfaceMemberDeclaration:/
-
-ConstantDeclaration -> FieldDeclaration
-/:$readableName ConstantDeclaration:/
-
-PushLeftBrace ::= $empty
-/.$putCase consumePushLeftBrace(); $break ./
-/:$readableName PushLeftBrace:/
-
-ArrayInitializer ::= '{' PushLeftBrace ,opt '}'
-/.$putCase consumeEmptyArrayInitializer(); $break ./
-ArrayInitializer ::= '{' PushLeftBrace VariableInitializers '}'
-/.$putCase consumeArrayInitializer(); $break ./
-ArrayInitializer ::= '{' PushLeftBrace VariableInitializers , '}'
-/.$putCase consumeArrayInitializer(); $break ./
-/:$readableName ArrayInitializer:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
-VariableInitializers ::= VariableInitializer
-VariableInitializers ::= VariableInitializers ',' VariableInitializer
-/.$putCase consumeVariableInitializers(); $break ./
-/:$readableName VariableInitializers:/
-
-Block ::= OpenBlock '{' BlockStatementsopt '}'
-/.$putCase consumeBlock(); $break ./
-/:$readableName Block:/
-
-OpenBlock ::= $empty
-/.$putCase consumeOpenBlock() ; $break ./
-/:$readableName OpenBlock:/
-
-BlockStatements ::= BlockStatement
-/.$putCase consumeBlockStatement() ; $break ./
-/:$readableName BlockStatements:/
-BlockStatements ::= BlockStatements BlockStatement
-/.$putCase consumeBlockStatements() ; $break ./
-/:$readableName BlockStatements:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-BlockStatementopt ::= BlockStatementopt0
-/:$readableName BlockStatementopt:/
-BlockStatementopt0 -> $empty
-BlockStatementopt0 -> BlockStatement
-/:$readableName BlockStatementopt0:/
-
-BlockStatement -> LocalVariableDeclarationStatement
-BlockStatement -> Statement
---1.1 feature
-BlockStatement -> ClassDeclaration
-BlockStatement ::= InterfaceDeclaration
-/.$putCase consumeInvalidInterfaceDeclaration(); $break ./
-/:$readableName BlockStatement:/
-BlockStatement ::= AnnotationTypeDeclaration
-/.$putCase consumeInvalidAnnotationTypeDeclaration(); $break ./
-/:$readableName BlockStatement:/
-BlockStatement ::= EnumDeclaration
-/.$putCase consumeInvalidEnumDeclaration(); $break ./
-/:$readableName BlockStatement:/
-
-LocalVariableDeclarationStatement ::= LocalVariableDeclaration ';'
-/.$putCase consumeLocalVariableDeclarationStatement(); $break ./
-/:$readableName LocalVariableDeclarationStatement:/
-
-LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators
-/.$putCase consumeLocalVariableDeclaration(); $break ./
--- 1.1 feature
--- The modifiers part of this rule makes the grammar more permissive.
--- The only modifier here is final. We put Modifiers to allow multiple modifiers
--- This will require to check the validity of the modifier
-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers VariableDeclarators
-/.$putCase consumeLocalVariableDeclaration(); $break ./
-/:$readableName LocalVariableDeclaration:/
-
-PushModifiers ::= $empty
-/.$putCase consumePushModifiers(); $break ./
-/:$readableName PushModifiers:/
-
-PushModifiersForHeader ::= $empty
-/.$putCase consumePushModifiersForHeader(); $break ./
-/:$readableName PushModifiersForHeader:/
-
-PushRealModifiers ::= $empty
-/.$putCase consumePushRealModifiers(); $break ./
-/:$readableName PushRealModifiers:/
-
-Statement -> StatementWithoutTrailingSubstatement
-Statement -> LabeledStatement
-Statement -> IfThenStatement
-Statement -> IfThenElseStatement
-Statement -> WhileStatement
-Statement -> ForStatement
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-Statement -> EnhancedForStatement
-/:$readableName Statement:/
-/:$recovery_template ;:/
-
-StatementNoShortIf -> StatementWithoutTrailingSubstatement
-StatementNoShortIf -> LabeledStatementNoShortIf
-StatementNoShortIf -> IfThenElseStatementNoShortIf
-StatementNoShortIf -> WhileStatementNoShortIf
-StatementNoShortIf -> ForStatementNoShortIf
------------------------------------------------
--- 1.5 feature
------------------------------------------------
-StatementNoShortIf -> EnhancedForStatementNoShortIf
-/:$readableName Statement:/
-
-StatementWithoutTrailingSubstatement -> AssertStatement
-StatementWithoutTrailingSubstatement -> Block
-StatementWithoutTrailingSubstatement -> EmptyStatement
-StatementWithoutTrailingSubstatement -> ExpressionStatement
-StatementWithoutTrailingSubstatement -> SwitchStatement
-StatementWithoutTrailingSubstatement -> DoStatement
-StatementWithoutTrailingSubstatement -> BreakStatement
-StatementWithoutTrailingSubstatement -> ContinueStatement
-StatementWithoutTrailingSubstatement -> ReturnStatement
-StatementWithoutTrailingSubstatement -> SynchronizedStatement
-StatementWithoutTrailingSubstatement -> ThrowStatement
-StatementWithoutTrailingSubstatement -> TryStatement
-StatementWithoutTrailingSubstatement -> TryStatementWithResources
-/:$readableName Statement:/
-
-EmptyStatement ::= ';'
-/.$putCase consumeEmptyStatement(); $break ./
-/:$readableName EmptyStatement:/
-
-LabeledStatement ::= Label ':' Statement
-/.$putCase consumeStatementLabel() ; $break ./
-/:$readableName LabeledStatement:/
-
-LabeledStatementNoShortIf ::= Label ':' StatementNoShortIf
-/.$putCase consumeStatementLabel() ; $break ./
-/:$readableName LabeledStatement:/
-
-Label ::= 'JavaIdentifier' -- AspectJ Extension, was 'Identifier'
-/.$putCase consumeLabel() ; $break ./
-/:$readableName Label:/
-
-ExpressionStatement ::= StatementExpression ';'
-/. $putCase consumeExpressionStatement(); $break ./
-ExpressionStatement ::= ExplicitConstructorInvocation
-/:$readableName Statement:/
-
-StatementExpression ::= Assignment
-StatementExpression ::= PreIncrementExpression
-StatementExpression ::= PreDecrementExpression
-StatementExpression ::= PostIncrementExpression
-StatementExpression ::= PostDecrementExpression
-StatementExpression ::= MethodInvocation
-StatementExpression ::= ClassInstanceCreationExpression
-/:$readableName Expression:/
-
-IfThenStatement ::= 'if' '(' Expression ')' Statement
-/.$putCase consumeStatementIfNoElse(); $break ./
-/:$readableName IfStatement:/
-
-IfThenElseStatement ::= 'if' '(' Expression ')' StatementNoShortIf 'else' Statement
-/.$putCase consumeStatementIfWithElse(); $break ./
-/:$readableName IfStatement:/
-
-IfThenElseStatementNoShortIf ::= 'if' '(' Expression ')' StatementNoShortIf 'else' StatementNoShortIf
-/.$putCase consumeStatementIfWithElse(); $break ./
-/:$readableName IfStatement:/
-
-SwitchStatement ::= 'switch' '(' Expression ')' OpenBlock SwitchBlock
-/.$putCase consumeStatementSwitch() ; $break ./
-/:$readableName SwitchStatement:/
-
-SwitchBlock ::= '{' '}'
-/.$putCase consumeEmptySwitchBlock() ; $break ./
-
-SwitchBlock ::= '{' SwitchBlockStatements '}'
-SwitchBlock ::= '{' SwitchLabels '}'
-SwitchBlock ::= '{' SwitchBlockStatements SwitchLabels '}'
-/.$putCase consumeSwitchBlock() ; $break ./
-/:$readableName SwitchBlock:/
-
-SwitchBlockStatements -> SwitchBlockStatement
-SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement
-/.$putCase consumeSwitchBlockStatements() ; $break ./
-/:$readableName SwitchBlockStatements:/
-
-SwitchBlockStatement ::= SwitchLabels BlockStatements
-/.$putCase consumeSwitchBlockStatement() ; $break ./
-/:$readableName SwitchBlockStatement:/
-
-SwitchLabels -> SwitchLabel
-SwitchLabels ::= SwitchLabels SwitchLabel
-/.$putCase consumeSwitchLabels() ; $break ./
-/:$readableName SwitchLabels:/
-
-SwitchLabel ::= 'case' ConstantExpression ':'
-/. $putCase consumeCaseLabel(); $break ./
-
-SwitchLabel ::= 'default' ':'
-/. $putCase consumeDefaultLabel(); $break ./
-/:$readableName SwitchLabel:/
-
-WhileStatement ::= 'while' '(' Expression ')' Statement
-/.$putCase consumeStatementWhile() ; $break ./
-/:$readableName WhileStatement:/
-
-WhileStatementNoShortIf ::= 'while' '(' Expression ')' StatementNoShortIf
-/.$putCase consumeStatementWhile() ; $break ./
-/:$readableName WhileStatement:/
-
-DoStatement ::= 'do' Statement 'while' '(' Expression ')' ';'
-/.$putCase consumeStatementDo() ; $break ./
-/:$readableName DoStatement:/
-
-ForStatement ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' Statement
-/.$putCase consumeStatementFor() ; $break ./
-/:$readableName ForStatement:/
-
-ForStatementNoShortIf ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' StatementNoShortIf
-/.$putCase consumeStatementFor() ; $break ./
-/:$readableName ForStatement:/
-
---the minus one allows to avoid a stack-to-stack transfer
-ForInit ::= StatementExpressionList
-/.$putCase consumeForInit() ; $break ./
-ForInit -> LocalVariableDeclaration
-/:$readableName ForInit:/
-
-ForUpdate -> StatementExpressionList
-/:$readableName ForUpdate:/
-
-StatementExpressionList -> StatementExpression
-StatementExpressionList ::= StatementExpressionList ',' StatementExpression
-/.$putCase consumeStatementExpressionList() ; $break ./
-/:$readableName StatementExpressionList:/
-
--- 1.4 feature
-AssertStatement ::= 'assert' Expression ';'
-/.$putCase consumeSimpleAssertStatement() ; $break ./
-/:$compliance 1.4:/
-
-AssertStatement ::= 'assert' Expression ':' Expression ';'
-/.$putCase consumeAssertStatement() ; $break ./
-/:$readableName AssertStatement:/
-/:$compliance 1.4:/
-
-BreakStatement ::= 'break' ';'
-/.$putCase consumeStatementBreak() ; $break ./
-
-BreakStatement ::= 'break' Identifier ';'
-/.$putCase consumeStatementBreakWithLabel() ; $break ./
-/:$readableName BreakStatement:/
-
-ContinueStatement ::= 'continue' ';'
-/.$putCase consumeStatementContinue() ; $break ./
-
-ContinueStatement ::= 'continue' Identifier ';'
-/.$putCase consumeStatementContinueWithLabel() ; $break ./
-/:$readableName ContinueStatement:/
-
-ReturnStatement ::= 'return' Expressionopt ';'
-/.$putCase consumeStatementReturn() ; $break ./
-/:$readableName ReturnStatement:/
-
-ThrowStatement ::= 'throw' Expression ';'
-/.$putCase consumeStatementThrow(); $break ./
-/:$readableName ThrowStatement:/
-
-SynchronizedStatement ::= OnlySynchronized '(' Expression ')' Block
-/.$putCase consumeStatementSynchronized(); $break ./
-/:$readableName SynchronizedStatement:/
-
-OnlySynchronized ::= 'synchronized'
-/.$putCase consumeOnlySynchronized(); $break ./
-/:$readableName OnlySynchronized:/
-
-TryStatement ::= 'try' TryBlock Catches
-/.$putCase consumeStatementTry(false, false); $break ./
-TryStatement ::= 'try' TryBlock Catchesopt Finally
-/.$putCase consumeStatementTry(true, false); $break ./
-/:$readableName TryStatement:/
-
-TryStatementWithResources ::= 'try' ResourceSpecification TryBlock Catchesopt
-/.$putCase consumeStatementTry(false, true); $break ./
-TryStatementWithResources ::= 'try' ResourceSpecification TryBlock Catchesopt Finally
-/.$putCase consumeStatementTry(true, true); $break ./
-/:$readableName TryStatementWithResources:/
-/:$compliance 1.7:/
-
-ResourceSpecification ::= '(' Resources ;opt ')'
-/.$putCase consumeResourceSpecification(); $break ./
-/:$readableName ResourceSpecification:/
-/:$compliance 1.7:/
-
-;opt ::= $empty
-/.$putCase consumeResourceOptionalTrailingSemiColon(false); $break ./
-;opt ::= ';'
-/.$putCase consumeResourceOptionalTrailingSemiColon(true); $break ./
-/:$readableName ;:/
-/:$compliance 1.7:/
-
-Resources ::= Resource
-/.$putCase consumeSingleResource(); $break ./
-Resources ::= Resources TrailingSemiColon Resource
-/.$putCase consumeMultipleResources(); $break ./
-/:$readableName Resources:/
-/:$compliance 1.7:/
-
-TrailingSemiColon ::= ';'
-/.$putCase consumeResourceOptionalTrailingSemiColon(true); $break ./
-/:$readableName ;:/
-/:$compliance 1.7:/
-
-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/.$putCase consumeResourceAsLocalVariableDeclaration(); $break ./
-/:$readableName Resource:/
-/:$compliance 1.7:/
-
-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization
-/.$putCase consumeResourceAsLocalVariableDeclaration(); $break ./
-/:$readableName Resource:/
-/:$compliance 1.7:/
-
-TryBlock ::= Block ExitTryBlock
-/:$readableName Block:/
-
-ExitTryBlock ::= $empty
-/.$putCase consumeExitTryBlock(); $break ./
-/:$readableName ExitTryBlock:/
-
-Catches -> CatchClause
-Catches ::= Catches CatchClause
-/.$putCase consumeCatches(); $break ./
-/:$readableName Catches:/
-
-CatchClause ::= 'catch' '(' CatchFormalParameter ')' Block
-/.$putCase consumeStatementCatch() ; $break ./
-/:$readableName CatchClause:/
-
-Finally ::= 'finally' Block
-/:$readableName Finally:/
-/:$recovery_template finally { }:/
-
---18.12 Productions from 14: Expressions
-
---for source positioning purpose
-PushLPAREN ::= '('
-/.$putCase consumeLeftParen(); $break ./
-/:$readableName (:/
-/:$recovery_template (:/
-PushRPAREN ::= ')'
-/.$putCase consumeRightParen(); $break ./
-/:$readableName ):/
-/:$recovery_template ):/
-
-Primary -> PrimaryNoNewArray
-Primary -> ArrayCreationWithArrayInitializer
-Primary -> ArrayCreationWithoutArrayInitializer
-/:$readableName Expression:/
-
-PrimaryNoNewArray -> Literal
-PrimaryNoNewArray ::= 'this'
-/.$putCase consumePrimaryNoNewArrayThis(); $break ./
-
-PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN
-/.$putCase consumePrimaryNoNewArray(); $break ./
-
-PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN
-/.$putCase consumePrimaryNoNewArrayWithName(); $break ./
-
-PrimaryNoNewArray -> ClassInstanceCreationExpression
-PrimaryNoNewArray -> FieldAccess
---1.1 feature
-PrimaryNoNewArray ::= Name '.' 'this'
-/.$putCase consumePrimaryNoNewArrayNameThis(); $break ./
--- PrimaryNoNewArray ::= Name '.' 'super'
--- /.$putCase consumePrimaryNoNewArrayNameSuper(); $break ./
-
-QualifiedSuperReceiver ::= Name '.' 'super'
-/.$putCase consumeQualifiedSuperReceiver(); $break ./
-
---1.1 feature
---PrimaryNoNewArray ::= Type '.' 'class'
---inline Type in the previous rule in order to make the grammar LL1 instead
--- of LL2. The result is the 3 next rules.
-
-PrimaryNoNewArray ::= Name '.' 'class'
-/.$putCase consumePrimaryNoNewArrayName(); $break ./
-
-PrimaryNoNewArray ::= Name Dims '.' 'class'
-/.$putCase consumePrimaryNoNewArrayArrayType(); $break ./
-
-PrimaryNoNewArray ::= PrimitiveType Dims '.' 'class'
-/.$putCase consumePrimaryNoNewArrayPrimitiveArrayType(); $break ./
-
-PrimaryNoNewArray ::= PrimitiveType '.' 'class'
-/.$putCase consumePrimaryNoNewArrayPrimitiveType(); $break ./
-
-PrimaryNoNewArray -> MethodInvocation
-PrimaryNoNewArray -> ArrayAccess
-
------------------------------------------------------------------------
---                   Start of rules for JSR 335
------------------------------------------------------------------------
-
-PrimaryNoNewArray -> LambdaExpression
-PrimaryNoNewArray -> ReferenceExpression
-/:$readableName Expression:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ReferenceExpressionTypeArgumentsAndTrunk ::= ReferenceExpressionTypeArgumentsAndTrunk0
-/:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/
-
-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt
-/.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(false); $break ./
-/:$compliance 1.8:/
-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments '.' ClassOrInterfaceType Dimsopt
-/.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(true); $break ./
-/:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/
-/:$compliance 1.8:/
-
-ReferenceExpression ::= PrimitiveType Dims '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionTypeForm(true); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= Name Dimsopt '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionTypeForm(false); $break ./
-/:$compliance 1.8:/
-
--- BeginTypeArguments is a synthetic token the scanner concocts to help disambiguate
--- between '<' as an operator and '<' in '<' TypeArguments '>'
-ReferenceExpression ::= Name BeginTypeArguments ReferenceExpressionTypeArgumentsAndTrunk '::' NonWildTypeArgumentsopt IdentifierOrNew
-/.$putCase consumeReferenceExpressionGenericTypeForm(); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= Primary '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionPrimaryForm(); $break ./
-/:$compliance 1.8:/
-ReferenceExpression ::= QualifiedSuperReceiver '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionPrimaryForm(); $break ./
-/:$compliance 1.8:/
-
-ReferenceExpression ::= 'super' '::' NonWildTypeArgumentsopt Identifier
-/.$putCase consumeReferenceExpressionSuperForm(); $break ./
-/:$readableName ReferenceExpression:/
-/:$compliance 1.8:/
-
-NonWildTypeArgumentsopt ::= $empty
-/.$putCase consumeEmptyTypeArguments(); $break ./
-NonWildTypeArgumentsopt -> OnlyTypeArguments
-/:$readableName NonWildTypeArgumentsopt:/
-/:$compliance 1.8:/
-
-IdentifierOrNew ::= 'Identifier'
-/.$putCase consumeIdentifierOrNew(false); $break ./
-IdentifierOrNew ::= 'new'
-/.$putCase consumeIdentifierOrNew(true); $break ./
-/:$readableName IdentifierOrNew:/
-/:$compliance 1.8:/
-
-LambdaExpression ::= LambdaParameters '->' LambdaBody
-/.$putCase consumeLambdaExpression(); $break ./
-/:$readableName LambdaExpression:/
-/:$compliance 1.8:/
-
-NestedLambda ::= $empty
-/.$putCase consumeNestedLambda(); $break ./
-/:$readableName NestedLambda:/
-
-LambdaParameters ::= Identifier NestedLambda
-/.$putCase consumeTypeElidedLambdaParameter(false); $break ./
-/:$readableName TypeElidedFormalParameter:/
-/:$compliance 1.8:/
-
--- to make the grammar LALR(1), the scanner transforms the input string to
--- contain synthetic tokens to signal start of lambda parameter list.
-LambdaParameters -> BeginLambda NestedLambda LambdaParameterList
-/:$readableName LambdaParameters:/
-/:$compliance 1.8:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ParenthesizedLambdaParameterList ::= LambdaParameterList
-/:$readableName ParenthesizedLambdaParameterList:/
-
-LambdaParameterList -> PushLPAREN FormalParameterListopt PushRPAREN
-LambdaParameterList -> PushLPAREN TypeElidedFormalParameterList PushRPAREN
-/:$readableName LambdaParameterList:/
-/:$compliance 1.8:/
-
-TypeElidedFormalParameterList -> TypeElidedFormalParameter
-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList ',' TypeElidedFormalParameter
-/.$putCase consumeFormalParameterList(); $break ./
-/:$readableName TypeElidedFormalParameterList:/
-/:$compliance 1.8:/
-
--- to work around a shift reduce conflict, we accept Modifiersopt prefixed
--- identifier - downstream phases should reject input strings with modifiers.
-TypeElidedFormalParameter ::= Modifiersopt Identifier
-/.$putCase consumeTypeElidedLambdaParameter(true); $break ./
-/:$readableName TypeElidedFormalParameter:/
-/:$compliance 1.8:/
-
--- A lambda body of the form x is really '{' return x; '}'
-LambdaBody -> ElidedLeftBraceAndReturn Expression ElidedSemicolonAndRightBrace
-LambdaBody -> Block
-/:$readableName LambdaBody:/
-/:$compliance 1.8:/
-
-ElidedLeftBraceAndReturn ::= $empty
-/.$putCase consumeElidedLeftBraceAndReturn(); $break ./
-/:$readableName ElidedLeftBraceAndReturn:/
-/:$compliance 1.8:/
-
------------------------------------------------------------------------
---                   End of rules for JSR 335
------------------------------------------------------------------------
-
---1.1 feature
---
--- In Java 1.0 a ClassBody could not appear at all in a
--- ClassInstanceCreationExpression.
---
-
-AllocationHeader ::= 'new' ClassType '(' ArgumentListopt ')'
-/.$putCase consumeAllocationHeader(); $break ./
-/:$readableName AllocationHeader:/
-
-ClassInstanceCreationExpression ::= 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionWithTypeArguments(); $break ./
-
-ClassInstanceCreationExpression ::= 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' UnqualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpression(); $break ./
---1.1 feature
-
-ClassInstanceCreationExpression ::= Primary '.' 'new' OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./
-
-ClassInstanceCreationExpression ::= Primary '.' 'new' ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./
-
---1.1 feature
-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./
-/:$readableName ClassInstanceCreationExpression:/
-
-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName OnlyTypeArguments ClassType EnterInstanceCreationArgumentList '(' ArgumentListopt ')' QualifiedClassBodyopt
-/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./
-/:$readableName ClassInstanceCreationExpression:/
-
-EnterInstanceCreationArgumentList ::= $empty
-/.$putCase consumeEnterInstanceCreationArgumentList(); $break ./
-/:$readableName EnterInstanceCreationArgumentList:/
-
-ClassInstanceCreationExpressionName ::= Name '.' 'new'
-/.$putCase consumeClassInstanceCreationExpressionName() ; $break ./
-/:$readableName ClassInstanceCreationExpressionName:/
-
-UnqualifiedClassBodyopt ::= $empty --test made using null as contents
-/.$putCase consumeClassBodyopt(); $break ./
-UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody ClassBody
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-UnqualifiedEnterAnonymousClassBody ::= $empty
-/.$putCase consumeEnterAnonymousClassBody(false); $break ./
-/:$readableName EnterAnonymousClassBody:/
-
-QualifiedClassBodyopt ::= $empty --test made using null as contents
-/.$putCase consumeClassBodyopt(); $break ./
-QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody ClassBody
-/:$readableName ClassBody:/
-/:$no_statements_recovery:/
-
-QualifiedEnterAnonymousClassBody ::= $empty
-/.$putCase consumeEnterAnonymousClassBody(true); $break ./
-/:$readableName EnterAnonymousClassBody:/
-
-ArgumentList ::= Expression
-ArgumentList ::= ArgumentList ',' Expression
-/.$putCase consumeArgumentList(); $break ./
-/:$readableName ArgumentList:/
-
-ArrayCreationHeader ::= 'new' PrimitiveType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationHeader(); $break ./
-
-ArrayCreationHeader ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationHeader(); $break ./
-/:$readableName ArrayCreationHeader:/
-
-ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./
-/:$readableName ArrayCreationWithoutArrayInitializer:/
-
-ArrayCreationWithArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs ArrayInitializer
-/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./
-/:$readableName ArrayCreationWithArrayInitializer:/
-
-ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs
-/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./
-
-ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer
-/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./
-
-DimWithOrWithOutExprs ::= DimWithOrWithOutExpr
-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr
-/.$putCase consumeDimWithOrWithOutExprs(); $break ./
-/:$readableName Dimensions:/
-
-DimWithOrWithOutExpr ::= TypeAnnotationsopt '[' Expression ']'
-DimWithOrWithOutExpr ::= TypeAnnotationsopt '[' ']'
-/. $putCase consumeDimWithOrWithOutExpr(); $break ./
-/:$readableName Dimension:/
--- -----------------------------------------------
-
-Dims ::= DimsLoop
-/. $putCase consumeDims(); $break ./
-/:$readableName Dimensions:/
-DimsLoop -> OneDimLoop
-DimsLoop ::= DimsLoop OneDimLoop
-/:$readableName Dimensions:/
-OneDimLoop ::= '[' ']'
-/. $putCase consumeOneDimLoop(false); $break ./
-OneDimLoop ::= TypeAnnotations '[' ']'
-/:$compliance 1.8:/
-/. $putCase consumeOneDimLoop(true); $break ./
-/:$readableName Dimension:/
-
-FieldAccess ::= Primary '.' JavaIdentifier -- AJ JavaIdentifier was 'Identifier'
-/.$putCase consumeFieldAccess(false); $break ./
-
-FieldAccess ::= 'super' '.' JavaIdentifier -- AJ JavaIdentifier was 'Identifier'
-/.$putCase consumeFieldAccess(true); $break ./
-/:$readableName FieldAccess:/
-
-FieldAccess ::= QualifiedSuperReceiver '.' 'Identifier'
-/.$putCase consumeFieldAccess(false); $break ./
-/:$readableName FieldAccess:/
-
-MethodInvocation ::= NameOrAj '(' ArgumentListopt ')' -- AspectJ Extension, was Name
-/.$putCase consumeMethodInvocationName(); $break ./
-
-MethodInvocation ::= Name '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')'  -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationNameWithTypeArguments(); $break ./
-
-MethodInvocation ::= Primary '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationPrimaryWithTypeArguments(); $break ./
-
-MethodInvocation ::= Primary '.' JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationPrimary(); $break ./
-
-MethodInvocation ::= QualifiedSuperReceiver '.' JavaIdentifier '(' ArgumentListopt ')' -- AJ JI was 'Identifier'
-/.$putCase consumeMethodInvocationPrimary(); $break ./
-
-MethodInvocation ::= QualifiedSuperReceiver '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AJ JI was 'Identifier'
-/.$putCase consumeMethodInvocationPrimaryWithTypeArguments(); $break ./
-
-MethodInvocation ::= 'super' '.' OnlyTypeArguments JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationSuperWithTypeArguments(); $break ./
-
-MethodInvocation ::= 'super' '.' JavaIdentifier '(' ArgumentListopt ')' -- AspectJ Extension, 'Identifier'
-/.$putCase consumeMethodInvocationSuper(); $break ./
-/:$readableName MethodInvocation:/
-
--- (pr159268)
-ArrayAccess ::= Name '[' Expression ']'
-/.$putCase consumeArrayAccess(true); $break ./
-ArrayAccess ::= AjName '[' Expression ']'
-/.$putCase consumeArrayAccess(true); $break ./
-ArrayAccess ::= PrimaryNoNewArray '[' Expression ']'
-/.$putCase consumeArrayAccess(false); $break ./
-ArrayAccess ::= ArrayCreationWithArrayInitializer '[' Expression ']'
-/.$putCase consumeArrayAccess(false); $break ./
-/:$readableName ArrayAccess:/
-
-PostfixExpression -> Primary
-PostfixExpression ::= NameOrAj -- AspectJ Extension, was Name
-/.$putCase consumePostfixExpression(); $break ./
-PostfixExpression -> PostIncrementExpression
-PostfixExpression -> PostDecrementExpression
-/:$readableName Expression:/
-
-PostIncrementExpression ::= PostfixExpression '++'
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS,true); $break ./
-/:$readableName PostIncrementExpression:/
-
-PostDecrementExpression ::= PostfixExpression '--'
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS,true); $break ./
-/:$readableName PostDecrementExpression:/
-
---for source managment purpose
-PushPosition ::= $empty
- /.$putCase consumePushPosition(); $break ./
-/:$readableName PushPosition:/
-
-UnaryExpression -> PreIncrementExpression
-UnaryExpression -> PreDecrementExpression
-UnaryExpression ::= '+' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./
-UnaryExpression ::= '-' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./
-UnaryExpression -> UnaryExpressionNotPlusMinus
-/:$readableName Expression:/
-
-PreIncrementExpression ::= '++' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS,false); $break ./
-/:$readableName PreIncrementExpression:/
-
-PreDecrementExpression ::= '--' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS,false); $break ./
-/:$readableName PreDecrementExpression:/
-
-UnaryExpressionNotPlusMinus -> PostfixExpression
-UnaryExpressionNotPlusMinus ::= '~' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./
-UnaryExpressionNotPlusMinus ::= '!' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./
-UnaryExpressionNotPlusMinus -> CastExpression
-/:$readableName Expression:/
-
-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpression
-/.$putCase consumeCastExpressionWithPrimitiveType(); $break ./
-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithGenericsArray(); $break ./
-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression '.' ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt PushRPAREN InsideCastExpressionWithQualifiedGenerics UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithQualifiedGenericsArray(); $break ./
-CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionLL1(); $break ./
-CastExpression ::=  BeginIntersectionCast PushLPAREN CastNameAndBounds PushRPAREN InsideCastExpressionLL1WithBounds UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionLL1WithBounds(); $break ./
-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus
-/.$putCase consumeCastExpressionWithNameArray(); $break ./
-/:$readableName CastExpression:/
-
-AdditionalBoundsListOpt ::= $empty
-/.$putCase consumeZeroAdditionalBounds(); $break ./
-/:$readableName AdditionalBoundsListOpt:/
-AdditionalBoundsListOpt -> AdditionalBoundList
-/:$compliance 1.8:/
-/:$readableName AdditionalBoundsListOpt:/
-
--- Production name hardcoded in parser. Must be ::= and not ->
-ParenthesizedCastNameAndBounds ::= '(' CastNameAndBounds ')'
-/:$readableName ParenthesizedCastNameAndBounds:/
-
-CastNameAndBounds -> Name AdditionalBoundList
-/:$compliance 1.8:/
-/:$readableName CastNameAndBounds:/
-
-OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments
-/.$putCase consumeOnlyTypeArgumentsForCastExpression(); $break ./
-/:$readableName TypeArguments:/
-
-InsideCastExpression ::= $empty
-/.$putCase consumeInsideCastExpression(); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionLL1 ::= $empty
-/.$putCase consumeInsideCastExpressionLL1(); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionLL1WithBounds ::= $empty
-/.$putCase consumeInsideCastExpressionLL1WithBounds (); $break ./
-/:$readableName InsideCastExpression:/
-InsideCastExpressionWithQualifiedGenerics ::= $empty
-/.$putCase consumeInsideCastExpressionWithQualifiedGenerics(); $break ./
-/:$readableName InsideCastExpression:/
-
-MultiplicativeExpression -> UnaryExpression
-MultiplicativeExpression ::= MultiplicativeExpression '*' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression ::= MultiplicativeExpression '/' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression ::= MultiplicativeExpression '%' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./
-/:$readableName Expression:/
-
-AdditiveExpression -> MultiplicativeExpression
-AdditiveExpression ::= AdditiveExpression '+' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./
-AdditiveExpression ::= AdditiveExpression '-' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./
-/:$readableName Expression:/
-
-ShiftExpression -> AdditiveExpression
-ShiftExpression ::= ShiftExpression '<<' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression ::= ShiftExpression '>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression ::= ShiftExpression '>>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-/:$readableName Expression:/
-
-RelationalExpression -> ShiftExpression
-RelationalExpression ::= RelationalExpression '<' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./
-RelationalExpression ::= RelationalExpression '>' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./
-RelationalExpression ::= RelationalExpression '<=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression ::= RelationalExpression '>=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./
-/:$readableName Expression:/
-
-InstanceofExpression -> RelationalExpression
-InstanceofExpression ::= InstanceofExpression 'instanceof' ReferenceType
-/.$putCase consumeInstanceOfExpression(); $break ./
-/:$readableName Expression:/
-
-EqualityExpression -> InstanceofExpression
-EqualityExpression ::= EqualityExpression '==' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression ::= EqualityExpression '!=' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./
-/:$readableName Expression:/
-
-AndExpression -> EqualityExpression
-AndExpression ::= AndExpression '&' EqualityExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./
-/:$readableName Expression:/
-
-ExclusiveOrExpression -> AndExpression
-ExclusiveOrExpression ::= ExclusiveOrExpression '^' AndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./
-/:$readableName Expression:/
-
-InclusiveOrExpression -> ExclusiveOrExpression
-InclusiveOrExpression ::= InclusiveOrExpression '|' ExclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./
-/:$readableName Expression:/
-
-ConditionalAndExpression -> InclusiveOrExpression
-ConditionalAndExpression ::= ConditionalAndExpression '&&' InclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./
-/:$readableName Expression:/
-
-ConditionalOrExpression -> ConditionalAndExpression
-ConditionalOrExpression ::= ConditionalOrExpression '||' ConditionalAndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./
-/:$readableName Expression:/
-
-ConditionalExpression -> ConditionalOrExpression
-ConditionalExpression ::= ConditionalOrExpression '?' Expression ':' ConditionalExpression
-/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./
-/:$readableName Expression:/
-
-AssignmentExpression -> ConditionalExpression
-AssignmentExpression -> Assignment
-/:$readableName Expression:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
-Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression
-/.$putCase consumeAssignment(); $break ./
-/:$readableName Assignment:/
-
--- this rule is added to parse an array initializer in a assigment and then report a syntax error knowing the exact senario
-InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator ArrayInitializer
-/:$readableName ArrayInitializerAssignment:/
-/:$recovery:/
-Assignment ::= InvalidArrayInitializerAssignement
-/.$putcase ignoreExpressionAssignment();$break ./
-/:$recovery:/
-
-AssignmentOperator ::= '='
-/.$putCase consumeAssignmentOperator(EQUAL); $break ./
-AssignmentOperator ::= '*='
-/.$putCase consumeAssignmentOperator(MULTIPLY); $break ./
-AssignmentOperator ::= '/='
-/.$putCase consumeAssignmentOperator(DIVIDE); $break ./
-AssignmentOperator ::= '%='
-/.$putCase consumeAssignmentOperator(REMAINDER); $break ./
-AssignmentOperator ::= '+='
-/.$putCase consumeAssignmentOperator(PLUS); $break ./
-AssignmentOperator ::= '-='
-/.$putCase consumeAssignmentOperator(MINUS); $break ./
-AssignmentOperator ::= '<<='
-/.$putCase consumeAssignmentOperator(LEFT_SHIFT); $break ./
-AssignmentOperator ::= '>>='
-/.$putCase consumeAssignmentOperator(RIGHT_SHIFT); $break ./
-AssignmentOperator ::= '>>>='
-/.$putCase consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); $break ./
-AssignmentOperator ::= '&='
-/.$putCase consumeAssignmentOperator(AND); $break ./
-AssignmentOperator ::= '^='
-/.$putCase consumeAssignmentOperator(XOR); $break ./
-AssignmentOperator ::= '|='
-/.$putCase consumeAssignmentOperator(OR); $break ./
-/:$readableName AssignmentOperator:/
-/:$recovery_template =:/
-
--- For handling lambda expressions, we need to know when a full Expression
--- has been reduced.
-Expression ::= AssignmentExpression
-/.$putCase consumeExpression(); $break ./
-/:$readableName Expression:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-
--- The following rules are for optional nonterminals.
---
-ClassHeaderExtendsopt ::= $empty
-ClassHeaderExtendsopt -> ClassHeaderExtends
-/:$readableName ClassHeaderExtends:/
-
-Expressionopt ::= $empty
-/.$putCase consumeEmptyExpression(); $break ./
-Expressionopt -> Expression
-/:$readableName Expression:/
-
-ConstantExpression -> Expression
-/:$readableName ConstantExpression:/
-
----------------------------------------------------------------------------------------
---
--- The rules below are for optional terminal symbols.  An optional comma,
--- is only used in the context of an array initializer - It is a
--- "syntactic sugar" that otherwise serves no other purpose. By contrast,
--- an optional identifier is used in the definition of a break and
--- continue statement. When the identifier does not appear, a NULL
--- is produced. When the identifier is present, the user should use the
--- corresponding TOKEN(i) method. See break statement as an example.
---
----------------------------------------------------------------------------------------
-
-,opt -> $empty
-,opt -> ,
-/:$readableName ,:/
-
-ClassBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./
-ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations
-/.$putCase consumeClassBodyDeclarationsopt(); $break ./
-/:$readableName ClassBodyDeclarations:/
-
-Modifiersopt ::= $empty
-/. $putCase consumeDefaultModifiers(); $break ./
-Modifiersopt ::= Modifiers
-/.$putCase consumeModifiers(); $break ./
-/:$readableName Modifiers:/
-
-BlockStatementsopt ::= $empty
-/.$putCase consumeEmptyBlockStatementsopt(); $break ./
-BlockStatementsopt -> BlockStatements
-/:$readableName BlockStatements:/
-
-Dimsopt ::= $empty
-/. $putCase consumeEmptyDimsopt(); $break ./
-Dimsopt -> Dims
-/:$readableName Dimensions:/
-
-ArgumentListopt ::= $empty
-/. $putCase consumeEmptyArgumentListopt(); $break ./
-ArgumentListopt -> ArgumentList
-/:$readableName ArgumentList:/
-
-MethodHeaderThrowsClauseopt ::= $empty
-MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause
-/:$readableName MethodHeaderThrowsClause:/
-
-FormalParameterListopt ::= $empty
-/.$putcase consumeFormalParameterListopt(); $break ./
-FormalParameterListopt -> FormalParameterList
-/:$readableName FormalParameterList:/
-
-ClassHeaderImplementsopt ::= $empty
-ClassHeaderImplementsopt -> ClassHeaderImplements
-/:$readableName ClassHeaderImplements:/
-
-InterfaceMemberDeclarationsopt ::= $empty
-/. $putCase consumeEmptyInterfaceMemberDeclarationsopt(); $break ./
-InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations
-/. $putCase consumeInterfaceMemberDeclarationsopt(); $break ./
-/:$readableName InterfaceMemberDeclarations:/
-
-NestedType ::= $empty
-/.$putCase consumeNestedType(); $break./
-/:$readableName NestedType:/
-
-ForInitopt ::= $empty
-/. $putCase consumeEmptyForInitopt(); $break ./
-ForInitopt -> ForInit
-/:$readableName ForInit:/
-
-ForUpdateopt ::= $empty
-/. $putCase consumeEmptyForUpdateopt(); $break ./
-ForUpdateopt -> ForUpdate
-/:$readableName ForUpdate:/
-
-InterfaceHeaderExtendsopt ::= $empty
-InterfaceHeaderExtendsopt -> InterfaceHeaderExtends
-/:$readableName InterfaceHeaderExtends:/
-
-Catchesopt ::= $empty
-/. $putCase consumeEmptyCatchesopt(); $break ./
-Catchesopt -> Catches
-/:$readableName Catches:/
-
------------------------------------------------
--- 1.5 features : enum type
------------------------------------------------
-EnumDeclaration ::= EnumHeader EnumBody
-/. $putCase consumeEnumDeclaration(); $break ./
-/:$readableName EnumDeclaration:/
-
-EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt
-/. $putCase consumeEnumHeader(); $break ./
-/:$readableName EnumHeader:/
-
-EnumHeaderName ::= Modifiersopt 'enum' JavaIdentifier -- AspectJ Extension, was Identifier
-/. $putCase consumeEnumHeaderName(); $break ./
-/:$compliance 1.5:/
-EnumHeaderName ::= Modifiersopt 'enum' JavaIdentifier TypeParameters -- AspectJ Extension, was Identifier
-/. $putCase consumeEnumHeaderNameWithTypeParameters(); $break ./
-/:$readableName EnumHeaderName:/
-/:$compliance 1.5:/
-
-EnumBody ::= '{' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyNoConstants(); $break ./
-EnumBody ::= '{' ',' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyNoConstants(); $break ./
-EnumBody ::= '{' EnumConstants ',' EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyWithConstants(); $break ./
-EnumBody ::= '{' EnumConstants EnumBodyDeclarationsopt '}'
-/. $putCase consumeEnumBodyWithConstants(); $break ./
-/:$readableName EnumBody:/
-
-EnumConstants -> EnumConstant
-EnumConstants ::= EnumConstants ',' EnumConstant
-/.$putCase consumeEnumConstants(); $break ./
-/:$readableName EnumConstants:/
-
-EnumConstantHeaderName ::= Modifiersopt Identifier
-/.$putCase consumeEnumConstantHeaderName(); $break ./
-/:$readableName EnumConstantHeaderName:/
-
-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt RestoreDiet
-/.$putCase consumeEnumConstantHeader(); $break ./
-/:$readableName EnumConstantHeader:/
-
-EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody RestoreDiet
-/.$putCase consumeEnumConstantWithClassBody(); $break ./
-EnumConstant ::= EnumConstantHeader
-/.$putCase consumeEnumConstantNoClassBody(); $break ./
-/:$readableName EnumConstant:/
-
-Arguments ::= '(' ArgumentListopt ')'
-/.$putCase consumeArguments(); $break ./
-/:$readableName Arguments:/
-
-Argumentsopt ::= $empty
-/.$putCase consumeEmptyArguments(); $break ./
-Argumentsopt -> Arguments
-/:$readableName Argumentsopt:/
-
-EnumDeclarations ::= ';' ClassBodyDeclarationsopt
-/.$putCase consumeEnumDeclarations(); $break ./
-/:$readableName EnumDeclarations:/
-
-EnumBodyDeclarationsopt ::= $empty
-/.$putCase consumeEmptyEnumDeclarations(); $break ./
-EnumBodyDeclarationsopt -> EnumDeclarations
-/:$readableName EnumBodyDeclarationsopt:/
-
------------------------------------------------
--- 1.5 features : enhanced for statement
------------------------------------------------
-EnhancedForStatement ::= EnhancedForStatementHeader Statement
-/.$putCase consumeEnhancedForStatement(); $break ./
-/:$readableName EnhancedForStatement:/
-
-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader StatementNoShortIf
-/.$putCase consumeEnhancedForStatement(); $break ./
-/:$readableName EnhancedForStatementNoShortIf:/
-
-EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers JavaIdentifier Dimsopt -- AspectJ extension, was Identifier
-/.$putCase consumeEnhancedForStatementHeaderInit(false); $break ./
-/:$readableName EnhancedForStatementHeaderInit:/
-
-EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers JavaIdentifier Dimsopt -- AspectJ extension, was Identifier
-/.$putCase consumeEnhancedForStatementHeaderInit(true); $break ./
-/:$readableName EnhancedForStatementHeaderInit:/
-
-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit ':' Expression ')'
-/.$putCase consumeEnhancedForStatementHeader(); $break ./
-/:$readableName EnhancedForStatementHeader:/
-/:$compliance 1.5:/
-
------------------------------------------------
--- 1.5 features : static imports
------------------------------------------------
-SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName SingleStaticImportDeclaration:/
-
-SingleStaticImportDeclarationName ::= 'import' 'static' Name RejectTypeAnnotations
-/.$putCase consumeSingleStaticImportDeclarationName(); $break ./
-/:$readableName SingleStaticImportDeclarationName:/
-/:$compliance 1.5:/
-
-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName ';'
-/.$putCase consumeImportDeclaration(); $break ./
-/:$readableName StaticImportOnDemandDeclaration:/
-
-StaticImportOnDemandDeclarationName ::= 'import' 'static' Name '.' RejectTypeAnnotations '*'
-/.$putCase consumeStaticImportOnDemandDeclarationName(); $break ./
-/:$readableName StaticImportOnDemandDeclarationName:/
-/:$compliance 1.5:/
-
------------------------------------------------
--- 1.5 features : generics
------------------------------------------------
-TypeArguments ::= '<' TypeArgumentList1
-/.$putCase consumeTypeArguments(); $break ./
-/:$readableName TypeArguments:/
-/:$compliance 1.5:/
-
-OnlyTypeArguments ::= '<' TypeArgumentList1
-/.$putCase consumeOnlyTypeArguments(); $break ./
-/:$readableName TypeArguments:/
-/:$compliance 1.5:/
-
-TypeArgumentList1 -> TypeArgument1
-/:$compliance 1.5:/
-TypeArgumentList1 ::= TypeArgumentList ',' TypeArgument1
-/.$putCase consumeTypeArgumentList1(); $break ./
-/:$readableName TypeArgumentList1:/
-/:$compliance 1.5:/
-
-TypeArgumentList -> TypeArgument
-/:$compliance 1.5:/
-TypeArgumentList ::= TypeArgumentList ',' TypeArgument
-/.$putCase consumeTypeArgumentList(); $break ./
-/:$readableName TypeArgumentList:/
-/:$compliance 1.5:/
-
-TypeArgument ::= ReferenceType
-/.$putCase consumeTypeArgument(); $break ./
-/:$compliance 1.5:/
-TypeArgument -> Wildcard
-/:$readableName TypeArgument:/
-/:$compliance 1.5:/
-
-TypeArgument1 -> ReferenceType1
-/:$compliance 1.5:/
-TypeArgument1 -> Wildcard1
-/:$readableName TypeArgument1:/
-/:$compliance 1.5:/
-
-ReferenceType1 ::= ReferenceType '>'
-/.$putCase consumeReferenceType1(); $break ./
-/:$compliance 1.5:/
-ReferenceType1 ::= ClassOrInterface '<' TypeArgumentList2
-/.$putCase consumeTypeArgumentReferenceType1(); $break ./
-/:$readableName ReferenceType1:/
-/:$compliance 1.5:/
-
-TypeArgumentList2 -> TypeArgument2
-/:$compliance 1.5:/
-TypeArgumentList2 ::= TypeArgumentList ',' TypeArgument2
-/.$putCase consumeTypeArgumentList2(); $break ./
-/:$readableName TypeArgumentList2:/
-/:$compliance 1.5:/
-
-TypeArgument2 -> ReferenceType2
-/:$compliance 1.5:/
-TypeArgument2 -> Wildcard2
-/:$readableName TypeArgument2:/
-/:$compliance 1.5:/
-
-ReferenceType2 ::= ReferenceType '>>'
-/.$putCase consumeReferenceType2(); $break ./
-/:$compliance 1.5:/
-ReferenceType2 ::= ClassOrInterface '<' TypeArgumentList3
-/.$putCase consumeTypeArgumentReferenceType2(); $break ./
-/:$readableName ReferenceType2:/
-/:$compliance 1.5:/
-
-TypeArgumentList3 -> TypeArgument3
-TypeArgumentList3 ::= TypeArgumentList ',' TypeArgument3
-/.$putCase consumeTypeArgumentList3(); $break ./
-/:$readableName TypeArgumentList3:/
-/:$compliance 1.5:/
-
-TypeArgument3 -> ReferenceType3
-TypeArgument3 -> Wildcard3
-/:$readableName TypeArgument3:/
-/:$compliance 1.5:/
-
-ReferenceType3 ::= ReferenceType '>>>'
-/.$putCase consumeReferenceType3(); $break ./
-/:$readableName ReferenceType3:/
-/:$compliance 1.5:/
-
-Wildcard ::= TypeAnnotationsopt '?'
-/.$putCase consumeWildcard(); $break ./
-/:$compliance 1.5:/
-Wildcard ::= TypeAnnotationsopt '?' WildcardBounds
-/.$putCase consumeWildcardWithBounds(); $break ./
-/:$readableName Wildcard:/
-/:$compliance 1.5:/
-
-WildcardBounds ::= 'extends' ReferenceType
-/.$putCase consumeWildcardBoundsExtends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds ::= 'super' ReferenceType
-/.$putCase consumeWildcardBoundsSuper(); $break ./
-/:$readableName WildcardBounds:/
-/:$compliance 1.5:/
-
-Wildcard1 ::= TypeAnnotationsopt '?' '>'
-/.$putCase consumeWildcard1(); $break ./
-/:$compliance 1.5:/
-Wildcard1 ::= TypeAnnotationsopt '?' WildcardBounds1
-/.$putCase consumeWildcard1WithBounds(); $break ./
-/:$readableName Wildcard1:/
-/:$compliance 1.5:/
-
-WildcardBounds1 ::= 'extends' ReferenceType1
-/.$putCase consumeWildcardBounds1Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds1 ::= 'super' ReferenceType1
-/.$putCase consumeWildcardBounds1Super(); $break ./
-/:$readableName WildcardBounds1:/
-/:$compliance 1.5:/
-
-Wildcard2 ::= TypeAnnotationsopt '?' '>>'
-/.$putCase consumeWildcard2(); $break ./
-/:$compliance 1.5:/
-Wildcard2 ::= TypeAnnotationsopt '?' WildcardBounds2
-/.$putCase consumeWildcard2WithBounds(); $break ./
-/:$readableName Wildcard2:/
-/:$compliance 1.5:/
-
-WildcardBounds2 ::= 'extends' ReferenceType2
-/.$putCase consumeWildcardBounds2Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds2 ::= 'super' ReferenceType2
-/.$putCase consumeWildcardBounds2Super(); $break ./
-/:$readableName WildcardBounds2:/
-/:$compliance 1.5:/
-
-Wildcard3 ::= TypeAnnotationsopt '?' '>>>'
-/.$putCase consumeWildcard3(); $break ./
-/:$compliance 1.5:/
-Wildcard3 ::= TypeAnnotationsopt '?' WildcardBounds3
-/.$putCase consumeWildcard3WithBounds(); $break ./
-/:$readableName Wildcard3:/
-/:$compliance 1.5:/
-
-WildcardBounds3 ::= 'extends' ReferenceType3
-/.$putCase consumeWildcardBounds3Extends(); $break ./
-/:$compliance 1.5:/
-WildcardBounds3 ::= 'super' ReferenceType3
-/.$putCase consumeWildcardBounds3Super(); $break ./
-/:$readableName WildcardBound3:/
-/:$compliance 1.5:/
-
-TypeParameterHeader ::= TypeAnnotationsopt JavaIdentifier -- AJ JavaIdentifier was Identifier
-/.$putCase consumeTypeParameterHeader(); $break ./
-/:$readableName TypeParameter:/
-/:$compliance 1.5:/
-
-TypeParameters ::= '<' TypeParameterList1
-/.$putCase consumeTypeParameters(); $break ./
-/:$readableName TypeParameters:/
-/:$compliance 1.5:/
-
-TypeParameterList -> TypeParameter
-/:$compliance 1.5:/
-TypeParameterList ::= TypeParameterList ',' TypeParameter
-/.$putCase consumeTypeParameterList(); $break ./
-/:$readableName TypeParameterList:/
-/:$compliance 1.5:/
-
-TypeParameter -> TypeParameterHeader
-/:$compliance 1.5:/
-TypeParameter ::= TypeParameterHeader 'extends' ReferenceType
-/.$putCase consumeTypeParameterWithExtends(); $break ./
-/:$compliance 1.5:/
-TypeParameter ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList
-/.$putCase consumeTypeParameterWithExtendsAndBounds(); $break ./
-/:$readableName TypeParameter:/
-/:$compliance 1.5:/
-
-AdditionalBoundList -> AdditionalBound
-/:$compliance 1.5:/
-AdditionalBoundList ::= AdditionalBoundList AdditionalBound
-/.$putCase consumeAdditionalBoundList(); $break ./
-/:$readableName AdditionalBoundList:/
-
-AdditionalBound ::= '&' ReferenceType
-/.$putCase consumeAdditionalBound(); $break ./
-/:$readableName AdditionalBound:/
-/:$compliance 1.5:/
-
-TypeParameterList1 -> TypeParameter1
-/:$compliance 1.5:/
-TypeParameterList1 ::= TypeParameterList ',' TypeParameter1
-/.$putCase consumeTypeParameterList1(); $break ./
-/:$readableName TypeParameterList1:/
-/:$compliance 1.5:/
-
-TypeParameter1 ::= TypeParameterHeader '>'
-/.$putCase consumeTypeParameter1(); $break ./
-/:$compliance 1.5:/
-TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType1
-/.$putCase consumeTypeParameter1WithExtends(); $break ./
-/:$compliance 1.5:/
-TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList1
-/.$putCase consumeTypeParameter1WithExtendsAndBounds(); $break ./
-/:$readableName TypeParameter1:/
-/:$compliance 1.5:/
-
-AdditionalBoundList1 -> AdditionalBound1
-/:$compliance 1.5:/
-AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1
-/.$putCase consumeAdditionalBoundList1(); $break ./
-/:$readableName AdditionalBoundList1:/
-/:$compliance 1.5:/
-
-AdditionalBound1 ::= '&' ReferenceType1
-/.$putCase consumeAdditionalBound1(); $break ./
-/:$readableName AdditionalBound1:/
-/:$compliance 1.5:/
-
--------------------------------------------------
--- Duplicate rules to remove ambiguity for (x) --
--------------------------------------------------
-PostfixExpression_NotName -> Primary
-PostfixExpression_NotName -> PostIncrementExpression
-PostfixExpression_NotName -> PostDecrementExpression
-/:$readableName Expression:/
-
-UnaryExpression_NotName -> PreIncrementExpression
-UnaryExpression_NotName -> PreDecrementExpression
-UnaryExpression_NotName ::= '+' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./
-UnaryExpression_NotName ::= '-' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./
-UnaryExpression_NotName -> UnaryExpressionNotPlusMinus_NotName
-/:$readableName Expression:/
-
-UnaryExpressionNotPlusMinus_NotName -> PostfixExpression_NotName
-UnaryExpressionNotPlusMinus_NotName ::= '~' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./
-UnaryExpressionNotPlusMinus_NotName ::= '!' PushPosition UnaryExpression
-/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./
-UnaryExpressionNotPlusMinus_NotName -> CastExpression
-/:$readableName Expression:/
-
-MultiplicativeExpression_NotName -> UnaryExpression_NotName
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '*' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '*' UnaryExpression  -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); $break ./
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '/' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '/' UnaryExpression  -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.DIVIDE); $break ./
-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '%' UnaryExpression
-/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./
-MultiplicativeExpression_NotName ::= NameOrAj '%' UnaryExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.REMAINDER); $break ./
-/:$readableName Expression:/
-
-AdditiveExpression_NotName -> MultiplicativeExpression_NotName
-AdditiveExpression_NotName ::= AdditiveExpression_NotName '+' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./
-AdditiveExpression_NotName ::= NameOrAj '+' MultiplicativeExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.PLUS); $break ./
-AdditiveExpression_NotName ::= AdditiveExpression_NotName '-' MultiplicativeExpression
-/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./
-AdditiveExpression_NotName ::= NameOrAj '-' MultiplicativeExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.MINUS); $break ./
-/:$readableName Expression:/
-
-ShiftExpression_NotName -> AdditiveExpression_NotName
-ShiftExpression_NotName ::= ShiftExpression_NotName '<<' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '<<' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); $break ./
-ShiftExpression_NotName ::= ShiftExpression_NotName '>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '>>' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= ShiftExpression_NotName '>>>' AdditiveExpression
-/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-ShiftExpression_NotName ::= NameOrAj '>>>' AdditiveExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./
-/:$readableName Expression:/
-
-RelationalExpression_NotName -> ShiftExpression_NotName
-RelationalExpression_NotName ::= ShiftExpression_NotName '<' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./
-RelationalExpression_NotName ::= Name '<' ShiftExpression
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS); $break ./
-RelationalExpression_NotName ::= ShiftExpression_NotName '>' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./
-RelationalExpression_NotName ::= NameOrAj '>' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER); $break ./
-RelationalExpression_NotName ::= RelationalExpression_NotName '<=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression_NotName ::= NameOrAj '<=' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); $break ./
-RelationalExpression_NotName ::= RelationalExpression_NotName '>=' ShiftExpression
-/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./
-RelationalExpression_NotName ::= NameOrAj '>=' ShiftExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); $break ./
-/:$readableName Expression:/
-
-InstanceofExpression_NotName -> RelationalExpression_NotName
-InstanceofExpression_NotName ::= NameOrAj 'instanceof' ReferenceType -- AspectJ Extension was Name
-/.$putCase consumeInstanceOfExpressionWithName(); $break ./
-InstanceofExpression_NotName ::= InstanceofExpression_NotName 'instanceof' ReferenceType
-/.$putCase consumeInstanceOfExpression(); $break ./
-/:$readableName Expression:/
-
-EqualityExpression_NotName -> InstanceofExpression_NotName
-EqualityExpression_NotName ::= EqualityExpression_NotName '==' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression_NotName ::= NameOrAj '==' InstanceofExpression -- AspectJ Extension was Name
-/.$putCase consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); $break ./
-EqualityExpression_NotName ::= EqualityExpression_NotName '!=' InstanceofExpression
-/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./
-EqualityExpression_NotName ::= NameOrAj '!=' InstanceofExpression -- AspectJ Extension was Name
-/.$putCase consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); $break ./
-/:$readableName Expression:/
-
-AndExpression_NotName -> EqualityExpression_NotName
-AndExpression_NotName ::= AndExpression_NotName '&' EqualityExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./
-AndExpression_NotName ::= NameOrAj '&' EqualityExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND); $break ./
-/:$readableName Expression:/
-
-ExclusiveOrExpression_NotName -> AndExpression_NotName
-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName '^' AndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./
-ExclusiveOrExpression_NotName ::= NameOrAj '^' AndExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.XOR); $break ./
-/:$readableName Expression:/
-
-InclusiveOrExpression_NotName -> ExclusiveOrExpression_NotName
-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName '|' ExclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./
-InclusiveOrExpression_NotName ::= NameOrAj '|' ExclusiveOrExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR); $break ./
-/:$readableName Expression:/
-
-ConditionalAndExpression_NotName -> InclusiveOrExpression_NotName
-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName '&&' InclusiveOrExpression
-/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./
-ConditionalAndExpression_NotName ::= NameOrAj '&&' InclusiveOrExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND_AND); $break ./
-/:$readableName Expression:/
-
-ConditionalOrExpression_NotName -> ConditionalAndExpression_NotName
-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName '||' ConditionalAndExpression
-/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./
-ConditionalOrExpression_NotName ::= NameOrAj '||' ConditionalAndExpression -- AspectJ Extension was Name
-/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR_OR); $break ./
-/:$readableName Expression:/
-
-ConditionalExpression_NotName -> ConditionalOrExpression_NotName
-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName '?' Expression ':' ConditionalExpression
-/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./
-ConditionalExpression_NotName ::= NameOrAj '?' Expression ':' ConditionalExpression -- AspectJ Extension was Name
-/.$putCase consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; $break ./
-/:$readableName Expression:/
-
-AssignmentExpression_NotName -> ConditionalExpression_NotName
-AssignmentExpression_NotName -> Assignment
-/:$readableName Expression:/
-
-Expression_NotName -> AssignmentExpression_NotName
-/:$readableName Expression:/
------------------------------------------------
--- 1.5 features : end of generics
------------------------------------------------
------------------------------------------------
--- 1.5 features : annotation - Metadata feature jsr175
------------------------------------------------
-AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface JavaIdentifier -- AspectJ extension, was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface JavaIdentifier TypeParameters -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface JavaIdentifier TypeParameters -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface JavaIdentifier -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./
-/:$readableName AnnotationTypeDeclarationHeaderName:/
-/:$compliance 1.5:/
-
-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt
-/.$putCase consumeAnnotationTypeDeclarationHeader() ; $break ./
-/:$readableName AnnotationTypeDeclarationHeader:/
-/:$compliance 1.5:/
-
-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader AnnotationTypeBody
-/.$putCase consumeAnnotationTypeDeclaration() ; $break ./
-/:$readableName AnnotationTypeDeclaration:/
-/:$compliance 1.5:/
-
-AnnotationTypeBody ::= '{' AnnotationTypeMemberDeclarationsopt '}'
-/:$readableName AnnotationTypeBody:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclarationsopt ::= $empty
-/.$putCase consumeEmptyAnnotationTypeMemberDeclarationsopt() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclarationsopt ::= NestedType AnnotationTypeMemberDeclarations
-/.$putCase consumeAnnotationTypeMemberDeclarationsopt() ; $break ./
-/:$readableName AnnotationTypeMemberDeclarations:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclarations -> AnnotationTypeMemberDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations AnnotationTypeMemberDeclaration
-/.$putCase consumeAnnotationTypeMemberDeclarations() ; $break ./
-/:$readableName AnnotationTypeMemberDeclarations:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 'JavaIdentifier' '(' -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeMethodHeaderNameWithTypeParameters(true); $break ./
-AnnotationMethodHeaderName ::= Modifiersopt Type 'JavaIdentifier' '(' -- AspectJ JavaIdentifier was Identifier
-/.$putCase consumeMethodHeaderName(true); $break ./
-/:$readableName MethodHeaderName:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeaderDefaultValueopt ::= $empty
-/.$putCase consumeEmptyMethodHeaderDefaultValue() ; $break ./
-/:$readableName MethodHeaderDefaultValue:/
-/:$compliance 1.5:/
-AnnotationMethodHeaderDefaultValueopt ::= DefaultValue
-/.$putCase consumeMethodHeaderDefaultValue(); $break ./
-/:$readableName MethodHeaderDefaultValue:/
-/:$compliance 1.5:/
-
-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName AnnotationMethodHeader:/
-/:$compliance 1.5:/
-
-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader ';'
-/.$putCase consumeAnnotationTypeMemberDeclaration() ; $break ./
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> ConstantDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> ConstructorDeclaration
-/:$compliance 1.5:/
-AnnotationTypeMemberDeclaration -> TypeDeclaration
-/:$readableName AnnotationTypeMemberDeclaration:/
-/:$compliance 1.5:/
-
-DefaultValue ::= 'default' MemberValue
-/:$readableName DefaultValue:/
-/:$compliance 1.5:/
-
-Annotation -> NormalAnnotation
-/:$compliance 1.5:/
-Annotation -> MarkerAnnotation
-/:$compliance 1.5:/
-Annotation -> SingleMemberAnnotation
-/:$readableName Annotation:/
-/:$compliance 1.5:/
-
-AnnotationName ::= '@' UnannotatableNameOrAj -- AspectJ: was UnannotatableName
-/.$putCase consumeAnnotationName() ; $break ./
-/:$readableName AnnotationName:/
-/:$compliance 1.5:/
-/:$recovery_template @ Identifier:/
-
-NormalAnnotation ::= AnnotationName '(' MemberValuePairsopt ')'
-/.$putCase consumeNormalAnnotation(false) ; $break ./
-/:$readableName NormalAnnotation:/
-/:$compliance 1.5:/
-
-MemberValuePairsopt ::= $empty
-/.$putCase consumeEmptyMemberValuePairsopt() ; $break ./
-/:$compliance 1.5:/
-MemberValuePairsopt -> MemberValuePairs
-/:$readableName MemberValuePairsopt:/
-/:$compliance 1.5:/
-
-MemberValuePairs -> MemberValuePair
-/:$compliance 1.5:/
-MemberValuePairs ::= MemberValuePairs ',' MemberValuePair
-/.$putCase consumeMemberValuePairs() ; $break ./
-/:$readableName MemberValuePairs:/
-/:$compliance 1.5:/
-
-MemberValuePair ::= SimpleNameOrAj '=' EnterMemberValue MemberValue ExitMemberValue  -- AspectJ Extension was SimpleName
-/.$putCase consumeMemberValuePair() ; $break ./
-/:$readableName MemberValuePair:/
-/:$compliance 1.5:/
-
-EnterMemberValue ::= $empty
-/.$putCase consumeEnterMemberValue() ; $break ./
-/:$readableName EnterMemberValue:/
-/:$compliance 1.5:/
-
-ExitMemberValue ::= $empty
-/.$putCase consumeExitMemberValue() ; $break ./
-/:$readableName ExitMemberValue:/
-/:$compliance 1.5:/
-
-MemberValue -> ConditionalExpression_NotName
-/:$compliance 1.5:/
-MemberValue ::= NameOrAj -- AspectJ Extension, was Name
-/.$putCase consumeMemberValueAsName() ; $break ./
-/:$compliance 1.5:/
-MemberValue -> Annotation
-/:$compliance 1.5:/
-MemberValue -> MemberValueArrayInitializer
-/:$readableName MemberValue:/
-/:$recovery_template JavaIdentifier:/ -- AspectJ extension, was Identifier
-/:$compliance 1.5:/
-
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues ',' '}'
-/.$putCase consumeMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues '}'
-/.$putCase consumeMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace ',' '}'
-/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./
-/:$compliance 1.5:/
-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace '}'
-/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./
-/:$readableName MemberValueArrayInitializer:/
-/:$compliance 1.5:/
-
-EnterMemberValueArrayInitializer ::= $empty
-/.$putCase consumeEnterMemberValueArrayInitializer() ; $break ./
-/:$readableName EnterMemberValueArrayInitializer:/
-/:$compliance 1.5:/
-
-MemberValues -> MemberValue
-/:$compliance 1.5:/
-MemberValues ::= MemberValues ',' MemberValue
-/.$putCase consumeMemberValues() ; $break ./
-/:$readableName MemberValues:/
-/:$compliance 1.5:/
-
-MarkerAnnotation ::= AnnotationName
-/.$putCase consumeMarkerAnnotation(false) ; $break ./
-/:$readableName MarkerAnnotation:/
-/:$compliance 1.5:/
-
-SingleMemberAnnotationMemberValue ::= MemberValue
-/.$putCase consumeSingleMemberAnnotationMemberValue() ; $break ./
-/:$readableName MemberValue:/
-/:$compliance 1.5:/
-
-SingleMemberAnnotation ::= AnnotationName '(' SingleMemberAnnotationMemberValue ')'
-/.$putCase consumeSingleMemberAnnotation(false) ; $break ./
-/:$readableName SingleMemberAnnotation:/
-/:$compliance 1.5:/
---------------------------------------
--- 1.5 features : end of annotation --
---------------------------------------
-
------------------------------------
--- 1.5 features : recovery rules --
------------------------------------
-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderNameWithTypeParameters(); $break ./
-/:$compliance 1.5:/
-RecoveryMethodHeaderName ::= Modifiersopt Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderName(); $break ./
-/:$readableName MethodHeaderName:/
-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderNameWithTypeParameters(); $break ./
-/:$compliance 1.5:/
-RecoveryMethodHeaderName ::= ModifiersWithDefault Type 'JavaIdentifierNoAround' '(' -- AspectJ (JavaIdentifierNoAround was Identifier)
-/.$putCase consumeRecoveryMethodHeaderName(); $break ./
-/:$readableName MethodHeaderName:/
-
-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt
-/.$putCase consumeMethodHeader(); $break ./
-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClause
-/.$putCase consumeMethodHeader(); $break ./
-/:$readableName MethodHeader:/
------------------------------------
--- 1.5 features : recovery rules --
------------------------------------
-
-/.	}
-}./
-
-$names
-
-PLUS_PLUS ::=    '++'
-MINUS_MINUS ::=    '--'
-EQUAL_EQUAL ::=    '=='
-LESS_EQUAL ::=    '<='
-GREATER_EQUAL ::=    '>='
-NOT_EQUAL ::=    '!='
-LEFT_SHIFT ::=    '<<'
-RIGHT_SHIFT ::=    '>>'
-UNSIGNED_RIGHT_SHIFT ::=    '>>>'
-PLUS_EQUAL ::=    '+='
-MINUS_EQUAL ::=    '-='
-MULTIPLY_EQUAL ::=    '*='
-DIVIDE_EQUAL ::=    '/='
-AND_EQUAL ::=    '&='
-OR_EQUAL ::=    '|='
-XOR_EQUAL ::=    '^='
-REMAINDER_EQUAL ::=    '%='
-LEFT_SHIFT_EQUAL ::=    '<<='
-RIGHT_SHIFT_EQUAL ::=    '>>='
-UNSIGNED_RIGHT_SHIFT_EQUAL ::=    '>>>='
-OR_OR ::=    '||'
-AND_AND ::=    '&&'
-PLUS ::=    '+'
-MINUS ::=    '-'
-NOT ::=    '!'
-REMAINDER ::=    '%'
-XOR ::=    '^'
-AND ::=    '&'
-MULTIPLY ::=    '*'
-OR ::=    '|'
-TWIDDLE ::=    '~'
-DIVIDE ::=    '/'
-GREATER ::=    '>'
-LESS ::=    '<'
-LPAREN ::=    '('
-RPAREN ::=    ')'
-LBRACE ::=    '{'
-RBRACE ::=    '}'
-LBRACKET ::=    '['
-RBRACKET ::=    ']'
-SEMICOLON ::=    ';'
-QUESTION ::=    '?'
-COLON ::=    ':'
-COMMA ::=    ','
-DOT ::=    '.'
-EQUAL ::=    '='
-AT ::=    '@'
-AT308 ::= '@'
-AT308DOTDOTDOT ::= '@'
-ELLIPSIS ::=    '...'
-ARROW ::= '->'
-COLON_COLON ::= '::'
-
-$end
--- need a carriage return after the $end
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l
deleted file mode 100644
index c767fe7..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/java.l
+++ /dev/null
@@ -1,118926 +0,0 @@
-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1

-

-%OPTIONS ACTION, AN=JavaAction.java, GP=java,

-%OPTIONS FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 ,

-%OPTIONS NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE,

-%OPTIONS ERROR_MAPS,

-%OPTIONS first follow

-%OPTIONS TRACE=FULL,

-%OPTIONS VERBOSE,

-%OPTIONS DEFERRED,

-%OPTIONS NAMES=MAXIMUM,

-%OPTIONS SCOPES,

-

-Options in effect:

-    ACTION  ACTFILE-NAME=JavaAction.java  BLOCKB=/.  BLOCKE=./  BYTE  CONFLICTS

-    DEFAULT=5  NODEBUG  DEFERRED  NOEDIT  ERROR-MAPS  ESCAPE=$  

-    FILE-PREFIX=java  FIRST  FOLLOW  GENERATE-PARSER=JAVA  NOGOTO-DEFAULT  

-    HACTFILE-NAME=javahdr.java  HBLOCKB=/:  HBLOCKE=:/  LALR=1  LIST  

-    MAX-DISTANCE=30  MIN-DISTANCE=3  NAMES=MAXIMUM  NONT-CHECK  ORMARK=|  

-    OUTPUT-SIZE=125  PREFIX=TokenName  READ-REDUCE  SCOPES  NOSHIFT-DEFAULT  

-    SINGLE-PRODUCTIONS  STACK-SIZE=128  STATES  SUFFIX=  TABLE=SPACE  

-    TRACE=FULL  VERBOSE  WARNINGS  XREF  

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2

-

-

-Defined Symbols:

-

-

-

-$putcase

-/.------------------------------------------------------------------------------

-    case $rule_number : if (DEBUG) { System.out.println("$rule_text"); }  //$NON-NLS-1$

-		   

-./------------------------------------------------------------------------------

-

-

-$break

-/.------------------------------------------------------------------------------

-			break;

-

-./------------------------------------------------------------------------------

-

-

-$readablename

-/.------------------------------------------------------------------------------

-1#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$compliance

-/.------------------------------------------------------------------------------

-2#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$recovery

-/.------------------------------------------------------------------------------

-2#$rule_number# recovery

-./------------------------------------------------------------------------------

-

-

-$recovery_template

-/.------------------------------------------------------------------------------

-3#$rule_number#

-./------------------------------------------------------------------------------

-

-

-$no_statements_recovery

-/.------------------------------------------------------------------------------

-4#$rule_number# 1

-./------------------------------------------------------------------------------

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 3

-

-

-Aliases:

-

-&& ::= AND_AND

-] ::= RBRACKET

-< ::= LESS

-+= ::= PLUS_EQUAL

-& ::= AND

-++ ::= PLUS_PLUS

-... ::= ELLIPSIS

-+ ::= PLUS

-%= ::= REMAINDER_EQUAL

-} ::= RBRACE

-|| ::= OR_OR

->>>= ::= UNSIGNED_RIGHT_SHIFT_EQUAL

-; ::= SEMICOLON

-*= ::= MULTIPLY_EQUAL

-% ::= REMAINDER

->>> ::= UNSIGNED_RIGHT_SHIFT

-|= ::= OR_EQUAL

-@ ::= AT

-:: ::= COLON_COLON

-/= ::= DIVIDE_EQUAL

-* ::= MULTIPLY

-'|' ::= OR

-[ ::= LBRACKET

-@308 ::= AT308

-: ::= COLON

-/ ::= DIVIDE

->>= ::= RIGHT_SHIFT_EQUAL

-? ::= QUESTION

-) ::= RPAREN

-@308... ::= AT308DOTDOTDOT

-{ ::= LBRACE

->> ::= RIGHT_SHIFT

->= ::= GREATER_EQUAL

-. ::= DOT

-> ::= GREATER

--> ::= ARROW

--= ::= MINUS_EQUAL

-( ::= LPAREN

--- ::= MINUS_MINUS

-^= ::= XOR_EQUAL

-== ::= EQUAL_EQUAL

-- ::= MINUS

-<<= ::= LEFT_SHIFT_EQUAL

-^ ::= XOR

-= ::= EQUAL

-!= ::= NOT_EQUAL

-<= ::= LESS_EQUAL

-<< ::= LEFT_SHIFT

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 4

-

-, ::= COMMA

-&= ::= AND_EQUAL

-! ::= NOT

-~ ::= TWIDDLE

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 5

-

-

-Terminals:

-

-

-        Identifier abstract assert boolean break byte case catch char class 

-    continue const default do double else enum extends false final finally float 

-    for goto if implements import instanceof int interface long native new null 

-    package private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR TWIDDLE DIVIDE GREATER LESS LPAREN RPAREN 

-    LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS ARROW COLON_COLON BeginLambda BeginIntersectionCast 

-    BeginTypeArguments ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-    $error 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 6

-

-

-Rules:

-

-

-0     $acc ::= Goal 

-1     Goal ::= PLUS_PLUS CompilationUnit 

-2     Goal ::= MINUS_MINUS MethodBody 

-3     Goal ::= RIGHT_SHIFT StaticInitializer 

-4     Goal ::= RIGHT_SHIFT Initializer 

-5     Goal ::= UNSIGNED_RIGHT_SHIFT Header1 Modifiersopt 

-6     Goal ::= NOT Header2 Modifiersopt 

-7     Goal ::= MULTIPLY BlockStatements 

-8     Goal ::= MULTIPLY CatchHeader 

-9     Goal ::= AND_AND FieldDeclaration 

-10    Goal ::= OR_OR ImportDeclaration 

-11    Goal ::= QUESTION PackageDeclaration 

-12    Goal ::= PLUS TypeDeclaration 

-13    Goal ::= DIVIDE GenericMethodDeclaration 

-14    Goal ::= AND ClassBodyDeclarations 

-15    Goal ::= REMAINDER Expression 

-16    Goal ::= REMAINDER ArrayInitializer 

-17    Goal ::= TWIDDLE BlockStatementsopt 

-18    Goal ::= LBRACE BlockStatementopt 

-19    Goal ::= OR_OR MemberValue 

-20    Goal ::= QUESTION AnnotationTypeMemberDeclaration 

-21    Goal ::= ARROW ParenthesizedLambdaParameterList 

-22    Goal ::= LPAREN ParenthesizedCastNameAndBounds 

-23    Goal ::= LESS ReferenceExpressionTypeArgumentsAndTrunk 

-24    Goal ::= AT TypeAnnotations 

-25    Literal -> IntegerLiteral 

-26    Literal -> LongLiteral 

-27    Literal -> FloatingPointLiteral 

-28    Literal -> DoubleLiteral 

-29    Literal -> CharacterLiteral 

-30    Literal -> StringLiteral 

-31    Literal -> null 

-32    Literal -> BooleanLiteral 

-33    BooleanLiteral -> true 

-34    BooleanLiteral -> false 

-35    JavaIdentifier -> Identifier 

-36    JavaIdentifier -> AjSimpleName 

-37    JavaIdentifierNoAround -> Identifier 

-38    JavaIdentifierNoAround -> AjSimpleNameNoAround 

-39    Type ::= PrimitiveType 

-40    Type -> ReferenceType 

-41    PrimitiveType ::= TypeAnnotationsopt NumericType 

-42    NumericType -> IntegralType 

-43    NumericType -> FloatingPointType 

-44    PrimitiveType ::= TypeAnnotationsopt boolean 

-45    PrimitiveType ::= TypeAnnotationsopt void 

-46    IntegralType -> byte 

-47    IntegralType -> short 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 7

-

-

-48    IntegralType -> int 

-49    IntegralType -> long 

-50    IntegralType -> char 

-51    FloatingPointType -> float 

-52    FloatingPointType -> double 

-53    ReferenceType ::= ClassOrInterfaceType 

-54    ReferenceType -> ArrayType 

-55    ClassOrInterfaceType -> ClassOrInterface 

-56    ClassOrInterfaceType -> GenericType 

-57    ClassOrInterface ::= Name 

-58    ClassOrInterface ::= GenericType DOT Name 

-59    GenericType ::= ClassOrInterface TypeArguments 

-60    GenericType ::= ClassOrInterface LESS GREATER 

-61    ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name 

-62    ArrayType ::= PrimitiveType Dims 

-63    ArrayType ::= Name Dims 

-64    ArrayType ::= ArrayTypeWithTypeArgumentsName Dims 

-65    ArrayType ::= GenericType Dims 

-66    ClassType -> ClassOrInterfaceType 

-67    NameOrAj -> AjName 

-68    NameOrAj -> Name 

-69    SimpleNameOrAj -> AjSimpleName 

-70    SimpleNameOrAj -> SimpleName 

-71    AjName ::= AjSimpleName 

-72    AjName ::= AjQualifiedName 

-73    AjSimpleName -> AjSimpleNameNoAround 

-74    AjSimpleNameNoAround -> aspect 

-75    AjSimpleNameNoAround -> privileged 

-76    AjSimpleNameNoAround -> pointcut 

-77    AjSimpleName -> around 

-78    AjSimpleNameNoAround -> before 

-79    AjSimpleNameNoAround -> after 

-80    AjSimpleNameNoAround -> declare 

-81    AjQualifiedName ::= AjName DOT SimpleNameOrAj 

-82    UnannotatableNameOrAj -> AjName 

-83    UnannotatableNameOrAj -> UnannotatableName 

-84    Name ::= SimpleName 

-85    Name ::= TypeAnnotations SimpleName 

-86    Name -> QualifiedName 

-87    SimpleName -> Identifier 

-88    UnannotatableName -> SimpleName 

-89    UnannotatableName ::= UnannotatableName DOT SimpleName 

-90    QualifiedName ::= Name DOT JavaIdentifier 

-91    QualifiedName ::= Name DOT TypeAnnotations JavaIdentifier 

-92    TypeAnnotationsopt ::= 

-93    TypeAnnotationsopt -> TypeAnnotations 

-94    TypeAnnotations ::= TypeAnnotations0 

-95    TypeAnnotations0 -> TypeAnnotation 

-96    TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation 

-97    TypeAnnotation ::= NormalTypeAnnotation 

-98    TypeAnnotation ::= MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 8

-

-

-99    TypeAnnotation ::= SingleMemberTypeAnnotation 

-100   TypeAnnotationName ::= AT308 UnannotatableName 

-101   NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt 

-                               RPAREN 

-102   MarkerTypeAnnotation ::= TypeAnnotationName 

-103   SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                                     SingleMemberAnnotationMemberValue RPAREN 

-104   RejectTypeAnnotations ::= 

-105   PushZeroTypeAnnotations ::= 

-106   VariableDeclaratorIdOrThis ::= this 

-107   VariableDeclaratorIdOrThis ::= UnannotatableName DOT this 

-108   VariableDeclaratorIdOrThis ::= VariableDeclaratorId 

-109   CompilationUnit ::= EnterCompilationUnit InternalCompilationUnit 

-110   InternalCompilationUnit ::= PackageDeclaration 

-111   InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                                  ReduceImports 

-112   InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                                  ReduceImports TypeDeclarations 

-113   InternalCompilationUnit ::= PackageDeclaration TypeDeclarations 

-114   InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-115   InternalCompilationUnit ::= TypeDeclarations 

-116   InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-                                  TypeDeclarations 

-117   InternalCompilationUnit ::= 

-118   ReduceImports ::= 

-119   EnterCompilationUnit ::= 

-120   Header -> ImportDeclaration 

-121   Header -> PackageDeclaration 

-122   Header -> ClassHeader 

-123   Header -> InterfaceHeader 

-124   Header -> EnumHeader 

-125   Header -> AnnotationTypeDeclarationHeader 

-126   Header -> StaticInitializer 

-127   Header -> RecoveryMethodHeader 

-128   Header -> FieldDeclaration 

-129   Header -> AllocationHeader 

-130   Header -> ArrayCreationHeader 

-131   Header1 -> Header 

-132   Header1 -> ConstructorHeader 

-133   Header2 -> Header 

-134   Header2 -> EnumConstantHeader 

-135   CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN LBRACE 

-136   ImportDeclarations -> ImportDeclaration 

-137   ImportDeclarations ::= ImportDeclarations ImportDeclaration 

-138   TypeDeclarations -> TypeDeclaration 

-139   TypeDeclarations ::= TypeDeclarations TypeDeclaration 

-140   PackageDeclaration ::= PackageDeclarationName SEMICOLON 

-141   PackageDeclarationName ::= Modifiers package PushRealModifiers Name 

-                                 RejectTypeAnnotations 

-142   PackageDeclarationName ::= PackageComment package Name 

-                                 RejectTypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 9

-

-

-143   PackageComment ::= 

-144   ImportDeclaration -> SingleTypeImportDeclaration 

-145   ImportDeclaration -> TypeImportOnDemandDeclaration 

-146   ImportDeclaration -> SingleStaticImportDeclaration 

-147   ImportDeclaration -> StaticImportOnDemandDeclaration 

-148   SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName SEMICOLON 

-149   SingleTypeImportDeclarationName ::= import Name RejectTypeAnnotations 

-150   TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName 

-                                        SEMICOLON 

-151   TypeImportOnDemandDeclarationName ::= import Name DOT 

-                                          RejectTypeAnnotations MULTIPLY 

-152   TypeDeclaration -> ClassDeclaration 

-153   TypeDeclaration -> InterfaceDeclaration 

-154   TypeDeclaration ::= SEMICOLON 

-155   TypeDeclaration -> EnumDeclaration 

-156   TypeDeclaration -> AnnotationTypeDeclaration 

-157   Modifiers -> Modifier 

-158   Modifiers ::= Modifiers Modifier 

-159   SimpleModifier -> public 

-160   SimpleModifier -> protected 

-161   SimpleModifier -> private 

-162   SimpleModifier -> static 

-163   SimpleModifier -> abstract 

-164   SimpleModifier -> final 

-165   SimpleModifier -> native 

-166   SimpleModifier -> synchronized 

-167   SimpleModifier -> transient 

-168   SimpleModifier -> volatile 

-169   SimpleModifier -> strictfp 

-170   Modifier -> SimpleModifier 

-171   Modifier ::= Annotation 

-172   Header -> DeclareDeclaration 

-173   Header -> InterTypeMethodDeclaration 

-174   Header -> InterTypeFieldDeclaration 

-175   Header -> PointcutDeclaration 

-176   Header -> BasicAdviceDeclaration 

-177   Header -> AroundDeclaration 

-178   TypeDeclaration -> AspectDeclaration 

-179   Header -> AspectDeclaration 

-180   ClassMemberDeclaration -> AspectDeclaration 

-181   InterfaceMemberDeclaration -> AspectDeclaration 

-182   ClassMemberDeclaration -> PointcutDeclaration 

-183   InterfaceMemberDeclaration -> PointcutDeclaration 

-184   AspectDeclaration ::= AspectHeader AspectBody 

-185   AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt 

-                       ClassHeaderImplementsopt AspectHeaderRest 

-186   AspectHeaderName -> AspectHeaderName1 

-187   AspectHeaderName -> AspectHeaderName2 

-188   AspectHeaderName ::= AspectHeaderName1 TypeParameters 

-189   AspectHeaderName ::= AspectHeaderName2 TypeParameters 

-190   AspectHeaderName1 ::= Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 10

-

-

-191   AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt aspect 

-                            Identifier 

-192   AspectHeaderRest ::= 

-193   AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens 

-194   AspectHeaderRestStart ::= Identifier 

-195   AspectBody ::= LBRACE AspectBodyDeclarationsopt RBRACE 

-196   AspectBodyDeclarations ::= AspectBodyDeclaration 

-197   AspectBodyDeclarations ::= AspectBodyDeclarations AspectBodyDeclaration 

-198   AspectBodyDeclarationsopt ::= 

-199   AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations 

-200   AspectBodyDeclaration ::= ClassBodyDeclarationNoAroundMethod 

-201   ClassBodyDeclarationNoAroundMethod -> 

-                                          ClassMemberDeclarationNoAroundMethod 

-202   ClassBodyDeclarationNoAroundMethod -> StaticInitializer 

-203   ClassBodyDeclarationNoAroundMethod -> ConstructorDeclaration 

-204   ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod 

-                                          CreateInitializer Block 

-205   ClassMemberDeclarationNoAroundMethod -> PointcutDeclaration 

-206   ClassMemberDeclarationNoAroundMethod -> AspectDeclaration 

-207   ClassMemberDeclarationNoAroundMethod -> FieldDeclaration 

-208   ClassMemberDeclarationNoAroundMethod -> MethodDeclarationNoAround 

-209   ClassMemberDeclarationNoAroundMethod -> ClassDeclaration 

-210   ClassMemberDeclarationNoAroundMethod -> InterfaceDeclaration 

-211   ClassMemberDeclarationNoAroundMethod -> IntertypeClassDeclaration 

-212   ClassMemberDeclarationNoAroundMethod -> EnumDeclaration 

-213   ClassMemberDeclarationNoAroundMethod -> AnnotationTypeDeclaration 

-214   ClassMemberDeclarationNoAroundMethod ::= SEMICOLON 

-215   MethodDeclarationNoAround -> AbstractMethodDeclarationNoAround 

-216   MethodDeclarationNoAround ::= MethodHeaderNoAround MethodBody 

-217   AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround SEMICOLON 

-218   MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               MethodHeaderThrowsClauseopt 

-219   MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-220   MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround 

-                                   LPAREN 

-221   PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                              MethodHeaderRightParen SEMICOLON 

-222   PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                              MethodHeaderRightParen COLON PseudoTokens 

-                              SEMICOLON 

-223   PointcutHeader ::= Modifiersopt pointcut JavaIdentifier LPAREN 

-224   AspectBodyDeclaration -> AroundDeclaration 

-225   AspectBodyDeclaration -> BasicAdviceDeclaration 

-226   AroundDeclaration ::= AroundHeader MethodBody 

-227   AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-228   AroundHeaderName ::= Modifiersopt Type around LPAREN 

-229   AroundHeaderName ::= Modifiersopt around LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 11

-

-

-230   BasicAdviceDeclaration ::= BasicAdviceHeader MethodBody 

-231   BasicAdviceHeader -> BeforeAdviceHeader 

-232   BasicAdviceHeader -> AfterAdviceHeader 

-233   BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                             MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                             COLON PseudoTokens 

-234   AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                            MethodHeaderRightParen ExtraParamopt 

-                            MethodHeaderThrowsClauseopt COLON PseudoTokens 

-235   BeforeAdviceHeaderName ::= Modifiersopt before LPAREN 

-236   AfterAdviceHeaderName ::= Modifiersopt after LPAREN 

-237   ExtraParamopt ::= Identifier LPAREN FormalParameter RPAREN 

-238   ExtraParamopt ::= Identifier LPAREN RPAREN 

-239   ExtraParamopt ::= Identifier 

-240   ExtraParamopt ::= 

-241   OnType ::= JavaIdentifier 

-242   OnType ::= OnType DOT JavaIdentifier 

-243   AspectBodyDeclaration -> InterTypeMethodDeclaration 

-244   AspectBodyDeclaration -> InterTypeConstructorDeclaration 

-245   AspectBodyDeclaration -> InterTypeFieldDeclaration 

-246   InterTypeMethodDeclaration -> AbstractInterTypeMethodDeclaration 

-247   InterTypeMethodDeclaration ::= InterTypeMethodHeader MethodBody 

-248   InterTypeMethodHeader ::= InterTypeMethodHeaderName 

-                                FormalParameterListopt MethodHeaderRightParen 

-                                MethodHeaderExtendedDims 

-                                MethodHeaderThrowsClauseopt 

-249   InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT JavaIdentifier 

-                                    LPAREN 

-250   InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                                    JavaIdentifier LPAREN 

-251   InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT 

-                                    JavaIdentifier LPAREN 

-252   InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier LPAREN 

-253   InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT 

-                                    JavaIdentifier LPAREN 

-254   InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier LPAREN 

-255   AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader SEMICOLON 

-256   TypeParametersAsReference ::= TypeParameters 

-257   InterTypeConstructorDeclaration ::= InterTypeConstructorHeader MethodBody 

-258   InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                                     FormalParameterListopt 

-                                     MethodHeaderRightParen 

-                                     MethodHeaderThrowsClauseopt 

-259   InterTypeConstructorHeaderName ::= Modifiersopt Name DOT new LPAREN 

-260   InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT new 

-                                         LPAREN 

-261   InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT new LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 12

-

-

-262   InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT 

-                                         new LPAREN 

-263   InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT new 

-                                         LPAREN 

-264   InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters 

-                                         GenericType DOT new LPAREN 

-265   InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody 

-                                    SEMICOLON 

-266   InterTypeFieldHeader ::= Modifiersopt Type OnType DOT JavaIdentifier 

-267   InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                               JavaIdentifier 

-268   InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-269   InterTypeFieldHeader ::= Modifiersopt Type OnType 

-                               TypeParametersAsReference DOT JavaIdentifier 

-270   InterTypeFieldBody ::= 

-271   InterTypeFieldBody ::= EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-272   AspectBodyDeclaration -> DeclareDeclaration 

-273   DeclareDeclaration ::= DeclareHeader PseudoTokens SEMICOLON 

-274   DeclareHeader ::= declare Identifier COLON 

-275   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             Annotations SEMICOLON 

-276   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             PLUS Annotations SEMICOLON 

-277   DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                             MINUS Annotations SEMICOLON 

-278   Annotations -> Annotation 

-279   Annotations ::= Annotations Annotation 

-280   DeclareAnnotationHeader ::= declare AT Identifier COLON 

-281   PseudoTokens ::= PseudoToken 

-282   PseudoTokens ::= ColonPseudoToken 

-283   PseudoTokens ::= PseudoTokens ColonPseudoToken 

-284   PseudoTokens ::= PseudoTokens PseudoToken 

-285   PseudoTokensNoColon ::= PseudoToken 

-286   PseudoTokensNoColon ::= PseudoTokensNoColon PseudoToken 

-287   ColonPseudoToken ::= COLON 

-288   PseudoToken ::= JavaIdentifier 

-289   PseudoToken ::= LPAREN 

-290   PseudoToken ::= RPAREN 

-291   PseudoToken ::= DOT 

-292   PseudoToken ::= MULTIPLY 

-293   PseudoToken ::= PLUS 

-294   PseudoToken ::= EQUAL 

-295   PseudoToken ::= AND_AND 

-296   PseudoToken ::= OR_OR 

-297   PseudoToken ::= NOT 

-298   PseudoToken ::= COMMA 

-299   PseudoToken ::= LBRACKET 

-300   PseudoToken ::= RBRACKET 

-301   PseudoToken ::= AT 

-302   PseudoToken ::= ELLIPSIS 

-303   PseudoToken ::= QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 13

-

-

-304   PseudoToken ::= LESS 

-305   PseudoToken ::= GREATER 

-306   PseudoToken ::= RIGHT_SHIFT 

-307   PseudoToken ::= UNSIGNED_RIGHT_SHIFT 

-308   PseudoToken ::= AND 

-309   PseudoToken ::= NOT_EQUAL 

-310   PseudoToken ::= PrimitiveType 

-311   PseudoToken ::= SimpleModifier 

-312   PseudoToken ::= Literal 

-313   PseudoToken ::= this 

-314   PseudoToken ::= class 

-315   PseudoToken ::= super 

-316   PseudoToken ::= if LPAREN Expression RPAREN 

-317   PseudoToken ::= assert 

-318   PseudoToken ::= import 

-319   PseudoToken ::= package 

-320   PseudoToken ::= throw 

-321   PseudoToken ::= new 

-322   PseudoToken ::= do 

-323   PseudoToken ::= for 

-324   PseudoToken ::= switch 

-325   PseudoToken ::= try 

-326   PseudoToken ::= while 

-327   PseudoToken ::= break 

-328   PseudoToken ::= continue 

-329   PseudoToken ::= return 

-330   PseudoToken ::= case 

-331   PseudoToken ::= catch 

-332   PseudoToken ::= instanceof 

-333   PseudoToken ::= else 

-334   PseudoToken ::= extends 

-335   PseudoToken ::= finally 

-336   PseudoToken ::= implements 

-337   PseudoToken ::= throws 

-338   ClassDeclaration ::= ClassHeader ClassBody 

-339   IntertypeClassDeclaration ::= IntertypeClassHeader ClassBody 

-340   IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt 

-                               ClassHeaderImplementsopt 

-341   IntertypeClassHeaderName ::= IntertypeClassHeaderName1 TypeParameters 

-342   IntertypeClassHeaderName -> IntertypeClassHeaderName1 

-343   IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT 

-                                    JavaIdentifier 

-344   InterTypeClassHeaderName1 ::= Modifiersopt class OnType 

-                                    TypeParametersAsReference DOT 

-                                    JavaIdentifier 

-345   ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt 

-                      ClassHeaderImplementsopt 

-346   ClassHeaderName ::= ClassHeaderName1 TypeParameters 

-347   ClassHeaderName -> ClassHeaderName1 

-348   ClassHeaderName1 ::= Modifiersopt class JavaIdentifier 

-349   ClassHeaderExtends ::= extends ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 14

-

-

-350   ClassHeaderImplements ::= implements InterfaceTypeList 

-351   InterfaceTypeList -> InterfaceType 

-352   InterfaceTypeList ::= InterfaceTypeList COMMA InterfaceType 

-353   InterfaceType ::= ClassOrInterfaceType 

-354   ClassBody ::= LBRACE ClassBodyDeclarationsopt RBRACE 

-355   ClassBodyDeclarations ::= ClassBodyDeclaration 

-356   ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration 

-357   ClassBodyDeclaration -> ClassMemberDeclaration 

-358   ClassBodyDeclaration -> StaticInitializer 

-359   ClassBodyDeclaration -> ConstructorDeclaration 

-360   ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block 

-361   Diet ::= 

-362   Initializer ::= Diet NestedMethod CreateInitializer Block 

-363   CreateInitializer ::= 

-364   ClassMemberDeclaration -> FieldDeclaration 

-365   ClassMemberDeclaration -> MethodDeclaration 

-366   ClassMemberDeclaration -> ClassDeclaration 

-367   ClassMemberDeclaration -> InterfaceDeclaration 

-368   ClassMemberDeclaration -> EnumDeclaration 

-369   ClassMemberDeclaration -> AnnotationTypeDeclaration 

-370   ClassMemberDeclaration ::= SEMICOLON 

-371   GenericMethodDeclaration -> MethodDeclaration 

-372   GenericMethodDeclaration -> ConstructorDeclaration 

-373   FieldDeclaration ::= Modifiersopt Type VariableDeclarators SEMICOLON 

-374   VariableDeclarators -> VariableDeclarator 

-375   VariableDeclarators ::= VariableDeclarators COMMA VariableDeclarator 

-376   VariableDeclarator ::= VariableDeclaratorId EnterVariable 

-                             ExitVariableWithoutInitialization 

-377   VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL 

-                             ForceNoDiet VariableInitializer RestoreDiet 

-                             ExitVariableWithInitialization 

-378   EnterVariable ::= 

-379   ExitVariableWithInitialization ::= 

-380   ExitVariableWithoutInitialization ::= 

-381   ForceNoDiet ::= 

-382   RestoreDiet ::= 

-383   VariableDeclaratorId ::= JavaIdentifier Dimsopt 

-384   VariableInitializer -> Expression 

-385   VariableInitializer -> ArrayInitializer 

-386   MethodDeclaration -> AbstractMethodDeclaration 

-387   MethodDeclaration ::= MethodHeader MethodBody 

-388   MethodDeclaration ::= DefaultMethodHeader MethodBody 

-389   AbstractMethodDeclaration ::= MethodHeader SEMICOLON 

-390   MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderExtendedDims 

-                       MethodHeaderThrowsClauseopt 

-391   DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                              MethodHeaderRightParen MethodHeaderExtendedDims 

-                              MethodHeaderThrowsClauseopt 

-392   MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier 

-                           LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 15

-

-

-393   MethodHeaderName ::= Modifiersopt Type JavaIdentifier LPAREN 

-394   DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                                  Identifier LPAREN 

-395   DefaultMethodHeaderName ::= ModifiersWithDefault Type Identifier LPAREN 

-396   ModifiersWithDefault ::= Modifiersopt default Modifiersopt 

-397   MethodHeaderRightParen ::= RPAREN 

-398   MethodHeaderExtendedDims ::= Dimsopt 

-399   MethodHeaderThrowsClause ::= throws ClassTypeList 

-400   ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt 

-                            MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-401   ConstructorHeaderName ::= Modifiersopt TypeParameters Identifier LPAREN 

-402   ConstructorHeaderName ::= Modifiersopt Identifier LPAREN 

-403   ConstructorHeaderName ::= Modifiersopt aspect LPAREN 

-404   FormalParameterList -> FormalParameter 

-405   FormalParameterList ::= FormalParameterList COMMA FormalParameter 

-406   FormalParameter ::= Modifiersopt Type VariableDeclaratorIdOrThis 

-407   FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                          VariableDeclaratorIdOrThis 

-408   FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations 

-                          ELLIPSIS VariableDeclaratorIdOrThis 

-409   CatchFormalParameter ::= Modifiersopt CatchType VariableDeclaratorId 

-410   CatchType ::= UnionType 

-411   UnionType ::= Type 

-412   UnionType ::= UnionType OR Type 

-413   ClassTypeList -> ClassTypeElt 

-414   ClassTypeList ::= ClassTypeList COMMA ClassTypeElt 

-415   ClassTypeElt ::= ClassType 

-416   MethodBody ::= NestedMethod LBRACE BlockStatementsopt RBRACE 

-417   NestedMethod ::= 

-418   StaticInitializer ::= StaticOnly Block 

-419   StaticOnly ::= static 

-420   ConstructorDeclaration ::= ConstructorHeader MethodBody 

-421   ConstructorDeclaration ::= ConstructorHeader SEMICOLON 

-422   ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt RPAREN 

-                                        SEMICOLON 

-423   ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-424   ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt RPAREN 

-                                        SEMICOLON 

-425   ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-426   ExplicitConstructorInvocation ::= Primary DOT super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-427   ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super 

-                                        LPAREN ArgumentListopt RPAREN SEMICOLON 

-428   ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-429   ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-430   ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 16

-

-

-431   ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this 

-                                        LPAREN ArgumentListopt RPAREN SEMICOLON 

-432   ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt 

-                                        RPAREN SEMICOLON 

-433   ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                        ArgumentListopt RPAREN SEMICOLON 

-434   InterfaceDeclaration ::= InterfaceHeader InterfaceBody 

-435   InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt 

-436   InterfaceHeaderName ::= InterfaceHeaderName1 TypeParameters 

-437   InterfaceHeaderName -> InterfaceHeaderName1 

-438   InterfaceHeaderName1 ::= Modifiersopt interface JavaIdentifier 

-439   InterfaceHeaderExtends ::= extends InterfaceTypeList 

-440   InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt RBRACE 

-441   InterfaceMemberDeclarations -> InterfaceMemberDeclaration 

-442   InterfaceMemberDeclarations ::= InterfaceMemberDeclarations 

-                                      InterfaceMemberDeclaration 

-443   InterfaceMemberDeclaration ::= SEMICOLON 

-444   InterfaceMemberDeclaration -> ConstantDeclaration 

-445   InterfaceMemberDeclaration ::= DefaultMethodHeader MethodBody 

-446   InterfaceMemberDeclaration ::= MethodHeader MethodBody 

-447   InterfaceMemberDeclaration ::= DefaultMethodHeader SEMICOLON 

-448   InvalidConstructorDeclaration ::= ConstructorHeader MethodBody 

-449   InvalidConstructorDeclaration ::= ConstructorHeader SEMICOLON 

-450   InvalidInitializer -> StaticInitializer 

-451   InvalidInitializer -> Initializer 

-452   InterfaceMemberDeclaration -> AbstractMethodDeclaration 

-453   InterfaceMemberDeclaration -> InvalidConstructorDeclaration 

-454   InterfaceMemberDeclaration -> InvalidInitializer 

-455   InterfaceMemberDeclaration -> ClassDeclaration 

-456   InterfaceMemberDeclaration -> InterfaceDeclaration 

-457   InterfaceMemberDeclaration -> EnumDeclaration 

-458   InterfaceMemberDeclaration -> AnnotationTypeDeclaration 

-459   ConstantDeclaration -> FieldDeclaration 

-460   PushLeftBrace ::= 

-461   ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE 

-462   ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers RBRACE 

-463   ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers COMMA 

-                           RBRACE 

-464   VariableInitializers ::= VariableInitializer 

-465   VariableInitializers ::= VariableInitializers COMMA VariableInitializer 

-466   Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE 

-467   OpenBlock ::= 

-468   BlockStatements ::= BlockStatement 

-469   BlockStatements ::= BlockStatements BlockStatement 

-470   BlockStatementopt ::= BlockStatementopt0 

-471   BlockStatementopt0 ::= 

-472   BlockStatementopt0 -> BlockStatement 

-473   BlockStatement -> LocalVariableDeclarationStatement 

-474   BlockStatement -> Statement 

-475   BlockStatement -> ClassDeclaration 

-476   BlockStatement ::= InterfaceDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 17

-

-

-477   BlockStatement ::= AnnotationTypeDeclaration 

-478   BlockStatement ::= EnumDeclaration 

-479   LocalVariableDeclarationStatement ::= LocalVariableDeclaration SEMICOLON 

-480   LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators 

-481   LocalVariableDeclaration ::= Modifiers Type PushRealModifiers 

-                                   VariableDeclarators 

-482   PushModifiers ::= 

-483   PushModifiersForHeader ::= 

-484   PushRealModifiers ::= 

-485   Statement -> StatementWithoutTrailingSubstatement 

-486   Statement -> LabeledStatement 

-487   Statement -> IfThenStatement 

-488   Statement -> IfThenElseStatement 

-489   Statement -> WhileStatement 

-490   Statement -> ForStatement 

-491   Statement -> EnhancedForStatement 

-492   StatementNoShortIf -> StatementWithoutTrailingSubstatement 

-493   StatementNoShortIf -> LabeledStatementNoShortIf 

-494   StatementNoShortIf -> IfThenElseStatementNoShortIf 

-495   StatementNoShortIf -> WhileStatementNoShortIf 

-496   StatementNoShortIf -> ForStatementNoShortIf 

-497   StatementNoShortIf -> EnhancedForStatementNoShortIf 

-498   StatementWithoutTrailingSubstatement -> AssertStatement 

-499   StatementWithoutTrailingSubstatement -> Block 

-500   StatementWithoutTrailingSubstatement -> EmptyStatement 

-501   StatementWithoutTrailingSubstatement -> ExpressionStatement 

-502   StatementWithoutTrailingSubstatement -> SwitchStatement 

-503   StatementWithoutTrailingSubstatement -> DoStatement 

-504   StatementWithoutTrailingSubstatement -> BreakStatement 

-505   StatementWithoutTrailingSubstatement -> ContinueStatement 

-506   StatementWithoutTrailingSubstatement -> ReturnStatement 

-507   StatementWithoutTrailingSubstatement -> SynchronizedStatement 

-508   StatementWithoutTrailingSubstatement -> ThrowStatement 

-509   StatementWithoutTrailingSubstatement -> TryStatement 

-510   StatementWithoutTrailingSubstatement -> TryStatementWithResources 

-511   EmptyStatement ::= SEMICOLON 

-512   LabeledStatement ::= Label COLON Statement 

-513   LabeledStatementNoShortIf ::= Label COLON StatementNoShortIf 

-514   Label ::= JavaIdentifier 

-515   ExpressionStatement ::= StatementExpression SEMICOLON 

-516   ExpressionStatement ::= ExplicitConstructorInvocation 

-517   StatementExpression ::= Assignment 

-518   StatementExpression ::= PreIncrementExpression 

-519   StatementExpression ::= PreDecrementExpression 

-520   StatementExpression ::= PostIncrementExpression 

-521   StatementExpression ::= PostDecrementExpression 

-522   StatementExpression ::= MethodInvocation 

-523   StatementExpression ::= ClassInstanceCreationExpression 

-524   IfThenStatement ::= if LPAREN Expression RPAREN Statement 

-525   IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf 

-                              else Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 18

-

-

-526   IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                       StatementNoShortIf else 

-                                       StatementNoShortIf 

-527   SwitchStatement ::= switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-528   SwitchBlock ::= LBRACE RBRACE 

-529   SwitchBlock ::= LBRACE SwitchBlockStatements RBRACE 

-530   SwitchBlock ::= LBRACE SwitchLabels RBRACE 

-531   SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels RBRACE 

-532   SwitchBlockStatements -> SwitchBlockStatement 

-533   SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement 

-534   SwitchBlockStatement ::= SwitchLabels BlockStatements 

-535   SwitchLabels -> SwitchLabel 

-536   SwitchLabels ::= SwitchLabels SwitchLabel 

-537   SwitchLabel ::= case ConstantExpression COLON 

-538   SwitchLabel ::= default COLON 

-539   WhileStatement ::= while LPAREN Expression RPAREN Statement 

-540   WhileStatementNoShortIf ::= while LPAREN Expression RPAREN 

-                                  StatementNoShortIf 

-541   DoStatement ::= do Statement while LPAREN Expression RPAREN SEMICOLON 

-542   ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                       ForUpdateopt RPAREN Statement 

-543   ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                                SEMICOLON ForUpdateopt RPAREN 

-                                StatementNoShortIf 

-544   ForInit ::= StatementExpressionList 

-545   ForInit -> LocalVariableDeclaration 

-546   ForUpdate -> StatementExpressionList 

-547   StatementExpressionList -> StatementExpression 

-548   StatementExpressionList ::= StatementExpressionList COMMA 

-                                  StatementExpression 

-549   AssertStatement ::= assert Expression SEMICOLON 

-550   AssertStatement ::= assert Expression COLON Expression SEMICOLON 

-551   BreakStatement ::= break SEMICOLON 

-552   BreakStatement ::= break Identifier SEMICOLON 

-553   ContinueStatement ::= continue SEMICOLON 

-554   ContinueStatement ::= continue Identifier SEMICOLON 

-555   ReturnStatement ::= return Expressionopt SEMICOLON 

-556   ThrowStatement ::= throw Expression SEMICOLON 

-557   SynchronizedStatement ::= OnlySynchronized LPAREN Expression RPAREN Block 

-558   OnlySynchronized ::= synchronized 

-559   TryStatement ::= try TryBlock Catches 

-560   TryStatement ::= try TryBlock Catchesopt Finally 

-561   TryStatementWithResources ::= try ResourceSpecification TryBlock 

-                                    Catchesopt 

-562   TryStatementWithResources ::= try ResourceSpecification TryBlock 

-                                    Catchesopt Finally 

-563   ResourceSpecification ::= LPAREN Resources ;opt RPAREN 

-564   ;opt ::= 

-565   ;opt ::= SEMICOLON 

-566   Resources ::= Resource 

-567   Resources ::= Resources TrailingSemiColon Resource 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 19

-

-

-568   TrailingSemiColon ::= SEMICOLON 

-569   Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-                   ForceNoDiet VariableInitializer RestoreDiet 

-                   ExitVariableWithInitialization 

-570   Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-                   EnterVariable EQUAL ForceNoDiet VariableInitializer 

-                   RestoreDiet ExitVariableWithInitialization 

-571   TryBlock ::= Block ExitTryBlock 

-572   ExitTryBlock ::= 

-573   Catches -> CatchClause 

-574   Catches ::= Catches CatchClause 

-575   CatchClause ::= catch LPAREN CatchFormalParameter RPAREN Block 

-576   Finally ::= finally Block 

-577   PushLPAREN ::= LPAREN 

-578   PushRPAREN ::= RPAREN 

-579   Primary -> PrimaryNoNewArray 

-580   Primary -> ArrayCreationWithArrayInitializer 

-581   Primary -> ArrayCreationWithoutArrayInitializer 

-582   PrimaryNoNewArray -> Literal 

-583   PrimaryNoNewArray ::= this 

-584   PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN 

-585   PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN 

-586   PrimaryNoNewArray -> ClassInstanceCreationExpression 

-587   PrimaryNoNewArray -> FieldAccess 

-588   PrimaryNoNewArray ::= Name DOT this 

-589   QualifiedSuperReceiver ::= Name DOT super 

-590   PrimaryNoNewArray ::= Name DOT class 

-591   PrimaryNoNewArray ::= Name Dims DOT class 

-592   PrimaryNoNewArray ::= PrimitiveType Dims DOT class 

-593   PrimaryNoNewArray ::= PrimitiveType DOT class 

-594   PrimaryNoNewArray -> MethodInvocation 

-595   PrimaryNoNewArray -> ArrayAccess 

-596   PrimaryNoNewArray -> LambdaExpression 

-597   PrimaryNoNewArray -> ReferenceExpression 

-598   ReferenceExpressionTypeArgumentsAndTrunk ::= 

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                           

-599   ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt 

-600   ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT 

-                                          ClassOrInterfaceType Dimsopt 

-601   ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-                              NonWildTypeArgumentsopt IdentifierOrNew 

-602   ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                              IdentifierOrNew 

-603   ReferenceExpression ::= Name BeginTypeArguments 

-                              ReferenceExpressionTypeArgumentsAndTrunk 

-                              COLON_COLON NonWildTypeArgumentsopt 

-                              IdentifierOrNew 

-604   ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt 

-                              Identifier 

-605   ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 20

-

-

-                              NonWildTypeArgumentsopt Identifier 

-606   ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt 

-                              Identifier 

-607   NonWildTypeArgumentsopt ::= 

-608   NonWildTypeArgumentsopt -> OnlyTypeArguments 

-609   IdentifierOrNew ::= Identifier 

-610   IdentifierOrNew ::= new 

-611   LambdaExpression ::= LambdaParameters ARROW LambdaBody 

-612   NestedLambda ::= 

-613   LambdaParameters ::= Identifier NestedLambda 

-614   LambdaParameters ::= BeginLambda NestedLambda LambdaParameterList 

-615   ParenthesizedLambdaParameterList ::= LambdaParameterList 

-616   LambdaParameterList ::= PushLPAREN FormalParameterListopt PushRPAREN 

-617   LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList 

-                              PushRPAREN 

-618   TypeElidedFormalParameterList -> TypeElidedFormalParameter 

-619   TypeElidedFormalParameterList ::= TypeElidedFormalParameterList COMMA 

-                                        TypeElidedFormalParameter 

-620   TypeElidedFormalParameter ::= Modifiersopt Identifier 

-621   LambdaBody ::= ElidedLeftBraceAndReturn Expression 

-                     ElidedSemicolonAndRightBrace 

-622   LambdaBody -> Block 

-623   ElidedLeftBraceAndReturn ::= 

-624   AllocationHeader ::= new ClassType LPAREN ArgumentListopt RPAREN 

-625   ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          UnqualifiedClassBodyopt 

-626   ClassInstanceCreationExpression ::= new ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          UnqualifiedClassBodyopt 

-627   ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                          ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-628   ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-629   ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                          ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-630   ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                          OnlyTypeArguments ClassType 

-                                          EnterInstanceCreationArgumentList 

-                                          LPAREN ArgumentListopt RPAREN 

-                                          QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 21

-

-

-631   EnterInstanceCreationArgumentList ::= 

-632   ClassInstanceCreationExpressionName ::= Name DOT new 

-633   UnqualifiedClassBodyopt ::= 

-634   UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody ClassBody 

-635   UnqualifiedEnterAnonymousClassBody ::= 

-636   QualifiedClassBodyopt ::= 

-637   QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody ClassBody 

-638   QualifiedEnterAnonymousClassBody ::= 

-639   ArgumentList ::= Expression 

-640   ArgumentList ::= ArgumentList COMMA Expression 

-641   ArrayCreationHeader ::= new PrimitiveType DimWithOrWithOutExprs 

-642   ArrayCreationHeader ::= new ClassOrInterfaceType DimWithOrWithOutExprs 

-643   ArrayCreationWithoutArrayInitializer ::= new PrimitiveType 

-                                          DimWithOrWithOutExprs 

-644   ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                          DimWithOrWithOutExprs 

-                                          ArrayInitializer 

-645   ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType 

-                                          DimWithOrWithOutExprs 

-646   ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                          DimWithOrWithOutExprs 

-                                          ArrayInitializer 

-647   DimWithOrWithOutExprs ::= DimWithOrWithOutExpr 

-648   DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr 

-649   DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression RBRACKET 

-650   DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET RBRACKET 

-651   Dims ::= DimsLoop 

-652   DimsLoop -> OneDimLoop 

-653   DimsLoop ::= DimsLoop OneDimLoop 

-654   OneDimLoop ::= LBRACKET RBRACKET 

-655   OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET 

-656   FieldAccess ::= Primary DOT JavaIdentifier 

-657   FieldAccess ::= super DOT JavaIdentifier 

-658   FieldAccess ::= QualifiedSuperReceiver DOT Identifier 

-659   MethodInvocation ::= NameOrAj LPAREN ArgumentListopt RPAREN 

-660   MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-661   MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-662   MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt 

-                           RPAREN 

-663   MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-664   MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                           JavaIdentifier LPAREN ArgumentListopt RPAREN 

-665   MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                           ArgumentListopt RPAREN 

-666   MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt 

-                           RPAREN 

-667   ArrayAccess ::= Name LBRACKET Expression RBRACKET 

-668   ArrayAccess ::= AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 22

-

-

-669   ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression RBRACKET 

-670   ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression 

-                      RBRACKET 

-671   PostfixExpression -> Primary 

-672   PostfixExpression ::= NameOrAj 

-673   PostfixExpression -> PostIncrementExpression 

-674   PostfixExpression -> PostDecrementExpression 

-675   PostIncrementExpression ::= PostfixExpression PLUS_PLUS 

-676   PostDecrementExpression ::= PostfixExpression MINUS_MINUS 

-677   PushPosition ::= 

-678   UnaryExpression -> PreIncrementExpression 

-679   UnaryExpression -> PreDecrementExpression 

-680   UnaryExpression ::= PLUS PushPosition UnaryExpression 

-681   UnaryExpression ::= MINUS PushPosition UnaryExpression 

-682   UnaryExpression -> UnaryExpressionNotPlusMinus 

-683   PreIncrementExpression ::= PLUS_PLUS PushPosition UnaryExpression 

-684   PreDecrementExpression ::= MINUS_MINUS PushPosition UnaryExpression 

-685   UnaryExpressionNotPlusMinus -> PostfixExpression 

-686   UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition UnaryExpression 

-687   UnaryExpressionNotPlusMinus ::= NOT PushPosition UnaryExpression 

-688   UnaryExpressionNotPlusMinus -> CastExpression 

-689   CastExpression ::= PushLPAREN PrimitiveType Dimsopt 

-                         AdditionalBoundsListOpt PushRPAREN 

-                         InsideCastExpression UnaryExpression 

-690   CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                         Dimsopt AdditionalBoundsListOpt PushRPAREN 

-                         InsideCastExpression UnaryExpressionNotPlusMinus 

-691   CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                         ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                         PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                         UnaryExpressionNotPlusMinus 

-692   CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                         UnaryExpressionNotPlusMinus 

-693   CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                         PushRPAREN InsideCastExpressionLL1WithBounds 

-                         UnaryExpressionNotPlusMinus 

-694   CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt 

-                         PushRPAREN InsideCastExpression 

-                         UnaryExpressionNotPlusMinus 

-695   AdditionalBoundsListOpt ::= 

-696   AdditionalBoundsListOpt -> AdditionalBoundList 

-697   ParenthesizedCastNameAndBounds ::= LPAREN CastNameAndBounds RPAREN 

-698   CastNameAndBounds ::= Name AdditionalBoundList 

-699   OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments 

-700   InsideCastExpression ::= 

-701   InsideCastExpressionLL1 ::= 

-702   InsideCastExpressionLL1WithBounds ::= 

-703   InsideCastExpressionWithQualifiedGenerics ::= 

-704   MultiplicativeExpression -> UnaryExpression 

-705   MultiplicativeExpression ::= MultiplicativeExpression MULTIPLY 

-                                   UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 23

-

-

-706   MultiplicativeExpression ::= MultiplicativeExpression DIVIDE 

-                                   UnaryExpression 

-707   MultiplicativeExpression ::= MultiplicativeExpression REMAINDER 

-                                   UnaryExpression 

-708   AdditiveExpression -> MultiplicativeExpression 

-709   AdditiveExpression ::= AdditiveExpression PLUS MultiplicativeExpression 

-710   AdditiveExpression ::= AdditiveExpression MINUS MultiplicativeExpression 

-711   ShiftExpression -> AdditiveExpression 

-712   ShiftExpression ::= ShiftExpression LEFT_SHIFT AdditiveExpression 

-713   ShiftExpression ::= ShiftExpression RIGHT_SHIFT AdditiveExpression 

-714   ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT 

-                          AdditiveExpression 

-715   RelationalExpression -> ShiftExpression 

-716   RelationalExpression ::= RelationalExpression LESS ShiftExpression 

-717   RelationalExpression ::= RelationalExpression GREATER ShiftExpression 

-718   RelationalExpression ::= RelationalExpression LESS_EQUAL ShiftExpression 

-719   RelationalExpression ::= RelationalExpression GREATER_EQUAL 

-                               ShiftExpression 

-720   InstanceofExpression -> RelationalExpression 

-721   InstanceofExpression ::= InstanceofExpression instanceof ReferenceType 

-722   EqualityExpression -> InstanceofExpression 

-723   EqualityExpression ::= EqualityExpression EQUAL_EQUAL 

-                             InstanceofExpression 

-724   EqualityExpression ::= EqualityExpression NOT_EQUAL InstanceofExpression 

-725   AndExpression -> EqualityExpression 

-726   AndExpression ::= AndExpression AND EqualityExpression 

-727   ExclusiveOrExpression -> AndExpression 

-728   ExclusiveOrExpression ::= ExclusiveOrExpression XOR AndExpression 

-729   InclusiveOrExpression -> ExclusiveOrExpression 

-730   InclusiveOrExpression ::= InclusiveOrExpression OR ExclusiveOrExpression 

-731   ConditionalAndExpression -> InclusiveOrExpression 

-732   ConditionalAndExpression ::= ConditionalAndExpression AND_AND 

-                                   InclusiveOrExpression 

-733   ConditionalOrExpression -> ConditionalAndExpression 

-734   ConditionalOrExpression ::= ConditionalOrExpression OR_OR 

-                                  ConditionalAndExpression 

-735   ConditionalExpression -> ConditionalOrExpression 

-736   ConditionalExpression ::= ConditionalOrExpression QUESTION Expression 

-                                COLON ConditionalExpression 

-737   AssignmentExpression -> ConditionalExpression 

-738   AssignmentExpression -> Assignment 

-739   Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression 

-740   InvalidArrayInitializerAssignement ::= PostfixExpression 

-                                          AssignmentOperator ArrayInitializer 

-741   Assignment ::= InvalidArrayInitializerAssignement 

-742   AssignmentOperator ::= EQUAL 

-743   AssignmentOperator ::= MULTIPLY_EQUAL 

-744   AssignmentOperator ::= DIVIDE_EQUAL 

-745   AssignmentOperator ::= REMAINDER_EQUAL 

-746   AssignmentOperator ::= PLUS_EQUAL 

-747   AssignmentOperator ::= MINUS_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 24

-

-

-748   AssignmentOperator ::= LEFT_SHIFT_EQUAL 

-749   AssignmentOperator ::= RIGHT_SHIFT_EQUAL 

-750   AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL 

-751   AssignmentOperator ::= AND_EQUAL 

-752   AssignmentOperator ::= XOR_EQUAL 

-753   AssignmentOperator ::= OR_EQUAL 

-754   Expression ::= AssignmentExpression 

-755   ClassHeaderExtendsopt ::= 

-756   ClassHeaderExtendsopt -> ClassHeaderExtends 

-757   Expressionopt ::= 

-758   Expressionopt -> Expression 

-759   ConstantExpression -> Expression 

-760   ,opt ::= 

-761   ,opt -> COMMA 

-762   ClassBodyDeclarationsopt ::= 

-763   ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations 

-764   Modifiersopt ::= 

-765   Modifiersopt ::= Modifiers 

-766   BlockStatementsopt ::= 

-767   BlockStatementsopt -> BlockStatements 

-768   Dimsopt ::= 

-769   Dimsopt -> Dims 

-770   ArgumentListopt ::= 

-771   ArgumentListopt -> ArgumentList 

-772   MethodHeaderThrowsClauseopt ::= 

-773   MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause 

-774   FormalParameterListopt ::= 

-775   FormalParameterListopt -> FormalParameterList 

-776   ClassHeaderImplementsopt ::= 

-777   ClassHeaderImplementsopt -> ClassHeaderImplements 

-778   InterfaceMemberDeclarationsopt ::= 

-779   InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations 

-780   NestedType ::= 

-781   ForInitopt ::= 

-782   ForInitopt -> ForInit 

-783   ForUpdateopt ::= 

-784   ForUpdateopt -> ForUpdate 

-785   InterfaceHeaderExtendsopt ::= 

-786   InterfaceHeaderExtendsopt -> InterfaceHeaderExtends 

-787   Catchesopt ::= 

-788   Catchesopt -> Catches 

-789   EnumDeclaration ::= EnumHeader EnumBody 

-790   EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt 

-791   EnumHeaderName ::= Modifiersopt enum JavaIdentifier 

-792   EnumHeaderName ::= Modifiersopt enum JavaIdentifier TypeParameters 

-793   EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE 

-794   EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt RBRACE 

-795   EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-796   EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt RBRACE 

-797   EnumConstants -> EnumConstant 

-798   EnumConstants ::= EnumConstants COMMA EnumConstant 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 25

-

-

-799   EnumConstantHeaderName ::= Modifiersopt Identifier 

-800   EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                             RestoreDiet 

-801   EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-802   EnumConstant ::= EnumConstantHeader 

-803   Arguments ::= LPAREN ArgumentListopt RPAREN 

-804   Argumentsopt ::= 

-805   Argumentsopt -> Arguments 

-806   EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt 

-807   EnumBodyDeclarationsopt ::= 

-808   EnumBodyDeclarationsopt -> EnumDeclarations 

-809   EnhancedForStatement ::= EnhancedForStatementHeader Statement 

-810   EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader 

-                                        StatementNoShortIf 

-811   EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                         JavaIdentifier Dimsopt 

-812   EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                         PushRealModifiers JavaIdentifier 

-                                         Dimsopt 

-813   EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                                     Expression RPAREN 

-814   SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName 

-                                        SEMICOLON 

-815   SingleStaticImportDeclarationName ::= import static Name 

-                                          RejectTypeAnnotations 

-816   StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName 

-                                          SEMICOLON 

-817   StaticImportOnDemandDeclarationName ::= import static Name DOT 

-                                          RejectTypeAnnotations MULTIPLY 

-818   TypeArguments ::= LESS TypeArgumentList1 

-819   OnlyTypeArguments ::= LESS TypeArgumentList1 

-820   TypeArgumentList1 -> TypeArgument1 

-821   TypeArgumentList1 ::= TypeArgumentList COMMA TypeArgument1 

-822   TypeArgumentList -> TypeArgument 

-823   TypeArgumentList ::= TypeArgumentList COMMA TypeArgument 

-824   TypeArgument ::= ReferenceType 

-825   TypeArgument -> Wildcard 

-826   TypeArgument1 -> ReferenceType1 

-827   TypeArgument1 -> Wildcard1 

-828   ReferenceType1 ::= ReferenceType GREATER 

-829   ReferenceType1 ::= ClassOrInterface LESS TypeArgumentList2 

-830   TypeArgumentList2 -> TypeArgument2 

-831   TypeArgumentList2 ::= TypeArgumentList COMMA TypeArgument2 

-832   TypeArgument2 -> ReferenceType2 

-833   TypeArgument2 -> Wildcard2 

-834   ReferenceType2 ::= ReferenceType RIGHT_SHIFT 

-835   ReferenceType2 ::= ClassOrInterface LESS TypeArgumentList3 

-836   TypeArgumentList3 -> TypeArgument3 

-837   TypeArgumentList3 ::= TypeArgumentList COMMA TypeArgument3 

-838   TypeArgument3 -> ReferenceType3 

-839   TypeArgument3 -> Wildcard3 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 26

-

-

-840   ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT 

-841   Wildcard ::= TypeAnnotationsopt QUESTION 

-842   Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds 

-843   WildcardBounds ::= extends ReferenceType 

-844   WildcardBounds ::= super ReferenceType 

-845   Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER 

-846   Wildcard1 ::= TypeAnnotationsopt QUESTION WildcardBounds1 

-847   WildcardBounds1 ::= extends ReferenceType1 

-848   WildcardBounds1 ::= super ReferenceType1 

-849   Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-850   Wildcard2 ::= TypeAnnotationsopt QUESTION WildcardBounds2 

-851   WildcardBounds2 ::= extends ReferenceType2 

-852   WildcardBounds2 ::= super ReferenceType2 

-853   Wildcard3 ::= TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-854   Wildcard3 ::= TypeAnnotationsopt QUESTION WildcardBounds3 

-855   WildcardBounds3 ::= extends ReferenceType3 

-856   WildcardBounds3 ::= super ReferenceType3 

-857   TypeParameterHeader ::= TypeAnnotationsopt JavaIdentifier 

-858   TypeParameters ::= LESS TypeParameterList1 

-859   TypeParameterList -> TypeParameter 

-860   TypeParameterList ::= TypeParameterList COMMA TypeParameter 

-861   TypeParameter -> TypeParameterHeader 

-862   TypeParameter ::= TypeParameterHeader extends ReferenceType 

-863   TypeParameter ::= TypeParameterHeader extends ReferenceType 

-                        AdditionalBoundList 

-864   AdditionalBoundList -> AdditionalBound 

-865   AdditionalBoundList ::= AdditionalBoundList AdditionalBound 

-866   AdditionalBound ::= AND ReferenceType 

-867   TypeParameterList1 -> TypeParameter1 

-868   TypeParameterList1 ::= TypeParameterList COMMA TypeParameter1 

-869   TypeParameter1 ::= TypeParameterHeader GREATER 

-870   TypeParameter1 ::= TypeParameterHeader extends ReferenceType1 

-871   TypeParameter1 ::= TypeParameterHeader extends ReferenceType 

-                         AdditionalBoundList1 

-872   AdditionalBoundList1 -> AdditionalBound1 

-873   AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1 

-874   AdditionalBound1 ::= AND ReferenceType1 

-875   PostfixExpression_NotName -> Primary 

-876   PostfixExpression_NotName -> PostIncrementExpression 

-877   PostfixExpression_NotName -> PostDecrementExpression 

-878   UnaryExpression_NotName -> PreIncrementExpression 

-879   UnaryExpression_NotName -> PreDecrementExpression 

-880   UnaryExpression_NotName ::= PLUS PushPosition UnaryExpression 

-881   UnaryExpression_NotName ::= MINUS PushPosition UnaryExpression 

-882   UnaryExpression_NotName -> UnaryExpressionNotPlusMinus_NotName 

-883   UnaryExpressionNotPlusMinus_NotName -> PostfixExpression_NotName 

-884   UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE PushPosition 

-                                          UnaryExpression 

-885   UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition UnaryExpression 

-886   UnaryExpressionNotPlusMinus_NotName -> CastExpression 

-887   MultiplicativeExpression_NotName -> UnaryExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 27

-

-

-888   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          MULTIPLY UnaryExpression 

-889   MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY UnaryExpression 

-890   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          DIVIDE UnaryExpression 

-891   MultiplicativeExpression_NotName ::= NameOrAj DIVIDE UnaryExpression 

-892   MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                          REMAINDER UnaryExpression 

-893   MultiplicativeExpression_NotName ::= NameOrAj REMAINDER UnaryExpression 

-894   AdditiveExpression_NotName -> MultiplicativeExpression_NotName 

-895   AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS 

-                                     MultiplicativeExpression 

-896   AdditiveExpression_NotName ::= NameOrAj PLUS MultiplicativeExpression 

-897   AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS 

-                                     MultiplicativeExpression 

-898   AdditiveExpression_NotName ::= NameOrAj MINUS MultiplicativeExpression 

-899   ShiftExpression_NotName -> AdditiveExpression_NotName 

-900   ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT 

-                                  AdditiveExpression 

-901   ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT AdditiveExpression 

-902   ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT 

-                                  AdditiveExpression 

-903   ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT AdditiveExpression 

-904   ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                                  AdditiveExpression 

-905   ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT 

-                                  AdditiveExpression 

-906   RelationalExpression_NotName -> ShiftExpression_NotName 

-907   RelationalExpression_NotName ::= ShiftExpression_NotName LESS 

-                                       ShiftExpression 

-908   RelationalExpression_NotName ::= Name LESS ShiftExpression 

-909   RelationalExpression_NotName ::= ShiftExpression_NotName GREATER 

-                                       ShiftExpression 

-910   RelationalExpression_NotName ::= NameOrAj GREATER ShiftExpression 

-911   RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL 

-                                       ShiftExpression 

-912   RelationalExpression_NotName ::= NameOrAj LESS_EQUAL ShiftExpression 

-913   RelationalExpression_NotName ::= RelationalExpression_NotName 

-                                       GREATER_EQUAL ShiftExpression 

-914   RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL ShiftExpression 

-915   InstanceofExpression_NotName -> RelationalExpression_NotName 

-916   InstanceofExpression_NotName ::= NameOrAj instanceof ReferenceType 

-917   InstanceofExpression_NotName ::= InstanceofExpression_NotName instanceof 

-                                       ReferenceType 

-918   EqualityExpression_NotName -> InstanceofExpression_NotName 

-919   EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL 

-                                     InstanceofExpression 

-920   EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL InstanceofExpression 

-921   EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL 

-                                     InstanceofExpression 

-922   EqualityExpression_NotName ::= NameOrAj NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 28

-

-

-923   AndExpression_NotName -> EqualityExpression_NotName 

-924   AndExpression_NotName ::= AndExpression_NotName AND EqualityExpression 

-925   AndExpression_NotName ::= NameOrAj AND EqualityExpression 

-926   ExclusiveOrExpression_NotName -> AndExpression_NotName 

-927   ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR 

-                                        AndExpression 

-928   ExclusiveOrExpression_NotName ::= NameOrAj XOR AndExpression 

-929   InclusiveOrExpression_NotName -> ExclusiveOrExpression_NotName 

-930   InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR 

-                                        ExclusiveOrExpression 

-931   InclusiveOrExpression_NotName ::= NameOrAj OR ExclusiveOrExpression 

-932   ConditionalAndExpression_NotName -> InclusiveOrExpression_NotName 

-933   ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                          AND_AND InclusiveOrExpression 

-934   ConditionalAndExpression_NotName ::= NameOrAj AND_AND 

-                                          InclusiveOrExpression 

-935   ConditionalOrExpression_NotName -> ConditionalAndExpression_NotName 

-936   ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR 

-                                          ConditionalAndExpression 

-937   ConditionalOrExpression_NotName ::= NameOrAj OR_OR 

-                                          ConditionalAndExpression 

-938   ConditionalExpression_NotName -> ConditionalOrExpression_NotName 

-939   ConditionalExpression_NotName ::= ConditionalOrExpression_NotName 

-                                        QUESTION Expression COLON 

-                                        ConditionalExpression 

-940   ConditionalExpression_NotName ::= NameOrAj QUESTION Expression COLON 

-                                        ConditionalExpression 

-941   AssignmentExpression_NotName -> ConditionalExpression_NotName 

-942   AssignmentExpression_NotName -> Assignment 

-943   Expression_NotName -> AssignmentExpression_NotName 

-944   AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                          interface JavaIdentifier 

-945   AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                          interface JavaIdentifier 

-                                          TypeParameters 

-946   AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader 

-                                          interface JavaIdentifier 

-                                          TypeParameters 

-947   AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader 

-                                          interface JavaIdentifier 

-948   AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName 

-                                          ClassHeaderExtendsopt 

-                                          ClassHeaderImplementsopt 

-949   AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader 

-                                    AnnotationTypeBody 

-950   AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt RBRACE 

-951   AnnotationTypeMemberDeclarationsopt ::= 

-952   AnnotationTypeMemberDeclarationsopt ::= NestedType 

-                                          AnnotationTypeMemberDeclarations 

-953   AnnotationTypeMemberDeclarations -> AnnotationTypeMemberDeclaration 

-954   AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 29

-

-

-                                          AnnotationTypeMemberDeclaration 

-955   AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                                     JavaIdentifier LPAREN 

-956   AnnotationMethodHeaderName ::= Modifiersopt Type JavaIdentifier LPAREN 

-957   AnnotationMethodHeaderDefaultValueopt ::= 

-958   AnnotationMethodHeaderDefaultValueopt ::= DefaultValue 

-959   AnnotationMethodHeader ::= AnnotationMethodHeaderName 

-                                 FormalParameterListopt MethodHeaderRightParen 

-                                 MethodHeaderExtendedDims 

-                                 AnnotationMethodHeaderDefaultValueopt 

-960   AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader SEMICOLON 

-961   AnnotationTypeMemberDeclaration -> ConstantDeclaration 

-962   AnnotationTypeMemberDeclaration -> ConstructorDeclaration 

-963   AnnotationTypeMemberDeclaration -> TypeDeclaration 

-964   DefaultValue ::= default MemberValue 

-965   Annotation -> NormalAnnotation 

-966   Annotation -> MarkerAnnotation 

-967   Annotation -> SingleMemberAnnotation 

-968   AnnotationName ::= AT UnannotatableNameOrAj 

-969   NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt RPAREN 

-970   MemberValuePairsopt ::= 

-971   MemberValuePairsopt -> MemberValuePairs 

-972   MemberValuePairs -> MemberValuePair 

-973   MemberValuePairs ::= MemberValuePairs COMMA MemberValuePair 

-974   MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                          ExitMemberValue 

-975   EnterMemberValue ::= 

-976   ExitMemberValue ::= 

-977   MemberValue -> ConditionalExpression_NotName 

-978   MemberValue ::= NameOrAj 

-979   MemberValue -> Annotation 

-980   MemberValue -> MemberValueArrayInitializer 

-981   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace MemberValues COMMA RBRACE 

-982   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace MemberValues RBRACE 

-983   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace COMMA RBRACE 

-984   MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                      PushLeftBrace RBRACE 

-985   EnterMemberValueArrayInitializer ::= 

-986   MemberValues -> MemberValue 

-987   MemberValues ::= MemberValues COMMA MemberValue 

-988   MarkerAnnotation ::= AnnotationName 

-989   SingleMemberAnnotationMemberValue ::= MemberValue 

-990   SingleMemberAnnotation ::= AnnotationName LPAREN 

-                                 SingleMemberAnnotationMemberValue RPAREN 

-991   RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-992   RecoveryMethodHeaderName ::= Modifiersopt Type JavaIdentifierNoAround 

-                                   LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 30

-

-

-993   RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                                   JavaIdentifierNoAround LPAREN 

-994   RecoveryMethodHeaderName ::= ModifiersWithDefault Type 

-                                   JavaIdentifierNoAround LPAREN 

-995   RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               AnnotationMethodHeaderDefaultValueopt 

-996   RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                               MethodHeaderRightParen MethodHeaderExtendedDims 

-                               MethodHeaderThrowsClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 31

-

-*** The following Terminals are useless: 

-

-

-        const  goto  

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 32

-

-*** The following Non-Terminal is useless: InterTypeClassHeaderName1 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 33

-

-

-

-Cross-reference table:

-

-

-$error  ==>> 

-

-,opt  ==>> 760 761 

-

-;opt  ==>> 564 565 

-

-AND  ==>> 14 308 726 866 874 924 925 

-

-AND_AND  ==>> 9 295 732 933 934 

-

-AND_EQUAL  ==>> 751 

-

-ARROW  ==>> 21 611 

-

-AT  ==>> 24 280 301 944 945 946 947 968 

-

-AT308  ==>> 100 

-

-AT308DOTDOTDOT  ==>> 408 

-

-AbstractInterTypeMethodDeclaration  ==>> 255 

-

-AbstractMethodDeclaration  ==>> 389 

-

-AbstractMethodDeclarationNoAround  ==>> 217 

-

-AdditionalBound  ==>> 866 

-

-AdditionalBound1  ==>> 874 

-

-AdditionalBoundList  ==>> 864 865 

-

-AdditionalBoundList1  ==>> 872 873 

-

-AdditionalBoundsListOpt  ==>> 695 696 

-

-AdditiveExpression  ==>> 708 709 710 

-

-AdditiveExpression_NotName  ==>> 894 895 896 897 898 

-

-AfterAdviceHeader  ==>> 234 

-

-AfterAdviceHeaderName  ==>> 236 

-

-AjName  ==>> 71 72 

-

-AjQualifiedName  ==>> 81 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 34

-

-

-

-AjSimpleName  ==>> 73 77 

-

-AjSimpleNameNoAround  ==>> 74 75 76 78 79 80 

-

-AllocationHeader  ==>> 624 

-

-AndExpression  ==>> 725 726 

-

-AndExpression_NotName  ==>> 923 924 925 

-

-Annotation  ==>> 965 966 967 

-

-AnnotationMethodHeader  ==>> 959 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> 957 958 

-

-AnnotationMethodHeaderName  ==>> 955 956 

-

-AnnotationName  ==>> 968 

-

-AnnotationTypeBody  ==>> 950 

-

-AnnotationTypeDeclaration  ==>> 949 

-

-AnnotationTypeDeclarationHeader  ==>> 948 

-

-AnnotationTypeDeclarationHeaderName  ==>> 944 945 946 947 

-

-AnnotationTypeMemberDeclaration  ==>> 960 961 962 963 

-

-AnnotationTypeMemberDeclarations  ==>> 953 954 

-

-AnnotationTypeMemberDeclarationsopt  ==>> 951 952 

-

-Annotations  ==>> 278 279 

-

-ArgumentList  ==>> 639 640 

-

-ArgumentListopt  ==>> 770 771 

-

-Arguments  ==>> 803 

-

-Argumentsopt  ==>> 804 805 

-

-AroundDeclaration  ==>> 226 

-

-AroundHeader  ==>> 227 

-

-AroundHeaderName  ==>> 228 229 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 35

-

-

-ArrayAccess  ==>> 667 668 669 670 

-

-ArrayCreationHeader  ==>> 641 642 

-

-ArrayCreationWithArrayInitializer  ==>> 644 646 

-

-ArrayCreationWithoutArrayInitializer  ==>> 643 645 

-

-ArrayInitializer  ==>> 461 462 463 

-

-ArrayType  ==>> 62 63 64 65 

-

-ArrayTypeWithTypeArgumentsName  ==>> 61 

-

-AspectBody  ==>> 195 

-

-AspectBodyDeclaration  ==>> 200 224 225 243 244 245 272 

-

-AspectBodyDeclarations  ==>> 196 197 

-

-AspectBodyDeclarationsopt  ==>> 198 199 

-

-AspectDeclaration  ==>> 184 

-

-AspectHeader  ==>> 185 

-

-AspectHeaderName  ==>> 186 187 188 189 

-

-AspectHeaderName1  ==>> 190 

-

-AspectHeaderName2  ==>> 191 

-

-AspectHeaderRest  ==>> 192 193 

-

-AspectHeaderRestStart  ==>> 194 

-

-AssertStatement  ==>> 549 550 

-

-Assignment  ==>> 739 741 

-

-AssignmentExpression  ==>> 737 738 

-

-AssignmentExpression_NotName  ==>> 941 942 

-

-AssignmentOperator  ==>> 742 743 744 745 746 747 748 749 750 751 752 753 

-

-BasicAdviceDeclaration  ==>> 230 

-

-BasicAdviceHeader  ==>> 231 232 

-

-BeforeAdviceHeader  ==>> 233 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 36

-

-

-

-BeforeAdviceHeaderName  ==>> 235 

-

-BeginIntersectionCast  ==>> 693 

-

-BeginLambda  ==>> 614 

-

-BeginTypeArguments  ==>> 603 

-

-Block  ==>> 466 

-

-BlockStatement  ==>> 473 474 475 476 477 478 

-

-BlockStatementopt  ==>> 470 

-

-BlockStatementopt0  ==>> 471 472 

-

-BlockStatements  ==>> 468 469 

-

-BlockStatementsopt  ==>> 766 767 

-

-BooleanLiteral  ==>> 33 34 

-

-BreakStatement  ==>> 551 552 

-

-COLON  ==>> 222 227 233 234 274 275 276 277 280 287 512 513 537 538 550 736 813 

-            939 940 

-

-COLON_COLON  ==>> 601 602 603 604 605 606 

-

-COMMA  ==>> 298 352 375 405 414 463 465 548 619 640 761 794 795 798 821 823 831 

-            837 860 868 973 981 983 987 

-

-CastExpression  ==>> 689 690 691 692 693 694 

-

-CastNameAndBounds  ==>> 698 

-

-CatchClause  ==>> 575 

-

-CatchFormalParameter  ==>> 409 

-

-CatchHeader  ==>> 135 

-

-CatchType  ==>> 410 

-

-Catches  ==>> 573 574 

-

-Catchesopt  ==>> 787 788 

-

-CharacterLiteral  ==>> 29 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 37

-

-

-ClassBody  ==>> 354 

-

-ClassBodyDeclaration  ==>> 357 358 359 360 

-

-ClassBodyDeclarationNoAroundMethod  ==>> 201 202 203 204 

-

-ClassBodyDeclarations  ==>> 355 356 

-

-ClassBodyDeclarationsopt  ==>> 762 763 

-

-ClassDeclaration  ==>> 338 

-

-ClassHeader  ==>> 345 

-

-ClassHeaderExtends  ==>> 349 

-

-ClassHeaderExtendsopt  ==>> 755 756 

-

-ClassHeaderImplements  ==>> 350 

-

-ClassHeaderImplementsopt  ==>> 776 777 

-

-ClassHeaderName  ==>> 346 347 

-

-ClassHeaderName1  ==>> 348 

-

-ClassInstanceCreationExpression  ==>> 625 626 627 628 629 630 

-

-ClassInstanceCreationExpressionName  ==>> 632 

-

-ClassMemberDeclaration  ==>> 180 182 364 365 366 367 368 369 370 

-

-ClassMemberDeclarationNoAroundMethod  ==>> 205 206 207 208 209 210 211 212 213 

-                                           214 

-

-ClassOrInterface  ==>> 57 58 

-

-ClassOrInterfaceType  ==>> 55 56 

-

-ClassType  ==>> 66 

-

-ClassTypeElt  ==>> 415 

-

-ClassTypeList  ==>> 413 414 

-

-ColonPseudoToken  ==>> 287 

-

-CompilationUnit  ==>> 109 

-

-ConditionalAndExpression  ==>> 731 732 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 38

-

-

-ConditionalAndExpression_NotName  ==>> 932 933 934 

-

-ConditionalExpression  ==>> 735 736 

-

-ConditionalExpression_NotName  ==>> 938 939 940 

-

-ConditionalOrExpression  ==>> 733 734 

-

-ConditionalOrExpression_NotName  ==>> 935 936 937 

-

-ConstantDeclaration  ==>> 459 

-

-ConstantExpression  ==>> 759 

-

-ConstructorDeclaration  ==>> 420 421 

-

-ConstructorHeader  ==>> 400 

-

-ConstructorHeaderName  ==>> 401 402 403 

-

-ContinueStatement  ==>> 553 554 

-

-CreateInitializer  ==>> 363 

-

-DIVIDE  ==>> 13 706 890 891 

-

-DIVIDE_EQUAL  ==>> 744 

-

-DOT  ==>> 58 61 81 89 90 91 107 151 242 249 250 250 251 252 253 254 259 260 260 

-          261 262 263 264 266 267 267 268 269 291 343 344 426 427 428 429 430 

-          431 432 433 588 589 590 591 592 593 600 627 628 632 656 657 658 660 

-          661 662 663 664 665 666 691 817 

-

-DeclareAnnotationHeader  ==>> 280 

-

-DeclareDeclaration  ==>> 273 275 276 277 

-

-DeclareHeader  ==>> 274 

-

-DefaultMethodHeader  ==>> 391 

-

-DefaultMethodHeaderName  ==>> 394 395 

-

-DefaultValue  ==>> 964 

-

-Diet  ==>> 361 

-

-DimWithOrWithOutExpr  ==>> 649 650 

-

-DimWithOrWithOutExprs  ==>> 647 648 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 39

-

-

-Dims  ==>> 651 

-

-DimsLoop  ==>> 652 653 

-

-Dimsopt  ==>> 768 769 

-

-DoStatement  ==>> 541 

-

-DoubleLiteral  ==>> 28 

-

-ELLIPSIS  ==>> 302 407 408 

-

-EQUAL  ==>> 271 294 377 569 570 742 974 

-

-EQUAL_EQUAL  ==>> 723 919 920 

-

-ElidedLeftBraceAndReturn  ==>> 623 

-

-ElidedSemicolonAndRightBrace  ==>> 621 

-

-EmptyStatement  ==>> 511 

-

-EnhancedForStatement  ==>> 809 

-

-EnhancedForStatementHeader  ==>> 813 

-

-EnhancedForStatementHeaderInit  ==>> 811 812 

-

-EnhancedForStatementNoShortIf  ==>> 810 

-

-EnterCompilationUnit  ==>> 119 

-

-EnterInstanceCreationArgumentList  ==>> 631 

-

-EnterMemberValue  ==>> 975 

-

-EnterMemberValueArrayInitializer  ==>> 985 

-

-EnterVariable  ==>> 378 

-

-EnumBody  ==>> 793 794 795 796 

-

-EnumBodyDeclarationsopt  ==>> 807 808 

-

-EnumConstant  ==>> 801 802 

-

-EnumConstantHeader  ==>> 800 

-

-EnumConstantHeaderName  ==>> 799 

-

-EnumConstants  ==>> 797 798 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 40

-

-

-

-EnumDeclaration  ==>> 789 

-

-EnumDeclarations  ==>> 806 

-

-EnumHeader  ==>> 790 

-

-EnumHeaderName  ==>> 791 792 

-

-EqualityExpression  ==>> 722 723 724 

-

-EqualityExpression_NotName  ==>> 918 919 920 921 922 

-

-ExclusiveOrExpression  ==>> 727 728 

-

-ExclusiveOrExpression_NotName  ==>> 926 927 928 

-

-ExitMemberValue  ==>> 976 

-

-ExitTryBlock  ==>> 572 

-

-ExitVariableWithInitialization  ==>> 379 

-

-ExitVariableWithoutInitialization  ==>> 380 

-

-ExplicitConstructorInvocation  ==>> 422 423 424 425 426 427 428 429 430 431 432 

-                                    433 

-

-Expression  ==>> 754 

-

-ExpressionStatement  ==>> 515 516 

-

-Expression_NotName  ==>> 943 

-

-Expressionopt  ==>> 757 758 

-

-ExtraParamopt  ==>> 237 238 239 240 

-

-FieldAccess  ==>> 656 657 658 

-

-FieldDeclaration  ==>> 373 

-

-Finally  ==>> 576 

-

-FloatingPointLiteral  ==>> 27 

-

-FloatingPointType  ==>> 51 52 

-

-ForInit  ==>> 544 545 

-

-ForInitopt  ==>> 781 782 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 41

-

-

-

-ForStatement  ==>> 542 

-

-ForStatementNoShortIf  ==>> 543 

-

-ForUpdate  ==>> 546 

-

-ForUpdateopt  ==>> 783 784 

-

-ForceNoDiet  ==>> 381 

-

-FormalParameter  ==>> 406 407 408 

-

-FormalParameterList  ==>> 404 405 

-

-FormalParameterListopt  ==>> 774 775 

-

-GREATER  ==>> 60 305 717 828 845 869 909 910 

-

-GREATER_EQUAL  ==>> 719 913 914 

-

-GenericMethodDeclaration  ==>> 371 372 

-

-GenericType  ==>> 59 60 

-

-Goal  ==>> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 

-

-Header  ==>> 120 121 122 123 124 125 126 127 128 129 130 172 173 174 175 176 177 

-             179 

-

-Header1  ==>> 131 132 

-

-Header2  ==>> 133 134 

-

-Identifier  ==>> 35 37 87 190 191 194 237 238 239 274 280 394 395 401 402 552 

-                 554 604 605 606 609 613 620 658 799 

-

-IdentifierOrNew  ==>> 609 610 

-

-IfThenElseStatement  ==>> 525 

-

-IfThenElseStatementNoShortIf  ==>> 526 

-

-IfThenStatement  ==>> 524 

-

-ImportDeclaration  ==>> 144 145 146 147 

-

-ImportDeclarations  ==>> 136 137 

-

-InclusiveOrExpression  ==>> 729 730 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 42

-

-

-InclusiveOrExpression_NotName  ==>> 929 930 931 

-

-Initializer  ==>> 362 

-

-InsideCastExpression  ==>> 700 

-

-InsideCastExpressionLL1  ==>> 701 

-

-InsideCastExpressionLL1WithBounds  ==>> 702 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> 703 

-

-InstanceofExpression  ==>> 720 721 

-

-InstanceofExpression_NotName  ==>> 915 916 917 

-

-IntegerLiteral  ==>> 25 

-

-IntegralType  ==>> 46 47 48 49 50 

-

-InterTypeClassHeaderName1  ==>> 344 

-

-InterTypeConstructorDeclaration  ==>> 257 

-

-InterTypeConstructorHeader  ==>> 258 

-

-InterTypeConstructorHeaderName  ==>> 259 260 261 262 263 264 

-

-InterTypeFieldBody  ==>> 270 271 

-

-InterTypeFieldDeclaration  ==>> 265 

-

-InterTypeFieldHeader  ==>> 266 267 268 269 

-

-InterTypeMethodDeclaration  ==>> 246 247 

-

-InterTypeMethodHeader  ==>> 248 

-

-InterTypeMethodHeaderName  ==>> 249 250 251 252 253 254 

-

-InterfaceBody  ==>> 440 

-

-InterfaceDeclaration  ==>> 434 

-

-InterfaceHeader  ==>> 435 

-

-InterfaceHeaderExtends  ==>> 439 

-

-InterfaceHeaderExtendsopt  ==>> 785 786 

-

-InterfaceHeaderName  ==>> 436 437 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 43

-

-

-

-InterfaceHeaderName1  ==>> 438 

-

-InterfaceMemberDeclaration  ==>> 181 183 443 444 445 446 447 452 453 454 455 456 

-                                 457 458 

-

-InterfaceMemberDeclarations  ==>> 441 442 

-

-InterfaceMemberDeclarationsopt  ==>> 778 779 

-

-InterfaceType  ==>> 353 

-

-InterfaceTypeList  ==>> 351 352 

-

-InternalCompilationUnit  ==>> 110 111 112 113 114 115 116 117 

-

-IntertypeClassDeclaration  ==>> 339 

-

-IntertypeClassHeader  ==>> 340 

-

-IntertypeClassHeaderName  ==>> 341 342 

-

-IntertypeClassHeaderName1  ==>> 343 

-

-InvalidArrayInitializerAssignement  ==>> 740 

-

-InvalidConstructorDeclaration  ==>> 448 449 

-

-InvalidInitializer  ==>> 450 451 

-

-JavaIdentifier  ==>> 35 36 

-

-JavaIdentifierNoAround  ==>> 37 38 

-

-LBRACE  ==>> 18 135 195 354 416 440 461 462 463 466 528 529 530 531 793 794 795 

-             796 950 981 982 983 984 

-

-LBRACKET  ==>> 299 649 650 654 655 667 668 669 670 

-

-LEFT_SHIFT  ==>> 712 900 901 

-

-LEFT_SHIFT_EQUAL  ==>> 748 

-

-LESS  ==>> 23 60 304 716 818 819 829 835 858 907 908 

-

-LESS_EQUAL  ==>> 718 911 912 

-

-LPAREN  ==>> 22 101 103 135 219 220 223 228 229 235 236 237 238 249 250 251 252 

-             253 254 259 260 261 262 263 264 289 316 392 393 394 395 401 402 403 

-             422 423 424 425 426 427 428 429 430 431 432 433 524 525 526 527 539 

-             540 541 542 543 557 563 575 577 624 625 626 627 628 629 630 659 660 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 44

-

-

-             661 662 663 664 665 666 697 803 811 812 955 956 969 990 991 992 993 

-             994 

-

-Label  ==>> 514 

-

-LabeledStatement  ==>> 512 

-

-LabeledStatementNoShortIf  ==>> 513 

-

-LambdaBody  ==>> 621 622 

-

-LambdaExpression  ==>> 611 

-

-LambdaParameterList  ==>> 616 617 

-

-LambdaParameters  ==>> 613 614 

-

-Literal  ==>> 25 26 27 28 29 30 31 32 

-

-LocalVariableDeclaration  ==>> 480 481 

-

-LocalVariableDeclarationStatement  ==>> 479 

-

-LongLiteral  ==>> 26 

-

-MINUS  ==>> 277 681 710 881 897 898 

-

-MINUS_EQUAL  ==>> 747 

-

-MINUS_MINUS  ==>> 2 676 684 

-

-MULTIPLY  ==>> 7 8 151 250 260 267 292 705 817 888 889 

-

-MULTIPLY_EQUAL  ==>> 743 

-

-MarkerAnnotation  ==>> 988 

-

-MarkerTypeAnnotation  ==>> 102 

-

-MemberValue  ==>> 977 978 979 980 

-

-MemberValueArrayInitializer  ==>> 981 982 983 984 

-

-MemberValuePair  ==>> 974 

-

-MemberValuePairs  ==>> 972 973 

-

-MemberValuePairsopt  ==>> 970 971 

-

-MemberValues  ==>> 986 987 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 45

-

-

-MethodBody  ==>> 416 

-

-MethodDeclaration  ==>> 386 387 388 

-

-MethodDeclarationNoAround  ==>> 215 216 

-

-MethodHeader  ==>> 390 

-

-MethodHeaderExtendedDims  ==>> 398 

-

-MethodHeaderName  ==>> 392 393 

-

-MethodHeaderNameNoAround  ==>> 219 220 

-

-MethodHeaderNoAround  ==>> 218 

-

-MethodHeaderRightParen  ==>> 397 

-

-MethodHeaderThrowsClause  ==>> 399 

-

-MethodHeaderThrowsClauseopt  ==>> 772 773 

-

-MethodInvocation  ==>> 659 660 661 662 663 664 665 666 

-

-Modifier  ==>> 170 171 

-

-Modifiers  ==>> 157 158 

-

-ModifiersWithDefault  ==>> 396 

-

-Modifiersopt  ==>> 764 765 

-

-MultiplicativeExpression  ==>> 704 705 706 707 

-

-MultiplicativeExpression_NotName  ==>> 887 888 889 890 891 892 893 

-

-NOT  ==>> 6 297 687 885 

-

-NOT_EQUAL  ==>> 309 724 921 922 

-

-Name  ==>> 84 85 86 

-

-NameOrAj  ==>> 67 68 

-

-NestedLambda  ==>> 612 

-

-NestedMethod  ==>> 417 

-

-NestedType  ==>> 780 

-

-NonWildTypeArgumentsopt  ==>> 607 608 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 46

-

-

-

-NormalAnnotation  ==>> 969 

-

-NormalTypeAnnotation  ==>> 101 

-

-NumericType  ==>> 42 43 

-

-OR  ==>> 412 730 930 931 

-

-OR_EQUAL  ==>> 753 

-

-OR_OR  ==>> 10 19 296 734 936 937 

-

-OnType  ==>> 241 242 

-

-OneDimLoop  ==>> 654 655 

-

-OnlySynchronized  ==>> 558 

-

-OnlyTypeArguments  ==>> 819 

-

-OnlyTypeArgumentsForCastExpression  ==>> 699 

-

-OpenBlock  ==>> 467 

-

-PLUS  ==>> 12 251 261 268 276 293 680 709 880 895 896 

-

-PLUS_EQUAL  ==>> 746 

-

-PLUS_PLUS  ==>> 1 675 683 

-

-PackageComment  ==>> 143 

-

-PackageDeclaration  ==>> 140 

-

-PackageDeclarationName  ==>> 141 142 

-

-ParenthesizedCastNameAndBounds  ==>> 697 

-

-ParenthesizedLambdaParameterList  ==>> 615 

-

-PointcutDeclaration  ==>> 221 222 

-

-PointcutHeader  ==>> 223 

-

-PostDecrementExpression  ==>> 676 

-

-PostIncrementExpression  ==>> 675 

-

-PostfixExpression  ==>> 671 672 673 674 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 47

-

-

-PostfixExpression_NotName  ==>> 875 876 877 

-

-PreDecrementExpression  ==>> 684 

-

-PreIncrementExpression  ==>> 683 

-

-Primary  ==>> 579 580 581 

-

-PrimaryNoNewArray  ==>> 582 583 584 585 586 587 588 590 591 592 593 594 595 596 

-                        597 

-

-PrimitiveType  ==>> 41 44 45 

-

-PseudoToken  ==>> 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 

-                  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 

-                  318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 

-                  333 334 335 336 337 

-

-PseudoTokens  ==>> 281 282 283 284 

-

-PseudoTokensNoColon  ==>> 285 286 

-

-PushLPAREN  ==>> 577 

-

-PushLeftBrace  ==>> 460 

-

-PushModifiers  ==>> 482 

-

-PushModifiersForHeader  ==>> 483 

-

-PushPosition  ==>> 677 

-

-PushRPAREN  ==>> 578 

-

-PushRealModifiers  ==>> 484 

-

-PushZeroTypeAnnotations  ==>> 105 

-

-QUESTION  ==>> 11 20 303 736 841 842 845 846 849 850 853 854 939 940 

-

-QualifiedClassBodyopt  ==>> 636 637 

-

-QualifiedEnterAnonymousClassBody  ==>> 638 

-

-QualifiedName  ==>> 90 91 

-

-QualifiedSuperReceiver  ==>> 589 

-

-RBRACE  ==>> 195 354 416 440 461 462 463 466 528 529 530 531 793 794 795 796 950 

-             981 982 983 984 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 48

-

-

-RBRACKET  ==>> 300 649 650 654 655 667 668 669 670 

-

-REMAINDER  ==>> 15 16 707 892 893 

-

-REMAINDER_EQUAL  ==>> 745 

-

-RIGHT_SHIFT  ==>> 3 4 306 713 834 849 902 903 

-

-RIGHT_SHIFT_EQUAL  ==>> 749 

-

-RPAREN  ==>> 101 103 135 237 238 290 316 397 422 423 424 425 426 427 428 429 430 

-             431 432 433 524 525 526 527 539 540 541 542 543 557 563 575 578 624 

-             625 626 627 628 629 630 659 660 661 662 663 664 665 666 697 803 813 

-             969 990 

-

-RecoveryMethodHeader  ==>> 995 996 

-

-RecoveryMethodHeaderName  ==>> 991 992 993 994 

-

-ReduceImports  ==>> 118 

-

-ReferenceExpression  ==>> 601 602 603 604 605 606 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> 598 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> 599 600 

-

-ReferenceType  ==>> 53 54 

-

-ReferenceType1  ==>> 828 829 

-

-ReferenceType2  ==>> 834 835 

-

-ReferenceType3  ==>> 840 

-

-RejectTypeAnnotations  ==>> 104 

-

-RelationalExpression  ==>> 715 716 717 718 719 

-

-RelationalExpression_NotName  ==>> 906 907 908 909 910 911 912 913 914 

-

-Resource  ==>> 569 570 

-

-ResourceSpecification  ==>> 563 

-

-Resources  ==>> 566 567 

-

-RestoreDiet  ==>> 382 

-

-ReturnStatement  ==>> 555 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 49

-

-

-SEMICOLON  ==>> 140 148 150 154 214 217 221 222 255 265 273 275 276 277 370 373 

-                389 421 422 423 424 425 426 427 428 429 430 431 432 433 443 447 

-                449 479 511 515 541 542 542 543 543 549 550 551 552 553 554 555 

-                556 565 568 806 814 816 960 

-

-ShiftExpression  ==>> 711 712 713 714 

-

-ShiftExpression_NotName  ==>> 899 900 901 902 903 904 905 

-

-SimpleModifier  ==>> 159 160 161 162 163 164 165 166 167 168 169 

-

-SimpleName  ==>> 87 

-

-SimpleNameOrAj  ==>> 69 70 

-

-SingleMemberAnnotation  ==>> 990 

-

-SingleMemberAnnotationMemberValue  ==>> 989 

-

-SingleMemberTypeAnnotation  ==>> 103 

-

-SingleStaticImportDeclaration  ==>> 814 

-

-SingleStaticImportDeclarationName  ==>> 815 

-

-SingleTypeImportDeclaration  ==>> 148 

-

-SingleTypeImportDeclarationName  ==>> 149 

-

-Statement  ==>> 485 486 487 488 489 490 491 

-

-StatementExpression  ==>> 517 518 519 520 521 522 523 

-

-StatementExpressionList  ==>> 547 548 

-

-StatementNoShortIf  ==>> 492 493 494 495 496 497 

-

-StatementWithoutTrailingSubstatement  ==>> 498 499 500 501 502 503 504 505 506 

-                                           507 508 509 510 

-

-StaticImportOnDemandDeclaration  ==>> 816 

-

-StaticImportOnDemandDeclarationName  ==>> 817 

-

-StaticInitializer  ==>> 418 

-

-StaticOnly  ==>> 419 

-

-StringLiteral  ==>> 30 

-

-SwitchBlock  ==>> 528 529 530 531 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 50

-

-

-

-SwitchBlockStatement  ==>> 534 

-

-SwitchBlockStatements  ==>> 532 533 

-

-SwitchLabel  ==>> 537 538 

-

-SwitchLabels  ==>> 535 536 

-

-SwitchStatement  ==>> 527 

-

-SynchronizedStatement  ==>> 557 

-

-TWIDDLE  ==>> 17 686 884 

-

-ThrowStatement  ==>> 556 

-

-TrailingSemiColon  ==>> 568 

-

-TryBlock  ==>> 571 

-

-TryStatement  ==>> 559 560 

-

-TryStatementWithResources  ==>> 561 562 

-

-Type  ==>> 39 40 

-

-TypeAnnotation  ==>> 97 98 99 

-

-TypeAnnotationName  ==>> 100 

-

-TypeAnnotations  ==>> 94 

-

-TypeAnnotations0  ==>> 95 96 

-

-TypeAnnotationsopt  ==>> 92 93 

-

-TypeArgument  ==>> 824 825 

-

-TypeArgument1  ==>> 826 827 

-

-TypeArgument2  ==>> 832 833 

-

-TypeArgument3  ==>> 838 839 

-

-TypeArgumentList  ==>> 822 823 

-

-TypeArgumentList1  ==>> 820 821 

-

-TypeArgumentList2  ==>> 830 831 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 51

-

-

-TypeArgumentList3  ==>> 836 837 

-

-TypeArguments  ==>> 818 

-

-TypeDeclaration  ==>> 152 153 154 155 156 178 

-

-TypeDeclarations  ==>> 138 139 

-

-TypeElidedFormalParameter  ==>> 620 

-

-TypeElidedFormalParameterList  ==>> 618 619 

-

-TypeImportOnDemandDeclaration  ==>> 150 

-

-TypeImportOnDemandDeclarationName  ==>> 151 

-

-TypeParameter  ==>> 861 862 863 

-

-TypeParameter1  ==>> 869 870 871 

-

-TypeParameterHeader  ==>> 857 

-

-TypeParameterList  ==>> 859 860 

-

-TypeParameterList1  ==>> 867 868 

-

-TypeParameters  ==>> 858 

-

-TypeParametersAsReference  ==>> 256 

-

-UNSIGNED_RIGHT_SHIFT  ==>> 5 307 714 840 853 904 905 

-

-UNSIGNED_RIGHT_SHIFT_EQUAL  ==>> 750 

-

-UnannotatableName  ==>> 88 89 

-

-UnannotatableNameOrAj  ==>> 82 83 

-

-UnaryExpression  ==>> 678 679 680 681 682 

-

-UnaryExpressionNotPlusMinus  ==>> 685 686 687 688 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> 883 884 885 886 

-

-UnaryExpression_NotName  ==>> 878 879 880 881 882 

-

-UnionType  ==>> 411 412 

-

-UnqualifiedClassBodyopt  ==>> 633 634 

-

-UnqualifiedEnterAnonymousClassBody  ==>> 635 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 52

-

-

-

-VariableDeclarator  ==>> 376 377 

-

-VariableDeclaratorId  ==>> 383 

-

-VariableDeclaratorIdOrThis  ==>> 106 107 108 

-

-VariableDeclarators  ==>> 374 375 

-

-VariableInitializer  ==>> 384 385 

-

-VariableInitializers  ==>> 464 465 

-

-WhileStatement  ==>> 539 

-

-WhileStatementNoShortIf  ==>> 540 

-

-Wildcard  ==>> 841 842 

-

-Wildcard1  ==>> 845 846 

-

-Wildcard2  ==>> 849 850 

-

-Wildcard3  ==>> 853 854 

-

-WildcardBounds  ==>> 843 844 

-

-WildcardBounds1  ==>> 847 848 

-

-WildcardBounds2  ==>> 851 852 

-

-WildcardBounds3  ==>> 855 856 

-

-XOR  ==>> 728 927 928 

-

-XOR_EQUAL  ==>> 752 

-

-abstract  ==>> 163 

-

-after  ==>> 79 236 

-

-around  ==>> 77 228 229 

-

-aspect  ==>> 74 190 191 403 

-

-assert  ==>> 317 549 550 

-

-before  ==>> 78 235 

-

-boolean  ==>> 44 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 53

-

-

-break  ==>> 327 551 552 

-

-byte  ==>> 46 

-

-case  ==>> 330 537 

-

-catch  ==>> 135 331 575 

-

-char  ==>> 50 

-

-class  ==>> 314 343 344 348 590 591 592 593 

-

-const  ==>> 

-

-continue  ==>> 328 553 554 

-

-declare  ==>> 80 274 280 

-

-default  ==>> 396 538 964 

-

-do  ==>> 322 541 

-

-double  ==>> 52 

-

-else  ==>> 333 525 526 

-

-enum  ==>> 791 792 

-

-extends  ==>> 334 349 439 843 847 851 855 862 863 870 871 

-

-false  ==>> 34 

-

-final  ==>> 164 

-

-finally  ==>> 335 576 

-

-float  ==>> 51 

-

-for  ==>> 323 542 543 811 812 

-

-goto  ==>> 

-

-if  ==>> 316 524 525 526 

-

-implements  ==>> 336 350 

-

-import  ==>> 149 151 318 815 817 

-

-instanceof  ==>> 332 721 916 917 

-

-int  ==>> 48 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 54

-

-

-

-interface  ==>> 438 944 945 946 947 

-

-long  ==>> 49 

-

-native  ==>> 165 

-

-new  ==>> 259 260 261 262 263 264 321 610 624 625 626 627 628 632 641 642 643 

-          644 645 646 

-

-null  ==>> 31 

-

-package  ==>> 141 142 319 

-

-pointcut  ==>> 76 223 

-

-private  ==>> 161 

-

-privileged  ==>> 75 191 

-

-protected  ==>> 160 

-

-public  ==>> 159 

-

-return  ==>> 329 555 

-

-short  ==>> 47 

-

-static  ==>> 162 419 815 817 

-

-strictfp  ==>> 169 

-

-super  ==>> 315 424 425 426 427 428 429 589 606 657 665 666 844 848 852 856 

-

-switch  ==>> 324 527 

-

-synchronized  ==>> 166 558 

-

-this  ==>> 106 107 313 422 423 430 431 432 433 583 588 

-

-throw  ==>> 320 556 

-

-throws  ==>> 337 399 

-

-transient  ==>> 167 

-

-true  ==>> 33 

-

-try  ==>> 325 559 560 561 562 

-

-void  ==>> 45 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 55

-

-

-

-volatile  ==>> 168 

-

-while  ==>> 326 539 540 541 

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 56

-

-

-First map for non-terminals:

-

-

-$acc  ==>> PLUS_PLUS MINUS_MINUS RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT REMAINDER AND MULTIPLY TWIDDLE DIVIDE LESS LPAREN LBRACE QUESTION 

-    AT ARROW 

-

-Goal  ==>> PLUS_PLUS MINUS_MINUS RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT REMAINDER AND MULTIPLY TWIDDLE DIVIDE LESS LPAREN LBRACE QUESTION 

-    AT ARROW 

-

-CompilationUnit  ==>> $empty abstract class enum final import interface native 

-    package private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT 

-

-MethodBody  ==>> LBRACE 

-

-StaticInitializer  ==>> static 

-

-Initializer  ==>> LBRACE 

-

-Header1  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-Modifiersopt  ==>> $empty abstract final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-Header2  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-BlockStatements  ==>> Identifier abstract assert boolean break byte char class 

-    continue do double enum false final float for if int interface long native 

-    new null private protected public return short static strictfp super switch 

-    synchronized this throw transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT BeginLambda AT308 

-

-CatchHeader  ==>> catch 

-

-FieldDeclaration  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-ImportDeclaration  ==>> import 

-

-PackageDeclaration  ==>> abstract final native package private protected public 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 57

-

-

-    static strictfp synchronized transient volatile AT 

-

-TypeDeclaration  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT 

-

-GenericMethodDeclaration  ==>> Identifier abstract boolean byte char default 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile aspect LESS AT AT308 

-

-ClassBodyDeclarations  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE SEMICOLON AT AT308 

-

-Expression  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ArrayInitializer  ==>> LBRACE 

-

-BlockStatementsopt  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-BlockStatementopt  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-MemberValue  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-AnnotationTypeMemberDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS SEMICOLON AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 58

-

-

-ParenthesizedLambdaParameterList  ==>> LPAREN 

-

-ParenthesizedCastNameAndBounds  ==>> LPAREN 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> LESS 

-

-TypeAnnotations  ==>> AT308 

-

-Literal  ==>> false null true IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral 

-

-BooleanLiteral  ==>> false true 

-

-JavaIdentifier  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-AjSimpleName  ==>> aspect pointcut around before after declare privileged 

-

-JavaIdentifierNoAround  ==>> Identifier aspect pointcut before after declare 

-    privileged 

-

-AjSimpleNameNoAround  ==>> aspect pointcut before after declare privileged 

-

-Type  ==>> Identifier boolean byte char double float int long short void AT308 

-

-PrimitiveType  ==>> boolean byte char double float int long short void AT308 

-

-ReferenceType  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-TypeAnnotationsopt  ==>> $empty AT308 

-

-NumericType  ==>> byte char double float int long short 

-

-IntegralType  ==>> byte char int long short 

-

-FloatingPointType  ==>> double float 

-

-ClassOrInterfaceType  ==>> Identifier AT308 

-

-ArrayType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-ClassOrInterface  ==>> Identifier AT308 

-

-GenericType  ==>> Identifier AT308 

-

-Name  ==>> Identifier AT308 

-

-TypeArguments  ==>> LESS 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 59

-

-

-ArrayTypeWithTypeArgumentsName  ==>> Identifier AT308 

-

-Dims  ==>> LBRACKET AT308 

-

-ClassType  ==>> Identifier AT308 

-

-NameOrAj  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AjName  ==>> aspect pointcut around before after declare privileged 

-

-SimpleNameOrAj  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-SimpleName  ==>> Identifier 

-

-AjQualifiedName  ==>> aspect pointcut around before after declare privileged 

-

-UnannotatableNameOrAj  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-UnannotatableName  ==>> Identifier 

-

-QualifiedName  ==>> Identifier AT308 

-

-TypeAnnotations0  ==>> AT308 

-

-TypeAnnotation  ==>> AT308 

-

-NormalTypeAnnotation  ==>> AT308 

-

-MarkerTypeAnnotation  ==>> AT308 

-

-SingleMemberTypeAnnotation  ==>> AT308 

-

-TypeAnnotationName  ==>> AT308 

-

-MemberValuePairsopt  ==>> $empty Identifier aspect pointcut around before after 

-    declare privileged 

-

-SingleMemberAnnotationMemberValue  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN LBRACE AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-RejectTypeAnnotations  ==>> $empty 

-

-PushZeroTypeAnnotations  ==>> $empty 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 60

-

-

-VariableDeclaratorIdOrThis  ==>> Identifier this aspect pointcut around before 

-    after declare privileged 

-

-VariableDeclaratorId  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-EnterCompilationUnit  ==>> $empty 

-

-InternalCompilationUnit  ==>> $empty abstract class enum final import interface 

-    native package private protected public static strictfp synchronized 

-    transient volatile aspect privileged SEMICOLON AT 

-

-ImportDeclarations  ==>> import 

-

-ReduceImports  ==>> $empty 

-

-TypeDeclarations  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT 

-

-Header  ==>> Identifier abstract boolean byte char class default double enum 

-    final float import int interface long native new package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS AT AT308 

-

-ClassHeader  ==>> abstract class final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-InterfaceHeader  ==>> abstract final interface native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumHeader  ==>> abstract enum final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-AnnotationTypeDeclarationHeader  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-RecoveryMethodHeader  ==>> Identifier abstract boolean byte char default double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-AllocationHeader  ==>> new 

-

-ArrayCreationHeader  ==>> new 

-

-ConstructorHeader  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-EnumConstantHeader  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 61

-

-

-CatchFormalParameter  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PackageDeclarationName  ==>> abstract final native package private protected 

-    public static strictfp synchronized transient volatile AT 

-

-Modifiers  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT 

-

-PushRealModifiers  ==>> $empty 

-

-PackageComment  ==>> $empty 

-

-SingleTypeImportDeclaration  ==>> import 

-

-TypeImportOnDemandDeclaration  ==>> import 

-

-SingleStaticImportDeclaration  ==>> import 

-

-StaticImportOnDemandDeclaration  ==>> import 

-

-SingleTypeImportDeclarationName  ==>> import 

-

-TypeImportOnDemandDeclarationName  ==>> import 

-

-ClassDeclaration  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-InterfaceDeclaration  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-EnumDeclaration  ==>> abstract enum final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-AnnotationTypeDeclaration  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-Modifier  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT 

-

-SimpleModifier  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile 

-

-Annotation  ==>> AT 

-

-DeclareDeclaration  ==>> declare 

-

-InterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 62

-

-

-InterTypeFieldDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PointcutDeclaration  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile pointcut AT 

-

-BasicAdviceDeclaration  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile before after AT 

-

-AroundDeclaration  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile around AT AT308 

-

-AspectDeclaration  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-ClassMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS SEMICOLON AT AT308 

-

-InterfaceMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-AspectHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-AspectBody  ==>> LBRACE 

-

-AspectHeaderName  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect privileged AT 

-

-ClassHeaderExtendsopt  ==>> $empty extends 

-

-ClassHeaderImplementsopt  ==>> $empty implements 

-

-AspectHeaderRest  ==>> $empty Identifier 

-

-AspectHeaderName1  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile aspect AT 

-

-AspectHeaderName2  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile privileged AT 

-

-TypeParameters  ==>> LESS 

-

-AspectHeaderRestStart  ==>> Identifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 63

-

-

-PseudoTokens  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND MULTIPLY 

-    GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COLON COMMA DOT EQUAL 

-    AT ELLIPSIS AT308 

-

-AspectBodyDeclarationsopt  ==>> $empty Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE SEMICOLON AT 

-    AT308 

-

-AspectBodyDeclarations  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut around 

-    before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-AspectBodyDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut around 

-    before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-NestedType  ==>> $empty 

-

-ClassBodyDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassMemberDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte 

-    char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect pointcut privileged LESS SEMICOLON AT AT308 

-

-ConstructorDeclaration  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-Diet  ==>> $empty 

-

-NestedMethod  ==>> $empty 

-

-CreateInitializer  ==>> $empty 

-

-Block  ==>> LBRACE 

-

-MethodDeclarationNoAround  ==>> Identifier abstract boolean byte char double 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 64

-

-

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-IntertypeClassDeclaration  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-AbstractMethodDeclarationNoAround  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-MethodHeaderNoAround  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-MethodHeaderNameNoAround  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-FormalParameterListopt  ==>> $empty Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile AT AT308 

-

-MethodHeaderRightParen  ==>> RPAREN 

-

-MethodHeaderExtendedDims  ==>> $empty LBRACKET AT308 

-

-MethodHeaderThrowsClauseopt  ==>> $empty throws 

-

-PointcutHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile pointcut AT 

-

-AroundHeader  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile around AT AT308 

-

-AroundHeaderName  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile around AT AT308 

-

-BasicAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile before after AT 

-

-BeforeAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile before AT 

-

-AfterAdviceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile after AT 

-

-BeforeAdviceHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile before AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 65

-

-

-AfterAdviceHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile after AT 

-

-ExtraParamopt  ==>> $empty Identifier 

-

-FormalParameter  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-OnType  ==>> Identifier aspect pointcut around before after declare privileged 

-

-InterTypeConstructorDeclaration  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-AbstractInterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-InterTypeMethodHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-InterTypeMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-TypeParametersAsReference  ==>> LESS 

-

-InterTypeConstructorHeader  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-InterTypeConstructorHeaderName  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LESS AT 

-    AT308 

-

-InterTypeFieldHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-InterTypeFieldBody  ==>> $empty EQUAL 

-

-ForceNoDiet  ==>> $empty 

-

-VariableInitializer  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 66

-

-

-RestoreDiet  ==>> $empty 

-

-DeclareHeader  ==>> declare 

-

-DeclareAnnotationHeader  ==>> declare 

-

-PseudoTokensNoColon  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS 

-    NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION 

-    COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-Annotations  ==>> AT 

-

-PseudoToken  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND MULTIPLY 

-    GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COMMA DOT EQUAL AT 

-    ELLIPSIS AT308 

-

-ColonPseudoToken  ==>> COLON 

-

-ClassBody  ==>> LBRACE 

-

-IntertypeClassHeader  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-IntertypeClassHeaderName  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-IntertypeClassHeaderName1  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-InterTypeClassHeaderName1  ==>> abstract class final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-ClassHeaderName  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-ClassHeaderName1  ==>> abstract class final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 67

-

-

-ClassHeaderExtends  ==>> extends 

-

-ClassHeaderImplements  ==>> implements 

-

-InterfaceTypeList  ==>> Identifier AT308 

-

-InterfaceType  ==>> Identifier AT308 

-

-ClassBodyDeclarationsopt  ==>> $empty Identifier abstract boolean byte char 

-    class default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassBodyDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE SEMICOLON AT AT308 

-

-MethodDeclaration  ==>> Identifier abstract boolean byte char default double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-VariableDeclarators  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-VariableDeclarator  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-EnterVariable  ==>> $empty 

-

-ExitVariableWithoutInitialization  ==>> $empty 

-

-ExitVariableWithInitialization  ==>> $empty 

-

-Dimsopt  ==>> $empty LBRACKET AT308 

-

-AbstractMethodDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-MethodHeader  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile LESS AT AT308 

-

-DefaultMethodHeader  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-MethodHeaderName  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp synchronized 

-    transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 68

-

-

-DefaultMethodHeaderName  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-ModifiersWithDefault  ==>> abstract default final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-MethodHeaderThrowsClause  ==>> throws 

-

-ClassTypeList  ==>> Identifier AT308 

-

-ConstructorHeaderName  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile aspect LESS AT 

-

-FormalParameterList  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-CatchType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-UnionType  ==>> Identifier boolean byte char double float int long short void 

-    AT308 

-

-ClassTypeElt  ==>> Identifier AT308 

-

-StaticOnly  ==>> static 

-

-ExplicitConstructorInvocation  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LESS 

-    LPAREN BeginLambda AT308 

-

-ArgumentListopt  ==>> $empty Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-OnlyTypeArguments  ==>> LESS 

-

-Primary  ==>> Identifier boolean byte char double false float int long new null 

-    short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-InterfaceBody  ==>> LBRACE 

-

-InterfaceHeaderName  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 69

-

-

-InterfaceHeaderExtendsopt  ==>> $empty extends 

-

-InterfaceHeaderName1  ==>> abstract final interface native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-InterfaceHeaderExtends  ==>> extends 

-

-InterfaceMemberDeclarationsopt  ==>> $empty Identifier abstract boolean byte 

-    char class default double enum final float int interface long native 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-InterfaceMemberDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut privileged LESS LBRACE SEMICOLON AT AT308 

-

-ConstantDeclaration  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-InvalidConstructorDeclaration  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    LESS AT 

-

-InvalidInitializer  ==>> static LBRACE 

-

-PushLeftBrace  ==>> $empty 

-

-,opt  ==>> $empty COMMA 

-

-VariableInitializers  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-OpenBlock  ==>> $empty 

-

-BlockStatement  ==>> Identifier abstract assert boolean break byte char class 

-    continue do double enum false final float for if int interface long native 

-    new null private protected public return short static strictfp super switch 

-    synchronized this throw transient true try void volatile while aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT BeginLambda AT308 

-

-BlockStatementopt0  ==>> $empty Identifier abstract assert boolean break byte 

-    char class continue do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile while 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 70

-

-

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON AT 

-    BeginLambda AT308 

-

-LocalVariableDeclarationStatement  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile AT AT308 

-

-Statement  ==>> Identifier assert boolean break byte char continue do double 

-    false float for if int long new null return short super switch synchronized 

-    this throw true try void while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    SEMICOLON BeginLambda AT308 

-

-LocalVariableDeclaration  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-PushModifiers  ==>> $empty 

-

-PushModifiersForHeader  ==>> $empty 

-

-StatementWithoutTrailingSubstatement  ==>> Identifier assert boolean break byte 

-    char continue do double false float int long new null return short super 

-    switch synchronized this throw true try void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-LabeledStatement  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-IfThenStatement  ==>> if 

-

-IfThenElseStatement  ==>> if 

-

-WhileStatement  ==>> while 

-

-ForStatement  ==>> for 

-

-EnhancedForStatement  ==>> for 

-

-StatementNoShortIf  ==>> Identifier assert boolean break byte char continue do 

-    double false float for if int long new null return short super switch 

-    synchronized this throw true try void while aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 71

-

-

-LabeledStatementNoShortIf  ==>> Identifier aspect pointcut around before after 

-    declare privileged 

-

-IfThenElseStatementNoShortIf  ==>> if 

-

-WhileStatementNoShortIf  ==>> while 

-

-ForStatementNoShortIf  ==>> for 

-

-EnhancedForStatementNoShortIf  ==>> for 

-

-AssertStatement  ==>> assert 

-

-EmptyStatement  ==>> SEMICOLON 

-

-ExpressionStatement  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN BeginLambda AT308 

-

-SwitchStatement  ==>> switch 

-

-DoStatement  ==>> do 

-

-BreakStatement  ==>> break 

-

-ContinueStatement  ==>> continue 

-

-ReturnStatement  ==>> return 

-

-SynchronizedStatement  ==>> synchronized 

-

-ThrowStatement  ==>> throw 

-

-TryStatement  ==>> try 

-

-TryStatementWithResources  ==>> try 

-

-Label  ==>> Identifier aspect pointcut around before after declare privileged 

-

-StatementExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-Assignment  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 72

-

-

-PreIncrementExpression  ==>> PLUS_PLUS 

-

-PreDecrementExpression  ==>> MINUS_MINUS 

-

-PostIncrementExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-PostDecrementExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-MethodInvocation  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ClassInstanceCreationExpression  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LPAREN 

-    BeginLambda AT308 

-

-SwitchBlock  ==>> LBRACE 

-

-SwitchBlockStatements  ==>> case default 

-

-SwitchLabels  ==>> case default 

-

-SwitchBlockStatement  ==>> case default 

-

-SwitchLabel  ==>> case default 

-

-ConstantExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ForInitopt  ==>> $empty Identifier abstract boolean byte char double false 

-    final float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LPAREN AT BeginLambda AT308 

-

-Expressionopt  ==>> $empty Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 73

-

-

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ForUpdateopt  ==>> $empty Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-ForInit  ==>> Identifier abstract boolean byte char double false final float 

-    int long native new null private protected public short static strictfp 

-    super synchronized this transient true void volatile aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS LPAREN AT BeginLambda AT308 

-

-StatementExpressionList  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN 

-    BeginLambda AT308 

-

-ForUpdate  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LPAREN BeginLambda 

-    AT308 

-

-OnlySynchronized  ==>> synchronized 

-

-TryBlock  ==>> LBRACE 

-

-Catches  ==>> catch 

-

-Catchesopt  ==>> $empty catch 

-

-Finally  ==>> finally 

-

-ResourceSpecification  ==>> LPAREN 

-

-Resources  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-;opt  ==>> $empty SEMICOLON 

-

-Resource  ==>> Identifier abstract boolean byte char double final float int 

-    long native private protected public short static strictfp synchronized 

-    transient void volatile AT AT308 

-

-TrailingSemiColon  ==>> SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 74

-

-

-ExitTryBlock  ==>> $empty 

-

-CatchClause  ==>> catch 

-

-PushLPAREN  ==>> LPAREN 

-

-PushRPAREN  ==>> RPAREN 

-

-PrimaryNoNewArray  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ArrayCreationWithArrayInitializer  ==>> new 

-

-ArrayCreationWithoutArrayInitializer  ==>> new 

-

-Expression_NotName  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-FieldAccess  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-QualifiedSuperReceiver  ==>> Identifier AT308 

-

-ArrayAccess  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-LambdaExpression  ==>> Identifier BeginLambda 

-

-ReferenceExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> LESS 

-

-NonWildTypeArgumentsopt  ==>> $empty LESS 

-

-IdentifierOrNew  ==>> Identifier new 

-

-LambdaParameters  ==>> Identifier BeginLambda 

-

-LambdaBody  ==>> Identifier boolean byte char double false float int long new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 75

-

-

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-NestedLambda  ==>> $empty 

-

-LambdaParameterList  ==>> LPAREN 

-

-TypeElidedFormalParameterList  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-TypeElidedFormalParameter  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-ElidedLeftBraceAndReturn  ==>> $empty 

-

-EnterInstanceCreationArgumentList  ==>> $empty 

-

-UnqualifiedClassBodyopt  ==>> $empty LBRACE 

-

-QualifiedClassBodyopt  ==>> $empty LBRACE 

-

-ClassInstanceCreationExpressionName  ==>> Identifier AT308 

-

-UnqualifiedEnterAnonymousClassBody  ==>> $empty 

-

-QualifiedEnterAnonymousClassBody  ==>> $empty 

-

-ArgumentList  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN BeginLambda BeginIntersectionCast AT308 

-

-DimWithOrWithOutExprs  ==>> LBRACKET AT308 

-

-DimWithOrWithOutExpr  ==>> LBRACKET AT308 

-

-DimsLoop  ==>> LBRACKET AT308 

-

-OneDimLoop  ==>> LBRACKET AT308 

-

-PostfixExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-PushPosition  ==>> $empty 

-

-UnaryExpression  ==>> Identifier boolean byte char double false float int long 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 76

-

-

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpressionNotPlusMinus  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-CastExpression  ==>> LPAREN BeginIntersectionCast 

-

-AdditionalBoundsListOpt  ==>> $empty AND 

-

-InsideCastExpression  ==>> $empty 

-

-OnlyTypeArgumentsForCastExpression  ==>> LESS 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> $empty 

-

-InsideCastExpressionLL1  ==>> $empty 

-

-CastNameAndBounds  ==>> Identifier AT308 

-

-InsideCastExpressionLL1WithBounds  ==>> $empty 

-

-AdditionalBoundList  ==>> AND 

-

-MultiplicativeExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AdditiveExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ShiftExpression  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-RelationalExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 77

-

-

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InstanceofExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-EqualityExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AndExpression  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ExclusiveOrExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InclusiveOrExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalAndExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalOrExpression  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ConditionalExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AssignmentExpression  ==>> Identifier boolean byte char double false float int 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 78

-

-

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AssignmentOperator  ==>> PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL EQUAL 

-

-InvalidArrayInitializerAssignement  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral LPAREN 

-    BeginLambda AT308 

-

-EnumBody  ==>> LBRACE 

-

-EnumHeaderName  ==>> abstract enum final native private protected public static 

-    strictfp synchronized transient volatile AT 

-

-EnumBodyDeclarationsopt  ==>> $empty SEMICOLON 

-

-EnumConstants  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumConstant  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile AT 

-

-EnumConstantHeaderName  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile AT 

-

-Argumentsopt  ==>> $empty LPAREN 

-

-Arguments  ==>> LPAREN 

-

-EnumDeclarations  ==>> SEMICOLON 

-

-EnhancedForStatementHeader  ==>> for 

-

-EnhancedForStatementHeaderInit  ==>> for 

-

-SingleStaticImportDeclarationName  ==>> import 

-

-StaticImportOnDemandDeclarationName  ==>> import 

-

-TypeArgumentList1  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument1  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 79

-

-

-TypeArgumentList  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-TypeArgument  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-Wildcard  ==>> QUESTION AT308 

-

-ReferenceType1  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard1  ==>> QUESTION AT308 

-

-TypeArgumentList2  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument2  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-ReferenceType2  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard2  ==>> QUESTION AT308 

-

-TypeArgumentList3  ==>> Identifier boolean byte char double float int long 

-    short void QUESTION AT308 

-

-TypeArgument3  ==>> Identifier boolean byte char double float int long short 

-    void QUESTION AT308 

-

-ReferenceType3  ==>> Identifier boolean byte char double float int long short 

-    void AT308 

-

-Wildcard3  ==>> QUESTION AT308 

-

-WildcardBounds  ==>> extends super 

-

-WildcardBounds1  ==>> extends super 

-

-WildcardBounds2  ==>> extends super 

-

-WildcardBounds3  ==>> extends super 

-

-TypeParameterHeader  ==>> Identifier aspect pointcut around before after 

-    declare privileged AT308 

-

-TypeParameterList1  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-TypeParameterList  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 80

-

-

-TypeParameter  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AdditionalBound  ==>> AND 

-

-TypeParameter1  ==>> Identifier aspect pointcut around before after declare 

-    privileged AT308 

-

-AdditionalBoundList1  ==>> AND 

-

-AdditionalBound1  ==>> AND 

-

-PostfixExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral LPAREN BeginLambda AT308 

-

-UnaryExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-MultiplicativeExpression_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AdditiveExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ShiftExpression_NotName  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-RelationalExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 81

-

-

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-InstanceofExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-EqualityExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AndExpression_NotName  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-ExclusiveOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-InclusiveOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ConditionalAndExpression_NotName  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-ConditionalOrExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 82

-

-

-    AT308 

-

-ConditionalExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AssignmentExpression_NotName  ==>> Identifier boolean byte char double false 

-    float int long new null short super this true void aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS 

-    MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast 

-    AT308 

-

-AnnotationTypeDeclarationHeaderName  ==>> abstract final native private 

-    protected public static strictfp synchronized transient volatile AT 

-

-AnnotationTypeBody  ==>> LBRACE 

-

-AnnotationTypeMemberDeclarationsopt  ==>> $empty Identifier abstract boolean 

-    byte char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void volatile 

-    aspect privileged LESS SEMICOLON AT AT308 

-

-AnnotationTypeMemberDeclarations  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS SEMICOLON AT AT308 

-

-AnnotationMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> $empty default 

-

-DefaultValue  ==>> default 

-

-AnnotationMethodHeader  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile LESS AT AT308 

-

-NormalAnnotation  ==>> AT 

-

-MarkerAnnotation  ==>> AT 

-

-SingleMemberAnnotation  ==>> AT 

-

-AnnotationName  ==>> AT 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 83

-

-

-MemberValuePairs  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-MemberValuePair  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-EnterMemberValue  ==>> $empty 

-

-ExitMemberValue  ==>> $empty 

-

-MemberValueArrayInitializer  ==>> LBRACE 

-

-EnterMemberValueArrayInitializer  ==>> $empty 

-

-MemberValues  ==>> Identifier boolean byte char double false float int long new 

-    null short super this true void aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE 

-    LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-RecoveryMethodHeaderName  ==>> Identifier abstract boolean byte char default 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile LESS AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 84

-

-

-Follow Map:

-

-

-$acc  ==>> $eof 

-

-Goal  ==>> $eof 

-

-CompilationUnit  ==>> $eof 

-

-MethodBody  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-StaticInitializer  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-Initializer  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-Header1  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-Modifiersopt  ==>> Identifier boolean byte char class default double enum 

-    float int interface long short void aspect pointcut around before after 

-    privileged LESS AT308 $eof 

-

-Header2  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-BlockStatements  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-CatchHeader  ==>> $eof 

-

-FieldDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 85

-

-

-    AT308 $eof 

-

-ImportDeclaration  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-PackageDeclaration  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-TypeDeclaration  ==>> Identifier abstract boolean byte char class double enum 

-    final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect privileged 

-    LESS RBRACE SEMICOLON AT AT308 $eof 

-

-GenericMethodDeclaration  ==>> $eof 

-

-ClassBodyDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-Expression  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-ArrayInitializer  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-BlockStatementsopt  ==>> RBRACE $eof 

-

-BlockStatementopt  ==>> $eof 

-

-MemberValue  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile RPAREN RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-AnnotationTypeMemberDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS RBRACE SEMICOLON AT AT308 $eof 

-

-ParenthesizedLambdaParameterList  ==>> $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 86

-

-

-ParenthesizedCastNameAndBounds  ==>> $eof 

-

-ReferenceExpressionTypeArgumentsAndTrunk  ==>> COLON_COLON $eof 

-

-TypeAnnotations  ==>> Identifier boolean byte char double float int long short 

-    void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS $eof 

-

-Literal  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue do double else extends false final finally float for if 

-    implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    $eof 

-

-BooleanLiteral  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    $eof 

-

-JavaIdentifier  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 87

-

-

-    AND_AND PLUS MINUS NOT REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON BeginTypeArguments 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-AjSimpleName  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-JavaIdentifierNoAround  ==>> LPAREN 

-

-AjSimpleNameNoAround  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-Type  ==>> Identifier this aspect pointcut around before after declare 

-    privileged OR ELLIPSIS AT308DOTDOTDOT 

-

-PrimitiveType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 88

-

-

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-ReferenceType  ==>> Identifier abstract final instanceof native private 

-    protected public static strictfp synchronized this transient volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT ELLIPSIS 

-    ElidedSemicolonAndRightBrace AT308DOTDOTDOT $eof 

-

-TypeAnnotationsopt  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION 

-

-NumericType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-IntegralType  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 AT308DOTDOTDOT 

-

-FloatingPointType  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY OR GREATER LESS LPAREN RPAREN LBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-    AT308DOTDOTDOT 

-

-ClassOrInterfaceType  ==>> Identifier abstract final implements instanceof 

-    native private protected public static strictfp synchronized this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 89

-

-

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-ArrayType  ==>> Identifier abstract final instanceof native private protected 

-    public static strictfp synchronized this transient volatile aspect 

-    pointcut around before after declare privileged EQUAL_EQUAL NOT_EQUAL 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT ELLIPSIS 

-    ElidedSemicolonAndRightBrace AT308DOTDOTDOT $eof 

-

-ClassOrInterface  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LESS LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET 

-    SEMICOLON QUESTION COLON COMMA AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-GenericType  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Name  ==>> Identifier abstract final implements instanceof native private 

-    protected public static strictfp synchronized this transient volatile 

-    aspect pointcut around before after declare privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeArguments  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-ArrayTypeWithTypeArgumentsName  ==>> LBRACKET AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 90

-

-

-Dims  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308DOTDOTDOT $eof 

-

-ClassType  ==>> Identifier abstract final implements native private protected 

-    public static strictfp synchronized transient volatile LPAREN LBRACE 

-    SEMICOLON COLON COMMA AT $eof 

-

-NameOrAj  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA EQUAL AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-AjName  ==>> Identifier abstract boolean byte char class default double enum 

-    final float instanceof int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-SimpleNameOrAj  ==>> Identifier abstract boolean byte char class default 

-    double enum final float instanceof int interface long native package 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-SimpleName  ==>> Identifier abstract boolean byte char class default double 

-    enum final float implements instanceof int interface long native package 

-    private protected public short static strictfp synchronized this transient 

-    void volatile aspect pointcut around before after declare privileged 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 91

-

-

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON 

-    COMMA DOT EQUAL AT ELLIPSIS COLON_COLON BeginTypeArguments 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-AjQualifiedName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float instanceof int interface long native package 

-    private protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-UnannotatableNameOrAj  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS LPAREN RPAREN 

-    RBRACE SEMICOLON COMMA AT AT308 $eof 

-

-UnannotatableName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LPAREN RPAREN RBRACE LBRACKET SEMICOLON QUESTION COMMA DOT AT ELLIPSIS 

-    AT308 $eof 

-

-QualifiedName  ==>> Identifier abstract final implements instanceof native 

-    private protected public static strictfp synchronized this transient 

-    volatile aspect pointcut around before after declare privileged PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    ELLIPSIS COLON_COLON BeginTypeArguments ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeAnnotations0  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-TypeAnnotation  ==>> Identifier boolean byte char double float int long short 

-    void aspect pointcut around before after declare privileged LBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 92

-

-

-    QUESTION ELLIPSIS AT308 $eof 

-

-NormalTypeAnnotation  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-MarkerTypeAnnotation  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LBRACKET 

-    QUESTION ELLIPSIS AT308 $eof 

-

-SingleMemberTypeAnnotation  ==>> Identifier boolean byte char double float int 

-    long short void aspect pointcut around before after declare privileged 

-    LBRACKET QUESTION ELLIPSIS AT308 $eof 

-

-TypeAnnotationName  ==>> Identifier boolean byte char double float int long 

-    short void aspect pointcut around before after declare privileged LPAREN 

-    LBRACKET QUESTION ELLIPSIS AT308 $eof 

-

-MemberValuePairsopt  ==>> RPAREN 

-

-SingleMemberAnnotationMemberValue  ==>> RPAREN 

-

-RejectTypeAnnotations  ==>> MULTIPLY SEMICOLON 

-

-PushZeroTypeAnnotations  ==>> ELLIPSIS 

-

-VariableDeclaratorIdOrThis  ==>> RPAREN COMMA 

-

-VariableDeclaratorId  ==>> RPAREN SEMICOLON COMMA EQUAL 

-

-EnterCompilationUnit  ==>> abstract class enum final import interface native 

-    package private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-InternalCompilationUnit  ==>> $eof 

-

-ImportDeclarations  ==>> abstract class enum final import interface native 

-    private protected public static strictfp synchronized transient volatile 

-    aspect privileged SEMICOLON AT $eof 

-

-ReduceImports  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT $eof 

-

-TypeDeclarations  ==>> abstract class enum final interface native private 

-    protected public static strictfp synchronized transient volatile aspect 

-    privileged SEMICOLON AT $eof 

-

-Header  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile AT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 93

-

-

-ClassHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-EnumHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE AT $eof 

-

-AnnotationTypeDeclarationHeader  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-RecoveryMethodHeader  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT $eof 

-

-AllocationHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile AT $eof 

-

-ArrayCreationHeader  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile AT $eof 

-

-ConstructorHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON AT $eof 

-

-EnumConstantHeader  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-CatchFormalParameter  ==>> RPAREN 

-

-PackageDeclarationName  ==>> SEMICOLON 

-

-Modifiers  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged LESS AT AT308 $eof 

-

-PushRealModifiers  ==>> Identifier interface aspect pointcut around before 

-    after declare privileged AT308 

-

-PackageComment  ==>> package 

-

-SingleTypeImportDeclaration  ==>> abstract class enum final import interface 

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-TypeImportOnDemandDeclaration  ==>> abstract class enum final import interface 

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-SingleStaticImportDeclaration  ==>> abstract class enum final import interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 94

-

-

-    native private protected public static strictfp synchronized transient 

-    volatile aspect privileged SEMICOLON AT $eof 

-

-StaticImportOnDemandDeclaration  ==>> abstract class enum final import 

-    interface native private protected public static strictfp synchronized 

-    transient volatile aspect privileged SEMICOLON AT $eof 

-

-SingleTypeImportDeclarationName  ==>> SEMICOLON 

-

-TypeImportOnDemandDeclarationName  ==>> SEMICOLON 

-

-ClassDeclaration  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-InterfaceDeclaration  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnumDeclaration  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-AnnotationTypeDeclaration  ==>> Identifier abstract assert boolean break byte 

-    case char class continue default do double enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Modifier  ==>> Identifier abstract boolean byte char class default double enum 

-    final float int interface long native package private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after privileged LESS AT AT308 $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 95

-

-

-SimpleModifier  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum extends false final 

-    finally float for if implements import instanceof int interface long 

-    native new null package private protected public return short static 

-    strictfp super switch synchronized this throw throws transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT 

-    OR_OR AND_AND PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS 

-    AT308 $eof 

-

-Annotation  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native package private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after privileged LESS RPAREN RBRACE SEMICOLON COMMA 

-    AT AT308 $eof 

-

-DeclareDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-InterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-InterTypeFieldDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-PointcutDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-BasicAdviceDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AroundDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 96

-

-

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AspectDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-ClassMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-InterfaceMemberDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-AspectHeader  ==>> LBRACE 

-

-AspectBody  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 $eof 

-

-AspectHeaderName  ==>> Identifier extends implements LBRACE 

-

-ClassHeaderExtendsopt  ==>> Identifier abstract final implements native 

-    private protected public static strictfp synchronized transient volatile 

-    LBRACE AT $eof 

-

-ClassHeaderImplementsopt  ==>> Identifier abstract final native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-AspectHeaderRest  ==>> LBRACE 

-

-AspectHeaderName1  ==>> Identifier extends implements LESS LBRACE 

-

-AspectHeaderName2  ==>> Identifier extends implements LESS LBRACE 

-

-TypeParameters  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-AspectHeaderRestStart  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 97

-

-

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-PseudoTokens  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-AspectBodyDeclarationsopt  ==>> RBRACE 

-

-AspectBodyDeclarations  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-AspectBodyDeclaration  ==>> Identifier abstract boolean byte char class double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-NestedType  ==>> Identifier abstract boolean byte char class default double 

-    enum final float int interface long native private protected public short 

-    static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE SEMICOLON AT AT308 

-

-ClassBodyDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-ClassMemberDeclarationNoAroundMethod  ==>> Identifier abstract boolean byte 

-    char class double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LBRACE RBRACE SEMICOLON AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 98

-

-

-ConstructorDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after declare privileged LESS 

-    LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-Diet  ==>> LBRACE 

-

-NestedMethod  ==>> LBRACE 

-

-CreateInitializer  ==>> LBRACE 

-

-Block  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if instanceof int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON BeginLambda ElidedSemicolonAndRightBrace AT308 $eof 

-

-MethodDeclarationNoAround  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-IntertypeClassDeclaration  ==>> Identifier abstract boolean byte char class 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    around before after declare privileged LESS LBRACE RBRACE SEMICOLON AT 

-    AT308 

-

-AbstractMethodDeclarationNoAround  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-MethodHeaderNoAround  ==>> LBRACE SEMICOLON 

-

-MethodHeaderNameNoAround  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 99

-

-

-FormalParameterListopt  ==>> RPAREN 

-

-MethodHeaderRightParen  ==>> Identifier abstract default final native private 

-    protected public static strictfp synchronized throws transient volatile 

-    LBRACE LBRACKET SEMICOLON COLON AT AT308 $eof 

-

-MethodHeaderExtendedDims  ==>> abstract default final native private protected 

-    public static strictfp synchronized throws transient volatile LBRACE 

-    SEMICOLON AT $eof 

-

-MethodHeaderThrowsClauseopt  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE SEMICOLON 

-    COLON AT $eof 

-

-PointcutHeader  ==>> Identifier abstract boolean byte char double final float 

-    int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AroundHeader  ==>> LBRACE 

-

-AroundHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-BasicAdviceHeader  ==>> LBRACE 

-

-BeforeAdviceHeader  ==>> LBRACE 

-

-AfterAdviceHeader  ==>> LBRACE 

-

-BeforeAdviceHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AfterAdviceHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-ExtraParamopt  ==>> throws COLON 

-

-FormalParameter  ==>> RPAREN COMMA 

-

-OnType  ==>> PLUS LESS DOT 

-

-InterTypeConstructorDeclaration  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 

-

-AbstractInterTypeMethodDeclaration  ==>> Identifier abstract boolean byte char 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 100

-

-

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    pointcut around before after declare privileged LESS LBRACE RBRACE 

-    SEMICOLON AT AT308 $eof 

-

-InterTypeMethodHeader  ==>> LBRACE SEMICOLON 

-

-InterTypeMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-TypeParametersAsReference  ==>> DOT 

-

-InterTypeConstructorHeader  ==>> LBRACE 

-

-InterTypeConstructorHeaderName  ==>> Identifier abstract boolean byte char 

-    double final float int long native private protected public short static 

-    strictfp synchronized transient void volatile RPAREN AT AT308 

-

-InterTypeFieldHeader  ==>> SEMICOLON EQUAL 

-

-InterTypeFieldBody  ==>> SEMICOLON 

-

-ForceNoDiet  ==>> Identifier abstract boolean byte char double false final 

-    float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN LBRACE RBRACE 

-    SEMICOLON COMMA AT BeginLambda BeginIntersectionCast AT308 $eof 

-

-VariableInitializer  ==>> RPAREN RBRACE SEMICOLON COMMA 

-

-RestoreDiet  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile RPAREN LBRACE RBRACE SEMICOLON 

-    COMMA AT $eof 

-

-DeclareHeader  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET QUESTION COLON COMMA 

-    DOT EQUAL AT ELLIPSIS AT308 

-

-DeclareAnnotationHeader  ==>> Identifier abstract assert boolean break byte 

-    case catch char class continue do double else extends false final finally 

-    float for if implements import instanceof int long native new null package 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 101

-

-

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-PseudoTokensNoColon  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACKET RBRACKET 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-Annotations  ==>> SEMICOLON AT 

-

-PseudoToken  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue do double else extends false final finally float for 

-    if implements import instanceof int long native new null package private 

-    protected public return short static strictfp super switch synchronized 

-    this throw throws transient true try void volatile while aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS NOT AND 

-    MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-ColonPseudoToken  ==>> Identifier abstract assert boolean break byte case 

-    catch char class continue do double else extends false final finally float 

-    for if implements import instanceof int long native new null package 

-    private protected public return short static strictfp super switch 

-    synchronized this throw throws transient true try void volatile while 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND 

-    PLUS NOT AND MULTIPLY GREATER LESS LPAREN RPAREN LBRACE LBRACKET RBRACKET 

-    SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ELLIPSIS AT308 

-

-ClassBody  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if instanceof int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 102

-

-

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS LPAREN RPAREN LBRACE 

-    RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON BeginLambda ElidedSemicolonAndRightBrace AT308 $eof 

-

-IntertypeClassHeader  ==>> LBRACE 

-

-IntertypeClassHeaderName  ==>> extends implements LBRACE 

-

-IntertypeClassHeaderName1  ==>> extends implements LESS LBRACE 

-

-InterTypeClassHeaderName1  ==>> 

-

-ClassHeaderName  ==>> abstract extends final implements native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-ClassHeaderName1  ==>> abstract extends final implements native private 

-    protected public static strictfp synchronized transient volatile LESS 

-    LBRACE AT $eof 

-

-ClassHeaderExtends  ==>> Identifier abstract final implements native private 

-    protected public static strictfp synchronized transient volatile LBRACE AT 

-    $eof 

-

-ClassHeaderImplements  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceTypeList  ==>> Identifier abstract final native private protected 

-    public static strictfp synchronized transient volatile LBRACE COMMA AT 

-    $eof 

-

-InterfaceType  ==>> Identifier abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE COMMA AT $eof 

-

-ClassBodyDeclarationsopt  ==>> RBRACE 

-

-ClassBodyDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-MethodDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-VariableDeclarators  ==>> SEMICOLON COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 103

-

-

-VariableDeclarator  ==>> SEMICOLON COMMA 

-

-EnterVariable  ==>> SEMICOLON COMMA EQUAL 

-

-ExitVariableWithoutInitialization  ==>> SEMICOLON COMMA 

-

-ExitVariableWithInitialization  ==>> RPAREN SEMICOLON COMMA 

-

-Dimsopt  ==>> abstract default final native private protected public static 

-    strictfp synchronized throws transient volatile AND RPAREN LBRACE 

-    SEMICOLON COLON COMMA EQUAL AT COLON_COLON $eof 

-

-AbstractMethodDeclaration  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-    $eof 

-

-MethodHeader  ==>> LBRACE SEMICOLON 

-

-DefaultMethodHeader  ==>> LBRACE SEMICOLON 

-

-MethodHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-DefaultMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-ModifiersWithDefault  ==>> Identifier boolean byte char double float int long 

-    short void LESS AT308 

-

-MethodHeaderThrowsClause  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE SEMICOLON COLON AT 

-    $eof 

-

-ClassTypeList  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON COLON COMMA AT 

-    $eof 

-

-ConstructorHeaderName  ==>> Identifier abstract boolean byte char double final 

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-FormalParameterList  ==>> RPAREN COMMA 

-

-CatchType  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-UnionType  ==>> Identifier aspect pointcut around before after declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 104

-

-

-    privileged OR 

-

-ClassTypeElt  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE SEMICOLON COLON COMMA AT 

-    $eof 

-

-StaticOnly  ==>> LBRACE 

-

-ExplicitConstructorInvocation  ==>> Identifier abstract assert boolean break 

-    byte case char class continue default do double else enum false final 

-    float for if int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ArgumentListopt  ==>> RPAREN 

-

-OnlyTypeArguments  ==>> Identifier new super this aspect pointcut around 

-    before after declare privileged AND RPAREN LBRACKET DOT COLON_COLON AT308 

-    $eof 

-

-Primary  ==>> abstract final instanceof native private protected public static 

-    strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-InterfaceBody  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-InterfaceHeaderName  ==>> abstract extends final native private protected 

-    public static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeaderExtendsopt  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceHeaderName1  ==>> abstract extends final native private protected 

-    public static strictfp synchronized transient volatile LESS LBRACE AT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 105

-

-

-InterfaceHeaderExtends  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-InterfaceMemberDeclarationsopt  ==>> RBRACE 

-

-InterfaceMemberDeclarations  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-ConstantDeclaration  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 $eof 

-

-InvalidConstructorDeclaration  ==>> Identifier abstract boolean byte char 

-    class default double enum final float int interface long native private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-InvalidInitializer  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native private protected public 

-    short static strictfp synchronized transient void volatile aspect pointcut 

-    privileged LESS LBRACE RBRACE SEMICOLON AT AT308 

-

-PushLeftBrace  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE RBRACE COMMA AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-,opt  ==>> RBRACE 

-

-VariableInitializers  ==>> RBRACE COMMA 

-

-OpenBlock  ==>> LBRACE 

-

-BlockStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-BlockStatementopt0  ==>> $eof 

-

-LocalVariableDeclarationStatement  ==>> Identifier abstract assert boolean 

-    break byte case char class continue default do double enum false final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 106

-

-

-    float for if int interface long native new null private protected public 

-    return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Statement  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile 

-    while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-LocalVariableDeclaration  ==>> SEMICOLON 

-

-PushModifiers  ==>> Identifier aspect pointcut around before after declare 

-    privileged 

-

-PushModifiersForHeader  ==>> interface 

-

-StatementWithoutTrailingSubstatement  ==>> Identifier abstract assert boolean 

-    break byte case char class continue default do double else enum false 

-    final float for if int interface long native new null private protected 

-    public return short static strictfp super switch synchronized this throw 

-    transient true try void volatile while aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS 

-    LPAREN LBRACE RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-LabeledStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-IfThenStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-IfThenElseStatement  ==>> Identifier abstract assert boolean break byte case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 107

-

-

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-WhileStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ForStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnhancedForStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-StatementNoShortIf  ==>> else 

-

-LabeledStatementNoShortIf  ==>> else 

-

-IfThenElseStatementNoShortIf  ==>> else 

-

-WhileStatementNoShortIf  ==>> else 

-

-ForStatementNoShortIf  ==>> else 

-

-EnhancedForStatementNoShortIf  ==>> else 

-

-AssertStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 108

-

-

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EmptyStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ExpressionStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SwitchStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-DoStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-BreakStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ContinueStatement  ==>> Identifier abstract assert boolean break byte case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 109

-

-

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ReturnStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SynchronizedStatement  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double else enum false final float for if 

-    int interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ThrowStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-TryStatement  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-TryStatementWithResources  ==>> Identifier abstract assert boolean break byte 

-    case char class continue default do double else enum false final float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 110

-

-

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Label  ==>> COLON 

-

-StatementExpression  ==>> RPAREN SEMICOLON COMMA 

-

-Assignment  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-PreIncrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-PreDecrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-PostIncrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-PostDecrementExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-MethodInvocation  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 111

-

-

-ClassInstanceCreationExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-SwitchBlock  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-SwitchBlockStatements  ==>> case default RBRACE 

-

-SwitchLabels  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 

-

-SwitchBlockStatement  ==>> case default RBRACE 

-

-SwitchLabel  ==>> Identifier abstract assert boolean break byte case char 

-    class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 

-

-ConstantExpression  ==>> COLON 

-

-ForInitopt  ==>> SEMICOLON 

-

-Expressionopt  ==>> SEMICOLON 

-

-ForUpdateopt  ==>> RPAREN 

-

-ForInit  ==>> SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 112

-

-

-StatementExpressionList  ==>> RPAREN SEMICOLON COMMA 

-

-ForUpdate  ==>> RPAREN 

-

-OnlySynchronized  ==>> LPAREN 

-

-TryBlock  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Catches  ==>> Identifier abstract assert boolean break byte case catch char 

-    class continue default do double else enum false final finally float for 

-    if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Catchesopt  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double else enum false final finally float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-Finally  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double else enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-ResourceSpecification  ==>> LBRACE 

-

-Resources  ==>> RPAREN SEMICOLON 

-

-;opt  ==>> RPAREN 

-

-Resource  ==>> RPAREN SEMICOLON 

-

-TrailingSemiColon  ==>> Identifier abstract boolean byte char double final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 113

-

-

-    float int long native private protected public short static strictfp 

-    synchronized transient void volatile AT AT308 

-

-ExitTryBlock  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum false final finally float 

-    for if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-CatchClause  ==>> Identifier abstract assert boolean break byte case catch 

-    char class continue default do double else enum false final finally float 

-    for if int interface long native new null private protected public return 

-    short static strictfp super switch synchronized this throw transient true 

-    try void volatile while aspect pointcut around before after declare 

-    privileged IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-PushLPAREN  ==>> Identifier abstract boolean byte char double false final 

-    float int long native new null private protected public short static 

-    strictfp super synchronized this transient true void volatile aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS PLUS MINUS NOT TWIDDLE LPAREN RPAREN AT BeginLambda 

-    BeginIntersectionCast AT308 

-

-PushRPAREN  ==>> Identifier abstract boolean byte char double false final 

-    float instanceof int long native new null private protected public short 

-    static strictfp super synchronized this transient true void volatile 

-    aspect pointcut around before after declare privileged IntegerLiteral 

-    LongLiteral FloatingPointLiteral DoubleLiteral CharacterLiteral 

-    StringLiteral PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL 

-    NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL 

-    MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL 

-    REMAINDER_EQUAL LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL 

-    UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS NOT REMAINDER XOR AND 

-    MULTIPLY OR TWIDDLE DIVIDE GREATER LESS LPAREN RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT ARROW COLON_COLON 

-    BeginLambda BeginIntersectionCast ElidedSemicolonAndRightBrace AT308 $eof 

-

-PrimaryNoNewArray  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 114

-

-

-    ElidedSemicolonAndRightBrace $eof 

-

-ArrayCreationWithArrayInitializer  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL 

-    AT COLON_COLON ElidedSemicolonAndRightBrace $eof 

-

-ArrayCreationWithoutArrayInitializer  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    PLUS_PLUS MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL 

-    LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL 

-    MULTIPLY_EQUAL DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL 

-    LEFT_SHIFT_EQUAL RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR 

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT 

-    COLON_COLON ElidedSemicolonAndRightBrace $eof 

-

-Expression_NotName  ==>> RPAREN 

-

-FieldAccess  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-QualifiedSuperReceiver  ==>> DOT COLON_COLON 

-

-ArrayAccess  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-LambdaExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 115

-

-

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ReferenceExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ReferenceExpressionTypeArgumentsAndTrunk0  ==>> COLON_COLON $eof 

-

-NonWildTypeArgumentsopt  ==>> Identifier new 

-

-IdentifierOrNew  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-LambdaParameters  ==>> ARROW 

-

-LambdaBody  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile PLUS_PLUS MINUS_MINUS 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL DIVIDE_EQUAL 

-    AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-NestedLambda  ==>> LPAREN ARROW 

-

-LambdaParameterList  ==>> ARROW $eof 

-

-TypeElidedFormalParameterList  ==>> RPAREN COMMA 

-

-TypeElidedFormalParameter  ==>> RPAREN COMMA 

-

-ElidedLeftBraceAndReturn  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 116

-

-

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-EnterInstanceCreationArgumentList  ==>> LPAREN 

-

-UnqualifiedClassBodyopt  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-QualifiedClassBodyopt  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE LBRACKET 

-    RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace $eof 

-

-ClassInstanceCreationExpressionName  ==>> Identifier LESS AT308 

-

-UnqualifiedEnterAnonymousClassBody  ==>> LBRACE 

-

-QualifiedEnterAnonymousClassBody  ==>> LBRACE 

-

-ArgumentList  ==>> RPAREN COMMA 

-

-DimWithOrWithOutExprs  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN LBRACE RBRACE 

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-DimWithOrWithOutExpr  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN LBRACE RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 117

-

-

-    LBRACKET RBRACKET SEMICOLON QUESTION COLON COMMA DOT EQUAL AT COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 $eof 

-

-DimsLoop  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-OneDimLoop  ==>> Identifier abstract default final instanceof native private 

-    protected public static strictfp synchronized this throws transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT EQUAL AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace 

-    AT308 AT308DOTDOTDOT $eof 

-

-PostfixExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile PLUS_PLUS 

-    MINUS_MINUS EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT 

-    RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT PLUS_EQUAL MINUS_EQUAL MULTIPLY_EQUAL 

-    DIVIDE_EQUAL AND_EQUAL OR_EQUAL XOR_EQUAL REMAINDER_EQUAL LEFT_SHIFT_EQUAL 

-    RIGHT_SHIFT_EQUAL UNSIGNED_RIGHT_SHIFT_EQUAL OR_OR AND_AND PLUS MINUS 

-    REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET 

-    SEMICOLON QUESTION COLON COMMA EQUAL AT ElidedSemicolonAndRightBrace $eof 

-

-PushPosition  ==>> Identifier boolean byte char double false float int long 

-    new null short super this true void aspect pointcut around before after 

-    declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-UnaryExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-UnaryExpressionNotPlusMinus  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-CastExpression  ==>> abstract final instanceof native private protected public 

-    static strictfp synchronized transient volatile EQUAL_EQUAL LESS_EQUAL 

-    GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 118

-

-

-    AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY OR DIVIDE GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-AdditionalBoundsListOpt  ==>> RPAREN 

-

-InsideCastExpression  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-OnlyTypeArgumentsForCastExpression  ==>> AND RPAREN LBRACKET DOT AT308 

-

-InsideCastExpressionWithQualifiedGenerics  ==>> Identifier boolean byte char 

-    double false float int long new null short super this true void aspect 

-    pointcut around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-InsideCastExpressionLL1  ==>> Identifier boolean byte char double false float 

-    int long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral NOT TWIDDLE LPAREN 

-    BeginLambda BeginIntersectionCast AT308 

-

-CastNameAndBounds  ==>> RPAREN 

-

-InsideCastExpressionLL1WithBounds  ==>> Identifier boolean byte char double 

-    false float int long new null short super this true void aspect pointcut 

-    around before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral NOT 

-    TWIDDLE LPAREN BeginLambda BeginIntersectionCast AT308 

-

-AdditionalBoundList  ==>> AND RPAREN COMMA 

-

-MultiplicativeExpression  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON 

-    COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-AdditiveExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS XOR AND OR GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ShiftExpression  ==>> abstract final instanceof native private protected 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 119

-

-

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER LESS RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace 

-    $eof 

-

-RelationalExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    LESS_EQUAL GREATER_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR GREATER LESS 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-InstanceofExpression  ==>> abstract final instanceof native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE RBRACKET SEMICOLON 

-    QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-EqualityExpression  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile EQUAL_EQUAL NOT_EQUAL OR_OR 

-    AND_AND XOR AND OR RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA 

-    AT ElidedSemicolonAndRightBrace $eof 

-

-AndExpression  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile OR_OR AND_AND XOR AND OR RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ExclusiveOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND XOR OR 

-    RPAREN RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-InclusiveOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND OR RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ConditionalAndExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND RPAREN 

-    RBRACE RBRACKET SEMICOLON QUESTION COLON COMMA AT 

-    ElidedSemicolonAndRightBrace $eof 

-

-ConditionalOrExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR RPAREN RBRACE 

-    RBRACKET SEMICOLON QUESTION COLON COMMA AT ElidedSemicolonAndRightBrace 

-    $eof 

-

-ConditionalExpression  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile RPAREN RBRACE RBRACKET 

-    SEMICOLON COLON COMMA AT ElidedSemicolonAndRightBrace $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 120

-

-

-AssignmentExpression  ==>> RPAREN RBRACE RBRACKET SEMICOLON COLON COMMA 

-    ElidedSemicolonAndRightBrace $eof 

-

-AssignmentOperator  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE BeginLambda BeginIntersectionCast AT308 

-

-InvalidArrayInitializerAssignement  ==>> RPAREN RBRACE RBRACKET SEMICOLON 

-    COLON COMMA ElidedSemicolonAndRightBrace $eof 

-

-EnumBody  ==>> Identifier abstract assert boolean break byte case char class 

-    continue default do double enum false final float for if int interface 

-    long native new null private protected public return short static strictfp 

-    super switch synchronized this throw transient true try void volatile 

-    while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-EnumHeaderName  ==>> abstract final implements native private protected public 

-    static strictfp synchronized transient volatile LBRACE AT $eof 

-

-EnumBodyDeclarationsopt  ==>> RBRACE 

-

-EnumConstants  ==>> RBRACE SEMICOLON COMMA 

-

-EnumConstant  ==>> RBRACE SEMICOLON COMMA 

-

-EnumConstantHeaderName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile LPAREN LBRACE RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-Argumentsopt  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT 

-    $eof 

-

-Arguments  ==>> abstract final native private protected public static strictfp 

-    synchronized transient volatile LBRACE RBRACE SEMICOLON COMMA AT $eof 

-

-EnumDeclarations  ==>> RBRACE 

-

-EnhancedForStatementHeader  ==>> Identifier assert boolean break byte char 

-    continue do double false float for if int long new null return short super 

-    switch synchronized this throw true try void while aspect pointcut around 

-    before after declare privileged IntegerLiteral LongLiteral 

-    FloatingPointLiteral DoubleLiteral CharacterLiteral StringLiteral 

-    PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE SEMICOLON BeginLambda AT308 

-

-EnhancedForStatementHeaderInit  ==>> COLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 121

-

-

-SingleStaticImportDeclarationName  ==>> SEMICOLON 

-

-StaticImportOnDemandDeclarationName  ==>> SEMICOLON 

-

-TypeArgumentList1  ==>> Identifier abstract final implements instanceof native 

-    new private protected public static strictfp super synchronized this 

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgument1  ==>> Identifier abstract final implements instanceof native new 

-    private protected public static strictfp super synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgumentList  ==>> COMMA 

-

-TypeArgument  ==>> COMMA 

-

-Wildcard  ==>> COMMA 

-

-ReferenceType1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard1  ==>> Identifier abstract final implements instanceof native new 

-    private protected public static strictfp super synchronized this transient 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgumentList2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 122

-

-

-TypeArgument2  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-ReferenceType2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard2  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-TypeArgumentList3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeArgument3  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-ReferenceType3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 123

-

-

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-Wildcard3  ==>> Identifier abstract boolean byte char double extends final 

-    float implements instanceof int long native new private protected public 

-    short static strictfp super synchronized this transient void volatile 

-    aspect pointcut around before after declare privileged EQUAL_EQUAL 

-    NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR 

-    GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON QUESTION 

-    COLON COMMA DOT AT ELLIPSIS COLON_COLON ElidedSemicolonAndRightBrace AT308 

-    AT308DOTDOTDOT $eof 

-

-WildcardBounds  ==>> COMMA 

-

-WildcardBounds1  ==>> Identifier abstract final implements instanceof native 

-    new private protected public static strictfp super synchronized this 

-    transient volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-WildcardBounds2  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-WildcardBounds3  ==>> Identifier abstract boolean byte char double extends 

-    final float implements instanceof int long native new private protected 

-    public short static strictfp super synchronized this transient void 

-    volatile aspect pointcut around before after declare privileged 

-    EQUAL_EQUAL NOT_EQUAL RIGHT_SHIFT UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR 

-    AND OR GREATER LPAREN RPAREN LBRACE RBRACE LBRACKET RBRACKET SEMICOLON 

-    QUESTION COLON COMMA DOT AT ELLIPSIS COLON_COLON 

-    ElidedSemicolonAndRightBrace AT308 AT308DOTDOTDOT $eof 

-

-TypeParameterHeader  ==>> extends GREATER COMMA 

-

-TypeParameterList1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-TypeParameterList  ==>> COMMA 

-

-TypeParameter  ==>> COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 124

-

-

-AdditionalBound  ==>> AND RPAREN COMMA 

-

-TypeParameter1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-AdditionalBoundList1  ==>> Identifier abstract boolean byte char double 

-    extends final float implements int long native private protected public 

-    short static strictfp synchronized transient void volatile LBRACE DOT AT 

-    AT308 $eof 

-

-AdditionalBound1  ==>> Identifier abstract boolean byte char double extends 

-    final float implements int long native private protected public short 

-    static strictfp synchronized transient void volatile LBRACE DOT AT AT308 

-    $eof 

-

-PostfixExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-UnaryExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-UnaryExpressionNotPlusMinus_NotName  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-MultiplicativeExpression_NotName  ==>> abstract final instanceof native 

-    private protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS REMAINDER XOR AND MULTIPLY 

-    OR DIVIDE GREATER LESS RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-AdditiveExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND PLUS MINUS XOR AND OR GREATER LESS 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ShiftExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL LEFT_SHIFT RIGHT_SHIFT 

-    UNSIGNED_RIGHT_SHIFT OR_OR AND_AND XOR AND OR GREATER LESS RPAREN RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 125

-

-

-    SEMICOLON QUESTION COMMA AT $eof 

-

-RelationalExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL LESS_EQUAL GREATER_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-InstanceofExpression_NotName  ==>> abstract final instanceof native private 

-    protected public static strictfp synchronized transient volatile 

-    EQUAL_EQUAL NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE SEMICOLON 

-    QUESTION COMMA AT $eof 

-

-EqualityExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile EQUAL_EQUAL 

-    NOT_EQUAL OR_OR AND_AND XOR AND OR RPAREN RBRACE SEMICOLON QUESTION COMMA 

-    AT $eof 

-

-AndExpression_NotName  ==>> abstract final native private protected public 

-    static strictfp synchronized transient volatile OR_OR AND_AND XOR AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ExclusiveOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND XOR 

-    OR RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-InclusiveOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND OR 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalAndExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR AND_AND 

-    RPAREN RBRACE SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalOrExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile OR_OR RPAREN RBRACE 

-    SEMICOLON QUESTION COMMA AT $eof 

-

-ConditionalExpression_NotName  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile RPAREN RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-AssignmentExpression_NotName  ==>> RPAREN 

-

-AnnotationTypeDeclarationHeaderName  ==>> abstract extends final implements 

-    native private protected public static strictfp synchronized transient 

-    volatile LBRACE AT $eof 

-

-AnnotationTypeBody  ==>> Identifier abstract assert boolean break byte case 

-    char class continue default do double enum false final float for if int 

-    interface long native new null private protected public return short 

-    static strictfp super switch synchronized this throw transient true try 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 126

-

-

-    void volatile while aspect pointcut around before after declare privileged 

-    IntegerLiteral LongLiteral FloatingPointLiteral DoubleLiteral 

-    CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS LESS LPAREN LBRACE 

-    RBRACE SEMICOLON AT BeginLambda AT308 $eof 

-

-AnnotationTypeMemberDeclarationsopt  ==>> RBRACE 

-

-AnnotationTypeMemberDeclarations  ==>> Identifier abstract boolean byte char 

-    class double enum final float int interface long native private protected 

-    public short static strictfp synchronized transient void volatile aspect 

-    privileged LESS RBRACE SEMICOLON AT AT308 

-

-AnnotationMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-AnnotationMethodHeaderDefaultValueopt  ==>> abstract final native private 

-    protected public static strictfp synchronized transient volatile SEMICOLON 

-    AT $eof 

-

-DefaultValue  ==>> abstract final native private protected public static 

-    strictfp synchronized transient volatile SEMICOLON AT $eof 

-

-AnnotationMethodHeader  ==>> SEMICOLON 

-

-NormalAnnotation  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-MarkerAnnotation  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-SingleMemberAnnotation  ==>> Identifier abstract boolean byte char class 

-    default double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS RPAREN RBRACE 

-    SEMICOLON COMMA AT AT308 $eof 

-

-AnnotationName  ==>> Identifier abstract boolean byte char class default 

-    double enum final float int interface long native package private 

-    protected public short static strictfp synchronized transient void 

-    volatile aspect pointcut around before after privileged LESS LPAREN RPAREN 

-    RBRACE SEMICOLON COMMA AT AT308 $eof 

-

-MemberValuePairs  ==>> RPAREN COMMA 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 127

-

-

-MemberValuePair  ==>> RPAREN COMMA 

-

-EnterMemberValue  ==>> Identifier boolean byte char double false float int 

-    long new null short super this true void aspect pointcut around before 

-    after declare privileged IntegerLiteral LongLiteral FloatingPointLiteral 

-    DoubleLiteral CharacterLiteral StringLiteral PLUS_PLUS MINUS_MINUS PLUS 

-    MINUS NOT TWIDDLE LPAREN LBRACE AT BeginLambda BeginIntersectionCast AT308 

-

-ExitMemberValue  ==>> RPAREN COMMA 

-

-MemberValueArrayInitializer  ==>> abstract final native private protected 

-    public static strictfp synchronized transient volatile RPAREN RBRACE 

-    SEMICOLON COMMA AT $eof 

-

-EnterMemberValueArrayInitializer  ==>> LBRACE 

-

-MemberValues  ==>> RBRACE COMMA 

-

-RecoveryMethodHeaderName  ==>> Identifier abstract boolean byte char double 

-    final float int long native private protected public short static strictfp 

-    synchronized transient void volatile RPAREN AT AT308 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 128

-

-

-Name map:

-

-$empty ::= $empty

-Identifier ::= Identifier

-abstract ::= abstract

-assert ::= assert

-boolean ::= boolean

-break ::= break

-byte ::= byte

-case ::= case

-catch ::= catch

-char ::= char

-class ::= class

-continue ::= continue

-const ::= const

-default ::= default

-do ::= do

-double ::= double

-else ::= else

-enum ::= enum

-extends ::= extends

-false ::= false

-final ::= final

-finally ::= finally

-float ::= float

-for ::= for

-goto ::= goto

-if ::= if

-implements ::= implements

-import ::= import

-instanceof ::= instanceof

-int ::= int

-interface ::= interface

-long ::= long

-native ::= native

-new ::= new

-null ::= null

-package ::= package

-private ::= private

-protected ::= protected

-public ::= public

-return ::= return

-short ::= short

-static ::= static

-strictfp ::= strictfp

-super ::= super

-switch ::= switch

-synchronized ::= synchronized

-this ::= this

-throw ::= throw

-throws ::= throws

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 129

-

-

-transient ::= transient

-true ::= true

-try ::= try

-void ::= void

-volatile ::= volatile

-while ::= while

-aspect ::= aspect

-pointcut ::= pointcut

-around ::= around

-before ::= before

-after ::= after

-declare ::= declare

-privileged ::= privileged

-IntegerLiteral ::= IntegerLiteral

-LongLiteral ::= LongLiteral

-FloatingPointLiteral ::= FloatingPointLiteral

-DoubleLiteral ::= DoubleLiteral

-CharacterLiteral ::= CharacterLiteral

-StringLiteral ::= StringLiteral

-PLUS_PLUS ::= ++

-MINUS_MINUS ::= --

-EQUAL_EQUAL ::= ==

-LESS_EQUAL ::= <=

-GREATER_EQUAL ::= >=

-NOT_EQUAL ::= !=

-LEFT_SHIFT ::= <<

-RIGHT_SHIFT ::= >>

-UNSIGNED_RIGHT_SHIFT ::= >>>

-PLUS_EQUAL ::= +=

-MINUS_EQUAL ::= -=

-MULTIPLY_EQUAL ::= *=

-DIVIDE_EQUAL ::= /=

-AND_EQUAL ::= &=

-OR_EQUAL ::= |=

-XOR_EQUAL ::= ^=

-REMAINDER_EQUAL ::= %=

-LEFT_SHIFT_EQUAL ::= <<=

-RIGHT_SHIFT_EQUAL ::= >>=

-UNSIGNED_RIGHT_SHIFT_EQUAL ::= >>>=

-OR_OR ::= ||

-AND_AND ::= &&

-PLUS ::= +

-MINUS ::= -

-NOT ::= !

-REMAINDER ::= %

-XOR ::= ^

-AND ::= &

-MULTIPLY ::= *

-OR ::= '|'

-TWIDDLE ::= ~

-DIVIDE ::= /

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 130

-

-

-GREATER ::= >

-LESS ::= <

-LPAREN ::= (

-RPAREN ::= )

-LBRACE ::= {

-RBRACE ::= }

-LBRACKET ::= [

-RBRACKET ::= ]

-SEMICOLON ::= ;

-QUESTION ::= ?

-COLON ::= :

-COMMA ::= ,

-DOT ::= .

-EQUAL ::= =

-AT ::= @

-ELLIPSIS ::= ...

-ARROW ::= ->

-COLON_COLON ::= ::

-BeginLambda ::= BeginLambda

-BeginIntersectionCast ::= BeginIntersectionCast

-BeginTypeArguments ::= BeginTypeArguments

-ElidedSemicolonAndRightBrace ::= ElidedSemicolonAndRightBrace

-AT308 ::= @

-AT308DOTDOTDOT ::= @

-$eof ::= $eof

-$error ::= $error

-Goal ::= Goal

-CompilationUnit ::= CompilationUnit

-MethodBody ::= MethodBody

-StaticInitializer ::= StaticInitializer

-Initializer ::= Initializer

-Header1 ::= Header1

-Modifiersopt ::= Modifiersopt

-Header2 ::= Header2

-BlockStatements ::= BlockStatements

-CatchHeader ::= CatchHeader

-FieldDeclaration ::= FieldDeclaration

-ImportDeclaration ::= ImportDeclaration

-PackageDeclaration ::= PackageDeclaration

-TypeDeclaration ::= TypeDeclaration

-GenericMethodDeclaration ::= GenericMethodDeclaration

-ClassBodyDeclarations ::= ClassBodyDeclarations

-Expression ::= Expression

-ArrayInitializer ::= ArrayInitializer

-BlockStatementsopt ::= BlockStatementsopt

-BlockStatementopt ::= BlockStatementopt

-MemberValue ::= MemberValue

-AnnotationTypeMemberDeclaration ::= AnnotationTypeMemberDeclaration

-ParenthesizedLambdaParameterList ::= ParenthesizedLambdaParameterList

-ParenthesizedCastNameAndBounds ::= ParenthesizedCastNameAndBounds

-ReferenceExpressionTypeArgumentsAndTrunk ::= 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 131

-

-

-    ReferenceExpressionTypeArgumentsAndTrunk

-TypeAnnotations ::= TypeAnnotations

-Literal ::= Literal

-BooleanLiteral ::= BooleanLiteral

-JavaIdentifier ::= JavaIdentifier

-AjSimpleName ::= AjSimpleName

-JavaIdentifierNoAround ::= JavaIdentifierNoAround

-AjSimpleNameNoAround ::= AjSimpleNameNoAround

-Type ::= Type

-PrimitiveType ::= PrimitiveType

-ReferenceType ::= ReferenceType

-TypeAnnotationsopt ::= TypeAnnotationsopt

-NumericType ::= NumericType

-IntegralType ::= IntegralType

-FloatingPointType ::= FloatingPointType

-ClassOrInterfaceType ::= ClassOrInterfaceType

-ArrayType ::= ArrayType

-ClassOrInterface ::= ClassOrInterface

-GenericType ::= GenericType

-Name ::= Name

-TypeArguments ::= TypeArguments

-ArrayTypeWithTypeArgumentsName ::= ArrayTypeWithTypeArgumentsName

-Dims ::= Dims

-ClassType ::= ClassType

-NameOrAj ::= NameOrAj

-AjName ::= AjName

-SimpleNameOrAj ::= SimpleNameOrAj

-SimpleName ::= SimpleName

-AjQualifiedName ::= AjQualifiedName

-UnannotatableNameOrAj ::= UnannotatableNameOrAj

-UnannotatableName ::= UnannotatableName

-QualifiedName ::= QualifiedName

-TypeAnnotations0 ::= TypeAnnotations0

-TypeAnnotation ::= TypeAnnotation

-NormalTypeAnnotation ::= NormalTypeAnnotation

-MarkerTypeAnnotation ::= MarkerTypeAnnotation

-SingleMemberTypeAnnotation ::= SingleMemberTypeAnnotation

-TypeAnnotationName ::= TypeAnnotationName

-MemberValuePairsopt ::= MemberValuePairsopt

-SingleMemberAnnotationMemberValue ::= SingleMemberAnnotationMemberValue

-RejectTypeAnnotations ::= RejectTypeAnnotations

-PushZeroTypeAnnotations ::= PushZeroTypeAnnotations

-VariableDeclaratorIdOrThis ::= VariableDeclaratorIdOrThis

-VariableDeclaratorId ::= VariableDeclaratorId

-EnterCompilationUnit ::= EnterCompilationUnit

-InternalCompilationUnit ::= InternalCompilationUnit

-ImportDeclarations ::= ImportDeclarations

-ReduceImports ::= ReduceImports

-TypeDeclarations ::= TypeDeclarations

-Header ::= Header

-ClassHeader ::= ClassHeader

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 132

-

-

-InterfaceHeader ::= InterfaceHeader

-EnumHeader ::= EnumHeader

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeader

-RecoveryMethodHeader ::= RecoveryMethodHeader

-AllocationHeader ::= AllocationHeader

-ArrayCreationHeader ::= ArrayCreationHeader

-ConstructorHeader ::= ConstructorHeader

-EnumConstantHeader ::= EnumConstantHeader

-CatchFormalParameter ::= CatchFormalParameter

-PackageDeclarationName ::= PackageDeclarationName

-Modifiers ::= Modifiers

-PushRealModifiers ::= PushRealModifiers

-PackageComment ::= PackageComment

-SingleTypeImportDeclaration ::= SingleTypeImportDeclaration

-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclaration

-SingleStaticImportDeclaration ::= SingleStaticImportDeclaration

-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclaration

-SingleTypeImportDeclarationName ::= SingleTypeImportDeclarationName

-TypeImportOnDemandDeclarationName ::= TypeImportOnDemandDeclarationName

-ClassDeclaration ::= ClassDeclaration

-InterfaceDeclaration ::= InterfaceDeclaration

-EnumDeclaration ::= EnumDeclaration

-AnnotationTypeDeclaration ::= AnnotationTypeDeclaration

-Modifier ::= Modifier

-SimpleModifier ::= SimpleModifier

-Annotation ::= Annotation

-DeclareDeclaration ::= DeclareDeclaration

-InterTypeMethodDeclaration ::= InterTypeMethodDeclaration

-InterTypeFieldDeclaration ::= InterTypeFieldDeclaration

-PointcutDeclaration ::= PointcutDeclaration

-BasicAdviceDeclaration ::= BasicAdviceDeclaration

-AroundDeclaration ::= AroundDeclaration

-AspectDeclaration ::= AspectDeclaration

-ClassMemberDeclaration ::= ClassMemberDeclaration

-InterfaceMemberDeclaration ::= InterfaceMemberDeclaration

-AspectHeader ::= AspectHeader

-AspectBody ::= AspectBody

-AspectHeaderName ::= AspectHeaderName

-ClassHeaderExtendsopt ::= ClassHeaderExtendsopt

-ClassHeaderImplementsopt ::= ClassHeaderImplementsopt

-AspectHeaderRest ::= AspectHeaderRest

-AspectHeaderName1 ::= AspectHeaderName1

-AspectHeaderName2 ::= AspectHeaderName2

-TypeParameters ::= TypeParameters

-AspectHeaderRestStart ::= AspectHeaderRestStart

-PseudoTokens ::= PseudoTokens

-AspectBodyDeclarationsopt ::= AspectBodyDeclarationsopt

-AspectBodyDeclarations ::= AspectBodyDeclarations

-AspectBodyDeclaration ::= AspectBodyDeclaration

-NestedType ::= NestedType

-ClassBodyDeclarationNoAroundMethod ::= ClassBodyDeclarationNoAroundMethod

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 133

-

-

-ClassMemberDeclarationNoAroundMethod ::= ClassMemberDeclarationNoAroundMethod

-ConstructorDeclaration ::= ConstructorDeclaration

-Diet ::= Diet

-NestedMethod ::= NestedMethod

-CreateInitializer ::= CreateInitializer

-Block ::= Block

-MethodDeclarationNoAround ::= MethodDeclarationNoAround

-IntertypeClassDeclaration ::= IntertypeClassDeclaration

-AbstractMethodDeclarationNoAround ::= AbstractMethodDeclarationNoAround

-MethodHeaderNoAround ::= MethodHeaderNoAround

-MethodHeaderNameNoAround ::= MethodHeaderNameNoAround

-FormalParameterListopt ::= FormalParameterListopt

-MethodHeaderRightParen ::= MethodHeaderRightParen

-MethodHeaderExtendedDims ::= MethodHeaderExtendedDims

-MethodHeaderThrowsClauseopt ::= MethodHeaderThrowsClauseopt

-PointcutHeader ::= PointcutHeader

-AroundHeader ::= AroundHeader

-AroundHeaderName ::= AroundHeaderName

-BasicAdviceHeader ::= BasicAdviceHeader

-BeforeAdviceHeader ::= BeforeAdviceHeader

-AfterAdviceHeader ::= AfterAdviceHeader

-BeforeAdviceHeaderName ::= BeforeAdviceHeaderName

-AfterAdviceHeaderName ::= AfterAdviceHeaderName

-ExtraParamopt ::= ExtraParamopt

-FormalParameter ::= FormalParameter

-OnType ::= OnType

-InterTypeConstructorDeclaration ::= InterTypeConstructorDeclaration

-AbstractInterTypeMethodDeclaration ::= AbstractInterTypeMethodDeclaration

-InterTypeMethodHeader ::= InterTypeMethodHeader

-InterTypeMethodHeaderName ::= InterTypeMethodHeaderName

-TypeParametersAsReference ::= TypeParametersAsReference

-InterTypeConstructorHeader ::= InterTypeConstructorHeader

-InterTypeConstructorHeaderName ::= InterTypeConstructorHeaderName

-InterTypeFieldHeader ::= InterTypeFieldHeader

-InterTypeFieldBody ::= InterTypeFieldBody

-ForceNoDiet ::= ForceNoDiet

-VariableInitializer ::= VariableInitializer

-RestoreDiet ::= RestoreDiet

-DeclareHeader ::= DeclareHeader

-DeclareAnnotationHeader ::= DeclareAnnotationHeader

-PseudoTokensNoColon ::= PseudoTokensNoColon

-Annotations ::= Annotations

-PseudoToken ::= PseudoToken

-ColonPseudoToken ::= ColonPseudoToken

-ClassBody ::= ClassBody

-IntertypeClassHeader ::= IntertypeClassHeader

-IntertypeClassHeaderName ::= IntertypeClassHeaderName

-IntertypeClassHeaderName1 ::= IntertypeClassHeaderName1

-InterTypeClassHeaderName1 ::= InterTypeClassHeaderName1

-ClassHeaderName ::= ClassHeaderName

-ClassHeaderName1 ::= ClassHeaderName1

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 134

-

-

-ClassHeaderExtends ::= ClassHeaderExtends

-ClassHeaderImplements ::= ClassHeaderImplements

-InterfaceTypeList ::= InterfaceTypeList

-InterfaceType ::= InterfaceType

-ClassBodyDeclarationsopt ::= ClassBodyDeclarationsopt

-ClassBodyDeclaration ::= ClassBodyDeclaration

-MethodDeclaration ::= MethodDeclaration

-VariableDeclarators ::= VariableDeclarators

-VariableDeclarator ::= VariableDeclarator

-EnterVariable ::= EnterVariable

-ExitVariableWithoutInitialization ::= ExitVariableWithoutInitialization

-ExitVariableWithInitialization ::= ExitVariableWithInitialization

-Dimsopt ::= Dimsopt

-AbstractMethodDeclaration ::= AbstractMethodDeclaration

-MethodHeader ::= MethodHeader

-DefaultMethodHeader ::= DefaultMethodHeader

-MethodHeaderName ::= MethodHeaderName

-DefaultMethodHeaderName ::= DefaultMethodHeaderName

-ModifiersWithDefault ::= ModifiersWithDefault

-MethodHeaderThrowsClause ::= MethodHeaderThrowsClause

-ClassTypeList ::= ClassTypeList

-ConstructorHeaderName ::= ConstructorHeaderName

-FormalParameterList ::= FormalParameterList

-CatchType ::= CatchType

-UnionType ::= UnionType

-ClassTypeElt ::= ClassTypeElt

-StaticOnly ::= StaticOnly

-ExplicitConstructorInvocation ::= ExplicitConstructorInvocation

-ArgumentListopt ::= ArgumentListopt

-OnlyTypeArguments ::= OnlyTypeArguments

-Primary ::= Primary

-InterfaceBody ::= InterfaceBody

-InterfaceHeaderName ::= InterfaceHeaderName

-InterfaceHeaderExtendsopt ::= InterfaceHeaderExtendsopt

-InterfaceHeaderName1 ::= InterfaceHeaderName1

-InterfaceHeaderExtends ::= InterfaceHeaderExtends

-InterfaceMemberDeclarationsopt ::= InterfaceMemberDeclarationsopt

-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations

-ConstantDeclaration ::= ConstantDeclaration

-InvalidConstructorDeclaration ::= InvalidConstructorDeclaration

-InvalidInitializer ::= InvalidInitializer

-PushLeftBrace ::= PushLeftBrace

-,opt ::= ,opt

-VariableInitializers ::= VariableInitializers

-OpenBlock ::= OpenBlock

-BlockStatement ::= BlockStatement

-BlockStatementopt0 ::= BlockStatementopt0

-LocalVariableDeclarationStatement ::= LocalVariableDeclarationStatement

-Statement ::= Statement

-LocalVariableDeclaration ::= LocalVariableDeclaration

-PushModifiers ::= PushModifiers

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 135

-

-

-PushModifiersForHeader ::= PushModifiersForHeader

-StatementWithoutTrailingSubstatement ::= StatementWithoutTrailingSubstatement

-LabeledStatement ::= LabeledStatement

-IfThenStatement ::= IfThenStatement

-IfThenElseStatement ::= IfThenElseStatement

-WhileStatement ::= WhileStatement

-ForStatement ::= ForStatement

-EnhancedForStatement ::= EnhancedForStatement

-StatementNoShortIf ::= StatementNoShortIf

-LabeledStatementNoShortIf ::= LabeledStatementNoShortIf

-IfThenElseStatementNoShortIf ::= IfThenElseStatementNoShortIf

-WhileStatementNoShortIf ::= WhileStatementNoShortIf

-ForStatementNoShortIf ::= ForStatementNoShortIf

-EnhancedForStatementNoShortIf ::= EnhancedForStatementNoShortIf

-AssertStatement ::= AssertStatement

-EmptyStatement ::= EmptyStatement

-ExpressionStatement ::= ExpressionStatement

-SwitchStatement ::= SwitchStatement

-DoStatement ::= DoStatement

-BreakStatement ::= BreakStatement

-ContinueStatement ::= ContinueStatement

-ReturnStatement ::= ReturnStatement

-SynchronizedStatement ::= SynchronizedStatement

-ThrowStatement ::= ThrowStatement

-TryStatement ::= TryStatement

-TryStatementWithResources ::= TryStatementWithResources

-Label ::= Label

-StatementExpression ::= StatementExpression

-Assignment ::= Assignment

-PreIncrementExpression ::= PreIncrementExpression

-PreDecrementExpression ::= PreDecrementExpression

-PostIncrementExpression ::= PostIncrementExpression

-PostDecrementExpression ::= PostDecrementExpression

-MethodInvocation ::= MethodInvocation

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpression

-SwitchBlock ::= SwitchBlock

-SwitchBlockStatements ::= SwitchBlockStatements

-SwitchLabels ::= SwitchLabels

-SwitchBlockStatement ::= SwitchBlockStatement

-SwitchLabel ::= SwitchLabel

-ConstantExpression ::= ConstantExpression

-ForInitopt ::= ForInitopt

-Expressionopt ::= Expressionopt

-ForUpdateopt ::= ForUpdateopt

-ForInit ::= ForInit

-StatementExpressionList ::= StatementExpressionList

-ForUpdate ::= ForUpdate

-OnlySynchronized ::= OnlySynchronized

-TryBlock ::= TryBlock

-Catches ::= Catches

-Catchesopt ::= Catchesopt

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 136

-

-

-Finally ::= Finally

-ResourceSpecification ::= ResourceSpecification

-Resources ::= Resources

-;opt ::= ;opt

-Resource ::= Resource

-TrailingSemiColon ::= TrailingSemiColon

-ExitTryBlock ::= ExitTryBlock

-CatchClause ::= CatchClause

-PushLPAREN ::= PushLPAREN

-PushRPAREN ::= PushRPAREN

-PrimaryNoNewArray ::= PrimaryNoNewArray

-ArrayCreationWithArrayInitializer ::= ArrayCreationWithArrayInitializer

-ArrayCreationWithoutArrayInitializer ::= ArrayCreationWithoutArrayInitializer

-Expression_NotName ::= Expression_NotName

-FieldAccess ::= FieldAccess

-QualifiedSuperReceiver ::= QualifiedSuperReceiver

-ArrayAccess ::= ArrayAccess

-LambdaExpression ::= LambdaExpression

-ReferenceExpression ::= ReferenceExpression

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= 

-    ReferenceExpressionTypeArgumentsAndTrunk0

-NonWildTypeArgumentsopt ::= NonWildTypeArgumentsopt

-IdentifierOrNew ::= IdentifierOrNew

-LambdaParameters ::= LambdaParameters

-LambdaBody ::= LambdaBody

-NestedLambda ::= NestedLambda

-LambdaParameterList ::= LambdaParameterList

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList

-TypeElidedFormalParameter ::= TypeElidedFormalParameter

-ElidedLeftBraceAndReturn ::= ElidedLeftBraceAndReturn

-EnterInstanceCreationArgumentList ::= EnterInstanceCreationArgumentList

-UnqualifiedClassBodyopt ::= UnqualifiedClassBodyopt

-QualifiedClassBodyopt ::= QualifiedClassBodyopt

-ClassInstanceCreationExpressionName ::= ClassInstanceCreationExpressionName

-UnqualifiedEnterAnonymousClassBody ::= UnqualifiedEnterAnonymousClassBody

-QualifiedEnterAnonymousClassBody ::= QualifiedEnterAnonymousClassBody

-ArgumentList ::= ArgumentList

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs

-DimWithOrWithOutExpr ::= DimWithOrWithOutExpr

-DimsLoop ::= DimsLoop

-OneDimLoop ::= OneDimLoop

-PostfixExpression ::= PostfixExpression

-PushPosition ::= PushPosition

-UnaryExpression ::= UnaryExpression

-UnaryExpressionNotPlusMinus ::= UnaryExpressionNotPlusMinus

-CastExpression ::= CastExpression

-AdditionalBoundsListOpt ::= AdditionalBoundsListOpt

-InsideCastExpression ::= InsideCastExpression

-OnlyTypeArgumentsForCastExpression ::= OnlyTypeArgumentsForCastExpression

-InsideCastExpressionWithQualifiedGenerics ::= 

-    InsideCastExpressionWithQualifiedGenerics

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 137

-

-

-InsideCastExpressionLL1 ::= InsideCastExpressionLL1

-CastNameAndBounds ::= CastNameAndBounds

-InsideCastExpressionLL1WithBounds ::= InsideCastExpressionLL1WithBounds

-AdditionalBoundList ::= AdditionalBoundList

-MultiplicativeExpression ::= MultiplicativeExpression

-AdditiveExpression ::= AdditiveExpression

-ShiftExpression ::= ShiftExpression

-RelationalExpression ::= RelationalExpression

-InstanceofExpression ::= InstanceofExpression

-EqualityExpression ::= EqualityExpression

-AndExpression ::= AndExpression

-ExclusiveOrExpression ::= ExclusiveOrExpression

-InclusiveOrExpression ::= InclusiveOrExpression

-ConditionalAndExpression ::= ConditionalAndExpression

-ConditionalOrExpression ::= ConditionalOrExpression

-ConditionalExpression ::= ConditionalExpression

-AssignmentExpression ::= AssignmentExpression

-AssignmentOperator ::= AssignmentOperator

-InvalidArrayInitializerAssignement ::= InvalidArrayInitializerAssignement

-EnumBody ::= EnumBody

-EnumHeaderName ::= EnumHeaderName

-EnumBodyDeclarationsopt ::= EnumBodyDeclarationsopt

-EnumConstants ::= EnumConstants

-EnumConstant ::= EnumConstant

-EnumConstantHeaderName ::= EnumConstantHeaderName

-Argumentsopt ::= Argumentsopt

-Arguments ::= Arguments

-EnumDeclarations ::= EnumDeclarations

-EnhancedForStatementHeader ::= EnhancedForStatementHeader

-EnhancedForStatementHeaderInit ::= EnhancedForStatementHeaderInit

-SingleStaticImportDeclarationName ::= SingleStaticImportDeclarationName

-StaticImportOnDemandDeclarationName ::= StaticImportOnDemandDeclarationName

-TypeArgumentList1 ::= TypeArgumentList1

-TypeArgument1 ::= TypeArgument1

-TypeArgumentList ::= TypeArgumentList

-TypeArgument ::= TypeArgument

-Wildcard ::= Wildcard

-ReferenceType1 ::= ReferenceType1

-Wildcard1 ::= Wildcard1

-TypeArgumentList2 ::= TypeArgumentList2

-TypeArgument2 ::= TypeArgument2

-ReferenceType2 ::= ReferenceType2

-Wildcard2 ::= Wildcard2

-TypeArgumentList3 ::= TypeArgumentList3

-TypeArgument3 ::= TypeArgument3

-ReferenceType3 ::= ReferenceType3

-Wildcard3 ::= Wildcard3

-WildcardBounds ::= WildcardBounds

-WildcardBounds1 ::= WildcardBounds1

-WildcardBounds2 ::= WildcardBounds2

-WildcardBounds3 ::= WildcardBounds3

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 138

-

-

-TypeParameterHeader ::= TypeParameterHeader

-TypeParameterList1 ::= TypeParameterList1

-TypeParameterList ::= TypeParameterList

-TypeParameter ::= TypeParameter

-AdditionalBound ::= AdditionalBound

-TypeParameter1 ::= TypeParameter1

-AdditionalBoundList1 ::= AdditionalBoundList1

-AdditionalBound1 ::= AdditionalBound1

-PostfixExpression_NotName ::= PostfixExpression_NotName

-UnaryExpression_NotName ::= UnaryExpression_NotName

-UnaryExpressionNotPlusMinus_NotName ::= UnaryExpressionNotPlusMinus_NotName

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName

-AdditiveExpression_NotName ::= AdditiveExpression_NotName

-ShiftExpression_NotName ::= ShiftExpression_NotName

-RelationalExpression_NotName ::= RelationalExpression_NotName

-InstanceofExpression_NotName ::= InstanceofExpression_NotName

-EqualityExpression_NotName ::= EqualityExpression_NotName

-AndExpression_NotName ::= AndExpression_NotName

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName

-ConditionalExpression_NotName ::= ConditionalExpression_NotName

-AssignmentExpression_NotName ::= AssignmentExpression_NotName

-AnnotationTypeDeclarationHeaderName ::= AnnotationTypeDeclarationHeaderName

-AnnotationTypeBody ::= AnnotationTypeBody

-AnnotationTypeMemberDeclarationsopt ::= AnnotationTypeMemberDeclarationsopt

-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations

-AnnotationMethodHeaderName ::= AnnotationMethodHeaderName

-AnnotationMethodHeaderDefaultValueopt ::= AnnotationMethodHeaderDefaultValueopt

-DefaultValue ::= DefaultValue

-AnnotationMethodHeader ::= AnnotationMethodHeader

-NormalAnnotation ::= NormalAnnotation

-MarkerAnnotation ::= MarkerAnnotation

-SingleMemberAnnotation ::= SingleMemberAnnotation

-AnnotationName ::= AnnotationName

-MemberValuePairs ::= MemberValuePairs

-MemberValuePair ::= MemberValuePair

-EnterMemberValue ::= EnterMemberValue

-ExitMemberValue ::= ExitMemberValue

-MemberValueArrayInitializer ::= MemberValueArrayInitializer

-EnterMemberValueArrayInitializer ::= EnterMemberValueArrayInitializer

-MemberValues ::= MemberValues

-RecoveryMethodHeaderName ::= RecoveryMethodHeaderName

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 139

-

-

-Scopes:

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt  .RPAREN StatementNoShortIf 

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt  .RPAREN Statement 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 140

-

-

-                       MINUS Annotations  .SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS Annotations  .SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens  .SEMICOLON 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers  .JavaIdentifier 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-DoStatement ::= do Statement while LPAREN Expression  .RPAREN SEMICOLON 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf  .else StatementNoShortIf 

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt  .COLON PseudoTokens 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt  .PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .

-                          SEMICOLON RPAREN StatementNoShortIf 

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 RPAREN Statement 

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable  .EQUAL VariableInitializer 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .RBRACE 

-EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt  .RBRACE 

-ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt  .

-                        IdentifierOrNew 

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 141

-

-

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt  .

-                              Finally 

-AssertStatement ::= assert Expression COLON Expression  .SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations  .SEMICOLON 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .COMMA RBRACE 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers  .

-                                   JavaIdentifier 

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference  .

-                         DOT JavaIdentifier 

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt  .

-                       COLON PseudoTokens 

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt  .COLON 

-                 PseudoTokens 

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt  .PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN UnaryExpression 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable  .EQUAL 

-             VariableInitializer 

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments  .

-                                    ClassType LPAREN RPAREN 

-SingleMemberAnnotation ::= AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue  .RPAREN 

-NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-TypeParameter1 ::= TypeParameterHeader extends ReferenceType  .

-                   AdditionalBoundList1 

-TypeParameter ::= TypeParameterHeader extends ReferenceType  .

-                  AdditionalBoundList 

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                               Expression  .RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 142

-

-

-EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt  .RBRACE 

-EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt  .RBRACE 

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression  .

-                RBRACKET 

-ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression  .RBRACKET 

-ArrayAccess ::= AjName LBRACKET Expression  .RBRACKET 

-ArrayAccess ::= Name LBRACKET Expression  .RBRACKET 

-MethodInvocation ::= NameOrAj LPAREN ArgumentListopt  .RPAREN 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression  .RBRACKET 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt  .Identifier 

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt  .Identifier 

-ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt  .

-                        Identifier 

-ResourceSpecification ::= LPAREN Resources ;opt  .RPAREN 

-TryStatement ::= try TryBlock Catchesopt  .Finally 

-SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels  .RBRACE 

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-Block ::= OpenBlock LBRACE BlockStatementsopt  .RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .RBRACE 

-MethodBody ::= NestedMethod LBRACE BlockStatementsopt  .RBRACE 

-FieldDeclaration ::= Modifiersopt Type VariableDeclarators  .SEMICOLON 

-PseudoToken ::= if LPAREN Expression  .RPAREN 

-ExtraParamopt ::= Identifier LPAREN FormalParameter  .RPAREN 

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue  .RPAREN 

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-QualifiedName ::= Name DOT TypeAnnotations  .JavaIdentifier 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                               JavaIdentifier LPAREN 

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression  .COLON 

-                                  ConditionalExpression 

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression  .COLON ConditionalExpression 

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression  .COLON 

-                          ConditionalExpression 

-CatchClause ::= catch LPAREN CatchFormalParameter  .RPAREN Block 

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression  .RPAREN Block 

-WhileStatementNoShortIf ::= while LPAREN Expression  .RPAREN StatementNoShortIf 

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .COMMA RBRACE 

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 143

-

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt TypeParameters Type  .JavaIdentifier LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt  .aspect Identifier 

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds  .

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk  .COLON_COLON 

-                        IdentifierOrNew 

-SwitchStatement ::= switch LPAREN Expression  .RPAREN SwitchBlock 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType  .

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name  .DOT new 

-                                   LPAREN 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers  .Type JavaIdentifier 

-MethodInvocation ::= super DOT OnlyTypeArguments  .JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments  .

-                     JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     RPAREN 

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    RPAREN 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression  .RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .super LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .super LPAREN 

-                                  RPAREN SEMICOLON 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-ForStatementNoShortIf ::= for LPAREN ForInitopt  .SEMICOLON SEMICOLON RPAREN 

-                          StatementNoShortIf 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 144

-

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON SEMICOLON RPAREN Statement 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .DOT 

-                   ClassOrInterfaceType PushRPAREN UnaryExpressionNotPlusMinus 

-Resource ::= Modifiers Type PushRealModifiers  .VariableDeclaratorId EQUAL 

-             VariableInitializer 

-AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt  .RBRACE 

-Arguments ::= LPAREN ArgumentListopt  .RPAREN 

-EnumBody ::= LBRACE EnumBodyDeclarationsopt  .RBRACE 

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType  .

-                                        DimWithOrWithOutExprs 

-LambdaBody ::= ElidedLeftBraceAndReturn Expression  .

-               ElidedSemicolonAndRightBrace 

-LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList  .PushRPAREN 

-LambdaParameterList ::= PushLPAREN FormalParameterListopt  .PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN Expression_NotName  .PushRPAREN 

-TryStatement ::= try TryBlock  .Catches 

-ThrowStatement ::= throw Expression  .SEMICOLON 

-ReturnStatement ::= return Expressionopt  .SEMICOLON 

-AssertStatement ::= assert Expression  .SEMICOLON 

-SwitchLabel ::= case ConstantExpression  .COLON 

-SwitchBlock ::= LBRACE SwitchLabels  .RBRACE 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .RBRACE 

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt  .RBRACE 

-CatchFormalParameter ::= Modifiersopt CatchType  .VariableDeclaratorId 

-FormalParameter ::= Modifiersopt Type  .VariableDeclaratorIdOrThis 

-ClassBody ::= LBRACE ClassBodyDeclarationsopt  .RBRACE 

-DeclareDeclaration ::= DeclareHeader PseudoTokens  .SEMICOLON 

-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody  .

-                              SEMICOLON 

-AspectBody ::= LBRACE AspectBodyDeclarationsopt  .RBRACE 

-AnnotationMethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType  .

-                                      DimWithOrWithOutExprs ArrayInitializer 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType  .DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .SwitchLabels RBRACE 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen 

-DefaultMethodHeaderName ::= ModifiersWithDefault Type  .Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt  .MethodHeaderRightParen 

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 145

-

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen SEMICOLON 

-MethodHeaderNameNoAround ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt  .

-                           MethodHeaderRightParen 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                               JavaIdentifier LPAREN 

-EnumBody ::= LBRACE EnumConstants  .COMMA RBRACE 

-CastExpression ::= PushLPAREN Name  .PushRPAREN UnaryExpressionNotPlusMinus 

-ReferenceExpression ::= Name Dimsopt  .COLON_COLON IdentifierOrNew 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON IdentifierOrNew 

-AssertStatement ::= assert Expression  .COLON Expression SEMICOLON 

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt TypeParameters  .Type JavaIdentifier LPAREN 

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt  .

-                        MethodHeaderRightParen 

-MethodHeader ::= MethodHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       Annotations SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType  .DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT new LPAREN 

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt  .

-                          MethodHeaderRightParen 

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt  .

-                         MethodHeaderRightParen 

-FormalParameter ::= Modifiersopt Type  .AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       MINUS Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON PLUS 

-                       Annotations SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .GenericType 

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .PLUS DOT new LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt  .

-                       MethodHeaderRightParen COLON PseudoTokens 

-AroundHeader ::= AroundHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen COLON PseudoTokens 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 146

-

-

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-CastExpression ::= PushLPAREN Name  .Dims PushRPAREN 

-                   UnaryExpressionNotPlusMinus 

-DoStatement ::= do Statement  .while LPAREN Expression RPAREN SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen COLON PseudoTokens 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression 

-                   PushRPAREN UnaryExpressionNotPlusMinus 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments  .ClassType LPAREN RPAREN 

-ClassInstanceCreationExpression ::= new OnlyTypeArguments  .ClassType LPAREN 

-                                    RPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-Resource ::= Type PushModifiers  .VariableDeclaratorId EQUAL 

-             VariableInitializer 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType PushRPAREN UnaryExpressionNotPlusMinus 

-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader  .SEMICOLON 

-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader  .

-                              AnnotationTypeBody 

-AdditionalBoundList1 ::= AdditionalBoundList  .AdditionalBound1 

-TypeParameter1 ::= TypeParameterHeader  .GREATER 

-TypeParameterHeader ::= TypeAnnotationsopt  .JavaIdentifier 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType1 ::= ReferenceType  .GREATER 

-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader  .

-                                  StatementNoShortIf 

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-EnumDeclaration ::= EnumHeader  .EnumBody 

-CastNameAndBounds ::= Name  .AdditionalBoundList 

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-ExpressionStatement ::= StatementExpression  .SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 147

-

-

-LocalVariableDeclarationStatement ::= LocalVariableDeclaration  .SEMICOLON 

-InvalidConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .SEMICOLON 

-InterfaceDeclaration ::= InterfaceHeader  .InterfaceBody 

-ConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-IntertypeClassDeclaration ::= IntertypeClassHeader  .ClassBody 

-ClassDeclaration ::= ClassHeader  .ClassBody 

-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader  .SEMICOLON 

-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround  .SEMICOLON 

-AspectDeclaration ::= AspectHeader  .AspectBody 

-Name ::= TypeAnnotations  .SimpleName 

-ArrayType ::= ArrayTypeWithTypeArgumentsName  .Dims 

-ArrayType ::= PrimitiveType  .Dims 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType1 

-TypeParameterList1 ::= TypeParameterList  .COMMA TypeParameter1 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION WildcardBounds3 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-TypeArgumentList3 ::= TypeArgumentList  .COMMA TypeArgument3 

-ReferenceType2 ::= ClassOrInterface  .LESS TypeArgumentList3 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 148

-

-

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-FieldAccess ::= QualifiedSuperReceiver  .DOT Identifier 

-OneDimLoop ::= TypeAnnotations  .LBRACKET RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET RBRACKET 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-LambdaExpression ::= LambdaParameters  .ARROW LambdaBody 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-PrimaryNoNewArray ::= Name  .DOT class 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT this 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-CatchFormalParameter ::= Modifiersopt  .CatchType VariableDeclaratorId 

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ModifiersWithDefault ::= Modifiersopt  .default 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-AnnotationMethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType 

-                   AdditionalBoundList1 

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit  .COLON 

-                               Expression RPAREN 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-MethodInvocation ::= NameOrAj  .LPAREN RPAREN 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET Expression RBRACKET 

-ReferenceExpression ::= QualifiedSuperReceiver  .COLON_COLON Identifier 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-LocalVariableDeclaration ::= Modifiers  .Type VariableDeclarators 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .Type Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                               JavaIdentifier LPAREN 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT interface JavaIdentifier 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 149

-

-

-FormalParameter ::= Modifiersopt  .Type ELLIPSIS VariableDeclaratorIdOrThis 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                            Identifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-IntertypeClassHeaderName1 ::= Modifiersopt  .class OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT new LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-AspectHeaderName2 ::= Modifiersopt  .privileged aspect Identifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT interface JavaIdentifier 

-                                        TypeParameters 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT JavaIdentifier LPAREN RPAREN 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        IdentifierOrNew 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .super LPAREN RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .this LPAREN RPAREN 

-                                  SEMICOLON 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters GenericType 

-                                   DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name PLUS DOT new LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN RPAREN 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN RPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    ClassType LPAREN RPAREN 

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT this LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT super LPAREN RPAREN SEMICOLON 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 150

-

-

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    OnlyTypeArguments ClassType LPAREN RPAREN 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments this LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments super LPAREN 

-                                  RPAREN SEMICOLON 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-Resource ::= Modifiers  .Type VariableDeclaratorId EQUAL VariableInitializer 

-

-This grammar is LALR(1).

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 151

-

-

-Number of Terminals: 125

-Number of Nonterminals: 423

-Number of Productions: 997

-Number of Single Productions: 297

-Number of Items: 3178

-Number of Scopes: 374

-Number of States: 1275

-Number of Shift actions: 7501

-Number of Goto actions: 10870

-Number of Shift/Reduce actions: 1481

-Number of Goto/Reduce actions: 2978

-Number of Reduce actions: 19101

-Number of Shift-Reduce conflicts: 0

-Number of Reduce-Reduce conflicts: 0

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 152

-

-Shift STATES: 

-

-

-STATE 1 ------------------------------------------------------------------------

-( )

-

-$acc ::= .Goal 

-

-Goal ::= .PLUS_PLUS CompilationUnit 

-Goal ::= .MINUS_MINUS MethodBody 

-Goal ::= .RIGHT_SHIFT StaticInitializer 

-Goal ::= .RIGHT_SHIFT Initializer 

-Goal ::= .UNSIGNED_RIGHT_SHIFT Header1 Modifiersopt 

-Goal ::= .NOT Header2 Modifiersopt 

-Goal ::= .MULTIPLY BlockStatements 

-Goal ::= .MULTIPLY CatchHeader 

-Goal ::= .AND_AND FieldDeclaration 

-Goal ::= .OR_OR ImportDeclaration 

-Goal ::= .QUESTION PackageDeclaration 

-Goal ::= .PLUS TypeDeclaration 

-Goal ::= .DIVIDE GenericMethodDeclaration 

-Goal ::= .AND ClassBodyDeclarations 

-Goal ::= .REMAINDER Expression 

-Goal ::= .REMAINDER ArrayInitializer 

-Goal ::= .TWIDDLE BlockStatementsopt 

-Goal ::= .LBRACE BlockStatementopt 

-Goal ::= .OR_OR MemberValue 

-Goal ::= .QUESTION AnnotationTypeMemberDeclaration 

-Goal ::= .ARROW ParenthesizedLambdaParameterList 

-Goal ::= .LPAREN ParenthesizedCastNameAndBounds 

-Goal ::= .LESS ReferenceExpressionTypeArgumentsAndTrunk 

-Goal ::= .AT TypeAnnotations 

-

-AT                      Shift  3

-LESS                    Shift  4

-LPAREN                  Shift  5

-ARROW                   Shift  6

-LBRACE                  Shift  7

-TWIDDLE                 Shift  8

-REMAINDER               Shift  9

-AND                     Shift  10

-DIVIDE                  Shift  11

-PLUS                    Shift  12

-QUESTION                Shift  13

-OR_OR                   Shift  14

-AND_AND                 Shift  15

-MULTIPLY                Shift  16

-NOT                     Shift  17

-UNSIGNED_RIGHT_SHIFT    Shift  18

-RIGHT_SHIFT             Shift  19

-MINUS_MINUS             Shift  20

-PLUS_PLUS               Shift  21

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 153

-

-

-

-Goal                    Goto   2

-

-

-STATE 2 ------------------------------------------------------------------------

-( 1 )

-

-$acc ::= Goal . (0)

-

-$eof    Accept

-

-

-STATE 3 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= AT  .TypeAnnotations 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotations               Gt/Rd  24

-

-

-STATE 4 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LESS  .ReferenceExpressionTypeArgumentsAndTrunk 

-

-ReferenceExpressionTypeArgumentsAndTrunk ::= .

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                         

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 154

-

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                                         Shift  25

-

-OnlyTypeArguments                            Goto   26

-ReferenceExpressionTypeArgumentsAndTrunk0    Gt/Rd  598

-ReferenceExpressionTypeArgumentsAndTrunk     Gt/Rd  23

-

-

-STATE 5 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LPAREN  .ParenthesizedCastNameAndBounds 

-

-ParenthesizedCastNameAndBounds ::= .LPAREN CastNameAndBounds RPAREN 

-

-LPAREN                            Shift  27

-

-ParenthesizedCastNameAndBounds    Gt/Rd  22

-

-

-STATE 6 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= ARROW  .ParenthesizedLambdaParameterList 

-

-PushLPAREN ::= .LPAREN 

-ParenthesizedLambdaParameterList ::= .LambdaParameterList 

-LambdaParameterList ::= .PushLPAREN FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= .PushLPAREN TypeElidedFormalParameterList PushRPAREN 

-

-LPAREN                              Sh/Rd  577

-

-PushLPAREN                          Goto   28

-LambdaParameterList                 Gt/Rd  615

-ParenthesizedLambdaParameterList    Gt/Rd  21

-

-

-STATE 7 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= LBRACE  .BlockStatementopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 155

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 156

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 157

-

-

-BlockStatementopt ::= .BlockStatementopt0 

-BlockStatementopt0 ::= . (471)

-BlockStatementopt0 ::= .BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 158

-

-

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 159

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 160

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 161

-

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 162

-

-

-BlockStatement                          Goto   1041

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1041

-LabeledStatement                        Goto   1041

-IfThenStatement                         Goto   1041

-IfThenElseStatement                     Goto   1041

-WhileStatement                          Goto   1041

-ForStatement                            Goto   1041

-EnhancedForStatement                    Goto   1041

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 163

-

-

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1041

-Block                                   Goto   1041

-EmptyStatement                          Goto   1041

-ExpressionStatement                     Goto   1041

-SwitchStatement                         Goto   1041

-DoStatement                             Goto   1041

-BreakStatement                          Goto   1041

-ContinueStatement                       Goto   1041

-ReturnStatement                         Goto   1041

-SynchronizedStatement                   Goto   1041

-ThrowStatement                          Goto   1041

-TryStatement                            Goto   1041

-TryStatementWithResources               Goto   1041

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1041

-Statement                               Goto   1041

-ClassDeclaration                        Goto   1041

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 164

-

-

-EnumDeclaration                         Gt/Rd  478

-BlockStatementopt0                      Gt/Rd  470

-BlockStatementopt                       Gt/Rd  18

-

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-$eof                                    Reduce 471

-

-Default reduction to rule  92

-

-

-STATE 8 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= TWIDDLE  .BlockStatementsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 165

-

-

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 166

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 167

-

-

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 168

-

-

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 169

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 170

-

-

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 171

-

-

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 172

-

-

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 173

-

-

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Gt/Rd  17

-

-$eof                                    Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 174

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 9 ------------------------------------------------------------------------

-( 1 )

-

-Goal ::= REMAINDER  .Expression 

-Goal ::= REMAINDER  .ArrayInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 175

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 176

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 177

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 178

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 179

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 180

-

-

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Gt/Rd  15

-ArrayInitializer                        Gt/Rd  16

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 10 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= AND  .ClassBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassMemberDeclaration ::= .AspectDeclaration 

-ClassMemberDeclaration ::= .PointcutDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 181

-

-

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclarations ::= .ClassBodyDeclaration 

-ClassBodyDeclarations ::= .ClassBodyDeclarations ClassBodyDeclaration 

-ClassBodyDeclaration ::= .ClassMemberDeclaration 

-ClassBodyDeclaration ::= .StaticInitializer 

-ClassBodyDeclaration ::= .ConstructorDeclaration 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .FieldDeclaration 

-ClassMemberDeclaration ::= .MethodDeclaration 

-ClassMemberDeclaration ::= .ClassDeclaration 

-ClassMemberDeclaration ::= .InterfaceDeclaration 

-ClassMemberDeclaration ::= .EnumDeclaration 

-ClassMemberDeclaration ::= .AnnotationTypeDeclaration 

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .AbstractMethodDeclaration 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 182

-

-

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 183

-

-

-ClassMemberDeclaration                 Goto   1065

-StaticInitializer                      Goto   1065

-ConstructorDeclaration                 Goto   1065

-Diet                                   Goto   135

-ConstructorHeaderName                  Goto   134

-Modifiersopt                           Goto   133

-ConstructorHeader                      Goto   132

-StaticOnly                             Goto   130

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-AbstractMethodDeclaration              Goto   1065

-MethodHeader                           Goto   123

-DefaultMethodHeader                    Goto   122

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-MethodHeaderName                       Goto   119

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Goto   1065

-PointcutDeclaration                    Goto   1065

-FieldDeclaration                       Goto   1065

-MethodDeclaration                      Goto   1065

-ClassDeclaration                       Goto   1065

-InterfaceDeclaration                   Goto   1065

-EnumDeclaration                        Goto   1065

-AnnotationTypeDeclaration              Goto   1065

-ClassBodyDeclaration                   Gt/Rd  355

-ClassBodyDeclarations                  Goto   118

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 184

-

-

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 11 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= DIVIDE  .GenericMethodDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 185

-

-

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                     Shift  1064

-volatile                     Shift  1064

-transient                    Shift  1064

-synchronized                 Shift  1064

-native                       Shift  1064

-final                        Shift  1064

-abstract                     Shift  1064

-static                       Shift  1064

-private                      Shift  1064

-protected                    Shift  1064

-public                       Shift  1064

-AT                           Shift  136

-

-AbstractMethodDeclaration    Gt/Rd  13

-MethodHeader                 Goto   123

-DefaultMethodHeader          Goto   122

-ModifiersWithDefault         Goto   121

-Modifiersopt                 Goto   138

-DefaultMethodHeaderName      Goto   120

-MethodHeaderName             Goto   119

-Modifiers                    Goto   137

-SimpleModifier               Goto   1064

-Annotation                   Gt/Rd  171

-AnnotationName               Goto   81

-NormalAnnotation             Goto   1047

-MarkerAnnotation             Goto   1047

-SingleMemberAnnotation       Goto   1047

-Modifier                     Goto   1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 186

-

-

-ConstructorHeader            Goto   132

-ConstructorHeaderName        Goto   134

-MethodDeclaration            Gt/Rd  13

-ConstructorDeclaration       Gt/Rd  13

-GenericMethodDeclaration     Gt/Rd  13

-

-Identifier                   Reduce 764

-boolean                      Reduce 764

-byte                         Reduce 764

-char                         Reduce 764

-default                      Reduce 764

-double                       Reduce 764

-float                        Reduce 764

-int                          Reduce 764

-long                         Reduce 764

-short                        Reduce 764

-void                         Reduce 764

-aspect                       Reduce 764

-LESS                         Reduce 764

-AT308                        Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 12 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= PLUS  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 187

-

-

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 188

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  12

-InterfaceDeclaration                   Gt/Rd  12

-EnumDeclaration                        Gt/Rd  12

-AnnotationTypeDeclaration              Gt/Rd  12

-AspectDeclaration                      Gt/Rd  12

-TypeDeclaration                        Gt/Rd  12

-

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 13 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= QUESTION  .PackageDeclaration 

-Goal ::= QUESTION  .AnnotationTypeMemberDeclaration 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 189

-

-

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 190

-

-

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeaderName             Goto   145

-Modifiers                              Goto   144

-Modifiersopt                           Goto   143

-FieldDeclaration                       Gt/Rd  20

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassDeclaration                       Gt/Rd  20

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 191

-

-

-InterfaceDeclaration                   Gt/Rd  20

-EnumDeclaration                        Gt/Rd  20

-AnnotationTypeDeclaration              Gt/Rd  20

-AspectDeclaration                      Gt/Rd  20

-AspectHeaderName                       Goto   125

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Gt/Rd  20

-ConstructorDeclaration                 Gt/Rd  20

-TypeDeclaration                        Gt/Rd  20

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-PackageDeclaration                     Gt/Rd  11

-AnnotationTypeMemberDeclaration        Gt/Rd  20

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 192

-

-

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 14 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= OR_OR  .ImportDeclaration 

-Goal ::= OR_OR  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 193

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 194

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 195

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 196

-

-

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 197

-

-

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-import                                  Shift  149

-AT                                      Shift  136

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-false                                   Shift  1066

-true                                    Shift  1066

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 198

-

-

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 199

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  19

-MarkerAnnotation                        Gt/Rd  19

-SingleMemberAnnotation                  Gt/Rd  19

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  19

-Annotation                              Gt/Rd  19

-MemberValueArrayInitializer             Gt/Rd  19

-SingleTypeImportDeclarationName         Goto   150

-TypeImportOnDemandDeclarationName       Goto   148

-SingleStaticImportDeclarationName       Goto   147

-StaticImportOnDemandDeclarationName     Goto   146

-SingleTypeImportDeclaration             Gt/Rd  10

-TypeImportOnDemandDeclaration           Gt/Rd  10

-SingleStaticImportDeclaration           Gt/Rd  10

-StaticImportOnDemandDeclaration         Gt/Rd  10

-ImportDeclaration                       Gt/Rd  10

-MemberValue                             Gt/Rd  19

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 15 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= AND_AND  .FieldDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 200

-

-

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   173

-FieldDeclaration          Gt/Rd  9

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 201

-

-

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 16 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= MULTIPLY  .BlockStatements 

-Goal ::= MULTIPLY  .CatchHeader 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 202

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CatchHeader ::= .catch LPAREN CatchFormalParameter RPAREN LBRACE 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 203

-

-

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 204

-

-

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 205

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 206

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 207

-

-

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 208

-

-

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-catch                                   Shift  175

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 209

-

-

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 210

-

-

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   174

-CatchHeader                             Gt/Rd  8

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 17 -----------------------------------------------------------------------

-( 1 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 211

-

-

-Goal ::= NOT  .Header2 Modifiersopt 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 212

-

-

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 213

-

-

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-AllocationHeader ::= .new ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= .new PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= .new ClassOrInterfaceType DimWithOrWithOutExprs 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault Type JavaIdentifierNoAround 

-                             LPAREN 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 214

-

-

-

-import                                 Shift  149

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-new                                    Shift  180

-declare                                Shift  183

-

-ImportDeclaration                      Goto   176

-PackageDeclaration                     Goto   176

-ClassHeader                            Goto   176

-InterfaceHeader                        Goto   176

-EnumHeader                             Goto   176

-AnnotationTypeDeclarationHeader        Goto   176

-StaticInitializer                      Goto   176

-RecoveryMethodHeader                   Goto   176

-FieldDeclaration                       Goto   176

-AllocationHeader                       Goto   176

-ArrayCreationHeader                    Goto   176

-DeclareDeclaration                     Goto   176

-InterTypeMethodDeclaration             Goto   176

-InterTypeFieldDeclaration              Goto   176

-PointcutDeclaration                    Goto   176

-BasicAdviceDeclaration                 Goto   176

-AroundDeclaration                      Goto   176

-AspectDeclaration                      Goto   176

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   192

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AroundHeaderName                       Goto   191

-AroundHeader                           Goto   190

-BeforeAdviceHeader                     Goto   187

-AfterAdviceHeader                      Goto   187

-AfterAdviceHeaderName                  Goto   189

-BeforeAdviceHeaderName                 Goto   188

-BasicAdviceHeader                      Goto   187

-PointcutHeader                         Goto   124

-InterTypeFieldHeader                   Goto   186

-InterTypeMethodHeader                  Goto   185

-InterTypeMethodHeaderName              Goto   184

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 215

-

-

-AbstractInterTypeMethodDeclaration     Goto   176

-DeclareHeader                          Goto   182

-DeclareAnnotationHeader                Goto   181

-ModifiersWithDefault                   Goto   179

-RecoveryMethodHeaderName               Goto   178

-StaticOnly                             Goto   130

-Modifiers                              Goto   144

-AnnotationTypeDeclarationHeaderName    Goto   31

-EnumHeaderName                         Goto   29

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   176

-TypeImportOnDemandDeclaration          Goto   176

-SingleStaticImportDeclaration          Goto   176

-StaticImportOnDemandDeclaration        Goto   176

-EnumConstantHeaderName                 Goto   177

-Header                                 Goto   176

-EnumConstantHeader                     Goto   176

-Header2                                Goto   176

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 216

-

-

-pointcut                               Reduce 764

-around                                 Reduce 764

-before                                 Reduce 764

-after                                  Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 18 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= UNSIGNED_RIGHT_SHIFT  .Header1 Modifiersopt 

-

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 217

-

-

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 218

-

-

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-AllocationHeader ::= .new ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= .new PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= .new ClassOrInterfaceType DimWithOrWithOutExprs 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 219

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= .ModifiersWithDefault Type JavaIdentifierNoAround 

-                             LPAREN 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= .RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-import                                 Shift  149

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-new                                    Shift  180

-declare                                Shift  183

-

-ImportDeclaration                      Goto   193

-PackageDeclaration                     Goto   193

-ClassHeader                            Goto   193

-InterfaceHeader                        Goto   193

-EnumHeader                             Goto   193

-AnnotationTypeDeclarationHeader        Goto   193

-StaticInitializer                      Goto   193

-RecoveryMethodHeader                   Goto   193

-FieldDeclaration                       Goto   193

-AllocationHeader                       Goto   193

-ArrayCreationHeader                    Goto   193

-DeclareDeclaration                     Goto   193

-InterTypeMethodDeclaration             Goto   193

-InterTypeFieldDeclaration              Goto   193

-PointcutDeclaration                    Goto   193

-BasicAdviceDeclaration                 Goto   193

-AroundDeclaration                      Goto   193

-AspectDeclaration                      Goto   193

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 220

-

-

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   194

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AroundHeaderName                       Goto   191

-AroundHeader                           Goto   190

-BeforeAdviceHeader                     Goto   187

-AfterAdviceHeader                      Goto   187

-AfterAdviceHeaderName                  Goto   189

-BeforeAdviceHeaderName                 Goto   188

-BasicAdviceHeader                      Goto   187

-PointcutHeader                         Goto   124

-InterTypeFieldHeader                   Goto   186

-InterTypeMethodHeader                  Goto   185

-InterTypeMethodHeaderName              Goto   184

-AbstractInterTypeMethodDeclaration     Goto   193

-DeclareHeader                          Goto   182

-DeclareAnnotationHeader                Goto   181

-ModifiersWithDefault                   Goto   179

-RecoveryMethodHeaderName               Goto   178

-StaticOnly                             Goto   130

-Modifiers                              Goto   144

-AnnotationTypeDeclarationHeaderName    Goto   31

-EnumHeaderName                         Goto   29

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-PackageComment                         Goto   141

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-PackageDeclarationName                 Goto   140

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   193

-TypeImportOnDemandDeclaration          Goto   193

-SingleStaticImportDeclaration          Goto   193

-StaticImportOnDemandDeclaration        Goto   193

-ConstructorHeaderName                  Goto   134

-Header                                 Goto   193

-ConstructorHeader                      Goto   193

-Header1                                Goto   193

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 221

-

-

-package                                Reduce 143

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-around                                 Reduce 764

-before                                 Reduce 764

-after                                  Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 19 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= RIGHT_SHIFT  .StaticInitializer 

-Goal ::= RIGHT_SHIFT  .Initializer 

-

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-

-static               Sh/Rd  419

-

-Diet                 Goto   195

-StaticOnly           Goto   130

-StaticInitializer    Gt/Rd  3

-Initializer          Gt/Rd  4

-

-LBRACE               Reduce 361

-

-Default reduction to rule  361

-

-

-STATE 20 -----------------------------------------------------------------------

-( 1 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 222

-

-

-Goal ::= MINUS_MINUS  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  2

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 21 -----------------------------------------------------------------------

-( 1 )

-

-Goal ::= PLUS_PLUS  .CompilationUnit 

-

-CompilationUnit ::= .EnterCompilationUnit InternalCompilationUnit 

-EnterCompilationUnit ::= . (119)

-

-EnterCompilationUnit    Goto   197

-CompilationUnit         Gt/Rd  1

-

-abstract                Reduce 119

-class                   Reduce 119

-enum                    Reduce 119

-final                   Reduce 119

-import                  Reduce 119

-interface               Reduce 119

-native                  Reduce 119

-package                 Reduce 119

-private                 Reduce 119

-protected               Reduce 119

-public                  Reduce 119

-static                  Reduce 119

-strictfp                Reduce 119

-synchronized            Reduce 119

-transient               Reduce 119

-volatile                Reduce 119

-aspect                  Reduce 119

-privileged              Reduce 119

-SEMICOLON               Reduce 119

-AT                      Reduce 119

-$eof                    Reduce 119

-

-Default reduction to rule  119

-

-

-STATE 22 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 24 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 223

-

-

-  102 121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 

-  209 216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 

-  262 263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 

-  300 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 

-  362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 

-  381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 

-  494 495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 

-  596 632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 

-  700 702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 

-  751 752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 

-  842 848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 

-  900 911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 

-  951 953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 

-  1012 1013 1023 1028 1032 1033 1036 )

-

-TypeAnnotationName ::= AT308  .UnannotatableName 

-

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-

-Identifier           Shift  198

-

-SimpleName           Goto   198

-UnannotatableName    Goto   198

-

-

-STATE 23 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 24 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 

-  102 121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 

-  209 216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 

-  262 263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 

-  300 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 

-  362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 

-  381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 

-  494 495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 

-  596 632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 

-  700 702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 

-  751 752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 

-  842 848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 

-  900 911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 

-  951 953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 

-  1012 1013 1023 1028 1032 1033 1036 )

-

-NormalTypeAnnotation ::= TypeAnnotationName  .LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= TypeAnnotationName . (102)

-SingleMemberTypeAnnotation ::= TypeAnnotationName  .LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 224

-

-

-LPAREN        Shift  199

-

-Identifier    Reduce 102

-boolean       Reduce 102

-byte          Reduce 102

-char          Reduce 102

-double        Reduce 102

-float         Reduce 102

-int           Reduce 102

-long          Reduce 102

-short         Reduce 102

-void          Reduce 102

-aspect        Reduce 102

-pointcut      Reduce 102

-around        Reduce 102

-before        Reduce 102

-after         Reduce 102

-declare       Reduce 102

-privileged    Reduce 102

-LBRACKET      Reduce 102

-QUESTION      Reduce 102

-ELLIPSIS      Reduce 102

-AT308         Reduce 102

-$eof          Reduce 102

-

-Default reduction to rule  102

-

-

-STATE 24 -----------------------------------------------------------------------

-( 3 7 8 9 14 16 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 102 

-  121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 209 

-  216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 262 

-  263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 300 

-  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 

-  322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 362 

-  363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 

-  382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 

-  401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 494 

-  495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 596 

-  632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 700 

-  702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 751 

-  752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 842 

-  848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 900 

-  911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 951 

-  953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 1012 

-  1013 1023 1028 1032 1033 1036 )

-

-TypeAnnotations ::= TypeAnnotations0 . (94)

-TypeAnnotations0 ::= TypeAnnotations0  .TypeAnnotation 

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 225

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotation                Gt/Rd  96

-

-Identifier                    Reduce 94

-boolean                       Reduce 94

-byte                          Reduce 94

-char                          Reduce 94

-double                        Reduce 94

-float                         Reduce 94

-int                           Reduce 94

-long                          Reduce 94

-short                         Reduce 94

-void                          Reduce 94

-aspect                        Reduce 94

-pointcut                      Reduce 94

-around                        Reduce 94

-before                        Reduce 94

-after                         Reduce 94

-declare                       Reduce 94

-privileged                    Reduce 94

-LBRACKET                      Reduce 94

-QUESTION                      Reduce 94

-ELLIPSIS                      Reduce 94

-$eof                          Reduce 94

-

-Default reduction to rule  94

-

-

-STATE 25 -----------------------------------------------------------------------

-( 4 7 8 16 46 60 61 76 93 174 252 253 265 266 267 268 273 275 288 290 300 302 

-  432 504 534 542 724 725 735 842 919 923 969 1005 1007 1011 1012 1013 1033 

-  1036 )

-

-OnlyTypeArguments ::= LESS  .TypeArgumentList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 226

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType1                    Gt/Rd  819

-Wildcard1                         Gt/Rd  819

-TypeAnnotationsopt                Goto   205

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 227

-

-

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   202

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   201

-TypeArgument                      Goto   200

-TypeArgumentList                  Goto   200

-Wildcard                          Goto   200

-TypeArgument1                     Gt/Rd  819

-TypeArgumentList1                 Gt/Rd  819

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 26 -----------------------------------------------------------------------

-( 4 288 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments  .Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments  .DOT 

-                                        ClassOrInterfaceType Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 228

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-DOT                           Shift  206

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  599

-Dimsopt                       Gt/Rd  599

-

-COLON_COLON                   Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 27 -----------------------------------------------------------------------

-( 5 )

-

-ParenthesizedCastNameAndBounds ::= LPAREN  .CastNameAndBounds RPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 229

-

-

-CastNameAndBounds ::= .Name AdditionalBoundList 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   211

-Name                          Goto   211

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-CastNameAndBounds             Goto   210

-

-

-STATE 28 -----------------------------------------------------------------------

-( 6 247 )

-

-LambdaParameterList ::= PushLPAREN  .FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= PushLPAREN  .TypeElidedFormalParameterList PushRPAREN 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-TypeElidedFormalParameterList ::= .TypeElidedFormalParameterList COMMA 

-                                  TypeElidedFormalParameter 

-TypeElidedFormalParameter ::= .Modifiersopt Identifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 230

-

-

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                         Shift  1064

-volatile                         Shift  1064

-transient                        Shift  1064

-synchronized                     Shift  1064

-native                           Shift  1064

-final                            Shift  1064

-abstract                         Shift  1064

-static                           Shift  1064

-private                          Shift  1064

-protected                        Shift  1064

-public                           Shift  1064

-AT                               Shift  136

-

-Modifiersopt                     Goto   216

-TypeElidedFormalParameter        Goto   215

-TypeElidedFormalParameterList    Goto   215

-FormalParameter                  Goto   1080

-FormalParameterList              Goto   214

-Modifiers                        Goto   137

-SimpleModifier                   Goto   1064

-Annotation                       Gt/Rd  171

-AnnotationName                   Goto   81

-NormalAnnotation                 Goto   1047

-MarkerAnnotation                 Goto   1047

-SingleMemberAnnotation           Goto   1047

-Modifier                         Goto   1064

-FormalParameterListopt           Goto   213

-

-RPAREN                           Reduce 774

-Identifier                       Reduce 764

-boolean                          Reduce 764

-byte                             Reduce 764

-char                             Reduce 764

-double                           Reduce 764

-float                            Reduce 764

-int                              Reduce 764

-long                             Reduce 764

-short                            Reduce 764

-void                             Reduce 764

-AT308                            Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 231

-

-

-

-Default reduction to rule  764

-

-

-STATE 29 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-EnumHeader ::= EnumHeaderName  .ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  790

-ClassHeaderImplementsopt    Gt/Rd  790

-

-abstract                    Reduce 776

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 30 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-EnumDeclaration ::= EnumHeader  .EnumBody 

-

-EnumBody ::= .LBRACE EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= .LBRACE EnumConstants EnumBodyDeclarationsopt RBRACE 

-

-LBRACE      Shift  218

-

-EnumBody    Gt/Rd  789

-

-

-STATE 31 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 232

-

-

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName  .

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   219

-ClassHeaderExtendsopt    Goto   219

-

-abstract                 Reduce 755

-final                    Reduce 755

-implements               Reduce 755

-native                   Reduce 755

-private                  Reduce 755

-protected                Reduce 755

-public                   Reduce 755

-static                   Reduce 755

-strictfp                 Reduce 755

-synchronized             Reduce 755

-transient                Reduce 755

-volatile                 Reduce 755

-LBRACE                   Reduce 755

-AT                       Reduce 755

-$eof                     Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 32 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader  .

-                              AnnotationTypeBody 

-

-AnnotationTypeBody ::= .LBRACE AnnotationTypeMemberDeclarationsopt RBRACE 

-

-LBRACE                Shift  221

-

-AnnotationTypeBody    Gt/Rd  949

-

-

-STATE 33 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 233

-

-

-InterfaceHeader ::= InterfaceHeaderName  .InterfaceHeaderExtendsopt 

-

-InterfaceHeaderExtends ::= .extends InterfaceTypeList 

-InterfaceHeaderExtendsopt ::= . (785)

-

-extends                      Shift  222

-

-InterfaceHeaderExtends       Gt/Rd  435

-InterfaceHeaderExtendsopt    Gt/Rd  435

-

-abstract                     Reduce 785

-final                        Reduce 785

-native                       Reduce 785

-private                      Reduce 785

-protected                    Reduce 785

-public                       Reduce 785

-static                       Reduce 785

-strictfp                     Reduce 785

-synchronized                 Reduce 785

-transient                    Reduce 785

-volatile                     Reduce 785

-LBRACE                       Reduce 785

-AT                           Reduce 785

-$eof                         Reduce 785

-

-Default reduction to rule  785

-

-

-STATE 34 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-InterfaceHeaderName ::= InterfaceHeaderName1  .TypeParameters 

-InterfaceHeaderName ::= InterfaceHeaderName1 . (437)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  436

-

-abstract          Reduce 437

-extends           Reduce 437

-final             Reduce 437

-native            Reduce 437

-private           Reduce 437

-protected         Reduce 437

-public            Reduce 437

-static            Reduce 437

-strictfp          Reduce 437

-synchronized      Reduce 437

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 234

-

-

-transient         Reduce 437

-volatile          Reduce 437

-LBRACE            Reduce 437

-AT                Reduce 437

-$eof              Reduce 437

-

-Default reduction to rule  437

-

-

-STATE 35 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-  682 686 758 802 803 891 969 1005 1007 )

-

-InterfaceDeclaration ::= InterfaceHeader  .InterfaceBody 

-

-InterfaceBody ::= .LBRACE InterfaceMemberDeclarationsopt RBRACE 

-

-LBRACE           Shift  224

-

-InterfaceBody    Gt/Rd  434

-

-

-STATE 36 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-ClassHeader ::= ClassHeaderName  .ClassHeaderExtendsopt 

-                ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   225

-ClassHeaderExtendsopt    Goto   225

-

-abstract                 Reduce 755

-final                    Reduce 755

-implements               Reduce 755

-native                   Reduce 755

-private                  Reduce 755

-protected                Reduce 755

-public                   Reduce 755

-static                   Reduce 755

-strictfp                 Reduce 755

-synchronized             Reduce 755

-transient                Reduce 755

-volatile                 Reduce 755

-LBRACE                   Reduce 755

-AT                       Reduce 755

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 235

-

-

-$eof                     Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 37 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-enum         Shift  226

-interface    Shift  227

-class        Shift  228

-

-

-STATE 38 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-ClassHeaderName ::= ClassHeaderName1  .TypeParameters 

-ClassHeaderName ::= ClassHeaderName1 . (347)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  346

-

-abstract          Reduce 347

-extends           Reduce 347

-final             Reduce 347

-implements        Reduce 347

-native            Reduce 347

-private           Reduce 347

-protected         Reduce 347

-public            Reduce 347

-static            Reduce 347

-strictfp          Reduce 347

-synchronized      Reduce 347

-transient         Reduce 347

-volatile          Reduce 347

-LBRACE            Reduce 347

-AT                Reduce 347

-$eof              Reduce 347

-

-Default reduction to rule  347

-

-

-STATE 39 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 93 118 174 197 273 432 433 434 463 469 472 579 659 660 679 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 236

-

-

-  682 686 758 802 803 891 969 1005 1007 )

-

-ClassDeclaration ::= ClassHeader  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  338

-

-

-STATE 40 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-TryStatement ::= try  .TryBlock Catches 

-TryStatement ::= try  .TryBlock Catchesopt Finally 

-TryStatementWithResources ::= try  .ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= try  .ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-ResourceSpecification ::= .LPAREN Resources ;opt RPAREN 

-TryBlock ::= .Block ExitTryBlock 

-

-LPAREN                   Shift  233

-

-OpenBlock                Goto   70

-Block                    Goto   232

-TryBlock                 Goto   231

-ResourceSpecification    Goto   230

-

-LBRACE                   Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 41 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ThrowStatement ::= throw  .Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 237

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 238

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 239

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 240

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 241

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 242

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   234

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 42 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 243

-

-

-  1013 1033 1036 )

-

-SynchronizedStatement ::= OnlySynchronized  .LPAREN Expression RPAREN Block 

-

-LPAREN    Shift  235

-

-

-STATE 43 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ReturnStatement ::= return  .Expressionopt SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 244

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 245

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 246

-

-

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 247

-

-

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 248

-

-

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 249

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   236

-Expressionopt                           Goto   236

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 44 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ContinueStatement ::= continue  .SEMICOLON 

-ContinueStatement ::= continue  .Identifier SEMICOLON 

-

-Identifier    Shift  237

-SEMICOLON     Sh/Rd  553

-

-

-STATE 45 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-BreakStatement ::= break  .SEMICOLON 

-BreakStatement ::= break  .Identifier SEMICOLON 

-

-Identifier    Shift  238

-SEMICOLON     Sh/Rd  551

-

-

-STATE 46 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-DoStatement ::= do  .Statement while LPAREN Expression RPAREN SEMICOLON 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 250

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 251

-

-

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 252

-

-

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 253

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 254

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 255

-

-

-

-AssertStatement                         Goto   239

-Block                                   Goto   239

-EmptyStatement                          Goto   239

-ExpressionStatement                     Goto   239

-SwitchStatement                         Goto   239

-DoStatement                             Goto   239

-BreakStatement                          Goto   239

-ContinueStatement                       Goto   239

-ReturnStatement                         Goto   239

-SynchronizedStatement                   Goto   239

-ThrowStatement                          Goto   239

-TryStatement                            Goto   239

-TryStatementWithResources               Goto   239

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 256

-

-

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   239

-LabeledStatement                        Goto   239

-IfThenStatement                         Goto   239

-IfThenElseStatement                     Goto   239

-WhileStatement                          Goto   239

-ForStatement                            Goto   239

-EnhancedForStatement                    Goto   239

-Statement                               Goto   239

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 47 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-SwitchStatement ::= switch  .LPAREN Expression RPAREN OpenBlock SwitchBlock 

-

-LPAREN    Shift  241

-

-

-STATE 48 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 257

-

-

-  706 707 709 712 716 718 724 725 726 729 737 741 751 752 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 875 877 911 919 920 921 922 923 924 927 

-  933 968 969 975 1004 1005 1007 1010 1011 1012 1013 1023 1032 1033 1036 )

-

-PreDecrementExpression ::= MINUS_MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   242

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 258

-

-

-

-

-STATE 49 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 751 752 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 875 877 911 919 920 921 922 923 924 927 

-  933 968 969 975 1004 1005 1007 1010 1011 1012 1013 1023 1032 1033 1036 )

-

-PreIncrementExpression ::= PLUS_PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   243

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 259

-

-

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 50 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= PostDecrementExpression . (521)

-PostfixExpression ::= PostDecrementExpression . (674)

-

-PLUS_PLUS                     Reduce 674

-MINUS_MINUS                   Reduce 674

-PLUS_EQUAL                    Reduce 674

-MINUS_EQUAL                   Reduce 674

-MULTIPLY_EQUAL                Reduce 674

-DIVIDE_EQUAL                  Reduce 674

-AND_EQUAL                     Reduce 674

-OR_EQUAL                      Reduce 674

-XOR_EQUAL                     Reduce 674

-REMAINDER_EQUAL               Reduce 674

-LEFT_SHIFT_EQUAL              Reduce 674

-RIGHT_SHIFT_EQUAL             Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 674

-EQUAL                         Reduce 674

-RPAREN                        Reduce 521

-SEMICOLON                     Reduce 521

-COMMA                         Reduce 521

-

-Default reduction to rule  674

-

-

-STATE 51 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= PostIncrementExpression . (520)

-PostfixExpression ::= PostIncrementExpression . (673)

-

-PLUS_PLUS                     Reduce 673

-MINUS_MINUS                   Reduce 673

-PLUS_EQUAL                    Reduce 673

-MINUS_EQUAL                   Reduce 673

-MULTIPLY_EQUAL                Reduce 673

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 260

-

-

-DIVIDE_EQUAL                  Reduce 673

-AND_EQUAL                     Reduce 673

-OR_EQUAL                      Reduce 673

-XOR_EQUAL                     Reduce 673

-REMAINDER_EQUAL               Reduce 673

-LEFT_SHIFT_EQUAL              Reduce 673

-RIGHT_SHIFT_EQUAL             Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 673

-EQUAL                         Reduce 673

-RPAREN                        Reduce 520

-SEMICOLON                     Reduce 520

-COMMA                         Reduce 520

-

-Default reduction to rule  673

-

-

-STATE 52 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-StatementExpression ::= MethodInvocation . (522)

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 594

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-RPAREN                        Reduce 522

-SEMICOLON                     Reduce 522

-COMMA                         Reduce 522

-

-Default reduction to rule  594

-

-

-STATE 53 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 261

-

-

-StatementExpression ::= ClassInstanceCreationExpression . (523)

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 586

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-RPAREN                        Reduce 523

-SEMICOLON                     Reduce 523

-COMMA                         Reduce 523

-

-Default reduction to rule  586

-

-

-STATE 54 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-PrimaryNoNewArray ::= PushLPAREN  .Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN  .Name PushRPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 262

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 263

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 264

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 265

-

-

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 266

-

-

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1081

-true                                    Shift  1081

-null                                    Shift  1081

-StringLiteral                           Shift  1081

-CharacterLiteral                        Shift  1081

-DoubleLiteral                           Shift  1081

-FloatingPointLiteral                    Shift  1081

-LongLiteral                             Shift  1081

-IntegerLiteral                          Shift  1081

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 267

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression_NotName           Goto   244

-Assignment                              Goto   244

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   246

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1082

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1082

-CastExpression                          Goto   1082

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1090

-BooleanLiteral                          Goto   1081

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   245

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 268

-

-

-Literal                                 Goto   1081

-ClassInstanceCreationExpression         Goto   1088

-FieldAccess                             Goto   1087

-MethodInvocation                        Goto   1086

-ArrayAccess                             Goto   1085

-LambdaExpression                        Goto   1084

-ReferenceExpression                     Goto   1083

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1082

-PreDecrementExpression                  Goto   1082

-UnaryExpressionNotPlusMinus_NotName     Goto   1082

-AssignmentExpression_NotName            Goto   244

-Expression_NotName                      Goto   244

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 55 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-LambdaParameters ::= BeginLambda  .NestedLambda LambdaParameterList 

-

-NestedLambda ::= . (612)

-

-NestedLambda    Goto   247

-

-LPAREN          Reduce 612

-

-Default reduction to rule  612

-

-

-STATE 56 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 269

-

-

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-LambdaExpression ::= LambdaParameters  .ARROW LambdaBody 

-

-ARROW    Shift  248

-

-

-STATE 57 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-NameOrAj ::= AjName . (67)

-AjQualifiedName ::= AjName  .DOT SimpleNameOrAj 

-ArrayAccess ::= AjName  .LBRACKET Expression RBRACKET 

-

-LBRACKET                        Shift  249

-DOT                             Shift  250

-

-abstract                        Reduce 67

-final                           Reduce 67

-instanceof                      Reduce 67

-native                          Reduce 67

-private                         Reduce 67

-protected                       Reduce 67

-public                          Reduce 67

-static                          Reduce 67

-strictfp                        Reduce 67

-synchronized                    Reduce 67

-transient                       Reduce 67

-volatile                        Reduce 67

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 67

-LESS_EQUAL                      Reduce 67

-GREATER_EQUAL                   Reduce 67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 270

-

-

-NOT_EQUAL                       Reduce 67

-LEFT_SHIFT                      Reduce 67

-RIGHT_SHIFT                     Reduce 67

-UNSIGNED_RIGHT_SHIFT            Reduce 67

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 67

-AND_AND                         Reduce 67

-PLUS                            Reduce 67

-MINUS                           Reduce 67

-REMAINDER                       Reduce 67

-XOR                             Reduce 67

-AND                             Reduce 67

-MULTIPLY                        Reduce 67

-OR                              Reduce 67

-DIVIDE                          Reduce 67

-GREATER                         Reduce 67

-LESS                            Reduce 672

-LPAREN                          Reduce 67

-RPAREN                          Reduce 67

-RBRACE                          Reduce 67

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 67

-QUESTION                        Reduce 67

-COLON                           Reduce 672

-COMMA                           Reduce 67

-EQUAL                           Reduce 672

-AT                              Reduce 67

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 67

-

-Default reduction to rule  67

-

-

-STATE 58 -----------------------------------------------------------------------

-( 7 8 9 16 41 43 46 71 76 93 174 235 241 242 243 249 251 262 263 264 269 272 

-  273 275 276 277 278 279 291 297 298 306 307 308 309 310 311 312 313 314 315 

-  317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 

-  364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 

-  384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 

-  432 484 512 513 516 552 634 639 642 645 697 700 702 704 706 707 709 712 716 

-  718 724 725 726 729 737 741 748 751 752 778 779 821 823 827 832 833 834 836 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 271

-

-

-  842 854 855 856 858 911 919 920 921 922 923 924 927 933 936 968 969 975 988 

-  1004 1005 1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-

-LPAREN                          Shift  251

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 272

-

-

-LESS                            Reduce 672

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-EQUAL                           Reduce 672

-AT                              Reduce 672

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 59 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-ReferenceExpression ::= QualifiedSuperReceiver  .COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= QualifiedSuperReceiver  .DOT Identifier 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver  .DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  252

-COLON_COLON    Shift  253

-

-

-STATE 60 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 273

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName  .

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1077

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 274

-

-

-ClassOrInterfaceType          Goto   255

-ClassType                     Goto   255

-OnlyTypeArguments             Goto   254

-

-

-STATE 61 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-ClassInstanceCreationExpression ::= new  .OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= new  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ArrayCreationWithoutArrayInitializer ::= new  .PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new  .PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= new  .ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new  .ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 275

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotations               Goto   88

-TypeAnnotationsopt            Goto   84

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   261

-OnlyTypeArguments             Goto   260

-ClassType                     Goto   259

-PrimitiveType                 Goto   258

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 62 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 276

-

-

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-Primary ::= ArrayCreationWithArrayInitializer . (580)

-ArrayAccess ::= ArrayCreationWithArrayInitializer  .LBRACKET Expression 

-                RBRACKET 

-

-LBRACKET                        Shift  262

-

-abstract                        Reduce 580

-final                           Reduce 580

-instanceof                      Reduce 580

-native                          Reduce 580

-private                         Reduce 580

-protected                       Reduce 580

-public                          Reduce 580

-static                          Reduce 580

-strictfp                        Reduce 580

-synchronized                    Reduce 580

-transient                       Reduce 580

-volatile                        Reduce 580

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 580

-LESS_EQUAL                      Reduce 580

-GREATER_EQUAL                   Reduce 580

-NOT_EQUAL                       Reduce 580

-LEFT_SHIFT                      Reduce 580

-RIGHT_SHIFT                     Reduce 580

-UNSIGNED_RIGHT_SHIFT            Reduce 580

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 580

-AND_AND                         Reduce 580

-PLUS                            Reduce 580

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 277

-

-

-MINUS                           Reduce 580

-REMAINDER                       Reduce 580

-XOR                             Reduce 580

-AND                             Reduce 580

-MULTIPLY                        Reduce 580

-OR                              Reduce 580

-DIVIDE                          Reduce 580

-GREATER                         Reduce 580

-LESS                            Reduce 580

-RPAREN                          Reduce 580

-RBRACE                          Reduce 580

-RBRACKET                        Reduce 580

-SEMICOLON                       Reduce 580

-QUESTION                        Reduce 580

-COLON                           Reduce 580

-COMMA                           Reduce 580

-DOT                             Reduce 580

-EQUAL                           Reduce 671

-AT                              Reduce 580

-COLON_COLON                     Reduce 580

-ElidedSemicolonAndRightBrace    Reduce 580

-$eof                            Reduce 580

-

-Default reduction to rule  580

-

-

-STATE 63 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 71 76 93 102 174 199 235 241 242 243 249 251 262 263 

-  264 269 272 273 275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 

-  312 313 314 315 317 318 319 320 321 322 323 324 325 326 327 328 329 358 359 

-  360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 394 395 396 397 398 399 

-  400 401 402 403 432 484 512 513 516 552 596 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 724 725 726 729 737 741 748 751 752 778 779 804 821 

-  823 827 832 833 834 836 842 854 855 856 858 875 877 911 919 920 921 922 923 

-  924 927 933 936 968 969 975 988 1004 1005 1007 1010 1011 1012 1013 1023 1028 

-  1032 1033 1036 )

-

-Primary ::= PrimaryNoNewArray . (579)

-ArrayAccess ::= PrimaryNoNewArray  .LBRACKET Expression RBRACKET 

-

-LBRACKET                        Shift  263

-

-abstract                        Reduce 579

-final                           Reduce 579

-instanceof                      Reduce 579

-native                          Reduce 579

-private                         Reduce 579

-protected                       Reduce 579

-public                          Reduce 579

-static                          Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 278

-

-

-strictfp                        Reduce 579

-synchronized                    Reduce 579

-transient                       Reduce 579

-volatile                        Reduce 579

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 579

-LESS_EQUAL                      Reduce 579

-GREATER_EQUAL                   Reduce 579

-NOT_EQUAL                       Reduce 579

-LEFT_SHIFT                      Reduce 579

-RIGHT_SHIFT                     Reduce 579

-UNSIGNED_RIGHT_SHIFT            Reduce 579

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 579

-AND_AND                         Reduce 579

-PLUS                            Reduce 579

-MINUS                           Reduce 579

-REMAINDER                       Reduce 579

-XOR                             Reduce 579

-AND                             Reduce 579

-MULTIPLY                        Reduce 579

-OR                              Reduce 579

-DIVIDE                          Reduce 579

-GREATER                         Reduce 579

-LESS                            Reduce 579

-RPAREN                          Reduce 579

-RBRACE                          Reduce 579

-RBRACKET                        Reduce 579

-SEMICOLON                       Reduce 579

-QUESTION                        Reduce 579

-COLON                           Reduce 579

-COMMA                           Reduce 579

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-AT                              Reduce 579

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 579

-$eof                            Reduce 579

-

-Default reduction to rule  579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 279

-

-

-

-

-STATE 64 -----------------------------------------------------------------------

-( 7 8 16 46 54 76 93 102 174 273 275 278 432 724 725 729 842 919 920 923 924 

-  969 1005 1007 1011 1012 1013 1032 1033 1036 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-

-AssignmentOperator ::= .EQUAL 

-AssignmentOperator ::= .MULTIPLY_EQUAL 

-AssignmentOperator ::= .DIVIDE_EQUAL 

-AssignmentOperator ::= .REMAINDER_EQUAL 

-AssignmentOperator ::= .PLUS_EQUAL 

-AssignmentOperator ::= .MINUS_EQUAL 

-AssignmentOperator ::= .LEFT_SHIFT_EQUAL 

-AssignmentOperator ::= .RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .UNSIGNED_RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .AND_EQUAL 

-AssignmentOperator ::= .XOR_EQUAL 

-AssignmentOperator ::= .OR_EQUAL 

-

-MINUS_MINUS                   Sh/Rd  676

-PLUS_PLUS                     Sh/Rd  675

-OR_EQUAL                      Sh/Rd  753

-XOR_EQUAL                     Sh/Rd  752

-AND_EQUAL                     Sh/Rd  751

-UNSIGNED_RIGHT_SHIFT_EQUAL    Sh/Rd  750

-RIGHT_SHIFT_EQUAL             Sh/Rd  749

-LEFT_SHIFT_EQUAL              Sh/Rd  748

-MINUS_EQUAL                   Sh/Rd  747

-PLUS_EQUAL                    Sh/Rd  746

-REMAINDER_EQUAL               Sh/Rd  745

-DIVIDE_EQUAL                  Sh/Rd  744

-MULTIPLY_EQUAL                Sh/Rd  743

-EQUAL                         Sh/Rd  742

-

-AssignmentOperator            Goto   264

-

-

-STATE 65 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= Primary  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 280

-

-

-ExplicitConstructorInvocation ::= Primary  .DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= Primary . (671)

-

-COLON_COLON                   Shift  265

-DOT                           Shift  266

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-EQUAL                         Reduce 671

-

-Default reduction to rule  671

-

-

-STATE 66 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= super  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ReferenceExpression ::= super  .COLON_COLON NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= super  .DOT JavaIdentifier 

-MethodInvocation ::= super  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 281

-

-

-MethodInvocation ::= super  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  267

-COLON_COLON    Shift  268

-LPAREN         Shift  269

-

-

-STATE 67 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-super    Shift  270

-this     Shift  271

-

-

-STATE 68 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-ExplicitConstructorInvocation ::= this  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-PrimaryNoNewArray ::= this . (583)

-

-LPAREN                        Shift  272

-

-PLUS_PLUS                     Reduce 583

-MINUS_MINUS                   Reduce 583

-PLUS_EQUAL                    Reduce 583

-MINUS_EQUAL                   Reduce 583

-MULTIPLY_EQUAL                Reduce 583

-DIVIDE_EQUAL                  Reduce 583

-AND_EQUAL                     Reduce 583

-OR_EQUAL                      Reduce 583

-XOR_EQUAL                     Reduce 583

-REMAINDER_EQUAL               Reduce 583

-LEFT_SHIFT_EQUAL              Reduce 583

-RIGHT_SHIFT_EQUAL             Reduce 583

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 583

-LBRACKET                      Reduce 583

-DOT                           Reduce 583

-EQUAL                         Reduce 583

-COLON_COLON                   Reduce 583

-

-Default reduction to rule  583

-

-

-STATE 69 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 282

-

-

-  1013 1033 1036 )

-

-ExpressionStatement ::= StatementExpression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  515

-

-

-STATE 70 -----------------------------------------------------------------------

-( 7 8 16 40 46 76 93 130 174 230 248 273 275 432 587 656 689 696 724 725 842 

-  901 919 923 937 969 1005 1007 1011 1012 1013 1033 1036 )

-

-Block ::= OpenBlock  .LBRACE BlockStatementsopt RBRACE 

-

-LBRACE    Shift  273

-

-

-STATE 71 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-AssertStatement ::= assert  .Expression SEMICOLON 

-AssertStatement ::= assert  .Expression COLON Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 283

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 284

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 285

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 286

-

-

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 287

-

-

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 288

-

-

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   274

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 72 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-LabeledStatement ::= Label  .COLON Statement 

-

-COLON    Shift  275

-

-

-STATE 73 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjName ::= AjSimpleName . (71)

-

-PLUS_PLUS                     Reduce 71

-MINUS_MINUS                   Reduce 71

-PLUS_EQUAL                    Reduce 71

-MINUS_EQUAL                   Reduce 71

-MULTIPLY_EQUAL                Reduce 71

-DIVIDE_EQUAL                  Reduce 71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 289

-

-

-AND_EQUAL                     Reduce 71

-OR_EQUAL                      Reduce 71

-XOR_EQUAL                     Reduce 71

-REMAINDER_EQUAL               Reduce 71

-LEFT_SHIFT_EQUAL              Reduce 71

-RIGHT_SHIFT_EQUAL             Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 71

-LPAREN                        Reduce 71

-LBRACKET                      Reduce 71

-DOT                           Reduce 71

-EQUAL                         Reduce 71

-COLON                         Reduce 514

-

-Default reduction to rule  71

-

-

-STATE 74 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-IfThenStatement ::= if  .LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= if  .LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

-LPAREN    Shift  276

-

-

-STATE 75 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-WhileStatement ::= while  .LPAREN Expression RPAREN Statement 

-

-LPAREN    Shift  277

-

-

-STATE 76 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 290

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 291

-

-

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 292

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 293

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 294

-

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  809

-Block                                   Gt/Rd  809

-EmptyStatement                          Gt/Rd  809

-ExpressionStatement                     Gt/Rd  809

-SwitchStatement                         Gt/Rd  809

-DoStatement                             Gt/Rd  809

-BreakStatement                          Gt/Rd  809

-ContinueStatement                       Gt/Rd  809

-ReturnStatement                         Gt/Rd  809

-SynchronizedStatement                   Gt/Rd  809

-ThrowStatement                          Gt/Rd  809

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 295

-

-

-TryStatement                            Gt/Rd  809

-TryStatementWithResources               Gt/Rd  809

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 296

-

-

-StatementWithoutTrailingSubstatement    Gt/Rd  809

-LabeledStatement                        Gt/Rd  809

-IfThenStatement                         Gt/Rd  809

-IfThenElseStatement                     Gt/Rd  809

-WhileStatement                          Gt/Rd  809

-ForStatement                            Gt/Rd  809

-EnhancedForStatement                    Gt/Rd  809

-Statement                               Gt/Rd  809

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 77 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 725 919 969 1005 1007 1013 )

-

-ForStatement ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-LPAREN    Shift  278

-

-

-STATE 78 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit  .COLON 

-                               Expression RPAREN 

-

-COLON    Shift  279

-

-

-STATE 79 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-LocalVariableDeclaration ::= Type  .PushModifiers VariableDeclarators 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 297

-

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   280

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 80 -----------------------------------------------------------------------

-( 7 8 10 12 13 16 17 18 93 118 174 197 273 432 433 434 463 469 472 579 659 660 

-  679 682 686 758 802 803 891 969 1005 1007 )

-

-AnnotationTypeDeclarationHeaderName ::= AT  .PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT  .PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushModifiersForHeader ::= . (483)

-

-Identifier                Shift  1092

-around                    Shift  1051

-declare                   Shift  1051

-after                     Shift  1051

-before                    Shift  1051

-pointcut                  Shift  1051

-privileged                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 298

-

-

-aspect                    Shift  1051

-

-AjSimpleName              Gt/Rd  71

-AjQualifiedName           Gt/Rd  72

-AjName                    Goto   283

-AjSimpleNameNoAround      Goto   1051

-SimpleName                Goto   1092

-UnannotatableName         Goto   282

-PushModifiersForHeader    Goto   281

-UnannotatableNameOrAj     Gt/Rd  968

-

-interface                 Reduce 483

-

-Default reduction to rule  483

-

-

-STATE 81 -----------------------------------------------------------------------

-( 7 8 10 11 12 13 14 15 16 17 18 28 83 93 118 119 120 124 126 134 137 144 145 

-  174 176 178 184 188 189 191 193 197 199 218 233 273 278 284 338 342 405 432 

-  433 434 451 452 463 469 472 478 521 579 596 641 659 660 677 679 682 686 690 

-  691 758 760 766 787 788 789 802 803 804 875 877 879 880 883 891 920 969 1005 

-  1007 )

-

-NormalAnnotation ::= AnnotationName  .LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= AnnotationName . (988)

-SingleMemberAnnotation ::= AnnotationName  .LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-LPAREN          Shift  284

-

-Identifier      Reduce 988

-abstract        Reduce 988

-boolean         Reduce 988

-byte            Reduce 988

-char            Reduce 988

-class           Reduce 988

-default         Reduce 988

-double          Reduce 988

-enum            Reduce 988

-final           Reduce 988

-float           Reduce 988

-int             Reduce 988

-interface       Reduce 988

-long            Reduce 988

-native          Reduce 988

-package         Reduce 988

-private         Reduce 988

-protected       Reduce 988

-public          Reduce 988

-short           Reduce 988

-static          Reduce 988

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 299

-

-

-strictfp        Reduce 988

-synchronized    Reduce 988

-transient       Reduce 988

-void            Reduce 988

-volatile        Reduce 988

-aspect          Reduce 988

-pointcut        Reduce 988

-around          Reduce 988

-before          Reduce 988

-after           Reduce 988

-privileged      Reduce 988

-LESS            Reduce 988

-RPAREN          Reduce 988

-RBRACE          Reduce 988

-SEMICOLON       Reduce 988

-COMMA           Reduce 988

-AT              Reduce 988

-AT308           Reduce 988

-$eof            Reduce 988

-

-Default reduction to rule  988

-

-

-STATE 82 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-SimpleModifier ::= synchronized . (166)

-OnlySynchronized ::= synchronized . (558)

-

-LPAREN          Reduce 558

-Identifier      Reduce 157

-abstract        Reduce 157

-boolean         Reduce 157

-byte            Reduce 157

-char            Reduce 157

-class           Reduce 765

-double          Reduce 157

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 157

-int             Reduce 157

-interface       Reduce 765

-long            Reduce 157

-native          Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 157

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 300

-

-

-transient       Reduce 157

-void            Reduce 157

-volatile        Reduce 157

-AT              Reduce 157

-AT308           Reduce 157

-

-Default reduction to rule  166

-

-

-STATE 83 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-Modifiers ::= Modifiers  .Modifier 

-LocalVariableDeclaration ::= Modifiers  .Type PushRealModifiers 

-                             VariableDeclarators 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 301

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                                Shift  286

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   285

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   285

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 302

-

-

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-Type                              Goto   285

-

-class                             Reduce 765

-enum                              Reduce 765

-interface                         Reduce 765

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 84 -----------------------------------------------------------------------

-( 7 8 9 14 16 41 43 46 54 61 71 76 83 93 102 121 133 138 143 173 174 179 180 

-  181 182 192 194 199 216 233 235 241 242 243 249 251 262 263 264 269 272 273 

-  275 276 277 278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 

-  316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 334 339 351 358 

-  359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 

-  378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 

-  397 398 399 400 401 402 403 409 413 415 424 430 432 450 478 484 512 513 516 

-  521 596 632 634 639 642 645 667 668 681 691 697 700 702 704 706 707 709 712 

-  716 718 724 725 726 729 737 741 748 751 752 756 757 767 778 779 804 821 823 

-  827 832 833 834 836 842 854 855 856 858 863 864 871 875 877 878 881 884 896 

-  897 900 911 919 920 921 922 923 924 927 933 936 950 951 953 968 969 975 988 

-  998 1001 1002 1004 1005 1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 303

-

-

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 85 -----------------------------------------------------------------------

-( 7 8 16 25 83 93 121 133 138 143 173 174 179 192 194 216 233 273 278 294 316 

-  331 334 339 351 377 390 409 424 430 432 443 444 450 478 521 552 632 667 668 

-  681 691 767 805 806 871 878 896 897 900 920 959 969 1001 1002 1005 1007 )

-

-ArrayType ::= ArrayTypeWithTypeArgumentsName  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  64

-

-

-STATE 86 -----------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-JavaIdentifier ::= Identifier . (35)

-SimpleName ::= Identifier . (87)

-LambdaParameters ::= Identifier  .NestedLambda 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 304

-

-

-NestedLambda ::= . (612)

-

-NestedLambda                  Gt/Rd  613

-

-Identifier                    Reduce 84

-aspect                        Reduce 84

-pointcut                      Reduce 84

-around                        Reduce 84

-before                        Reduce 84

-after                         Reduce 84

-declare                       Reduce 84

-privileged                    Reduce 84

-PLUS_PLUS                     Reduce 84

-MINUS_MINUS                   Reduce 84

-PLUS_EQUAL                    Reduce 84

-MINUS_EQUAL                   Reduce 84

-MULTIPLY_EQUAL                Reduce 84

-DIVIDE_EQUAL                  Reduce 84

-AND_EQUAL                     Reduce 84

-OR_EQUAL                      Reduce 84

-XOR_EQUAL                     Reduce 84

-REMAINDER_EQUAL               Reduce 84

-LEFT_SHIFT_EQUAL              Reduce 84

-RIGHT_SHIFT_EQUAL             Reduce 84

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 84

-LESS                          Reduce 84

-LPAREN                        Reduce 84

-LBRACKET                      Reduce 84

-DOT                           Reduce 84

-EQUAL                         Reduce 84

-COLON_COLON                   Reduce 84

-BeginTypeArguments            Reduce 84

-AT308                         Reduce 84

-COLON                         Reduce 514

-ARROW                         Reduce 612

-

-Default reduction to rule  87

-

-

-STATE 87 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 305

-

-

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  290

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   292

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 306

-

-

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-LPAREN                        Reduce 68

-EQUAL                         Reduce 672

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 88 -----------------------------------------------------------------------

-( 7 8 9 14 16 25 41 43 46 54 61 71 76 83 93 102 121 133 138 143 173 174 179 

-  180 192 194 199 216 233 235 241 242 243 249 251 262 263 264 269 272 273 275 

-  276 277 278 279 284 291 294 297 298 306 307 308 309 310 311 312 313 314 315 

-  316 317 318 319 320 321 322 323 324 325 326 327 328 329 331 334 339 351 358 

-  359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 

-  378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 

-  397 398 399 400 401 402 403 409 424 430 432 443 444 450 478 484 512 513 516 

-  521 552 596 632 634 639 642 645 667 668 681 691 697 700 702 704 706 707 709 

-  712 716 718 724 725 726 729 737 741 748 751 752 767 778 779 804 805 806 821 

-  823 827 832 833 834 836 842 854 855 856 858 871 875 877 878 896 897 900 911 

-  919 920 921 922 923 924 927 933 936 959 968 969 975 988 1001 1002 1004 1005 

-  1007 1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-Name ::= TypeAnnotations  .SimpleName 

-TypeAnnotationsopt ::= TypeAnnotations . (93)

-

-Identifier    Sh/Rd  85

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 307

-

-

-SimpleName    Gt/Rd  85

-

-boolean       Reduce 93

-byte          Reduce 93

-char          Reduce 93

-double        Reduce 93

-float         Reduce 93

-int           Reduce 93

-long          Reduce 93

-short         Reduce 93

-void          Reduce 93

-QUESTION      Reduce 93

-

-Default reduction to rule  93

-

-

-STATE 89 -----------------------------------------------------------------------

-( 7 8 16 25 83 93 121 133 138 143 173 174 179 192 194 216 233 273 278 294 316 

-  331 334 339 351 377 390 409 424 430 432 443 444 450 478 521 552 632 667 668 

-  681 691 805 806 878 896 897 900 920 959 969 1001 1002 1005 1007 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                             Shift  293

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 308

-

-

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dims                            Gt/Rd  65

-

-Identifier                      Reduce 53

-abstract                        Reduce 53

-final                           Reduce 53

-instanceof                      Reduce 53

-native                          Reduce 53

-private                         Reduce 53

-protected                       Reduce 53

-public                          Reduce 53

-static                          Reduce 53

-strictfp                        Reduce 53

-synchronized                    Reduce 53

-this                            Reduce 53

-transient                       Reduce 53

-volatile                        Reduce 53

-aspect                          Reduce 53

-pointcut                        Reduce 53

-around                          Reduce 53

-before                          Reduce 53

-after                           Reduce 53

-declare                         Reduce 53

-privileged                      Reduce 53

-EQUAL_EQUAL                     Reduce 53

-NOT_EQUAL                       Reduce 53

-RIGHT_SHIFT                     Reduce 53

-UNSIGNED_RIGHT_SHIFT            Reduce 53

-OR_OR                           Reduce 53

-AND_AND                         Reduce 53

-XOR                             Reduce 53

-AND                             Reduce 53

-OR                              Reduce 53

-GREATER                         Reduce 53

-RPAREN                          Reduce 53

-RBRACE                          Reduce 53

-RBRACKET                        Reduce 53

-SEMICOLON                       Reduce 53

-QUESTION                        Reduce 53

-COLON                           Reduce 53

-COMMA                           Reduce 53

-AT                              Reduce 53

-ELLIPSIS                        Reduce 53

-ElidedSemicolonAndRightBrace    Reduce 53

-AT308DOTDOTDOT                  Reduce 53

-$eof                            Reduce 53

-

-Default reduction to rule  56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 309

-

-

-

-

-STATE 90 -----------------------------------------------------------------------

-( 7 8 16 60 61 83 93 121 133 138 143 173 174 179 180 192 194 206 216 217 220 

-  222 233 254 260 273 278 316 331 334 339 351 377 390 409 424 430 432 450 478 

-  504 521 632 674 691 711 746 767 770 871 878 920 949 969 1005 1007 )

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                            Shift  294

-

-TypeArguments                   Gt/Rd  59

-

-Identifier                      Reduce 55

-abstract                        Reduce 55

-final                           Reduce 55

-implements                      Reduce 55

-instanceof                      Reduce 55

-native                          Reduce 55

-private                         Reduce 55

-protected                       Reduce 55

-public                          Reduce 55

-static                          Reduce 55

-strictfp                        Reduce 55

-synchronized                    Reduce 55

-this                            Reduce 55

-transient                       Reduce 55

-volatile                        Reduce 55

-aspect                          Reduce 55

-pointcut                        Reduce 55

-around                          Reduce 55

-before                          Reduce 55

-after                           Reduce 55

-declare                         Reduce 55

-privileged                      Reduce 55

-EQUAL_EQUAL                     Reduce 55

-NOT_EQUAL                       Reduce 55

-OR_OR                           Reduce 55

-AND_AND                         Reduce 55

-XOR                             Reduce 55

-AND                             Reduce 55

-OR                              Reduce 55

-LPAREN                          Reduce 55

-RPAREN                          Reduce 55

-LBRACE                          Reduce 55

-RBRACE                          Reduce 55

-LBRACKET                        Reduce 55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 310

-

-

-RBRACKET                        Reduce 55

-SEMICOLON                       Reduce 55

-QUESTION                        Reduce 55

-COLON                           Reduce 55

-COMMA                           Reduce 55

-AT                              Reduce 55

-ELLIPSIS                        Reduce 55

-COLON_COLON                     Reduce 55

-ElidedSemicolonAndRightBrace    Reduce 55

-AT308                           Reduce 55

-AT308DOTDOTDOT                  Reduce 55

-$eof                            Reduce 55

-

-Default reduction to rule  55

-

-

-STATE 91 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 278 432 920 969 1005 1007 )

-

-Type ::= PrimitiveType . (39)

-ArrayType ::= PrimitiveType  .Dims 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 311

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   296

-

-Identifier                    Reduce 39

-aspect                        Reduce 39

-pointcut                      Reduce 39

-around                        Reduce 39

-before                        Reduce 39

-after                         Reduce 39

-declare                       Reduce 39

-privileged                    Reduce 39

-

-Default reduction to rule  39

-

-

-STATE 92 -----------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-LocalVariableDeclarationStatement ::= LocalVariableDeclaration  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  479

-

-

-STATE 93 -----------------------------------------------------------------------

-( 8 273 432 )

-

-BlockStatements ::= BlockStatements  .BlockStatement 

-BlockStatementsopt ::= BlockStatements . (767)

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 312

-

-

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 313

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 314

-

-

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 315

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 316

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 317

-

-

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 318

-

-

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 319

-

-

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 320

-

-

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-RBRACE                                  Reduce 767

-$eof                                    Reduce 767

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 94 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 

-  823 827 832 833 834 836 854 855 856 911 921 922 927 933 968 975 1004 1010 

-  1023 )

-

-UnaryExpression ::= MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   297

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 321

-

-

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 95 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 322

-

-

-  823 827 832 833 834 836 854 855 856 911 921 922 927 933 968 975 1004 1010 

-  1023 )

-

-UnaryExpression ::= PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   298

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 96 -----------------------------------------------------------------------

-( 9 14 41 43 46 54 71 76 199 235 241 242 243 249 251 262 263 264 269 272 275 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 323

-

-

-  276 277 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 

-  319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 

-  366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 

-  386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 

-  513 516 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 724 725 

-  726 729 737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 842 854 

-  855 856 858 875 877 911 919 921 922 923 924 927 933 936 968 975 988 1004 

-  1010 1011 1012 1013 1023 1028 1032 1033 1036 )

-

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   299

-

-

-STATE 97 -----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 324

-

-

-  367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 

-  387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 

-  516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 729 

-  737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 

-  875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-ReferenceExpression ::= super  .COLON_COLON NonWildTypeArgumentsopt Identifier 

-FieldAccess ::= super  .DOT JavaIdentifier 

-MethodInvocation ::= super  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= super  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-DOT            Shift  267

-COLON_COLON    Shift  268

-

-

-STATE 98 -----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  278 279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 

-  367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 

-  387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 

-  516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 729 

-  737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 

-  875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-SimpleName ::= Identifier . (87)

-LambdaParameters ::= Identifier  .NestedLambda 

-

-NestedLambda ::= . (612)

-

-NestedLambda                    Gt/Rd  613

-

-Identifier                      Reduce 87

-abstract                        Reduce 87

-final                           Reduce 87

-instanceof                      Reduce 84

-native                          Reduce 87

-private                         Reduce 87

-protected                       Reduce 87

-public                          Reduce 87

-static                          Reduce 87

-strictfp                        Reduce 87

-synchronized                    Reduce 87

-transient                       Reduce 87

-volatile                        Reduce 87

-aspect                          Reduce 87

-pointcut                        Reduce 87

-around                          Reduce 87

-before                          Reduce 87

-after                           Reduce 87

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 325

-

-

-declare                         Reduce 87

-privileged                      Reduce 87

-PLUS_PLUS                       Reduce 84

-MINUS_MINUS                     Reduce 84

-EQUAL_EQUAL                     Reduce 84

-LESS_EQUAL                      Reduce 84

-GREATER_EQUAL                   Reduce 84

-NOT_EQUAL                       Reduce 84

-LEFT_SHIFT                      Reduce 84

-RIGHT_SHIFT                     Reduce 84

-UNSIGNED_RIGHT_SHIFT            Reduce 84

-PLUS_EQUAL                      Reduce 87

-MINUS_EQUAL                     Reduce 87

-MULTIPLY_EQUAL                  Reduce 87

-DIVIDE_EQUAL                    Reduce 87

-AND_EQUAL                       Reduce 87

-OR_EQUAL                        Reduce 87

-XOR_EQUAL                       Reduce 87

-REMAINDER_EQUAL                 Reduce 87

-LEFT_SHIFT_EQUAL                Reduce 87

-RIGHT_SHIFT_EQUAL               Reduce 87

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 87

-OR_OR                           Reduce 84

-AND_AND                         Reduce 84

-PLUS                            Reduce 84

-MINUS                           Reduce 84

-REMAINDER                       Reduce 84

-XOR                             Reduce 84

-AND                             Reduce 84

-MULTIPLY                        Reduce 84

-OR                              Reduce 84

-DIVIDE                          Reduce 84

-GREATER                         Reduce 84

-LESS                            Reduce 84

-LPAREN                          Reduce 84

-RPAREN                          Reduce 84

-RBRACE                          Reduce 87

-LBRACKET                        Reduce 84

-RBRACKET                        Reduce 87

-SEMICOLON                       Reduce 87

-QUESTION                        Reduce 84

-COLON                           Reduce 87

-COMMA                           Reduce 87

-DOT                             Reduce 84

-EQUAL                           Reduce 87

-AT                              Reduce 87

-COLON_COLON                     Reduce 84

-BeginTypeArguments              Reduce 84

-ElidedSemicolonAndRightBrace    Reduce 87

-AT308                           Reduce 84

-$eof                            Reduce 87

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 326

-

-

-ARROW                           Reduce 612

-

-Default reduction to rule  87

-

-

-STATE 99 -----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 634 639 642 645 

-  697 700 702 704 706 707 709 712 716 718 726 729 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 924 927 933 936 968 

-  975 988 1004 1010 1023 1028 1032 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 327

-

-

-BeginTypeArguments              Shift  288

-DOT                             Shift  300

-LBRACKET                        Shift  291

-AT308                           Shift  22

-

-Dims                            Goto   301

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dimsopt                         Goto   289

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 328

-

-

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-LESS                            Reduce 672

-LPAREN                          Reduce 68

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-EQUAL                           Reduce 672

-AT                              Reduce 672

-ElidedSemicolonAndRightBrace    Reduce 672

-$eof                            Reduce 672

-COLON_COLON                     Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 100 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 278 279 291 

-  297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 

-  324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 

-  392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 

-  642 645 697 700 702 704 706 707 709 712 716 718 726 729 737 741 748 751 752 

-  778 779 821 823 827 832 833 834 836 854 855 856 858 911 920 921 922 924 927 

-  933 936 968 975 988 1004 1010 1023 1028 1032 )

-

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 329

-

-

-PostfixExpression ::= Primary . (671)

-

-DOT                             Shift  302

-COLON_COLON                     Shift  265

-

-abstract                        Reduce 671

-final                           Reduce 671

-instanceof                      Reduce 671

-native                          Reduce 671

-private                         Reduce 671

-protected                       Reduce 671

-public                          Reduce 671

-static                          Reduce 671

-strictfp                        Reduce 671

-synchronized                    Reduce 671

-transient                       Reduce 671

-volatile                        Reduce 671

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 671

-LESS_EQUAL                      Reduce 671

-GREATER_EQUAL                   Reduce 671

-NOT_EQUAL                       Reduce 671

-LEFT_SHIFT                      Reduce 671

-RIGHT_SHIFT                     Reduce 671

-UNSIGNED_RIGHT_SHIFT            Reduce 671

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 671

-AND_AND                         Reduce 671

-PLUS                            Reduce 671

-MINUS                           Reduce 671

-REMAINDER                       Reduce 671

-XOR                             Reduce 671

-AND                             Reduce 671

-MULTIPLY                        Reduce 671

-OR                              Reduce 671

-DIVIDE                          Reduce 671

-GREATER                         Reduce 671

-LESS                            Reduce 671

-RPAREN                          Reduce 671

-RBRACE                          Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 330

-

-

-RBRACKET                        Reduce 671

-SEMICOLON                       Reduce 671

-QUESTION                        Reduce 671

-COLON                           Reduce 671

-COMMA                           Reduce 671

-EQUAL                           Reduce 671

-AT                              Reduce 671

-ElidedSemicolonAndRightBrace    Reduce 671

-$eof                            Reduce 671

-

-Default reduction to rule  671

-

-

-STATE 101 ----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 

-  368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 

-  388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 

-  552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 

-  748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 875 877 

-  911 921 922 927 933 936 968 975 988 1004 1010 1023 1028 )

-

-CastExpression ::= BeginIntersectionCast  .PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-PushLPAREN ::= .LPAREN 

-

-LPAREN        Sh/Rd  577

-

-PushLPAREN    Goto   303

-

-

-STATE 102 ----------------------------------------------------------------------

-( 9 14 41 43 54 71 102 199 235 241 242 243 249 251 262 263 264 269 272 276 277 

-  279 284 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 

-  321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 

-  368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 

-  388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 

-  552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 

-  748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 858 875 877 

-  911 921 922 927 933 936 968 975 988 1004 1010 1023 1028 )

-

-PrimaryNoNewArray ::= PushLPAREN  .Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= PushLPAREN  .Name PushRPAREN 

-CastExpression ::= PushLPAREN  .PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= PushLPAREN  .Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 331

-

-

-CastExpression ::= PushLPAREN  .Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN  .Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN  .Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 332

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 333

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 334

-

-

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 335

-

-

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 336

-

-

-                                  ConditionalExpression 

-

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1081

-true                                    Shift  1081

-null                                    Shift  1081

-StringLiteral                           Shift  1081

-CharacterLiteral                        Shift  1081

-DoubleLiteral                           Shift  1081

-FloatingPointLiteral                    Shift  1081

-LongLiteral                             Shift  1081

-IntegerLiteral                          Shift  1081

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression_NotName           Goto   244

-Assignment                              Goto   244

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   246

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1082

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1082

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 337

-

-

-CastExpression                          Goto   1082

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1090

-BooleanLiteral                          Goto   1081

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   305

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   304

-Literal                                 Goto   1081

-ClassInstanceCreationExpression         Goto   1088

-FieldAccess                             Goto   1087

-MethodInvocation                        Goto   1086

-ArrayAccess                             Goto   1085

-LambdaExpression                        Goto   1084

-ReferenceExpression                     Goto   1083

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1082

-PreDecrementExpression                  Goto   1082

-UnaryExpressionNotPlusMinus_NotName     Goto   1082

-AssignmentExpression_NotName            Goto   244

-Expression_NotName                      Goto   244

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 338

-

-

-

-

-STATE 103 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-UnaryExpressionNotPlusMinus ::= NOT  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   306

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 339

-

-

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 104 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 297 

-  298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 324 

-  325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 371 

-  372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 552 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-UnaryExpressionNotPlusMinus ::= TWIDDLE  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   307

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 340

-

-

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 105 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 311 312 313 

-  317 318 319 320 321 322 323 324 325 326 327 328 329 367 368 369 370 371 372 

-  373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 392 393 

-  394 395 396 402 403 484 512 513 516 552 634 639 642 645 697 700 702 704 706 

-  707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 

-  854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= MultiplicativeExpression . (708)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 341

-

-

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-XOR                             Reduce 708

-AND                             Reduce 708

-OR                              Reduce 708

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 106 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 322 323 

-  324 325 326 327 328 329 375 376 378 379 380 381 382 383 384 385 386 387 388 

-  389 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 

-  716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 

-  911 921 922 927 968 975 1004 1010 1023 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= ShiftExpression . (715)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 342

-

-

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-XOR                             Reduce 720

-AND                             Reduce 720

-OR                              Reduce 720

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  715

-

-

-STATE 107 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 317 318 319 

-  320 321 322 323 324 325 326 327 328 329 367 368 369 370 371 375 376 378 379 

-  380 381 382 383 384 385 386 387 388 389 391 392 393 402 403 484 512 513 516 

-  552 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 

-  752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= AdditiveExpression . (711)

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 343

-

-

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-XOR                             Reduce 711

-AND                             Reduce 711

-OR                              Reduce 711

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 108 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 324 325 

-  326 327 328 329 378 379 380 381 382 383 384 385 386 387 402 403 484 512 513 

-  516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 

-  752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= InstanceofExpression . (722)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 722

-final                           Reduce 722

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 344

-

-

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-EQUAL_EQUAL                     Reduce 722

-NOT_EQUAL                       Reduce 722

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-XOR                             Reduce 722

-AND                             Reduce 722

-OR                              Reduce 722

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 109 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 321 322 323 

-  324 325 326 327 328 329 375 376 378 379 380 381 382 383 384 385 386 387 388 

-  389 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 

-  716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 

-  911 921 922 927 968 975 1004 1010 1023 )

-

-RelationalExpression ::= RelationalExpression  .LESS ShiftExpression 

-RelationalExpression ::= RelationalExpression  .GREATER ShiftExpression 

-RelationalExpression ::= RelationalExpression  .LESS_EQUAL ShiftExpression 

-RelationalExpression ::= RelationalExpression  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= RelationalExpression . (720)

-

-GREATER_EQUAL                   Shift  317

-LESS_EQUAL                      Shift  318

-GREATER                         Shift  319

-LESS                            Shift  320

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 345

-

-

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-NOT_EQUAL                       Reduce 720

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-XOR                             Reduce 720

-AND                             Reduce 720

-OR                              Reduce 720

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 110 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 324 326 327 

-  328 329 380 381 382 383 384 385 402 403 484 512 513 516 634 639 642 645 697 

-  700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 

-  832 833 834 836 854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression ::= AndExpression . (727)

-

-AND                             Shift  321

-

-abstract                        Reduce 727

-final                           Reduce 727

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 346

-

-

-XOR                             Reduce 727

-OR                              Reduce 727

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 111 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 324 325 326 

-  327 328 329 378 380 381 382 383 384 385 386 402 403 484 512 513 516 634 639 

-  642 645 697 700 702 704 706 707 709 712 716 718 726 737 741 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 1004 1010 

-  1023 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression ::= EqualityExpression . (725)

-

-NOT_EQUAL                       Shift  322

-EQUAL_EQUAL                     Shift  323

-

-abstract                        Reduce 725

-final                           Reduce 725

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-XOR                             Reduce 725

-AND                             Reduce 725

-OR                              Reduce 725

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 347

-

-

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 112 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 327 329 

-  382 383 402 403 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 

-  712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 

-  856 911 921 922 927 968 975 1004 1010 1023 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression ::= InclusiveOrExpression . (731)

-

-OR                              Shift  324

-

-abstract                        Reduce 731

-final                           Reduce 731

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 113 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 327 328 

-  329 380 382 383 384 402 403 484 512 513 516 634 639 642 645 697 700 702 704 

-  706 707 709 712 716 718 726 737 741 751 752 778 779 821 823 827 832 833 834 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 348

-

-

-  836 854 855 856 911 921 922 927 968 975 1004 1010 1023 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression ::= ExclusiveOrExpression . (729)

-

-XOR                             Shift  325

-

-abstract                        Reduce 729

-final                           Reduce 729

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-OR                              Reduce 729

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 114 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 

-  922 927 968 975 1004 1010 1023 )

-

-ConditionalOrExpression ::= ConditionalOrExpression  .OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= ConditionalOrExpression . (735)

-ConditionalExpression ::= ConditionalOrExpression  .QUESTION Expression COLON 

-                          ConditionalExpression 

-

-QUESTION                        Shift  326

-OR_OR                           Shift  327

-

-abstract                        Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 349

-

-

-final                           Reduce 735

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 115 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 751 752 778 779 821 823 827 832 833 834 836 854 855 856 911 921 

-  922 927 968 975 1004 1010 1023 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= ConditionalAndExpression . (733)

-

-AND_AND                         Shift  328

-

-abstract                        Reduce 735

-final                           Reduce 735

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-OR_OR                           Reduce 733

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 350

-

-

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  733

-

-

-STATE 116 ----------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 264 269 272 276 277 279 291 326 329 382 

-  402 484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 

-  726 737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 

-  975 1004 1010 1023 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= PostfixExpression . (685)

-Assignment ::= PostfixExpression  .AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression  .AssignmentOperator 

-                                       ArrayInitializer 

-

-AssignmentOperator ::= .EQUAL 

-AssignmentOperator ::= .MULTIPLY_EQUAL 

-AssignmentOperator ::= .DIVIDE_EQUAL 

-AssignmentOperator ::= .REMAINDER_EQUAL 

-AssignmentOperator ::= .PLUS_EQUAL 

-AssignmentOperator ::= .MINUS_EQUAL 

-AssignmentOperator ::= .LEFT_SHIFT_EQUAL 

-AssignmentOperator ::= .RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .UNSIGNED_RIGHT_SHIFT_EQUAL 

-AssignmentOperator ::= .AND_EQUAL 

-AssignmentOperator ::= .XOR_EQUAL 

-AssignmentOperator ::= .OR_EQUAL 

-

-MINUS_MINUS                     Sh/Rd  676

-PLUS_PLUS                       Sh/Rd  675

-OR_EQUAL                        Sh/Rd  753

-XOR_EQUAL                       Sh/Rd  752

-AND_EQUAL                       Sh/Rd  751

-UNSIGNED_RIGHT_SHIFT_EQUAL      Sh/Rd  750

-RIGHT_SHIFT_EQUAL               Sh/Rd  749

-LEFT_SHIFT_EQUAL                Sh/Rd  748

-MINUS_EQUAL                     Sh/Rd  747

-PLUS_EQUAL                      Sh/Rd  746

-REMAINDER_EQUAL                 Sh/Rd  745

-DIVIDE_EQUAL                    Sh/Rd  744

-MULTIPLY_EQUAL                  Sh/Rd  743

-EQUAL                           Sh/Rd  742

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 351

-

-

-AssignmentOperator              Goto   264

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  685

-

-

-STATE 117 ----------------------------------------------------------------------

-( 9 264 329 495 499 645 752 927 1004 1023 )

-

-ArrayInitializer ::= LBRACE  .PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= LBRACE  .PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= LBRACE  .PushLeftBrace VariableInitializers COMMA RBRACE 

-

-PushLeftBrace ::= . (460)

-

-PushLeftBrace            Goto   329

-

-Identifier               Reduce 460

-boolean                  Reduce 460

-byte                     Reduce 460

-char                     Reduce 460

-double                   Reduce 460

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 352

-

-

-false                    Reduce 460

-float                    Reduce 460

-int                      Reduce 460

-long                     Reduce 460

-new                      Reduce 460

-null                     Reduce 460

-short                    Reduce 460

-super                    Reduce 460

-this                     Reduce 460

-true                     Reduce 460

-void                     Reduce 460

-aspect                   Reduce 460

-pointcut                 Reduce 460

-around                   Reduce 460

-before                   Reduce 460

-after                    Reduce 460

-declare                  Reduce 460

-privileged               Reduce 460

-IntegerLiteral           Reduce 460

-LongLiteral              Reduce 460

-FloatingPointLiteral     Reduce 460

-DoubleLiteral            Reduce 460

-CharacterLiteral         Reduce 460

-StringLiteral            Reduce 460

-PLUS_PLUS                Reduce 460

-MINUS_MINUS              Reduce 460

-PLUS                     Reduce 460

-MINUS                    Reduce 460

-NOT                      Reduce 460

-TWIDDLE                  Reduce 460

-LPAREN                   Reduce 460

-LBRACE                   Reduce 460

-RBRACE                   Reduce 460

-COMMA                    Reduce 460

-BeginLambda              Reduce 460

-BeginIntersectionCast    Reduce 460

-AT308                    Reduce 460

-

-Default reduction to rule  460

-

-

-STATE 118 ----------------------------------------------------------------------

-( 10 )

-

-Goal ::= AND ClassBodyDeclarations . (14)

-ClassBodyDeclarations ::= ClassBodyDeclarations  .ClassBodyDeclaration 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 353

-

-

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 354

-

-

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 355

-

-

-AT                                     Shift  80

-static                                 Shift  131

-

-AspectDeclaration                      Gt/Rd  356

-PointcutDeclaration                    Gt/Rd  356

-FieldDeclaration                       Gt/Rd  356

-MethodDeclaration                      Gt/Rd  356

-ClassDeclaration                       Gt/Rd  356

-InterfaceDeclaration                   Gt/Rd  356

-EnumDeclaration                        Gt/Rd  356

-AnnotationTypeDeclaration              Gt/Rd  356

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-MethodHeader                           Goto   123

-MethodHeaderName                       Goto   119

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-AbstractMethodDeclaration              Gt/Rd  356

-DefaultMethodHeader                    Goto   122

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-StaticOnly                             Goto   130

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassMemberDeclaration                 Gt/Rd  356

-StaticInitializer                      Gt/Rd  356

-ConstructorDeclaration                 Gt/Rd  356

-Diet                                   Goto   135

-ClassBodyDeclaration                   Gt/Rd  356

-

-$eof                                   Reduce 14

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 356

-

-

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 119 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-MethodHeader ::= MethodHeaderName  .FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 357

-

-

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   330

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 358

-

-

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 120 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName  .FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 359

-

-

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   332

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 121 ----------------------------------------------------------------------

-( 10 11 118 469 472 682 686 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= ModifiersWithDefault  .Type Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 360

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS                              Shift  223

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   333

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 361

-

-

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   333

-TypeParameters                    Goto   334

-Type                              Goto   333

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 122 ----------------------------------------------------------------------

-( 10 11 118 472 686 )

-

-MethodDeclaration ::= DefaultMethodHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  388

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 123 ----------------------------------------------------------------------

-( 10 11 118 472 686 )

-

-MethodDeclaration ::= MethodHeader  .MethodBody 

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  389

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  387

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 362

-

-

-

-

-STATE 124 ----------------------------------------------------------------------

-( 10 17 18 118 469 472 579 682 686 758 )

-

-PointcutDeclaration ::= PointcutHeader  .FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= PointcutHeader  .FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 363

-

-

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   335

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 125 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeader ::= AspectHeaderName  .ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

-ClassHeaderExtends       Goto   336

-ClassHeaderExtendsopt    Goto   336

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 364

-

-

-Identifier               Reduce 755

-implements               Reduce 755

-LBRACE                   Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 126 ----------------------------------------------------------------------

-( 10 12 118 433 434 463 469 472 579 659 660 679 682 686 758 802 803 891 )

-

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  286

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 365

-

-

-char                      Reduce 765

-class                     Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-enum                      Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-interface                 Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-pointcut                  Reduce 765

-around                    Reduce 765

-before                    Reduce 765

-after                     Reduce 765

-privileged                Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 127 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeaderName ::= AspectHeaderName2 . (187)

-AspectHeaderName ::= AspectHeaderName2  .TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  189

-

-Identifier        Reduce 187

-extends           Reduce 187

-implements        Reduce 187

-LBRACE            Reduce 187

-

-Default reduction to rule  187

-

-

-STATE 128 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectHeaderName ::= AspectHeaderName1 . (186)

-AspectHeaderName ::= AspectHeaderName1  .TypeParameters 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 366

-

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  188

-

-Identifier        Reduce 186

-extends           Reduce 186

-implements        Reduce 186

-LBRACE            Reduce 186

-

-Default reduction to rule  186

-

-

-STATE 129 ----------------------------------------------------------------------

-( 10 12 13 17 18 118 197 433 434 463 469 472 579 659 660 679 682 686 758 802 

-  803 891 )

-

-AspectDeclaration ::= AspectHeader  .AspectBody 

-

-AspectBody ::= .LBRACE AspectBodyDeclarationsopt RBRACE 

-

-LBRACE        Shift  337

-

-AspectBody    Gt/Rd  184

-

-

-STATE 130 ----------------------------------------------------------------------

-( 10 17 18 19 118 469 472 579 682 686 758 )

-

-StaticInitializer ::= StaticOnly  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  418

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 131 ----------------------------------------------------------------------

-( 10 17 18 118 469 472 579 682 686 758 )

-

-SimpleModifier ::= static . (162)

-StaticOnly ::= static . (419)

-

-LBRACE          Reduce 419

-Identifier      Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 367

-

-

-abstract        Reduce 157

-boolean         Reduce 765

-byte            Reduce 765

-char            Reduce 765

-class           Reduce 765

-default         Reduce 765

-double          Reduce 765

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 765

-int             Reduce 765

-interface       Reduce 765

-long            Reduce 765

-native          Reduce 157

-package         Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 765

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 765

-volatile        Reduce 157

-aspect          Reduce 765

-pointcut        Reduce 765

-around          Reduce 765

-before          Reduce 765

-after           Reduce 765

-privileged      Reduce 765

-LESS            Reduce 765

-AT              Reduce 157

-AT308           Reduce 765

-

-Default reduction to rule  162

-

-

-STATE 132 ----------------------------------------------------------------------

-( 10 11 13 118 463 472 579 679 686 758 )

-

-ConstructorDeclaration ::= ConstructorHeader  .MethodBody 

-ConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  421

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  420

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 368

-

-

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 133 ----------------------------------------------------------------------

-( 10 118 469 472 682 686 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 369

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   340

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   340

-Type                              Goto   340

-TypeParameters                    Goto   339

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 370

-

-

-

-Default reduction to rule  92

-

-

-STATE 134 ----------------------------------------------------------------------

-( 10 11 13 18 118 463 469 472 579 679 682 686 758 )

-

-ConstructorHeader ::= ConstructorHeaderName  .FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 371

-

-

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   345

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 135 ----------------------------------------------------------------------

-( 10 118 472 686 )

-

-ClassBodyDeclaration ::= Diet  .NestedMethod CreateInitializer Block 

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   346

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 136 ----------------------------------------------------------------------

-( 11 14 15 28 119 120 124 134 137 145 176 178 184 188 189 191 193 199 218 233 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 372

-

-

-  278 284 338 342 405 451 452 478 521 596 641 677 690 691 760 766 787 788 789 

-  804 875 877 879 880 883 920 )

-

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-

-Identifier               Shift  1092

-around                   Shift  1051

-declare                  Shift  1051

-after                    Shift  1051

-before                   Shift  1051

-pointcut                 Shift  1051

-privileged               Shift  1051

-aspect                   Shift  1051

-

-AjSimpleName             Gt/Rd  71

-AjQualifiedName          Gt/Rd  72

-AjName                   Goto   283

-AjSimpleNameNoAround     Goto   1051

-SimpleName               Goto   1092

-UnannotatableName        Goto   282

-UnannotatableNameOrAj    Gt/Rd  968

-

-

-STATE 137 ----------------------------------------------------------------------

-( 11 15 28 119 120 124 134 145 176 178 184 188 189 191 193 218 338 342 405 451 

-  452 677 690 760 766 883 )

-

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 373

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-AT                        Shift  136

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-char                      Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-$eof                      Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 138 ----------------------------------------------------------------------

-( 11 )

-

-MethodHeaderName ::= Modifiersopt  .TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 374

-

-

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-aspect                            Shift  347

-default                           Shift  338

-LESS                              Shift  223

-Identifier                        Shift  344

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 375

-

-

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   348

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   348

-TypeParameters                    Goto   339

-Type                              Goto   348

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 139 ----------------------------------------------------------------------

-( 12 197 433 434 659 660 802 803 891 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-enum          Shift  226

-interface     Shift  227

-class         Shift  228

-privileged    Shift  342

-aspect        Shift  349

-

-

-STATE 140 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 376

-

-

-PackageDeclaration ::= PackageDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  140

-

-

-STATE 141 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-PackageDeclarationName ::= PackageComment  .package Name RejectTypeAnnotations 

-

-package    Shift  350

-

-

-STATE 142 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  960

-

-

-STATE 143 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-AnnotationMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                               JavaIdentifier LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt  .Type JavaIdentifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 377

-

-

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-class                             Shift  228

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   352

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   352

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 378

-

-

-Type                              Goto   352

-TypeParameters                    Goto   351

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 144 ----------------------------------------------------------------------

-( 13 17 18 197 )

-

-PackageDeclarationName ::= Modifiers  .package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-Modifiers ::= Modifiers  .Modifier 

-Modifiersopt ::= Modifiers . (765)

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers  .AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-package                   Shift  353

-AT                        Shift  286

-strictfp                  Sh/Rd  158

-volatile                  Sh/Rd  158

-transient                 Sh/Rd  158

-synchronized              Sh/Rd  158

-native                    Sh/Rd  158

-final                     Sh/Rd  158

-abstract                  Sh/Rd  158

-static                    Sh/Rd  158

-private                   Sh/Rd  158

-protected                 Sh/Rd  158

-public                    Sh/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 379

-

-

-

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Gt/Rd  158

-Annotation                Gt/Rd  171

-Modifier                  Gt/Rd  158

-

-Identifier                Reduce 765

-boolean                   Reduce 765

-byte                      Reduce 765

-char                      Reduce 765

-class                     Reduce 765

-default                   Reduce 765

-double                    Reduce 765

-enum                      Reduce 765

-float                     Reduce 765

-int                       Reduce 765

-interface                 Reduce 765

-long                      Reduce 765

-short                     Reduce 765

-void                      Reduce 765

-aspect                    Reduce 765

-pointcut                  Reduce 765

-around                    Reduce 765

-before                    Reduce 765

-after                     Reduce 765

-privileged                Reduce 765

-LESS                      Reduce 765

-AT308                     Reduce 765

-

-Default reduction to rule  765

-

-

-STATE 145 ----------------------------------------------------------------------

-( 13 463 679 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName  .FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 380

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   354

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 381

-

-

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 146 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName  .

-                                    SEMICOLON 

-

-SEMICOLON    Sh/Rd  816

-

-

-STATE 147 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  814

-

-

-STATE 148 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  150

-

-

-STATE 149 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleTypeImportDeclarationName ::= import  .Name RejectTypeAnnotations 

-TypeImportOnDemandDeclarationName ::= import  .Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclarationName ::= import  .static Name 

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import  .static Name DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 382

-

-

-                                        RejectTypeAnnotations MULTIPLY 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-static                        Shift  355

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   356

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   356

-

-

-STATE 150 ----------------------------------------------------------------------

-( 14 17 18 197 433 435 658 )

-

-SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  148

-

-

-STATE 151 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 383

-

-

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer  .LBRACE 

-                                PushLeftBrace RBRACE 

-

-LBRACE    Shift  357

-

-

-STATE 152 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpressionNotPlusMinus_NotName ::= NOT  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   358

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 384

-

-

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 153 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   359

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 385

-

-

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 154 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-

-MINUS_MINUS    Sh/Rd  676

-PLUS_PLUS      Sh/Rd  675

-

-

-STATE 155 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-PostfixExpression ::= PostDecrementExpression . (674)

-PostfixExpression_NotName ::= PostDecrementExpression . (877)

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 386

-

-

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-PLUS_PLUS                     Reduce 674

-MINUS_MINUS                   Reduce 674

-PLUS_EQUAL                    Reduce 674

-MINUS_EQUAL                   Reduce 674

-MULTIPLY_EQUAL                Reduce 674

-DIVIDE_EQUAL                  Reduce 674

-AND_EQUAL                     Reduce 674

-OR_EQUAL                      Reduce 674

-XOR_EQUAL                     Reduce 674

-REMAINDER_EQUAL               Reduce 674

-LEFT_SHIFT_EQUAL              Reduce 674

-RIGHT_SHIFT_EQUAL             Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 674

-EQUAL                         Reduce 674

-

-Default reduction to rule  877

-

-

-STATE 156 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-PostfixExpression ::= PostIncrementExpression . (673)

-PostfixExpression_NotName ::= PostIncrementExpression . (876)

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 387

-

-

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-PLUS_PLUS                     Reduce 673

-MINUS_MINUS                   Reduce 673

-PLUS_EQUAL                    Reduce 673

-MINUS_EQUAL                   Reduce 673

-MULTIPLY_EQUAL                Reduce 673

-DIVIDE_EQUAL                  Reduce 673

-AND_EQUAL                     Reduce 673

-OR_EQUAL                      Reduce 673

-XOR_EQUAL                     Reduce 673

-REMAINDER_EQUAL               Reduce 673

-LEFT_SHIFT_EQUAL              Reduce 673

-RIGHT_SHIFT_EQUAL             Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 673

-EQUAL                         Reduce 673

-

-Default reduction to rule  876

-

-

-STATE 157 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ReferenceExpression ::= Primary  .COLON_COLON NonWildTypeArgumentsopt 

-                        Identifier 

-ClassInstanceCreationExpression ::= Primary  .DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary  .DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 388

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary  .DOT JavaIdentifier 

-MethodInvocation ::= Primary  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary  .DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= Primary . (671)

-PostfixExpression_NotName ::= Primary . (875)

-

-DOT                           Shift  302

-COLON_COLON                   Shift  265

-

-abstract                      Reduce 938

-final                         Reduce 938

-instanceof                    Reduce 915

-native                        Reduce 938

-private                       Reduce 938

-protected                     Reduce 938

-public                        Reduce 938

-static                        Reduce 938

-strictfp                      Reduce 938

-synchronized                  Reduce 938

-transient                     Reduce 938

-volatile                      Reduce 938

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 938

-RBRACE                        Reduce 938

-SEMICOLON                     Reduce 938

-QUESTION                      Reduce 935

-COMMA                         Reduce 938

-AT                            Reduce 938

-$eof                          Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 389

-

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-EQUAL                         Reduce 671

-

-Default reduction to rule  875

-

-

-STATE 158 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpression_NotName ::= MINUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   360

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-IntegerLiteral           Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 390

-

-

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 159 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-UnaryExpression_NotName ::= PLUS  .PushPosition UnaryExpression 

-

-PushPosition ::= . (677)

-

-PushPosition             Goto   361

-

-Identifier               Reduce 677

-boolean                  Reduce 677

-byte                     Reduce 677

-char                     Reduce 677

-double                   Reduce 677

-false                    Reduce 677

-float                    Reduce 677

-int                      Reduce 677

-long                     Reduce 677

-new                      Reduce 677

-null                     Reduce 677

-short                    Reduce 677

-super                    Reduce 677

-this                     Reduce 677

-true                     Reduce 677

-void                     Reduce 677

-aspect                   Reduce 677

-pointcut                 Reduce 677

-around                   Reduce 677

-before                   Reduce 677

-after                    Reduce 677

-declare                  Reduce 677

-privileged               Reduce 677

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 391

-

-

-IntegerLiteral           Reduce 677

-LongLiteral              Reduce 677

-FloatingPointLiteral     Reduce 677

-DoubleLiteral            Reduce 677

-CharacterLiteral         Reduce 677

-StringLiteral            Reduce 677

-PLUS_PLUS                Reduce 677

-MINUS_MINUS              Reduce 677

-PLUS                     Reduce 677

-MINUS                    Reduce 677

-NOT                      Reduce 677

-TWIDDLE                  Reduce 677

-LPAREN                   Reduce 677

-BeginLambda              Reduce 677

-BeginIntersectionCast    Reduce 677

-AT308                    Reduce 677

-

-Default reduction to rule  677

-

-

-STATE 160 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName  .PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName  .MINUS 

-                               MultiplicativeExpression 

-ShiftExpression_NotName ::= AdditiveExpression_NotName . (899)

-

-MINUS                   Shift  362

-PLUS                    Shift  363

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 392

-

-

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  899

-

-

-STATE 161 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .

-                                     MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName  .

-                                     REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= MultiplicativeExpression_NotName . (894)

-

-REMAINDER               Shift  364

-DIVIDE                  Shift  365

-MULTIPLY                Shift  366

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 393

-

-

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  894

-

-

-STATE 162 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName  .LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName  .GREATER_EQUAL 

-                                 ShiftExpression 

-InstanceofExpression_NotName ::= RelationalExpression_NotName . (915)

-

-GREATER_EQUAL    Shift  367

-LESS_EQUAL       Shift  368

-

-abstract         Reduce 938

-final            Reduce 938

-instanceof       Reduce 915

-native           Reduce 938

-private          Reduce 938

-protected        Reduce 938

-public           Reduce 938

-static           Reduce 938

-strictfp         Reduce 938

-synchronized     Reduce 938

-transient        Reduce 938

-volatile         Reduce 938

-EQUAL_EQUAL      Reduce 918

-NOT_EQUAL        Reduce 918

-OR_OR            Reduce 935

-AND_AND          Reduce 932

-XOR              Reduce 926

-AND              Reduce 923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 394

-

-

-OR               Reduce 929

-RPAREN           Reduce 938

-RBRACE           Reduce 938

-SEMICOLON        Reduce 938

-QUESTION         Reduce 935

-COMMA            Reduce 938

-AT               Reduce 938

-$eof             Reduce 938

-

-Default reduction to rule  915

-

-

-STATE 163 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 395

-

-

-

-LESS                          Shift  369

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-abstract                      Reduce 978

-final                         Reduce 978

-instanceof                    Reduce 68

-native                        Reduce 978

-private                       Reduce 978

-protected                     Reduce 978

-public                        Reduce 978

-static                        Reduce 978

-strictfp                      Reduce 978

-synchronized                  Reduce 978

-transient                     Reduce 978

-volatile                      Reduce 978

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 396

-

-

-LPAREN                        Reduce 68

-RPAREN                        Reduce 978

-RBRACE                        Reduce 978

-SEMICOLON                     Reduce 978

-QUESTION                      Reduce 68

-COMMA                         Reduce 978

-AT                            Reduce 978

-$eof                          Reduce 978

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 164 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName  .LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName  .RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName  .UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName . (906)

-RelationalExpression_NotName ::= ShiftExpression_NotName  .LESS ShiftExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName  .GREATER 

-                                 ShiftExpression 

-

-GREATER                 Shift  370

-LESS                    Shift  371

-UNSIGNED_RIGHT_SHIFT    Shift  372

-RIGHT_SHIFT             Shift  373

-LEFT_SHIFT              Shift  374

-

-abstract                Reduce 938

-final                   Reduce 938

-instanceof              Reduce 915

-native                  Reduce 938

-private                 Reduce 938

-protected               Reduce 938

-public                  Reduce 938

-static                  Reduce 938

-strictfp                Reduce 938

-synchronized            Reduce 938

-transient               Reduce 938

-volatile                Reduce 938

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 397

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-OR                      Reduce 929

-RPAREN                  Reduce 938

-RBRACE                  Reduce 938

-SEMICOLON               Reduce 938

-QUESTION                Reduce 935

-COMMA                   Reduce 938

-AT                      Reduce 938

-$eof                    Reduce 938

-

-Default reduction to rule  906

-

-

-STATE 165 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName  .EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= EqualityExpression_NotName  .NOT_EQUAL 

-                               InstanceofExpression 

-AndExpression_NotName ::= EqualityExpression_NotName . (923)

-

-NOT_EQUAL       Shift  375

-EQUAL_EQUAL     Shift  376

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-AND             Reduce 923

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  923

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 398

-

-

-

-

-STATE 166 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-InstanceofExpression_NotName ::= InstanceofExpression_NotName  .instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= InstanceofExpression_NotName . (918)

-

-instanceof      Shift  377

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-EQUAL_EQUAL     Reduce 918

-NOT_EQUAL       Reduce 918

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-AND             Reduce 923

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  918

-

-

-STATE 167 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName  .XOR 

-                                  AndExpression 

-InclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName . (929)

-

-XOR             Shift  378

-

-abstract        Reduce 938

-final           Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 399

-

-

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  929

-

-

-STATE 168 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-AndExpression_NotName ::= AndExpression_NotName  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= AndExpression_NotName . (926)

-

-AND             Shift  379

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-XOR             Reduce 926

-OR              Reduce 929

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 400

-

-

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  926

-

-

-STATE 169 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName  .AND_AND 

-                                     InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= ConditionalAndExpression_NotName . (935)

-

-AND_AND         Shift  380

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  935

-

-

-STATE 170 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName  .OR 

-                                  ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= InclusiveOrExpression_NotName . (932)

-

-OR              Shift  381

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 401

-

-

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-OR_OR           Reduce 935

-AND_AND         Reduce 932

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-QUESTION        Reduce 935

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  932

-

-

-STATE 171 ----------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-MemberValue ::= NameOrAj . (978)

-

-QUESTION                Shift  382

-OR_OR                   Shift  383

-AND_AND                 Shift  384

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 402

-

-

-OR                      Shift  385

-XOR                     Shift  386

-AND                     Shift  387

-NOT_EQUAL               Shift  388

-EQUAL_EQUAL             Shift  389

-instanceof              Shift  390

-GREATER_EQUAL           Shift  391

-LESS_EQUAL              Shift  392

-GREATER                 Shift  393

-UNSIGNED_RIGHT_SHIFT    Shift  394

-RIGHT_SHIFT             Shift  395

-LEFT_SHIFT              Shift  396

-MINUS                   Shift  397

-PLUS                    Shift  398

-REMAINDER               Shift  399

-DIVIDE                  Shift  400

-MULTIPLY                Shift  401

-LPAREN                  Shift  251

-

-abstract                Reduce 978

-final                   Reduce 978

-native                  Reduce 978

-private                 Reduce 978

-protected               Reduce 978

-public                  Reduce 978

-static                  Reduce 978

-strictfp                Reduce 978

-synchronized            Reduce 978

-transient               Reduce 978

-volatile                Reduce 978

-RPAREN                  Reduce 978

-RBRACE                  Reduce 978

-SEMICOLON               Reduce 978

-COMMA                   Reduce 978

-AT                      Reduce 978

-$eof                    Reduce 978

-PLUS_PLUS               Reduce 672

-MINUS_MINUS             Reduce 672

-

-Default reduction to rule  978

-

-

-STATE 172 ----------------------------------------------------------------------

-( 14 54 102 199 284 596 804 875 877 )

-

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName  .OR_OR 

-                                    ConditionalAndExpression 

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName . (938)

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName  .QUESTION 

-                                  Expression COLON ConditionalExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 403

-

-

-QUESTION        Shift  402

-OR_OR           Shift  403

-

-abstract        Reduce 938

-final           Reduce 938

-native          Reduce 938

-private         Reduce 938

-protected       Reduce 938

-public          Reduce 938

-static          Reduce 938

-strictfp        Reduce 938

-synchronized    Reduce 938

-transient       Reduce 938

-volatile        Reduce 938

-RPAREN          Reduce 938

-RBRACE          Reduce 938

-SEMICOLON       Reduce 938

-COMMA           Reduce 938

-AT              Reduce 938

-$eof            Reduce 938

-

-Default reduction to rule  938

-

-

-STATE 173 ----------------------------------------------------------------------

-( 15 )

-

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 404

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   404

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   404

-Type                              Goto   404

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 174 ----------------------------------------------------------------------

-( 16 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 405

-

-

-Goal ::= MULTIPLY BlockStatements . (7)

-BlockStatements ::= BlockStatements  .BlockStatement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 406

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 407

-

-

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 408

-

-

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 409

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 410

-

-

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 411

-

-

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 412

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 413

-

-

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-$eof                                    Reduce 7

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 414

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 175 ----------------------------------------------------------------------

-( 16 )

-

-CatchHeader ::= catch  .LPAREN CatchFormalParameter RPAREN LBRACE 

-

-LPAREN    Shift  405

-

-

-STATE 176 ----------------------------------------------------------------------

-( 17 )

-

-Goal ::= NOT Header2  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 415

-

-

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  6

-

-$eof                      Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 177 ----------------------------------------------------------------------

-( 17 218 677 )

-

-EnumConstantHeader ::= EnumConstantHeaderName  .ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet     Goto   406

-

-abstract        Reduce 381

-final           Reduce 381

-native          Reduce 381

-private         Reduce 381

-protected       Reduce 381

-public          Reduce 381

-static          Reduce 381

-strictfp        Reduce 381

-synchronized    Reduce 381

-transient       Reduce 381

-volatile        Reduce 381

-LPAREN          Reduce 381

-LBRACE          Reduce 381

-RBRACE          Reduce 381

-SEMICOLON       Reduce 381

-COMMA           Reduce 381

-AT              Reduce 381

-$eof            Reduce 381

-

-Default reduction to rule  381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 416

-

-

-

-

-STATE 178 ----------------------------------------------------------------------

-( 17 18 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 417

-

-

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   407

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 179 ----------------------------------------------------------------------

-( 17 18 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= ModifiersWithDefault  .Type JavaIdentifierNoAround 

-                             LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 418

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS                              Shift  223

-Identifier                        Shift  1076

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   408

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 419

-

-

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   408

-TypeParameters                    Goto   409

-Type                              Goto   408

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 180 ----------------------------------------------------------------------

-( 17 18 )

-

-AllocationHeader ::= new  .ClassType LPAREN ArgumentListopt RPAREN 

-ArrayCreationHeader ::= new  .PrimitiveType DimWithOrWithOutExprs 

-ArrayCreationHeader ::= new  .ClassOrInterfaceType DimWithOrWithOutExprs 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 420

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations               Goto   88

-TypeAnnotationsopt            Goto   84

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   412

-ClassType                     Goto   411

-PrimitiveType                 Goto   410

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 181 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader  .PseudoTokensNoColon COLON 

-                       MINUS Annotations SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 421

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokensNoColon ::= .PseudoToken 

-PseudoTokensNoColon ::= .PseudoTokensNoColon PseudoToken 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 422

-

-

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 423

-

-

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 424

-

-

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  285

-PseudoTokensNoColon           Goto   413

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 182 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 425

-

-

-DeclareDeclaration ::= DeclareHeader  .PseudoTokens SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 426

-

-

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 427

-

-

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 428

-

-

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   415

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 429

-

-

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 183 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-DeclareHeader ::= declare  .Identifier COLON 

-DeclareAnnotationHeader ::= declare  .AT Identifier COLON 

-

-AT            Shift  416

-Identifier    Shift  417

-

-

-STATE 184 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName  .FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 430

-

-

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   418

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 185 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 431

-

-

-InterTypeMethodDeclaration ::= InterTypeMethodHeader  .MethodBody 

-AbstractInterTypeMethodDeclaration ::= InterTypeMethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  255

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  247

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 186 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-InterTypeFieldDeclaration ::= InterTypeFieldHeader  .InterTypeFieldBody 

-                              SEMICOLON 

-

-InterTypeFieldBody ::= . (270)

-InterTypeFieldBody ::= .EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-

-EQUAL                 Shift  420

-

-InterTypeFieldBody    Goto   419

-

-SEMICOLON             Reduce 270

-

-Default reduction to rule  270

-

-

-STATE 187 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-BasicAdviceDeclaration ::= BasicAdviceHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  230

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 188 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 432

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName  .FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 433

-

-

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   421

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 189 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName  .FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 434

-

-

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   422

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 435

-

-

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 190 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AroundDeclaration ::= AroundHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  226

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 191 ----------------------------------------------------------------------

-( 17 18 579 758 )

-

-AroundHeader ::= AroundHeaderName  .FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 436

-

-

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   423

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 437

-

-

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 192 ----------------------------------------------------------------------

-( 17 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-RecoveryMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 438

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-after                             Shift  425

-before                            Shift  426

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  349

-Identifier                        Shift  429

-AT308                             Shift  22

-LESS                              Shift  223

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 439

-

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   428

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   428

-Type                              Goto   428

-TypeParameters                    Goto   424

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 193 ----------------------------------------------------------------------

-( 18 )

-

-Goal ::= UNSIGNED_RIGHT_SHIFT Header1  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 440

-

-

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  5

-

-$eof                      Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 194 ----------------------------------------------------------------------

-( 18 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 441

-

-

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ModifiersWithDefault ::= Modifiersopt  .default Modifiersopt 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-RecoveryMethodHeaderName ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 442

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-default                           Shift  338

-class                             Shift  228

-after                             Shift  425

-before                            Shift  426

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-Identifier                        Shift  344

-AT308                             Shift  22

-LESS                              Shift  223

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   428

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 443

-

-

-ReferenceType                     Goto   428

-Type                              Goto   428

-TypeParameters                    Goto   430

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 195 ----------------------------------------------------------------------

-( 19 469 682 )

-

-Initializer ::= Diet  .NestedMethod CreateInitializer Block 

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   431

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 196 ----------------------------------------------------------------------

-( 20 122 123 132 185 187 190 683 684 685 761 765 )

-

-MethodBody ::= NestedMethod  .LBRACE BlockStatementsopt RBRACE 

-

-LBRACE    Shift  432

-

-

-STATE 197 ----------------------------------------------------------------------

-( 21 )

-

-CompilationUnit ::= EnterCompilationUnit  .InternalCompilationUnit 

-

-InternalCompilationUnit ::= .PackageDeclaration 

-InternalCompilationUnit ::= .PackageDeclaration ImportDeclarations 

-                            ReduceImports 

-InternalCompilationUnit ::= .PackageDeclaration ImportDeclarations 

-                            ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= .PackageDeclaration TypeDeclarations 

-InternalCompilationUnit ::= .ImportDeclarations ReduceImports 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 444

-

-

-InternalCompilationUnit ::= .TypeDeclarations 

-InternalCompilationUnit ::= .ImportDeclarations ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= . (117)

-ImportDeclarations ::= .ImportDeclarations ImportDeclaration 

-TypeDeclarations ::= .TypeDeclaration 

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-PackageDeclaration ::= .PackageDeclarationName SEMICOLON 

-PackageDeclarationName ::= .Modifiers package PushRealModifiers Name 

-                           RejectTypeAnnotations 

-PackageDeclarationName ::= .PackageComment package Name RejectTypeAnnotations 

-PackageComment ::= . (143)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-TypeDeclaration ::= .ClassDeclaration 

-TypeDeclaration ::= .InterfaceDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-TypeDeclaration ::= .EnumDeclaration 

-TypeDeclaration ::= .AnnotationTypeDeclaration 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-TypeDeclaration ::= .AspectDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 445

-

-

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-import                                 Shift  149

-AT                                     Shift  80

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 446

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-

-PackageDeclarationName                 Goto   140

-Modifier                               Goto   1064

-Modifiers                              Goto   144

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-PackageComment                         Goto   141

-ImportDeclaration                      Goto   435

-ImportDeclarations                     Goto   435

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Goto   435

-TypeImportOnDemandDeclaration          Goto   435

-SingleStaticImportDeclaration          Goto   435

-StaticImportOnDemandDeclaration        Goto   435

-TypeDeclaration                        Goto   1096

-TypeDeclarations                       Goto   434

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Goto   1096

-InterfaceDeclaration                   Goto   1096

-EnumDeclaration                        Goto   1096

-AnnotationTypeDeclaration              Goto   1096

-AspectDeclaration                      Goto   1096

-PackageDeclaration                     Goto   433

-InternalCompilationUnit                Gt/Rd  109

-

-$eof                                   Reduce 117

-class                                  Reduce 764

-enum                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 447

-

-

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-package                                Reduce 143

-

-Default reduction to rule  764

-

-

-STATE 198 ----------------------------------------------------------------------

-( 22 )

-

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-TypeAnnotationName ::= AT308 UnannotatableName . (100)

-

-DOT           Shift  436

-

-Identifier    Reduce 100

-boolean       Reduce 100

-byte          Reduce 100

-char          Reduce 100

-double        Reduce 100

-float         Reduce 100

-int           Reduce 100

-long          Reduce 100

-short         Reduce 100

-void          Reduce 100

-aspect        Reduce 100

-pointcut      Reduce 100

-around        Reduce 100

-before        Reduce 100

-after         Reduce 100

-declare       Reduce 100

-privileged    Reduce 100

-LPAREN        Reduce 100

-LBRACKET      Reduce 100

-QUESTION      Reduce 100

-ELLIPSIS      Reduce 100

-AT308         Reduce 100

-$eof          Reduce 100

-

-Default reduction to rule  100

-

-

-STATE 199 ----------------------------------------------------------------------

-( 23 )

-

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN  .MemberValuePairsopt RPAREN 

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN  .

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 448

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-SimpleNameOrAj ::= .AjSimpleName 

-SimpleNameOrAj ::= .SimpleName 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 449

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 450

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 451

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 452

-

-

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValuePairsopt ::= . (970)

-MemberValuePairsopt ::= .MemberValuePairs 

-MemberValuePairs ::= .MemberValuePair 

-MemberValuePairs ::= .MemberValuePairs COMMA MemberValuePair 

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 453

-

-

-MemberValue ::= .ConditionalExpression_NotName 

-MemberValue ::= .NameOrAj 

-MemberValue ::= .Annotation 

-MemberValue ::= .MemberValueArrayInitializer 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotationMemberValue ::= .MemberValue 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1098

-declare                                 Shift  1098

-after                                   Shift  1098

-before                                  Shift  1098

-pointcut                                Shift  1098

-privileged                              Shift  1098

-aspect                                  Shift  1098

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1097

-true                                    Shift  1097

-null                                    Shift  1097

-StringLiteral                           Shift  1097

-CharacterLiteral                        Shift  1097

-DoubleLiteral                           Shift  1097

-FloatingPointLiteral                    Shift  1097

-LongLiteral                             Shift  1097

-IntegerLiteral                          Shift  1097

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   1108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 454

-

-

-NameOrAj                                Goto   171

-Annotation                              Goto   1108

-MemberValueArrayInitializer             Goto   1108

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1108

-MarkerAnnotation                        Goto   1108

-SingleMemberAnnotation                  Goto   1108

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1100

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1100

-CastExpression                          Goto   1100

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1107

-BooleanLiteral                          Goto   1097

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Goto   442

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Goto   441

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1097

-ClassInstanceCreationExpression         Goto   1106

-FieldAccess                             Goto   1105

-MethodInvocation                        Goto   1104

-ArrayAccess                             Goto   1103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 455

-

-

-LambdaExpression                        Goto   1102

-ReferenceExpression                     Goto   1101

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1100

-PreDecrementExpression                  Goto   1100

-UnaryExpressionNotPlusMinus_NotName     Goto   1100

-MemberValue                             Gt/Rd  989

-MemberValuePair                         Goto   1099

-MemberValuePairs                        Goto   440

-AjSimpleNameNoAround                    Goto   1098

-SimpleNameOrAj                          Goto   439

-MemberValuePairsopt                     Goto   438

-SingleMemberAnnotationMemberValue       Goto   437

-

-RPAREN                                  Reduce 970

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 200 ----------------------------------------------------------------------

-( 25 294 552 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-

-COMMA    Shift  443

-

-

-STATE 201 ----------------------------------------------------------------------

-( 25 294 443 552 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 824

-

-Default reduction to rule  824

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 456

-

-

-

-

-STATE 202 ----------------------------------------------------------------------

-( 25 294 443 552 667 668 681 900 )

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS             Shift  444

-

-TypeArguments    Gt/Rd  59

-

-AND              Reduce 53

-GREATER          Reduce 53

-COMMA            Reduce 53

-

-Default reduction to rule  55

-

-

-STATE 203 ----------------------------------------------------------------------

-( 25 83 121 133 138 143 173 179 192 194 216 233 294 316 331 334 339 351 377 

-  390 409 424 430 443 444 450 478 521 632 667 668 681 691 805 806 878 896 897 

-  900 959 1001 1002 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                             Shift  445

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 457

-

-

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-OneDimLoop                      Goto   1079

-DimsLoop                        Goto   209

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-Dims                            Gt/Rd  63

-

-Identifier                      Reduce 57

-abstract                        Reduce 57

-final                           Reduce 57

-instanceof                      Reduce 57

-native                          Reduce 57

-private                         Reduce 57

-protected                       Reduce 57

-public                          Reduce 57

-static                          Reduce 57

-strictfp                        Reduce 57

-synchronized                    Reduce 57

-this                            Reduce 57

-transient                       Reduce 57

-volatile                        Reduce 57

-aspect                          Reduce 57

-pointcut                        Reduce 57

-around                          Reduce 57

-before                          Reduce 57

-after                           Reduce 57

-declare                         Reduce 57

-privileged                      Reduce 57

-EQUAL_EQUAL                     Reduce 57

-NOT_EQUAL                       Reduce 57

-RIGHT_SHIFT                     Reduce 57

-UNSIGNED_RIGHT_SHIFT            Reduce 57

-OR_OR                           Reduce 57

-AND_AND                         Reduce 57

-XOR                             Reduce 57

-AND                             Reduce 57

-OR                              Reduce 57

-GREATER                         Reduce 57

-LESS                            Reduce 57

-RPAREN                          Reduce 57

-RBRACE                          Reduce 57

-RBRACKET                        Reduce 57

-SEMICOLON                       Reduce 57

-QUESTION                        Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 458

-

-

-COLON                           Reduce 57

-COMMA                           Reduce 57

-AT                              Reduce 57

-ELLIPSIS                        Reduce 57

-ElidedSemicolonAndRightBrace    Reduce 57

-AT308DOTDOTDOT                  Reduce 57

-$eof                            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 204 ----------------------------------------------------------------------

-( 25 294 316 377 390 443 444 450 667 668 681 805 806 896 897 900 959 1001 1002 )

-

-ArrayType ::= PrimitiveType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  62

-

-

-STATE 205 ----------------------------------------------------------------------

-( 25 294 443 552 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 459

-

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-

-QUESTION             Shift  446

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 206 ----------------------------------------------------------------------

-( 26 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT  .

-                                        ClassOrInterfaceType Dimsopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 460

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassOrInterfaceType          Goto   447

-

-

-STATE 207 ----------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 209 240 245 287 304 305 447 522 526 549 572 

-  573 583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-OneDimLoop ::= TypeAnnotations  .LBRACKET RBRACKET 

-

-LBRACKET    Shift  448

-

-

-STATE 208 ----------------------------------------------------------------------

-( 26 85 89 91 96 203 204 209 287 304 447 526 549 572 573 583 591 593 635 644 

-  653 750 848 860 872 873 926 938 944 945 )

-

-OneDimLoop ::= LBRACKET  .RBRACKET 

-

-RBRACKET    Sh/Rd  654

-

-

-STATE 209 ----------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 240 245 287 304 305 447 522 526 549 572 573 

-  583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-Dims ::= DimsLoop . (651)

-DimsLoop ::= DimsLoop  .OneDimLoop 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 461

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                        Shift  208

-AT308                           Shift  22

-

-TypeAnnotations0                Goto   24

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationName              Goto   23

-TypeAnnotation                  Goto   1037

-TypeAnnotations                 Goto   207

-OneDimLoop                      Gt/Rd  653

-

-Identifier                      Reduce 651

-abstract                        Reduce 651

-default                         Reduce 651

-final                           Reduce 651

-instanceof                      Reduce 651

-native                          Reduce 651

-private                         Reduce 651

-protected                       Reduce 651

-public                          Reduce 651

-static                          Reduce 651

-strictfp                        Reduce 651

-synchronized                    Reduce 651

-this                            Reduce 651

-throws                          Reduce 651

-transient                       Reduce 651

-volatile                        Reduce 651

-aspect                          Reduce 651

-pointcut                        Reduce 651

-around                          Reduce 651

-before                          Reduce 651

-after                           Reduce 651

-declare                         Reduce 651

-privileged                      Reduce 651

-EQUAL_EQUAL                     Reduce 651

-NOT_EQUAL                       Reduce 651

-RIGHT_SHIFT                     Reduce 651

-UNSIGNED_RIGHT_SHIFT            Reduce 651

-OR_OR                           Reduce 651

-AND_AND                         Reduce 651

-XOR                             Reduce 651

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 462

-

-

-AND                             Reduce 651

-OR                              Reduce 651

-GREATER                         Reduce 651

-RPAREN                          Reduce 651

-LBRACE                          Reduce 651

-RBRACE                          Reduce 651

-RBRACKET                        Reduce 651

-SEMICOLON                       Reduce 651

-QUESTION                        Reduce 651

-COLON                           Reduce 651

-COMMA                           Reduce 651

-DOT                             Reduce 651

-EQUAL                           Reduce 651

-AT                              Reduce 651

-ELLIPSIS                        Reduce 651

-COLON_COLON                     Reduce 651

-ElidedSemicolonAndRightBrace    Reduce 651

-AT308DOTDOTDOT                  Reduce 651

-$eof                            Reduce 651

-

-Default reduction to rule  651

-

-

-STATE 210 ----------------------------------------------------------------------

-( 27 )

-

-ParenthesizedCastNameAndBounds ::= LPAREN CastNameAndBounds  .RPAREN 

-

-RPAREN    Sh/Rd  697

-

-

-STATE 211 ----------------------------------------------------------------------

-( 27 303 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-CastNameAndBounds ::= Name  .AdditionalBoundList 

-

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-DOT                    Shift  445

-AND                    Shift  450

-

-AdditionalBound        Goto   449

-AdditionalBoundList    Goto   449

-

-

-STATE 212 ----------------------------------------------------------------------

-( 27 60 149 206 217 220 222 254 260 293 303 350 355 494 504 592 674 711 746 

-  770 948 949 993 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 463

-

-

-Name ::= TypeAnnotations  .SimpleName 

-

-Identifier    Sh/Rd  85

-

-SimpleName    Gt/Rd  85

-

-

-STATE 213 ----------------------------------------------------------------------

-( 28 )

-

-LambdaParameterList ::= PushLPAREN FormalParameterListopt  .PushRPAREN 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  616

-

-

-STATE 214 ----------------------------------------------------------------------

-( 28 119 120 124 134 145 178 184 188 189 191 760 766 )

-

-FormalParameterList ::= FormalParameterList  .COMMA FormalParameter 

-FormalParameterListopt ::= FormalParameterList . (775)

-

-COMMA     Shift  451

-

-RPAREN    Reduce 775

-

-Default reduction to rule  775

-

-

-STATE 215 ----------------------------------------------------------------------

-( 28 )

-

-LambdaParameterList ::= PushLPAREN TypeElidedFormalParameterList  .PushRPAREN 

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList  .COMMA 

-                                  TypeElidedFormalParameter 

-

-PushRPAREN ::= .RPAREN 

-

-COMMA         Shift  452

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  617

-

-

-STATE 216 ----------------------------------------------------------------------

-( 28 )

-

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 464

-

-

-FormalParameter ::= Modifiersopt  .Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  454

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 465

-

-

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   453

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   453

-Type                              Goto   453

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 217 ----------------------------------------------------------------------

-( 29 219 225 336 867 )

-

-ClassHeaderImplements ::= implements  .InterfaceTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 466

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceTypeList ::= .InterfaceTypeList COMMA InterfaceType 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Gt/Rd  353

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-InterfaceType                 Goto   455

-InterfaceTypeList             Goto   455

-

-

-STATE 218 ----------------------------------------------------------------------

-( 30 )

-

-EnumBody ::= LBRACE  .EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .EnumConstants COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE  .EnumConstants EnumBodyDeclarationsopt RBRACE 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 467

-

-

-Modifiersopt ::= .Modifiers 

-EnumConstants ::= .EnumConstants COMMA EnumConstant 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-EnumConstant ::= .EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= .EnumConstantHeader 

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-COMMA                      Shift  456

-SEMICOLON                  Shift  458

-AT                         Shift  136

-strictfp                   Shift  1064

-volatile                   Shift  1064

-transient                  Shift  1064

-synchronized               Shift  1064

-native                     Shift  1064

-final                      Shift  1064

-abstract                   Shift  1064

-static                     Shift  1064

-private                    Shift  1064

-protected                  Shift  1064

-public                     Shift  1064

-

-EnumConstantHeader         Goto   461

-Modifiersopt               Goto   460

-Modifier                   Goto   1064

-Modifiers                  Goto   137

-NormalAnnotation           Goto   1047

-MarkerAnnotation           Goto   1047

-SingleMemberAnnotation     Goto   1047

-AnnotationName             Goto   81

-SimpleModifier             Goto   1064

-Annotation                 Gt/Rd  171

-EnumConstantHeaderName     Goto   177

-EnumConstant               Goto   459

-EnumConstants              Goto   459

-EnumDeclarations           Goto   457

-EnumBodyDeclarationsopt    Goto   457

-

-RBRACE                     Reduce 807

-Identifier                 Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 468

-

-

-

-Default reduction to rule  807

-

-

-STATE 219 ----------------------------------------------------------------------

-( 31 )

-

-AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt  .

-                                    ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  948

-ClassHeaderImplementsopt    Gt/Rd  948

-

-abstract                    Reduce 776

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 220 ----------------------------------------------------------------------

-( 31 36 125 764 )

-

-ClassHeaderExtends ::= extends  .ClassType 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 469

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Gt/Rd  349

-ClassType                     Gt/Rd  349

-

-

-STATE 221 ----------------------------------------------------------------------

-( 32 )

-

-AnnotationTypeBody ::= LBRACE  .AnnotationTypeMemberDeclarationsopt RBRACE 

-

-NestedType ::= . (780)

-AnnotationTypeMemberDeclarationsopt ::= . (951)

-AnnotationTypeMemberDeclarationsopt ::= .NestedType 

-                                        AnnotationTypeMemberDeclarations 

-

-NestedType                             Goto   463

-AnnotationTypeMemberDeclarationsopt    Goto   462

-

-RBRACE                                 Reduce 951

-Identifier                             Reduce 780

-abstract                               Reduce 780

-boolean                                Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 470

-

-

-byte                                   Reduce 780

-char                                   Reduce 780

-class                                  Reduce 780

-double                                 Reduce 780

-enum                                   Reduce 780

-final                                  Reduce 780

-float                                  Reduce 780

-int                                    Reduce 780

-interface                              Reduce 780

-long                                   Reduce 780

-native                                 Reduce 780

-private                                Reduce 780

-protected                              Reduce 780

-public                                 Reduce 780

-short                                  Reduce 780

-static                                 Reduce 780

-strictfp                               Reduce 780

-synchronized                           Reduce 780

-transient                              Reduce 780

-void                                   Reduce 780

-volatile                               Reduce 780

-aspect                                 Reduce 780

-privileged                             Reduce 780

-LESS                                   Reduce 780

-SEMICOLON                              Reduce 780

-AT                                     Reduce 780

-AT308                                  Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 222 ----------------------------------------------------------------------

-( 33 )

-

-InterfaceHeaderExtends ::= extends  .InterfaceTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 471

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceTypeList ::= .InterfaceTypeList COMMA InterfaceType 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Gt/Rd  353

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-InterfaceType                 Goto   464

-InterfaceTypeList             Goto   464

-

-

-STATE 223 ----------------------------------------------------------------------

-( 34 38 121 127 128 133 138 143 179 192 194 470 651 732 763 767 798 851 )

-

-TypeParameters ::= LESS  .TypeParameterList1 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameterHeader ::= .TypeAnnotationsopt JavaIdentifier 

-TypeParameterList ::= .TypeParameterList COMMA TypeParameter 

-TypeParameter ::= .TypeParameterHeader 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 472

-

-

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameterList1 ::= .TypeParameterList COMMA TypeParameter1 

-TypeParameter1 ::= .TypeParameterHeader GREATER 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType1 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType 

-                   AdditionalBoundList1 

-

-AT308                         Shift  22

-

-TypeParameterHeader           Goto   467

-TypeAnnotations               Goto   466

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   466

-TypeParameter                 Goto   465

-TypeParameterList             Goto   465

-TypeParameter1                Gt/Rd  858

-TypeParameterList1            Gt/Rd  858

-

-Identifier                    Reduce 92

-aspect                        Reduce 92

-pointcut                      Reduce 92

-around                        Reduce 92

-before                        Reduce 92

-after                         Reduce 92

-declare                       Reduce 92

-privileged                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 224 ----------------------------------------------------------------------

-( 35 )

-

-InterfaceBody ::= LBRACE  .InterfaceMemberDeclarationsopt RBRACE 

-

-InterfaceMemberDeclarationsopt ::= . (778)

-InterfaceMemberDeclarationsopt ::= .NestedType InterfaceMemberDeclarations 

-NestedType ::= . (780)

-

-NestedType                        Goto   469

-InterfaceMemberDeclarationsopt    Goto   468

-

-RBRACE                            Reduce 778

-Identifier                        Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 473

-

-

-abstract                          Reduce 780

-boolean                           Reduce 780

-byte                              Reduce 780

-char                              Reduce 780

-class                             Reduce 780

-default                           Reduce 780

-double                            Reduce 780

-enum                              Reduce 780

-final                             Reduce 780

-float                             Reduce 780

-int                               Reduce 780

-interface                         Reduce 780

-long                              Reduce 780

-native                            Reduce 780

-private                           Reduce 780

-protected                         Reduce 780

-public                            Reduce 780

-short                             Reduce 780

-static                            Reduce 780

-strictfp                          Reduce 780

-synchronized                      Reduce 780

-transient                         Reduce 780

-void                              Reduce 780

-volatile                          Reduce 780

-aspect                            Reduce 780

-pointcut                          Reduce 780

-privileged                        Reduce 780

-LESS                              Reduce 780

-LBRACE                            Reduce 780

-SEMICOLON                         Reduce 780

-AT                                Reduce 780

-AT308                             Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 225 ----------------------------------------------------------------------

-( 36 )

-

-ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt  .

-                ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  345

-ClassHeaderImplementsopt    Gt/Rd  345

-

-abstract                    Reduce 776

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 474

-

-

-final                       Reduce 776

-native                      Reduce 776

-private                     Reduce 776

-protected                   Reduce 776

-public                      Reduce 776

-static                      Reduce 776

-strictfp                    Reduce 776

-synchronized                Reduce 776

-transient                   Reduce 776

-volatile                    Reduce 776

-LBRACE                      Reduce 776

-AT                          Reduce 776

-$eof                        Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 226 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 767 )

-

-EnumHeaderName ::= Modifiersopt enum  .JavaIdentifier 

-EnumHeaderName ::= Modifiersopt enum  .JavaIdentifier TypeParameters 

-

-Identifier              Shift  470

-declare                 Shift  470

-after                   Shift  470

-before                  Shift  470

-pointcut                Shift  470

-privileged              Shift  470

-aspect                  Shift  470

-around                  Shift  470

-

-AjSimpleNameNoAround    Goto   470

-AjSimpleName            Goto   470

-JavaIdentifier          Goto   470

-

-

-STATE 227 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 767 )

-

-InterfaceHeaderName1 ::= Modifiersopt interface  .JavaIdentifier 

-

-Identifier              Sh/Rd  438

-declare                 Sh/Rd  438

-after                   Sh/Rd  438

-before                  Sh/Rd  438

-pointcut                Sh/Rd  438

-privileged              Sh/Rd  438

-aspect                  Sh/Rd  438

-around                  Sh/Rd  438

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 475

-

-

-AjSimpleNameNoAround    Gt/Rd  438

-AjSimpleName            Gt/Rd  438

-JavaIdentifier          Gt/Rd  438

-

-

-STATE 228 ----------------------------------------------------------------------

-( 37 133 139 143 192 194 )

-

-ClassHeaderName1 ::= Modifiersopt class  .JavaIdentifier 

-

-Identifier              Sh/Rd  348

-declare                 Sh/Rd  348

-after                   Sh/Rd  348

-before                  Sh/Rd  348

-pointcut                Sh/Rd  348

-privileged              Sh/Rd  348

-aspect                  Sh/Rd  348

-around                  Sh/Rd  348

-

-AjSimpleNameNoAround    Gt/Rd  348

-AjSimpleName            Gt/Rd  348

-JavaIdentifier          Gt/Rd  348

-

-

-STATE 229 ----------------------------------------------------------------------

-( 39 678 762 971 972 )

-

-ClassBody ::= LBRACE  .ClassBodyDeclarationsopt RBRACE 

-

-ClassBodyDeclarationsopt ::= . (762)

-ClassBodyDeclarationsopt ::= .NestedType ClassBodyDeclarations 

-NestedType ::= . (780)

-

-NestedType                  Goto   472

-ClassBodyDeclarationsopt    Goto   471

-

-RBRACE                      Reduce 762

-Identifier                  Reduce 780

-abstract                    Reduce 780

-boolean                     Reduce 780

-byte                        Reduce 780

-char                        Reduce 780

-class                       Reduce 780

-default                     Reduce 780

-double                      Reduce 780

-enum                        Reduce 780

-final                       Reduce 780

-float                       Reduce 780

-int                         Reduce 780

-interface                   Reduce 780

-long                        Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 476

-

-

-native                      Reduce 780

-private                     Reduce 780

-protected                   Reduce 780

-public                      Reduce 780

-short                       Reduce 780

-static                      Reduce 780

-strictfp                    Reduce 780

-synchronized                Reduce 780

-transient                   Reduce 780

-void                        Reduce 780

-volatile                    Reduce 780

-aspect                      Reduce 780

-pointcut                    Reduce 780

-privileged                  Reduce 780

-LESS                        Reduce 780

-LBRACE                      Reduce 780

-SEMICOLON                   Reduce 780

-AT                          Reduce 780

-AT308                       Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 230 ----------------------------------------------------------------------

-( 40 )

-

-TryStatementWithResources ::= try ResourceSpecification  .TryBlock Catchesopt 

-TryStatementWithResources ::= try ResourceSpecification  .TryBlock Catchesopt 

-                              Finally 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-TryBlock ::= .Block ExitTryBlock 

-

-OpenBlock    Goto   70

-Block        Goto   232

-TryBlock     Goto   473

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 231 ----------------------------------------------------------------------

-( 40 )

-

-TryStatement ::= try TryBlock  .Catches 

-TryStatement ::= try TryBlock  .Catchesopt Finally 

-

-Catches ::= .CatchClause 

-Catches ::= .Catches CatchClause 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 477

-

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-Catchesopt ::= . (787)

-Catchesopt ::= .Catches 

-

-catch          Shift  475

-

-Catches        Goto   476

-CatchClause    Goto   1109

-Catchesopt     Goto   474

-

-finally        Reduce 787

-

-Default reduction to rule  787

-

-

-STATE 232 ----------------------------------------------------------------------

-( 40 230 )

-

-TryBlock ::= Block  .ExitTryBlock 

-

-ExitTryBlock ::= . (572)

-

-ExitTryBlock            Gt/Rd  571

-

-Identifier              Reduce 572

-abstract                Reduce 572

-assert                  Reduce 572

-boolean                 Reduce 572

-break                   Reduce 572

-byte                    Reduce 572

-case                    Reduce 572

-catch                   Reduce 572

-char                    Reduce 572

-class                   Reduce 572

-continue                Reduce 572

-default                 Reduce 572

-do                      Reduce 572

-double                  Reduce 572

-else                    Reduce 572

-enum                    Reduce 572

-false                   Reduce 572

-final                   Reduce 572

-finally                 Reduce 572

-float                   Reduce 572

-for                     Reduce 572

-if                      Reduce 572

-int                     Reduce 572

-interface               Reduce 572

-long                    Reduce 572

-native                  Reduce 572

-new                     Reduce 572

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 478

-

-

-null                    Reduce 572

-private                 Reduce 572

-protected               Reduce 572

-public                  Reduce 572

-return                  Reduce 572

-short                   Reduce 572

-static                  Reduce 572

-strictfp                Reduce 572

-super                   Reduce 572

-switch                  Reduce 572

-synchronized            Reduce 572

-this                    Reduce 572

-throw                   Reduce 572

-transient               Reduce 572

-true                    Reduce 572

-try                     Reduce 572

-void                    Reduce 572

-volatile                Reduce 572

-while                   Reduce 572

-aspect                  Reduce 572

-pointcut                Reduce 572

-around                  Reduce 572

-before                  Reduce 572

-after                   Reduce 572

-declare                 Reduce 572

-privileged              Reduce 572

-IntegerLiteral          Reduce 572

-LongLiteral             Reduce 572

-FloatingPointLiteral    Reduce 572

-DoubleLiteral           Reduce 572

-CharacterLiteral        Reduce 572

-StringLiteral           Reduce 572

-PLUS_PLUS               Reduce 572

-MINUS_MINUS             Reduce 572

-LESS                    Reduce 572

-LPAREN                  Reduce 572

-LBRACE                  Reduce 572

-RBRACE                  Reduce 572

-SEMICOLON               Reduce 572

-AT                      Reduce 572

-BeginLambda             Reduce 572

-AT308                   Reduce 572

-$eof                    Reduce 572

-

-Default reduction to rule  572

-

-

-STATE 233 ----------------------------------------------------------------------

-( 40 )

-

-ResourceSpecification ::= LPAREN  .Resources ;opt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 479

-

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-Resources ::= .Resource 

-Resources ::= .Resources TrailingSemiColon Resource 

-Resource ::= .Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Resource ::= .Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 480

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Shift  478

-volatile                          Shift  478

-transient                         Shift  478

-synchronized                      Shift  478

-native                            Shift  478

-final                             Shift  478

-abstract                          Shift  478

-static                            Shift  478

-private                           Shift  478

-protected                         Shift  478

-public                            Shift  478

-AT                                Shift  136

-

-Type                              Goto   479

-Modifiers                         Goto   478

-SimpleModifier                    Goto   478

-Annotation                        Gt/Rd  171

-AnnotationName                    Goto   81

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-Modifier                          Goto   478

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   479

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   479

-Resource                          Gt/Rd  566

-Resources                         Goto   477

-

-boolean                           Reduce 92

-byte                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 481

-

-

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 234 ----------------------------------------------------------------------

-( 41 )

-

-ThrowStatement ::= throw Expression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  556

-

-

-STATE 235 ----------------------------------------------------------------------

-( 42 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN  .Expression RPAREN Block 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 482

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 483

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 484

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 485

-

-

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 486

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 487

-

-

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   480

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 236 ----------------------------------------------------------------------

-( 43 )

-

-ReturnStatement ::= return Expressionopt  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  555

-

-

-STATE 237 ----------------------------------------------------------------------

-( 44 )

-

-ContinueStatement ::= continue Identifier  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  554

-

-

-STATE 238 ----------------------------------------------------------------------

-( 45 )

-

-BreakStatement ::= break Identifier  .SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 488

-

-

-

-SEMICOLON    Sh/Rd  552

-

-

-STATE 239 ----------------------------------------------------------------------

-( 46 )

-

-DoStatement ::= do Statement  .while LPAREN Expression RPAREN SEMICOLON 

-

-while    Shift  481

-

-

-STATE 240 ----------------------------------------------------------------------

-( 46 76 275 724 725 842 919 923 1011 1012 1013 1033 1036 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name  .DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= Name  .DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 489

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  290

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-LPAREN                        Reduce 68

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 241 ----------------------------------------------------------------------

-( 47 )

-

-SwitchStatement ::= switch LPAREN  .Expression RPAREN OpenBlock SwitchBlock 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 490

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 491

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 492

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 493

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 494

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 495

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   482

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 496

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 242 ----------------------------------------------------------------------

-( 48 )

-

-PreDecrementExpression ::= MINUS_MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 497

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 498

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 499

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 500

-

-

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  684

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  684

-PreDecrementExpression                  Gt/Rd  684

-UnaryExpressionNotPlusMinus             Gt/Rd  684

-UnaryExpression                         Gt/Rd  684

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 501

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 243 ----------------------------------------------------------------------

-( 49 )

-

-PreIncrementExpression ::= PLUS_PLUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 502

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 503

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 504

-

-

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 505

-

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  683

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  683

-PreDecrementExpression                  Gt/Rd  683

-UnaryExpressionNotPlusMinus             Gt/Rd  683

-UnaryExpression                         Gt/Rd  683

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 506

-

-

-

-Default reduction to rule  92

-

-

-STATE 244 ----------------------------------------------------------------------

-( 54 102 )

-

-PrimaryNoNewArray ::= PushLPAREN Expression_NotName  .PushRPAREN 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Gt/Rd  584

-

-

-STATE 245 ----------------------------------------------------------------------

-( 54 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushRPAREN ::= .RPAREN 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 507

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LESS                          Shift  369

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-RPAREN                        Sh/Rd  578

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   301

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-PushRPAREN                    Gt/Rd  585

-Dimsopt                       Goto   289

-

-instanceof                    Reduce 68

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 508

-

-

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-LPAREN                        Reduce 68

-QUESTION                      Reduce 68

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 246 ----------------------------------------------------------------------

-( 54 102 )

-

-MethodInvocation ::= NameOrAj  .LPAREN ArgumentListopt RPAREN 

-PostfixExpression ::= NameOrAj . (672)

-MultiplicativeExpression_NotName ::= NameOrAj  .MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= NameOrAj  .REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj  .PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= NameOrAj  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= NameOrAj  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= NameOrAj  .GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= NameOrAj  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= NameOrAj  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj  .AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj  .OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= NameOrAj  .QUESTION Expression COLON 

-                                  ConditionalExpression 

-

-QUESTION                      Shift  382

-OR_OR                         Shift  383

-AND_AND                       Shift  384

-OR                            Shift  385

-XOR                           Shift  386

-AND                           Shift  387

-NOT_EQUAL                     Shift  388

-EQUAL_EQUAL                   Shift  389

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 509

-

-

-instanceof                    Shift  390

-GREATER_EQUAL                 Shift  391

-LESS_EQUAL                    Shift  392

-GREATER                       Shift  393

-UNSIGNED_RIGHT_SHIFT          Shift  394

-RIGHT_SHIFT                   Shift  395

-LEFT_SHIFT                    Shift  396

-MINUS                         Shift  397

-PLUS                          Shift  398

-REMAINDER                     Shift  399

-DIVIDE                        Shift  400

-MULTIPLY                      Shift  401

-LPAREN                        Shift  251

-

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-EQUAL                         Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 247 ----------------------------------------------------------------------

-( 55 )

-

-LambdaParameters ::= BeginLambda NestedLambda  .LambdaParameterList 

-

-PushLPAREN ::= .LPAREN 

-LambdaParameterList ::= .PushLPAREN FormalParameterListopt PushRPAREN 

-LambdaParameterList ::= .PushLPAREN TypeElidedFormalParameterList PushRPAREN 

-

-LPAREN                 Sh/Rd  577

-

-PushLPAREN             Goto   28

-LambdaParameterList    Gt/Rd  614

-

-

-STATE 248 ----------------------------------------------------------------------

-( 56 )

-

-LambdaExpression ::= LambdaParameters ARROW  .LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 510

-

-

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-LambdaBody ::= .ElidedLeftBraceAndReturn Expression 

-               ElidedSemicolonAndRightBrace 

-ElidedLeftBraceAndReturn ::= . (623)

-

-OpenBlock                   Goto   70

-ElidedLeftBraceAndReturn    Goto   484

-Block                       Gt/Rd  611

-LambdaBody                  Gt/Rd  611

-

-LBRACE                      Reduce 467

-Identifier                  Reduce 623

-boolean                     Reduce 623

-byte                        Reduce 623

-char                        Reduce 623

-double                      Reduce 623

-false                       Reduce 623

-float                       Reduce 623

-int                         Reduce 623

-long                        Reduce 623

-new                         Reduce 623

-null                        Reduce 623

-short                       Reduce 623

-super                       Reduce 623

-this                        Reduce 623

-true                        Reduce 623

-void                        Reduce 623

-aspect                      Reduce 623

-pointcut                    Reduce 623

-around                      Reduce 623

-before                      Reduce 623

-after                       Reduce 623

-declare                     Reduce 623

-privileged                  Reduce 623

-IntegerLiteral              Reduce 623

-LongLiteral                 Reduce 623

-FloatingPointLiteral        Reduce 623

-DoubleLiteral               Reduce 623

-CharacterLiteral            Reduce 623

-StringLiteral               Reduce 623

-PLUS_PLUS                   Reduce 623

-MINUS_MINUS                 Reduce 623

-PLUS                        Reduce 623

-MINUS                       Reduce 623

-NOT                         Reduce 623

-TWIDDLE                     Reduce 623

-LPAREN                      Reduce 623

-BeginLambda                 Reduce 623

-BeginIntersectionCast       Reduce 623

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 511

-

-

-AT308                       Reduce 623

-

-Default reduction to rule  623

-

-

-STATE 249 ----------------------------------------------------------------------

-( 57 )

-

-ArrayAccess ::= AjName LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 512

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 513

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 514

-

-

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 515

-

-

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 516

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 517

-

-

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   485

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 250 ----------------------------------------------------------------------

-( 57 283 )

-

-AjQualifiedName ::= AjName DOT  .SimpleNameOrAj 

-

-Identifier              Sh/Rd  81

-around                  Sh/Rd  81

-declare                 Sh/Rd  81

-after                   Sh/Rd  81

-before                  Sh/Rd  81

-pointcut                Sh/Rd  81

-privileged              Sh/Rd  81

-aspect                  Sh/Rd  81

-

-AjSimpleNameNoAround    Gt/Rd  81

-AjSimpleName            Gt/Rd  81

-SimpleName              Gt/Rd  81

-SimpleNameOrAj          Gt/Rd  81

-

-

-STATE 251 ----------------------------------------------------------------------

-( 58 171 246 )

-

-MethodInvocation ::= NameOrAj LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 518

-

-

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 519

-

-

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 520

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 521

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 522

-

-

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 523

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   486

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 524

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 252 ----------------------------------------------------------------------

-( 59 )

-

-FieldAccess ::= QualifiedSuperReceiver DOT  .Identifier 

-MethodInvocation ::= QualifiedSuperReceiver DOT  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= QualifiedSuperReceiver DOT  .OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-JavaIdentifier ::= .Identifier 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier              Shift  490

-declare                 Shift  489

-after                   Shift  489

-before                  Shift  489

-pointcut                Shift  489

-privileged              Shift  489

-aspect                  Shift  489

-around                  Shift  489

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   489

-AjSimpleName            Goto   489

-JavaIdentifier          Goto   489

-OnlyTypeArguments       Goto   488

-

-

-STATE 253 ----------------------------------------------------------------------

-( 59 )

-

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON  .

-                        NonWildTypeArgumentsopt Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   491

-NonWildTypeArgumentsopt    Goto   491

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 254 ----------------------------------------------------------------------

-( 60 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 525

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   492

-ClassType                     Goto   492

-

-

-STATE 255 ----------------------------------------------------------------------

-( 60 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 526

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   493

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 256 ----------------------------------------------------------------------

-( 60 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-ClassOrInterface ::= Name . (57)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT             Shift  445

-

-Identifier      Reduce 57

-abstract        Reduce 57

-final           Reduce 57

-implements      Reduce 57

-native          Reduce 57

-private         Reduce 57

-protected       Reduce 57

-public          Reduce 57

-static          Reduce 57

-strictfp        Reduce 57

-synchronized    Reduce 57

-transient       Reduce 57

-volatile        Reduce 57

-AND             Reduce 57

-LESS            Reduce 57

-LPAREN          Reduce 57

-RPAREN          Reduce 57

-LBRACE          Reduce 57

-LBRACKET        Reduce 57

-SEMICOLON       Reduce 57

-COLON           Reduce 57

-COMMA           Reduce 57

-AT              Reduce 57

-COLON_COLON     Reduce 57

-AT308           Reduce 57

-$eof            Reduce 57

-

-Default reduction to rule  57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 527

-

-

-

-

-STATE 257 ----------------------------------------------------------------------

-( 60 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-

-DOT             Shift  494

-

-Identifier      Reduce 56

-abstract        Reduce 56

-final           Reduce 56

-implements      Reduce 56

-native          Reduce 56

-private         Reduce 56

-protected       Reduce 56

-public          Reduce 56

-static          Reduce 56

-strictfp        Reduce 56

-synchronized    Reduce 56

-transient       Reduce 56

-volatile        Reduce 56

-AND             Reduce 56

-LPAREN          Reduce 56

-RPAREN          Reduce 56

-LBRACE          Reduce 56

-LBRACKET        Reduce 56

-SEMICOLON       Reduce 56

-COLON           Reduce 56

-COMMA           Reduce 56

-AT              Reduce 56

-COLON_COLON     Reduce 56

-AT308           Reduce 56

-$eof            Reduce 56

-

-Default reduction to rule  56

-

-

-STATE 258 ----------------------------------------------------------------------

-( 61 )

-

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new PrimitiveType  .DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 528

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   495

-

-LBRACKET                      Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 259 ----------------------------------------------------------------------

-( 61 )

-

-ClassInstanceCreationExpression ::= new ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   497

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 260 ----------------------------------------------------------------------

-( 61 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 529

-

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   498

-ClassType                     Goto   498

-

-

-STATE 261 ----------------------------------------------------------------------

-( 61 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 530

-

-

-ClassType ::= ClassOrInterfaceType . (66)

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType  .

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType  .

-                                      DimWithOrWithOutExprs ArrayInitializer 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   499

-

-LPAREN                        Reduce 66

-LBRACKET                      Reduce 92

-

-Default reduction to rule  66

-

-

-STATE 262 ----------------------------------------------------------------------

-( 62 )

-

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET  .Expression 

-                RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 531

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 532

-

-

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 533

-

-

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 534

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 535

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 536

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   500

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 537

-

-

-

-Default reduction to rule  92

-

-

-STATE 263 ----------------------------------------------------------------------

-( 63 )

-

-ArrayAccess ::= PrimaryNoNewArray LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 538

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 539

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 540

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 541

-

-

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 542

-

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 543

-

-

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   501

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 264 ----------------------------------------------------------------------

-( 64 116 )

-

-Assignment ::= PostfixExpression AssignmentOperator  .AssignmentExpression 

-InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator  .

-                                       ArrayInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 544

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 545

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 546

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 547

-

-

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1120

-true                                    Shift  1120

-null                                    Shift  1120

-StringLiteral                           Shift  1120

-CharacterLiteral                        Shift  1120

-DoubleLiteral                           Shift  1120

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 548

-

-

-FloatingPointLiteral                    Shift  1120

-LongLiteral                             Shift  1120

-IntegerLiteral                          Shift  1120

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1121

-PreDecrementExpression                  Goto   1121

-UnaryExpressionNotPlusMinus             Goto   1121

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1130

-PostDecrementExpression                 Goto   1129

-PostfixExpression                       Goto   116

-Literal                                 Goto   1120

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1128

-FieldAccess                             Goto   1127

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1126

-ArrayAccess                             Goto   1125

-LambdaExpression                        Goto   1124

-ReferenceExpression                     Goto   1123

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 549

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1120

-ArrayCreationWithoutArrayInitializer    Goto   1122

-CastExpression                          Goto   1121

-UnaryExpression                         Goto   1121

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Gt/Rd  739

-Assignment                              Gt/Rd  739

-AssignmentExpression                    Gt/Rd  739

-ArrayInitializer                        Gt/Rd  740

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 265 ----------------------------------------------------------------------

-( 65 100 157 )

-

-ReferenceExpression ::= Primary COLON_COLON  .NonWildTypeArgumentsopt 

-                        Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   502

-NonWildTypeArgumentsopt    Goto   502

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 266 ----------------------------------------------------------------------

-( 65 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 550

-

-

-ExplicitConstructorInvocation ::= Primary DOT  .super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT  .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ClassInstanceCreationExpression ::= Primary DOT  .new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT  .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary DOT  .JavaIdentifier 

-MethodInvocation ::= Primary DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                     Shift  504

-this                    Shift  505

-super                   Shift  507

-LESS                    Shift  25

-Identifier              Shift  503

-declare                 Shift  503

-after                   Shift  503

-before                  Shift  503

-pointcut                Shift  503

-privileged              Shift  503

-aspect                  Shift  503

-around                  Shift  503

-

-AjSimpleNameNoAround    Goto   503

-AjSimpleName            Goto   503

-OnlyTypeArguments       Goto   506

-JavaIdentifier          Goto   503

-

-

-STATE 267 ----------------------------------------------------------------------

-( 66 97 )

-

-FieldAccess ::= super DOT  .JavaIdentifier 

-MethodInvocation ::= super DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= super DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 551

-

-

-

-Identifier              Shift  509

-declare                 Shift  509

-after                   Shift  509

-before                  Shift  509

-pointcut                Shift  509

-privileged              Shift  509

-aspect                  Shift  509

-around                  Shift  509

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   509

-AjSimpleName            Goto   509

-JavaIdentifier          Goto   509

-OnlyTypeArguments       Goto   508

-

-

-STATE 268 ----------------------------------------------------------------------

-( 66 97 )

-

-ReferenceExpression ::= super COLON_COLON  .NonWildTypeArgumentsopt Identifier 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   510

-NonWildTypeArgumentsopt    Goto   510

-

-Identifier                 Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 269 ----------------------------------------------------------------------

-( 66 )

-

-ExplicitConstructorInvocation ::= super LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 552

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 553

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 554

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 555

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 556

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 557

-

-

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   511

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 558

-

-

-

-Default reduction to rule  92

-

-

-STATE 270 ----------------------------------------------------------------------

-( 67 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  512

-

-

-STATE 271 ----------------------------------------------------------------------

-( 67 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  513

-

-

-STATE 272 ----------------------------------------------------------------------

-( 68 )

-

-ExplicitConstructorInvocation ::= this LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 559

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 560

-

-

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 561

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 562

-

-

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 563

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 564

-

-

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   514

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 273 ----------------------------------------------------------------------

-( 70 )

-

-Block ::= OpenBlock LBRACE  .BlockStatementsopt RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 565

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 566

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 567

-

-

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 568

-

-

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 569

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 570

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 571

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 572

-

-

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 573

-

-

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 574

-

-

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Goto   515

-

-RBRACE                                  Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 274 ----------------------------------------------------------------------

-( 71 )

-

-AssertStatement ::= assert Expression  .SEMICOLON 

-AssertStatement ::= assert Expression  .COLON Expression SEMICOLON 

-

-COLON        Shift  516

-SEMICOLON    Sh/Rd  549

-

-

-STATE 275 ----------------------------------------------------------------------

-( 72 )

-

-LabeledStatement ::= Label COLON  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 575

-

-

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 576

-

-

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 577

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 578

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 579

-

-

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  512

-Block                                   Gt/Rd  512

-EmptyStatement                          Gt/Rd  512

-ExpressionStatement                     Gt/Rd  512

-SwitchStatement                         Gt/Rd  512

-DoStatement                             Gt/Rd  512

-BreakStatement                          Gt/Rd  512

-ContinueStatement                       Gt/Rd  512

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 580

-

-

-ReturnStatement                         Gt/Rd  512

-SynchronizedStatement                   Gt/Rd  512

-ThrowStatement                          Gt/Rd  512

-TryStatement                            Gt/Rd  512

-TryStatementWithResources               Gt/Rd  512

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 581

-

-

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  512

-LabeledStatement                        Gt/Rd  512

-IfThenStatement                         Gt/Rd  512

-IfThenElseStatement                     Gt/Rd  512

-WhileStatement                          Gt/Rd  512

-ForStatement                            Gt/Rd  512

-EnhancedForStatement                    Gt/Rd  512

-Statement                               Gt/Rd  512

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 276 ----------------------------------------------------------------------

-( 74 )

-

-IfThenStatement ::= if LPAREN  .Expression RPAREN Statement 

-IfThenElseStatement ::= if LPAREN  .Expression RPAREN StatementNoShortIf else 

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 582

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 583

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 584

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 585

-

-

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 586

-

-

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 587

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   517

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 277 ----------------------------------------------------------------------

-( 75 )

-

-WhileStatement ::= while LPAREN  .Expression RPAREN Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 588

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 589

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 590

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 591

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 592

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 593

-

-

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   518

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 278 ----------------------------------------------------------------------

-( 77 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 594

-

-

-ForStatement ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 595

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForInit ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 596

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 597

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForInitopt ::= . (781)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 598

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-AT                                      Shift  136

-strictfp                                Shift  521

-volatile                                Shift  521

-transient                               Shift  521

-synchronized                            Shift  521

-native                                  Shift  521

-final                                   Shift  521

-abstract                                Shift  521

-static                                  Shift  521

-private                                 Shift  521

-protected                               Shift  521

-public                                  Shift  521

-

-StatementExpressionList                 Goto   523

-LocalVariableDeclaration                Goto   519

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   520

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-Name                                    Goto   522

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   520

-Modifier                                Goto   521

-Modifiers                               Goto   521

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   521

-Annotation                              Gt/Rd  171

-Type                                    Goto   520

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 599

-

-

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1131

-ForInit                                 Goto   519

-ForInitopt                              Goto   519

-

-SEMICOLON                               Reduce 781

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 279 ----------------------------------------------------------------------

-( 78 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 600

-

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON  .

-                               Expression RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 601

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 602

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 603

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 604

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 605

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   524

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 606

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 280 ----------------------------------------------------------------------

-( 79 )

-

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   525

-VariableDeclarators     Goto   525

-

-

-STATE 281 ----------------------------------------------------------------------

-( 80 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader  .interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader  .interface 

-                                        JavaIdentifier 

-

-interface    Shift  528

-

-

-STATE 282 ----------------------------------------------------------------------

-( 80 136 286 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 607

-

-

-UnannotatableNameOrAj ::= UnannotatableName . (83)

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-

-DOT             Shift  436

-

-Identifier      Reduce 83

-abstract        Reduce 83

-boolean         Reduce 83

-byte            Reduce 83

-char            Reduce 83

-class           Reduce 83

-default         Reduce 83

-double          Reduce 83

-enum            Reduce 83

-final           Reduce 83

-float           Reduce 83

-int             Reduce 83

-interface       Reduce 83

-long            Reduce 83

-native          Reduce 83

-package         Reduce 83

-private         Reduce 83

-protected       Reduce 83

-public          Reduce 83

-short           Reduce 83

-static          Reduce 83

-strictfp        Reduce 83

-synchronized    Reduce 83

-transient       Reduce 83

-void            Reduce 83

-volatile        Reduce 83

-aspect          Reduce 83

-pointcut        Reduce 83

-around          Reduce 83

-before          Reduce 83

-after           Reduce 83

-privileged      Reduce 83

-LESS            Reduce 83

-LPAREN          Reduce 83

-RPAREN          Reduce 83

-RBRACE          Reduce 83

-SEMICOLON       Reduce 83

-COMMA           Reduce 83

-AT              Reduce 83

-AT308           Reduce 83

-$eof            Reduce 83

-

-Default reduction to rule  83

-

-

-STATE 283 ----------------------------------------------------------------------

-( 80 136 286 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 608

-

-

-AjQualifiedName ::= AjName  .DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= AjName . (82)

-

-DOT             Shift  250

-

-Identifier      Reduce 82

-abstract        Reduce 82

-boolean         Reduce 82

-byte            Reduce 82

-char            Reduce 82

-class           Reduce 82

-default         Reduce 82

-double          Reduce 82

-enum            Reduce 82

-final           Reduce 82

-float           Reduce 82

-int             Reduce 82

-interface       Reduce 82

-long            Reduce 82

-native          Reduce 82

-package         Reduce 82

-private         Reduce 82

-protected       Reduce 82

-public          Reduce 82

-short           Reduce 82

-static          Reduce 82

-strictfp        Reduce 82

-synchronized    Reduce 82

-transient       Reduce 82

-void            Reduce 82

-volatile        Reduce 82

-aspect          Reduce 82

-pointcut        Reduce 82

-around          Reduce 82

-before          Reduce 82

-after           Reduce 82

-privileged      Reduce 82

-LESS            Reduce 82

-LPAREN          Reduce 82

-RPAREN          Reduce 82

-RBRACE          Reduce 82

-SEMICOLON       Reduce 82

-COMMA           Reduce 82

-AT              Reduce 82

-AT308           Reduce 82

-$eof            Reduce 82

-

-Default reduction to rule  82

-

-

-STATE 284 ----------------------------------------------------------------------

-( 81 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 609

-

-

-NormalAnnotation ::= AnnotationName LPAREN  .MemberValuePairsopt RPAREN 

-SingleMemberAnnotation ::= AnnotationName LPAREN  .

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-SimpleNameOrAj ::= .AjSimpleName 

-SimpleNameOrAj ::= .SimpleName 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 610

-

-

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 611

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 612

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 613

-

-

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValuePairsopt ::= . (970)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 614

-

-

-MemberValuePairsopt ::= .MemberValuePairs 

-MemberValuePairs ::= .MemberValuePair 

-MemberValuePairs ::= .MemberValuePairs COMMA MemberValuePair 

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-MemberValue ::= .ConditionalExpression_NotName 

-MemberValue ::= .NameOrAj 

-MemberValue ::= .Annotation 

-MemberValue ::= .MemberValueArrayInitializer 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotationMemberValue ::= .MemberValue 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1098

-declare                                 Shift  1098

-after                                   Shift  1098

-before                                  Shift  1098

-pointcut                                Shift  1098

-privileged                              Shift  1098

-aspect                                  Shift  1098

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1097

-true                                    Shift  1097

-null                                    Shift  1097

-StringLiteral                           Shift  1097

-CharacterLiteral                        Shift  1097

-DoubleLiteral                           Shift  1097

-FloatingPointLiteral                    Shift  1097

-LongLiteral                             Shift  1097

-IntegerLiteral                          Shift  1097

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 615

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   1108

-NameOrAj                                Goto   171

-Annotation                              Goto   1108

-MemberValueArrayInitializer             Goto   1108

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1108

-MarkerAnnotation                        Goto   1108

-SingleMemberAnnotation                  Goto   1108

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1100

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1100

-CastExpression                          Goto   1100

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1107

-BooleanLiteral                          Goto   1097

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Goto   442

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Goto   441

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 616

-

-

-Literal                                 Goto   1097

-ClassInstanceCreationExpression         Goto   1106

-FieldAccess                             Goto   1105

-MethodInvocation                        Goto   1104

-ArrayAccess                             Goto   1103

-LambdaExpression                        Goto   1102

-ReferenceExpression                     Goto   1101

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1100

-PreDecrementExpression                  Goto   1100

-UnaryExpressionNotPlusMinus_NotName     Goto   1100

-MemberValue                             Gt/Rd  989

-MemberValuePair                         Goto   1099

-MemberValuePairs                        Goto   440

-AjSimpleNameNoAround                    Goto   1098

-SimpleNameOrAj                          Goto   439

-MemberValuePairsopt                     Goto   530

-SingleMemberAnnotationMemberValue       Goto   529

-

-RPAREN                                  Reduce 970

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 285 ----------------------------------------------------------------------

-( 83 )

-

-LocalVariableDeclaration ::= Modifiers Type  .PushRealModifiers 

-                             VariableDeclarators 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   531

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 617

-

-

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 286 ----------------------------------------------------------------------

-( 83 126 144 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT  .PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT  .PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationName ::= AT  .UnannotatableNameOrAj 

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-UnannotatableNameOrAj ::= .AjName 

-UnannotatableNameOrAj ::= .UnannotatableName 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .SimpleName 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushRealModifiers ::= . (484)

-

-Identifier               Shift  1092

-around                   Shift  1051

-declare                  Shift  1051

-after                    Shift  1051

-before                   Shift  1051

-pointcut                 Shift  1051

-privileged               Shift  1051

-aspect                   Shift  1051

-

-AjSimpleName             Gt/Rd  71

-AjQualifiedName          Gt/Rd  72

-AjName                   Goto   283

-AjSimpleNameNoAround     Goto   1051

-SimpleName               Goto   1092

-UnannotatableName        Goto   282

-PushRealModifiers        Goto   532

-UnannotatableNameOrAj    Gt/Rd  968

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 618

-

-

-

-interface                Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 287 ----------------------------------------------------------------------

-( 83 121 133 138 143 173 179 192 194 216 233 331 334 339 351 409 424 430 478 

-  521 632 691 767 871 878 )

-

-Type ::= PrimitiveType . (39)

-ArrayType ::= PrimitiveType  .Dims 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  62

-

-Identifier                    Reduce 39

-this                          Reduce 39

-aspect                        Reduce 39

-pointcut                      Reduce 39

-around                        Reduce 39

-before                        Reduce 39

-after                         Reduce 39

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 619

-

-

-declare                       Reduce 39

-privileged                    Reduce 39

-OR                            Reduce 39

-ELLIPSIS                      Reduce 39

-AT308DOTDOTDOT                Reduce 39

-

-Default reduction to rule  39

-

-

-STATE 288 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-ReferenceExpression ::= Name BeginTypeArguments  .

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-ReferenceExpressionTypeArgumentsAndTrunk ::= .

-ReferenceExpressionTypeArgumentsAndTrunk0

-                                         

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments Dimsopt 

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= .OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType Dimsopt 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                                         Shift  25

-

-OnlyTypeArguments                            Goto   26

-ReferenceExpressionTypeArgumentsAndTrunk0    Gt/Rd  598

-ReferenceExpressionTypeArgumentsAndTrunk     Goto   533

-

-

-STATE 289 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-ReferenceExpression ::= Name Dimsopt  .COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

-COLON_COLON    Shift  534

-

-

-STATE 290 ----------------------------------------------------------------------

-( 87 240 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-ExplicitConstructorInvocation ::= Name DOT  .super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT  .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT  .this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 620

-

-

-ExplicitConstructorInvocation ::= Name DOT  .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-PrimaryNoNewArray ::= Name DOT  .this 

-QualifiedSuperReceiver ::= Name DOT  .super 

-PrimaryNoNewArray ::= Name DOT  .class 

-ClassInstanceCreationExpressionName ::= Name DOT  .new 

-MethodInvocation ::= Name DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                           Sh/Rd  632

-class                         Sh/Rd  590

-this                          Shift  535

-super                         Shift  537

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-OnlyTypeArguments             Goto   536

-

-

-STATE 291 ----------------------------------------------------------------------

-( 87 99 163 240 245 305 522 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 621

-

-

-OneDimLoop ::= LBRACKET  .RBRACKET 

-ArrayAccess ::= Name LBRACKET  .Expression RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 622

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 623

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 624

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 625

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACKET                                Sh/Rd  654

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 626

-

-

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   539

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 627

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 292 ----------------------------------------------------------------------

-( 87 522 )

-

-ArrayType ::= Name Dims . (63)

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-Dimsopt ::= Dims . (769)

-

-DOT            Shift  540

-

-COLON_COLON    Reduce 769

-Identifier     Reduce 63

-aspect         Reduce 63

-pointcut       Reduce 63

-around         Reduce 63

-before         Reduce 63

-after          Reduce 63

-declare        Reduce 63

-privileged     Reduce 63

-GREATER        Reduce 63

-COMMA          Reduce 63

-

-Default reduction to rule  63

-

-

-STATE 293 ----------------------------------------------------------------------

-( 89 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 628

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 294 ----------------------------------------------------------------------

-( 90 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 629

-

-

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-TypeAnnotationsopt                Goto   205

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   202

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   201

-TypeArgument                      Goto   200

-TypeArgumentList                  Goto   200

-Wildcard                          Goto   200

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 630

-

-

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 295 ----------------------------------------------------------------------

-( 91 96 304 750 )

-

-PrimaryNoNewArray ::= PrimitiveType DOT  .class 

-

-class    Sh/Rd  593

-

-

-STATE 296 ----------------------------------------------------------------------

-( 91 750 )

-

-ArrayType ::= PrimitiveType Dims . (62)

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  542

-DOT            Shift  543

-

-Identifier     Reduce 62

-aspect         Reduce 62

-pointcut       Reduce 62

-around         Reduce 62

-before         Reduce 62

-after          Reduce 62

-declare        Reduce 62

-privileged     Reduce 62

-GREATER        Reduce 62

-COMMA          Reduce 62

-

-Default reduction to rule  62

-

-

-STATE 297 ----------------------------------------------------------------------

-( 94 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 631

-

-

-UnaryExpression ::= MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 632

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 633

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 634

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  681

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 635

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  681

-PreDecrementExpression                  Gt/Rd  681

-UnaryExpressionNotPlusMinus             Gt/Rd  681

-UnaryExpression                         Gt/Rd  681

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 298 ----------------------------------------------------------------------

-( 95 )

-

-UnaryExpression ::= PLUS PushPosition  .UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 636

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 637

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 638

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 639

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  680

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 640

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  680

-PreDecrementExpression                  Gt/Rd  680

-UnaryExpressionNotPlusMinus             Gt/Rd  680

-UnaryExpression                         Gt/Rd  680

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 299 ----------------------------------------------------------------------

-( 96 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 641

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  542

-DOT            Shift  543

-

-

-STATE 300 ----------------------------------------------------------------------

-( 99 163 245 305 522 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name DOT  .this 

-QualifiedSuperReceiver ::= Name DOT  .super 

-PrimaryNoNewArray ::= Name DOT  .class 

-ClassInstanceCreationExpressionName ::= Name DOT  .new 

-MethodInvocation ::= Name DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                           Sh/Rd  632

-class                         Sh/Rd  590

-super                         Sh/Rd  589

-this                          Sh/Rd  588

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-LESS                          Shift  25

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 642

-

-

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-OnlyTypeArguments             Goto   544

-

-

-STATE 301 ----------------------------------------------------------------------

-( 99 163 240 245 )

-

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-Dimsopt ::= Dims . (769)

-

-DOT            Shift  540

-

-COLON_COLON    Reduce 769

-

-Default reduction to rule  769

-

-

-STATE 302 ----------------------------------------------------------------------

-( 100 157 )

-

-ClassInstanceCreationExpression ::= Primary DOT  .new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT  .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-FieldAccess ::= Primary DOT  .JavaIdentifier 

-MethodInvocation ::= Primary DOT  .OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= Primary DOT  .JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-new                     Shift  504

-Identifier              Shift  503

-declare                 Shift  503

-after                   Shift  503

-before                  Shift  503

-pointcut                Shift  503

-privileged              Shift  503

-aspect                  Shift  503

-around                  Shift  503

-LESS                    Shift  25

-

-AjSimpleNameNoAround    Goto   503

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 643

-

-

-AjSimpleName            Goto   503

-JavaIdentifier          Goto   503

-OnlyTypeArguments       Goto   545

-

-

-STATE 303 ----------------------------------------------------------------------

-( 101 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN  .CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CastNameAndBounds ::= .Name AdditionalBoundList 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   211

-Name                          Goto   211

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-CastNameAndBounds             Goto   546

-

-

-STATE 304 ----------------------------------------------------------------------

-( 102 )

-

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 644

-

-

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-CastExpression ::= PushLPAREN PrimitiveType  .Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   548

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   547

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 305 ----------------------------------------------------------------------

-( 102 )

-

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 645

-

-

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= PushLPAREN Name  .PushRPAREN 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name  .Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-RelationalExpression_NotName ::= Name  .LESS ShiftExpression 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushRPAREN ::= .RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-OnlyTypeArgumentsForCastExpression ::= .OnlyTypeArguments 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-BeginTypeArguments                    Shift  288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 646

-

-

-DOT                                   Shift  300

-RPAREN                                Sh/Rd  578

-LBRACKET                              Shift  291

-AT308                                 Shift  22

-LESS                                  Shift  552

-

-OnlyTypeArguments                     Gt/Rd  699

-Dims                                  Goto   551

-OneDimLoop                            Goto   1079

-DimsLoop                              Goto   209

-TypeAnnotations0                      Goto   24

-NormalTypeAnnotation                  Gt/Rd  97

-MarkerTypeAnnotation                  Gt/Rd  98

-SingleMemberTypeAnnotation            Gt/Rd  99

-TypeAnnotationName                    Goto   23

-TypeAnnotation                        Goto   1037

-TypeAnnotations                       Goto   207

-PushRPAREN                            Goto   550

-Dimsopt                               Goto   289

-OnlyTypeArgumentsForCastExpression    Goto   549

-

-instanceof                            Reduce 68

-PLUS_PLUS                             Reduce 672

-MINUS_MINUS                           Reduce 672

-EQUAL_EQUAL                           Reduce 68

-LESS_EQUAL                            Reduce 68

-GREATER_EQUAL                         Reduce 68

-NOT_EQUAL                             Reduce 68

-LEFT_SHIFT                            Reduce 68

-RIGHT_SHIFT                           Reduce 68

-UNSIGNED_RIGHT_SHIFT                  Reduce 68

-PLUS_EQUAL                            Reduce 672

-MINUS_EQUAL                           Reduce 672

-MULTIPLY_EQUAL                        Reduce 672

-DIVIDE_EQUAL                          Reduce 672

-AND_EQUAL                             Reduce 672

-OR_EQUAL                              Reduce 672

-XOR_EQUAL                             Reduce 672

-REMAINDER_EQUAL                       Reduce 672

-LEFT_SHIFT_EQUAL                      Reduce 672

-RIGHT_SHIFT_EQUAL                     Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 672

-OR_OR                                 Reduce 68

-AND_AND                               Reduce 68

-PLUS                                  Reduce 68

-MINUS                                 Reduce 68

-REMAINDER                             Reduce 68

-XOR                                   Reduce 68

-AND                                   Reduce 68

-MULTIPLY                              Reduce 68

-OR                                    Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 647

-

-

-DIVIDE                                Reduce 68

-GREATER                               Reduce 68

-LPAREN                                Reduce 68

-QUESTION                              Reduce 68

-EQUAL                                 Reduce 672

-COLON_COLON                           Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 306 ----------------------------------------------------------------------

-( 103 )

-

-UnaryExpressionNotPlusMinus ::= NOT PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 648

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 649

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 650

-

-

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 651

-

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  687

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  687

-PreDecrementExpression                  Gt/Rd  687

-UnaryExpressionNotPlusMinus             Gt/Rd  687

-UnaryExpression                         Gt/Rd  687

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 652

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 307 ----------------------------------------------------------------------

-( 104 )

-

-UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 653

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 654

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 655

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 656

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  686

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  686

-PreDecrementExpression                  Gt/Rd  686

-UnaryExpressionNotPlusMinus             Gt/Rd  686

-UnaryExpression                         Gt/Rd  686

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 657

-

-

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 308 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression REMAINDER  .

-                             UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 658

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 659

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 660

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 661

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  707

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  707

-PreDecrementExpression                  Gt/Rd  707

-UnaryExpressionNotPlusMinus             Gt/Rd  707

-UnaryExpression                         Gt/Rd  707

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 662

-

-

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 309 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression DIVIDE  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 663

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 664

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 665

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 666

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  706

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  706

-PreDecrementExpression                  Gt/Rd  706

-UnaryExpressionNotPlusMinus             Gt/Rd  706

-UnaryExpression                         Gt/Rd  706

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 667

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 310 ----------------------------------------------------------------------

-( 105 556 557 597 598 627 628 )

-

-MultiplicativeExpression ::= MultiplicativeExpression MULTIPLY  .

-                             UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 668

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 669

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 670

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 671

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  705

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  705

-PreDecrementExpression                  Gt/Rd  705

-UnaryExpressionNotPlusMinus             Gt/Rd  705

-UnaryExpression                         Gt/Rd  705

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 672

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 311 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 673

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 674

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 675

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 676

-

-

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 677

-

-

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   553

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 312 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 678

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 679

-

-

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 680

-

-

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 681

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 682

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   554

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 313 ----------------------------------------------------------------------

-( 106 558 559 560 561 599 600 601 602 603 621 622 623 )

-

-ShiftExpression ::= ShiftExpression LEFT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 683

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 684

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 685

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 686

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 687

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   555

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 314 ----------------------------------------------------------------------

-( 107 553 554 555 604 605 606 624 625 626 )

-

-AdditiveExpression ::= AdditiveExpression MINUS  .MultiplicativeExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 688

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 689

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 690

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 691

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   556

-PreDecrementExpression                  Goto   556

-UnaryExpressionNotPlusMinus             Goto   556

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 692

-

-

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   556

-UnaryExpression                         Goto   556

-MultiplicativeExpression                Goto   556

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 315 ----------------------------------------------------------------------

-( 107 553 554 555 604 605 606 624 625 626 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 693

-

-

-AdditiveExpression ::= AdditiveExpression PLUS  .MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 694

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 695

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 696

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   557

-PreDecrementExpression                  Goto   557

-UnaryExpressionNotPlusMinus             Goto   557

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 697

-

-

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   557

-UnaryExpression                         Goto   557

-MultiplicativeExpression                Goto   557

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 316 ----------------------------------------------------------------------

-( 108 563 564 607 608 619 620 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 698

-

-

-InstanceofExpression ::= InstanceofExpression instanceof  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 699

-

-

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  721

-ReferenceType                     Gt/Rd  721

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 317 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression GREATER_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 700

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 701

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 702

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 703

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 704

-

-

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   558

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 318 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression LESS_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 705

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 706

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 707

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 708

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 709

-

-

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   559

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 710

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 319 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression GREATER  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 711

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 712

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 713

-

-

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 714

-

-

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 715

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   560

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 320 ----------------------------------------------------------------------

-( 109 )

-

-RelationalExpression ::= RelationalExpression LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 716

-

-

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 717

-

-

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 718

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 719

-

-

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 720

-

-

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   561

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 321 ----------------------------------------------------------------------

-( 110 566 609 617 )

-

-AndExpression ::= AndExpression AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 721

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 722

-

-

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 723

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 724

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 725

-

-

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 726

-

-

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   562

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 322 ----------------------------------------------------------------------

-( 111 562 610 618 )

-

-EqualityExpression ::= EqualityExpression NOT_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 727

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 728

-

-

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 729

-

-

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 730

-

-

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 731

-

-

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   563

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 323 ----------------------------------------------------------------------

-( 111 562 610 618 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 732

-

-

-EqualityExpression ::= EqualityExpression EQUAL_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 733

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 734

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 735

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 736

-

-

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 737

-

-

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   564

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 324 ----------------------------------------------------------------------

-( 112 569 611 615 )

-

-InclusiveOrExpression ::= InclusiveOrExpression OR  .ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 738

-

-

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 739

-

-

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 740

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 741

-

-

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 742

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   565

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 743

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 325 ----------------------------------------------------------------------

-( 113 565 612 616 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression XOR  .AndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 744

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 745

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 746

-

-

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 747

-

-

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 748

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   566

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 326 ----------------------------------------------------------------------

-( 114 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION  .Expression COLON 

-                          ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 749

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 750

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 751

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 752

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 753

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 754

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   567

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 755

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 327 ----------------------------------------------------------------------

-( 114 )

-

-ConditionalOrExpression ::= ConditionalOrExpression OR_OR  .

-                            ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 756

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 757

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 758

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 759

-

-

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 760

-

-

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   568

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 328 ----------------------------------------------------------------------

-( 115 568 614 630 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 761

-

-

-ConditionalAndExpression ::= ConditionalAndExpression AND_AND  .

-                             InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 762

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 763

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 764

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 765

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 766

-

-

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   569

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 329 ----------------------------------------------------------------------

-( 117 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace  .,opt RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace  .VariableInitializers RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace  .VariableInitializers COMMA RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 767

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-VariableInitializer ::= .Expression 

-VariableInitializer ::= .ArrayInitializer 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-VariableInitializers ::= .VariableInitializer 

-VariableInitializers ::= .VariableInitializers COMMA VariableInitializer 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 768

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 769

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 770

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 771

-

-

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-,opt ::= . (760)

-

-COMMA                                   Shift  570

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-Expression                              Goto   1230

-ArrayInitializer                        Goto   1230

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 772

-

-

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-VariableInitializer                     Gt/Rd  464

-VariableInitializers                    Goto   571

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 773

-

-

-,opt                                    Goto   570

-

-RBRACE                                  Reduce 760

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 330 ----------------------------------------------------------------------

-( 119 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   572

-

-

-STATE 331 ----------------------------------------------------------------------

-( 119 120 124 134 145 178 184 188 189 191 451 760 766 883 )

-

-FormalParameter ::= Modifiersopt  .Type VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt  .Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 774

-

-

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   453

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   453

-Type                              Goto   453

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 775

-

-

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 332 ----------------------------------------------------------------------

-( 120 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt  .

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   573

-

-

-STATE 333 ----------------------------------------------------------------------

-( 121 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault Type  .Identifier LPAREN 

-

-Identifier    Shift  574

-

-

-STATE 334 ----------------------------------------------------------------------

-( 121 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                            Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 776

-

-

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   575

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   575

-Type                              Goto   575

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 777

-

-

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 335 ----------------------------------------------------------------------

-( 124 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt  .

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   576

-

-

-STATE 336 ----------------------------------------------------------------------

-( 125 )

-

-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt  .

-                 ClassHeaderImplementsopt AspectHeaderRest 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Goto   577

-ClassHeaderImplementsopt    Goto   577

-

-Identifier                  Reduce 776

-LBRACE                      Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 337 ----------------------------------------------------------------------

-( 129 )

-

-AspectBody ::= LBRACE  .AspectBodyDeclarationsopt RBRACE 

-

-AspectBodyDeclarationsopt ::= . (198)

-AspectBodyDeclarationsopt ::= .NestedType AspectBodyDeclarations 

-NestedType ::= . (780)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 778

-

-

-NestedType                   Goto   579

-AspectBodyDeclarationsopt    Goto   578

-

-RBRACE                       Reduce 198

-Identifier                   Reduce 780

-abstract                     Reduce 780

-boolean                      Reduce 780

-byte                         Reduce 780

-char                         Reduce 780

-class                        Reduce 780

-double                       Reduce 780

-enum                         Reduce 780

-final                        Reduce 780

-float                        Reduce 780

-int                          Reduce 780

-interface                    Reduce 780

-long                         Reduce 780

-native                       Reduce 780

-private                      Reduce 780

-protected                    Reduce 780

-public                       Reduce 780

-short                        Reduce 780

-static                       Reduce 780

-strictfp                     Reduce 780

-synchronized                 Reduce 780

-transient                    Reduce 780

-void                         Reduce 780

-volatile                     Reduce 780

-aspect                       Reduce 780

-pointcut                     Reduce 780

-around                       Reduce 780

-before                       Reduce 780

-after                        Reduce 780

-declare                      Reduce 780

-privileged                   Reduce 780

-LESS                         Reduce 780

-LBRACE                       Reduce 780

-SEMICOLON                    Reduce 780

-AT                           Reduce 780

-AT308                        Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 338 ----------------------------------------------------------------------

-( 133 138 192 194 )

-

-ModifiersWithDefault ::= Modifiersopt default  .Modifiersopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 779

-

-

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Gt/Rd  396

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 780

-

-

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-LESS                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 339 ----------------------------------------------------------------------

-( 133 138 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters  .Type JavaIdentifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 781

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   580

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   580

-Type                              Goto   580

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 340 ----------------------------------------------------------------------

-( 133 )

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 782

-

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  583

-declare                 Shift  583

-after                   Shift  583

-before                  Shift  583

-pointcut                Shift  583

-privileged              Shift  583

-aspect                  Shift  583

-around                  Shift  583

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   583

-AjSimpleNameNoAround    Goto   583

-JavaIdentifier          Goto   583

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 341 ----------------------------------------------------------------------

-( 133 192 194 767 )

-

-PointcutHeader ::= Modifiersopt pointcut  .JavaIdentifier LPAREN 

-

-Identifier              Shift  584

-declare                 Shift  584

-after                   Shift  584

-before                  Shift  584

-pointcut                Shift  584

-privileged              Shift  584

-aspect                  Shift  584

-around                  Shift  584

-

-AjSimpleNameNoAround    Goto   584

-AjSimpleName            Goto   584

-JavaIdentifier          Goto   584

-

-

-STATE 342 ----------------------------------------------------------------------

-( 133 139 143 192 194 767 )

-

-AspectHeaderName2 ::= Modifiersopt privileged  .Modifiersopt aspect Identifier 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 783

-

-

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifier                  Goto   1064

-Modifiers                 Goto   137

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-AnnotationName            Goto   81

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-Modifiersopt              Goto   585

-

-aspect                    Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 343 ----------------------------------------------------------------------

-( 133 143 194 767 )

-

-AspectHeaderName1 ::= Modifiersopt aspect  .Identifier 

-ConstructorHeaderName ::= Modifiersopt aspect  .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 784

-

-

-

-LPAREN        Sh/Rd  403

-Identifier    Sh/Rd  190

-

-

-STATE 344 ----------------------------------------------------------------------

-( 133 138 143 194 767 )

-

-SimpleName ::= Identifier . (87)

-ConstructorHeaderName ::= Modifiersopt Identifier  .LPAREN 

-

-LPAREN        Sh/Rd  402

-

-Identifier    Reduce 84

-aspect        Reduce 84

-pointcut      Reduce 84

-around        Reduce 84

-before        Reduce 84

-after         Reduce 84

-declare       Reduce 84

-privileged    Reduce 84

-PLUS          Reduce 84

-LESS          Reduce 84

-LBRACKET      Reduce 84

-DOT           Reduce 84

-AT308         Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 345 ----------------------------------------------------------------------

-( 134 )

-

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   586

-

-

-STATE 346 ----------------------------------------------------------------------

-( 135 )

-

-ClassBodyDeclaration ::= Diet NestedMethod  .CreateInitializer Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   587

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 785

-

-

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 347 ----------------------------------------------------------------------

-( 138 )

-

-ConstructorHeaderName ::= Modifiersopt aspect  .LPAREN 

-

-LPAREN    Sh/Rd  403

-

-

-STATE 348 ----------------------------------------------------------------------

-( 138 )

-

-MethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-Identifier              Shift  588

-declare                 Shift  588

-after                   Shift  588

-before                  Shift  588

-pointcut                Shift  588

-privileged              Shift  588

-aspect                  Shift  588

-around                  Shift  588

-

-AjSimpleNameNoAround    Goto   588

-AjSimpleName            Goto   588

-JavaIdentifier          Goto   588

-

-

-STATE 349 ----------------------------------------------------------------------

-( 139 192 )

-

-AspectHeaderName1 ::= Modifiersopt aspect  .Identifier 

-

-Identifier    Sh/Rd  190

-

-

-STATE 350 ----------------------------------------------------------------------

-( 141 )

-

-PackageDeclarationName ::= PackageComment package  .Name RejectTypeAnnotations 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 786

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   589

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   589

-

-

-STATE 351 ----------------------------------------------------------------------

-( 143 )

-

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                               JavaIdentifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 787

-

-

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   590

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   590

-Type                              Goto   590

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 788

-

-

-

-Default reduction to rule  92

-

-

-STATE 352 ----------------------------------------------------------------------

-( 143 )

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-AnnotationMethodHeaderName ::= Modifiersopt Type  .JavaIdentifier LPAREN 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  591

-declare                 Shift  591

-after                   Shift  591

-before                  Shift  591

-pointcut                Shift  591

-privileged              Shift  591

-aspect                  Shift  591

-around                  Shift  591

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   591

-AjSimpleNameNoAround    Goto   591

-JavaIdentifier          Goto   591

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 353 ----------------------------------------------------------------------

-( 144 )

-

-PackageDeclarationName ::= Modifiers package  .PushRealModifiers Name 

-                           RejectTypeAnnotations 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   592

-

-Identifier           Reduce 484

-AT308                Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 354 ----------------------------------------------------------------------

-( 145 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 789

-

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt  .

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   593

-

-

-STATE 355 ----------------------------------------------------------------------

-( 149 )

-

-SingleStaticImportDeclarationName ::= import static  .Name 

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import static  .Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   594

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   594

-

-

-STATE 356 ----------------------------------------------------------------------

-( 149 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 790

-

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-SingleTypeImportDeclarationName ::= import Name  .RejectTypeAnnotations 

-TypeImportOnDemandDeclarationName ::= import Name  .DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  595

-

-RejectTypeAnnotations    Gt/Rd  149

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 357 ----------------------------------------------------------------------

-( 151 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE  .

-                                PushLeftBrace RBRACE 

-

-PushLeftBrace ::= . (460)

-

-PushLeftBrace            Goto   596

-

-Identifier               Reduce 460

-boolean                  Reduce 460

-byte                     Reduce 460

-char                     Reduce 460

-double                   Reduce 460

-false                    Reduce 460

-float                    Reduce 460

-int                      Reduce 460

-long                     Reduce 460

-new                      Reduce 460

-null                     Reduce 460

-short                    Reduce 460

-super                    Reduce 460

-this                     Reduce 460

-true                     Reduce 460

-void                     Reduce 460

-aspect                   Reduce 460

-pointcut                 Reduce 460

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 791

-

-

-around                   Reduce 460

-before                   Reduce 460

-after                    Reduce 460

-declare                  Reduce 460

-privileged               Reduce 460

-IntegerLiteral           Reduce 460

-LongLiteral              Reduce 460

-FloatingPointLiteral     Reduce 460

-DoubleLiteral            Reduce 460

-CharacterLiteral         Reduce 460

-StringLiteral            Reduce 460

-PLUS_PLUS                Reduce 460

-MINUS_MINUS              Reduce 460

-PLUS                     Reduce 460

-MINUS                    Reduce 460

-NOT                      Reduce 460

-TWIDDLE                  Reduce 460

-LPAREN                   Reduce 460

-LBRACE                   Reduce 460

-RBRACE                   Reduce 460

-COMMA                    Reduce 460

-AT                       Reduce 460

-BeginLambda              Reduce 460

-BeginIntersectionCast    Reduce 460

-AT308                    Reduce 460

-

-Default reduction to rule  460

-

-

-STATE 358 ----------------------------------------------------------------------

-( 152 )

-

-UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 792

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 793

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 794

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 795

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  885

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 796

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  885

-PreDecrementExpression                  Gt/Rd  885

-UnaryExpressionNotPlusMinus             Gt/Rd  885

-UnaryExpression                         Gt/Rd  885

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 359 ----------------------------------------------------------------------

-( 153 )

-

-UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 797

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 798

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 799

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 800

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  884

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 801

-

-

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  884

-PreDecrementExpression                  Gt/Rd  884

-UnaryExpressionNotPlusMinus             Gt/Rd  884

-UnaryExpression                         Gt/Rd  884

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 360 ----------------------------------------------------------------------

-( 158 )

-

-UnaryExpression_NotName ::= MINUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 802

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 803

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 804

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 805

-

-

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  881

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 806

-

-

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  881

-PreDecrementExpression                  Gt/Rd  881

-UnaryExpressionNotPlusMinus             Gt/Rd  881

-UnaryExpression                         Gt/Rd  881

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 361 ----------------------------------------------------------------------

-( 159 )

-

-UnaryExpression_NotName ::= PLUS PushPosition  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 807

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 808

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 809

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 810

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  880

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 811

-

-

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  880

-PreDecrementExpression                  Gt/Rd  880

-UnaryExpressionNotPlusMinus             Gt/Rd  880

-UnaryExpression                         Gt/Rd  880

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 362 ----------------------------------------------------------------------

-( 160 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS  .

-                               MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 812

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 813

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 814

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 815

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   597

-PreDecrementExpression                  Goto   597

-UnaryExpressionNotPlusMinus             Goto   597

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 816

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   597

-UnaryExpression                         Goto   597

-MultiplicativeExpression                Goto   597

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 363 ----------------------------------------------------------------------

-( 160 )

-

-AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS  .

-                               MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 817

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 818

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 819

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 820

-

-

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   598

-PreDecrementExpression                  Goto   598

-UnaryExpressionNotPlusMinus             Goto   598

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 821

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   598

-UnaryExpression                         Goto   598

-MultiplicativeExpression                Goto   598

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 364 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                     REMAINDER  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 822

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 823

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 824

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 825

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  892

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 826

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  892

-PreDecrementExpression                  Gt/Rd  892

-UnaryExpressionNotPlusMinus             Gt/Rd  892

-UnaryExpression                         Gt/Rd  892

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 365 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName DIVIDE  .

-                                     UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 827

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 828

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 829

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 830

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  890

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 831

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  890

-PreDecrementExpression                  Gt/Rd  890

-UnaryExpressionNotPlusMinus             Gt/Rd  890

-UnaryExpression                         Gt/Rd  890

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 366 ----------------------------------------------------------------------

-( 161 )

-

-MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName 

-                                     MULTIPLY  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 832

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 833

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 834

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 835

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  888

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 836

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  888

-PreDecrementExpression                  Gt/Rd  888

-UnaryExpressionNotPlusMinus             Gt/Rd  888

-UnaryExpression                         Gt/Rd  888

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 367 ----------------------------------------------------------------------

-( 162 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName GREATER_EQUAL  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 837

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 838

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 839

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 840

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 841

-

-

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   599

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 842

-

-

-

-

-STATE 368 ----------------------------------------------------------------------

-( 162 )

-

-RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 843

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 844

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 845

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 846

-

-

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 847

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   600

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 369 ----------------------------------------------------------------------

-( 163 245 )

-

-RelationalExpression_NotName ::= Name LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 848

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 849

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 850

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 851

-

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 852

-

-

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   601

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 370 ----------------------------------------------------------------------

-( 164 )

-

-RelationalExpression_NotName ::= ShiftExpression_NotName GREATER  .

-                                 ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 853

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 854

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 855

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 856

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 857

-

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   602

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 858

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 371 ----------------------------------------------------------------------

-( 164 )

-

-RelationalExpression_NotName ::= ShiftExpression_NotName LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 859

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 860

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 861

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 862

-

-

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 863

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   603

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 372 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 864

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 865

-

-

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 866

-

-

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 867

-

-

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 868

-

-

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   604

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 373 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 869

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 870

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 871

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 872

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 873

-

-

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   605

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 874

-

-

-

-

-STATE 374 ----------------------------------------------------------------------

-( 164 )

-

-ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT  .

-                            AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 875

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 876

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 877

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 878

-

-

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 879

-

-

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   606

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 375 ----------------------------------------------------------------------

-( 165 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL  .

-                               InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 880

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 881

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 882

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 883

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 884

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   607

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 376 ----------------------------------------------------------------------

-( 165 )

-

-EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL  .

-                               InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 885

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 886

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 887

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 888

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 889

-

-

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 890

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   608

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 377 ----------------------------------------------------------------------

-( 166 )

-

-InstanceofExpression_NotName ::= InstanceofExpression_NotName instanceof  .

-                                 ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 891

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  917

-ReferenceType                     Gt/Rd  917

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 378 ----------------------------------------------------------------------

-( 167 )

-

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR  .

-                                  AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 892

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 893

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 894

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 895

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 896

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 897

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   609

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 379 ----------------------------------------------------------------------

-( 168 )

-

-AndExpression_NotName ::= AndExpression_NotName AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 898

-

-

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 899

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 900

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 901

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 902

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   610

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 903

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 380 ----------------------------------------------------------------------

-( 169 )

-

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                     AND_AND  .InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 904

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 905

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 906

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 907

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 908

-

-

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   611

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 381 ----------------------------------------------------------------------

-( 170 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 909

-

-

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR  .

-                                  ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 910

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 911

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 912

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 913

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 914

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   612

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 382 ----------------------------------------------------------------------

-( 171 246 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION  .Expression COLON 

-                                  ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 915

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 916

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 917

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 918

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 919

-

-

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 920

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   613

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 383 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 921

-

-

-ConditionalOrExpression_NotName ::= NameOrAj OR_OR  .ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 922

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 923

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 924

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 925

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 926

-

-

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   614

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 384 ----------------------------------------------------------------------

-( 171 246 )

-

-ConditionalAndExpression_NotName ::= NameOrAj AND_AND  .InclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 927

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 928

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 929

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 930

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 931

-

-

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1219

-true                                    Shift  1219

-null                                    Shift  1219

-StringLiteral                           Shift  1219

-CharacterLiteral                        Shift  1219

-DoubleLiteral                           Shift  1219

-FloatingPointLiteral                    Shift  1219

-LongLiteral                             Shift  1219

-IntegerLiteral                          Shift  1219

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1220

-PreDecrementExpression                  Goto   1220

-UnaryExpressionNotPlusMinus             Goto   1220

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1229

-PostDecrementExpression                 Goto   1228

-PostfixExpression                       Goto   483

-Literal                                 Goto   1219

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1227

-FieldAccess                             Goto   1226

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1225

-ArrayAccess                             Goto   1224

-LambdaExpression                        Goto   1223

-ReferenceExpression                     Goto   1222

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 932

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1219

-ArrayCreationWithoutArrayInitializer    Goto   1221

-CastExpression                          Goto   1220

-UnaryExpression                         Goto   1220

-InclusiveOrExpression                   Goto   615

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 385 ----------------------------------------------------------------------

-( 171 246 )

-

-InclusiveOrExpression_NotName ::= NameOrAj OR  .ExclusiveOrExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 933

-

-

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 934

-

-

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 935

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 936

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1186

-true                                    Shift  1186

-null                                    Shift  1186

-StringLiteral                           Shift  1186

-CharacterLiteral                        Shift  1186

-DoubleLiteral                           Shift  1186

-FloatingPointLiteral                    Shift  1186

-LongLiteral                             Shift  1186

-IntegerLiteral                          Shift  1186

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 937

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1187

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1187

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1196

-BooleanLiteral                          Goto   1186

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1186

-ClassInstanceCreationExpression         Goto   1195

-FieldAccess                             Goto   1194

-MethodInvocation                        Goto   1193

-ArrayAccess                             Goto   1192

-LambdaExpression                        Goto   1191

-ReferenceExpression                     Goto   1190

-PostIncrementExpression                 Goto   1189

-PostDecrementExpression                 Goto   1188

-PreIncrementExpression                  Goto   1187

-PreDecrementExpression                  Goto   1187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 938

-

-

-UnaryExpressionNotPlusMinus             Goto   1187

-ExclusiveOrExpression                   Goto   616

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 386 ----------------------------------------------------------------------

-( 171 246 )

-

-ExclusiveOrExpression_NotName ::= NameOrAj XOR  .AndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 939

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 940

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 941

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 942

-

-

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1197

-true                                    Shift  1197

-null                                    Shift  1197

-StringLiteral                           Shift  1197

-CharacterLiteral                        Shift  1197

-DoubleLiteral                           Shift  1197

-FloatingPointLiteral                    Shift  1197

-LongLiteral                             Shift  1197

-IntegerLiteral                          Shift  1197

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1198

-PreDecrementExpression                  Goto   1198

-UnaryExpressionNotPlusMinus             Goto   1198

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1207

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 943

-

-

-PostDecrementExpression                 Goto   1206

-PostfixExpression                       Goto   483

-Literal                                 Goto   1197

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1205

-FieldAccess                             Goto   1204

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1203

-ArrayAccess                             Goto   1202

-LambdaExpression                        Goto   1201

-ReferenceExpression                     Goto   1200

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1197

-ArrayCreationWithoutArrayInitializer    Goto   1199

-CastExpression                          Goto   1198

-UnaryExpression                         Goto   1198

-AndExpression                           Goto   617

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 387 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 944

-

-

-AndExpression_NotName ::= NameOrAj AND  .EqualityExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 945

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 946

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 947

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 948

-

-

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1164

-true                                    Shift  1164

-null                                    Shift  1164

-StringLiteral                           Shift  1164

-CharacterLiteral                        Shift  1164

-DoubleLiteral                           Shift  1164

-FloatingPointLiteral                    Shift  1164

-LongLiteral                             Shift  1164

-IntegerLiteral                          Shift  1164

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1165

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1165

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1174

-BooleanLiteral                          Goto   1164

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 949

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1164

-ClassInstanceCreationExpression         Goto   1173

-FieldAccess                             Goto   1172

-MethodInvocation                        Goto   1171

-ArrayAccess                             Goto   1170

-LambdaExpression                        Goto   1169

-ReferenceExpression                     Goto   1168

-PostIncrementExpression                 Goto   1167

-PostDecrementExpression                 Goto   1166

-PreIncrementExpression                  Goto   1165

-PreDecrementExpression                  Goto   1165

-UnaryExpressionNotPlusMinus             Goto   1165

-EqualityExpression                      Goto   618

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 388 ----------------------------------------------------------------------

-( 171 246 )

-

-EqualityExpression_NotName ::= NameOrAj NOT_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 950

-

-

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 951

-

-

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 952

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 953

-

-

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 954

-

-

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   619

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 955

-

-

-

-Default reduction to rule  92

-

-

-STATE 389 ----------------------------------------------------------------------

-( 171 246 )

-

-EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL  .InstanceofExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 956

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 957

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 958

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 959

-

-

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1175

-true                                    Shift  1175

-null                                    Shift  1175

-StringLiteral                           Shift  1175

-CharacterLiteral                        Shift  1175

-DoubleLiteral                           Shift  1175

-FloatingPointLiteral                    Shift  1175

-LongLiteral                             Shift  1175

-IntegerLiteral                          Shift  1175

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1176

-PreDecrementExpression                  Goto   1176

-UnaryExpressionNotPlusMinus             Goto   1176

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1185

-PostDecrementExpression                 Goto   1184

-PostfixExpression                       Goto   483

-Literal                                 Goto   1175

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1183

-FieldAccess                             Goto   1182

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1181

-ArrayAccess                             Goto   1180

-LambdaExpression                        Goto   1179

-ReferenceExpression                     Goto   1178

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 960

-

-

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1175

-ArrayCreationWithoutArrayInitializer    Goto   1177

-CastExpression                          Goto   1176

-UnaryExpression                         Goto   1176

-InstanceofExpression                    Goto   620

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 390 ----------------------------------------------------------------------

-( 171 246 )

-

-InstanceofExpression_NotName ::= NameOrAj instanceof  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 961

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  916

-ReferenceType                     Gt/Rd  916

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 962

-

-

-

-Default reduction to rule  92

-

-

-STATE 391 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 963

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 964

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 965

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 966

-

-

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 967

-

-

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   621

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 392 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj LESS_EQUAL  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 968

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 969

-

-

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 970

-

-

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 971

-

-

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 972

-

-

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   622

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 393 ----------------------------------------------------------------------

-( 171 246 )

-

-RelationalExpression_NotName ::= NameOrAj GREATER  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 973

-

-

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 974

-

-

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 975

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 976

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 977

-

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   623

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 978

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 394 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 979

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 980

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 981

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 982

-

-

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 983

-

-

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   624

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 395 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 984

-

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 985

-

-

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 986

-

-

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 987

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 988

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   625

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 396 ----------------------------------------------------------------------

-( 171 246 )

-

-ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT  .AdditiveExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 989

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 990

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 991

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 992

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1132

-true                                    Shift  1132

-null                                    Shift  1132

-StringLiteral                           Shift  1132

-CharacterLiteral                        Shift  1132

-DoubleLiteral                           Shift  1132

-FloatingPointLiteral                    Shift  1132

-LongLiteral                             Shift  1132

-IntegerLiteral                          Shift  1132

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-UnaryExpression                         Goto   1133

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1133

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1142

-BooleanLiteral                          Goto   1132

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 993

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1132

-ClassInstanceCreationExpression         Goto   1141

-FieldAccess                             Goto   1140

-MethodInvocation                        Goto   1139

-ArrayAccess                             Goto   1138

-LambdaExpression                        Goto   1137

-ReferenceExpression                     Goto   1136

-PostIncrementExpression                 Goto   1135

-PostDecrementExpression                 Goto   1134

-PreIncrementExpression                  Goto   1133

-PreDecrementExpression                  Goto   1133

-UnaryExpressionNotPlusMinus             Goto   1133

-AdditiveExpression                      Goto   626

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 397 ----------------------------------------------------------------------

-( 171 246 )

-

-AdditiveExpression_NotName ::= NameOrAj MINUS  .MultiplicativeExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 994

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 995

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 996

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 997

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   627

-PreDecrementExpression                  Goto   627

-UnaryExpressionNotPlusMinus             Goto   627

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 998

-

-

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   627

-UnaryExpression                         Goto   627

-MultiplicativeExpression                Goto   627

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 398 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 999

-

-

-AdditiveExpression_NotName ::= NameOrAj PLUS  .MultiplicativeExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1000

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1001

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1002

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1143

-true                                    Shift  1143

-null                                    Shift  1143

-StringLiteral                           Shift  1143

-CharacterLiteral                        Shift  1143

-DoubleLiteral                           Shift  1143

-FloatingPointLiteral                    Shift  1143

-LongLiteral                             Shift  1143

-IntegerLiteral                          Shift  1143

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PreIncrementExpression                  Goto   628

-PreDecrementExpression                  Goto   628

-UnaryExpressionNotPlusMinus             Goto   628

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1003

-

-

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1152

-PostDecrementExpression                 Goto   1151

-PostfixExpression                       Goto   483

-Literal                                 Goto   1143

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1150

-FieldAccess                             Goto   1149

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1148

-ArrayAccess                             Goto   1147

-LambdaExpression                        Goto   1146

-ReferenceExpression                     Goto   1145

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1143

-ArrayCreationWithoutArrayInitializer    Goto   1144

-CastExpression                          Goto   628

-UnaryExpression                         Goto   628

-MultiplicativeExpression                Goto   628

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 399 ----------------------------------------------------------------------

-( 171 246 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1004

-

-

-MultiplicativeExpression_NotName ::= NameOrAj REMAINDER  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1005

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1006

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1007

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  893

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1008

-

-

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  893

-PreDecrementExpression                  Gt/Rd  893

-UnaryExpressionNotPlusMinus             Gt/Rd  893

-UnaryExpression                         Gt/Rd  893

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 400 ----------------------------------------------------------------------

-( 171 246 )

-

-MultiplicativeExpression_NotName ::= NameOrAj DIVIDE  .UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1009

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1010

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1011

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1012

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  891

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1013

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  891

-PreDecrementExpression                  Gt/Rd  891

-UnaryExpressionNotPlusMinus             Gt/Rd  891

-UnaryExpression                         Gt/Rd  891

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 401 ----------------------------------------------------------------------

-( 171 246 )

-

-MultiplicativeExpression_NotName ::= NameOrAj MULTIPLY  .UnaryExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1014

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1015

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1016

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1017

-

-

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  889

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1018

-

-

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  889

-PreDecrementExpression                  Gt/Rd  889

-UnaryExpressionNotPlusMinus             Gt/Rd  889

-UnaryExpression                         Gt/Rd  889

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 402 ----------------------------------------------------------------------

-( 172 )

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION  .

-                                  Expression COLON ConditionalExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1019

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1020

-

-

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1021

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1022

-

-

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1023

-

-

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1024

-

-

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   629

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1025

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 403 ----------------------------------------------------------------------

-( 172 )

-

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR  .

-                                    ConditionalAndExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1026

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1027

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1028

-

-

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1029

-

-

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1208

-true                                    Shift  1208

-null                                    Shift  1208

-StringLiteral                           Shift  1208

-CharacterLiteral                        Shift  1208

-DoubleLiteral                           Shift  1208

-FloatingPointLiteral                    Shift  1208

-LongLiteral                             Shift  1208

-IntegerLiteral                          Shift  1208

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1209

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1209

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1030

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1218

-BooleanLiteral                          Goto   1208

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1208

-ClassInstanceCreationExpression         Goto   1217

-FieldAccess                             Goto   1216

-MethodInvocation                        Goto   1215

-ArrayAccess                             Goto   1214

-LambdaExpression                        Goto   1213

-ReferenceExpression                     Goto   1212

-PostIncrementExpression                 Goto   1211

-PostDecrementExpression                 Goto   1210

-PreIncrementExpression                  Goto   1209

-PreDecrementExpression                  Goto   1209

-UnaryExpressionNotPlusMinus             Goto   1209

-ConditionalAndExpression                Goto   630

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 404 ----------------------------------------------------------------------

-( 173 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1031

-

-

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   582

-VariableDeclarators     Goto   582

-

-

-STATE 405 ----------------------------------------------------------------------

-( 175 )

-

-CatchHeader ::= catch LPAREN  .CatchFormalParameter RPAREN LBRACE 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-CatchFormalParameter ::= .Modifiersopt CatchType VariableDeclaratorId 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1032

-

-

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   632

-CatchFormalParameter      Goto   631

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 406 ----------------------------------------------------------------------

-( 177 )

-

-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet  .Argumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1033

-

-

-                       RestoreDiet 

-

-Arguments ::= .LPAREN ArgumentListopt RPAREN 

-Argumentsopt ::= . (804)

-

-LPAREN          Shift  634

-

-Arguments       Goto   633

-Argumentsopt    Goto   633

-

-abstract        Reduce 804

-final           Reduce 804

-native          Reduce 804

-private         Reduce 804

-protected       Reduce 804

-public          Reduce 804

-static          Reduce 804

-strictfp        Reduce 804

-synchronized    Reduce 804

-transient       Reduce 804

-volatile        Reduce 804

-LBRACE          Reduce 804

-RBRACE          Reduce 804

-SEMICOLON       Reduce 804

-COMMA           Reduce 804

-AT              Reduce 804

-$eof            Reduce 804

-

-Default reduction to rule  804

-

-

-STATE 407 ----------------------------------------------------------------------

-( 178 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   635

-

-

-STATE 408 ----------------------------------------------------------------------

-( 179 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1034

-

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault Type  .JavaIdentifierNoAround 

-                             LPAREN 

-

-Identifier                Shift  636

-declare                   Shift  636

-after                     Shift  636

-before                    Shift  636

-pointcut                  Shift  636

-privileged                Shift  636

-aspect                    Shift  636

-

-AjSimpleNameNoAround      Goto   636

-JavaIdentifierNoAround    Goto   636

-

-

-STATE 409 ----------------------------------------------------------------------

-( 179 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1035

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   637

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   637

-Type                              Goto   637

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 410 ----------------------------------------------------------------------

-( 180 )

-

-ArrayCreationHeader ::= new PrimitiveType  .DimWithOrWithOutExprs 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1036

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   638

-

-LBRACKET                      Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 411 ----------------------------------------------------------------------

-( 180 )

-

-AllocationHeader ::= new ClassType  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN    Shift  639

-

-

-STATE 412 ----------------------------------------------------------------------

-( 180 )

-

-ClassType ::= ClassOrInterfaceType . (66)

-ArrayCreationHeader ::= new ClassOrInterfaceType  .DimWithOrWithOutExprs 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1037

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExpr 

-DimWithOrWithOutExprs ::= .DimWithOrWithOutExprs DimWithOrWithOutExpr 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotationsopt            Goto   496

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   496

-DimWithOrWithOutExpr          Gt/Rd  647

-DimWithOrWithOutExprs         Goto   640

-

-LPAREN                        Reduce 66

-LBRACKET                      Reduce 92

-

-Default reduction to rule  66

-

-

-STATE 413 ----------------------------------------------------------------------

-( 181 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon  .COLON 

-                       MINUS Annotations SEMICOLON 

-PseudoTokensNoColon ::= PseudoTokensNoColon  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1038

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1039

-

-

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Shift  641

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1040

-

-

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1041

-

-

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-PseudoToken                   Gt/Rd  286

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 414 ----------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-PseudoToken ::= if  .LPAREN Expression RPAREN 

-

-LPAREN    Shift  642

-

-

-STATE 415 ----------------------------------------------------------------------

-( 182 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1042

-

-

-DeclareDeclaration ::= DeclareHeader PseudoTokens  .SEMICOLON 

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1043

-

-

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1044

-

-

-SEMICOLON                     Sh/Rd  273

-COLON                         Sh/Rd  287

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1045

-

-

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1046

-

-

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 416 ----------------------------------------------------------------------

-( 183 )

-

-DeclareAnnotationHeader ::= declare AT  .Identifier COLON 

-

-Identifier    Shift  643

-

-

-STATE 417 ----------------------------------------------------------------------

-( 183 )

-

-DeclareHeader ::= declare Identifier  .COLON 

-

-COLON    Sh/Rd  274

-

-

-STATE 418 ----------------------------------------------------------------------

-( 184 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt  .

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   644

-

-

-STATE 419 ----------------------------------------------------------------------

-( 186 )

-

-InterTypeFieldDeclaration ::= InterTypeFieldHeader InterTypeFieldBody  .

-                              SEMICOLON 

-

-SEMICOLON    Sh/Rd  265

-

-

-STATE 420 ----------------------------------------------------------------------

-( 186 )

-

-InterTypeFieldBody ::= EQUAL  .ForceNoDiet VariableInitializer RestoreDiet 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1047

-

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   645

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 421 ----------------------------------------------------------------------

-( 188 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1048

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt  .

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   646

-

-

-STATE 422 ----------------------------------------------------------------------

-( 189 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt  .

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   647

-

-

-STATE 423 ----------------------------------------------------------------------

-( 191 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt  .

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   648

-

-

-STATE 424 ----------------------------------------------------------------------

-( 192 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1049

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   649

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1050

-

-

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   649

-Type                              Goto   649

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 425 ----------------------------------------------------------------------

-( 192 194 767 )

-

-AfterAdviceHeaderName ::= Modifiersopt after  .LPAREN 

-

-LPAREN    Sh/Rd  236

-

-

-STATE 426 ----------------------------------------------------------------------

-( 192 194 767 )

-

-BeforeAdviceHeaderName ::= Modifiersopt before  .LPAREN 

-

-LPAREN    Sh/Rd  235

-

-

-STATE 427 ----------------------------------------------------------------------

-( 192 194 767 )

-

-AroundHeaderName ::= Modifiersopt around  .LPAREN 

-

-LPAREN    Sh/Rd  229

-

-

-STATE 428 ----------------------------------------------------------------------

-( 192 194 )

-

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1051

-

-

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-RecoveryMethodHeaderName ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-around                    Shift  652

-declare                   Shift  1231

-after                     Shift  1231

-before                    Shift  1231

-pointcut                  Shift  1231

-privileged                Shift  1231

-aspect                    Shift  1231

-Identifier                Shift  655

-

-AjSimpleNameNoAround      Goto   654

-VariableDeclaratorId      Goto   527

-JavaIdentifier            Goto   653

-VariableDeclarator        Goto   582

-VariableDeclarators       Goto   582

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1052

-

-

-AjSimpleName              Goto   1232

-OnType                    Goto   651

-JavaIdentifierNoAround    Goto   650

-

-

-STATE 429 ----------------------------------------------------------------------

-( 192 )

-

-SimpleName ::= Identifier . (87)

-EnumConstantHeaderName ::= Modifiersopt Identifier . (799)

-

-abstract        Reduce 799

-final           Reduce 799

-native          Reduce 799

-private         Reduce 799

-protected       Reduce 799

-public          Reduce 799

-static          Reduce 799

-strictfp        Reduce 799

-synchronized    Reduce 799

-transient       Reduce 799

-volatile        Reduce 799

-LPAREN          Reduce 799

-AT              Reduce 799

-$eof            Reduce 799

-Identifier      Reduce 84

-aspect          Reduce 84

-pointcut        Reduce 84

-around          Reduce 84

-before          Reduce 84

-after           Reduce 84

-declare         Reduce 84

-privileged      Reduce 84

-LESS            Reduce 84

-LBRACKET        Reduce 84

-DOT             Reduce 84

-AT308           Reduce 84

-

-Default reduction to rule  799

-

-

-STATE 430 ----------------------------------------------------------------------

-( 194 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters  .Type 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1053

-

-

-                             JavaIdentifierNoAround LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   649

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1054

-

-

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   649

-Type                              Goto   649

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 431 ----------------------------------------------------------------------

-( 195 )

-

-Initializer ::= Diet NestedMethod  .CreateInitializer Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   656

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 432 ----------------------------------------------------------------------

-( 196 )

-

-MethodBody ::= NestedMethod LBRACE  .BlockStatementsopt RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1055

-

-

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1056

-

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1057

-

-

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1058

-

-

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1059

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1060

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-BlockStatementsopt ::= . (766)

-BlockStatementsopt ::= .BlockStatements 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1061

-

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1062

-

-

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   93

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1063

-

-

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1064

-

-

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatementsopt                      Goto   657

-

-RBRACE                                  Reduce 766

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 433 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= PackageDeclaration . (110)

-InternalCompilationUnit ::= PackageDeclaration  .ImportDeclarations 

-                            ReduceImports 

-InternalCompilationUnit ::= PackageDeclaration  .ImportDeclarations 

-                            ReduceImports TypeDeclarations 

-InternalCompilationUnit ::= PackageDeclaration  .TypeDeclarations 

-

-ImportDeclarations ::= .ImportDeclarations ImportDeclaration 

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1065

-

-

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1066

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-import                                 Shift  149

-AT                                     Shift  80

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

-ClassDeclaration                       Goto   659

-InterfaceDeclaration                   Goto   659

-EnumDeclaration                        Goto   659

-AnnotationTypeDeclaration              Goto   659

-AspectDeclaration                      Goto   659

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-TypeDeclaration                        Goto   659

-TypeDeclarations                       Goto   659

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1067

-

-

-SingleTypeImportDeclaration            Goto   658

-TypeImportOnDemandDeclaration          Goto   658

-SingleStaticImportDeclaration          Goto   658

-StaticImportOnDemandDeclaration        Goto   658

-StaticImportOnDemandDeclarationName    Goto   146

-SingleStaticImportDeclarationName      Goto   147

-TypeImportOnDemandDeclarationName      Goto   148

-SingleTypeImportDeclarationName        Goto   150

-ImportDeclaration                      Goto   658

-ImportDeclarations                     Goto   658

-

-$eof                                   Reduce 110

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 434 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= TypeDeclarations . (115)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1068

-

-

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1069

-

-

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 115

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 435 ----------------------------------------------------------------------

-( 197 )

-

-InternalCompilationUnit ::= ImportDeclarations  .ReduceImports 

-InternalCompilationUnit ::= ImportDeclarations  .ReduceImports TypeDeclarations 

-ImportDeclarations ::= ImportDeclarations  .ImportDeclaration 

-

-ReduceImports ::= . (118)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1070

-

-

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-import                                 Shift  149

-

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Gt/Rd  137

-TypeImportOnDemandDeclaration          Gt/Rd  137

-SingleStaticImportDeclaration          Gt/Rd  137

-StaticImportOnDemandDeclaration        Gt/Rd  137

-ReduceImports                          Goto   660

-ImportDeclaration                      Gt/Rd  137

-

-abstract                               Reduce 118

-class                                  Reduce 118

-enum                                   Reduce 118

-final                                  Reduce 118

-interface                              Reduce 118

-native                                 Reduce 118

-private                                Reduce 118

-protected                              Reduce 118

-public                                 Reduce 118

-static                                 Reduce 118

-strictfp                               Reduce 118

-synchronized                           Reduce 118

-transient                              Reduce 118

-volatile                               Reduce 118

-aspect                                 Reduce 118

-privileged                             Reduce 118

-SEMICOLON                              Reduce 118

-AT                                     Reduce 118

-$eof                                   Reduce 118

-

-Default reduction to rule  118

-

-

-STATE 436 ----------------------------------------------------------------------

-( 198 282 )

-

-UnannotatableName ::= UnannotatableName DOT  .SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1071

-

-

-

-Identifier    Sh/Rd  89

-

-SimpleName    Gt/Rd  89

-

-

-STATE 437 ----------------------------------------------------------------------

-( 199 )

-

-SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue  .RPAREN 

-

-RPAREN    Sh/Rd  103

-

-

-STATE 438 ----------------------------------------------------------------------

-( 199 )

-

-NormalTypeAnnotation ::= TypeAnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-

-RPAREN    Sh/Rd  101

-

-

-STATE 439 ----------------------------------------------------------------------

-( 199 284 662 )

-

-MemberValuePair ::= SimpleNameOrAj  .EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-EQUAL    Shift  661

-

-

-STATE 440 ----------------------------------------------------------------------

-( 199 284 )

-

-MemberValuePairsopt ::= MemberValuePairs . (971)

-MemberValuePairs ::= MemberValuePairs  .COMMA MemberValuePair 

-

-COMMA     Shift  662

-

-RPAREN    Reduce 971

-

-Default reduction to rule  971

-

-

-STATE 441 ----------------------------------------------------------------------

-( 199 284 )

-

-SimpleNameOrAj ::= AjSimpleName . (69)

-AjName ::= AjSimpleName . (71)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1072

-

-

-instanceof              Reduce 71

-PLUS_PLUS               Reduce 71

-MINUS_MINUS             Reduce 71

-EQUAL_EQUAL             Reduce 71

-LESS_EQUAL              Reduce 71

-GREATER_EQUAL           Reduce 71

-NOT_EQUAL               Reduce 71

-LEFT_SHIFT              Reduce 71

-RIGHT_SHIFT             Reduce 71

-UNSIGNED_RIGHT_SHIFT    Reduce 71

-OR_OR                   Reduce 71

-AND_AND                 Reduce 71

-PLUS                    Reduce 71

-MINUS                   Reduce 71

-REMAINDER               Reduce 71

-XOR                     Reduce 71

-AND                     Reduce 71

-MULTIPLY                Reduce 71

-OR                      Reduce 71

-DIVIDE                  Reduce 71

-GREATER                 Reduce 71

-LPAREN                  Reduce 71

-RPAREN                  Reduce 71

-LBRACKET                Reduce 71

-QUESTION                Reduce 71

-DOT                     Reduce 71

-EQUAL                   Reduce 69

-

-Default reduction to rule  71

-

-

-STATE 442 ----------------------------------------------------------------------

-( 199 284 )

-

-SimpleNameOrAj ::= SimpleName . (70)

-Name ::= SimpleName . (84)

-

-instanceof              Reduce 84

-PLUS_PLUS               Reduce 84

-MINUS_MINUS             Reduce 84

-EQUAL_EQUAL             Reduce 84

-LESS_EQUAL              Reduce 84

-GREATER_EQUAL           Reduce 84

-NOT_EQUAL               Reduce 84

-LEFT_SHIFT              Reduce 84

-RIGHT_SHIFT             Reduce 84

-UNSIGNED_RIGHT_SHIFT    Reduce 84

-OR_OR                   Reduce 84

-AND_AND                 Reduce 84

-PLUS                    Reduce 84

-MINUS                   Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1073

-

-

-REMAINDER               Reduce 84

-XOR                     Reduce 84

-AND                     Reduce 84

-MULTIPLY                Reduce 84

-OR                      Reduce 84

-DIVIDE                  Reduce 84

-GREATER                 Reduce 84

-LESS                    Reduce 84

-LPAREN                  Reduce 84

-RPAREN                  Reduce 84

-LBRACKET                Reduce 84

-QUESTION                Reduce 84

-DOT                     Reduce 84

-COLON_COLON             Reduce 84

-BeginTypeArguments      Reduce 84

-AT308                   Reduce 84

-EQUAL                   Reduce 70

-

-Default reduction to rule  84

-

-

-STATE 443 ----------------------------------------------------------------------

-( 200 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1074

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   205

-ReferenceType                     Goto   201

-Wildcard                          Gt/Rd  823

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1075

-

-

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 444 ----------------------------------------------------------------------

-( 202 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-ReferenceType1 ::= ClassOrInterface LESS  .TypeArgumentList2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1076

-

-

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-TypeArgumentList2 ::= .TypeArgumentList COMMA TypeArgument2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType2                    Gt/Rd  829

-Wildcard2                         Gt/Rd  829

-TypeAnnotationsopt                Goto   666

-ReferenceType                     Goto   665

-ClassOrInterface                  Goto   664

-TypeArgument2                     Gt/Rd  829

-TypeArgumentList                  Goto   663

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-TypeArgument                      Goto   663

-Wildcard                          Goto   663

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-TypeArgumentList2                 Gt/Rd  829

-

-boolean                           Reduce 92

-byte                              Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1077

-

-

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 445 ----------------------------------------------------------------------

-( 203 211 256 541 589 705 772 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 446 ----------------------------------------------------------------------

-( 205 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1078

-

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-

-GREATER            Sh/Rd  845

-super              Shift  667

-extends            Shift  668

-

-WildcardBounds     Gt/Rd  842

-WildcardBounds1    Gt/Rd  846

-

-COMMA              Reduce 841

-

-Default reduction to rule  841

-

-

-STATE 447 ----------------------------------------------------------------------

-( 206 )

-

-ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments DOT 

-                                        ClassOrInterfaceType  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1079

-

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  600

-Dimsopt                       Gt/Rd  600

-

-COLON_COLON                   Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 448 ----------------------------------------------------------------------

-( 207 )

-

-OneDimLoop ::= TypeAnnotations LBRACKET  .RBRACKET 

-

-RBRACKET    Sh/Rd  655

-

-

-STATE 449 ----------------------------------------------------------------------

-( 211 )

-

-CastNameAndBounds ::= Name AdditionalBoundList . (698)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-

-AdditionalBound ::= .AND ReferenceType 

-

-AND                Shift  450

-

-AdditionalBound    Gt/Rd  865

-

-RPAREN             Reduce 698

-

-Default reduction to rule  698

-

-

-STATE 450 ----------------------------------------------------------------------

-( 211 449 547 551 745 747 934 )

-

-AdditionalBound ::= AND  .ReferenceType 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1080

-

-

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  866

-ReferenceType                     Gt/Rd  866

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1081

-

-

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 451 ----------------------------------------------------------------------

-( 214 )

-

-FormalParameterList ::= FormalParameterList COMMA  .FormalParameter 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1082

-

-

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameter           Gt/Rd  405

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 452 ----------------------------------------------------------------------

-( 215 )

-

-TypeElidedFormalParameterList ::= TypeElidedFormalParameterList COMMA  .

-                                  TypeElidedFormalParameter 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1083

-

-

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-TypeElidedFormalParameter ::= .Modifiersopt Identifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                     Shift  1064

-volatile                     Shift  1064

-transient                    Shift  1064

-synchronized                 Shift  1064

-native                       Shift  1064

-final                        Shift  1064

-abstract                     Shift  1064

-static                       Shift  1064

-private                      Shift  1064

-protected                    Shift  1064

-public                       Shift  1064

-AT                           Shift  136

-

-Modifiers                    Goto   137

-SimpleModifier               Goto   1064

-Annotation                   Gt/Rd  171

-AnnotationName               Goto   81

-NormalAnnotation             Goto   1047

-MarkerAnnotation             Goto   1047

-SingleMemberAnnotation       Goto   1047

-Modifier                     Goto   1064

-Modifiersopt                 Goto   669

-TypeElidedFormalParameter    Gt/Rd  619

-

-Identifier                   Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 453 ----------------------------------------------------------------------

-( 216 331 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1084

-

-

-FormalParameter ::= Modifiersopt Type  .VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt Type  .PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= Modifiersopt Type  .AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-PushZeroTypeAnnotations ::= . (105)

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-AT308DOTDOTDOT                Shift  670

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  406

-PushZeroTypeAnnotations       Goto   671

-

-ELLIPSIS                      Reduce 105

-

-Default reduction to rule  105

-

-

-STATE 454 ----------------------------------------------------------------------

-( 216 )

-

-SimpleName ::= Identifier . (87)

-TypeElidedFormalParameter ::= Modifiersopt Identifier . (620)

-

-RPAREN            Reduce 620

-COMMA             Reduce 620

-Identifier        Reduce 84

-this              Reduce 84

-aspect            Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1085

-

-

-pointcut          Reduce 84

-around            Reduce 84

-before            Reduce 84

-after             Reduce 84

-declare           Reduce 84

-privileged        Reduce 84

-LESS              Reduce 84

-LBRACKET          Reduce 84

-DOT               Reduce 84

-ELLIPSIS          Reduce 84

-AT308             Reduce 84

-AT308DOTDOTDOT    Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 455 ----------------------------------------------------------------------

-( 217 )

-

-ClassHeaderImplements ::= implements InterfaceTypeList . (350)

-InterfaceTypeList ::= InterfaceTypeList  .COMMA InterfaceType 

-

-COMMA           Shift  674

-

-Identifier      Reduce 350

-abstract        Reduce 350

-final           Reduce 350

-native          Reduce 350

-private         Reduce 350

-protected       Reduce 350

-public          Reduce 350

-static          Reduce 350

-strictfp        Reduce 350

-synchronized    Reduce 350

-transient       Reduce 350

-volatile        Reduce 350

-LBRACE          Reduce 350

-AT              Reduce 350

-$eof            Reduce 350

-

-Default reduction to rule  350

-

-

-STATE 456 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE COMMA  .EnumBodyDeclarationsopt RBRACE 

-

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1086

-

-

-SEMICOLON                  Shift  458

-

-EnumDeclarations           Goto   675

-EnumBodyDeclarationsopt    Goto   675

-

-RBRACE                     Reduce 807

-

-Default reduction to rule  807

-

-

-STATE 457 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  793

-

-

-STATE 458 ----------------------------------------------------------------------

-( 218 456 459 677 )

-

-EnumDeclarations ::= SEMICOLON  .ClassBodyDeclarationsopt 

-

-ClassBodyDeclarationsopt ::= . (762)

-ClassBodyDeclarationsopt ::= .NestedType ClassBodyDeclarations 

-NestedType ::= . (780)

-

-NestedType                  Goto   472

-ClassBodyDeclarationsopt    Gt/Rd  806

-

-RBRACE                      Reduce 762

-Identifier                  Reduce 780

-abstract                    Reduce 780

-boolean                     Reduce 780

-byte                        Reduce 780

-char                        Reduce 780

-class                       Reduce 780

-default                     Reduce 780

-double                      Reduce 780

-enum                        Reduce 780

-final                       Reduce 780

-float                       Reduce 780

-int                         Reduce 780

-interface                   Reduce 780

-long                        Reduce 780

-native                      Reduce 780

-private                     Reduce 780

-protected                   Reduce 780

-public                      Reduce 780

-short                       Reduce 780

-static                      Reduce 780

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1087

-

-

-strictfp                    Reduce 780

-synchronized                Reduce 780

-transient                   Reduce 780

-void                        Reduce 780

-volatile                    Reduce 780

-aspect                      Reduce 780

-pointcut                    Reduce 780

-privileged                  Reduce 780

-LESS                        Reduce 780

-LBRACE                      Reduce 780

-SEMICOLON                   Reduce 780

-AT                          Reduce 780

-AT308                       Reduce 780

-

-Default reduction to rule  780

-

-

-STATE 459 ----------------------------------------------------------------------

-( 218 )

-

-EnumBody ::= LBRACE EnumConstants  .COMMA EnumBodyDeclarationsopt RBRACE 

-EnumBody ::= LBRACE EnumConstants  .EnumBodyDeclarationsopt RBRACE 

-EnumConstants ::= EnumConstants  .COMMA EnumConstant 

-

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-

-COMMA                      Shift  677

-SEMICOLON                  Shift  458

-

-EnumDeclarations           Goto   676

-EnumBodyDeclarationsopt    Goto   676

-

-RBRACE                     Reduce 807

-

-Default reduction to rule  807

-

-

-STATE 460 ----------------------------------------------------------------------

-( 218 677 )

-

-EnumConstantHeaderName ::= Modifiersopt  .Identifier 

-

-Identifier    Sh/Rd  799

-

-

-STATE 461 ----------------------------------------------------------------------

-( 218 677 )

-

-EnumConstant ::= EnumConstantHeader  .ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= EnumConstantHeader . (802)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1088

-

-

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet    Goto   678

-

-RBRACE         Reduce 802

-SEMICOLON      Reduce 802

-COMMA          Reduce 802

-LBRACE         Reduce 381

-

-Default reduction to rule  802

-

-

-STATE 462 ----------------------------------------------------------------------

-( 221 )

-

-AnnotationTypeBody ::= LBRACE AnnotationTypeMemberDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  950

-

-

-STATE 463 ----------------------------------------------------------------------

-( 221 )

-

-AnnotationTypeMemberDeclarationsopt ::= NestedType  .

-                                        AnnotationTypeMemberDeclarations 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1089

-

-

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-AnnotationTypeMemberDeclarations ::= .AnnotationTypeMemberDeclarations 

-                                     AnnotationTypeMemberDeclaration 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1090

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Goto   679

-ConstructorDeclaration                 Goto   679

-TypeDeclaration                        Goto   679

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiersopt                           Goto   143

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Goto   679

-InterfaceDeclaration                   Goto   679

-EnumDeclaration                        Goto   679

-AnnotationTypeDeclaration              Goto   679

-AspectDeclaration                      Goto   679

-ConstructorHeaderName                  Goto   134

-ConstructorHeader                      Goto   132

-FieldDeclaration                       Goto   679

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1091

-

-

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationMethodHeaderName             Goto   145

-AnnotationTypeMemberDeclaration        Goto   679

-AnnotationTypeMemberDeclarations       Goto   679

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 464 ----------------------------------------------------------------------

-( 222 )

-

-InterfaceTypeList ::= InterfaceTypeList  .COMMA InterfaceType 

-InterfaceHeaderExtends ::= extends InterfaceTypeList . (439)

-

-COMMA           Shift  674

-

-abstract        Reduce 439

-final           Reduce 439

-native          Reduce 439

-private         Reduce 439

-protected       Reduce 439

-public          Reduce 439

-static          Reduce 439

-strictfp        Reduce 439

-synchronized    Reduce 439

-transient       Reduce 439

-volatile        Reduce 439

-LBRACE          Reduce 439

-AT              Reduce 439

-$eof            Reduce 439

-

-Default reduction to rule  439

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1092

-

-

-

-

-STATE 465 ----------------------------------------------------------------------

-( 223 )

-

-TypeParameterList ::= TypeParameterList  .COMMA TypeParameter 

-TypeParameterList1 ::= TypeParameterList  .COMMA TypeParameter1 

-

-COMMA    Shift  680

-

-

-STATE 466 ----------------------------------------------------------------------

-( 223 680 )

-

-TypeParameterHeader ::= TypeAnnotationsopt  .JavaIdentifier 

-

-Identifier              Sh/Rd  857

-declare                 Sh/Rd  857

-after                   Sh/Rd  857

-before                  Sh/Rd  857

-pointcut                Sh/Rd  857

-privileged              Sh/Rd  857

-aspect                  Sh/Rd  857

-around                  Sh/Rd  857

-

-AjSimpleNameNoAround    Gt/Rd  857

-AjSimpleName            Gt/Rd  857

-JavaIdentifier          Gt/Rd  857

-

-

-STATE 467 ----------------------------------------------------------------------

-( 223 680 )

-

-TypeParameter ::= TypeParameterHeader . (861)

-TypeParameter ::= TypeParameterHeader  .extends ReferenceType 

-TypeParameter ::= TypeParameterHeader  .extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader  .GREATER 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType1 

-TypeParameter1 ::= TypeParameterHeader  .extends ReferenceType 

-                   AdditionalBoundList1 

-

-GREATER    Sh/Rd  869

-extends    Shift  681

-

-COMMA      Reduce 861

-

-Default reduction to rule  861

-

-

-STATE 468 ----------------------------------------------------------------------

-( 224 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1093

-

-

-InterfaceBody ::= LBRACE InterfaceMemberDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  440

-

-

-STATE 469 ----------------------------------------------------------------------

-( 224 )

-

-InterfaceMemberDeclarationsopt ::= NestedType  .InterfaceMemberDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1094

-

-

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-InterfaceMemberDeclarations ::= .InterfaceMemberDeclarations 

-                                InterfaceMemberDeclaration 

-InterfaceMemberDeclaration ::= .SEMICOLON 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .MethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader SEMICOLON 

-InvalidConstructorDeclaration ::= .ConstructorHeader MethodBody 

-InvalidConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1095

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-static                                 Shift  131

-AT                                     Shift  80

-SEMICOLON                              Sh/Rd  443

-

-AspectDeclaration                      Goto   682

-PointcutDeclaration                    Goto   682

-ConstantDeclaration                    Goto   682

-DefaultMethodHeader                    Goto   685

-MethodHeader                           Goto   684

-AbstractMethodDeclaration              Goto   682

-InvalidConstructorDeclaration          Goto   682

-InvalidInitializer                     Goto   682

-ClassDeclaration                       Goto   682

-InterfaceDeclaration                   Goto   682

-EnumDeclaration                        Goto   682

-AnnotationTypeDeclaration              Goto   682

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-StaticOnly                             Goto   130

-Diet                                   Goto   195

-StaticInitializer                      Goto   682

-Initializer                            Goto   682

-ConstructorHeaderName                  Goto   134

-ConstructorHeader                      Goto   683

-MethodHeaderName                       Goto   119

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1096

-

-

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-FieldDeclaration                       Goto   682

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-InterfaceMemberDeclaration             Goto   682

-InterfaceMemberDeclarations            Goto   682

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 470 ----------------------------------------------------------------------

-( 226 )

-

-EnumHeaderName ::= Modifiersopt enum JavaIdentifier . (791)

-EnumHeaderName ::= Modifiersopt enum JavaIdentifier  .TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1097

-

-

-

-TypeParameters    Gt/Rd  792

-

-abstract          Reduce 791

-final             Reduce 791

-implements        Reduce 791

-native            Reduce 791

-private           Reduce 791

-protected         Reduce 791

-public            Reduce 791

-static            Reduce 791

-strictfp          Reduce 791

-synchronized      Reduce 791

-transient         Reduce 791

-volatile          Reduce 791

-LBRACE            Reduce 791

-AT                Reduce 791

-$eof              Reduce 791

-

-Default reduction to rule  791

-

-

-STATE 471 ----------------------------------------------------------------------

-( 229 )

-

-ClassBody ::= LBRACE ClassBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  354

-

-

-STATE 472 ----------------------------------------------------------------------

-( 229 458 )

-

-ClassBodyDeclarationsopt ::= NestedType  .ClassBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassMemberDeclaration ::= .AspectDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1098

-

-

-ClassMemberDeclaration ::= .PointcutDeclaration 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclarations ::= .ClassBodyDeclaration 

-ClassBodyDeclarations ::= .ClassBodyDeclarations ClassBodyDeclaration 

-ClassBodyDeclaration ::= .ClassMemberDeclaration 

-ClassBodyDeclaration ::= .StaticInitializer 

-ClassBodyDeclaration ::= .ConstructorDeclaration 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .FieldDeclaration 

-ClassMemberDeclaration ::= .MethodDeclaration 

-ClassMemberDeclaration ::= .ClassDeclaration 

-ClassMemberDeclaration ::= .InterfaceDeclaration 

-ClassMemberDeclaration ::= .EnumDeclaration 

-ClassMemberDeclaration ::= .AnnotationTypeDeclaration 

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .AbstractMethodDeclaration 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1099

-

-

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1100

-

-

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-ClassMemberDeclaration                 Goto   1065

-StaticInitializer                      Goto   1065

-ConstructorDeclaration                 Goto   1065

-Diet                                   Goto   135

-ConstructorHeaderName                  Goto   134

-Modifiersopt                           Goto   133

-ConstructorHeader                      Goto   132

-StaticOnly                             Goto   130

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-AbstractMethodDeclaration              Goto   1065

-MethodHeader                           Goto   123

-DefaultMethodHeader                    Goto   122

-ModifiersWithDefault                   Goto   121

-DefaultMethodHeaderName                Goto   120

-MethodHeaderName                       Goto   119

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Goto   1065

-PointcutDeclaration                    Goto   1065

-FieldDeclaration                       Goto   1065

-MethodDeclaration                      Goto   1065

-ClassDeclaration                       Goto   1065

-InterfaceDeclaration                   Goto   1065

-EnumDeclaration                        Goto   1065

-AnnotationTypeDeclaration              Goto   1065

-ClassBodyDeclaration                   Gt/Rd  355

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1101

-

-

-ClassBodyDeclarations                  Goto   686

-

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-LBRACE                                 Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 473 ----------------------------------------------------------------------

-( 230 )

-

-TryStatementWithResources ::= try ResourceSpecification TryBlock  .Catchesopt 

-TryStatementWithResources ::= try ResourceSpecification TryBlock  .Catchesopt 

-                              Finally 

-

-Catches ::= .CatchClause 

-Catches ::= .Catches CatchClause 

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-Catchesopt ::= . (787)

-Catchesopt ::= .Catches 

-

-catch                   Shift  475

-

-CatchClause             Goto   1233

-Catches                 Goto   688

-Catchesopt              Goto   687

-

-Identifier              Reduce 787

-abstract                Reduce 787

-assert                  Reduce 787

-boolean                 Reduce 787

-break                   Reduce 787

-byte                    Reduce 787

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1102

-

-

-case                    Reduce 787

-char                    Reduce 787

-class                   Reduce 787

-continue                Reduce 787

-default                 Reduce 787

-do                      Reduce 787

-double                  Reduce 787

-else                    Reduce 787

-enum                    Reduce 787

-false                   Reduce 787

-final                   Reduce 787

-finally                 Reduce 787

-float                   Reduce 787

-for                     Reduce 787

-if                      Reduce 787

-int                     Reduce 787

-interface               Reduce 787

-long                    Reduce 787

-native                  Reduce 787

-new                     Reduce 787

-null                    Reduce 787

-private                 Reduce 787

-protected               Reduce 787

-public                  Reduce 787

-return                  Reduce 787

-short                   Reduce 787

-static                  Reduce 787

-strictfp                Reduce 787

-super                   Reduce 787

-switch                  Reduce 787

-synchronized            Reduce 787

-this                    Reduce 787

-throw                   Reduce 787

-transient               Reduce 787

-true                    Reduce 787

-try                     Reduce 787

-void                    Reduce 787

-volatile                Reduce 787

-while                   Reduce 787

-aspect                  Reduce 787

-pointcut                Reduce 787

-around                  Reduce 787

-before                  Reduce 787

-after                   Reduce 787

-declare                 Reduce 787

-privileged              Reduce 787

-IntegerLiteral          Reduce 787

-LongLiteral             Reduce 787

-FloatingPointLiteral    Reduce 787

-DoubleLiteral           Reduce 787

-CharacterLiteral        Reduce 787

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1103

-

-

-StringLiteral           Reduce 787

-PLUS_PLUS               Reduce 787

-MINUS_MINUS             Reduce 787

-LESS                    Reduce 787

-LPAREN                  Reduce 787

-LBRACE                  Reduce 787

-RBRACE                  Reduce 787

-SEMICOLON               Reduce 787

-AT                      Reduce 787

-BeginLambda             Reduce 787

-AT308                   Reduce 787

-$eof                    Reduce 787

-

-Default reduction to rule  787

-

-

-STATE 474 ----------------------------------------------------------------------

-( 231 )

-

-TryStatement ::= try TryBlock Catchesopt  .Finally 

-

-Finally ::= .finally Block 

-

-finally    Shift  689

-

-Finally    Gt/Rd  560

-

-

-STATE 475 ----------------------------------------------------------------------

-( 231 473 476 688 )

-

-CatchClause ::= catch  .LPAREN CatchFormalParameter RPAREN Block 

-

-LPAREN    Shift  690

-

-

-STATE 476 ----------------------------------------------------------------------

-( 231 )

-

-TryStatement ::= try TryBlock Catches . (559)

-Catches ::= Catches  .CatchClause 

-Catchesopt ::= Catches . (788)

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-

-catch                   Shift  475

-

-CatchClause             Gt/Rd  574

-

-finally                 Reduce 788

-Identifier              Reduce 559

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1104

-

-

-abstract                Reduce 559

-assert                  Reduce 559

-boolean                 Reduce 559

-break                   Reduce 559

-byte                    Reduce 559

-case                    Reduce 559

-char                    Reduce 559

-class                   Reduce 559

-continue                Reduce 559

-default                 Reduce 559

-do                      Reduce 559

-double                  Reduce 559

-else                    Reduce 559

-enum                    Reduce 559

-false                   Reduce 559

-final                   Reduce 559

-float                   Reduce 559

-for                     Reduce 559

-if                      Reduce 559

-int                     Reduce 559

-interface               Reduce 559

-long                    Reduce 559

-native                  Reduce 559

-new                     Reduce 559

-null                    Reduce 559

-private                 Reduce 559

-protected               Reduce 559

-public                  Reduce 559

-return                  Reduce 559

-short                   Reduce 559

-static                  Reduce 559

-strictfp                Reduce 559

-super                   Reduce 559

-switch                  Reduce 559

-synchronized            Reduce 559

-this                    Reduce 559

-throw                   Reduce 559

-transient               Reduce 559

-true                    Reduce 559

-try                     Reduce 559

-void                    Reduce 559

-volatile                Reduce 559

-while                   Reduce 559

-aspect                  Reduce 559

-pointcut                Reduce 559

-around                  Reduce 559

-before                  Reduce 559

-after                   Reduce 559

-declare                 Reduce 559

-privileged              Reduce 559

-IntegerLiteral          Reduce 559

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1105

-

-

-LongLiteral             Reduce 559

-FloatingPointLiteral    Reduce 559

-DoubleLiteral           Reduce 559

-CharacterLiteral        Reduce 559

-StringLiteral           Reduce 559

-PLUS_PLUS               Reduce 559

-MINUS_MINUS             Reduce 559

-LESS                    Reduce 559

-LPAREN                  Reduce 559

-LBRACE                  Reduce 559

-RBRACE                  Reduce 559

-SEMICOLON               Reduce 559

-AT                      Reduce 559

-BeginLambda             Reduce 559

-AT308                   Reduce 559

-$eof                    Reduce 559

-

-Default reduction to rule  559

-

-

-STATE 477 ----------------------------------------------------------------------

-( 233 )

-

-ResourceSpecification ::= LPAREN Resources  .;opt RPAREN 

-Resources ::= Resources  .TrailingSemiColon Resource 

-

-;opt ::= . (564)

-;opt ::= .SEMICOLON 

-TrailingSemiColon ::= .SEMICOLON 

-

-SEMICOLON            Shift  693

-

-;opt                 Goto   692

-TrailingSemiColon    Goto   691

-

-RPAREN               Reduce 564

-

-Default reduction to rule  564

-

-

-STATE 478 ----------------------------------------------------------------------

-( 233 691 )

-

-Modifiers ::= Modifiers  .Modifier 

-Resource ::= Modifiers  .Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1106

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1107

-

-

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-AT                                Shift  136

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   694

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   694

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-Type                              Goto   694

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 479 ----------------------------------------------------------------------

-( 233 691 )

-

-Resource ::= Type  .PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1108

-

-

-             ExitVariableWithInitialization 

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   695

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 480 ----------------------------------------------------------------------

-( 235 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression  .RPAREN Block 

-

-RPAREN    Shift  696

-

-

-STATE 481 ----------------------------------------------------------------------

-( 239 )

-

-DoStatement ::= do Statement while  .LPAREN Expression RPAREN SEMICOLON 

-

-LPAREN    Shift  697

-

-

-STATE 482 ----------------------------------------------------------------------

-( 241 )

-

-SwitchStatement ::= switch LPAREN Expression  .RPAREN OpenBlock SwitchBlock 

-

-RPAREN    Shift  698

-

-

-STATE 483 ----------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 

-  322 323 324 325 327 328 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 383 384 385 386 387 388 389 391 392 

-  393 394 395 396 397 398 399 400 401 403 552 748 751 778 779 858 933 936 988 

-  1028 )

-

-PostIncrementExpression ::= PostfixExpression  .PLUS_PLUS 

-PostDecrementExpression ::= PostfixExpression  .MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1109

-

-

-UnaryExpressionNotPlusMinus ::= PostfixExpression . (685)

-

-MINUS_MINUS                     Sh/Rd  676

-PLUS_PLUS                       Sh/Rd  675

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 484 ----------------------------------------------------------------------

-( 248 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1110

-

-

-LambdaBody ::= ElidedLeftBraceAndReturn  .Expression 

-               ElidedSemicolonAndRightBrace 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1111

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1112

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1113

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1114

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1115

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   699

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1116

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 485 ----------------------------------------------------------------------

-( 249 )

-

-ArrayAccess ::= AjName LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  668

-

-

-STATE 486 ----------------------------------------------------------------------

-( 251 )

-

-MethodInvocation ::= NameOrAj LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  659

-

-

-STATE 487 ----------------------------------------------------------------------

-( 251 269 272 512 513 634 639 702 704 707 709 712 716 718 737 741 821 823 827 

-  832 833 834 836 854 855 856 911 975 )

-

-ArgumentList ::= ArgumentList  .COMMA Expression 

-ArgumentListopt ::= ArgumentList . (771)

-

-COMMA     Shift  700

-

-RPAREN    Reduce 771

-

-Default reduction to rule  771

-

-

-STATE 488 ----------------------------------------------------------------------

-( 252 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments  .

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

-Identifier              Shift  701

-declare                 Shift  701

-after                   Shift  701

-before                  Shift  701

-pointcut                Shift  701

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1117

-

-

-privileged              Shift  701

-aspect                  Shift  701

-around                  Shift  701

-

-AjSimpleNameNoAround    Goto   701

-AjSimpleName            Goto   701

-JavaIdentifier          Goto   701

-

-

-STATE 489 ----------------------------------------------------------------------

-( 252 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  702

-

-

-STATE 490 ----------------------------------------------------------------------

-( 252 )

-

-JavaIdentifier ::= Identifier . (35)

-FieldAccess ::= QualifiedSuperReceiver DOT Identifier . (658)

-

-abstract                        Reduce 658

-final                           Reduce 658

-instanceof                      Reduce 658

-native                          Reduce 658

-private                         Reduce 658

-protected                       Reduce 658

-public                          Reduce 658

-static                          Reduce 658

-strictfp                        Reduce 658

-synchronized                    Reduce 658

-transient                       Reduce 658

-volatile                        Reduce 658

-PLUS_PLUS                       Reduce 658

-MINUS_MINUS                     Reduce 658

-EQUAL_EQUAL                     Reduce 658

-LESS_EQUAL                      Reduce 658

-GREATER_EQUAL                   Reduce 658

-NOT_EQUAL                       Reduce 658

-LEFT_SHIFT                      Reduce 658

-RIGHT_SHIFT                     Reduce 658

-UNSIGNED_RIGHT_SHIFT            Reduce 658

-PLUS_EQUAL                      Reduce 658

-MINUS_EQUAL                     Reduce 658

-MULTIPLY_EQUAL                  Reduce 658

-DIVIDE_EQUAL                    Reduce 658

-AND_EQUAL                       Reduce 658

-OR_EQUAL                        Reduce 658

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1118

-

-

-XOR_EQUAL                       Reduce 658

-REMAINDER_EQUAL                 Reduce 658

-LEFT_SHIFT_EQUAL                Reduce 658

-RIGHT_SHIFT_EQUAL               Reduce 658

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 658

-OR_OR                           Reduce 658

-AND_AND                         Reduce 658

-PLUS                            Reduce 658

-MINUS                           Reduce 658

-REMAINDER                       Reduce 658

-XOR                             Reduce 658

-AND                             Reduce 658

-MULTIPLY                        Reduce 658

-OR                              Reduce 658

-DIVIDE                          Reduce 658

-GREATER                         Reduce 658

-LESS                            Reduce 658

-RPAREN                          Reduce 658

-RBRACE                          Reduce 658

-LBRACKET                        Reduce 658

-RBRACKET                        Reduce 658

-SEMICOLON                       Reduce 658

-QUESTION                        Reduce 658

-COLON                           Reduce 658

-COMMA                           Reduce 658

-DOT                             Reduce 658

-EQUAL                           Reduce 658

-AT                              Reduce 658

-COLON_COLON                     Reduce 658

-ElidedSemicolonAndRightBrace    Reduce 658

-$eof                            Reduce 658

-LPAREN                          Reduce 35

-

-Default reduction to rule  658

-

-

-STATE 491 ----------------------------------------------------------------------

-( 253 )

-

-ReferenceExpression ::= QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt  .Identifier 

-

-Identifier    Sh/Rd  605

-

-

-STATE 492 ----------------------------------------------------------------------

-( 254 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1119

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   703

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 493 ----------------------------------------------------------------------

-( 255 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  704

-

-

-STATE 494 ----------------------------------------------------------------------

-( 257 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1120

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   705

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   705

-

-

-STATE 495 ----------------------------------------------------------------------

-( 258 )

-

-ArrayCreationWithoutArrayInitializer ::= new PrimitiveType 

-                                        DimWithOrWithOutExprs . (643)

-ArrayCreationWithArrayInitializer ::= new PrimitiveType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-LBRACE                          Shift  117

-AT308                           Shift  22

-

-TypeAnnotations                 Goto   496

-TypeAnnotation                  Goto   1037

-TypeAnnotations0                Goto   24

-TypeAnnotationName              Goto   23

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationsopt              Goto   496

-ArrayInitializer                Gt/Rd  644

-DimWithOrWithOutExpr            Gt/Rd  648

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1121

-

-

-abstract                        Reduce 643

-final                           Reduce 643

-instanceof                      Reduce 643

-native                          Reduce 643

-private                         Reduce 643

-protected                       Reduce 643

-public                          Reduce 643

-static                          Reduce 643

-strictfp                        Reduce 643

-synchronized                    Reduce 643

-transient                       Reduce 643

-volatile                        Reduce 643

-PLUS_PLUS                       Reduce 643

-MINUS_MINUS                     Reduce 643

-EQUAL_EQUAL                     Reduce 643

-LESS_EQUAL                      Reduce 643

-GREATER_EQUAL                   Reduce 643

-NOT_EQUAL                       Reduce 643

-LEFT_SHIFT                      Reduce 643

-RIGHT_SHIFT                     Reduce 643

-UNSIGNED_RIGHT_SHIFT            Reduce 643

-PLUS_EQUAL                      Reduce 643

-MINUS_EQUAL                     Reduce 643

-MULTIPLY_EQUAL                  Reduce 643

-DIVIDE_EQUAL                    Reduce 643

-AND_EQUAL                       Reduce 643

-OR_EQUAL                        Reduce 643

-XOR_EQUAL                       Reduce 643

-REMAINDER_EQUAL                 Reduce 643

-LEFT_SHIFT_EQUAL                Reduce 643

-RIGHT_SHIFT_EQUAL               Reduce 643

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 643

-OR_OR                           Reduce 643

-AND_AND                         Reduce 643

-PLUS                            Reduce 643

-MINUS                           Reduce 643

-REMAINDER                       Reduce 643

-XOR                             Reduce 643

-AND                             Reduce 643

-MULTIPLY                        Reduce 643

-OR                              Reduce 643

-DIVIDE                          Reduce 643

-GREATER                         Reduce 643

-LESS                            Reduce 643

-RPAREN                          Reduce 643

-RBRACE                          Reduce 643

-RBRACKET                        Reduce 643

-SEMICOLON                       Reduce 643

-QUESTION                        Reduce 643

-COLON                           Reduce 643

-COMMA                           Reduce 643

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1122

-

-

-DOT                             Reduce 643

-EQUAL                           Reduce 643

-AT                              Reduce 643

-COLON_COLON                     Reduce 643

-ElidedSemicolonAndRightBrace    Reduce 643

-$eof                            Reduce 643

-LBRACKET                        Reduce 92

-

-Default reduction to rule  643

-

-

-STATE 496 ----------------------------------------------------------------------

-( 258 261 410 412 495 499 638 640 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt  .LBRACKET RBRACKET 

-

-LBRACKET    Shift  706

-

-

-STATE 497 ----------------------------------------------------------------------

-( 259 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-LPAREN    Shift  707

-

-

-STATE 498 ----------------------------------------------------------------------

-( 260 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   708

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 499 ----------------------------------------------------------------------

-( 261 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1123

-

-

-ArrayCreationWithoutArrayInitializer ::= new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs . (645)

-ArrayCreationWithArrayInitializer ::= new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs  .ArrayInitializer 

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-LBRACE                          Shift  117

-AT308                           Shift  22

-

-TypeAnnotations                 Goto   496

-TypeAnnotation                  Goto   1037

-TypeAnnotations0                Goto   24

-TypeAnnotationName              Goto   23

-NormalTypeAnnotation            Gt/Rd  97

-MarkerTypeAnnotation            Gt/Rd  98

-SingleMemberTypeAnnotation      Gt/Rd  99

-TypeAnnotationsopt              Goto   496

-ArrayInitializer                Gt/Rd  646

-DimWithOrWithOutExpr            Gt/Rd  648

-

-abstract                        Reduce 645

-final                           Reduce 645

-instanceof                      Reduce 645

-native                          Reduce 645

-private                         Reduce 645

-protected                       Reduce 645

-public                          Reduce 645

-static                          Reduce 645

-strictfp                        Reduce 645

-synchronized                    Reduce 645

-transient                       Reduce 645

-volatile                        Reduce 645

-PLUS_PLUS                       Reduce 645

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1124

-

-

-MINUS_MINUS                     Reduce 645

-EQUAL_EQUAL                     Reduce 645

-LESS_EQUAL                      Reduce 645

-GREATER_EQUAL                   Reduce 645

-NOT_EQUAL                       Reduce 645

-LEFT_SHIFT                      Reduce 645

-RIGHT_SHIFT                     Reduce 645

-UNSIGNED_RIGHT_SHIFT            Reduce 645

-PLUS_EQUAL                      Reduce 645

-MINUS_EQUAL                     Reduce 645

-MULTIPLY_EQUAL                  Reduce 645

-DIVIDE_EQUAL                    Reduce 645

-AND_EQUAL                       Reduce 645

-OR_EQUAL                        Reduce 645

-XOR_EQUAL                       Reduce 645

-REMAINDER_EQUAL                 Reduce 645

-LEFT_SHIFT_EQUAL                Reduce 645

-RIGHT_SHIFT_EQUAL               Reduce 645

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 645

-OR_OR                           Reduce 645

-AND_AND                         Reduce 645

-PLUS                            Reduce 645

-MINUS                           Reduce 645

-REMAINDER                       Reduce 645

-XOR                             Reduce 645

-AND                             Reduce 645

-MULTIPLY                        Reduce 645

-OR                              Reduce 645

-DIVIDE                          Reduce 645

-GREATER                         Reduce 645

-LESS                            Reduce 645

-RPAREN                          Reduce 645

-RBRACE                          Reduce 645

-RBRACKET                        Reduce 645

-SEMICOLON                       Reduce 645

-QUESTION                        Reduce 645

-COLON                           Reduce 645

-COMMA                           Reduce 645

-DOT                             Reduce 645

-EQUAL                           Reduce 645

-AT                              Reduce 645

-COLON_COLON                     Reduce 645

-ElidedSemicolonAndRightBrace    Reduce 645

-$eof                            Reduce 645

-LBRACKET                        Reduce 92

-

-Default reduction to rule  645

-

-

-STATE 500 ----------------------------------------------------------------------

-( 262 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1125

-

-

-ArrayAccess ::= ArrayCreationWithArrayInitializer LBRACKET Expression  .

-                RBRACKET 

-

-RBRACKET    Sh/Rd  670

-

-

-STATE 501 ----------------------------------------------------------------------

-( 263 )

-

-ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  669

-

-

-STATE 502 ----------------------------------------------------------------------

-( 265 )

-

-ReferenceExpression ::= Primary COLON_COLON NonWildTypeArgumentsopt  .

-                        Identifier 

-

-Identifier    Sh/Rd  604

-

-

-STATE 503 ----------------------------------------------------------------------

-( 266 302 )

-

-FieldAccess ::= Primary DOT JavaIdentifier . (656)

-MethodInvocation ::= Primary DOT JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN                          Shift  709

-

-abstract                        Reduce 656

-final                           Reduce 656

-instanceof                      Reduce 656

-native                          Reduce 656

-private                         Reduce 656

-protected                       Reduce 656

-public                          Reduce 656

-static                          Reduce 656

-strictfp                        Reduce 656

-synchronized                    Reduce 656

-transient                       Reduce 656

-volatile                        Reduce 656

-PLUS_PLUS                       Reduce 656

-MINUS_MINUS                     Reduce 656

-EQUAL_EQUAL                     Reduce 656

-LESS_EQUAL                      Reduce 656

-GREATER_EQUAL                   Reduce 656

-NOT_EQUAL                       Reduce 656

-LEFT_SHIFT                      Reduce 656

-RIGHT_SHIFT                     Reduce 656

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1126

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 656

-PLUS_EQUAL                      Reduce 656

-MINUS_EQUAL                     Reduce 656

-MULTIPLY_EQUAL                  Reduce 656

-DIVIDE_EQUAL                    Reduce 656

-AND_EQUAL                       Reduce 656

-OR_EQUAL                        Reduce 656

-XOR_EQUAL                       Reduce 656

-REMAINDER_EQUAL                 Reduce 656

-LEFT_SHIFT_EQUAL                Reduce 656

-RIGHT_SHIFT_EQUAL               Reduce 656

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 656

-OR_OR                           Reduce 656

-AND_AND                         Reduce 656

-PLUS                            Reduce 656

-MINUS                           Reduce 656

-REMAINDER                       Reduce 656

-XOR                             Reduce 656

-AND                             Reduce 656

-MULTIPLY                        Reduce 656

-OR                              Reduce 656

-DIVIDE                          Reduce 656

-GREATER                         Reduce 656

-LESS                            Reduce 656

-RPAREN                          Reduce 656

-RBRACE                          Reduce 656

-LBRACKET                        Reduce 656

-RBRACKET                        Reduce 656

-SEMICOLON                       Reduce 656

-QUESTION                        Reduce 656

-COLON                           Reduce 656

-COMMA                           Reduce 656

-DOT                             Reduce 656

-EQUAL                           Reduce 656

-AT                              Reduce 656

-COLON_COLON                     Reduce 656

-ElidedSemicolonAndRightBrace    Reduce 656

-$eof                            Reduce 656

-

-Default reduction to rule  656

-

-

-STATE 504 ----------------------------------------------------------------------

-( 266 302 )

-

-ClassInstanceCreationExpression ::= Primary DOT new  .OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= Primary DOT new  .ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1127

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-Identifier                    Shift  1076

-AT308                         Shift  22

-LESS                          Shift  25

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   710

-OnlyTypeArguments             Goto   711

-ClassType                     Goto   710

-

-

-STATE 505 ----------------------------------------------------------------------

-( 266 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1128

-

-

-ExplicitConstructorInvocation ::= Primary DOT this  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-LPAREN    Shift  712

-

-

-STATE 506 ----------------------------------------------------------------------

-( 266 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-this                    Shift  714

-super                   Shift  715

-Identifier              Shift  713

-declare                 Shift  713

-after                   Shift  713

-before                  Shift  713

-pointcut                Shift  713

-privileged              Shift  713

-aspect                  Shift  713

-around                  Shift  713

-

-AjSimpleNameNoAround    Goto   713

-AjSimpleName            Goto   713

-JavaIdentifier          Goto   713

-

-

-STATE 507 ----------------------------------------------------------------------

-( 266 )

-

-ExplicitConstructorInvocation ::= Primary DOT super  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-LPAREN    Shift  716

-

-

-STATE 508 ----------------------------------------------------------------------

-( 267 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  717

-declare                 Shift  717

-after                   Shift  717

-before                  Shift  717

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1129

-

-

-pointcut                Shift  717

-privileged              Shift  717

-aspect                  Shift  717

-around                  Shift  717

-

-AjSimpleNameNoAround    Goto   717

-AjSimpleName            Goto   717

-JavaIdentifier          Goto   717

-

-

-STATE 509 ----------------------------------------------------------------------

-( 267 )

-

-FieldAccess ::= super DOT JavaIdentifier . (657)

-MethodInvocation ::= super DOT JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN                          Shift  718

-

-abstract                        Reduce 657

-final                           Reduce 657

-instanceof                      Reduce 657

-native                          Reduce 657

-private                         Reduce 657

-protected                       Reduce 657

-public                          Reduce 657

-static                          Reduce 657

-strictfp                        Reduce 657

-synchronized                    Reduce 657

-transient                       Reduce 657

-volatile                        Reduce 657

-PLUS_PLUS                       Reduce 657

-MINUS_MINUS                     Reduce 657

-EQUAL_EQUAL                     Reduce 657

-LESS_EQUAL                      Reduce 657

-GREATER_EQUAL                   Reduce 657

-NOT_EQUAL                       Reduce 657

-LEFT_SHIFT                      Reduce 657

-RIGHT_SHIFT                     Reduce 657

-UNSIGNED_RIGHT_SHIFT            Reduce 657

-PLUS_EQUAL                      Reduce 657

-MINUS_EQUAL                     Reduce 657

-MULTIPLY_EQUAL                  Reduce 657

-DIVIDE_EQUAL                    Reduce 657

-AND_EQUAL                       Reduce 657

-OR_EQUAL                        Reduce 657

-XOR_EQUAL                       Reduce 657

-REMAINDER_EQUAL                 Reduce 657

-LEFT_SHIFT_EQUAL                Reduce 657

-RIGHT_SHIFT_EQUAL               Reduce 657

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 657

-OR_OR                           Reduce 657

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1130

-

-

-AND_AND                         Reduce 657

-PLUS                            Reduce 657

-MINUS                           Reduce 657

-REMAINDER                       Reduce 657

-XOR                             Reduce 657

-AND                             Reduce 657

-MULTIPLY                        Reduce 657

-OR                              Reduce 657

-DIVIDE                          Reduce 657

-GREATER                         Reduce 657

-LESS                            Reduce 657

-RPAREN                          Reduce 657

-RBRACE                          Reduce 657

-LBRACKET                        Reduce 657

-RBRACKET                        Reduce 657

-SEMICOLON                       Reduce 657

-QUESTION                        Reduce 657

-COLON                           Reduce 657

-COMMA                           Reduce 657

-DOT                             Reduce 657

-EQUAL                           Reduce 657

-AT                              Reduce 657

-COLON_COLON                     Reduce 657

-ElidedSemicolonAndRightBrace    Reduce 657

-$eof                            Reduce 657

-

-Default reduction to rule  657

-

-

-STATE 510 ----------------------------------------------------------------------

-( 268 )

-

-ReferenceExpression ::= super COLON_COLON NonWildTypeArgumentsopt  .Identifier 

-

-Identifier    Sh/Rd  606

-

-

-STATE 511 ----------------------------------------------------------------------

-( 269 )

-

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  719

-

-

-STATE 512 ----------------------------------------------------------------------

-( 270 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1131

-

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1132

-

-

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1133

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1134

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1135

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1136

-

-

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1137

-

-

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 513 ----------------------------------------------------------------------

-( 271 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1138

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1139

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1140

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1141

-

-

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1142

-

-

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1143

-

-

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   721

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 514 ----------------------------------------------------------------------

-( 272 )

-

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  722

-

-

-STATE 515 ----------------------------------------------------------------------

-( 273 )

-

-Block ::= OpenBlock LBRACE BlockStatementsopt  .RBRACE 

-

-RBRACE    Sh/Rd  466

-

-

-STATE 516 ----------------------------------------------------------------------

-( 274 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1144

-

-

-AssertStatement ::= assert Expression COLON  .Expression SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1145

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1146

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1147

-

-

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1148

-

-

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1149

-

-

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   723

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1150

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 517 ----------------------------------------------------------------------

-( 276 )

-

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-

-RPAREN    Shift  724

-

-

-STATE 518 ----------------------------------------------------------------------

-( 277 )

-

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-

-RPAREN    Shift  725

-

-

-STATE 519 ----------------------------------------------------------------------

-( 278 )

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-SEMICOLON    Shift  726

-

-

-STATE 520 ----------------------------------------------------------------------

-( 278 920 )

-

-LocalVariableDeclaration ::= Type  .PushModifiers VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Type  .PushModifiers 

-                                   JavaIdentifier Dimsopt 

-

-PushModifiers ::= . (482)

-

-PushModifiers    Goto   727

-

-Identifier       Reduce 482

-aspect           Reduce 482

-pointcut         Reduce 482

-around           Reduce 482

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1151

-

-

-before           Reduce 482

-after            Reduce 482

-declare          Reduce 482

-privileged       Reduce 482

-

-Default reduction to rule  482

-

-

-STATE 521 ----------------------------------------------------------------------

-( 278 920 )

-

-Modifiers ::= Modifiers  .Modifier 

-LocalVariableDeclaration ::= Modifiers  .Type PushRealModifiers 

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers  .Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1152

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifier ::= .Annotation 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Sh/Rd  158

-volatile                          Sh/Rd  158

-transient                         Sh/Rd  158

-synchronized                      Sh/Rd  158

-native                            Sh/Rd  158

-final                             Sh/Rd  158

-abstract                          Sh/Rd  158

-static                            Sh/Rd  158

-private                           Sh/Rd  158

-protected                         Sh/Rd  158

-public                            Sh/Rd  158

-AT                                Shift  136

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   728

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   728

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Gt/Rd  158

-Annotation                        Gt/Rd  171

-Modifier                          Gt/Rd  158

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1153

-

-

-Type                              Goto   728

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 522 ----------------------------------------------------------------------

-( 278 552 920 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-NameOrAj ::= Name . (68)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PrimaryNoNewArray ::= Name  .DOT this 

-QualifiedSuperReceiver ::= Name  .DOT super 

-PrimaryNoNewArray ::= Name  .DOT class 

-PrimaryNoNewArray ::= Name  .Dims DOT class 

-ReferenceExpression ::= Name  .Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= Name  .BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ClassInstanceCreationExpressionName ::= Name  .DOT new 

-MethodInvocation ::= Name  .DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-ArrayAccess ::= Name  .LBRACKET Expression RBRACKET 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1154

-

-

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-BeginTypeArguments            Shift  288

-DOT                           Shift  300

-LBRACKET                      Shift  291

-AT308                         Shift  22

-

-Dims                          Goto   292

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Goto   289

-

-instanceof                    Reduce 672

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 672

-LESS_EQUAL                    Reduce 672

-GREATER_EQUAL                 Reduce 672

-NOT_EQUAL                     Reduce 672

-LEFT_SHIFT                    Reduce 672

-RIGHT_SHIFT                   Reduce 672

-UNSIGNED_RIGHT_SHIFT          Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 672

-AND_AND                       Reduce 672

-PLUS                          Reduce 672

-MINUS                         Reduce 672

-REMAINDER                     Reduce 672

-XOR                           Reduce 672

-AND                           Reduce 672

-MULTIPLY                      Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1155

-

-

-OR                            Reduce 672

-DIVIDE                        Reduce 672

-LPAREN                        Reduce 68

-RPAREN                        Reduce 672

-QUESTION                      Reduce 672

-EQUAL                         Reduce 672

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-GREATER                       Reduce 57

-LESS                          Reduce 57

-COMMA                         Reduce 57

-COLON_COLON                   Reduce 768

-

-Default reduction to rule  68

-

-

-STATE 523 ----------------------------------------------------------------------

-( 278 920 )

-

-ForInit ::= StatementExpressionList . (544)

-StatementExpressionList ::= StatementExpressionList  .COMMA StatementExpression 

-

-COMMA        Shift  729

-

-SEMICOLON    Reduce 544

-

-Default reduction to rule  544

-

-

-STATE 524 ----------------------------------------------------------------------

-( 279 )

-

-EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit COLON 

-                               Expression  .RPAREN 

-

-RPAREN    Sh/Rd  813

-

-

-STATE 525 ----------------------------------------------------------------------

-( 280 727 )

-

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators . (480)

-

-COMMA        Shift  730

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1156

-

-

-

-SEMICOLON    Reduce 480

-

-Default reduction to rule  480

-

-

-STATE 526 ----------------------------------------------------------------------

-( 280 404 453 531 695 730 781 811 817 898 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-RPAREN                        Reduce 768

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 527 ----------------------------------------------------------------------

-( 280 340 352 404 428 531 727 730 849 870 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1157

-

-

-VariableDeclarator ::= VariableDeclaratorId  .EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= VariableDeclaratorId  .EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-EnterVariable    Goto   731

-

-SEMICOLON        Reduce 378

-COMMA            Reduce 378

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 528 ----------------------------------------------------------------------

-( 281 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface  .

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface  .

-                                        JavaIdentifier 

-

-Identifier              Shift  732

-declare                 Shift  732

-after                   Shift  732

-before                  Shift  732

-pointcut                Shift  732

-privileged              Shift  732

-aspect                  Shift  732

-around                  Shift  732

-

-AjSimpleNameNoAround    Goto   732

-AjSimpleName            Goto   732

-JavaIdentifier          Goto   732

-

-

-STATE 529 ----------------------------------------------------------------------

-( 284 )

-

-SingleMemberAnnotation ::= AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue  .RPAREN 

-

-RPAREN    Sh/Rd  990

-

-

-STATE 530 ----------------------------------------------------------------------

-( 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1158

-

-

-NormalAnnotation ::= AnnotationName LPAREN MemberValuePairsopt  .RPAREN 

-

-RPAREN    Sh/Rd  969

-

-

-STATE 531 ----------------------------------------------------------------------

-( 285 )

-

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclarator      Goto   733

-VariableDeclarators     Goto   733

-

-

-STATE 532 ----------------------------------------------------------------------

-( 286 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers  .

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers  .

-                                        interface JavaIdentifier TypeParameters 

-

-interface    Shift  734

-

-

-STATE 533 ----------------------------------------------------------------------

-( 288 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1159

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-COLON_COLON    Shift  735

-

-

-STATE 534 ----------------------------------------------------------------------

-( 289 )

-

-ReferenceExpression ::= Name Dimsopt COLON_COLON  .NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   736

-NonWildTypeArgumentsopt    Goto   736

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 535 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT this  .LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-PrimaryNoNewArray ::= Name DOT this . (588)

-

-LPAREN                        Shift  737

-

-PLUS_PLUS                     Reduce 588

-MINUS_MINUS                   Reduce 588

-PLUS_EQUAL                    Reduce 588

-MINUS_EQUAL                   Reduce 588

-MULTIPLY_EQUAL                Reduce 588

-DIVIDE_EQUAL                  Reduce 588

-AND_EQUAL                     Reduce 588

-OR_EQUAL                      Reduce 588

-XOR_EQUAL                     Reduce 588

-REMAINDER_EQUAL               Reduce 588

-LEFT_SHIFT_EQUAL              Reduce 588

-RIGHT_SHIFT_EQUAL             Reduce 588

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 588

-LBRACKET                      Reduce 588

-DOT                           Reduce 588

-EQUAL                         Reduce 588

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1160

-

-

-COLON_COLON                   Reduce 588

-

-Default reduction to rule  588

-

-

-STATE 536 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments  .this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-this                    Shift  739

-super                   Shift  740

-Identifier              Shift  738

-declare                 Shift  738

-after                   Shift  738

-before                  Shift  738

-pointcut                Shift  738

-privileged              Shift  738

-aspect                  Shift  738

-around                  Shift  738

-

-AjSimpleNameNoAround    Goto   738

-AjSimpleName            Goto   738

-JavaIdentifier          Goto   738

-

-

-STATE 537 ----------------------------------------------------------------------

-( 290 )

-

-ExplicitConstructorInvocation ::= Name DOT super  .LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-QualifiedSuperReceiver ::= Name DOT super . (589)

-

-LPAREN         Shift  741

-

-DOT            Reduce 589

-COLON_COLON    Reduce 589

-

-Default reduction to rule  589

-

-

-STATE 538 ----------------------------------------------------------------------

-( 290 300 445 595 774 947 992 )

-

-QualifiedName ::= Name DOT TypeAnnotations  .JavaIdentifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1161

-

-

-Identifier              Sh/Rd  91

-declare                 Sh/Rd  91

-after                   Sh/Rd  91

-before                  Sh/Rd  91

-pointcut                Sh/Rd  91

-privileged              Sh/Rd  91

-aspect                  Sh/Rd  91

-around                  Sh/Rd  91

-

-AjSimpleNameNoAround    Gt/Rd  91

-AjSimpleName            Gt/Rd  91

-JavaIdentifier          Gt/Rd  91

-

-

-STATE 539 ----------------------------------------------------------------------

-( 291 )

-

-ArrayAccess ::= Name LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  667

-

-

-STATE 540 ----------------------------------------------------------------------

-( 292 301 551 )

-

-PrimaryNoNewArray ::= Name Dims DOT  .class 

-

-class    Sh/Rd  591

-

-

-STATE 541 ----------------------------------------------------------------------

-( 293 948 993 )

-

-ClassOrInterface ::= GenericType DOT Name . (58)

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name . (61)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT                             Shift  445

-

-LBRACKET                        Reduce 61

-AT308                           Reduce 61

-Identifier                      Reduce 58

-abstract                        Reduce 58

-final                           Reduce 58

-instanceof                      Reduce 58

-native                          Reduce 58

-private                         Reduce 58

-protected                       Reduce 58

-public                          Reduce 58

-static                          Reduce 58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1162

-

-

-strictfp                        Reduce 58

-synchronized                    Reduce 58

-this                            Reduce 58

-transient                       Reduce 58

-volatile                        Reduce 58

-aspect                          Reduce 58

-pointcut                        Reduce 58

-around                          Reduce 58

-before                          Reduce 58

-after                           Reduce 58

-declare                         Reduce 58

-privileged                      Reduce 58

-EQUAL_EQUAL                     Reduce 58

-NOT_EQUAL                       Reduce 58

-RIGHT_SHIFT                     Reduce 58

-UNSIGNED_RIGHT_SHIFT            Reduce 58

-OR_OR                           Reduce 58

-AND_AND                         Reduce 58

-XOR                             Reduce 58

-AND                             Reduce 58

-OR                              Reduce 58

-GREATER                         Reduce 58

-LESS                            Reduce 58

-RPAREN                          Reduce 58

-RBRACE                          Reduce 58

-RBRACKET                        Reduce 58

-SEMICOLON                       Reduce 58

-QUESTION                        Reduce 58

-COLON                           Reduce 58

-COMMA                           Reduce 58

-AT                              Reduce 58

-ELLIPSIS                        Reduce 58

-ElidedSemicolonAndRightBrace    Reduce 58

-AT308DOTDOTDOT                  Reduce 58

-$eof                            Reduce 58

-

-Default reduction to rule  58

-

-

-STATE 542 ----------------------------------------------------------------------

-( 296 299 548 )

-

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON  .

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   742

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1163

-

-

-NonWildTypeArgumentsopt    Goto   742

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 543 ----------------------------------------------------------------------

-( 296 299 548 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims DOT  .class 

-

-class    Sh/Rd  592

-

-

-STATE 544 ----------------------------------------------------------------------

-( 300 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  738

-declare                 Shift  738

-after                   Shift  738

-before                  Shift  738

-pointcut                Shift  738

-privileged              Shift  738

-aspect                  Shift  738

-around                  Shift  738

-

-AjSimpleNameNoAround    Goto   738

-AjSimpleName            Goto   738

-JavaIdentifier          Goto   738

-

-

-STATE 545 ----------------------------------------------------------------------

-( 302 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments  .JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

-Identifier              Shift  713

-declare                 Shift  713

-after                   Shift  713

-before                  Shift  713

-pointcut                Shift  713

-privileged              Shift  713

-aspect                  Shift  713

-around                  Shift  713

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1164

-

-

-AjSimpleNameNoAround    Goto   713

-AjSimpleName            Goto   713

-JavaIdentifier          Goto   713

-

-

-STATE 546 ----------------------------------------------------------------------

-( 303 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds  .

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   743

-

-

-STATE 547 ----------------------------------------------------------------------

-( 304 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt  .AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   744

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 548 ----------------------------------------------------------------------

-( 304 )

-

-PrimaryNoNewArray ::= PrimitiveType Dims  .DOT class 

-ReferenceExpression ::= PrimitiveType Dims  .COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-Dimsopt ::= Dims . (769)

-

-COLON_COLON    Shift  542

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1165

-

-

-DOT            Shift  543

-

-AND            Reduce 769

-RPAREN         Reduce 769

-

-Default reduction to rule  769

-

-

-STATE 549 ----------------------------------------------------------------------

-( 305 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression  .DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-DOT                           Shift  746

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   747

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1166

-

-

-Dimsopt                       Goto   747

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 550 ----------------------------------------------------------------------

-( 305 )

-

-PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN . (585)

-CastExpression ::= PushLPAREN Name PushRPAREN  .InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionLL1 ::= . (701)

-

-InsideCastExpressionLL1         Goto   748

-

-abstract                        Reduce 585

-final                           Reduce 585

-instanceof                      Reduce 585

-native                          Reduce 585

-private                         Reduce 585

-protected                       Reduce 585

-public                          Reduce 585

-static                          Reduce 585

-strictfp                        Reduce 585

-synchronized                    Reduce 585

-transient                       Reduce 585

-volatile                        Reduce 585

-PLUS_PLUS                       Reduce 585

-MINUS_MINUS                     Reduce 585

-EQUAL_EQUAL                     Reduce 585

-LESS_EQUAL                      Reduce 585

-GREATER_EQUAL                   Reduce 585

-NOT_EQUAL                       Reduce 585

-LEFT_SHIFT                      Reduce 585

-RIGHT_SHIFT                     Reduce 585

-UNSIGNED_RIGHT_SHIFT            Reduce 585

-PLUS_EQUAL                      Reduce 585

-MINUS_EQUAL                     Reduce 585

-MULTIPLY_EQUAL                  Reduce 585

-DIVIDE_EQUAL                    Reduce 585

-AND_EQUAL                       Reduce 585

-OR_EQUAL                        Reduce 585

-XOR_EQUAL                       Reduce 585

-REMAINDER_EQUAL                 Reduce 585

-LEFT_SHIFT_EQUAL                Reduce 585

-RIGHT_SHIFT_EQUAL               Reduce 585

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 585

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1167

-

-

-OR_OR                           Reduce 585

-AND_AND                         Reduce 585

-PLUS                            Reduce 585

-MINUS                           Reduce 585

-REMAINDER                       Reduce 585

-XOR                             Reduce 585

-AND                             Reduce 585

-MULTIPLY                        Reduce 585

-OR                              Reduce 585

-DIVIDE                          Reduce 585

-GREATER                         Reduce 585

-LESS                            Reduce 585

-RPAREN                          Reduce 585

-RBRACE                          Reduce 585

-LBRACKET                        Reduce 585

-RBRACKET                        Reduce 585

-SEMICOLON                       Reduce 585

-QUESTION                        Reduce 585

-COLON                           Reduce 585

-COMMA                           Reduce 585

-DOT                             Reduce 585

-EQUAL                           Reduce 585

-AT                              Reduce 585

-COLON_COLON                     Reduce 585

-ElidedSemicolonAndRightBrace    Reduce 585

-$eof                            Reduce 585

-Identifier                      Reduce 701

-boolean                         Reduce 701

-byte                            Reduce 701

-char                            Reduce 701

-double                          Reduce 701

-false                           Reduce 701

-float                           Reduce 701

-int                             Reduce 701

-long                            Reduce 701

-new                             Reduce 701

-null                            Reduce 701

-short                           Reduce 701

-super                           Reduce 701

-this                            Reduce 701

-true                            Reduce 701

-void                            Reduce 701

-aspect                          Reduce 701

-pointcut                        Reduce 701

-around                          Reduce 701

-before                          Reduce 701

-after                           Reduce 701

-declare                         Reduce 701

-privileged                      Reduce 701

-IntegerLiteral                  Reduce 701

-LongLiteral                     Reduce 701

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1168

-

-

-FloatingPointLiteral            Reduce 701

-DoubleLiteral                   Reduce 701

-CharacterLiteral                Reduce 701

-StringLiteral                   Reduce 701

-NOT                             Reduce 701

-TWIDDLE                         Reduce 701

-LPAREN                          Reduce 701

-BeginLambda                     Reduce 701

-BeginIntersectionCast           Reduce 701

-AT308                           Reduce 701

-

-Default reduction to rule  585

-

-

-STATE 551 ----------------------------------------------------------------------

-( 305 )

-

-PrimaryNoNewArray ::= Name Dims  .DOT class 

-CastExpression ::= PushLPAREN Name Dims  .AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-Dimsopt ::= Dims . (769)

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-DOT                        Shift  540

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   749

-

-COLON_COLON                Reduce 769

-RPAREN                     Reduce 695

-

-Default reduction to rule  769

-

-

-STATE 552 ----------------------------------------------------------------------

-( 305 )

-

-OnlyTypeArguments ::= LESS  .TypeArgumentList1 

-RelationalExpression_NotName ::= Name LESS  .ShiftExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1169

-

-

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1170

-

-

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1171

-

-

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1172

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1173

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1153

-true                                    Shift  1153

-null                                    Shift  1153

-StringLiteral                           Shift  1153

-CharacterLiteral                        Shift  1153

-DoubleLiteral                           Shift  1153

-FloatingPointLiteral                    Shift  1153

-LongLiteral                             Shift  1153

-IntegerLiteral                          Shift  1153

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1154

-PreDecrementExpression                  Goto   1154

-UnaryExpressionNotPlusMinus             Goto   1154

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1163

-PostDecrementExpression                 Goto   1162

-PostfixExpression                       Goto   483

-Literal                                 Goto   1153

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1161

-FieldAccess                             Goto   1160

-Name                                    Goto   522

-PrimitiveType                           Goto   750

-MethodInvocation                        Goto   1159

-ArrayAccess                             Goto   1158

-LambdaExpression                        Goto   1157

-ReferenceExpression                     Goto   1156

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1174

-

-

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1153

-ArrayCreationWithoutArrayInitializer    Goto   1155

-CastExpression                          Goto   1154

-UnaryExpression                         Goto   1154

-ShiftExpression                         Goto   601

-ReferenceType1                          Gt/Rd  819

-Wildcard1                               Gt/Rd  819

-TypeAnnotationsopt                      Goto   205

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   1078

-TypeAnnotations                         Goto   88

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   202

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   201

-TypeArgument                            Goto   200

-TypeArgumentList                        Goto   200

-Wildcard                                Goto   200

-TypeArgument1                           Gt/Rd  819

-TypeArgumentList1                       Gt/Rd  819

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-QUESTION                                Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 553 ----------------------------------------------------------------------

-( 311 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1175

-

-

-                     (714)

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 714

-final                           Reduce 714

-instanceof                      Reduce 714

-native                          Reduce 714

-private                         Reduce 714

-protected                       Reduce 714

-public                          Reduce 714

-static                          Reduce 714

-strictfp                        Reduce 714

-synchronized                    Reduce 714

-transient                       Reduce 714

-volatile                        Reduce 714

-EQUAL_EQUAL                     Reduce 714

-LESS_EQUAL                      Reduce 714

-GREATER_EQUAL                   Reduce 714

-NOT_EQUAL                       Reduce 714

-LEFT_SHIFT                      Reduce 714

-RIGHT_SHIFT                     Reduce 714

-UNSIGNED_RIGHT_SHIFT            Reduce 714

-OR_OR                           Reduce 714

-AND_AND                         Reduce 714

-XOR                             Reduce 714

-AND                             Reduce 714

-OR                              Reduce 714

-GREATER                         Reduce 714

-LESS                            Reduce 714

-RPAREN                          Reduce 714

-RBRACE                          Reduce 714

-RBRACKET                        Reduce 714

-SEMICOLON                       Reduce 714

-QUESTION                        Reduce 714

-COLON                           Reduce 714

-COMMA                           Reduce 714

-AT                              Reduce 714

-ElidedSemicolonAndRightBrace    Reduce 714

-$eof                            Reduce 714

-

-Default reduction to rule  714

-

-

-STATE 554 ----------------------------------------------------------------------

-( 312 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression RIGHT_SHIFT AdditiveExpression . (713)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1176

-

-

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 713

-final                           Reduce 713

-instanceof                      Reduce 713

-native                          Reduce 713

-private                         Reduce 713

-protected                       Reduce 713

-public                          Reduce 713

-static                          Reduce 713

-strictfp                        Reduce 713

-synchronized                    Reduce 713

-transient                       Reduce 713

-volatile                        Reduce 713

-EQUAL_EQUAL                     Reduce 713

-LESS_EQUAL                      Reduce 713

-GREATER_EQUAL                   Reduce 713

-NOT_EQUAL                       Reduce 713

-LEFT_SHIFT                      Reduce 713

-RIGHT_SHIFT                     Reduce 713

-UNSIGNED_RIGHT_SHIFT            Reduce 713

-OR_OR                           Reduce 713

-AND_AND                         Reduce 713

-XOR                             Reduce 713

-AND                             Reduce 713

-OR                              Reduce 713

-GREATER                         Reduce 713

-LESS                            Reduce 713

-RPAREN                          Reduce 713

-RBRACE                          Reduce 713

-RBRACKET                        Reduce 713

-SEMICOLON                       Reduce 713

-QUESTION                        Reduce 713

-COLON                           Reduce 713

-COMMA                           Reduce 713

-AT                              Reduce 713

-ElidedSemicolonAndRightBrace    Reduce 713

-$eof                            Reduce 713

-

-Default reduction to rule  713

-

-

-STATE 555 ----------------------------------------------------------------------

-( 313 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression ::= ShiftExpression LEFT_SHIFT AdditiveExpression . (712)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1177

-

-

-MINUS                           Shift  314

-PLUS                            Shift  315

-

-abstract                        Reduce 712

-final                           Reduce 712

-instanceof                      Reduce 712

-native                          Reduce 712

-private                         Reduce 712

-protected                       Reduce 712

-public                          Reduce 712

-static                          Reduce 712

-strictfp                        Reduce 712

-synchronized                    Reduce 712

-transient                       Reduce 712

-volatile                        Reduce 712

-EQUAL_EQUAL                     Reduce 712

-LESS_EQUAL                      Reduce 712

-GREATER_EQUAL                   Reduce 712

-NOT_EQUAL                       Reduce 712

-LEFT_SHIFT                      Reduce 712

-RIGHT_SHIFT                     Reduce 712

-UNSIGNED_RIGHT_SHIFT            Reduce 712

-OR_OR                           Reduce 712

-AND_AND                         Reduce 712

-XOR                             Reduce 712

-AND                             Reduce 712

-OR                              Reduce 712

-GREATER                         Reduce 712

-LESS                            Reduce 712

-RPAREN                          Reduce 712

-RBRACE                          Reduce 712

-RBRACKET                        Reduce 712

-SEMICOLON                       Reduce 712

-QUESTION                        Reduce 712

-COLON                           Reduce 712

-COMMA                           Reduce 712

-AT                              Reduce 712

-ElidedSemicolonAndRightBrace    Reduce 712

-$eof                            Reduce 712

-

-Default reduction to rule  712

-

-

-STATE 556 ----------------------------------------------------------------------

-( 314 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1178

-

-

-AdditiveExpression ::= AdditiveExpression MINUS MultiplicativeExpression .

-                        (710)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 710

-final                           Reduce 710

-instanceof                      Reduce 710

-native                          Reduce 710

-private                         Reduce 710

-protected                       Reduce 710

-public                          Reduce 710

-static                          Reduce 710

-strictfp                        Reduce 710

-synchronized                    Reduce 710

-transient                       Reduce 710

-volatile                        Reduce 710

-EQUAL_EQUAL                     Reduce 710

-LESS_EQUAL                      Reduce 710

-GREATER_EQUAL                   Reduce 710

-NOT_EQUAL                       Reduce 710

-LEFT_SHIFT                      Reduce 710

-RIGHT_SHIFT                     Reduce 710

-UNSIGNED_RIGHT_SHIFT            Reduce 710

-OR_OR                           Reduce 710

-AND_AND                         Reduce 710

-PLUS                            Reduce 710

-MINUS                           Reduce 710

-XOR                             Reduce 710

-AND                             Reduce 710

-OR                              Reduce 710

-GREATER                         Reduce 710

-LESS                            Reduce 710

-RPAREN                          Reduce 710

-RBRACE                          Reduce 710

-RBRACKET                        Reduce 710

-SEMICOLON                       Reduce 710

-QUESTION                        Reduce 710

-COLON                           Reduce 710

-COMMA                           Reduce 710

-AT                              Reduce 710

-ElidedSemicolonAndRightBrace    Reduce 710

-$eof                            Reduce 710

-

-Default reduction to rule  710

-

-

-STATE 557 ----------------------------------------------------------------------

-( 315 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1179

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= AdditiveExpression PLUS MultiplicativeExpression . (709)

-

-REMAINDER                       Shift  308

-DIVIDE                          Shift  309

-MULTIPLY                        Shift  310

-

-abstract                        Reduce 709

-final                           Reduce 709

-instanceof                      Reduce 709

-native                          Reduce 709

-private                         Reduce 709

-protected                       Reduce 709

-public                          Reduce 709

-static                          Reduce 709

-strictfp                        Reduce 709

-synchronized                    Reduce 709

-transient                       Reduce 709

-volatile                        Reduce 709

-EQUAL_EQUAL                     Reduce 709

-LESS_EQUAL                      Reduce 709

-GREATER_EQUAL                   Reduce 709

-NOT_EQUAL                       Reduce 709

-LEFT_SHIFT                      Reduce 709

-RIGHT_SHIFT                     Reduce 709

-UNSIGNED_RIGHT_SHIFT            Reduce 709

-OR_OR                           Reduce 709

-AND_AND                         Reduce 709

-PLUS                            Reduce 709

-MINUS                           Reduce 709

-XOR                             Reduce 709

-AND                             Reduce 709

-OR                              Reduce 709

-GREATER                         Reduce 709

-LESS                            Reduce 709

-RPAREN                          Reduce 709

-RBRACE                          Reduce 709

-RBRACKET                        Reduce 709

-SEMICOLON                       Reduce 709

-QUESTION                        Reduce 709

-COLON                           Reduce 709

-COMMA                           Reduce 709

-AT                              Reduce 709

-ElidedSemicolonAndRightBrace    Reduce 709

-$eof                            Reduce 709

-

-Default reduction to rule  709

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1180

-

-

-

-

-STATE 558 ----------------------------------------------------------------------

-( 317 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression GREATER_EQUAL ShiftExpression .

-                          (719)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 719

-final                           Reduce 719

-instanceof                      Reduce 719

-native                          Reduce 719

-private                         Reduce 719

-protected                       Reduce 719

-public                          Reduce 719

-static                          Reduce 719

-strictfp                        Reduce 719

-synchronized                    Reduce 719

-transient                       Reduce 719

-volatile                        Reduce 719

-EQUAL_EQUAL                     Reduce 719

-LESS_EQUAL                      Reduce 719

-GREATER_EQUAL                   Reduce 719

-NOT_EQUAL                       Reduce 719

-OR_OR                           Reduce 719

-AND_AND                         Reduce 719

-XOR                             Reduce 719

-AND                             Reduce 719

-OR                              Reduce 719

-GREATER                         Reduce 719

-LESS                            Reduce 719

-RPAREN                          Reduce 719

-RBRACE                          Reduce 719

-RBRACKET                        Reduce 719

-SEMICOLON                       Reduce 719

-QUESTION                        Reduce 719

-COLON                           Reduce 719

-COMMA                           Reduce 719

-AT                              Reduce 719

-ElidedSemicolonAndRightBrace    Reduce 719

-$eof                            Reduce 719

-

-Default reduction to rule  719

-

-

-STATE 559 ----------------------------------------------------------------------

-( 318 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1181

-

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression LESS_EQUAL ShiftExpression .

-                          (718)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 718

-final                           Reduce 718

-instanceof                      Reduce 718

-native                          Reduce 718

-private                         Reduce 718

-protected                       Reduce 718

-public                          Reduce 718

-static                          Reduce 718

-strictfp                        Reduce 718

-synchronized                    Reduce 718

-transient                       Reduce 718

-volatile                        Reduce 718

-EQUAL_EQUAL                     Reduce 718

-LESS_EQUAL                      Reduce 718

-GREATER_EQUAL                   Reduce 718

-NOT_EQUAL                       Reduce 718

-OR_OR                           Reduce 718

-AND_AND                         Reduce 718

-XOR                             Reduce 718

-AND                             Reduce 718

-OR                              Reduce 718

-GREATER                         Reduce 718

-LESS                            Reduce 718

-RPAREN                          Reduce 718

-RBRACE                          Reduce 718

-RBRACKET                        Reduce 718

-SEMICOLON                       Reduce 718

-QUESTION                        Reduce 718

-COLON                           Reduce 718

-COMMA                           Reduce 718

-AT                              Reduce 718

-ElidedSemicolonAndRightBrace    Reduce 718

-$eof                            Reduce 718

-

-Default reduction to rule  718

-

-

-STATE 560 ----------------------------------------------------------------------

-( 319 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1182

-

-

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= RelationalExpression GREATER ShiftExpression . (717)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 717

-final                           Reduce 717

-instanceof                      Reduce 717

-native                          Reduce 717

-private                         Reduce 717

-protected                       Reduce 717

-public                          Reduce 717

-static                          Reduce 717

-strictfp                        Reduce 717

-synchronized                    Reduce 717

-transient                       Reduce 717

-volatile                        Reduce 717

-EQUAL_EQUAL                     Reduce 717

-LESS_EQUAL                      Reduce 717

-GREATER_EQUAL                   Reduce 717

-NOT_EQUAL                       Reduce 717

-OR_OR                           Reduce 717

-AND_AND                         Reduce 717

-XOR                             Reduce 717

-AND                             Reduce 717

-OR                              Reduce 717

-GREATER                         Reduce 717

-LESS                            Reduce 717

-RPAREN                          Reduce 717

-RBRACE                          Reduce 717

-RBRACKET                        Reduce 717

-SEMICOLON                       Reduce 717

-QUESTION                        Reduce 717

-COLON                           Reduce 717

-COMMA                           Reduce 717

-AT                              Reduce 717

-ElidedSemicolonAndRightBrace    Reduce 717

-$eof                            Reduce 717

-

-Default reduction to rule  717

-

-

-STATE 561 ----------------------------------------------------------------------

-( 320 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1183

-

-

-RelationalExpression ::= RelationalExpression LESS ShiftExpression . (716)

-

-UNSIGNED_RIGHT_SHIFT            Shift  311

-RIGHT_SHIFT                     Shift  312

-LEFT_SHIFT                      Shift  313

-

-abstract                        Reduce 716

-final                           Reduce 716

-instanceof                      Reduce 716

-native                          Reduce 716

-private                         Reduce 716

-protected                       Reduce 716

-public                          Reduce 716

-static                          Reduce 716

-strictfp                        Reduce 716

-synchronized                    Reduce 716

-transient                       Reduce 716

-volatile                        Reduce 716

-EQUAL_EQUAL                     Reduce 716

-LESS_EQUAL                      Reduce 716

-GREATER_EQUAL                   Reduce 716

-NOT_EQUAL                       Reduce 716

-OR_OR                           Reduce 716

-AND_AND                         Reduce 716

-XOR                             Reduce 716

-AND                             Reduce 716

-OR                              Reduce 716

-GREATER                         Reduce 716

-LESS                            Reduce 716

-RPAREN                          Reduce 716

-RBRACE                          Reduce 716

-RBRACKET                        Reduce 716

-SEMICOLON                       Reduce 716

-QUESTION                        Reduce 716

-COLON                           Reduce 716

-COMMA                           Reduce 716

-AT                              Reduce 716

-ElidedSemicolonAndRightBrace    Reduce 716

-$eof                            Reduce 716

-

-Default reduction to rule  716

-

-

-STATE 562 ----------------------------------------------------------------------

-( 321 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression ::= AndExpression AND EqualityExpression . (726)

-

-NOT_EQUAL                       Shift  322

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1184

-

-

-EQUAL_EQUAL                     Shift  323

-

-abstract                        Reduce 726

-final                           Reduce 726

-native                          Reduce 726

-private                         Reduce 726

-protected                       Reduce 726

-public                          Reduce 726

-static                          Reduce 726

-strictfp                        Reduce 726

-synchronized                    Reduce 726

-transient                       Reduce 726

-volatile                        Reduce 726

-OR_OR                           Reduce 726

-AND_AND                         Reduce 726

-XOR                             Reduce 726

-AND                             Reduce 726

-OR                              Reduce 726

-RPAREN                          Reduce 726

-RBRACE                          Reduce 726

-RBRACKET                        Reduce 726

-SEMICOLON                       Reduce 726

-QUESTION                        Reduce 726

-COLON                           Reduce 726

-COMMA                           Reduce 726

-AT                              Reduce 726

-ElidedSemicolonAndRightBrace    Reduce 726

-$eof                            Reduce 726

-

-Default reduction to rule  726

-

-

-STATE 563 ----------------------------------------------------------------------

-( 322 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= EqualityExpression NOT_EQUAL InstanceofExpression .

-                        (724)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 724

-final                           Reduce 724

-native                          Reduce 724

-private                         Reduce 724

-protected                       Reduce 724

-public                          Reduce 724

-static                          Reduce 724

-strictfp                        Reduce 724

-synchronized                    Reduce 724

-transient                       Reduce 724

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1185

-

-

-volatile                        Reduce 724

-EQUAL_EQUAL                     Reduce 724

-NOT_EQUAL                       Reduce 724

-OR_OR                           Reduce 724

-AND_AND                         Reduce 724

-XOR                             Reduce 724

-AND                             Reduce 724

-OR                              Reduce 724

-RPAREN                          Reduce 724

-RBRACE                          Reduce 724

-RBRACKET                        Reduce 724

-SEMICOLON                       Reduce 724

-QUESTION                        Reduce 724

-COLON                           Reduce 724

-COMMA                           Reduce 724

-AT                              Reduce 724

-ElidedSemicolonAndRightBrace    Reduce 724

-$eof                            Reduce 724

-

-Default reduction to rule  724

-

-

-STATE 564 ----------------------------------------------------------------------

-( 323 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression ::= EqualityExpression EQUAL_EQUAL InstanceofExpression .

-                        (723)

-

-instanceof                      Shift  316

-

-abstract                        Reduce 723

-final                           Reduce 723

-native                          Reduce 723

-private                         Reduce 723

-protected                       Reduce 723

-public                          Reduce 723

-static                          Reduce 723

-strictfp                        Reduce 723

-synchronized                    Reduce 723

-transient                       Reduce 723

-volatile                        Reduce 723

-EQUAL_EQUAL                     Reduce 723

-NOT_EQUAL                       Reduce 723

-OR_OR                           Reduce 723

-AND_AND                         Reduce 723

-XOR                             Reduce 723

-AND                             Reduce 723

-OR                              Reduce 723

-RPAREN                          Reduce 723

-RBRACE                          Reduce 723

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1186

-

-

-RBRACKET                        Reduce 723

-SEMICOLON                       Reduce 723

-QUESTION                        Reduce 723

-COLON                           Reduce 723

-COMMA                           Reduce 723

-AT                              Reduce 723

-ElidedSemicolonAndRightBrace    Reduce 723

-$eof                            Reduce 723

-

-Default reduction to rule  723

-

-

-STATE 565 ----------------------------------------------------------------------

-( 324 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression ::= InclusiveOrExpression OR ExclusiveOrExpression .

-                           (730)

-

-XOR                             Shift  325

-

-abstract                        Reduce 730

-final                           Reduce 730

-native                          Reduce 730

-private                         Reduce 730

-protected                       Reduce 730

-public                          Reduce 730

-static                          Reduce 730

-strictfp                        Reduce 730

-synchronized                    Reduce 730

-transient                       Reduce 730

-volatile                        Reduce 730

-OR_OR                           Reduce 730

-AND_AND                         Reduce 730

-OR                              Reduce 730

-RPAREN                          Reduce 730

-RBRACE                          Reduce 730

-RBRACKET                        Reduce 730

-SEMICOLON                       Reduce 730

-QUESTION                        Reduce 730

-COLON                           Reduce 730

-COMMA                           Reduce 730

-AT                              Reduce 730

-ElidedSemicolonAndRightBrace    Reduce 730

-$eof                            Reduce 730

-

-Default reduction to rule  730

-

-

-STATE 566 ----------------------------------------------------------------------

-( 325 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1187

-

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression ::= ExclusiveOrExpression XOR AndExpression . (728)

-

-AND                             Shift  321

-

-abstract                        Reduce 728

-final                           Reduce 728

-native                          Reduce 728

-private                         Reduce 728

-protected                       Reduce 728

-public                          Reduce 728

-static                          Reduce 728

-strictfp                        Reduce 728

-synchronized                    Reduce 728

-transient                       Reduce 728

-volatile                        Reduce 728

-OR_OR                           Reduce 728

-AND_AND                         Reduce 728

-XOR                             Reduce 728

-OR                              Reduce 728

-RPAREN                          Reduce 728

-RBRACE                          Reduce 728

-RBRACKET                        Reduce 728

-SEMICOLON                       Reduce 728

-QUESTION                        Reduce 728

-COLON                           Reduce 728

-COMMA                           Reduce 728

-AT                              Reduce 728

-ElidedSemicolonAndRightBrace    Reduce 728

-$eof                            Reduce 728

-

-Default reduction to rule  728

-

-

-STATE 567 ----------------------------------------------------------------------

-( 326 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression  .COLON 

-                          ConditionalExpression 

-

-COLON    Shift  751

-

-

-STATE 568 ----------------------------------------------------------------------

-( 327 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression . (734)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1188

-

-

-AND_AND                         Shift  328

-

-abstract                        Reduce 734

-final                           Reduce 734

-native                          Reduce 734

-private                         Reduce 734

-protected                       Reduce 734

-public                          Reduce 734

-static                          Reduce 734

-strictfp                        Reduce 734

-synchronized                    Reduce 734

-transient                       Reduce 734

-volatile                        Reduce 734

-OR_OR                           Reduce 734

-RPAREN                          Reduce 734

-RBRACE                          Reduce 734

-RBRACKET                        Reduce 734

-SEMICOLON                       Reduce 734

-QUESTION                        Reduce 734

-COLON                           Reduce 734

-COMMA                           Reduce 734

-AT                              Reduce 734

-ElidedSemicolonAndRightBrace    Reduce 734

-$eof                            Reduce 734

-

-Default reduction to rule  734

-

-

-STATE 569 ----------------------------------------------------------------------

-( 328 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression ::= ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression . (732)

-

-OR                              Shift  324

-

-abstract                        Reduce 732

-final                           Reduce 732

-native                          Reduce 732

-private                         Reduce 732

-protected                       Reduce 732

-public                          Reduce 732

-static                          Reduce 732

-strictfp                        Reduce 732

-synchronized                    Reduce 732

-transient                       Reduce 732

-volatile                        Reduce 732

-OR_OR                           Reduce 732

-AND_AND                         Reduce 732

-RPAREN                          Reduce 732

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1189

-

-

-RBRACE                          Reduce 732

-RBRACKET                        Reduce 732

-SEMICOLON                       Reduce 732

-QUESTION                        Reduce 732

-COLON                           Reduce 732

-COMMA                           Reduce 732

-AT                              Reduce 732

-ElidedSemicolonAndRightBrace    Reduce 732

-$eof                            Reduce 732

-

-Default reduction to rule  732

-

-

-STATE 570 ----------------------------------------------------------------------

-( 329 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace ,opt  .RBRACE 

-

-RBRACE    Sh/Rd  461

-

-

-STATE 571 ----------------------------------------------------------------------

-( 329 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .RBRACE 

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers  .COMMA RBRACE 

-VariableInitializers ::= VariableInitializers  .COMMA VariableInitializer 

-

-COMMA     Shift  752

-RBRACE    Sh/Rd  462

-

-

-STATE 572 ----------------------------------------------------------------------

-( 330 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1190

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   753

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 573 ----------------------------------------------------------------------

-( 332 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1191

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   754

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 574 ----------------------------------------------------------------------

-( 333 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault Type Identifier  .LPAREN 

-

-LPAREN    Sh/Rd  395

-

-

-STATE 575 ----------------------------------------------------------------------

-( 334 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                            Identifier LPAREN 

-

-Identifier    Shift  755

-

-

-STATE 576 ----------------------------------------------------------------------

-( 335 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1192

-

-

-                        MethodHeaderRightParen  .SEMICOLON 

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen  .COLON PseudoTokens SEMICOLON 

-

-COLON        Shift  756

-SEMICOLON    Sh/Rd  221

-

-

-STATE 577 ----------------------------------------------------------------------

-( 336 )

-

-AspectHeader ::= AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt  .AspectHeaderRest 

-

-AspectHeaderRest ::= . (192)

-AspectHeaderRest ::= .AspectHeaderRestStart PseudoTokens 

-AspectHeaderRestStart ::= .Identifier 

-

-Identifier               Sh/Rd  194

-

-AspectHeaderRestStart    Goto   757

-AspectHeaderRest         Gt/Rd  185

-

-LBRACE                   Reduce 192

-

-Default reduction to rule  192

-

-

-STATE 578 ----------------------------------------------------------------------

-( 337 )

-

-AspectBody ::= LBRACE AspectBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  195

-

-

-STATE 579 ----------------------------------------------------------------------

-( 337 )

-

-AspectBodyDeclarationsopt ::= NestedType  .AspectBodyDeclarations 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1193

-

-

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-AspectBodyDeclarations ::= .AspectBodyDeclaration 

-AspectBodyDeclarations ::= .AspectBodyDeclarations AspectBodyDeclaration 

-AspectBodyDeclaration ::= .ClassBodyDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .ClassMemberDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .StaticInitializer 

-ClassBodyDeclarationNoAroundMethod ::= .ConstructorDeclaration 

-ClassBodyDeclarationNoAroundMethod ::= .Diet NestedMethod CreateInitializer 

-                                       Block 

-ClassMemberDeclarationNoAroundMethod ::= .PointcutDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AspectDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .FieldDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .MethodDeclarationNoAround 

-ClassMemberDeclarationNoAroundMethod ::= .ClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .InterfaceDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .IntertypeClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .EnumDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AnnotationTypeDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .SEMICOLON 

-MethodDeclarationNoAround ::= .AbstractMethodDeclarationNoAround 

-MethodDeclarationNoAround ::= .MethodHeaderNoAround MethodBody 

-AbstractMethodDeclarationNoAround ::= .MethodHeaderNoAround SEMICOLON 

-MethodHeaderNoAround ::= .MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-MethodHeaderNameNoAround ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AspectBodyDeclaration ::= .AroundDeclaration 

-AspectBodyDeclaration ::= .BasicAdviceDeclaration 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1194

-

-

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-AspectBodyDeclaration ::= .InterTypeMethodDeclaration 

-AspectBodyDeclaration ::= .InterTypeConstructorDeclaration 

-AspectBodyDeclaration ::= .InterTypeFieldDeclaration 

-InterTypeMethodDeclaration ::= .AbstractInterTypeMethodDeclaration 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeConstructorDeclaration ::= .InterTypeConstructorHeader MethodBody 

-InterTypeConstructorHeader ::= .InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters GenericType DOT 

-                                   new LPAREN 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1195

-

-

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-AspectBodyDeclaration ::= .DeclareDeclaration 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassDeclaration ::= .ClassHeader ClassBody 

-IntertypeClassDeclaration ::= .IntertypeClassHeader ClassBody 

-IntertypeClassHeader ::= .IntertypeClassHeaderName ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 TypeParameters 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 

-IntertypeClassHeaderName1 ::= .Modifiersopt class OnType DOT JavaIdentifier 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1196

-

-

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                                Shift  1064

-volatile                                Shift  1064

-transient                               Shift  1064

-synchronized                            Shift  1064

-native                                  Shift  1064

-final                                   Shift  1064

-abstract                                Shift  1064

-static                                  Shift  131

-private                                 Shift  1064

-protected                               Shift  1064

-public                                  Shift  1064

-AT                                      Shift  80

-SEMICOLON                               Sh/Rd  214

-declare                                 Shift  183

-

-ClassBodyDeclarationNoAroundMethod      Gt/Rd  200

-AroundDeclaration                       Goto   1237

-BasicAdviceDeclaration                  Goto   1237

-InterTypeMethodDeclaration              Goto   1237

-InterTypeConstructorDeclaration         Goto   1237

-InterTypeFieldDeclaration               Goto   1237

-DeclareDeclaration                      Goto   1237

-DeclareHeader                           Goto   182

-DeclareAnnotationHeader                 Goto   181

-Modifiersopt                            Goto   767

-InterTypeFieldHeader                    Goto   186

-InterTypeConstructorHeaderName          Goto   766

-InterTypeConstructorHeader              Goto   765

-InterTypeMethodHeader                   Goto   185

-InterTypeMethodHeaderName               Goto   184

-AbstractInterTypeMethodDeclaration      Goto   1237

-BeforeAdviceHeader                      Goto   187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1197

-

-

-AfterAdviceHeader                       Goto   187

-AfterAdviceHeaderName                   Goto   189

-BeforeAdviceHeaderName                  Goto   188

-BasicAdviceHeader                       Goto   187

-AroundHeaderName                        Goto   191

-AroundHeader                            Goto   190

-PointcutDeclaration                     Goto   1236

-AspectDeclaration                       Goto   1236

-FieldDeclaration                        Goto   1236

-MethodDeclarationNoAround               Goto   1236

-ClassDeclaration                        Goto   1236

-InterfaceDeclaration                    Goto   1236

-IntertypeClassDeclaration               Goto   1236

-EnumDeclaration                         Goto   1236

-AnnotationTypeDeclaration               Goto   1236

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   126

-AnnotationTypeDeclarationHeader         Goto   32

-EnumHeaderName                          Goto   29

-EnumHeader                              Goto   30

-IntertypeClassHeaderName                Goto   764

-IntertypeClassHeaderName1               Goto   763

-IntertypeClassHeader                    Goto   762

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-MethodHeaderNoAround                    Goto   761

-MethodHeaderNameNoAround                Goto   760

-AbstractMethodDeclarationNoAround       Goto   1236

-AspectHeaderName                        Goto   125

-AspectHeaderName1                       Goto   128

-AspectHeaderName2                       Goto   127

-AspectHeader                            Goto   129

-Modifier                                Goto   1064

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1064

-Annotation                              Gt/Rd  171

-PointcutHeader                          Goto   124

-StaticOnly                              Goto   130

-ConstructorHeader                       Goto   132

-ConstructorHeaderName                   Goto   134

-ClassMemberDeclarationNoAroundMethod    Goto   1236

-StaticInitializer                       Goto   1236

-ConstructorDeclaration                  Goto   1236

-Diet                                    Goto   759

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1198

-

-

-AspectBodyDeclaration                   Gt/Rd  196

-AspectBodyDeclarations                  Goto   758

-

-LBRACE                                  Reduce 361

-Identifier                              Reduce 764

-boolean                                 Reduce 764

-byte                                    Reduce 764

-char                                    Reduce 764

-class                                   Reduce 764

-double                                  Reduce 764

-enum                                    Reduce 764

-float                                   Reduce 764

-int                                     Reduce 764

-interface                               Reduce 764

-long                                    Reduce 764

-short                                   Reduce 764

-void                                    Reduce 764

-aspect                                  Reduce 764

-pointcut                                Reduce 764

-around                                  Reduce 764

-before                                  Reduce 764

-after                                   Reduce 764

-privileged                              Reduce 764

-LESS                                    Reduce 764

-AT308                                   Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 580 ----------------------------------------------------------------------

-( 339 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters Type  .JavaIdentifier LPAREN 

-

-Identifier              Shift  768

-declare                 Shift  768

-after                   Shift  768

-before                  Shift  768

-pointcut                Shift  768

-privileged              Shift  768

-aspect                  Shift  768

-around                  Shift  768

-

-AjSimpleNameNoAround    Goto   768

-AjSimpleName            Goto   768

-JavaIdentifier          Goto   768

-

-

-STATE 581 ----------------------------------------------------------------------

-( 339 351 430 871 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1199

-

-

-SimpleName ::= Identifier . (87)

-ConstructorHeaderName ::= Modifiersopt TypeParameters Identifier  .LPAREN 

-

-LPAREN        Sh/Rd  401

-

-Identifier    Reduce 84

-aspect        Reduce 84

-pointcut      Reduce 84

-around        Reduce 84

-before        Reduce 84

-after         Reduce 84

-declare       Reduce 84

-privileged    Reduce 84

-LESS          Reduce 84

-LBRACKET      Reduce 84

-DOT           Reduce 84

-AT308         Reduce 84

-

-Default reduction to rule  87

-

-

-STATE 582 ----------------------------------------------------------------------

-( 340 352 404 428 870 )

-

-FieldDeclaration ::= Modifiersopt Type VariableDeclarators  .SEMICOLON 

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-

-COMMA        Shift  730

-SEMICOLON    Sh/Rd  373

-

-

-STATE 583 ----------------------------------------------------------------------

-( 340 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-MethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1200

-

-

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LPAREN                        Sh/Rd  393

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 584 ----------------------------------------------------------------------

-( 341 )

-

-PointcutHeader ::= Modifiersopt pointcut JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  223

-

-

-STATE 585 ----------------------------------------------------------------------

-( 342 )

-

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt  .aspect Identifier 

-

-aspect    Shift  769

-

-

-STATE 586 ----------------------------------------------------------------------

-( 345 )

-

-ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen  .MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1201

-

-

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  400

-MethodHeaderThrowsClauseopt    Gt/Rd  400

-

-abstract                       Reduce 772

-final                          Reduce 772

-native                         Reduce 772

-private                        Reduce 772

-protected                      Reduce 772

-public                         Reduce 772

-static                         Reduce 772

-strictfp                       Reduce 772

-synchronized                   Reduce 772

-transient                      Reduce 772

-volatile                       Reduce 772

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-AT                             Reduce 772

-$eof                           Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 587 ----------------------------------------------------------------------

-( 346 )

-

-ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  360

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 588 ----------------------------------------------------------------------

-( 348 )

-

-MethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  393

-

-

-STATE 589 ----------------------------------------------------------------------

-( 350 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1202

-

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PackageDeclarationName ::= PackageComment package Name  .RejectTypeAnnotations 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  445

-

-RejectTypeAnnotations    Gt/Rd  142

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 590 ----------------------------------------------------------------------

-( 351 )

-

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                               JavaIdentifier LPAREN 

-

-Identifier              Shift  771

-declare                 Shift  771

-after                   Shift  771

-before                  Shift  771

-pointcut                Shift  771

-privileged              Shift  771

-aspect                  Shift  771

-around                  Shift  771

-

-AjSimpleNameNoAround    Goto   771

-AjSimpleName            Goto   771

-JavaIdentifier          Goto   771

-

-

-STATE 591 ----------------------------------------------------------------------

-( 352 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-AnnotationMethodHeaderName ::= Modifiersopt Type JavaIdentifier  .LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1203

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LPAREN                        Sh/Rd  956

-AT308                         Shift  22

-LBRACKET                      Shift  208

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 592 ----------------------------------------------------------------------

-( 353 )

-

-PackageDeclarationName ::= Modifiers package PushRealModifiers  .Name 

-                           RejectTypeAnnotations 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1204

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   772

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   772

-

-

-STATE 593 ----------------------------------------------------------------------

-( 354 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1205

-

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   773

-

-default                       Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 594 ----------------------------------------------------------------------

-( 355 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-SingleStaticImportDeclarationName ::= import static Name  .

-                                      RejectTypeAnnotations 

-StaticImportOnDemandDeclarationName ::= import static Name  .DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  774

-

-RejectTypeAnnotations    Gt/Rd  815

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 595 ----------------------------------------------------------------------

-( 356 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-TypeImportOnDemandDeclarationName ::= import Name DOT  .RejectTypeAnnotations 

-                                      MULTIPLY 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1206

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-RejectTypeAnnotations ::= . (104)

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-RejectTypeAnnotations         Goto   775

-

-MULTIPLY                      Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 596 ----------------------------------------------------------------------

-( 357 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .MemberValues RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace  .RBRACE 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1207

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1208

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1209

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1210

-

-

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1211

-

-

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MemberValues ::= .MemberValues COMMA MemberValue 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1212

-

-

-RBRACE                                  Sh/Rd  984

-COMMA                                   Shift  776

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1238

-true                                    Shift  1238

-null                                    Shift  1238

-StringLiteral                           Shift  1238

-CharacterLiteral                        Shift  1238

-DoubleLiteral                           Shift  1238

-FloatingPointLiteral                    Shift  1238

-LongLiteral                             Shift  1238

-IntegerLiteral                          Shift  1238

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalExpression_NotName           Goto   777

-NameOrAj                                Goto   171

-Annotation                              Goto   777

-MemberValueArrayInitializer             Goto   777

-EnterMemberValueArrayInitializer        Goto   151

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   777

-MarkerAnnotation                        Goto   777

-SingleMemberAnnotation                  Goto   777

-ConditionalAndExpression_NotName        Goto   169

-ConditionalOrExpression_NotName         Goto   172

-ExclusiveOrExpression_NotName           Goto   167

-InclusiveOrExpression_NotName           Goto   170

-EqualityExpression_NotName              Goto   165

-AndExpression_NotName                   Goto   168

-RelationalExpression_NotName            Goto   162

-InstanceofExpression_NotName            Goto   166

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1213

-

-

-AdditiveExpression_NotName              Goto   160

-ShiftExpression_NotName                 Goto   164

-UnaryExpression_NotName                 Goto   1239

-MultiplicativeExpression_NotName        Goto   161

-PostfixExpression_NotName               Goto   1239

-CastExpression                          Goto   1239

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1246

-BooleanLiteral                          Goto   1238

-Primary                                 Goto   157

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1069

-Name                                    Goto   163

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1238

-ClassInstanceCreationExpression         Goto   1245

-FieldAccess                             Goto   1244

-MethodInvocation                        Goto   1243

-ArrayAccess                             Goto   1242

-LambdaExpression                        Goto   1241

-ReferenceExpression                     Goto   1240

-PostfixExpression                       Goto   154

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PreIncrementExpression                  Goto   1239

-PreDecrementExpression                  Goto   1239

-UnaryExpressionNotPlusMinus_NotName     Goto   1239

-MemberValue                             Goto   777

-MemberValues                            Goto   777

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1214

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 985

-

-Default reduction to rule  92

-

-

-STATE 597 ----------------------------------------------------------------------

-( 362 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression . (897)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 897

-final                   Reduce 897

-instanceof              Reduce 897

-native                  Reduce 897

-private                 Reduce 897

-protected               Reduce 897

-public                  Reduce 897

-static                  Reduce 897

-strictfp                Reduce 897

-synchronized            Reduce 897

-transient               Reduce 897

-volatile                Reduce 897

-EQUAL_EQUAL             Reduce 897

-LESS_EQUAL              Reduce 897

-GREATER_EQUAL           Reduce 897

-NOT_EQUAL               Reduce 897

-LEFT_SHIFT              Reduce 897

-RIGHT_SHIFT             Reduce 897

-UNSIGNED_RIGHT_SHIFT    Reduce 897

-OR_OR                   Reduce 897

-AND_AND                 Reduce 897

-PLUS                    Reduce 897

-MINUS                   Reduce 897

-XOR                     Reduce 897

-AND                     Reduce 897

-OR                      Reduce 897

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1215

-

-

-GREATER                 Reduce 897

-LESS                    Reduce 897

-RPAREN                  Reduce 897

-RBRACE                  Reduce 897

-SEMICOLON               Reduce 897

-QUESTION                Reduce 897

-COMMA                   Reduce 897

-AT                      Reduce 897

-$eof                    Reduce 897

-

-Default reduction to rule  897

-

-

-STATE 598 ----------------------------------------------------------------------

-( 363 )

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression . (895)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 895

-final                   Reduce 895

-instanceof              Reduce 895

-native                  Reduce 895

-private                 Reduce 895

-protected               Reduce 895

-public                  Reduce 895

-static                  Reduce 895

-strictfp                Reduce 895

-synchronized            Reduce 895

-transient               Reduce 895

-volatile                Reduce 895

-EQUAL_EQUAL             Reduce 895

-LESS_EQUAL              Reduce 895

-GREATER_EQUAL           Reduce 895

-NOT_EQUAL               Reduce 895

-LEFT_SHIFT              Reduce 895

-RIGHT_SHIFT             Reduce 895

-UNSIGNED_RIGHT_SHIFT    Reduce 895

-OR_OR                   Reduce 895

-AND_AND                 Reduce 895

-PLUS                    Reduce 895

-MINUS                   Reduce 895

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1216

-

-

-XOR                     Reduce 895

-AND                     Reduce 895

-OR                      Reduce 895

-GREATER                 Reduce 895

-LESS                    Reduce 895

-RPAREN                  Reduce 895

-RBRACE                  Reduce 895

-SEMICOLON               Reduce 895

-QUESTION                Reduce 895

-COMMA                   Reduce 895

-AT                      Reduce 895

-$eof                    Reduce 895

-

-Default reduction to rule  895

-

-

-STATE 599 ----------------------------------------------------------------------

-( 367 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression . (913)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 913

-final                   Reduce 913

-instanceof              Reduce 913

-native                  Reduce 913

-private                 Reduce 913

-protected               Reduce 913

-public                  Reduce 913

-static                  Reduce 913

-strictfp                Reduce 913

-synchronized            Reduce 913

-transient               Reduce 913

-volatile                Reduce 913

-EQUAL_EQUAL             Reduce 913

-LESS_EQUAL              Reduce 913

-GREATER_EQUAL           Reduce 913

-NOT_EQUAL               Reduce 913

-OR_OR                   Reduce 913

-AND_AND                 Reduce 913

-XOR                     Reduce 913

-AND                     Reduce 913

-OR                      Reduce 913

-RPAREN                  Reduce 913

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1217

-

-

-RBRACE                  Reduce 913

-SEMICOLON               Reduce 913

-QUESTION                Reduce 913

-COMMA                   Reduce 913

-AT                      Reduce 913

-$eof                    Reduce 913

-

-Default reduction to rule  913

-

-

-STATE 600 ----------------------------------------------------------------------

-( 368 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression . (911)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 911

-final                   Reduce 911

-instanceof              Reduce 911

-native                  Reduce 911

-private                 Reduce 911

-protected               Reduce 911

-public                  Reduce 911

-static                  Reduce 911

-strictfp                Reduce 911

-synchronized            Reduce 911

-transient               Reduce 911

-volatile                Reduce 911

-EQUAL_EQUAL             Reduce 911

-LESS_EQUAL              Reduce 911

-GREATER_EQUAL           Reduce 911

-NOT_EQUAL               Reduce 911

-OR_OR                   Reduce 911

-AND_AND                 Reduce 911

-XOR                     Reduce 911

-AND                     Reduce 911

-OR                      Reduce 911

-RPAREN                  Reduce 911

-RBRACE                  Reduce 911

-SEMICOLON               Reduce 911

-QUESTION                Reduce 911

-COMMA                   Reduce 911

-AT                      Reduce 911

-$eof                    Reduce 911

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1218

-

-

-

-Default reduction to rule  911

-

-

-STATE 601 ----------------------------------------------------------------------

-( 369 552 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= Name LESS ShiftExpression . (908)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 908

-final                   Reduce 908

-instanceof              Reduce 908

-native                  Reduce 908

-private                 Reduce 908

-protected               Reduce 908

-public                  Reduce 908

-static                  Reduce 908

-strictfp                Reduce 908

-synchronized            Reduce 908

-transient               Reduce 908

-volatile                Reduce 908

-EQUAL_EQUAL             Reduce 908

-LESS_EQUAL              Reduce 908

-GREATER_EQUAL           Reduce 908

-NOT_EQUAL               Reduce 908

-OR_OR                   Reduce 908

-AND_AND                 Reduce 908

-XOR                     Reduce 908

-AND                     Reduce 908

-OR                      Reduce 908

-RPAREN                  Reduce 908

-RBRACE                  Reduce 908

-SEMICOLON               Reduce 908

-QUESTION                Reduce 908

-COMMA                   Reduce 908

-AT                      Reduce 908

-$eof                    Reduce 908

-

-Default reduction to rule  908

-

-

-STATE 602 ----------------------------------------------------------------------

-( 370 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1219

-

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName GREATER 

-                                 ShiftExpression . (909)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 909

-final                   Reduce 909

-instanceof              Reduce 909

-native                  Reduce 909

-private                 Reduce 909

-protected               Reduce 909

-public                  Reduce 909

-static                  Reduce 909

-strictfp                Reduce 909

-synchronized            Reduce 909

-transient               Reduce 909

-volatile                Reduce 909

-EQUAL_EQUAL             Reduce 909

-LESS_EQUAL              Reduce 909

-GREATER_EQUAL           Reduce 909

-NOT_EQUAL               Reduce 909

-OR_OR                   Reduce 909

-AND_AND                 Reduce 909

-XOR                     Reduce 909

-AND                     Reduce 909

-OR                      Reduce 909

-RPAREN                  Reduce 909

-RBRACE                  Reduce 909

-SEMICOLON               Reduce 909

-QUESTION                Reduce 909

-COMMA                   Reduce 909

-AT                      Reduce 909

-$eof                    Reduce 909

-

-Default reduction to rule  909

-

-

-STATE 603 ----------------------------------------------------------------------

-( 371 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= ShiftExpression_NotName LESS 

-                                 ShiftExpression . (907)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1220

-

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 907

-final                   Reduce 907

-instanceof              Reduce 907

-native                  Reduce 907

-private                 Reduce 907

-protected               Reduce 907

-public                  Reduce 907

-static                  Reduce 907

-strictfp                Reduce 907

-synchronized            Reduce 907

-transient               Reduce 907

-volatile                Reduce 907

-EQUAL_EQUAL             Reduce 907

-LESS_EQUAL              Reduce 907

-GREATER_EQUAL           Reduce 907

-NOT_EQUAL               Reduce 907

-OR_OR                   Reduce 907

-AND_AND                 Reduce 907

-XOR                     Reduce 907

-AND                     Reduce 907

-OR                      Reduce 907

-RPAREN                  Reduce 907

-RBRACE                  Reduce 907

-SEMICOLON               Reduce 907

-QUESTION                Reduce 907

-COMMA                   Reduce 907

-AT                      Reduce 907

-$eof                    Reduce 907

-

-Default reduction to rule  907

-

-

-STATE 604 ----------------------------------------------------------------------

-( 372 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression . (904)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 904

-final                   Reduce 904

-instanceof              Reduce 904

-native                  Reduce 904

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1221

-

-

-private                 Reduce 904

-protected               Reduce 904

-public                  Reduce 904

-static                  Reduce 904

-strictfp                Reduce 904

-synchronized            Reduce 904

-transient               Reduce 904

-volatile                Reduce 904

-EQUAL_EQUAL             Reduce 904

-LESS_EQUAL              Reduce 904

-GREATER_EQUAL           Reduce 904

-NOT_EQUAL               Reduce 904

-LEFT_SHIFT              Reduce 904

-RIGHT_SHIFT             Reduce 904

-UNSIGNED_RIGHT_SHIFT    Reduce 904

-OR_OR                   Reduce 904

-AND_AND                 Reduce 904

-XOR                     Reduce 904

-AND                     Reduce 904

-OR                      Reduce 904

-GREATER                 Reduce 904

-LESS                    Reduce 904

-RPAREN                  Reduce 904

-RBRACE                  Reduce 904

-SEMICOLON               Reduce 904

-QUESTION                Reduce 904

-COMMA                   Reduce 904

-AT                      Reduce 904

-$eof                    Reduce 904

-

-Default reduction to rule  904

-

-

-STATE 605 ----------------------------------------------------------------------

-( 373 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression . (902)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 902

-final                   Reduce 902

-instanceof              Reduce 902

-native                  Reduce 902

-private                 Reduce 902

-protected               Reduce 902

-public                  Reduce 902

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1222

-

-

-static                  Reduce 902

-strictfp                Reduce 902

-synchronized            Reduce 902

-transient               Reduce 902

-volatile                Reduce 902

-EQUAL_EQUAL             Reduce 902

-LESS_EQUAL              Reduce 902

-GREATER_EQUAL           Reduce 902

-NOT_EQUAL               Reduce 902

-LEFT_SHIFT              Reduce 902

-RIGHT_SHIFT             Reduce 902

-UNSIGNED_RIGHT_SHIFT    Reduce 902

-OR_OR                   Reduce 902

-AND_AND                 Reduce 902

-XOR                     Reduce 902

-AND                     Reduce 902

-OR                      Reduce 902

-GREATER                 Reduce 902

-LESS                    Reduce 902

-RPAREN                  Reduce 902

-RBRACE                  Reduce 902

-SEMICOLON               Reduce 902

-QUESTION                Reduce 902

-COMMA                   Reduce 902

-AT                      Reduce 902

-$eof                    Reduce 902

-

-Default reduction to rule  902

-

-

-STATE 606 ----------------------------------------------------------------------

-( 374 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression . (900)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 900

-final                   Reduce 900

-instanceof              Reduce 900

-native                  Reduce 900

-private                 Reduce 900

-protected               Reduce 900

-public                  Reduce 900

-static                  Reduce 900

-strictfp                Reduce 900

-synchronized            Reduce 900

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1223

-

-

-transient               Reduce 900

-volatile                Reduce 900

-EQUAL_EQUAL             Reduce 900

-LESS_EQUAL              Reduce 900

-GREATER_EQUAL           Reduce 900

-NOT_EQUAL               Reduce 900

-LEFT_SHIFT              Reduce 900

-RIGHT_SHIFT             Reduce 900

-UNSIGNED_RIGHT_SHIFT    Reduce 900

-OR_OR                   Reduce 900

-AND_AND                 Reduce 900

-XOR                     Reduce 900

-AND                     Reduce 900

-OR                      Reduce 900

-GREATER                 Reduce 900

-LESS                    Reduce 900

-RPAREN                  Reduce 900

-RBRACE                  Reduce 900

-SEMICOLON               Reduce 900

-QUESTION                Reduce 900

-COMMA                   Reduce 900

-AT                      Reduce 900

-$eof                    Reduce 900

-

-Default reduction to rule  900

-

-

-STATE 607 ----------------------------------------------------------------------

-( 375 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression . (921)

-

-instanceof      Shift  316

-

-abstract        Reduce 921

-final           Reduce 921

-native          Reduce 921

-private         Reduce 921

-protected       Reduce 921

-public          Reduce 921

-static          Reduce 921

-strictfp        Reduce 921

-synchronized    Reduce 921

-transient       Reduce 921

-volatile        Reduce 921

-EQUAL_EQUAL     Reduce 921

-NOT_EQUAL       Reduce 921

-OR_OR           Reduce 921

-AND_AND         Reduce 921

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1224

-

-

-XOR             Reduce 921

-AND             Reduce 921

-OR              Reduce 921

-RPAREN          Reduce 921

-RBRACE          Reduce 921

-SEMICOLON       Reduce 921

-QUESTION        Reduce 921

-COMMA           Reduce 921

-AT              Reduce 921

-$eof            Reduce 921

-

-Default reduction to rule  921

-

-

-STATE 608 ----------------------------------------------------------------------

-( 376 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression . (919)

-

-instanceof      Shift  316

-

-abstract        Reduce 919

-final           Reduce 919

-native          Reduce 919

-private         Reduce 919

-protected       Reduce 919

-public          Reduce 919

-static          Reduce 919

-strictfp        Reduce 919

-synchronized    Reduce 919

-transient       Reduce 919

-volatile        Reduce 919

-EQUAL_EQUAL     Reduce 919

-NOT_EQUAL       Reduce 919

-OR_OR           Reduce 919

-AND_AND         Reduce 919

-XOR             Reduce 919

-AND             Reduce 919

-OR              Reduce 919

-RPAREN          Reduce 919

-RBRACE          Reduce 919

-SEMICOLON       Reduce 919

-QUESTION        Reduce 919

-COMMA           Reduce 919

-AT              Reduce 919

-$eof            Reduce 919

-

-Default reduction to rule  919

-

-

-STATE 609 ----------------------------------------------------------------------

-( 378 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1225

-

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName XOR 

-                                  AndExpression . (927)

-

-AND             Shift  321

-

-abstract        Reduce 927

-final           Reduce 927

-native          Reduce 927

-private         Reduce 927

-protected       Reduce 927

-public          Reduce 927

-static          Reduce 927

-strictfp        Reduce 927

-synchronized    Reduce 927

-transient       Reduce 927

-volatile        Reduce 927

-OR_OR           Reduce 927

-AND_AND         Reduce 927

-XOR             Reduce 927

-OR              Reduce 927

-RPAREN          Reduce 927

-RBRACE          Reduce 927

-SEMICOLON       Reduce 927

-QUESTION        Reduce 927

-COMMA           Reduce 927

-AT              Reduce 927

-$eof            Reduce 927

-

-Default reduction to rule  927

-

-

-STATE 610 ----------------------------------------------------------------------

-( 379 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= AndExpression_NotName AND EqualityExpression . (924)

-

-NOT_EQUAL       Shift  322

-EQUAL_EQUAL     Shift  323

-

-abstract        Reduce 924

-final           Reduce 924

-native          Reduce 924

-private         Reduce 924

-protected       Reduce 924

-public          Reduce 924

-static          Reduce 924

-strictfp        Reduce 924

-synchronized    Reduce 924

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1226

-

-

-transient       Reduce 924

-volatile        Reduce 924

-OR_OR           Reduce 924

-AND_AND         Reduce 924

-XOR             Reduce 924

-AND             Reduce 924

-OR              Reduce 924

-RPAREN          Reduce 924

-RBRACE          Reduce 924

-SEMICOLON       Reduce 924

-QUESTION        Reduce 924

-COMMA           Reduce 924

-AT              Reduce 924

-$eof            Reduce 924

-

-Default reduction to rule  924

-

-

-STATE 611 ----------------------------------------------------------------------

-( 380 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName 

-                                     AND_AND InclusiveOrExpression . (933)

-

-OR              Shift  324

-

-abstract        Reduce 933

-final           Reduce 933

-native          Reduce 933

-private         Reduce 933

-protected       Reduce 933

-public          Reduce 933

-static          Reduce 933

-strictfp        Reduce 933

-synchronized    Reduce 933

-transient       Reduce 933

-volatile        Reduce 933

-OR_OR           Reduce 933

-AND_AND         Reduce 933

-RPAREN          Reduce 933

-RBRACE          Reduce 933

-SEMICOLON       Reduce 933

-QUESTION        Reduce 933

-COMMA           Reduce 933

-AT              Reduce 933

-$eof            Reduce 933

-

-Default reduction to rule  933

-

-

-STATE 612 ----------------------------------------------------------------------

-( 381 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1227

-

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression . (930)

-

-XOR             Shift  325

-

-abstract        Reduce 930

-final           Reduce 930

-native          Reduce 930

-private         Reduce 930

-protected       Reduce 930

-public          Reduce 930

-static          Reduce 930

-strictfp        Reduce 930

-synchronized    Reduce 930

-transient       Reduce 930

-volatile        Reduce 930

-OR_OR           Reduce 930

-AND_AND         Reduce 930

-OR              Reduce 930

-RPAREN          Reduce 930

-RBRACE          Reduce 930

-SEMICOLON       Reduce 930

-QUESTION        Reduce 930

-COMMA           Reduce 930

-AT              Reduce 930

-$eof            Reduce 930

-

-Default reduction to rule  930

-

-

-STATE 613 ----------------------------------------------------------------------

-( 382 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression  .COLON 

-                                  ConditionalExpression 

-

-COLON    Shift  778

-

-

-STATE 614 ----------------------------------------------------------------------

-( 383 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= NameOrAj OR_OR ConditionalAndExpression .

-                                     (937)

-

-AND_AND         Shift  328

-

-abstract        Reduce 937

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1228

-

-

-final           Reduce 937

-native          Reduce 937

-private         Reduce 937

-protected       Reduce 937

-public          Reduce 937

-static          Reduce 937

-strictfp        Reduce 937

-synchronized    Reduce 937

-transient       Reduce 937

-volatile        Reduce 937

-OR_OR           Reduce 937

-RPAREN          Reduce 937

-RBRACE          Reduce 937

-SEMICOLON       Reduce 937

-QUESTION        Reduce 937

-COMMA           Reduce 937

-AT              Reduce 937

-$eof            Reduce 937

-

-Default reduction to rule  937

-

-

-STATE 615 ----------------------------------------------------------------------

-( 384 )

-

-InclusiveOrExpression ::= InclusiveOrExpression  .OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= NameOrAj AND_AND InclusiveOrExpression .

-                                      (934)

-

-OR              Shift  324

-

-abstract        Reduce 934

-final           Reduce 934

-native          Reduce 934

-private         Reduce 934

-protected       Reduce 934

-public          Reduce 934

-static          Reduce 934

-strictfp        Reduce 934

-synchronized    Reduce 934

-transient       Reduce 934

-volatile        Reduce 934

-OR_OR           Reduce 934

-AND_AND         Reduce 934

-RPAREN          Reduce 934

-RBRACE          Reduce 934

-SEMICOLON       Reduce 934

-QUESTION        Reduce 934

-COMMA           Reduce 934

-AT              Reduce 934

-$eof            Reduce 934

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1229

-

-

-

-Default reduction to rule  934

-

-

-STATE 616 ----------------------------------------------------------------------

-( 385 )

-

-ExclusiveOrExpression ::= ExclusiveOrExpression  .XOR AndExpression 

-InclusiveOrExpression_NotName ::= NameOrAj OR ExclusiveOrExpression . (931)

-

-XOR             Shift  325

-

-abstract        Reduce 931

-final           Reduce 931

-native          Reduce 931

-private         Reduce 931

-protected       Reduce 931

-public          Reduce 931

-static          Reduce 931

-strictfp        Reduce 931

-synchronized    Reduce 931

-transient       Reduce 931

-volatile        Reduce 931

-OR_OR           Reduce 931

-AND_AND         Reduce 931

-OR              Reduce 931

-RPAREN          Reduce 931

-RBRACE          Reduce 931

-SEMICOLON       Reduce 931

-QUESTION        Reduce 931

-COMMA           Reduce 931

-AT              Reduce 931

-$eof            Reduce 931

-

-Default reduction to rule  931

-

-

-STATE 617 ----------------------------------------------------------------------

-( 386 )

-

-AndExpression ::= AndExpression  .AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= NameOrAj XOR AndExpression . (928)

-

-AND             Shift  321

-

-abstract        Reduce 928

-final           Reduce 928

-native          Reduce 928

-private         Reduce 928

-protected       Reduce 928

-public          Reduce 928

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1230

-

-

-static          Reduce 928

-strictfp        Reduce 928

-synchronized    Reduce 928

-transient       Reduce 928

-volatile        Reduce 928

-OR_OR           Reduce 928

-AND_AND         Reduce 928

-XOR             Reduce 928

-OR              Reduce 928

-RPAREN          Reduce 928

-RBRACE          Reduce 928

-SEMICOLON       Reduce 928

-QUESTION        Reduce 928

-COMMA           Reduce 928

-AT              Reduce 928

-$eof            Reduce 928

-

-Default reduction to rule  928

-

-

-STATE 618 ----------------------------------------------------------------------

-( 387 )

-

-EqualityExpression ::= EqualityExpression  .EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= EqualityExpression  .NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= NameOrAj AND EqualityExpression . (925)

-

-NOT_EQUAL       Shift  322

-EQUAL_EQUAL     Shift  323

-

-abstract        Reduce 925

-final           Reduce 925

-native          Reduce 925

-private         Reduce 925

-protected       Reduce 925

-public          Reduce 925

-static          Reduce 925

-strictfp        Reduce 925

-synchronized    Reduce 925

-transient       Reduce 925

-volatile        Reduce 925

-OR_OR           Reduce 925

-AND_AND         Reduce 925

-XOR             Reduce 925

-AND             Reduce 925

-OR              Reduce 925

-RPAREN          Reduce 925

-RBRACE          Reduce 925

-SEMICOLON       Reduce 925

-QUESTION        Reduce 925

-COMMA           Reduce 925

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1231

-

-

-AT              Reduce 925

-$eof            Reduce 925

-

-Default reduction to rule  925

-

-

-STATE 619 ----------------------------------------------------------------------

-( 388 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj NOT_EQUAL InstanceofExpression . (922)

-

-instanceof      Shift  316

-

-abstract        Reduce 922

-final           Reduce 922

-native          Reduce 922

-private         Reduce 922

-protected       Reduce 922

-public          Reduce 922

-static          Reduce 922

-strictfp        Reduce 922

-synchronized    Reduce 922

-transient       Reduce 922

-volatile        Reduce 922

-EQUAL_EQUAL     Reduce 922

-NOT_EQUAL       Reduce 922

-OR_OR           Reduce 922

-AND_AND         Reduce 922

-XOR             Reduce 922

-AND             Reduce 922

-OR              Reduce 922

-RPAREN          Reduce 922

-RBRACE          Reduce 922

-SEMICOLON       Reduce 922

-QUESTION        Reduce 922

-COMMA           Reduce 922

-AT              Reduce 922

-$eof            Reduce 922

-

-Default reduction to rule  922

-

-

-STATE 620 ----------------------------------------------------------------------

-( 389 )

-

-InstanceofExpression ::= InstanceofExpression  .instanceof ReferenceType 

-EqualityExpression_NotName ::= NameOrAj EQUAL_EQUAL InstanceofExpression .

-                                (920)

-

-instanceof      Shift  316

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1232

-

-

-

-abstract        Reduce 920

-final           Reduce 920

-native          Reduce 920

-private         Reduce 920

-protected       Reduce 920

-public          Reduce 920

-static          Reduce 920

-strictfp        Reduce 920

-synchronized    Reduce 920

-transient       Reduce 920

-volatile        Reduce 920

-EQUAL_EQUAL     Reduce 920

-NOT_EQUAL       Reduce 920

-OR_OR           Reduce 920

-AND_AND         Reduce 920

-XOR             Reduce 920

-AND             Reduce 920

-OR              Reduce 920

-RPAREN          Reduce 920

-RBRACE          Reduce 920

-SEMICOLON       Reduce 920

-QUESTION        Reduce 920

-COMMA           Reduce 920

-AT              Reduce 920

-$eof            Reduce 920

-

-Default reduction to rule  920

-

-

-STATE 621 ----------------------------------------------------------------------

-( 391 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj GREATER_EQUAL ShiftExpression . (914)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 914

-final                   Reduce 914

-instanceof              Reduce 914

-native                  Reduce 914

-private                 Reduce 914

-protected               Reduce 914

-public                  Reduce 914

-static                  Reduce 914

-strictfp                Reduce 914

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1233

-

-

-synchronized            Reduce 914

-transient               Reduce 914

-volatile                Reduce 914

-EQUAL_EQUAL             Reduce 914

-LESS_EQUAL              Reduce 914

-GREATER_EQUAL           Reduce 914

-NOT_EQUAL               Reduce 914

-OR_OR                   Reduce 914

-AND_AND                 Reduce 914

-XOR                     Reduce 914

-AND                     Reduce 914

-OR                      Reduce 914

-RPAREN                  Reduce 914

-RBRACE                  Reduce 914

-SEMICOLON               Reduce 914

-QUESTION                Reduce 914

-COMMA                   Reduce 914

-AT                      Reduce 914

-$eof                    Reduce 914

-

-Default reduction to rule  914

-

-

-STATE 622 ----------------------------------------------------------------------

-( 392 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj LESS_EQUAL ShiftExpression . (912)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 912

-final                   Reduce 912

-instanceof              Reduce 912

-native                  Reduce 912

-private                 Reduce 912

-protected               Reduce 912

-public                  Reduce 912

-static                  Reduce 912

-strictfp                Reduce 912

-synchronized            Reduce 912

-transient               Reduce 912

-volatile                Reduce 912

-EQUAL_EQUAL             Reduce 912

-LESS_EQUAL              Reduce 912

-GREATER_EQUAL           Reduce 912

-NOT_EQUAL               Reduce 912

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1234

-

-

-OR_OR                   Reduce 912

-AND_AND                 Reduce 912

-XOR                     Reduce 912

-AND                     Reduce 912

-OR                      Reduce 912

-RPAREN                  Reduce 912

-RBRACE                  Reduce 912

-SEMICOLON               Reduce 912

-QUESTION                Reduce 912

-COMMA                   Reduce 912

-AT                      Reduce 912

-$eof                    Reduce 912

-

-Default reduction to rule  912

-

-

-STATE 623 ----------------------------------------------------------------------

-( 393 )

-

-ShiftExpression ::= ShiftExpression  .LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= ShiftExpression  .UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= NameOrAj GREATER ShiftExpression . (910)

-

-UNSIGNED_RIGHT_SHIFT    Shift  311

-RIGHT_SHIFT             Shift  312

-LEFT_SHIFT              Shift  313

-

-abstract                Reduce 910

-final                   Reduce 910

-instanceof              Reduce 910

-native                  Reduce 910

-private                 Reduce 910

-protected               Reduce 910

-public                  Reduce 910

-static                  Reduce 910

-strictfp                Reduce 910

-synchronized            Reduce 910

-transient               Reduce 910

-volatile                Reduce 910

-EQUAL_EQUAL             Reduce 910

-LESS_EQUAL              Reduce 910

-GREATER_EQUAL           Reduce 910

-NOT_EQUAL               Reduce 910

-OR_OR                   Reduce 910

-AND_AND                 Reduce 910

-XOR                     Reduce 910

-AND                     Reduce 910

-OR                      Reduce 910

-RPAREN                  Reduce 910

-RBRACE                  Reduce 910

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1235

-

-

-SEMICOLON               Reduce 910

-QUESTION                Reduce 910

-COMMA                   Reduce 910

-AT                      Reduce 910

-$eof                    Reduce 910

-

-Default reduction to rule  910

-

-

-STATE 624 ----------------------------------------------------------------------

-( 394 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression .

-                             (905)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 905

-final                   Reduce 905

-instanceof              Reduce 905

-native                  Reduce 905

-private                 Reduce 905

-protected               Reduce 905

-public                  Reduce 905

-static                  Reduce 905

-strictfp                Reduce 905

-synchronized            Reduce 905

-transient               Reduce 905

-volatile                Reduce 905

-EQUAL_EQUAL             Reduce 905

-LESS_EQUAL              Reduce 905

-GREATER_EQUAL           Reduce 905

-NOT_EQUAL               Reduce 905

-LEFT_SHIFT              Reduce 905

-RIGHT_SHIFT             Reduce 905

-UNSIGNED_RIGHT_SHIFT    Reduce 905

-OR_OR                   Reduce 905

-AND_AND                 Reduce 905

-XOR                     Reduce 905

-AND                     Reduce 905

-OR                      Reduce 905

-GREATER                 Reduce 905

-LESS                    Reduce 905

-RPAREN                  Reduce 905

-RBRACE                  Reduce 905

-SEMICOLON               Reduce 905

-QUESTION                Reduce 905

-COMMA                   Reduce 905

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1236

-

-

-AT                      Reduce 905

-$eof                    Reduce 905

-

-Default reduction to rule  905

-

-

-STATE 625 ----------------------------------------------------------------------

-( 395 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj RIGHT_SHIFT AdditiveExpression . (903)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 903

-final                   Reduce 903

-instanceof              Reduce 903

-native                  Reduce 903

-private                 Reduce 903

-protected               Reduce 903

-public                  Reduce 903

-static                  Reduce 903

-strictfp                Reduce 903

-synchronized            Reduce 903

-transient               Reduce 903

-volatile                Reduce 903

-EQUAL_EQUAL             Reduce 903

-LESS_EQUAL              Reduce 903

-GREATER_EQUAL           Reduce 903

-NOT_EQUAL               Reduce 903

-LEFT_SHIFT              Reduce 903

-RIGHT_SHIFT             Reduce 903

-UNSIGNED_RIGHT_SHIFT    Reduce 903

-OR_OR                   Reduce 903

-AND_AND                 Reduce 903

-XOR                     Reduce 903

-AND                     Reduce 903

-OR                      Reduce 903

-GREATER                 Reduce 903

-LESS                    Reduce 903

-RPAREN                  Reduce 903

-RBRACE                  Reduce 903

-SEMICOLON               Reduce 903

-QUESTION                Reduce 903

-COMMA                   Reduce 903

-AT                      Reduce 903

-$eof                    Reduce 903

-

-Default reduction to rule  903

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1237

-

-

-

-

-STATE 626 ----------------------------------------------------------------------

-( 396 )

-

-AdditiveExpression ::= AdditiveExpression  .PLUS MultiplicativeExpression 

-AdditiveExpression ::= AdditiveExpression  .MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= NameOrAj LEFT_SHIFT AdditiveExpression . (901)

-

-MINUS                   Shift  314

-PLUS                    Shift  315

-

-abstract                Reduce 901

-final                   Reduce 901

-instanceof              Reduce 901

-native                  Reduce 901

-private                 Reduce 901

-protected               Reduce 901

-public                  Reduce 901

-static                  Reduce 901

-strictfp                Reduce 901

-synchronized            Reduce 901

-transient               Reduce 901

-volatile                Reduce 901

-EQUAL_EQUAL             Reduce 901

-LESS_EQUAL              Reduce 901

-GREATER_EQUAL           Reduce 901

-NOT_EQUAL               Reduce 901

-LEFT_SHIFT              Reduce 901

-RIGHT_SHIFT             Reduce 901

-UNSIGNED_RIGHT_SHIFT    Reduce 901

-OR_OR                   Reduce 901

-AND_AND                 Reduce 901

-XOR                     Reduce 901

-AND                     Reduce 901

-OR                      Reduce 901

-GREATER                 Reduce 901

-LESS                    Reduce 901

-RPAREN                  Reduce 901

-RBRACE                  Reduce 901

-SEMICOLON               Reduce 901

-QUESTION                Reduce 901

-COMMA                   Reduce 901

-AT                      Reduce 901

-$eof                    Reduce 901

-

-Default reduction to rule  901

-

-

-STATE 627 ----------------------------------------------------------------------

-( 397 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1238

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj MINUS MultiplicativeExpression . (898)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 898

-final                   Reduce 898

-instanceof              Reduce 898

-native                  Reduce 898

-private                 Reduce 898

-protected               Reduce 898

-public                  Reduce 898

-static                  Reduce 898

-strictfp                Reduce 898

-synchronized            Reduce 898

-transient               Reduce 898

-volatile                Reduce 898

-EQUAL_EQUAL             Reduce 898

-LESS_EQUAL              Reduce 898

-GREATER_EQUAL           Reduce 898

-NOT_EQUAL               Reduce 898

-LEFT_SHIFT              Reduce 898

-RIGHT_SHIFT             Reduce 898

-UNSIGNED_RIGHT_SHIFT    Reduce 898

-OR_OR                   Reduce 898

-AND_AND                 Reduce 898

-PLUS                    Reduce 898

-MINUS                   Reduce 898

-XOR                     Reduce 898

-AND                     Reduce 898

-OR                      Reduce 898

-GREATER                 Reduce 898

-LESS                    Reduce 898

-RPAREN                  Reduce 898

-RBRACE                  Reduce 898

-SEMICOLON               Reduce 898

-QUESTION                Reduce 898

-COMMA                   Reduce 898

-AT                      Reduce 898

-$eof                    Reduce 898

-

-Default reduction to rule  898

-

-

-STATE 628 ----------------------------------------------------------------------

-( 398 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1239

-

-

-MultiplicativeExpression ::= MultiplicativeExpression  .MULTIPLY 

-                             UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .DIVIDE UnaryExpression 

-MultiplicativeExpression ::= MultiplicativeExpression  .REMAINDER 

-                             UnaryExpression 

-AdditiveExpression_NotName ::= NameOrAj PLUS MultiplicativeExpression . (896)

-

-REMAINDER               Shift  308

-DIVIDE                  Shift  309

-MULTIPLY                Shift  310

-

-abstract                Reduce 896

-final                   Reduce 896

-instanceof              Reduce 896

-native                  Reduce 896

-private                 Reduce 896

-protected               Reduce 896

-public                  Reduce 896

-static                  Reduce 896

-strictfp                Reduce 896

-synchronized            Reduce 896

-transient               Reduce 896

-volatile                Reduce 896

-EQUAL_EQUAL             Reduce 896

-LESS_EQUAL              Reduce 896

-GREATER_EQUAL           Reduce 896

-NOT_EQUAL               Reduce 896

-LEFT_SHIFT              Reduce 896

-RIGHT_SHIFT             Reduce 896

-UNSIGNED_RIGHT_SHIFT    Reduce 896

-OR_OR                   Reduce 896

-AND_AND                 Reduce 896

-PLUS                    Reduce 896

-MINUS                   Reduce 896

-XOR                     Reduce 896

-AND                     Reduce 896

-OR                      Reduce 896

-GREATER                 Reduce 896

-LESS                    Reduce 896

-RPAREN                  Reduce 896

-RBRACE                  Reduce 896

-SEMICOLON               Reduce 896

-QUESTION                Reduce 896

-COMMA                   Reduce 896

-AT                      Reduce 896

-$eof                    Reduce 896

-

-Default reduction to rule  896

-

-

-STATE 629 ----------------------------------------------------------------------

-( 402 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1240

-

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression  .COLON ConditionalExpression 

-

-COLON    Shift  779

-

-

-STATE 630 ----------------------------------------------------------------------

-( 403 )

-

-ConditionalAndExpression ::= ConditionalAndExpression  .AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression . (936)

-

-AND_AND         Shift  328

-

-abstract        Reduce 936

-final           Reduce 936

-native          Reduce 936

-private         Reduce 936

-protected       Reduce 936

-public          Reduce 936

-static          Reduce 936

-strictfp        Reduce 936

-synchronized    Reduce 936

-transient       Reduce 936

-volatile        Reduce 936

-OR_OR           Reduce 936

-RPAREN          Reduce 936

-RBRACE          Reduce 936

-SEMICOLON       Reduce 936

-QUESTION        Reduce 936

-COMMA           Reduce 936

-AT              Reduce 936

-$eof            Reduce 936

-

-Default reduction to rule  936

-

-

-STATE 631 ----------------------------------------------------------------------

-( 405 )

-

-CatchHeader ::= catch LPAREN CatchFormalParameter  .RPAREN LBRACE 

-

-RPAREN    Shift  780

-

-

-STATE 632 ----------------------------------------------------------------------

-( 405 690 )

-

-CatchFormalParameter ::= Modifiersopt  .CatchType VariableDeclaratorId 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1241

-

-

-

-Type ::= .PrimitiveType 

-Type ::= .ReferenceType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-CatchType ::= .UnionType 

-UnionType ::= .Type 

-UnionType ::= .UnionType OR Type 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-Type                              Gt/Rd  411

-UnionType                         Goto   782

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1242

-

-

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1247

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   1247

-CatchType                         Goto   781

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 633 ----------------------------------------------------------------------

-( 406 )

-

-EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt  .

-                       RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet     Gt/Rd  800

-

-abstract        Reduce 382

-final           Reduce 382

-native          Reduce 382

-private         Reduce 382

-protected       Reduce 382

-public          Reduce 382

-static          Reduce 382

-strictfp        Reduce 382

-synchronized    Reduce 382

-transient       Reduce 382

-volatile        Reduce 382

-LBRACE          Reduce 382

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1243

-

-

-RBRACE          Reduce 382

-SEMICOLON       Reduce 382

-COMMA           Reduce 382

-AT              Reduce 382

-$eof            Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 634 ----------------------------------------------------------------------

-( 406 )

-

-Arguments ::= LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1244

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1245

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1246

-

-

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1247

-

-

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1248

-

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1249

-

-

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   783

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 635 ----------------------------------------------------------------------

-( 407 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClause 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1250

-

-

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   784

-

-abstract                      Reduce 768

-default                       Reduce 768

-final                         Reduce 768

-native                        Reduce 768

-private                       Reduce 768

-protected                     Reduce 768

-public                        Reduce 768

-static                        Reduce 768

-strictfp                      Reduce 768

-synchronized                  Reduce 768

-throws                        Reduce 768

-transient                     Reduce 768

-volatile                      Reduce 768

-AT                            Reduce 768

-$eof                          Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 636 ----------------------------------------------------------------------

-( 408 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  994

-

-

-STATE 637 ----------------------------------------------------------------------

-( 409 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1251

-

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-

-Identifier                Shift  785

-declare                   Shift  785

-after                     Shift  785

-before                    Shift  785

-pointcut                  Shift  785

-privileged                Shift  785

-aspect                    Shift  785

-

-AjSimpleNameNoAround      Goto   785

-JavaIdentifierNoAround    Goto   785

-

-

-STATE 638 ----------------------------------------------------------------------

-( 410 )

-

-ArrayCreationHeader ::= new PrimitiveType DimWithOrWithOutExprs . (641)

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotations               Goto   496

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   496

-DimWithOrWithOutExpr          Gt/Rd  648

-

-abstract                      Reduce 641

-final                         Reduce 641

-native                        Reduce 641

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1252

-

-

-private                       Reduce 641

-protected                     Reduce 641

-public                        Reduce 641

-static                        Reduce 641

-strictfp                      Reduce 641

-synchronized                  Reduce 641

-transient                     Reduce 641

-volatile                      Reduce 641

-AT                            Reduce 641

-$eof                          Reduce 641

-LBRACKET                      Reduce 92

-

-Default reduction to rule  641

-

-

-STATE 639 ----------------------------------------------------------------------

-( 411 )

-

-AllocationHeader ::= new ClassType LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1253

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1254

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1255

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1256

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1257

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1258

-

-

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   786

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 640 ----------------------------------------------------------------------

-( 412 )

-

-ArrayCreationHeader ::= new ClassOrInterfaceType DimWithOrWithOutExprs . (642)

-DimWithOrWithOutExprs ::= DimWithOrWithOutExprs  .DimWithOrWithOutExpr 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1259

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET Expression RBRACKET 

-DimWithOrWithOutExpr ::= .TypeAnnotationsopt LBRACKET RBRACKET 

-

-AT308                         Shift  22

-

-TypeAnnotations               Goto   496

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   496

-DimWithOrWithOutExpr          Gt/Rd  648

-

-abstract                      Reduce 642

-final                         Reduce 642

-native                        Reduce 642

-private                       Reduce 642

-protected                     Reduce 642

-public                        Reduce 642

-static                        Reduce 642

-strictfp                      Reduce 642

-synchronized                  Reduce 642

-transient                     Reduce 642

-volatile                      Reduce 642

-AT                            Reduce 642

-$eof                          Reduce 642

-LBRACKET                      Reduce 92

-

-Default reduction to rule  642

-

-

-STATE 641 ----------------------------------------------------------------------

-( 413 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON  .

-                       MINUS Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1260

-

-

-MINUS                     Shift  787

-PLUS                      Shift  788

-AT                        Shift  136

-

-NormalAnnotation          Goto   789

-MarkerAnnotation          Goto   789

-SingleMemberAnnotation    Goto   789

-AnnotationName            Goto   81

-Annotation                Goto   789

-Annotations               Goto   789

-

-

-STATE 642 ----------------------------------------------------------------------

-( 414 )

-

-PseudoToken ::= if LPAREN  .Expression RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1261

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1262

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1263

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1264

-

-

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1265

-

-

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1266

-

-

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   790

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 643 ----------------------------------------------------------------------

-( 416 )

-

-DeclareAnnotationHeader ::= declare AT Identifier  .COLON 

-

-COLON    Sh/Rd  280

-

-

-STATE 644 ----------------------------------------------------------------------

-( 418 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1267

-

-

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   791

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 645 ----------------------------------------------------------------------

-( 420 )

-

-InterTypeFieldBody ::= EQUAL ForceNoDiet  .VariableInitializer RestoreDiet 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1268

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1269

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1270

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1271

-

-

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1272

-

-

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1273

-

-

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   792

-ArrayInitializer                        Goto   792

-VariableInitializer                     Goto   792

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 646 ----------------------------------------------------------------------

-( 421 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1274

-

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen  .MethodHeaderThrowsClauseopt 

-                       COLON PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Goto   793

-MethodHeaderThrowsClauseopt    Goto   793

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 647 ----------------------------------------------------------------------

-( 422 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen  .ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-ExtraParamopt ::= .Identifier LPAREN FormalParameter RPAREN 

-ExtraParamopt ::= .Identifier LPAREN RPAREN 

-ExtraParamopt ::= .Identifier 

-ExtraParamopt ::= . (240)

-

-Identifier       Shift  795

-

-ExtraParamopt    Goto   794

-

-throws           Reduce 240

-COLON            Reduce 240

-

-Default reduction to rule  240

-

-

-STATE 648 ----------------------------------------------------------------------

-( 423 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen  .MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1275

-

-

-MethodHeaderThrowsClause       Goto   796

-MethodHeaderThrowsClauseopt    Goto   796

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 649 ----------------------------------------------------------------------

-( 424 430 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-around                    Shift  1249

-declare                   Shift  1248

-after                     Shift  1248

-before                    Shift  1248

-pointcut                  Shift  1248

-privileged                Shift  1248

-aspect                    Shift  1248

-Identifier                Shift  655

-

-AjSimpleNameNoAround      Goto   654

-AjSimpleName              Goto   1249

-JavaIdentifier            Gt/Rd  241

-OnType                    Goto   798

-JavaIdentifierNoAround    Goto   797

-

-

-STATE 650 ----------------------------------------------------------------------

-( 428 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1276

-

-

-RecoveryMethodHeaderName ::= Modifiersopt Type JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  992

-

-

-STATE 651 ----------------------------------------------------------------------

-( 428 870 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType  .

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType  .TypeParametersAsReference 

-                         DOT JavaIdentifier 

-

-TypeParametersAsReference ::= .TypeParameters 

-TypeParameters ::= .LESS TypeParameterList1 

-

-PLUS                         Shift  800

-DOT                          Shift  801

-LESS                         Shift  223

-

-TypeParameters               Gt/Rd  256

-TypeParametersAsReference    Goto   799

-

-

-STATE 652 ----------------------------------------------------------------------

-( 428 870 )

-

-AjSimpleName ::= around . (77)

-AroundHeaderName ::= Modifiersopt Type around  .LPAREN 

-

-LPAREN       Sh/Rd  228

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1277

-

-

-AT308        Reduce 36

-

-Default reduction to rule  77

-

-

-STATE 653 ----------------------------------------------------------------------

-( 428 870 )

-

-OnType ::= JavaIdentifier . (241)

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Gt/Rd  383

-Dimsopt                       Gt/Rd  383

-

-PLUS                          Reduce 241

-LESS                          Reduce 241

-DOT                           Reduce 241

-SEMICOLON                     Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  241

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1278

-

-

-

-

-STATE 654 ----------------------------------------------------------------------

-( 428 649 870 943 )

-

-JavaIdentifierNoAround ::= AjSimpleNameNoAround . (38)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-LPAREN       Reduce 38

-

-Default reduction to rule  73

-

-

-STATE 655 ----------------------------------------------------------------------

-( 428 649 870 943 )

-

-JavaIdentifier ::= Identifier . (35)

-JavaIdentifierNoAround ::= Identifier . (37)

-

-LPAREN       Reduce 37

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 35

-SEMICOLON    Reduce 35

-COMMA        Reduce 35

-DOT          Reduce 241

-EQUAL        Reduce 35

-AT308        Reduce 35

-

-Default reduction to rule  35

-

-

-STATE 656 ----------------------------------------------------------------------

-( 431 )

-

-Initializer ::= Diet NestedMethod CreateInitializer  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  362

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1279

-

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 657 ----------------------------------------------------------------------

-( 432 )

-

-MethodBody ::= NestedMethod LBRACE BlockStatementsopt  .RBRACE 

-

-RBRACE    Sh/Rd  416

-

-

-STATE 658 ----------------------------------------------------------------------

-( 433 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations  .

-                            ReduceImports 

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations  .

-                            ReduceImports TypeDeclarations 

-ImportDeclarations ::= ImportDeclarations  .ImportDeclaration 

-

-ReduceImports ::= . (118)

-SingleTypeImportDeclaration ::= .SingleTypeImportDeclarationName SEMICOLON 

-SingleTypeImportDeclarationName ::= .import Name RejectTypeAnnotations 

-TypeImportOnDemandDeclaration ::= .TypeImportOnDemandDeclarationName SEMICOLON 

-TypeImportOnDemandDeclarationName ::= .import Name DOT RejectTypeAnnotations 

-                                      MULTIPLY 

-SingleStaticImportDeclaration ::= .SingleStaticImportDeclarationName SEMICOLON 

-SingleStaticImportDeclarationName ::= .import static Name RejectTypeAnnotations 

-StaticImportOnDemandDeclaration ::= .StaticImportOnDemandDeclarationName 

-                                    SEMICOLON 

-StaticImportOnDemandDeclarationName ::= .import static Name DOT 

-                                        RejectTypeAnnotations MULTIPLY 

-

-import                                 Shift  149

-

-SingleTypeImportDeclarationName        Goto   150

-TypeImportOnDemandDeclarationName      Goto   148

-SingleStaticImportDeclarationName      Goto   147

-StaticImportOnDemandDeclarationName    Goto   146

-SingleTypeImportDeclaration            Gt/Rd  137

-TypeImportOnDemandDeclaration          Gt/Rd  137

-SingleStaticImportDeclaration          Gt/Rd  137

-StaticImportOnDemandDeclaration        Gt/Rd  137

-ReduceImports                          Goto   802

-ImportDeclaration                      Gt/Rd  137

-

-abstract                               Reduce 118

-class                                  Reduce 118

-enum                                   Reduce 118

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1280

-

-

-final                                  Reduce 118

-interface                              Reduce 118

-native                                 Reduce 118

-private                                Reduce 118

-protected                              Reduce 118

-public                                 Reduce 118

-static                                 Reduce 118

-strictfp                               Reduce 118

-synchronized                           Reduce 118

-transient                              Reduce 118

-volatile                               Reduce 118

-aspect                                 Reduce 118

-privileged                             Reduce 118

-SEMICOLON                              Reduce 118

-AT                                     Reduce 118

-$eof                                   Reduce 118

-

-Default reduction to rule  118

-

-

-STATE 659 ----------------------------------------------------------------------

-( 433 )

-

-InternalCompilationUnit ::= PackageDeclaration TypeDeclarations . (113)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1281

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1282

-

-

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 113

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 660 ----------------------------------------------------------------------

-( 435 )

-

-InternalCompilationUnit ::= ImportDeclarations ReduceImports . (114)

-InternalCompilationUnit ::= ImportDeclarations ReduceImports  .TypeDeclarations 

-

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1283

-

-

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1284

-

-

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassDeclaration                       Goto   803

-InterfaceDeclaration                   Goto   803

-EnumDeclaration                        Goto   803

-AnnotationTypeDeclaration              Goto   803

-AspectDeclaration                      Goto   803

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1285

-

-

-TypeDeclaration                        Goto   803

-TypeDeclarations                       Goto   803

-

-$eof                                   Reduce 114

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 661 ----------------------------------------------------------------------

-( 439 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL  .EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-EnterMemberValue ::= . (975)

-

-EnterMemberValue         Goto   804

-

-Identifier               Reduce 975

-boolean                  Reduce 975

-byte                     Reduce 975

-char                     Reduce 975

-double                   Reduce 975

-false                    Reduce 975

-float                    Reduce 975

-int                      Reduce 975

-long                     Reduce 975

-new                      Reduce 975

-null                     Reduce 975

-short                    Reduce 975

-super                    Reduce 975

-this                     Reduce 975

-true                     Reduce 975

-void                     Reduce 975

-aspect                   Reduce 975

-pointcut                 Reduce 975

-around                   Reduce 975

-before                   Reduce 975

-after                    Reduce 975

-declare                  Reduce 975

-privileged               Reduce 975

-IntegerLiteral           Reduce 975

-LongLiteral              Reduce 975

-FloatingPointLiteral     Reduce 975

-DoubleLiteral            Reduce 975

-CharacterLiteral         Reduce 975

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1286

-

-

-StringLiteral            Reduce 975

-PLUS_PLUS                Reduce 975

-MINUS_MINUS              Reduce 975

-PLUS                     Reduce 975

-MINUS                    Reduce 975

-NOT                      Reduce 975

-TWIDDLE                  Reduce 975

-LPAREN                   Reduce 975

-LBRACE                   Reduce 975

-AT                       Reduce 975

-BeginLambda              Reduce 975

-BeginIntersectionCast    Reduce 975

-AT308                    Reduce 975

-

-Default reduction to rule  975

-

-

-STATE 662 ----------------------------------------------------------------------

-( 440 )

-

-MemberValuePairs ::= MemberValuePairs COMMA  .MemberValuePair 

-

-MemberValuePair ::= .SimpleNameOrAj EQUAL EnterMemberValue MemberValue 

-                    ExitMemberValue 

-

-Identifier              Shift  439

-around                  Shift  439

-declare                 Shift  439

-after                   Shift  439

-before                  Shift  439

-pointcut                Shift  439

-privileged              Shift  439

-aspect                  Shift  439

-

-AjSimpleName            Goto   439

-SimpleName              Goto   439

-AjSimpleNameNoAround    Goto   439

-SimpleNameOrAj          Goto   439

-MemberValuePair         Gt/Rd  973

-

-

-STATE 663 ----------------------------------------------------------------------

-( 444 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-

-COMMA    Shift  805

-

-

-STATE 664 ----------------------------------------------------------------------

-( 444 805 806 896 897 959 1001 1002 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1287

-

-

-ClassOrInterfaceType ::= ClassOrInterface . (55)

-GenericType ::= ClassOrInterface  .TypeArguments 

-GenericType ::= ClassOrInterface  .LESS GREATER 

-ReferenceType1 ::= ClassOrInterface  .LESS TypeArgumentList2 

-ReferenceType2 ::= ClassOrInterface  .LESS TypeArgumentList3 

-

-TypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                    Shift  806

-

-TypeArguments           Gt/Rd  59

-

-RIGHT_SHIFT             Reduce 53

-UNSIGNED_RIGHT_SHIFT    Reduce 53

-GREATER                 Reduce 53

-COMMA                   Reduce 53

-

-Default reduction to rule  55

-

-

-STATE 665 ----------------------------------------------------------------------

-( 444 805 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 824

-

-Default reduction to rule  824

-

-

-STATE 666 ----------------------------------------------------------------------

-( 444 805 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-

-QUESTION             Shift  807

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1288

-

-

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 667 ----------------------------------------------------------------------

-( 446 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1289

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   808

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   808

-ReferenceType1                    Gt/Rd  848

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 668 ----------------------------------------------------------------------

-( 446 )

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1290

-

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   809

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1291

-

-

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   809

-ReferenceType1                    Gt/Rd  847

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 669 ----------------------------------------------------------------------

-( 452 )

-

-TypeElidedFormalParameter ::= Modifiersopt  .Identifier 

-

-Identifier    Sh/Rd  620

-

-

-STATE 670 ----------------------------------------------------------------------

-( 453 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT  .TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1292

-

-

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotations               Goto   810

-

-

-STATE 671 ----------------------------------------------------------------------

-( 453 )

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-ELLIPSIS    Shift  811

-

-

-STATE 672 ----------------------------------------------------------------------

-( 453 811 898 )

-

-JavaIdentifier ::= Identifier . (35)

-SimpleName ::= Identifier . (87)

-

-DOT         Reduce 88

-RPAREN      Reduce 35

-LBRACKET    Reduce 35

-COMMA       Reduce 35

-AT308       Reduce 35

-

-Default reduction to rule  35

-

-

-STATE 673 ----------------------------------------------------------------------

-( 453 811 898 )

-

-UnannotatableName ::= UnannotatableName  .DOT SimpleName 

-VariableDeclaratorIdOrThis ::= UnannotatableName  .DOT this 

-

-DOT    Shift  812

-

-

-STATE 674 ----------------------------------------------------------------------

-( 455 464 )

-

-InterfaceTypeList ::= InterfaceTypeList COMMA  .InterfaceType 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1293

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-InterfaceType ::= .ClassOrInterfaceType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Gt/Rd  353

-InterfaceType                 Gt/Rd  352

-

-

-STATE 675 ----------------------------------------------------------------------

-( 456 )

-

-EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  794

-

-

-STATE 676 ----------------------------------------------------------------------

-( 459 )

-

-EnumBody ::= LBRACE EnumConstants EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  796

-

-

-STATE 677 ----------------------------------------------------------------------

-( 459 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1294

-

-

-EnumBody ::= LBRACE EnumConstants COMMA  .EnumBodyDeclarationsopt RBRACE 

-EnumConstants ::= EnumConstants COMMA  .EnumConstant 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumConstantHeaderName ::= .Modifiersopt Identifier 

-EnumConstantHeader ::= .EnumConstantHeaderName ForceNoDiet Argumentsopt 

-                       RestoreDiet 

-EnumConstant ::= .EnumConstantHeader ForceNoDiet ClassBody RestoreDiet 

-EnumConstant ::= .EnumConstantHeader 

-EnumDeclarations ::= .SEMICOLON ClassBodyDeclarationsopt 

-EnumBodyDeclarationsopt ::= . (807)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                  Shift  458

-strictfp                   Shift  1064

-volatile                   Shift  1064

-transient                  Shift  1064

-synchronized               Shift  1064

-native                     Shift  1064

-final                      Shift  1064

-abstract                   Shift  1064

-static                     Shift  1064

-private                    Shift  1064

-protected                  Shift  1064

-public                     Shift  1064

-AT                         Shift  136

-

-EnumConstantHeaderName     Goto   177

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1295

-

-

-Modifiers                  Goto   137

-SimpleModifier             Goto   1064

-Annotation                 Gt/Rd  171

-AnnotationName             Goto   81

-NormalAnnotation           Goto   1047

-MarkerAnnotation           Goto   1047

-SingleMemberAnnotation     Goto   1047

-Modifier                   Goto   1064

-Modifiersopt               Goto   460

-EnumConstantHeader         Goto   461

-EnumDeclarations           Goto   813

-EnumBodyDeclarationsopt    Goto   813

-EnumConstant               Gt/Rd  798

-

-RBRACE                     Reduce 807

-Identifier                 Reduce 764

-

-Default reduction to rule  807

-

-

-STATE 678 ----------------------------------------------------------------------

-( 461 )

-

-EnumConstant ::= EnumConstantHeader ForceNoDiet  .ClassBody RestoreDiet 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Goto   814

-

-

-STATE 679 ----------------------------------------------------------------------

-( 463 )

-

-AnnotationTypeMemberDeclarationsopt ::= NestedType 

-                                        AnnotationTypeMemberDeclarations .

-                                         (952)

-AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations  .

-                                     AnnotationTypeMemberDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1296

-

-

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1297

-

-

-                              AnnotationTypeBody 

-AnnotationMethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier 

-                               LPAREN 

-AnnotationMethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-AnnotationMethodHeader ::= .AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims 

-                           AnnotationMethodHeaderDefaultValueopt 

-AnnotationTypeMemberDeclaration ::= .AnnotationMethodHeader SEMICOLON 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-AnnotationMethodHeaderName             Goto   145

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   143

-FieldDeclaration                       Gt/Rd  954

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassDeclaration                       Gt/Rd  954

-InterfaceDeclaration                   Gt/Rd  954

-EnumDeclaration                        Gt/Rd  954

-AnnotationTypeDeclaration              Gt/Rd  954

-AspectDeclaration                      Gt/Rd  954

-AspectHeaderName                       Goto   125

-AspectHeaderName1                      Goto   128

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1298

-

-

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-AnnotationMethodHeader                 Goto   142

-ConstantDeclaration                    Gt/Rd  954

-ConstructorDeclaration                 Gt/Rd  954

-TypeDeclaration                        Gt/Rd  954

-AnnotationTypeMemberDeclaration        Gt/Rd  954

-

-RBRACE                                 Reduce 952

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 680 ----------------------------------------------------------------------

-( 465 )

-

-TypeParameterList ::= TypeParameterList COMMA  .TypeParameter 

-TypeParameterList1 ::= TypeParameterList COMMA  .TypeParameter1 

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1299

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameterHeader ::= .TypeAnnotationsopt JavaIdentifier 

-TypeParameter ::= .TypeParameterHeader 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-TypeParameter ::= .TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= .TypeParameterHeader GREATER 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType1 

-TypeParameter1 ::= .TypeParameterHeader extends ReferenceType 

-                   AdditionalBoundList1 

-

-AT308                         Shift  22

-

-TypeParameterHeader           Goto   467

-TypeAnnotationsopt            Goto   466

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   466

-TypeParameter                 Gt/Rd  860

-TypeParameter1                Gt/Rd  868

-

-Identifier                    Reduce 92

-aspect                        Reduce 92

-pointcut                      Reduce 92

-around                        Reduce 92

-before                        Reduce 92

-after                         Reduce 92

-declare                       Reduce 92

-privileged                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 681 ----------------------------------------------------------------------

-( 467 )

-

-TypeParameter ::= TypeParameterHeader extends  .ReferenceType 

-TypeParameter ::= TypeParameterHeader extends  .ReferenceType 

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader extends  .ReferenceType1 

-TypeParameter1 ::= TypeParameterHeader extends  .ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1300

-

-

-                   AdditionalBoundList1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   815

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1301

-

-

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   815

-ReferenceType1                    Gt/Rd  870

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 682 ----------------------------------------------------------------------

-( 469 )

-

-InterfaceMemberDeclarations ::= InterfaceMemberDeclarations  .

-                                InterfaceMemberDeclaration 

-InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations .

-                                    (779)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1302

-

-

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-Initializer ::= .Diet NestedMethod CreateInitializer Block 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-InterfaceMemberDeclaration ::= .SEMICOLON 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .MethodHeader MethodBody 

-InterfaceMemberDeclaration ::= .DefaultMethodHeader SEMICOLON 

-InvalidConstructorDeclaration ::= .ConstructorHeader MethodBody 

-InvalidConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1303

-

-

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-static                                 Shift  131

-AT                                     Shift  80

-SEMICOLON                              Sh/Rd  443

-

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-Modifiersopt                           Goto   133

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1304

-

-

-Modifier                               Goto   1064

-AspectHeaderName                       Goto   125

-PointcutHeader                         Goto   124

-FieldDeclaration                       Gt/Rd  442

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-MethodHeaderName                       Goto   119

-MethodHeader                           Goto   684

-ConstructorHeader                      Goto   683

-ConstructorHeaderName                  Goto   134

-StaticInitializer                      Gt/Rd  442

-Initializer                            Gt/Rd  442

-Diet                                   Goto   195

-StaticOnly                             Goto   130

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectDeclaration                      Gt/Rd  442

-PointcutDeclaration                    Gt/Rd  442

-ConstantDeclaration                    Gt/Rd  442

-DefaultMethodHeader                    Goto   685

-AbstractMethodDeclaration              Gt/Rd  442

-InvalidConstructorDeclaration          Gt/Rd  442

-InvalidInitializer                     Gt/Rd  442

-ClassDeclaration                       Gt/Rd  442

-InterfaceDeclaration                   Gt/Rd  442

-EnumDeclaration                        Gt/Rd  442

-AnnotationTypeDeclaration              Gt/Rd  442

-InterfaceMemberDeclaration             Gt/Rd  442

-

-RBRACE                                 Reduce 779

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1305

-

-

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 683 ----------------------------------------------------------------------

-( 469 682 )

-

-InvalidConstructorDeclaration ::= ConstructorHeader  .MethodBody 

-InvalidConstructorDeclaration ::= ConstructorHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  449

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  448

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 684 ----------------------------------------------------------------------

-( 469 682 )

-

-AbstractMethodDeclaration ::= MethodHeader  .SEMICOLON 

-InterfaceMemberDeclaration ::= MethodHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  389

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  446

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 685 ----------------------------------------------------------------------

-( 469 682 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1306

-

-

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .MethodBody 

-InterfaceMemberDeclaration ::= DefaultMethodHeader  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-SEMICOLON       Sh/Rd  447

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  445

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 686 ----------------------------------------------------------------------

-( 472 )

-

-ClassBodyDeclarations ::= ClassBodyDeclarations  .ClassBodyDeclaration 

-ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations . (763)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1307

-

-

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ClassBodyDeclaration ::= .Diet NestedMethod CreateInitializer Block 

-Diet ::= . (361)

-ClassMemberDeclaration ::= .SEMICOLON 

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-MethodDeclaration ::= .MethodHeader MethodBody 

-MethodDeclaration ::= .DefaultMethodHeader MethodBody 

-AbstractMethodDeclaration ::= .MethodHeader SEMICOLON 

-MethodHeader ::= .MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims 

-                 MethodHeaderThrowsClauseopt 

-DefaultMethodHeader ::= .DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims 

-                        MethodHeaderThrowsClauseopt 

-MethodHeaderName ::= .Modifiersopt TypeParameters Type JavaIdentifier LPAREN 

-MethodHeaderName ::= .Modifiersopt Type JavaIdentifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault TypeParameters Type 

-                            Identifier LPAREN 

-DefaultMethodHeaderName ::= .ModifiersWithDefault Type Identifier LPAREN 

-ModifiersWithDefault ::= .Modifiersopt default Modifiersopt 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1308

-

-

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  370

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-static                                 Shift  131

-

-AspectDeclaration                      Gt/Rd  356

-PointcutDeclaration                    Gt/Rd  356

-FieldDeclaration                       Gt/Rd  356

-MethodDeclaration                      Gt/Rd  356

-ClassDeclaration                       Gt/Rd  356

-InterfaceDeclaration                   Gt/Rd  356

-EnumDeclaration                        Gt/Rd  356

-AnnotationTypeDeclaration              Gt/Rd  356

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-Modifiersopt                           Goto   133

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-MethodHeader                           Goto   123

-MethodHeaderName                       Goto   119

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1309

-

-

-DefaultMethodHeaderName                Goto   120

-ModifiersWithDefault                   Goto   121

-AbstractMethodDeclaration              Gt/Rd  356

-DefaultMethodHeader                    Goto   122

-PointcutHeader                         Goto   124

-AspectHeaderName                       Goto   125

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-StaticOnly                             Goto   130

-ConstructorHeader                      Goto   132

-ConstructorHeaderName                  Goto   134

-ClassMemberDeclaration                 Gt/Rd  356

-StaticInitializer                      Gt/Rd  356

-ConstructorDeclaration                 Gt/Rd  356

-Diet                                   Goto   135

-ClassBodyDeclaration                   Gt/Rd  356

-

-RBRACE                                 Reduce 763

-LBRACE                                 Reduce 361

-Identifier                             Reduce 764

-boolean                                Reduce 764

-byte                                   Reduce 764

-char                                   Reduce 764

-class                                  Reduce 764

-default                                Reduce 764

-double                                 Reduce 764

-enum                                   Reduce 764

-float                                  Reduce 764

-int                                    Reduce 764

-interface                              Reduce 764

-long                                   Reduce 764

-short                                  Reduce 764

-void                                   Reduce 764

-aspect                                 Reduce 764

-pointcut                               Reduce 764

-privileged                             Reduce 764

-LESS                                   Reduce 764

-AT308                                  Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 687 ----------------------------------------------------------------------

-( 473 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1310

-

-

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt .

-                               (561)

-TryStatementWithResources ::= try ResourceSpecification TryBlock Catchesopt  .

-                              Finally 

-

-Finally ::= .finally Block 

-

-finally                 Shift  689

-

-Finally                 Gt/Rd  562

-

-Identifier              Reduce 561

-abstract                Reduce 561

-assert                  Reduce 561

-boolean                 Reduce 561

-break                   Reduce 561

-byte                    Reduce 561

-case                    Reduce 561

-char                    Reduce 561

-class                   Reduce 561

-continue                Reduce 561

-default                 Reduce 561

-do                      Reduce 561

-double                  Reduce 561

-else                    Reduce 561

-enum                    Reduce 561

-false                   Reduce 561

-final                   Reduce 561

-float                   Reduce 561

-for                     Reduce 561

-if                      Reduce 561

-int                     Reduce 561

-interface               Reduce 561

-long                    Reduce 561

-native                  Reduce 561

-new                     Reduce 561

-null                    Reduce 561

-private                 Reduce 561

-protected               Reduce 561

-public                  Reduce 561

-return                  Reduce 561

-short                   Reduce 561

-static                  Reduce 561

-strictfp                Reduce 561

-super                   Reduce 561

-switch                  Reduce 561

-synchronized            Reduce 561

-this                    Reduce 561

-throw                   Reduce 561

-transient               Reduce 561

-true                    Reduce 561

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1311

-

-

-try                     Reduce 561

-void                    Reduce 561

-volatile                Reduce 561

-while                   Reduce 561

-aspect                  Reduce 561

-pointcut                Reduce 561

-around                  Reduce 561

-before                  Reduce 561

-after                   Reduce 561

-declare                 Reduce 561

-privileged              Reduce 561

-IntegerLiteral          Reduce 561

-LongLiteral             Reduce 561

-FloatingPointLiteral    Reduce 561

-DoubleLiteral           Reduce 561

-CharacterLiteral        Reduce 561

-StringLiteral           Reduce 561

-PLUS_PLUS               Reduce 561

-MINUS_MINUS             Reduce 561

-LESS                    Reduce 561

-LPAREN                  Reduce 561

-LBRACE                  Reduce 561

-RBRACE                  Reduce 561

-SEMICOLON               Reduce 561

-AT                      Reduce 561

-BeginLambda             Reduce 561

-AT308                   Reduce 561

-$eof                    Reduce 561

-

-Default reduction to rule  561

-

-

-STATE 688 ----------------------------------------------------------------------

-( 473 )

-

-Catches ::= Catches  .CatchClause 

-Catchesopt ::= Catches . (788)

-

-CatchClause ::= .catch LPAREN CatchFormalParameter RPAREN Block 

-

-catch                   Shift  475

-

-CatchClause             Gt/Rd  574

-

-Identifier              Reduce 788

-abstract                Reduce 788

-assert                  Reduce 788

-boolean                 Reduce 788

-break                   Reduce 788

-byte                    Reduce 788

-case                    Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1312

-

-

-char                    Reduce 788

-class                   Reduce 788

-continue                Reduce 788

-default                 Reduce 788

-do                      Reduce 788

-double                  Reduce 788

-else                    Reduce 788

-enum                    Reduce 788

-false                   Reduce 788

-final                   Reduce 788

-finally                 Reduce 788

-float                   Reduce 788

-for                     Reduce 788

-if                      Reduce 788

-int                     Reduce 788

-interface               Reduce 788

-long                    Reduce 788

-native                  Reduce 788

-new                     Reduce 788

-null                    Reduce 788

-private                 Reduce 788

-protected               Reduce 788

-public                  Reduce 788

-return                  Reduce 788

-short                   Reduce 788

-static                  Reduce 788

-strictfp                Reduce 788

-super                   Reduce 788

-switch                  Reduce 788

-synchronized            Reduce 788

-this                    Reduce 788

-throw                   Reduce 788

-transient               Reduce 788

-true                    Reduce 788

-try                     Reduce 788

-void                    Reduce 788

-volatile                Reduce 788

-while                   Reduce 788

-aspect                  Reduce 788

-pointcut                Reduce 788

-around                  Reduce 788

-before                  Reduce 788

-after                   Reduce 788

-declare                 Reduce 788

-privileged              Reduce 788

-IntegerLiteral          Reduce 788

-LongLiteral             Reduce 788

-FloatingPointLiteral    Reduce 788

-DoubleLiteral           Reduce 788

-CharacterLiteral        Reduce 788

-StringLiteral           Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1313

-

-

-PLUS_PLUS               Reduce 788

-MINUS_MINUS             Reduce 788

-LESS                    Reduce 788

-LPAREN                  Reduce 788

-LBRACE                  Reduce 788

-RBRACE                  Reduce 788

-SEMICOLON               Reduce 788

-AT                      Reduce 788

-BeginLambda             Reduce 788

-AT308                   Reduce 788

-$eof                    Reduce 788

-

-Default reduction to rule  788

-

-

-STATE 689 ----------------------------------------------------------------------

-( 474 687 )

-

-Finally ::= finally  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  576

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 690 ----------------------------------------------------------------------

-( 475 )

-

-CatchClause ::= catch LPAREN  .CatchFormalParameter RPAREN Block 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1314

-

-

-CatchFormalParameter ::= .Modifiersopt CatchType VariableDeclaratorId 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   632

-CatchFormalParameter      Goto   816

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 691 ----------------------------------------------------------------------

-( 477 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1315

-

-

-Resources ::= Resources TrailingSemiColon  .Resource 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-Resource ::= .Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Resource ::= .Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1316

-

-

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  1076

-AT308                             Shift  22

-strictfp                          Shift  478

-volatile                          Shift  478

-transient                         Shift  478

-synchronized                      Shift  478

-native                            Shift  478

-final                             Shift  478

-abstract                          Shift  478

-static                            Shift  478

-private                           Shift  478

-protected                         Shift  478

-public                            Shift  478

-AT                                Shift  136

-

-PrimitiveType                     Goto   287

-ReferenceType                     Goto   479

-ClassOrInterface                  Goto   90

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   479

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationsopt                Goto   84

-Modifier                          Goto   478

-Modifiers                         Goto   478

-NormalAnnotation                  Goto   1047

-MarkerAnnotation                  Goto   1047

-SingleMemberAnnotation            Goto   1047

-AnnotationName                    Goto   81

-SimpleModifier                    Goto   478

-Annotation                        Gt/Rd  171

-Type                              Goto   479

-Resource                          Gt/Rd  567

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1317

-

-

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 692 ----------------------------------------------------------------------

-( 477 )

-

-ResourceSpecification ::= LPAREN Resources ;opt  .RPAREN 

-

-RPAREN    Sh/Rd  563

-

-

-STATE 693 ----------------------------------------------------------------------

-( 477 )

-

-;opt ::= SEMICOLON . (565)

-TrailingSemiColon ::= SEMICOLON . (568)

-

-Identifier      Reduce 568

-abstract        Reduce 568

-boolean         Reduce 568

-byte            Reduce 568

-char            Reduce 568

-double          Reduce 568

-final           Reduce 568

-float           Reduce 568

-int             Reduce 568

-long            Reduce 568

-native          Reduce 568

-private         Reduce 568

-protected       Reduce 568

-public          Reduce 568

-short           Reduce 568

-static          Reduce 568

-strictfp        Reduce 568

-synchronized    Reduce 568

-transient       Reduce 568

-void            Reduce 568

-volatile        Reduce 568

-AT              Reduce 568

-AT308           Reduce 568

-RPAREN          Reduce 565

-

-Default reduction to rule  568

-

-

-STATE 694 ----------------------------------------------------------------------

-( 478 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1318

-

-

-Resource ::= Modifiers Type  .PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   817

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

-

-STATE 695 ----------------------------------------------------------------------

-( 479 )

-

-Resource ::= Type PushModifiers  .VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Goto   818

-

-

-STATE 696 ----------------------------------------------------------------------

-( 480 )

-

-SynchronizedStatement ::= OnlySynchronized LPAREN Expression RPAREN  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1319

-

-

-

-OpenBlock    Goto   70

-Block        Gt/Rd  557

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 697 ----------------------------------------------------------------------

-( 481 )

-

-DoStatement ::= do Statement while LPAREN  .Expression RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1320

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1321

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1322

-

-

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1323

-

-

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1324

-

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1325

-

-

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   819

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 698 ----------------------------------------------------------------------

-( 482 )

-

-SwitchStatement ::= switch LPAREN Expression RPAREN  .OpenBlock SwitchBlock 

-

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   820

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 699 ----------------------------------------------------------------------

-( 484 )

-

-LambdaBody ::= ElidedLeftBraceAndReturn Expression  .

-               ElidedSemicolonAndRightBrace 

-

-ElidedSemicolonAndRightBrace    Sh/Rd  621

-

-

-STATE 700 ----------------------------------------------------------------------

-( 487 )

-

-ArgumentList ::= ArgumentList COMMA  .Expression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1326

-

-

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1327

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1328

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1329

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1330

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1331

-

-

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Gt/Rd  640

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1332

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 701 ----------------------------------------------------------------------

-( 488 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier  .LPAREN ArgumentListopt RPAREN 

-

-LPAREN    Shift  821

-

-

-STATE 702 ----------------------------------------------------------------------

-( 489 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1333

-

-

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1334

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1335

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1336

-

-

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1337

-

-

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1338

-

-

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   822

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 703 ----------------------------------------------------------------------

-( 492 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  823

-

-

-STATE 704 ----------------------------------------------------------------------

-( 493 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1339

-

-

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1340

-

-

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1341

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1342

-

-

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1343

-

-

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1344

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1345

-

-

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   824

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 705 ----------------------------------------------------------------------

-( 494 )

-

-ClassOrInterface ::= GenericType DOT Name . (58)

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-

-DOT             Shift  445

-

-Identifier      Reduce 58

-abstract        Reduce 58

-final           Reduce 58

-implements      Reduce 58

-native          Reduce 58

-private         Reduce 58

-protected       Reduce 58

-public          Reduce 58

-static          Reduce 58

-strictfp        Reduce 58

-synchronized    Reduce 58

-transient       Reduce 58

-volatile        Reduce 58

-AND             Reduce 58

-LESS            Reduce 58

-LPAREN          Reduce 58

-RPAREN          Reduce 58

-LBRACE          Reduce 58

-LBRACKET        Reduce 58

-SEMICOLON       Reduce 58

-COLON           Reduce 58

-COMMA           Reduce 58

-AT              Reduce 58

-COLON_COLON     Reduce 58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1346

-

-

-AT308           Reduce 58

-$eof            Reduce 58

-

-Default reduction to rule  58

-

-

-STATE 706 ----------------------------------------------------------------------

-( 496 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET  .Expression RBRACKET 

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET  .RBRACKET 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1347

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1348

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1349

-

-

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1350

-

-

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACKET                                Sh/Rd  650

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1351

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1352

-

-

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   825

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 707 ----------------------------------------------------------------------

-( 497 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1353

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1354

-

-

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1355

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1356

-

-

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1357

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1358

-

-

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   826

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 708 ----------------------------------------------------------------------

-( 498 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-LPAREN    Shift  827

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1359

-

-

-

-

-STATE 709 ----------------------------------------------------------------------

-( 503 )

-

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1360

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1361

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1362

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1363

-

-

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1364

-

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1365

-

-

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   828

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 710 ----------------------------------------------------------------------

-( 504 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   829

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 711 ----------------------------------------------------------------------

-( 504 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments  .

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1366

-

-

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   830

-ClassType                     Goto   830

-

-

-STATE 712 ----------------------------------------------------------------------

-( 505 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1367

-

-

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1368

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1369

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1370

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1371

-

-

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1372

-

-

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   831

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1373

-

-

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 713 ----------------------------------------------------------------------

-( 506 545 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  832

-

-

-STATE 714 ----------------------------------------------------------------------

-( 506 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  833

-

-

-STATE 715 ----------------------------------------------------------------------

-( 506 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  834

-

-

-STATE 716 ----------------------------------------------------------------------

-( 507 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1374

-

-

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1375

-

-

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1376

-

-

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1377

-

-

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1378

-

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1379

-

-

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   835

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1380

-

-

-

-

-STATE 717 ----------------------------------------------------------------------

-( 508 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  836

-

-

-STATE 718 ----------------------------------------------------------------------

-( 509 )

-

-MethodInvocation ::= super DOT JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1381

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1382

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1383

-

-

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1384

-

-

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1385

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1386

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   837

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 719 ----------------------------------------------------------------------

-( 511 )

-

-ExplicitConstructorInvocation ::= super LPAREN ArgumentListopt RPAREN  .

-                                  SEMICOLON 

-

-SEMICOLON    Sh/Rd  424

-

-

-STATE 720 ----------------------------------------------------------------------

-( 512 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  838

-

-

-STATE 721 ----------------------------------------------------------------------

-( 513 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1387

-

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  839

-

-

-STATE 722 ----------------------------------------------------------------------

-( 514 )

-

-ExplicitConstructorInvocation ::= this LPAREN ArgumentListopt RPAREN  .

-                                  SEMICOLON 

-

-SEMICOLON    Sh/Rd  422

-

-

-STATE 723 ----------------------------------------------------------------------

-( 516 )

-

-AssertStatement ::= assert Expression COLON Expression  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  550

-

-

-STATE 724 ----------------------------------------------------------------------

-( 517 )

-

-IfThenStatement ::= if LPAREN Expression RPAREN  .Statement 

-IfThenElseStatement ::= if LPAREN Expression RPAREN  .StatementNoShortIf else 

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1388

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1389

-

-

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1390

-

-

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1391

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1392

-

-

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1393

-

-

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Goto   840

-IfThenElseStatementNoShortIf            Goto   840

-WhileStatementNoShortIf                 Goto   840

-ForStatementNoShortIf                   Goto   840

-EnhancedForStatementNoShortIf           Goto   840

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1394

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  524

-IfThenStatement                         Gt/Rd  524

-IfThenElseStatement                     Gt/Rd  524

-WhileStatement                          Gt/Rd  524

-ForStatement                            Gt/Rd  524

-EnhancedForStatement                    Gt/Rd  524

-Statement                               Gt/Rd  524

-StatementNoShortIf                      Goto   840

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 725 ----------------------------------------------------------------------

-( 518 )

-

-WhileStatement ::= while LPAREN Expression RPAREN  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1395

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1396

-

-

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1397

-

-

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1398

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1399

-

-

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  539

-Block                                   Gt/Rd  539

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1400

-

-

-EmptyStatement                          Gt/Rd  539

-ExpressionStatement                     Gt/Rd  539

-SwitchStatement                         Gt/Rd  539

-DoStatement                             Gt/Rd  539

-BreakStatement                          Gt/Rd  539

-ContinueStatement                       Gt/Rd  539

-ReturnStatement                         Gt/Rd  539

-SynchronizedStatement                   Gt/Rd  539

-ThrowStatement                          Gt/Rd  539

-TryStatement                            Gt/Rd  539

-TryStatementWithResources               Gt/Rd  539

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1401

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  539

-LabeledStatement                        Gt/Rd  539

-IfThenStatement                         Gt/Rd  539

-IfThenElseStatement                     Gt/Rd  539

-WhileStatement                          Gt/Rd  539

-ForStatement                            Gt/Rd  539

-EnhancedForStatement                    Gt/Rd  539

-Statement                               Gt/Rd  539

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 726 ----------------------------------------------------------------------

-( 519 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1402

-

-

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1403

-

-

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1404

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1405

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1406

-

-

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1407

-

-

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   847

-Expressionopt                           Goto   847

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 727 ----------------------------------------------------------------------

-( 520 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1408

-

-

-LocalVariableDeclaration ::= Type PushModifiers  .VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers  .

-                                   JavaIdentifier Dimsopt 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  848

-declare                 Shift  848

-after                   Shift  848

-before                  Shift  848

-pointcut                Shift  848

-privileged              Shift  848

-aspect                  Shift  848

-around                  Shift  848

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   848

-AjSimpleNameNoAround    Goto   848

-JavaIdentifier          Goto   848

-VariableDeclarator      Goto   525

-VariableDeclarators     Goto   525

-

-

-STATE 728 ----------------------------------------------------------------------

-( 521 )

-

-LocalVariableDeclaration ::= Modifiers Type  .PushRealModifiers 

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type  .

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-PushRealModifiers ::= . (484)

-

-PushRealModifiers    Goto   849

-

-Identifier           Reduce 484

-aspect               Reduce 484

-pointcut             Reduce 484

-around               Reduce 484

-before               Reduce 484

-after                Reduce 484

-declare              Reduce 484

-privileged           Reduce 484

-

-Default reduction to rule  484

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1409

-

-

-

-

-STATE 729 ----------------------------------------------------------------------

-( 523 982 )

-

-StatementExpressionList ::= StatementExpressionList COMMA  .StatementExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1410

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1411

-

-

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1412

-

-

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1089

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1413

-

-

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-StatementExpression                     Gt/Rd  548

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 730 ----------------------------------------------------------------------

-( 525 582 733 )

-

-VariableDeclarators ::= VariableDeclarators COMMA  .VariableDeclarator 

-

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1414

-

-

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-JavaIdentifier          Goto   526

-AjSimpleNameNoAround    Goto   526

-AjSimpleName            Goto   526

-VariableDeclaratorId    Goto   527

-VariableDeclarator      Gt/Rd  375

-

-

-STATE 731 ----------------------------------------------------------------------

-( 527 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable  .

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= VariableDeclaratorId EnterVariable  .EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-ExitVariableWithoutInitialization ::= . (380)

-

-EQUAL                                Shift  850

-

-ExitVariableWithoutInitialization    Gt/Rd  376

-

-SEMICOLON                            Reduce 380

-COMMA                                Reduce 380

-

-Default reduction to rule  380

-

-

-STATE 732 ----------------------------------------------------------------------

-( 528 )

-

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface 

-                                        JavaIdentifier  .TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= AT PushModifiersForHeader interface 

-                                        JavaIdentifier . (947)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  946

-

-abstract          Reduce 947

-extends           Reduce 947

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1415

-

-

-final             Reduce 947

-implements        Reduce 947

-native            Reduce 947

-private           Reduce 947

-protected         Reduce 947

-public            Reduce 947

-static            Reduce 947

-strictfp          Reduce 947

-synchronized      Reduce 947

-transient         Reduce 947

-volatile          Reduce 947

-LBRACE            Reduce 947

-AT                Reduce 947

-$eof              Reduce 947

-

-Default reduction to rule  947

-

-

-STATE 733 ----------------------------------------------------------------------

-( 531 849 )

-

-VariableDeclarators ::= VariableDeclarators  .COMMA VariableDeclarator 

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers 

-                             VariableDeclarators . (481)

-

-COMMA        Shift  730

-

-SEMICOLON    Reduce 481

-

-Default reduction to rule  481

-

-

-STATE 734 ----------------------------------------------------------------------

-( 532 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface  .JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface  .JavaIdentifier 

-                                        TypeParameters 

-

-Identifier              Shift  851

-declare                 Shift  851

-after                   Shift  851

-before                  Shift  851

-pointcut                Shift  851

-privileged              Shift  851

-aspect                  Shift  851

-around                  Shift  851

-

-AjSimpleNameNoAround    Goto   851

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1416

-

-

-AjSimpleName            Goto   851

-JavaIdentifier          Goto   851

-

-

-STATE 735 ----------------------------------------------------------------------

-( 533 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON  .

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-NonWildTypeArgumentsopt ::= . (607)

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-LESS                       Shift  25

-

-OnlyTypeArguments          Goto   852

-NonWildTypeArgumentsopt    Goto   852

-

-Identifier                 Reduce 607

-new                        Reduce 607

-

-Default reduction to rule  607

-

-

-STATE 736 ----------------------------------------------------------------------

-( 534 )

-

-ReferenceExpression ::= Name Dimsopt COLON_COLON NonWildTypeArgumentsopt  .

-                        IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  602

-

-

-STATE 737 ----------------------------------------------------------------------

-( 535 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN  .ArgumentListopt RPAREN 

-                                  SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1417

-

-

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1418

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1419

-

-

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1420

-

-

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1421

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1422

-

-

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   853

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1423

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 738 ----------------------------------------------------------------------

-( 536 544 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier  .LPAREN 

-                     ArgumentListopt RPAREN 

-

-LPAREN    Shift  854

-

-

-STATE 739 ----------------------------------------------------------------------

-( 536 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  855

-

-

-STATE 740 ----------------------------------------------------------------------

-( 536 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super  .LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-LPAREN    Shift  856

-

-

-STATE 741 ----------------------------------------------------------------------

-( 537 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN  .ArgumentListopt 

-                                  RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1424

-

-

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1425

-

-

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1426

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1427

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1428

-

-

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1429

-

-

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   857

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1430

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 742 ----------------------------------------------------------------------

-( 542 )

-

-ReferenceExpression ::= PrimitiveType Dims COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  601

-

-

-STATE 743 ----------------------------------------------------------------------

-( 546 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN  .InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionLL1WithBounds ::= . (702)

-

-InsideCastExpressionLL1WithBounds    Goto   858

-

-Identifier                           Reduce 702

-boolean                              Reduce 702

-byte                                 Reduce 702

-char                                 Reduce 702

-double                               Reduce 702

-false                                Reduce 702

-float                                Reduce 702

-int                                  Reduce 702

-long                                 Reduce 702

-new                                  Reduce 702

-null                                 Reduce 702

-short                                Reduce 702

-super                                Reduce 702

-this                                 Reduce 702

-true                                 Reduce 702

-void                                 Reduce 702

-aspect                               Reduce 702

-pointcut                             Reduce 702

-around                               Reduce 702

-before                               Reduce 702

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1431

-

-

-after                                Reduce 702

-declare                              Reduce 702

-privileged                           Reduce 702

-IntegerLiteral                       Reduce 702

-LongLiteral                          Reduce 702

-FloatingPointLiteral                 Reduce 702

-DoubleLiteral                        Reduce 702

-CharacterLiteral                     Reduce 702

-StringLiteral                        Reduce 702

-NOT                                  Reduce 702

-TWIDDLE                              Reduce 702

-LPAREN                               Reduce 702

-BeginLambda                          Reduce 702

-BeginIntersectionCast                Reduce 702

-AT308                                Reduce 702

-

-Default reduction to rule  702

-

-

-STATE 744 ----------------------------------------------------------------------

-( 547 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   859

-

-

-STATE 745 ----------------------------------------------------------------------

-( 547 551 747 934 )

-

-AdditionalBoundsListOpt ::= AdditionalBoundList . (696)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-

-AdditionalBound ::= .AND ReferenceType 

-

-AND                Shift  450

-

-AdditionalBound    Gt/Rd  865

-

-RPAREN             Reduce 696

-

-Default reduction to rule  696

-

-

-STATE 746 ----------------------------------------------------------------------

-( 549 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1432

-

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT  .

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassOrInterfaceType          Goto   860

-

-

-STATE 747 ----------------------------------------------------------------------

-( 549 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1433

-

-

-                   Dimsopt  .AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   861

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 748 ----------------------------------------------------------------------

-( 550 )

-

-CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1434

-

-

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1435

-

-

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1436

-

-

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1437

-

-

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  692

-UnaryExpressionNotPlusMinus             Gt/Rd  692

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1438

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 749 ----------------------------------------------------------------------

-( 551 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt  .PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   862

-

-

-STATE 750 ----------------------------------------------------------------------

-( 552 )

-

-ArrayType ::= PrimitiveType  .Dims 

-PrimaryNoNewArray ::= PrimitiveType  .Dims DOT class 

-PrimaryNoNewArray ::= PrimitiveType  .DOT class 

-ReferenceExpression ::= PrimitiveType  .Dims COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  295

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1439

-

-

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Goto   296

-

-

-STATE 751 ----------------------------------------------------------------------

-( 567 )

-

-ConditionalExpression ::= ConditionalOrExpression QUESTION Expression COLON  .

-                          ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1440

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1441

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1442

-

-

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1443

-

-

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1444

-

-

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1445

-

-

-ConditionalExpression                   Gt/Rd  736

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 752 ----------------------------------------------------------------------

-( 571 )

-

-ArrayInitializer ::= LBRACE PushLeftBrace VariableInitializers COMMA  .RBRACE 

-VariableInitializers ::= VariableInitializers COMMA  .VariableInitializer 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1446

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1447

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1448

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1449

-

-

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-RBRACE                                  Sh/Rd  463

-LBRACE                                  Shift  117

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-false                                   Shift  1050

-true                                    Shift  1050

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1450

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1451

-

-

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Gt/Rd  465

-ArrayInitializer                        Gt/Rd  465

-VariableInitializer                     Gt/Rd  465

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 753 ----------------------------------------------------------------------

-( 572 )

-

-MethodHeader ::= MethodHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderExtendedDims  .

-                 MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  390

-MethodHeaderThrowsClauseopt    Gt/Rd  390

-

-LBRACE                         Reduce 772

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1452

-

-

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 754 ----------------------------------------------------------------------

-( 573 )

-

-DefaultMethodHeader ::= DefaultMethodHeaderName FormalParameterListopt 

-                        MethodHeaderRightParen MethodHeaderExtendedDims  .

-                        MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  391

-MethodHeaderThrowsClauseopt    Gt/Rd  391

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 755 ----------------------------------------------------------------------

-( 575 )

-

-DefaultMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                            Identifier  .LPAREN 

-

-LPAREN    Sh/Rd  394

-

-

-STATE 756 ----------------------------------------------------------------------

-( 576 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON  .PseudoTokens SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1453

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1454

-

-

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1455

-

-

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1456

-

-

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   863

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 757 ----------------------------------------------------------------------

-( 577 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1457

-

-

-AspectHeaderRest ::= AspectHeaderRestStart  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1458

-

-

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1459

-

-

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1460

-

-

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   864

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1461

-

-

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 758 ----------------------------------------------------------------------

-( 579 )

-

-AspectBodyDeclarations ::= AspectBodyDeclarations  .AspectBodyDeclaration 

-AspectBodyDeclarationsopt ::= NestedType AspectBodyDeclarations . (199)

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-AspectBodyDeclaration ::= .ClassBodyDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .ClassMemberDeclarationNoAroundMethod 

-ClassBodyDeclarationNoAroundMethod ::= .StaticInitializer 

-ClassBodyDeclarationNoAroundMethod ::= .ConstructorDeclaration 

-ClassBodyDeclarationNoAroundMethod ::= .Diet NestedMethod CreateInitializer 

-                                       Block 

-ClassMemberDeclarationNoAroundMethod ::= .PointcutDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AspectDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .FieldDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .MethodDeclarationNoAround 

-ClassMemberDeclarationNoAroundMethod ::= .ClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .InterfaceDeclaration 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1462

-

-

-ClassMemberDeclarationNoAroundMethod ::= .IntertypeClassDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .EnumDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .AnnotationTypeDeclaration 

-ClassMemberDeclarationNoAroundMethod ::= .SEMICOLON 

-MethodDeclarationNoAround ::= .AbstractMethodDeclarationNoAround 

-MethodDeclarationNoAround ::= .MethodHeaderNoAround MethodBody 

-AbstractMethodDeclarationNoAround ::= .MethodHeaderNoAround SEMICOLON 

-MethodHeaderNoAround ::= .MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-MethodHeaderNameNoAround ::= .Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= .Modifiersopt Type JavaIdentifierNoAround LPAREN 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen SEMICOLON 

-PointcutDeclaration ::= .PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens SEMICOLON 

-PointcutHeader ::= .Modifiersopt pointcut JavaIdentifier LPAREN 

-AroundDeclaration ::= .AroundHeader MethodBody 

-AroundHeader ::= .AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens 

-AroundHeaderName ::= .Modifiersopt Type around LPAREN 

-AroundHeaderName ::= .Modifiersopt around LPAREN 

-BasicAdviceDeclaration ::= .BasicAdviceHeader MethodBody 

-BeforeAdviceHeader ::= .BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                       PseudoTokens 

-AfterAdviceHeader ::= .AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-BeforeAdviceHeaderName ::= .Modifiersopt before LPAREN 

-AfterAdviceHeaderName ::= .Modifiersopt after LPAREN 

-InterTypeMethodDeclaration ::= .InterTypeMethodHeader MethodBody 

-InterTypeMethodHeader ::= .InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims 

-                          MethodHeaderThrowsClauseopt 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= .Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1463

-

-

-AbstractInterTypeMethodDeclaration ::= .InterTypeMethodHeader SEMICOLON 

-InterTypeConstructorDeclaration ::= .InterTypeConstructorHeader MethodBody 

-InterTypeConstructorHeader ::= .InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= .Modifiersopt TypeParameters GenericType DOT 

-                                   new LPAREN 

-InterTypeFieldDeclaration ::= .InterTypeFieldHeader InterTypeFieldBody 

-                              SEMICOLON 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= .Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-DeclareDeclaration ::= .DeclareHeader PseudoTokens SEMICOLON 

-DeclareHeader ::= .declare Identifier COLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON PLUS 

-                       Annotations SEMICOLON 

-DeclareDeclaration ::= .DeclareAnnotationHeader PseudoTokensNoColon COLON MINUS 

-                       Annotations SEMICOLON 

-DeclareAnnotationHeader ::= .declare AT Identifier COLON 

-ClassDeclaration ::= .ClassHeader ClassBody 

-IntertypeClassDeclaration ::= .IntertypeClassHeader ClassBody 

-IntertypeClassHeader ::= .IntertypeClassHeaderName ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 TypeParameters 

-IntertypeClassHeaderName ::= .IntertypeClassHeaderName1 

-IntertypeClassHeaderName1 ::= .Modifiersopt class OnType DOT JavaIdentifier 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-Diet ::= . (361)

-FieldDeclaration ::= .Modifiersopt Type VariableDeclarators SEMICOLON 

-ConstructorHeader ::= .ConstructorHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-ConstructorHeaderName ::= .Modifiersopt TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt Identifier LPAREN 

-ConstructorHeaderName ::= .Modifiersopt aspect LPAREN 

-StaticInitializer ::= .StaticOnly Block 

-StaticOnly ::= .static 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1464

-

-

-ConstructorDeclaration ::= .ConstructorHeader MethodBody 

-ConstructorDeclaration ::= .ConstructorHeader SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                                Shift  1064

-volatile                                Shift  1064

-transient                               Shift  1064

-synchronized                            Shift  1064

-native                                  Shift  1064

-final                                   Shift  1064

-abstract                                Shift  1064

-static                                  Shift  131

-private                                 Shift  1064

-protected                               Shift  1064

-public                                  Shift  1064

-AT                                      Shift  80

-SEMICOLON                               Sh/Rd  214

-declare                                 Shift  183

-

-ClassMemberDeclarationNoAroundMethod    Goto   1236

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1465

-

-

-StaticInitializer                       Goto   1236

-ConstructorDeclaration                  Goto   1236

-Diet                                    Goto   759

-ConstructorHeaderName                   Goto   134

-Modifiersopt                            Goto   767

-ConstructorHeader                       Goto   132

-StaticOnly                              Goto   130

-PointcutHeader                          Goto   124

-Modifiers                               Goto   126

-SimpleModifier                          Goto   1064

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1064

-AspectHeader                            Goto   129

-AspectHeaderName1                       Goto   128

-AspectHeaderName2                       Goto   127

-AspectHeaderName                        Goto   125

-AbstractMethodDeclarationNoAround       Goto   1236

-MethodHeaderNoAround                    Goto   761

-MethodHeaderNameNoAround                Goto   760

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-IntertypeClassHeader                    Goto   762

-IntertypeClassHeaderName1               Goto   763

-IntertypeClassHeaderName                Goto   764

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-PointcutDeclaration                     Goto   1236

-AspectDeclaration                       Goto   1236

-FieldDeclaration                        Goto   1236

-MethodDeclarationNoAround               Goto   1236

-ClassDeclaration                        Goto   1236

-InterfaceDeclaration                    Goto   1236

-IntertypeClassDeclaration               Goto   1236

-EnumDeclaration                         Goto   1236

-AnnotationTypeDeclaration               Goto   1236

-AroundHeader                            Goto   190

-AroundHeaderName                        Goto   191

-BasicAdviceHeader                       Goto   187

-BeforeAdviceHeaderName                  Goto   188

-AfterAdviceHeaderName                   Goto   189

-BeforeAdviceHeader                      Goto   187

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1466

-

-

-AfterAdviceHeader                       Goto   187

-AbstractInterTypeMethodDeclaration      Gt/Rd  197

-InterTypeMethodHeader                   Goto   185

-InterTypeMethodHeaderName               Goto   184

-InterTypeConstructorHeader              Goto   765

-InterTypeConstructorHeaderName          Goto   766

-InterTypeFieldHeader                    Goto   186

-DeclareHeader                           Goto   182

-DeclareAnnotationHeader                 Goto   181

-ClassBodyDeclarationNoAroundMethod      Gt/Rd  200

-AroundDeclaration                       Gt/Rd  197

-BasicAdviceDeclaration                  Gt/Rd  197

-InterTypeMethodDeclaration              Gt/Rd  197

-InterTypeConstructorDeclaration         Gt/Rd  197

-InterTypeFieldDeclaration               Gt/Rd  197

-DeclareDeclaration                      Gt/Rd  197

-AspectBodyDeclaration                   Gt/Rd  197

-

-RBRACE                                  Reduce 199

-Identifier                              Reduce 764

-boolean                                 Reduce 764

-byte                                    Reduce 764

-char                                    Reduce 764

-class                                   Reduce 764

-double                                  Reduce 764

-enum                                    Reduce 764

-float                                   Reduce 764

-int                                     Reduce 764

-interface                               Reduce 764

-long                                    Reduce 764

-short                                   Reduce 764

-void                                    Reduce 764

-aspect                                  Reduce 764

-pointcut                                Reduce 764

-around                                  Reduce 764

-before                                  Reduce 764

-after                                   Reduce 764

-privileged                              Reduce 764

-LESS                                    Reduce 764

-AT308                                   Reduce 764

-LBRACE                                  Reduce 361

-

-Default reduction to rule  764

-

-

-STATE 759 ----------------------------------------------------------------------

-( 579 758 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet  .NestedMethod CreateInitializer 

-                                       Block 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1467

-

-

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   865

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 760 ----------------------------------------------------------------------

-( 579 758 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround  .FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1468

-

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   866

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 761 ----------------------------------------------------------------------

-( 579 758 )

-

-MethodDeclarationNoAround ::= MethodHeaderNoAround  .MethodBody 

-AbstractMethodDeclarationNoAround ::= MethodHeaderNoAround  .SEMICOLON 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1469

-

-

-SEMICOLON       Sh/Rd  217

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  216

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 762 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassDeclaration ::= IntertypeClassHeader  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  339

-

-

-STATE 763 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassHeaderName ::= IntertypeClassHeaderName1  .TypeParameters 

-IntertypeClassHeaderName ::= IntertypeClassHeaderName1 . (342)

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  341

-

-extends           Reduce 342

-implements        Reduce 342

-LBRACE            Reduce 342

-

-Default reduction to rule  342

-

-

-STATE 764 ----------------------------------------------------------------------

-( 579 758 )

-

-IntertypeClassHeader ::= IntertypeClassHeaderName  .ClassHeaderExtendsopt 

-                         ClassHeaderImplementsopt 

-

-ClassHeaderExtends ::= .extends ClassType 

-ClassHeaderExtendsopt ::= . (755)

-

-extends                  Shift  220

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1470

-

-

-

-ClassHeaderExtends       Goto   867

-ClassHeaderExtendsopt    Goto   867

-

-implements               Reduce 755

-LBRACE                   Reduce 755

-

-Default reduction to rule  755

-

-

-STATE 765 ----------------------------------------------------------------------

-( 579 758 )

-

-InterTypeConstructorDeclaration ::= InterTypeConstructorHeader  .MethodBody 

-

-MethodBody ::= .NestedMethod LBRACE BlockStatementsopt RBRACE 

-NestedMethod ::= . (417)

-

-NestedMethod    Goto   196

-MethodBody      Gt/Rd  257

-

-LBRACE          Reduce 417

-

-Default reduction to rule  417

-

-

-STATE 766 ----------------------------------------------------------------------

-( 579 758 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName  .

-                               FormalParameterListopt MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameterList ::= .FormalParameter 

-FormalParameterList ::= .FormalParameterList COMMA FormalParameter 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1471

-

-

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-FormalParameterListopt ::= . (774)

-FormalParameterListopt ::= .FormalParameterList 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-FormalParameter           Goto   1080

-FormalParameterList       Goto   214

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameterListopt    Goto   868

-

-RPAREN                    Reduce 774

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1472

-

-

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 767 ----------------------------------------------------------------------

-( 579 758 )

-

-AspectHeaderName1 ::= Modifiersopt  .aspect Identifier 

-AspectHeaderName2 ::= Modifiersopt  .privileged Modifiersopt aspect Identifier 

-MethodHeaderNameNoAround ::= Modifiersopt  .TypeParameters Type 

-                             JavaIdentifierNoAround LPAREN 

-MethodHeaderNameNoAround ::= Modifiersopt  .Type JavaIdentifierNoAround LPAREN 

-PointcutHeader ::= Modifiersopt  .pointcut JavaIdentifier LPAREN 

-AroundHeaderName ::= Modifiersopt  .Type around LPAREN 

-AroundHeaderName ::= Modifiersopt  .around LPAREN 

-BeforeAdviceHeaderName ::= Modifiersopt  .before LPAREN 

-AfterAdviceHeaderName ::= Modifiersopt  .after LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt  .TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .Name PLUS DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .GenericType DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt  .TypeParameters GenericType 

-                                   DOT new LPAREN 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt  .Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt  .class OnType DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1473

-

-

-ClassHeaderName1 ::= Modifiersopt  .class JavaIdentifier 

-FieldDeclaration ::= Modifiersopt  .Type VariableDeclarators SEMICOLON 

-ConstructorHeaderName ::= Modifiersopt  .TypeParameters Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .Identifier LPAREN 

-ConstructorHeaderName ::= Modifiersopt  .aspect LPAREN 

-InterfaceHeaderName1 ::= Modifiersopt  .interface JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier 

-EnumHeaderName ::= Modifiersopt  .enum JavaIdentifier TypeParameters 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeParameters ::= .LESS TypeParameterList1 

-

-enum                              Shift  226

-interface                         Shift  227

-class                             Shift  869

-after                             Shift  425

-before                            Shift  426

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1474

-

-

-around                            Shift  427

-pointcut                          Shift  341

-privileged                        Shift  342

-aspect                            Shift  343

-LESS                              Shift  223

-Identifier                        Shift  344

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   870

-GenericType                       Goto   873

-PrimitiveType                     Goto   287

-Name                              Goto   872

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   870

-TypeParameters                    Goto   871

-Type                              Goto   870

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 768 ----------------------------------------------------------------------

-( 580 )

-

-MethodHeaderName ::= Modifiersopt TypeParameters Type JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  392

-

-

-STATE 769 ----------------------------------------------------------------------

-( 585 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1475

-

-

-AspectHeaderName2 ::= Modifiersopt privileged Modifiersopt aspect  .Identifier 

-

-Identifier    Sh/Rd  191

-

-

-STATE 770 ----------------------------------------------------------------------

-( 586 646 648 753 754 784 791 794 939 989 )

-

-MethodHeaderThrowsClause ::= throws  .ClassTypeList 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ClassTypeList ::= .ClassTypeList COMMA ClassTypeElt 

-ClassTypeElt ::= .ClassType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassType                     Gt/Rd  415

-ClassOrInterface              Goto   90

-GenericType                   Goto   257

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-Name                          Goto   256

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1476

-

-

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-ClassOrInterfaceType          Goto   1272

-ClassTypeElt                  Goto   874

-ClassTypeList                 Goto   874

-

-

-STATE 771 ----------------------------------------------------------------------

-( 590 )

-

-AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                               JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  955

-

-

-STATE 772 ----------------------------------------------------------------------

-( 592 )

-

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-PackageDeclarationName ::= Modifiers package PushRealModifiers Name  .

-                           RejectTypeAnnotations 

-

-RejectTypeAnnotations ::= . (104)

-

-DOT                      Shift  445

-

-RejectTypeAnnotations    Gt/Rd  141

-

-SEMICOLON                Reduce 104

-

-Default reduction to rule  104

-

-

-STATE 773 ----------------------------------------------------------------------

-( 593 )

-

-AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt 

-                           MethodHeaderRightParen MethodHeaderExtendedDims  .

-                           AnnotationMethodHeaderDefaultValueopt 

-

-AnnotationMethodHeaderDefaultValueopt ::= . (957)

-AnnotationMethodHeaderDefaultValueopt ::= .DefaultValue 

-DefaultValue ::= .default MemberValue 

-

-default                                  Shift  875

-

-DefaultValue                             Gt/Rd  958

-AnnotationMethodHeaderDefaultValueopt    Gt/Rd  959

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1477

-

-

-SEMICOLON                                Reduce 957

-

-Default reduction to rule  957

-

-

-STATE 774 ----------------------------------------------------------------------

-( 594 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-StaticImportOnDemandDeclarationName ::= import static Name DOT  .

-                                        RejectTypeAnnotations MULTIPLY 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-RejectTypeAnnotations ::= . (104)

-

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-RejectTypeAnnotations         Goto   876

-

-MULTIPLY                      Reduce 104

-

-Default reduction to rule  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1478

-

-

-

-

-STATE 775 ----------------------------------------------------------------------

-( 595 )

-

-TypeImportOnDemandDeclarationName ::= import Name DOT RejectTypeAnnotations  .

-                                      MULTIPLY 

-

-MULTIPLY    Sh/Rd  151

-

-

-STATE 776 ----------------------------------------------------------------------

-( 596 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA  .RBRACE 

-

-RBRACE    Sh/Rd  983

-

-

-STATE 777 ----------------------------------------------------------------------

-( 596 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .COMMA RBRACE 

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues  .RBRACE 

-MemberValues ::= MemberValues  .COMMA MemberValue 

-

-RBRACE    Sh/Rd  982

-COMMA     Shift  877

-

-

-STATE 778 ----------------------------------------------------------------------

-( 613 )

-

-ConditionalExpression_NotName ::= NameOrAj QUESTION Expression COLON  .

-                                  ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1479

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1480

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1481

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1482

-

-

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1483

-

-

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1484

-

-

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-ConditionalExpression                   Gt/Rd  940

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 779 ----------------------------------------------------------------------

-( 629 )

-

-ConditionalExpression_NotName ::= ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON  .ConditionalExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1485

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1486

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1487

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1488

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1489

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1261

-true                                    Shift  1261

-null                                    Shift  1261

-StringLiteral                           Shift  1261

-CharacterLiteral                        Shift  1261

-DoubleLiteral                           Shift  1261

-FloatingPointLiteral                    Shift  1261

-LongLiteral                             Shift  1261

-IntegerLiteral                          Shift  1261

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1262

-MultiplicativeExpression                Goto   105

-PostfixExpression                       Goto   483

-CastExpression                          Goto   1262

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1271

-BooleanLiteral                          Goto   1261

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1490

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1261

-ClassInstanceCreationExpression         Goto   1270

-FieldAccess                             Goto   1269

-MethodInvocation                        Goto   1268

-ArrayAccess                             Goto   1267

-LambdaExpression                        Goto   1266

-ReferenceExpression                     Goto   1265

-PostIncrementExpression                 Goto   1264

-PostDecrementExpression                 Goto   1263

-PreIncrementExpression                  Goto   1262

-PreDecrementExpression                  Goto   1262

-UnaryExpressionNotPlusMinus             Goto   1262

-ConditionalExpression                   Gt/Rd  939

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 780 ----------------------------------------------------------------------

-( 631 )

-

-CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN  .LBRACE 

-

-LBRACE    Sh/Rd  135

-

-

-STATE 781 ----------------------------------------------------------------------

-( 632 )

-

-CatchFormalParameter ::= Modifiersopt CatchType  .VariableDeclaratorId 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1491

-

-

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Gt/Rd  409

-

-

-STATE 782 ----------------------------------------------------------------------

-( 632 )

-

-CatchType ::= UnionType . (410)

-UnionType ::= UnionType  .OR Type 

-

-OR            Shift  878

-

-Identifier    Reduce 410

-aspect        Reduce 410

-pointcut      Reduce 410

-around        Reduce 410

-before        Reduce 410

-after         Reduce 410

-declare       Reduce 410

-privileged    Reduce 410

-

-Default reduction to rule  410

-

-

-STATE 783 ----------------------------------------------------------------------

-( 634 )

-

-Arguments ::= LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  803

-

-

-STATE 784 ----------------------------------------------------------------------

-( 635 )

-

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         AnnotationMethodHeaderDefaultValueopt 

-RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1492

-

-

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         MethodHeaderThrowsClause 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-AnnotationMethodHeaderDefaultValueopt ::= . (957)

-AnnotationMethodHeaderDefaultValueopt ::= .DefaultValue 

-DefaultValue ::= .default MemberValue 

-

-default                                  Shift  875

-throws                                   Shift  770

-

-DefaultValue                             Gt/Rd  958

-AnnotationMethodHeaderDefaultValueopt    Gt/Rd  995

-MethodHeaderThrowsClause                 Gt/Rd  996

-

-abstract                                 Reduce 957

-final                                    Reduce 957

-native                                   Reduce 957

-private                                  Reduce 957

-protected                                Reduce 957

-public                                   Reduce 957

-static                                   Reduce 957

-strictfp                                 Reduce 957

-synchronized                             Reduce 957

-transient                                Reduce 957

-volatile                                 Reduce 957

-AT                                       Reduce 957

-$eof                                     Reduce 957

-

-Default reduction to rule  957

-

-

-STATE 785 ----------------------------------------------------------------------

-( 637 )

-

-RecoveryMethodHeaderName ::= ModifiersWithDefault TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  993

-

-

-STATE 786 ----------------------------------------------------------------------

-( 639 )

-

-AllocationHeader ::= new ClassType LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  624

-

-

-STATE 787 ----------------------------------------------------------------------

-( 641 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1493

-

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       MINUS  .Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  136

-

-NormalAnnotation          Goto   879

-MarkerAnnotation          Goto   879

-SingleMemberAnnotation    Goto   879

-AnnotationName            Goto   81

-Annotation                Goto   879

-Annotations               Goto   879

-

-

-STATE 788 ----------------------------------------------------------------------

-( 641 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS  .Annotations SEMICOLON 

-

-Annotations ::= .Annotations Annotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-AT                        Shift  136

-

-NormalAnnotation          Goto   880

-MarkerAnnotation          Goto   880

-SingleMemberAnnotation    Goto   880

-AnnotationName            Goto   81

-Annotation                Goto   880

-Annotations               Goto   880

-

-

-STATE 789 ----------------------------------------------------------------------

-( 641 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1494

-

-

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  275

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 790 ----------------------------------------------------------------------

-( 642 )

-

-PseudoToken ::= if LPAREN Expression  .RPAREN 

-

-RPAREN    Sh/Rd  316

-

-

-STATE 791 ----------------------------------------------------------------------

-( 644 )

-

-InterTypeMethodHeader ::= InterTypeMethodHeaderName FormalParameterListopt 

-                          MethodHeaderRightParen MethodHeaderExtendedDims  .

-                          MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  248

-MethodHeaderThrowsClauseopt    Gt/Rd  248

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 792 ----------------------------------------------------------------------

-( 645 )

-

-InterTypeFieldBody ::= EQUAL ForceNoDiet VariableInitializer  .RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1495

-

-

-RestoreDiet    Gt/Rd  271

-

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 793 ----------------------------------------------------------------------

-( 646 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt  .

-                       COLON PseudoTokens 

-

-COLON    Shift  881

-

-

-STATE 794 ----------------------------------------------------------------------

-( 647 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt  .

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Goto   882

-MethodHeaderThrowsClauseopt    Goto   882

-

-COLON                          Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 795 ----------------------------------------------------------------------

-( 647 )

-

-ExtraParamopt ::= Identifier  .LPAREN FormalParameter RPAREN 

-ExtraParamopt ::= Identifier  .LPAREN RPAREN 

-ExtraParamopt ::= Identifier . (239)

-

-LPAREN    Shift  883

-

-throws    Reduce 239

-COLON     Reduce 239

-

-Default reduction to rule  239

-

-

-STATE 796 ----------------------------------------------------------------------

-( 648 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1496

-

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt  .COLON 

-                 PseudoTokens 

-

-COLON    Shift  884

-

-

-STATE 797 ----------------------------------------------------------------------

-( 649 )

-

-RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  991

-

-

-STATE 798 ----------------------------------------------------------------------

-( 649 943 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType  .

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

-TypeParametersAsReference ::= .TypeParameters 

-TypeParameters ::= .LESS TypeParameterList1 

-

-DOT                          Shift  886

-LESS                         Shift  223

-

-TypeParameters               Gt/Rd  256

-TypeParametersAsReference    Goto   885

-

-

-STATE 799 ----------------------------------------------------------------------

-( 651 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference  .

-                         DOT JavaIdentifier 

-

-DOT    Shift  887

-

-

-STATE 800 ----------------------------------------------------------------------

-( 651 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1497

-

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS  .DOT JavaIdentifier 

-

-DOT    Shift  888

-

-

-STATE 801 ----------------------------------------------------------------------

-( 651 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT  .JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT  .MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT  .JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT  .MULTIPLY DOT 

-                         JavaIdentifier 

-

-MULTIPLY                Shift  889

-Identifier              Shift  890

-declare                 Shift  890

-after                   Shift  890

-before                  Shift  890

-pointcut                Shift  890

-privileged              Shift  890

-aspect                  Shift  890

-around                  Shift  890

-

-AjSimpleNameNoAround    Goto   890

-AjSimpleName            Goto   890

-JavaIdentifier          Goto   890

-

-

-STATE 802 ----------------------------------------------------------------------

-( 658 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports . (111)

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports  .TypeDeclarations 

-

-TypeDeclarations ::= .TypeDeclarations TypeDeclaration 

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1498

-

-

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1499

-

-

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassDeclaration                       Goto   891

-InterfaceDeclaration                   Goto   891

-EnumDeclaration                        Goto   891

-AnnotationTypeDeclaration              Goto   891

-AspectDeclaration                      Goto   891

-AspectHeaderName                       Goto   125

-Modifiersopt                           Goto   139

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeader                           Goto   129

-AnnotationTypeDeclarationHeaderName    Goto   31

-Modifiers                              Goto   126

-AnnotationTypeDeclarationHeader        Goto   32

-EnumHeaderName                         Goto   29

-EnumHeader                             Goto   30

-InterfaceHeaderName                    Goto   33

-InterfaceHeaderName1                   Goto   34

-InterfaceHeader                        Goto   35

-ClassHeaderName                        Goto   36

-Modifier                               Goto   1064

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-AnnotationName                         Goto   81

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-ClassHeaderName1                       Goto   38

-ClassHeader                            Goto   39

-TypeDeclaration                        Goto   891

-TypeDeclarations                       Goto   891

-

-$eof                                   Reduce 111

-class                                  Reduce 764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1500

-

-

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 803 ----------------------------------------------------------------------

-( 660 )

-

-InternalCompilationUnit ::= ImportDeclarations ReduceImports 

-                            TypeDeclarations . (116)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1501

-

-

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1502

-

-

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 116

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 804 ----------------------------------------------------------------------

-( 661 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue  .MemberValue 

-                    ExitMemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1503

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1504

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1505

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1506

-

-

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1507

-

-

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1508

-

-

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1066

-true                                    Shift  1066

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1509

-

-

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Goto   892

-MarkerAnnotation                        Goto   892

-SingleMemberAnnotation                  Goto   892

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Goto   892

-Annotation                              Goto   892

-MemberValueArrayInitializer             Goto   892

-MemberValue                             Goto   892

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 805 ----------------------------------------------------------------------

-( 663 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1510

-

-

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList COMMA  .TypeArgument2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

-AT308                             Shift  22

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1511

-

-

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   665

-ClassOrInterface                  Goto   664

-TypeAnnotationsopt                Goto   666

-ReferenceType2                    Gt/Rd  831

-Wildcard2                         Gt/Rd  831

-Wildcard                          Gt/Rd  823

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-TypeArgument2                     Gt/Rd  831

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 806 ----------------------------------------------------------------------

-( 664 )

-

-GenericType ::= ClassOrInterface LESS  .GREATER 

-TypeArguments ::= LESS  .TypeArgumentList1 

-ReferenceType1 ::= ClassOrInterface LESS  .TypeArgumentList2 

-ReferenceType2 ::= ClassOrInterface LESS  .TypeArgumentList3 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1512

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgumentList1 ::= .TypeArgumentList COMMA TypeArgument1 

-TypeArgumentList ::= .TypeArgumentList COMMA TypeArgument 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-TypeArgumentList2 ::= .TypeArgumentList COMMA TypeArgument2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-TypeArgumentList3 ::= .TypeArgumentList COMMA TypeArgument3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1513

-

-

-Wildcard3 ::= .TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION WildcardBounds3 

-

-GREATER                           Sh/Rd  60

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType3                    Gt/Rd  835

-Wildcard3                         Gt/Rd  835

-TypeAnnotationsopt                Goto   895

-ReferenceType                     Goto   894

-TypeArgument3                     Gt/Rd  835

-TypeArgumentList                  Goto   893

-ReferenceType2                    Gt/Rd  829

-Wildcard2                         Gt/Rd  829

-ClassOrInterface                  Goto   664

-TypeArgument2                     Gt/Rd  829

-ReferenceType1                    Gt/Rd  818

-Wildcard1                         Gt/Rd  818

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-TypeAnnotations                   Goto   88

-GenericType                       Goto   89

-PrimitiveType                     Goto   204

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-TypeArgument                      Goto   893

-Wildcard                          Goto   893

-TypeArgument1                     Gt/Rd  818

-TypeArgumentList1                 Gt/Rd  818

-TypeArgumentList2                 Gt/Rd  829

-TypeArgumentList3                 Gt/Rd  835

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1514

-

-

-

-Default reduction to rule  92

-

-

-STATE 807 ----------------------------------------------------------------------

-( 666 )

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .WildcardBounds2 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-WildcardBounds2 ::= .extends ReferenceType2 

-WildcardBounds2 ::= .super ReferenceType2 

-

-RIGHT_SHIFT        Sh/Rd  849

-GREATER            Sh/Rd  845

-super              Shift  896

-extends            Shift  897

-

-WildcardBounds     Gt/Rd  842

-WildcardBounds1    Gt/Rd  846

-WildcardBounds2    Gt/Rd  850

-

-COMMA              Reduce 841

-

-Default reduction to rule  841

-

-

-STATE 808 ----------------------------------------------------------------------

-( 667 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-WildcardBounds ::= super ReferenceType . (844)

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 809 ----------------------------------------------------------------------

-( 668 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1515

-

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-WildcardBounds ::= extends ReferenceType . (843)

-

-GREATER    Sh/Rd  828

-

-COMMA      Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 810 ----------------------------------------------------------------------

-( 670 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations  .ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-

-ELLIPSIS    Shift  898

-

-

-STATE 811 ----------------------------------------------------------------------

-( 671 )

-

-FormalParameter ::= Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS  .

-                    VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  407

-

-

-STATE 812 ----------------------------------------------------------------------

-( 673 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1516

-

-

-UnannotatableName ::= UnannotatableName DOT  .SimpleName 

-VariableDeclaratorIdOrThis ::= UnannotatableName DOT  .this 

-

-this          Sh/Rd  107

-Identifier    Sh/Rd  89

-

-SimpleName    Gt/Rd  89

-

-

-STATE 813 ----------------------------------------------------------------------

-( 677 )

-

-EnumBody ::= LBRACE EnumConstants COMMA EnumBodyDeclarationsopt  .RBRACE 

-

-RBRACE    Sh/Rd  795

-

-

-STATE 814 ----------------------------------------------------------------------

-( 678 )

-

-EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody  .RestoreDiet 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Gt/Rd  801

-

-RBRACE         Reduce 382

-SEMICOLON      Reduce 382

-COMMA          Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 815 ----------------------------------------------------------------------

-( 681 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-TypeParameter ::= TypeParameterHeader extends ReferenceType . (862)

-TypeParameter ::= TypeParameterHeader extends ReferenceType  .

-                  AdditionalBoundList 

-TypeParameter1 ::= TypeParameterHeader extends ReferenceType  .

-                   AdditionalBoundList1 

-

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-AdditionalBoundList1 ::= .AdditionalBoundList AdditionalBound1 

-AdditionalBound1 ::= .AND ReferenceType1 

-

-GREATER                 Sh/Rd  828

-AND                     Shift  900

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1517

-

-

-AdditionalBound1        Gt/Rd  871

-AdditionalBoundList     Goto   899

-AdditionalBound         Goto   899

-AdditionalBoundList1    Gt/Rd  871

-

-COMMA                   Reduce 862

-

-Default reduction to rule  862

-

-

-STATE 816 ----------------------------------------------------------------------

-( 690 )

-

-CatchClause ::= catch LPAREN CatchFormalParameter  .RPAREN Block 

-

-RPAREN    Shift  901

-

-

-STATE 817 ----------------------------------------------------------------------

-( 694 )

-

-Resource ::= Modifiers Type PushRealModifiers  .VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  526

-declare                 Shift  526

-after                   Shift  526

-before                  Shift  526

-pointcut                Shift  526

-privileged              Shift  526

-aspect                  Shift  526

-around                  Shift  526

-

-AjSimpleName            Goto   526

-AjSimpleNameNoAround    Goto   526

-JavaIdentifier          Goto   526

-VariableDeclaratorId    Goto   902

-

-

-STATE 818 ----------------------------------------------------------------------

-( 695 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId  .EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1518

-

-

-EnterVariable    Goto   903

-

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 819 ----------------------------------------------------------------------

-( 697 )

-

-DoStatement ::= do Statement while LPAREN Expression  .RPAREN SEMICOLON 

-

-RPAREN    Shift  904

-

-

-STATE 820 ----------------------------------------------------------------------

-( 698 )

-

-SwitchStatement ::= switch LPAREN Expression RPAREN OpenBlock  .SwitchBlock 

-

-SwitchBlock ::= .LBRACE RBRACE 

-SwitchBlock ::= .LBRACE SwitchBlockStatements RBRACE 

-SwitchBlock ::= .LBRACE SwitchLabels RBRACE 

-SwitchBlock ::= .LBRACE SwitchBlockStatements SwitchLabels RBRACE 

-

-LBRACE         Shift  905

-

-SwitchBlock    Gt/Rd  527

-

-

-STATE 821 ----------------------------------------------------------------------

-( 701 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN  .ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1519

-

-

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1520

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1521

-

-

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1522

-

-

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1523

-

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1524

-

-

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   906

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 822 ----------------------------------------------------------------------

-( 702 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1525

-

-

-MethodInvocation ::= QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  663

-

-

-STATE 823 ----------------------------------------------------------------------

-( 703 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1526

-

-

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1527

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1528

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1529

-

-

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1530

-

-

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1531

-

-

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   907

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 824 ----------------------------------------------------------------------

-( 704 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  908

-

-

-STATE 825 ----------------------------------------------------------------------

-( 706 )

-

-DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET Expression  .RBRACKET 

-

-RBRACKET    Sh/Rd  649

-

-

-STATE 826 ----------------------------------------------------------------------

-( 707 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1532

-

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-RPAREN    Shift  909

-

-

-STATE 827 ----------------------------------------------------------------------

-( 708 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1533

-

-

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1534

-

-

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1535

-

-

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1536

-

-

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1537

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1538

-

-

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   910

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 828 ----------------------------------------------------------------------

-( 709 )

-

-MethodInvocation ::= Primary DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  662

-

-

-STATE 829 ----------------------------------------------------------------------

-( 710 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  911

-

-

-STATE 830 ----------------------------------------------------------------------

-( 711 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1539

-

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType  .

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-EnterInstanceCreationArgumentList ::= . (631)

-

-EnterInstanceCreationArgumentList    Goto   912

-

-LPAREN                               Reduce 631

-

-Default reduction to rule  631

-

-

-STATE 831 ----------------------------------------------------------------------

-( 712 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

-RPAREN    Shift  913

-

-

-STATE 832 ----------------------------------------------------------------------

-( 713 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1540

-

-

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1541

-

-

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1542

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1543

-

-

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1544

-

-

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1545

-

-

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   914

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 833 ----------------------------------------------------------------------

-( 714 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1546

-

-

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1547

-

-

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1548

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1549

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1550

-

-

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1551

-

-

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   915

-

-RPAREN                                  Reduce 770

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1552

-

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 834 ----------------------------------------------------------------------

-( 715 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1553

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1554

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1555

-

-

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1556

-

-

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1557

-

-

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1558

-

-

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   916

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 835 ----------------------------------------------------------------------

-( 716 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

-RPAREN    Shift  917

-

-

-STATE 836 ----------------------------------------------------------------------

-( 717 )

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1559

-

-

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1560

-

-

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1561

-

-

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1562

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1563

-

-

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1564

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   918

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1565

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 837 ----------------------------------------------------------------------

-( 718 )

-

-MethodInvocation ::= super DOT JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  666

-

-

-STATE 838 ----------------------------------------------------------------------

-( 720 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  425

-

-

-STATE 839 ----------------------------------------------------------------------

-( 721 )

-

-ExplicitConstructorInvocation ::= OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  423

-

-

-STATE 840 ----------------------------------------------------------------------

-( 724 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-

-else    Shift  919

-

-

-STATE 841 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-StatementNoShortIf ::= StatementWithoutTrailingSubstatement . (492)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1566

-

-

-

-else                    Reduce 492

-Identifier              Reduce 485

-abstract                Reduce 485

-assert                  Reduce 485

-boolean                 Reduce 485

-break                   Reduce 485

-byte                    Reduce 485

-case                    Reduce 485

-char                    Reduce 485

-class                   Reduce 485

-continue                Reduce 485

-default                 Reduce 485

-do                      Reduce 485

-double                  Reduce 485

-enum                    Reduce 485

-false                   Reduce 485

-final                   Reduce 485

-float                   Reduce 485

-for                     Reduce 485

-if                      Reduce 485

-int                     Reduce 485

-interface               Reduce 485

-long                    Reduce 485

-native                  Reduce 485

-new                     Reduce 485

-null                    Reduce 485

-private                 Reduce 485

-protected               Reduce 485

-public                  Reduce 485

-return                  Reduce 485

-short                   Reduce 485

-static                  Reduce 485

-strictfp                Reduce 485

-super                   Reduce 485

-switch                  Reduce 485

-synchronized            Reduce 485

-this                    Reduce 485

-throw                   Reduce 485

-transient               Reduce 485

-true                    Reduce 485

-try                     Reduce 485

-void                    Reduce 485

-volatile                Reduce 485

-while                   Reduce 485

-aspect                  Reduce 485

-pointcut                Reduce 485

-around                  Reduce 485

-before                  Reduce 485

-after                   Reduce 485

-declare                 Reduce 485

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1567

-

-

-privileged              Reduce 485

-IntegerLiteral          Reduce 485

-LongLiteral             Reduce 485

-FloatingPointLiteral    Reduce 485

-DoubleLiteral           Reduce 485

-CharacterLiteral        Reduce 485

-StringLiteral           Reduce 485

-PLUS_PLUS               Reduce 485

-MINUS_MINUS             Reduce 485

-LESS                    Reduce 485

-LPAREN                  Reduce 485

-LBRACE                  Reduce 485

-RBRACE                  Reduce 485

-SEMICOLON               Reduce 485

-AT                      Reduce 485

-BeginLambda             Reduce 485

-AT308                   Reduce 485

-$eof                    Reduce 485

-

-Default reduction to rule  485

-

-

-STATE 842 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-EnhancedForStatement ::= EnhancedForStatementHeader  .Statement 

-EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader  .

-                                  StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1568

-

-

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1569

-

-

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1570

-

-

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1571

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1572

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1573

-

-

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  810

-IfThenElseStatementNoShortIf            Gt/Rd  810

-WhileStatementNoShortIf                 Gt/Rd  810

-ForStatementNoShortIf                   Gt/Rd  810

-EnhancedForStatementNoShortIf           Gt/Rd  810

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1574

-

-

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  809

-IfThenStatement                         Gt/Rd  809

-IfThenElseStatement                     Gt/Rd  809

-WhileStatement                          Gt/Rd  809

-ForStatement                            Gt/Rd  809

-EnhancedForStatement                    Gt/Rd  809

-Statement                               Gt/Rd  809

-StatementNoShortIf                      Gt/Rd  810

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 843 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-ForStatement ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for  .LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= for  .LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1575

-

-

-EnhancedForStatementHeaderInit ::= for  .LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-LPAREN    Shift  920

-

-

-STATE 844 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-WhileStatement ::= while  .LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= while  .LPAREN Expression RPAREN StatementNoShortIf 

-

-LPAREN    Shift  921

-

-

-STATE 845 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-IfThenStatement ::= if  .LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= if  .LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if  .LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-LPAREN    Shift  922

-

-

-STATE 846 ----------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-LabeledStatement ::= Label  .COLON Statement 

-LabeledStatementNoShortIf ::= Label  .COLON StatementNoShortIf 

-

-COLON    Shift  923

-

-

-STATE 847 ----------------------------------------------------------------------

-( 726 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-

-SEMICOLON    Shift  924

-

-

-STATE 848 ----------------------------------------------------------------------

-( 727 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                   JavaIdentifier  .Dimsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1576

-

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   925

-Dimsopt                       Goto   925

-

-SEMICOLON                     Reduce 768

-COLON                         Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 849 ----------------------------------------------------------------------

-( 728 )

-

-LocalVariableDeclaration ::= Modifiers Type PushRealModifiers  .

-                             VariableDeclarators 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers  .JavaIdentifier Dimsopt 

-

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1577

-

-

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-Identifier              Shift  926

-declare                 Shift  926

-after                   Shift  926

-before                  Shift  926

-pointcut                Shift  926

-privileged              Shift  926

-aspect                  Shift  926

-around                  Shift  926

-

-VariableDeclaratorId    Goto   527

-AjSimpleName            Goto   926

-AjSimpleNameNoAround    Goto   926

-JavaIdentifier          Goto   926

-VariableDeclarator      Goto   733

-VariableDeclarators     Goto   733

-

-

-STATE 850 ----------------------------------------------------------------------

-( 731 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL  .ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   927

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1578

-

-

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 851 ----------------------------------------------------------------------

-( 734 )

-

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier . (944)

-AnnotationTypeDeclarationHeaderName ::= Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier  .

-                                        TypeParameters 

-

-TypeParameters ::= .LESS TypeParameterList1 

-

-LESS              Shift  223

-

-TypeParameters    Gt/Rd  945

-

-abstract          Reduce 944

-extends           Reduce 944

-final             Reduce 944

-implements        Reduce 944

-native            Reduce 944

-private           Reduce 944

-protected         Reduce 944

-public            Reduce 944

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1579

-

-

-static            Reduce 944

-strictfp          Reduce 944

-synchronized      Reduce 944

-transient         Reduce 944

-volatile          Reduce 944

-LBRACE            Reduce 944

-AT                Reduce 944

-$eof              Reduce 944

-

-Default reduction to rule  944

-

-

-STATE 852 ----------------------------------------------------------------------

-( 735 )

-

-ReferenceExpression ::= Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt  .IdentifierOrNew 

-

-IdentifierOrNew ::= .Identifier 

-IdentifierOrNew ::= .new 

-

-new                Sh/Rd  610

-Identifier         Sh/Rd  609

-

-IdentifierOrNew    Gt/Rd  603

-

-

-STATE 853 ----------------------------------------------------------------------

-( 737 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt  .RPAREN 

-                                  SEMICOLON 

-

-RPAREN    Shift  928

-

-

-STATE 854 ----------------------------------------------------------------------

-( 738 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN  .

-                     ArgumentListopt RPAREN 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1580

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1581

-

-

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1582

-

-

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1583

-

-

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1584

-

-

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1585

-

-

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   929

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1586

-

-

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 855 ----------------------------------------------------------------------

-( 739 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1587

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1588

-

-

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1589

-

-

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1590

-

-

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1591

-

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1592

-

-

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   930

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 856 ----------------------------------------------------------------------

-( 740 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN  .

-                                  ArgumentListopt RPAREN SEMICOLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1593

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1594

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1595

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1596

-

-

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1597

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1598

-

-

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   931

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 857 ----------------------------------------------------------------------

-( 741 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt  .

-                                  RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1599

-

-

-

-RPAREN    Shift  932

-

-

-STATE 858 ----------------------------------------------------------------------

-( 743 )

-

-CastExpression ::= BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1600

-

-

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1601

-

-

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1602

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1603

-

-

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  693

-UnaryExpressionNotPlusMinus             Gt/Rd  693

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 859 ----------------------------------------------------------------------

-( 744 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN  .InsideCastExpression UnaryExpression 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1604

-

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   933

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-PLUS_PLUS                Reduce 700

-MINUS_MINUS              Reduce 700

-PLUS                     Reduce 700

-MINUS                    Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

-Default reduction to rule  700

-

-

-STATE 860 ----------------------------------------------------------------------

-( 746 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1605

-

-

-                   ClassOrInterfaceType  .Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   934

-Dimsopt                       Goto   934

-

-AND                           Reduce 768

-RPAREN                        Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 861 ----------------------------------------------------------------------

-( 747 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt  .PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1606

-

-

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   935

-

-

-STATE 862 ----------------------------------------------------------------------

-( 749 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN  .

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   936

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1607

-

-

-

-Default reduction to rule  700

-

-

-STATE 863 ----------------------------------------------------------------------

-( 756 )

-

-PointcutDeclaration ::= PointcutHeader FormalParameterListopt 

-                        MethodHeaderRightParen COLON PseudoTokens  .SEMICOLON 

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1608

-

-

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1609

-

-

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-SEMICOLON                     Sh/Rd  222

-COLON                         Sh/Rd  287

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1610

-

-

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-false                         Shift  1093

-true                          Shift  1093

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-AT308                         Shift  22

-around                        Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-Identifier                    Shift  1095

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1611

-

-

-PseudoToken                   Gt/Rd  284

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 864 ----------------------------------------------------------------------

-( 757 )

-

-AspectHeaderRest ::= AspectHeaderRestStart PseudoTokens . (193)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1612

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1613

-

-

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1614

-

-

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1615

-

-

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 193

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 865 ----------------------------------------------------------------------

-( 759 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod  .CreateInitializer 

-                                       Block 

-

-CreateInitializer ::= . (363)

-

-CreateInitializer    Goto   937

-

-LBRACE               Reduce 363

-

-Default reduction to rule  363

-

-

-STATE 866 ----------------------------------------------------------------------

-( 760 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt  .

-                         MethodHeaderRightParen MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1616

-

-

-MethodHeaderRightParen    Goto   938

-

-

-STATE 867 ----------------------------------------------------------------------

-( 764 )

-

-IntertypeClassHeader ::= IntertypeClassHeaderName ClassHeaderExtendsopt  .

-                         ClassHeaderImplementsopt 

-

-ClassHeaderImplements ::= .implements InterfaceTypeList 

-ClassHeaderImplementsopt ::= . (776)

-

-implements                  Shift  217

-

-ClassHeaderImplements       Gt/Rd  340

-ClassHeaderImplementsopt    Gt/Rd  340

-

-LBRACE                      Reduce 776

-

-Default reduction to rule  776

-

-

-STATE 868 ----------------------------------------------------------------------

-( 766 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt  .MethodHeaderRightParen 

-                               MethodHeaderThrowsClauseopt 

-

-MethodHeaderRightParen ::= .RPAREN 

-

-RPAREN                    Sh/Rd  397

-

-MethodHeaderRightParen    Goto   939

-

-

-STATE 869 ----------------------------------------------------------------------

-( 767 )

-

-IntertypeClassHeaderName1 ::= Modifiersopt class  .OnType DOT JavaIdentifier 

-ClassHeaderName1 ::= Modifiersopt class  .JavaIdentifier 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1617

-

-

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-Identifier              Shift  1274

-declare                 Shift  1273

-after                   Shift  1273

-before                  Shift  1273

-pointcut                Shift  1273

-privileged              Shift  1273

-aspect                  Shift  1273

-around                  Shift  1273

-

-AjSimpleName            Goto   1273

-AjSimpleNameNoAround    Goto   1273

-JavaIdentifier          Goto   941

-OnType                  Goto   940

-

-

-STATE 870 ----------------------------------------------------------------------

-( 767 )

-

-MethodHeaderNameNoAround ::= Modifiersopt Type  .JavaIdentifierNoAround LPAREN 

-AroundHeaderName ::= Modifiersopt Type  .around LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-                              LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType PLUS DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType DOT MULTIPLY DOT 

-                         JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType PLUS DOT JavaIdentifier 

-InterTypeFieldHeader ::= Modifiersopt Type  .OnType TypeParametersAsReference 

-                         DOT JavaIdentifier 

-FieldDeclaration ::= Modifiersopt Type  .VariableDeclarators SEMICOLON 

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1618

-

-

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-VariableDeclarators ::= .VariableDeclarators COMMA VariableDeclarator 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable 

-                       ExitVariableWithoutInitialization 

-VariableDeclarator ::= .VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-around                    Shift  652

-declare                   Shift  1231

-after                     Shift  1231

-before                    Shift  1231

-pointcut                  Shift  1231

-privileged                Shift  1231

-aspect                    Shift  1231

-Identifier                Shift  655

-

-VariableDeclaratorId      Goto   527

-JavaIdentifier            Goto   653

-VariableDeclarator        Goto   582

-VariableDeclarators       Goto   582

-AjSimpleName              Goto   1232

-AjSimpleNameNoAround      Goto   654

-OnType                    Goto   651

-JavaIdentifierNoAround    Goto   942

-

-

-STATE 871 ----------------------------------------------------------------------

-( 767 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters  .Type 

-                             JavaIdentifierNoAround LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters  .Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .Name DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters  .GenericType 

-                                   DOT new LPAREN 

-ConstructorHeaderName ::= Modifiersopt TypeParameters  .Identifier LPAREN 

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1619

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-Identifier                        Shift  581

-AT308                             Shift  22

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   943

-GenericType                       Goto   945

-PrimitiveType                     Goto   287

-Name                              Goto   944

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1620

-

-

-QualifiedName                     Goto   1077

-ReferenceType                     Goto   943

-Type                              Goto   943

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 872 ----------------------------------------------------------------------

-( 767 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .DOT MULTIPLY DOT new 

-                                   LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name  .PLUS DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-PLUS                          Shift  946

-DOT                           Shift  947

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1621

-

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  63

-

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 873 ----------------------------------------------------------------------

-( 767 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType  .DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  948

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1622

-

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  65

-

-Identifier                    Reduce 53

-aspect                        Reduce 53

-pointcut                      Reduce 53

-around                        Reduce 53

-before                        Reduce 53

-after                         Reduce 53

-declare                       Reduce 53

-privileged                    Reduce 53

-

-Default reduction to rule  56

-

-

-STATE 874 ----------------------------------------------------------------------

-( 770 )

-

-MethodHeaderThrowsClause ::= throws ClassTypeList . (399)

-ClassTypeList ::= ClassTypeList  .COMMA ClassTypeElt 

-

-COMMA           Shift  949

-

-abstract        Reduce 399

-final           Reduce 399

-native          Reduce 399

-private         Reduce 399

-protected       Reduce 399

-public          Reduce 399

-static          Reduce 399

-strictfp        Reduce 399

-synchronized    Reduce 399

-transient       Reduce 399

-volatile        Reduce 399

-LBRACE          Reduce 399

-SEMICOLON       Reduce 399

-COLON           Reduce 399

-AT              Reduce 399

-$eof            Reduce 399

-

-Default reduction to rule  399

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1623

-

-

-

-

-STATE 875 ----------------------------------------------------------------------

-( 773 784 )

-

-DefaultValue ::= default  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1624

-

-

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1625

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1626

-

-

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1627

-

-

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1628

-

-

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1066

-true                                    Shift  1066

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-IntegerLiteral                          Shift  1066

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-AT                                      Shift  136

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1629

-

-

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  964

-MarkerAnnotation                        Gt/Rd  964

-SingleMemberAnnotation                  Gt/Rd  964

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  964

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1630

-

-

-Annotation                              Gt/Rd  964

-MemberValueArrayInitializer             Gt/Rd  964

-MemberValue                             Gt/Rd  964

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 876 ----------------------------------------------------------------------

-( 774 )

-

-StaticImportOnDemandDeclarationName ::= import static Name DOT 

-                                        RejectTypeAnnotations  .MULTIPLY 

-

-MULTIPLY    Sh/Rd  817

-

-

-STATE 877 ----------------------------------------------------------------------

-( 777 )

-

-MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA  .RBRACE 

-MemberValues ::= MemberValues COMMA  .MemberValue 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1631

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1632

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1633

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-PostfixExpression_NotName ::= .Primary 

-PostfixExpression_NotName ::= .PostIncrementExpression 

-PostfixExpression_NotName ::= .PostDecrementExpression 

-UnaryExpression_NotName ::= .PreIncrementExpression 

-UnaryExpression_NotName ::= .PreDecrementExpression 

-UnaryExpression_NotName ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression_NotName ::= .UnaryExpressionNotPlusMinus_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .PostfixExpression_NotName 

-UnaryExpressionNotPlusMinus_NotName ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus_NotName ::= .CastExpression 

-MultiplicativeExpression_NotName ::= .UnaryExpression_NotName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1634

-

-

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName MULTIPLY 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj MULTIPLY UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName DIVIDE 

-                                     UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj DIVIDE UnaryExpression 

-MultiplicativeExpression_NotName ::= .MultiplicativeExpression_NotName 

-                                     REMAINDER UnaryExpression 

-MultiplicativeExpression_NotName ::= .NameOrAj REMAINDER UnaryExpression 

-AdditiveExpression_NotName ::= .MultiplicativeExpression_NotName 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName PLUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj PLUS MultiplicativeExpression 

-AdditiveExpression_NotName ::= .AdditiveExpression_NotName MINUS 

-                               MultiplicativeExpression 

-AdditiveExpression_NotName ::= .NameOrAj MINUS MultiplicativeExpression 

-ShiftExpression_NotName ::= .AdditiveExpression_NotName 

-ShiftExpression_NotName ::= .ShiftExpression_NotName LEFT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj LEFT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj RIGHT_SHIFT AdditiveExpression 

-ShiftExpression_NotName ::= .ShiftExpression_NotName UNSIGNED_RIGHT_SHIFT 

-                            AdditiveExpression 

-ShiftExpression_NotName ::= .NameOrAj UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName 

-RelationalExpression_NotName ::= .ShiftExpression_NotName LESS ShiftExpression 

-RelationalExpression_NotName ::= .Name LESS ShiftExpression 

-RelationalExpression_NotName ::= .ShiftExpression_NotName GREATER 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName LESS_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj LESS_EQUAL ShiftExpression 

-RelationalExpression_NotName ::= .RelationalExpression_NotName GREATER_EQUAL 

-                                 ShiftExpression 

-RelationalExpression_NotName ::= .NameOrAj GREATER_EQUAL ShiftExpression 

-InstanceofExpression_NotName ::= .RelationalExpression_NotName 

-InstanceofExpression_NotName ::= .NameOrAj instanceof ReferenceType 

-InstanceofExpression_NotName ::= .InstanceofExpression_NotName instanceof 

-                                 ReferenceType 

-EqualityExpression_NotName ::= .InstanceofExpression_NotName 

-EqualityExpression_NotName ::= .EqualityExpression_NotName EQUAL_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj EQUAL_EQUAL InstanceofExpression 

-EqualityExpression_NotName ::= .EqualityExpression_NotName NOT_EQUAL 

-                               InstanceofExpression 

-EqualityExpression_NotName ::= .NameOrAj NOT_EQUAL InstanceofExpression 

-AndExpression_NotName ::= .EqualityExpression_NotName 

-AndExpression_NotName ::= .AndExpression_NotName AND EqualityExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1635

-

-

-AndExpression_NotName ::= .NameOrAj AND EqualityExpression 

-ExclusiveOrExpression_NotName ::= .AndExpression_NotName 

-ExclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName XOR 

-                                  AndExpression 

-ExclusiveOrExpression_NotName ::= .NameOrAj XOR AndExpression 

-InclusiveOrExpression_NotName ::= .ExclusiveOrExpression_NotName 

-InclusiveOrExpression_NotName ::= .InclusiveOrExpression_NotName OR 

-                                  ExclusiveOrExpression 

-InclusiveOrExpression_NotName ::= .NameOrAj OR ExclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .InclusiveOrExpression_NotName 

-ConditionalAndExpression_NotName ::= .ConditionalAndExpression_NotName AND_AND 

-                                     InclusiveOrExpression 

-ConditionalAndExpression_NotName ::= .NameOrAj AND_AND InclusiveOrExpression 

-ConditionalOrExpression_NotName ::= .ConditionalAndExpression_NotName 

-ConditionalOrExpression_NotName ::= .ConditionalOrExpression_NotName OR_OR 

-                                    ConditionalAndExpression 

-ConditionalOrExpression_NotName ::= .NameOrAj OR_OR ConditionalAndExpression 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName 

-ConditionalExpression_NotName ::= .ConditionalOrExpression_NotName QUESTION 

-                                  Expression COLON ConditionalExpression 

-ConditionalExpression_NotName ::= .NameOrAj QUESTION Expression COLON 

-                                  ConditionalExpression 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MemberValue ::= .NameOrAj 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace MemberValues RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace COMMA RBRACE 

-MemberValueArrayInitializer ::= .EnterMemberValueArrayInitializer LBRACE 

-                                PushLeftBrace RBRACE 

-EnterMemberValueArrayInitializer ::= . (985)

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  981

-AT                                      Shift  136

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-NOT                                     Shift  152

-TWIDDLE                                 Shift  153

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1066

-StringLiteral                           Shift  1066

-CharacterLiteral                        Shift  1066

-DoubleLiteral                           Shift  1066

-FloatingPointLiteral                    Shift  1066

-LongLiteral                             Shift  1066

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1636

-

-

-IntegerLiteral                          Shift  1066

-false                                   Shift  1066

-true                                    Shift  1066

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-MINUS                                   Shift  158

-PLUS                                    Shift  159

-

-ConditionalOrExpression_NotName         Goto   172

-NameOrAj                                Goto   171

-InclusiveOrExpression_NotName           Goto   170

-ConditionalAndExpression_NotName        Goto   169

-AndExpression_NotName                   Goto   168

-ExclusiveOrExpression_NotName           Goto   167

-InstanceofExpression_NotName            Goto   166

-EqualityExpression_NotName              Goto   165

-ShiftExpression_NotName                 Goto   164

-Name                                    Goto   163

-RelationalExpression_NotName            Goto   162

-MultiplicativeExpression_NotName        Goto   161

-AdditiveExpression_NotName              Goto   160

-PreIncrementExpression                  Goto   1067

-PreDecrementExpression                  Goto   1067

-UnaryExpressionNotPlusMinus_NotName     Goto   1067

-Primary                                 Goto   157

-PostIncrementExpression                 Goto   156

-PostDecrementExpression                 Goto   155

-PostfixExpression                       Goto   154

-Literal                                 Goto   1066

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1075

-FieldAccess                             Goto   1074

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1073

-ArrayAccess                             Goto   1072

-LambdaExpression                        Goto   1071

-ReferenceExpression                     Goto   1070

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1637

-

-

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1069

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1066

-ArrayCreationWithoutArrayInitializer    Goto   1068

-PostfixExpression_NotName               Goto   1067

-CastExpression                          Goto   1067

-UnaryExpression_NotName                 Goto   1067

-NormalAnnotation                        Gt/Rd  987

-MarkerAnnotation                        Gt/Rd  987

-SingleMemberAnnotation                  Gt/Rd  987

-AnnotationName                          Goto   81

-EnterMemberValueArrayInitializer        Goto   151

-ConditionalExpression_NotName           Gt/Rd  987

-Annotation                              Gt/Rd  987

-MemberValueArrayInitializer             Gt/Rd  987

-MemberValue                             Gt/Rd  987

-

-LBRACE                                  Reduce 985

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 878 ----------------------------------------------------------------------

-( 782 )

-

-UnionType ::= UnionType OR  .Type 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1638

-

-

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-TypeAnnotationsopt                Goto   84

-TypeAnnotations0                  Goto   24

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-TypeAnnotationName                Goto   23

-TypeAnnotation                    Goto   1037

-TypeAnnotations                   Goto   88

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Gt/Rd  412

-GenericType                       Goto   89

-PrimitiveType                     Goto   287

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1639

-

-

-Name                              Goto   203

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterface                  Goto   90

-SimpleName                        Gt/Rd  84

-QualifiedName                     Goto   1077

-ReferenceType                     Gt/Rd  412

-Type                              Gt/Rd  412

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 879 ----------------------------------------------------------------------

-( 787 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       MINUS Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  277

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 880 ----------------------------------------------------------------------

-( 788 )

-

-DeclareDeclaration ::= DeclareAnnotationHeader PseudoTokensNoColon COLON 

-                       PLUS Annotations  .SEMICOLON 

-Annotations ::= Annotations  .Annotation 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1640

-

-

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-SEMICOLON                 Sh/Rd  276

-AT                        Shift  136

-

-AnnotationName            Goto   81

-NormalAnnotation          Gt/Rd  279

-MarkerAnnotation          Gt/Rd  279

-SingleMemberAnnotation    Gt/Rd  279

-Annotation                Gt/Rd  279

-

-

-STATE 881 ----------------------------------------------------------------------

-( 793 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                       COLON  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1641

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1642

-

-

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1643

-

-

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1644

-

-

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   950

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 882 ----------------------------------------------------------------------

-( 794 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt  .COLON PseudoTokens 

-

-COLON    Shift  951

-

-

-STATE 883 ----------------------------------------------------------------------

-( 795 )

-

-ExtraParamopt ::= Identifier LPAREN  .FormalParameter RPAREN 

-ExtraParamopt ::= Identifier LPAREN  .RPAREN 

-

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1645

-

-

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-FormalParameter ::= .Modifiersopt Type VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type PushZeroTypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-FormalParameter ::= .Modifiersopt Type AT308DOTDOTDOT TypeAnnotations ELLIPSIS 

-                    VariableDeclaratorIdOrThis 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RPAREN                    Sh/Rd  238

-strictfp                  Shift  1064

-volatile                  Shift  1064

-transient                 Shift  1064

-synchronized              Shift  1064

-native                    Shift  1064

-final                     Shift  1064

-abstract                  Shift  1064

-static                    Shift  1064

-private                   Shift  1064

-protected                 Shift  1064

-public                    Shift  1064

-AT                        Shift  136

-

-Modifiers                 Goto   137

-SimpleModifier            Goto   1064

-Annotation                Gt/Rd  171

-AnnotationName            Goto   81

-NormalAnnotation          Goto   1047

-MarkerAnnotation          Goto   1047

-SingleMemberAnnotation    Goto   1047

-Modifier                  Goto   1064

-Modifiersopt              Goto   331

-FormalParameter           Goto   952

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1646

-

-

-Identifier                Reduce 764

-boolean                   Reduce 764

-byte                      Reduce 764

-char                      Reduce 764

-double                    Reduce 764

-float                     Reduce 764

-int                       Reduce 764

-long                      Reduce 764

-short                     Reduce 764

-void                      Reduce 764

-AT308                     Reduce 764

-

-Default reduction to rule  764

-

-

-STATE 884 ----------------------------------------------------------------------

-( 796 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON  .

-                 PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1647

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1648

-

-

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1649

-

-

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1650

-

-

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   953

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 885 ----------------------------------------------------------------------

-( 798 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference  .DOT JavaIdentifier 

-                              LPAREN 

-

-DOT    Shift  954

-

-

-STATE 886 ----------------------------------------------------------------------

-( 798 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT  .

-                              JavaIdentifier LPAREN 

-

-Identifier              Shift  955

-declare                 Shift  955

-after                   Shift  955

-before                  Shift  955

-pointcut                Shift  955

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1651

-

-

-privileged              Shift  955

-aspect                  Shift  955

-around                  Shift  955

-

-AjSimpleNameNoAround    Goto   955

-AjSimpleName            Goto   955

-JavaIdentifier          Goto   955

-

-

-STATE 887 ----------------------------------------------------------------------

-( 799 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT  .JavaIdentifier 

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT  .JavaIdentifier 

-

-Identifier              Shift  956

-declare                 Shift  956

-after                   Shift  956

-before                  Shift  956

-pointcut                Shift  956

-privileged              Shift  956

-aspect                  Shift  956

-around                  Shift  956

-

-AjSimpleNameNoAround    Goto   956

-AjSimpleName            Goto   956

-JavaIdentifier          Goto   956

-

-

-STATE 888 ----------------------------------------------------------------------

-( 800 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT  .

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT  .JavaIdentifier 

-

-Identifier              Shift  957

-declare                 Shift  957

-after                   Shift  957

-before                  Shift  957

-pointcut                Shift  957

-privileged              Shift  957

-aspect                  Shift  957

-around                  Shift  957

-

-AjSimpleNameNoAround    Goto   957

-AjSimpleName            Goto   957

-JavaIdentifier          Goto   957

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1652

-

-

-

-

-STATE 889 ----------------------------------------------------------------------

-( 801 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY  .DOT 

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY  .DOT 

-                         JavaIdentifier 

-

-DOT    Shift  958

-

-

-STATE 890 ----------------------------------------------------------------------

-( 801 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT JavaIdentifier  .

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT JavaIdentifier . (266)

-

-LPAREN       Sh/Rd  249

-

-SEMICOLON    Reduce 266

-EQUAL        Reduce 266

-PLUS         Reduce 242

-LESS         Reduce 242

-DOT          Reduce 242

-

-Default reduction to rule  242

-

-

-STATE 891 ----------------------------------------------------------------------

-( 802 )

-

-InternalCompilationUnit ::= PackageDeclaration ImportDeclarations 

-                            ReduceImports TypeDeclarations . (112)

-TypeDeclarations ::= TypeDeclarations  .TypeDeclaration 

-

-TypeDeclaration ::= .SEMICOLON 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1653

-

-

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-AspectDeclaration ::= .AspectHeader AspectBody 

-AspectHeader ::= .AspectHeaderName ClassHeaderExtendsopt 

-                 ClassHeaderImplementsopt AspectHeaderRest 

-AspectHeaderName ::= .AspectHeaderName1 

-AspectHeaderName ::= .AspectHeaderName2 

-AspectHeaderName ::= .AspectHeaderName1 TypeParameters 

-AspectHeaderName ::= .AspectHeaderName2 TypeParameters 

-AspectHeaderName1 ::= .Modifiersopt aspect Identifier 

-AspectHeaderName2 ::= .Modifiersopt privileged Modifiersopt aspect Identifier 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1654

-

-

-SEMICOLON                              Sh/Rd  154

-strictfp                               Shift  1064

-volatile                               Shift  1064

-transient                              Shift  1064

-synchronized                           Shift  1064

-native                                 Shift  1064

-final                                  Shift  1064

-abstract                               Shift  1064

-static                                 Shift  1064

-private                                Shift  1064

-protected                              Shift  1064

-public                                 Shift  1064

-AT                                     Shift  80

-

-ClassHeader                            Goto   39

-ClassHeaderName1                       Goto   38

-Modifiers                              Goto   126

-SimpleModifier                         Goto   1064

-Annotation                             Gt/Rd  171

-AnnotationName                         Goto   81

-NormalAnnotation                       Goto   1047

-MarkerAnnotation                       Goto   1047

-SingleMemberAnnotation                 Goto   1047

-Modifier                               Goto   1064

-Modifiersopt                           Goto   139

-ClassHeaderName                        Goto   36

-InterfaceHeader                        Goto   35

-InterfaceHeaderName1                   Goto   34

-InterfaceHeaderName                    Goto   33

-EnumHeader                             Goto   30

-EnumHeaderName                         Goto   29

-AnnotationTypeDeclarationHeader        Goto   32

-AnnotationTypeDeclarationHeaderName    Goto   31

-AspectHeader                           Goto   129

-AspectHeaderName1                      Goto   128

-AspectHeaderName2                      Goto   127

-AspectHeaderName                       Goto   125

-ClassDeclaration                       Gt/Rd  139

-InterfaceDeclaration                   Gt/Rd  139

-EnumDeclaration                        Gt/Rd  139

-AnnotationTypeDeclaration              Gt/Rd  139

-AspectDeclaration                      Gt/Rd  139

-TypeDeclaration                        Gt/Rd  139

-

-$eof                                   Reduce 112

-class                                  Reduce 764

-enum                                   Reduce 764

-interface                              Reduce 764

-aspect                                 Reduce 764

-privileged                             Reduce 764

-

-Default reduction to rule  764

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1655

-

-

-

-

-STATE 892 ----------------------------------------------------------------------

-( 804 )

-

-MemberValuePair ::= SimpleNameOrAj EQUAL EnterMemberValue MemberValue  .

-                    ExitMemberValue 

-

-ExitMemberValue ::= . (976)

-

-ExitMemberValue    Gt/Rd  974

-

-RPAREN             Reduce 976

-COMMA              Reduce 976

-

-Default reduction to rule  976

-

-

-STATE 893 ----------------------------------------------------------------------

-( 806 )

-

-TypeArgumentList1 ::= TypeArgumentList  .COMMA TypeArgument1 

-TypeArgumentList ::= TypeArgumentList  .COMMA TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList  .COMMA TypeArgument2 

-TypeArgumentList3 ::= TypeArgumentList  .COMMA TypeArgument3 

-

-COMMA    Shift  959

-

-

-STATE 894 ----------------------------------------------------------------------

-( 806 959 )

-

-TypeArgument ::= ReferenceType . (824)

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 824

-

-Default reduction to rule  824

-

-

-STATE 895 ----------------------------------------------------------------------

-( 806 959 )

-

-PrimitiveType ::= TypeAnnotationsopt  .NumericType 

-PrimitiveType ::= TypeAnnotationsopt  .boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1656

-

-

-PrimitiveType ::= TypeAnnotationsopt  .void 

-Wildcard ::= TypeAnnotationsopt  .QUESTION 

-Wildcard ::= TypeAnnotationsopt  .QUESTION WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION GREATER 

-Wildcard1 ::= TypeAnnotationsopt  .QUESTION WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt  .QUESTION WildcardBounds2 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= TypeAnnotationsopt  .QUESTION WildcardBounds3 

-

-QUESTION             Shift  960

-void                 Sh/Rd  45

-boolean              Sh/Rd  44

-double               Sh/Rd  41

-float                Sh/Rd  41

-char                 Sh/Rd  41

-long                 Sh/Rd  41

-int                  Sh/Rd  41

-short                Sh/Rd  41

-byte                 Sh/Rd  41

-

-IntegralType         Gt/Rd  41

-FloatingPointType    Gt/Rd  41

-NumericType          Gt/Rd  41

-

-

-STATE 896 ----------------------------------------------------------------------

-( 807 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-WildcardBounds2 ::= super  .ReferenceType2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1657

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   961

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   961

-ReferenceType1                    Gt/Rd  848

-ReferenceType2                    Gt/Rd  852

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1658

-

-

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 897 ----------------------------------------------------------------------

-( 807 )

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-WildcardBounds2 ::= extends  .ReferenceType2 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1659

-

-

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   962

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   962

-ReferenceType1                    Gt/Rd  847

-ReferenceType2                    Gt/Rd  851

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 898 ----------------------------------------------------------------------

-( 810 )

-

-FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT TypeAnnotations 

-                    ELLIPSIS  .VariableDeclaratorIdOrThis 

-

-JavaIdentifier ::= .Identifier 

-SimpleName ::= .Identifier 

-UnannotatableName ::= .UnannotatableName DOT SimpleName 

-VariableDeclaratorIdOrThis ::= .this 

-VariableDeclaratorIdOrThis ::= .UnannotatableName DOT this 

-VariableDeclaratorIdOrThis ::= .VariableDeclaratorId 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1660

-

-

-VariableDeclaratorId ::= .JavaIdentifier Dimsopt 

-

-this                          Sh/Rd  106

-declare                       Shift  526

-after                         Shift  526

-before                        Shift  526

-pointcut                      Shift  526

-privileged                    Shift  526

-aspect                        Shift  526

-around                        Shift  526

-Identifier                    Shift  672

-

-SimpleName                    Goto   673

-UnannotatableName             Goto   673

-JavaIdentifier                Goto   526

-AjSimpleNameNoAround          Goto   526

-AjSimpleName                  Goto   526

-VariableDeclaratorId          Gt/Rd  108

-VariableDeclaratorIdOrThis    Gt/Rd  408

-

-

-STATE 899 ----------------------------------------------------------------------

-( 815 )

-

-TypeParameter ::= TypeParameterHeader extends ReferenceType 

-                  AdditionalBoundList . (863)

-AdditionalBoundList ::= AdditionalBoundList  .AdditionalBound 

-AdditionalBoundList1 ::= AdditionalBoundList  .AdditionalBound1 

-

-AdditionalBound ::= .AND ReferenceType 

-AdditionalBound1 ::= .AND ReferenceType1 

-

-AND                 Shift  900

-

-AdditionalBound     Gt/Rd  865

-AdditionalBound1    Gt/Rd  873

-

-COMMA               Reduce 863

-

-Default reduction to rule  863

-

-

-STATE 900 ----------------------------------------------------------------------

-( 815 899 )

-

-AdditionalBound ::= AND  .ReferenceType 

-AdditionalBound1 ::= AND  .ReferenceType1 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1661

-

-

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   963

-ClassOrInterface                  Goto   202

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1662

-

-

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   963

-ReferenceType1                    Gt/Rd  874

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 901 ----------------------------------------------------------------------

-( 816 )

-

-CatchClause ::= catch LPAREN CatchFormalParameter RPAREN  .Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  575

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 902 ----------------------------------------------------------------------

-( 817 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId  .

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EnterVariable ::= . (378)

-

-EnterVariable    Goto   964

-

-EQUAL            Reduce 378

-

-Default reduction to rule  378

-

-

-STATE 903 ----------------------------------------------------------------------

-( 818 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1663

-

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable  .EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-EQUAL    Shift  965

-

-

-STATE 904 ----------------------------------------------------------------------

-( 819 )

-

-DoStatement ::= do Statement while LPAREN Expression RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  541

-

-

-STATE 905 ----------------------------------------------------------------------

-( 820 )

-

-SwitchBlock ::= LBRACE  .RBRACE 

-SwitchBlock ::= LBRACE  .SwitchBlockStatements RBRACE 

-SwitchBlock ::= LBRACE  .SwitchLabels RBRACE 

-SwitchBlock ::= LBRACE  .SwitchBlockStatements SwitchLabels RBRACE 

-

-SwitchBlockStatements ::= .SwitchBlockStatements SwitchBlockStatement 

-SwitchBlockStatement ::= .SwitchLabels BlockStatements 

-SwitchLabels ::= .SwitchLabels SwitchLabel 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-

-RBRACE                   Sh/Rd  528

-default                  Shift  967

-case                     Shift  968

-

-SwitchLabels             Goto   969

-SwitchLabel              Goto   969

-SwitchBlockStatement     Goto   966

-SwitchBlockStatements    Goto   966

-

-

-STATE 906 ----------------------------------------------------------------------

-( 821 )

-

-MethodInvocation ::= QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  664

-

-

-STATE 907 ----------------------------------------------------------------------

-( 823 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1664

-

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  970

-

-

-STATE 908 ----------------------------------------------------------------------

-( 824 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  629

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1665

-

-

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 909 ----------------------------------------------------------------------

-( 826 )

-

-ClassInstanceCreationExpression ::= new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    UnqualifiedClassBodyopt 

-

-UnqualifiedClassBodyopt ::= . (633)

-UnqualifiedClassBodyopt ::= .UnqualifiedEnterAnonymousClassBody ClassBody 

-UnqualifiedEnterAnonymousClassBody ::= . (635)

-

-UnqualifiedEnterAnonymousClassBody    Goto   972

-UnqualifiedClassBodyopt               Gt/Rd  626

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1666

-

-

-

-abstract                              Reduce 633

-final                                 Reduce 633

-instanceof                            Reduce 633

-native                                Reduce 633

-private                               Reduce 633

-protected                             Reduce 633

-public                                Reduce 633

-static                                Reduce 633

-strictfp                              Reduce 633

-synchronized                          Reduce 633

-transient                             Reduce 633

-volatile                              Reduce 633

-PLUS_PLUS                             Reduce 633

-MINUS_MINUS                           Reduce 633

-EQUAL_EQUAL                           Reduce 633

-LESS_EQUAL                            Reduce 633

-GREATER_EQUAL                         Reduce 633

-NOT_EQUAL                             Reduce 633

-LEFT_SHIFT                            Reduce 633

-RIGHT_SHIFT                           Reduce 633

-UNSIGNED_RIGHT_SHIFT                  Reduce 633

-PLUS_EQUAL                            Reduce 633

-MINUS_EQUAL                           Reduce 633

-MULTIPLY_EQUAL                        Reduce 633

-DIVIDE_EQUAL                          Reduce 633

-AND_EQUAL                             Reduce 633

-OR_EQUAL                              Reduce 633

-XOR_EQUAL                             Reduce 633

-REMAINDER_EQUAL                       Reduce 633

-LEFT_SHIFT_EQUAL                      Reduce 633

-RIGHT_SHIFT_EQUAL                     Reduce 633

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 633

-OR_OR                                 Reduce 633

-AND_AND                               Reduce 633

-PLUS                                  Reduce 633

-MINUS                                 Reduce 633

-REMAINDER                             Reduce 633

-XOR                                   Reduce 633

-AND                                   Reduce 633

-MULTIPLY                              Reduce 633

-OR                                    Reduce 633

-DIVIDE                                Reduce 633

-GREATER                               Reduce 633

-LESS                                  Reduce 633

-RPAREN                                Reduce 633

-RBRACE                                Reduce 633

-LBRACKET                              Reduce 633

-RBRACKET                              Reduce 633

-SEMICOLON                             Reduce 633

-QUESTION                              Reduce 633

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1667

-

-

-COLON                                 Reduce 633

-COMMA                                 Reduce 633

-DOT                                   Reduce 633

-EQUAL                                 Reduce 633

-AT                                    Reduce 633

-COLON_COLON                           Reduce 633

-ElidedSemicolonAndRightBrace          Reduce 633

-$eof                                  Reduce 633

-LBRACE                                Reduce 635

-

-Default reduction to rule  633

-

-

-STATE 910 ----------------------------------------------------------------------

-( 827 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    UnqualifiedClassBodyopt 

-

-RPAREN    Shift  973

-

-

-STATE 911 ----------------------------------------------------------------------

-( 829 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1668

-

-

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1669

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1670

-

-

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1671

-

-

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1672

-

-

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1673

-

-

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   974

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 912 ----------------------------------------------------------------------

-( 830 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1674

-

-

-                                    EnterInstanceCreationArgumentList  .LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-LPAREN    Shift  975

-

-

-STATE 913 ----------------------------------------------------------------------

-( 831 )

-

-ExplicitConstructorInvocation ::= Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  430

-

-

-STATE 914 ----------------------------------------------------------------------

-( 832 )

-

-MethodInvocation ::= Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  661

-

-

-STATE 915 ----------------------------------------------------------------------

-( 833 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  976

-

-

-STATE 916 ----------------------------------------------------------------------

-( 834 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  977

-

-

-STATE 917 ----------------------------------------------------------------------

-( 835 )

-

-ExplicitConstructorInvocation ::= Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  426

-

-

-STATE 918 ----------------------------------------------------------------------

-( 836 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1675

-

-

-MethodInvocation ::= super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  665

-

-

-STATE 919 ----------------------------------------------------------------------

-( 840 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf else  .

-                        Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1676

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1677

-

-

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1678

-

-

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1679

-

-

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1680

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  525

-Block                                   Gt/Rd  525

-EmptyStatement                          Gt/Rd  525

-ExpressionStatement                     Gt/Rd  525

-SwitchStatement                         Gt/Rd  525

-DoStatement                             Gt/Rd  525

-BreakStatement                          Gt/Rd  525

-ContinueStatement                       Gt/Rd  525

-ReturnStatement                         Gt/Rd  525

-SynchronizedStatement                   Gt/Rd  525

-ThrowStatement                          Gt/Rd  525

-TryStatement                            Gt/Rd  525

-TryStatementWithResources               Gt/Rd  525

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1681

-

-

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  525

-LabeledStatement                        Gt/Rd  525

-IfThenStatement                         Gt/Rd  525

-IfThenElseStatement                     Gt/Rd  525

-WhileStatement                          Gt/Rd  525

-ForStatement                            Gt/Rd  525

-EnhancedForStatement                    Gt/Rd  525

-Statement                               Gt/Rd  525

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 920 ----------------------------------------------------------------------

-( 843 )

-

-ForStatement ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1682

-

-

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN  .ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN  .Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1683

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifiers Modifier 

-Modifier ::= .Annotation 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForInit ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1684

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1685

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForInitopt ::= . (781)

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1686

-

-

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-AT                                      Shift  136

-strictfp                                Shift  521

-volatile                                Shift  521

-transient                               Shift  521

-synchronized                            Shift  521

-native                                  Shift  521

-final                                   Shift  521

-abstract                                Shift  521

-static                                  Shift  521

-private                                 Shift  521

-protected                               Shift  521

-public                                  Shift  521

-

-StatementExpressionList                 Goto   523

-LocalVariableDeclaration                Goto   978

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   520

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-Name                                    Goto   522

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   520

-Modifier                                Goto   521

-Modifiers                               Goto   521

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   521

-Annotation                              Gt/Rd  171

-Type                                    Goto   520

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1687

-

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1131

-ForInit                                 Goto   978

-ForInitopt                              Goto   978

-

-SEMICOLON                               Reduce 781

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 921 ----------------------------------------------------------------------

-( 844 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1688

-

-

-WhileStatement ::= while LPAREN  .Expression RPAREN Statement 

-WhileStatementNoShortIf ::= while LPAREN  .Expression RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1689

-

-

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1690

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1691

-

-

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1692

-

-

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1693

-

-

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   979

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1694

-

-

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 922 ----------------------------------------------------------------------

-( 845 )

-

-IfThenStatement ::= if LPAREN  .Expression RPAREN Statement 

-IfThenElseStatement ::= if LPAREN  .Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN  .Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1695

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1696

-

-

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1697

-

-

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1698

-

-

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1699

-

-

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1700

-

-

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-Expression                              Goto   980

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 923 ----------------------------------------------------------------------

-( 846 )

-

-LabeledStatement ::= Label COLON  .Statement 

-LabeledStatementNoShortIf ::= Label COLON  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1701

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1702

-

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1703

-

-

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1704

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1705

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1706

-

-

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  513

-IfThenElseStatementNoShortIf            Gt/Rd  513

-WhileStatementNoShortIf                 Gt/Rd  513

-ForStatementNoShortIf                   Gt/Rd  513

-EnhancedForStatementNoShortIf           Gt/Rd  513

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1707

-

-

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  512

-IfThenStatement                         Gt/Rd  512

-IfThenElseStatement                     Gt/Rd  512

-WhileStatement                          Gt/Rd  512

-ForStatement                            Gt/Rd  512

-EnhancedForStatement                    Gt/Rd  512

-Statement                               Gt/Rd  512

-StatementNoShortIf                      Gt/Rd  513

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 924 ----------------------------------------------------------------------

-( 847 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON  .

-                 ForUpdateopt RPAREN Statement 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1708

-

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1709

-

-

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForUpdate ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1710

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1711

-

-

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForUpdateopt ::= . (783)

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

-StatementExpressionList                 Goto   982

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1712

-

-

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1275

-ForUpdate                               Goto   981

-ForUpdateopt                            Goto   981

-

-RPAREN                                  Reduce 783

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 925 ----------------------------------------------------------------------

-( 848 )

-

-VariableDeclaratorId ::= JavaIdentifier Dimsopt . (383)

-EnhancedForStatementHeaderInit ::= for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt . (811)

-

-COLON        Reduce 811

-SEMICOLON    Reduce 383

-COMMA        Reduce 383

-EQUAL        Reduce 383

-

-Default reduction to rule  383

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1713

-

-

-

-

-STATE 926 ----------------------------------------------------------------------

-( 849 )

-

-VariableDeclaratorId ::= JavaIdentifier  .Dimsopt 

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier  .Dimsopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-DimsLoop                      Goto   209

-TypeAnnotations               Goto   207

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-OneDimLoop                    Goto   1079

-Dims                          Goto   983

-Dimsopt                       Goto   983

-

-SEMICOLON                     Reduce 768

-COLON                         Reduce 768

-COMMA                         Reduce 768

-EQUAL                         Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 927 ----------------------------------------------------------------------

-( 850 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1714

-

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet  .

-                       VariableInitializer RestoreDiet 

-                       ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1715

-

-

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1716

-

-

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1717

-

-

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1718

-

-

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1719

-

-

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1720

-

-

-Expression                              Goto   984

-ArrayInitializer                        Goto   984

-VariableInitializer                     Goto   984

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 928 ----------------------------------------------------------------------

-( 853 )

-

-ExplicitConstructorInvocation ::= Name DOT this LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  432

-

-

-STATE 929 ----------------------------------------------------------------------

-( 854 )

-

-MethodInvocation ::= Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt  .RPAREN 

-

-RPAREN    Sh/Rd  660

-

-

-STATE 930 ----------------------------------------------------------------------

-( 855 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  985

-

-

-STATE 931 ----------------------------------------------------------------------

-( 856 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt  .RPAREN SEMICOLON 

-

-RPAREN    Shift  986

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1721

-

-

-

-

-STATE 932 ----------------------------------------------------------------------

-( 857 )

-

-ExplicitConstructorInvocation ::= Name DOT super LPAREN ArgumentListopt 

-                                  RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  428

-

-

-STATE 933 ----------------------------------------------------------------------

-( 859 )

-

-CastExpression ::= PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression  .UnaryExpression 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1722

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1723

-

-

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1724

-

-

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1110

-true                                    Shift  1110

-null                                    Shift  1110

-StringLiteral                           Shift  1110

-CharacterLiteral                        Shift  1110

-DoubleLiteral                           Shift  1110

-FloatingPointLiteral                    Shift  1110

-LongLiteral                             Shift  1110

-IntegerLiteral                          Shift  1110

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1725

-

-

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-PostfixExpression                       Goto   483

-CastExpression                          Gt/Rd  689

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1119

-BooleanLiteral                          Goto   1110

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1110

-ClassInstanceCreationExpression         Goto   1118

-FieldAccess                             Goto   1117

-MethodInvocation                        Goto   1116

-ArrayAccess                             Goto   1115

-LambdaExpression                        Goto   1114

-ReferenceExpression                     Goto   1113

-PostIncrementExpression                 Goto   1112

-PostDecrementExpression                 Goto   1111

-PreIncrementExpression                  Gt/Rd  689

-PreDecrementExpression                  Gt/Rd  689

-UnaryExpressionNotPlusMinus             Gt/Rd  689

-UnaryExpression                         Gt/Rd  689

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1726

-

-

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 934 ----------------------------------------------------------------------

-( 860 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt  .AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-AdditionalBoundsListOpt ::= . (695)

-AdditionalBoundsListOpt ::= .AdditionalBoundList 

-AdditionalBoundList ::= .AdditionalBound 

-AdditionalBoundList ::= .AdditionalBoundList AdditionalBound 

-AdditionalBound ::= .AND ReferenceType 

-

-AND                        Shift  450

-

-AdditionalBound            Goto   1234

-AdditionalBoundList        Goto   745

-AdditionalBoundsListOpt    Goto   987

-

-RPAREN                     Reduce 695

-

-Default reduction to rule  695

-

-

-STATE 935 ----------------------------------------------------------------------

-( 861 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt PushRPAREN  .

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-InsideCastExpression ::= . (700)

-

-InsideCastExpression     Goto   988

-

-Identifier               Reduce 700

-boolean                  Reduce 700

-byte                     Reduce 700

-char                     Reduce 700

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1727

-

-

-double                   Reduce 700

-false                    Reduce 700

-float                    Reduce 700

-int                      Reduce 700

-long                     Reduce 700

-new                      Reduce 700

-null                     Reduce 700

-short                    Reduce 700

-super                    Reduce 700

-this                     Reduce 700

-true                     Reduce 700

-void                     Reduce 700

-aspect                   Reduce 700

-pointcut                 Reduce 700

-around                   Reduce 700

-before                   Reduce 700

-after                    Reduce 700

-declare                  Reduce 700

-privileged               Reduce 700

-IntegerLiteral           Reduce 700

-LongLiteral              Reduce 700

-FloatingPointLiteral     Reduce 700

-DoubleLiteral            Reduce 700

-CharacterLiteral         Reduce 700

-StringLiteral            Reduce 700

-NOT                      Reduce 700

-TWIDDLE                  Reduce 700

-LPAREN                   Reduce 700

-BeginLambda              Reduce 700

-BeginIntersectionCast    Reduce 700

-AT308                    Reduce 700

-

-Default reduction to rule  700

-

-

-STATE 936 ----------------------------------------------------------------------

-( 862 )

-

-CastExpression ::= PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression  .UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1728

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1729

-

-

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1730

-

-

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1731

-

-

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1732

-

-

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  694

-UnaryExpressionNotPlusMinus             Gt/Rd  694

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 937 ----------------------------------------------------------------------

-( 865 )

-

-ClassBodyDeclarationNoAroundMethod ::= Diet NestedMethod CreateInitializer  .

-                                       Block 

-

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-

-OpenBlock    Goto   70

-Block        Gt/Rd  204

-

-LBRACE       Reduce 467

-

-Default reduction to rule  467

-

-

-STATE 938 ----------------------------------------------------------------------

-( 866 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen  .MethodHeaderExtendedDims 

-                         MethodHeaderThrowsClauseopt 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1733

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-MethodHeaderExtendedDims ::= .Dimsopt 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-Dimsopt ::= . (768)

-Dimsopt ::= .Dims 

-

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-Dims                          Goto   1235

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dimsopt                       Gt/Rd  398

-MethodHeaderExtendedDims      Goto   989

-

-throws                        Reduce 768

-LBRACE                        Reduce 768

-SEMICOLON                     Reduce 768

-

-Default reduction to rule  768

-

-

-STATE 939 ----------------------------------------------------------------------

-( 868 )

-

-InterTypeConstructorHeader ::= InterTypeConstructorHeaderName 

-                               FormalParameterListopt MethodHeaderRightParen  .

-                               MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1734

-

-

-

-MethodHeaderThrowsClause       Gt/Rd  258

-MethodHeaderThrowsClauseopt    Gt/Rd  258

-

-LBRACE                         Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 940 ----------------------------------------------------------------------

-( 869 )

-

-OnType ::= OnType  .DOT JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType  .DOT JavaIdentifier 

-

-DOT    Shift  990

-

-

-STATE 941 ----------------------------------------------------------------------

-( 869 )

-

-OnType ::= JavaIdentifier . (241)

-ClassHeaderName1 ::= Modifiersopt class JavaIdentifier . (348)

-

-extends       Reduce 348

-implements    Reduce 348

-LESS          Reduce 348

-LBRACE        Reduce 348

-DOT           Reduce 241

-

-Default reduction to rule  348

-

-

-STATE 942 ----------------------------------------------------------------------

-( 870 )

-

-MethodHeaderNameNoAround ::= Modifiersopt Type JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  220

-

-

-STATE 943 ----------------------------------------------------------------------

-( 871 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type  .

-                             JavaIdentifierNoAround LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType DOT 

-                              JavaIdentifier LPAREN 

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type  .OnType 

-                              TypeParametersAsReference DOT JavaIdentifier 

-                              LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1735

-

-

-

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-JavaIdentifierNoAround ::= .Identifier 

-JavaIdentifierNoAround ::= .AjSimpleNameNoAround 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-OnType ::= .JavaIdentifier 

-OnType ::= .OnType DOT JavaIdentifier 

-

-around                    Shift  1249

-declare                   Shift  1248

-after                     Shift  1248

-before                    Shift  1248

-pointcut                  Shift  1248

-privileged                Shift  1248

-aspect                    Shift  1248

-Identifier                Shift  655

-

-AjSimpleName              Goto   1249

-AjSimpleNameNoAround      Goto   654

-JavaIdentifier            Gt/Rd  241

-OnType                    Goto   798

-JavaIdentifierNoAround    Goto   991

-

-

-STATE 944 ----------------------------------------------------------------------

-( 871 )

-

-ClassOrInterface ::= Name . (57)

-ArrayType ::= Name  .Dims 

-QualifiedName ::= Name  .DOT JavaIdentifier 

-QualifiedName ::= Name  .DOT TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name  .DOT new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1736

-

-

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  992

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  63

-

-Identifier                    Reduce 57

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-LESS                          Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 945 ----------------------------------------------------------------------

-( 871 )

-

-ClassOrInterfaceType ::= GenericType . (56)

-ClassOrInterface ::= GenericType  .DOT Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType  .DOT Name 

-ArrayType ::= GenericType  .Dims 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType  .

-                                   DOT new LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1737

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Dims ::= .DimsLoop 

-DimsLoop ::= .OneDimLoop 

-DimsLoop ::= .DimsLoop OneDimLoop 

-OneDimLoop ::= .LBRACKET RBRACKET 

-OneDimLoop ::= .TypeAnnotations LBRACKET RBRACKET 

-

-DOT                           Shift  993

-LBRACKET                      Shift  208

-AT308                         Shift  22

-

-OneDimLoop                    Goto   1079

-DimsLoop                      Goto   209

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   207

-Dims                          Gt/Rd  65

-

-Identifier                    Reduce 53

-aspect                        Reduce 53

-pointcut                      Reduce 53

-around                        Reduce 53

-before                        Reduce 53

-after                         Reduce 53

-declare                       Reduce 53

-privileged                    Reduce 53

-

-Default reduction to rule  56

-

-

-STATE 946 ----------------------------------------------------------------------

-( 872 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS  .DOT new LPAREN 

-

-DOT    Shift  994

-

-

-STATE 947 ----------------------------------------------------------------------

-( 872 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1738

-

-

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT  .new LPAREN 

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT  .MULTIPLY DOT new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-MULTIPLY                      Shift  995

-new                           Shift  996

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 948 ----------------------------------------------------------------------

-( 873 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT  .new LPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1739

-

-

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  997

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 949 ----------------------------------------------------------------------

-( 874 )

-

-ClassTypeList ::= ClassTypeList COMMA  .ClassTypeElt 

-

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ClassType ::= .ClassOrInterfaceType 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1740

-

-

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ClassTypeElt ::= .ClassType 

-

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-ClassOrInterfaceType          Goto   1272

-Name                          Goto   256

-GenericType                   Goto   257

-ClassOrInterface              Goto   90

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   1091

-ClassType                     Gt/Rd  415

-ClassTypeElt                  Gt/Rd  414

-

-

-STATE 950 ----------------------------------------------------------------------

-( 881 )

-

-BeforeAdviceHeader ::= BeforeAdviceHeaderName FormalParameterListopt 

-                       MethodHeaderRightParen MethodHeaderThrowsClauseopt 

-                       COLON PseudoTokens . (233)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1741

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1742

-

-

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1743

-

-

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1744

-

-

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 233

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 951 ----------------------------------------------------------------------

-( 882 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON  .PseudoTokens 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1745

-

-

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-PseudoTokens ::= .PseudoToken 

-PseudoTokens ::= .ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens ColonPseudoToken 

-PseudoTokens ::= .PseudoTokens PseudoToken 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1746

-

-

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1747

-

-

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1748

-

-

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-BooleanLiteral                Goto   1093

-TypeAnnotations               Goto   84

-TypeAnnotation                Goto   1037

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationsopt            Goto   84

-AjSimpleNameNoAround          Goto   1095

-AjSimpleName                  Goto   1095

-PseudoToken                   Gt/Rd  281

-ColonPseudoToken              Gt/Rd  282

-PseudoTokens                  Goto   998

-

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1749

-

-

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 952 ----------------------------------------------------------------------

-( 883 )

-

-ExtraParamopt ::= Identifier LPAREN FormalParameter  .RPAREN 

-

-RPAREN    Sh/Rd  237

-

-

-STATE 953 ----------------------------------------------------------------------

-( 884 )

-

-AroundHeader ::= AroundHeaderName FormalParameterListopt 

-                 MethodHeaderRightParen MethodHeaderThrowsClauseopt COLON 

-                 PseudoTokens . (227)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1750

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1751

-

-

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1752

-

-

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1753

-

-

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 227

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 954 ----------------------------------------------------------------------

-( 885 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT  .JavaIdentifier 

-                              LPAREN 

-

-Identifier              Shift  999

-declare                 Shift  999

-after                   Shift  999

-before                  Shift  999

-pointcut                Shift  999

-privileged              Shift  999

-aspect                  Shift  999

-around                  Shift  999

-

-AjSimpleNameNoAround    Goto   999

-AjSimpleName            Goto   999

-JavaIdentifier          Goto   999

-

-

-STATE 955 ----------------------------------------------------------------------

-( 886 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType DOT 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1754

-

-

-                              JavaIdentifier  .LPAREN 

-

-LPAREN    Sh/Rd  253

-

-LESS      Reduce 242

-DOT       Reduce 242

-

-Default reduction to rule  242

-

-

-STATE 956 ----------------------------------------------------------------------

-( 887 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier  .

-                              LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType TypeParametersAsReference 

-                         DOT JavaIdentifier . (269)

-

-LPAREN       Sh/Rd  252

-

-SEMICOLON    Reduce 269

-EQUAL        Reduce 269

-

-Default reduction to rule  269

-

-

-STATE 957 ----------------------------------------------------------------------

-( 888 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType PLUS DOT 

-                              JavaIdentifier  .LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType PLUS DOT JavaIdentifier .

-                          (268)

-

-LPAREN       Sh/Rd  251

-

-SEMICOLON    Reduce 268

-EQUAL        Reduce 268

-

-Default reduction to rule  268

-

-

-STATE 958 ----------------------------------------------------------------------

-( 889 )

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT  .

-                              JavaIdentifier LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT  .

-                         JavaIdentifier 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1755

-

-

-Identifier              Shift  1000

-declare                 Shift  1000

-after                   Shift  1000

-before                  Shift  1000

-pointcut                Shift  1000

-privileged              Shift  1000

-aspect                  Shift  1000

-around                  Shift  1000

-

-AjSimpleNameNoAround    Goto   1000

-AjSimpleName            Goto   1000

-JavaIdentifier          Goto   1000

-

-

-STATE 959 ----------------------------------------------------------------------

-( 893 )

-

-TypeArgumentList1 ::= TypeArgumentList COMMA  .TypeArgument1 

-TypeArgumentList ::= TypeArgumentList COMMA  .TypeArgument 

-TypeArgumentList2 ::= TypeArgumentList COMMA  .TypeArgument2 

-TypeArgumentList3 ::= TypeArgumentList COMMA  .TypeArgument3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ReferenceType ::= .ArrayType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1756

-

-

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-TypeArgument ::= .ReferenceType 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-Wildcard ::= .TypeAnnotationsopt QUESTION 

-Wildcard ::= .TypeAnnotationsopt QUESTION WildcardBounds 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION GREATER 

-Wildcard1 ::= .TypeAnnotationsopt QUESTION WildcardBounds1 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION RIGHT_SHIFT 

-Wildcard2 ::= .TypeAnnotationsopt QUESTION WildcardBounds2 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= .TypeAnnotationsopt QUESTION WildcardBounds3 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   894

-TypeAnnotationsopt                Goto   895

-ReferenceType3                    Gt/Rd  837

-Wildcard3                         Gt/Rd  837

-ClassOrInterface                  Goto   664

-ReferenceType2                    Gt/Rd  831

-Wildcard2                         Gt/Rd  831

-Wildcard                          Gt/Rd  823

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1078

-ReferenceType1                    Gt/Rd  821

-Wildcard1                         Gt/Rd  821

-TypeArgument1                     Gt/Rd  821

-TypeArgument                      Gt/Rd  823

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1757

-

-

-TypeArgument2                     Gt/Rd  831

-TypeArgument3                     Gt/Rd  837

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-QUESTION                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 960 ----------------------------------------------------------------------

-( 895 )

-

-Wildcard ::= TypeAnnotationsopt QUESTION . (841)

-Wildcard ::= TypeAnnotationsopt QUESTION  .WildcardBounds 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .GREATER 

-Wildcard1 ::= TypeAnnotationsopt QUESTION  .WildcardBounds1 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .RIGHT_SHIFT 

-Wildcard2 ::= TypeAnnotationsopt QUESTION  .WildcardBounds2 

-Wildcard3 ::= TypeAnnotationsopt QUESTION  .UNSIGNED_RIGHT_SHIFT 

-Wildcard3 ::= TypeAnnotationsopt QUESTION  .WildcardBounds3 

-

-WildcardBounds ::= .extends ReferenceType 

-WildcardBounds ::= .super ReferenceType 

-WildcardBounds1 ::= .extends ReferenceType1 

-WildcardBounds1 ::= .super ReferenceType1 

-WildcardBounds2 ::= .extends ReferenceType2 

-WildcardBounds2 ::= .super ReferenceType2 

-WildcardBounds3 ::= .extends ReferenceType3 

-WildcardBounds3 ::= .super ReferenceType3 

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  853

-RIGHT_SHIFT             Sh/Rd  849

-GREATER                 Sh/Rd  845

-super                   Shift  1001

-extends                 Shift  1002

-

-WildcardBounds          Gt/Rd  842

-WildcardBounds1         Gt/Rd  846

-WildcardBounds2         Gt/Rd  850

-WildcardBounds3         Gt/Rd  854

-

-COMMA                   Reduce 841

-

-Default reduction to rule  841

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1758

-

-

-

-

-STATE 961 ----------------------------------------------------------------------

-( 896 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-WildcardBounds ::= super ReferenceType . (844)

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 962 ----------------------------------------------------------------------

-( 897 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-WildcardBounds ::= extends ReferenceType . (843)

-

-RIGHT_SHIFT    Sh/Rd  834

-GREATER        Sh/Rd  828

-

-COMMA          Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 963 ----------------------------------------------------------------------

-( 900 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-AdditionalBound ::= AND ReferenceType . (866)

-

-GREATER    Sh/Rd  828

-

-AND        Reduce 866

-COMMA      Reduce 866

-

-Default reduction to rule  866

-

-

-STATE 964 ----------------------------------------------------------------------

-( 902 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable  .EQUAL ForceNoDiet VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1759

-

-

-             ExitVariableWithInitialization 

-

-EQUAL    Shift  1003

-

-

-STATE 965 ----------------------------------------------------------------------

-( 903 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL  .

-             ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   1004

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1760

-

-

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 966 ----------------------------------------------------------------------

-( 905 )

-

-SwitchBlock ::= LBRACE SwitchBlockStatements  .RBRACE 

-SwitchBlock ::= LBRACE SwitchBlockStatements  .SwitchLabels RBRACE 

-SwitchBlockStatements ::= SwitchBlockStatements  .SwitchBlockStatement 

-

-SwitchBlockStatement ::= .SwitchLabels BlockStatements 

-SwitchLabels ::= .SwitchLabels SwitchLabel 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-

-RBRACE                  Sh/Rd  529

-default                 Shift  967

-case                    Shift  968

-

-SwitchLabels            Goto   1005

-SwitchLabel             Goto   1005

-SwitchBlockStatement    Gt/Rd  533

-

-

-STATE 967 ----------------------------------------------------------------------

-( 905 966 969 1005 )

-

-SwitchLabel ::= default  .COLON 

-

-COLON    Sh/Rd  538

-

-

-STATE 968 ----------------------------------------------------------------------

-( 905 966 969 1005 )

-

-SwitchLabel ::= case  .ConstantExpression COLON 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1761

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1762

-

-

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1763

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1764

-

-

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1765

-

-

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1766

-

-

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1006

-ConstantExpression                      Goto   1006

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 969 ----------------------------------------------------------------------

-( 905 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1767

-

-

-SwitchBlock ::= LBRACE SwitchLabels  .RBRACE 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-SwitchLabels ::= SwitchLabels  .SwitchLabel 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1768

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1769

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1770

-

-

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1771

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1772

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1773

-

-

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  530

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1774

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-default                                 Shift  967

-case                                    Shift  968

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1775

-

-

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1776

-

-

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   1007

-SwitchLabel                             Gt/Rd  536

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 970 ----------------------------------------------------------------------

-( 907 )

-

-ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1777

-

-

-QualifiedClassBodyopt               Gt/Rd  630

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1778

-

-

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 971 ----------------------------------------------------------------------

-( 908 970 1008 1025 )

-

-QualifiedClassBodyopt ::= QualifiedEnterAnonymousClassBody  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  637

-

-

-STATE 972 ----------------------------------------------------------------------

-( 909 973 )

-

-UnqualifiedClassBodyopt ::= UnqualifiedEnterAnonymousClassBody  .ClassBody 

-

-ClassBody ::= .LBRACE ClassBodyDeclarationsopt RBRACE 

-

-LBRACE       Shift  229

-

-ClassBody    Gt/Rd  634

-

-

-STATE 973 ----------------------------------------------------------------------

-( 910 )

-

-ClassInstanceCreationExpression ::= new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    UnqualifiedClassBodyopt 

-

-UnqualifiedClassBodyopt ::= . (633)

-UnqualifiedClassBodyopt ::= .UnqualifiedEnterAnonymousClassBody ClassBody 

-UnqualifiedEnterAnonymousClassBody ::= . (635)

-

-UnqualifiedEnterAnonymousClassBody    Goto   972

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1779

-

-

-UnqualifiedClassBodyopt               Gt/Rd  625

-

-abstract                              Reduce 633

-final                                 Reduce 633

-instanceof                            Reduce 633

-native                                Reduce 633

-private                               Reduce 633

-protected                             Reduce 633

-public                                Reduce 633

-static                                Reduce 633

-strictfp                              Reduce 633

-synchronized                          Reduce 633

-transient                             Reduce 633

-volatile                              Reduce 633

-PLUS_PLUS                             Reduce 633

-MINUS_MINUS                           Reduce 633

-EQUAL_EQUAL                           Reduce 633

-LESS_EQUAL                            Reduce 633

-GREATER_EQUAL                         Reduce 633

-NOT_EQUAL                             Reduce 633

-LEFT_SHIFT                            Reduce 633

-RIGHT_SHIFT                           Reduce 633

-UNSIGNED_RIGHT_SHIFT                  Reduce 633

-PLUS_EQUAL                            Reduce 633

-MINUS_EQUAL                           Reduce 633

-MULTIPLY_EQUAL                        Reduce 633

-DIVIDE_EQUAL                          Reduce 633

-AND_EQUAL                             Reduce 633

-OR_EQUAL                              Reduce 633

-XOR_EQUAL                             Reduce 633

-REMAINDER_EQUAL                       Reduce 633

-LEFT_SHIFT_EQUAL                      Reduce 633

-RIGHT_SHIFT_EQUAL                     Reduce 633

-UNSIGNED_RIGHT_SHIFT_EQUAL            Reduce 633

-OR_OR                                 Reduce 633

-AND_AND                               Reduce 633

-PLUS                                  Reduce 633

-MINUS                                 Reduce 633

-REMAINDER                             Reduce 633

-XOR                                   Reduce 633

-AND                                   Reduce 633

-MULTIPLY                              Reduce 633

-OR                                    Reduce 633

-DIVIDE                                Reduce 633

-GREATER                               Reduce 633

-LESS                                  Reduce 633

-RPAREN                                Reduce 633

-RBRACE                                Reduce 633

-LBRACKET                              Reduce 633

-RBRACKET                              Reduce 633

-SEMICOLON                             Reduce 633

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1780

-

-

-QUESTION                              Reduce 633

-COLON                                 Reduce 633

-COMMA                                 Reduce 633

-DOT                                   Reduce 633

-EQUAL                                 Reduce 633

-AT                                    Reduce 633

-COLON_COLON                           Reduce 633

-ElidedSemicolonAndRightBrace          Reduce 633

-$eof                                  Reduce 633

-LBRACE                                Reduce 635

-

-Default reduction to rule  633

-

-

-STATE 974 ----------------------------------------------------------------------

-( 911 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  1008

-

-

-STATE 975 ----------------------------------------------------------------------

-( 912 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN  .

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1781

-

-

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1782

-

-

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArgumentList ::= .Expression 

-ArgumentList ::= .ArgumentList COMMA Expression 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1783

-

-

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1784

-

-

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-ArgumentListopt ::= . (770)

-ArgumentListopt ::= .ArgumentList 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1785

-

-

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-Expression                              Gt/Rd  639

-ArgumentList                            Goto   487

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-PostfixExpression                       Goto   116

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalAndExpression                Goto   115

-ConditionalOrExpression                 Goto   114

-ExclusiveOrExpression                   Goto   113

-InclusiveOrExpression                   Goto   112

-EqualityExpression                      Goto   111

-AndExpression                           Goto   110

-RelationalExpression                    Goto   109

-InstanceofExpression                    Goto   108

-AdditiveExpression                      Goto   107

-ShiftExpression                         Goto   106

-UnaryExpression                         Goto   1052

-MultiplicativeExpression                Goto   105

-CastExpression                          Goto   1052

-PushLPAREN                              Goto   102

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1062

-BooleanLiteral                          Goto   1050

-Primary                                 Goto   100

-ClassInstanceCreationExpressionName     Goto   60

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1786

-

-

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1061

-Name                                    Goto   99

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-QualifiedSuperReceiver                  Goto   59

-TypeAnnotationsopt                      Goto   84

-NameOrAj                                Goto   58

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1051

-LambdaParameters                        Goto   56

-PrimitiveType                           Goto   96

-Literal                                 Goto   1050

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-AssignmentExpression                    Gt/Rd  754

-ArgumentListopt                         Goto   1009

-

-RPAREN                                  Reduce 770

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 976 ----------------------------------------------------------------------

-( 915 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1787

-

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  431

-

-

-STATE 977 ----------------------------------------------------------------------

-( 916 )

-

-ExplicitConstructorInvocation ::= Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  427

-

-

-STATE 978 ----------------------------------------------------------------------

-( 920 )

-

-ForStatement ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt  .SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-SEMICOLON    Shift  1010

-

-

-STATE 979 ----------------------------------------------------------------------

-( 921 )

-

-WhileStatement ::= while LPAREN Expression  .RPAREN Statement 

-WhileStatementNoShortIf ::= while LPAREN Expression  .RPAREN StatementNoShortIf 

-

-RPAREN    Shift  1011

-

-

-STATE 980 ----------------------------------------------------------------------

-( 922 )

-

-IfThenStatement ::= if LPAREN Expression  .RPAREN Statement 

-IfThenElseStatement ::= if LPAREN Expression  .RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression  .RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-

-RPAREN    Shift  1012

-

-

-STATE 981 ----------------------------------------------------------------------

-( 924 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1788

-

-

-                 ForUpdateopt  .RPAREN Statement 

-

-RPAREN    Shift  1013

-

-

-STATE 982 ----------------------------------------------------------------------

-( 924 1032 )

-

-ForUpdate ::= StatementExpressionList . (546)

-StatementExpressionList ::= StatementExpressionList  .COMMA StatementExpression 

-

-COMMA     Shift  729

-

-RPAREN    Reduce 784

-

-Default reduction to rule  546

-

-

-STATE 983 ----------------------------------------------------------------------

-( 926 )

-

-VariableDeclaratorId ::= JavaIdentifier Dimsopt . (383)

-EnhancedForStatementHeaderInit ::= for LPAREN Modifiers Type 

-                                   PushRealModifiers JavaIdentifier Dimsopt .

-                                    (812)

-

-COLON        Reduce 812

-SEMICOLON    Reduce 383

-COMMA        Reduce 383

-EQUAL        Reduce 383

-

-Default reduction to rule  383

-

-

-STATE 984 ----------------------------------------------------------------------

-( 927 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer  .RestoreDiet 

-                       ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1014

-

-SEMICOLON      Reduce 382

-COMMA          Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 985 ----------------------------------------------------------------------

-( 930 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1789

-

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  433

-

-

-STATE 986 ----------------------------------------------------------------------

-( 931 )

-

-ExplicitConstructorInvocation ::= Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN  .SEMICOLON 

-

-SEMICOLON    Sh/Rd  429

-

-

-STATE 987 ----------------------------------------------------------------------

-( 934 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt  .

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-PushRPAREN ::= .RPAREN 

-

-RPAREN        Sh/Rd  578

-

-PushRPAREN    Goto   1015

-

-

-STATE 988 ----------------------------------------------------------------------

-( 935 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression 

-                   Dimsopt AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression  .UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1790

-

-

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1791

-

-

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1792

-

-

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1793

-

-

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1794

-

-

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  690

-UnaryExpressionNotPlusMinus             Gt/Rd  690

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 989 ----------------------------------------------------------------------

-( 938 )

-

-MethodHeaderNoAround ::= MethodHeaderNameNoAround FormalParameterListopt 

-                         MethodHeaderRightParen MethodHeaderExtendedDims  .

-                         MethodHeaderThrowsClauseopt 

-

-MethodHeaderThrowsClause ::= .throws ClassTypeList 

-MethodHeaderThrowsClauseopt ::= . (772)

-

-throws                         Shift  770

-

-MethodHeaderThrowsClause       Gt/Rd  218

-MethodHeaderThrowsClauseopt    Gt/Rd  218

-

-LBRACE                         Reduce 772

-SEMICOLON                      Reduce 772

-

-Default reduction to rule  772

-

-

-STATE 990 ----------------------------------------------------------------------

-( 940 )

-

-OnType ::= OnType DOT  .JavaIdentifier 

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT  .JavaIdentifier 

-

-Identifier              Shift  1016

-declare                 Shift  1016

-after                   Shift  1016

-before                  Shift  1016

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1795

-

-

-pointcut                Shift  1016

-privileged              Shift  1016

-aspect                  Shift  1016

-around                  Shift  1016

-

-AjSimpleNameNoAround    Goto   1016

-AjSimpleName            Goto   1016

-JavaIdentifier          Goto   1016

-

-

-STATE 991 ----------------------------------------------------------------------

-( 943 )

-

-MethodHeaderNameNoAround ::= Modifiersopt TypeParameters Type 

-                             JavaIdentifierNoAround  .LPAREN 

-

-LPAREN    Sh/Rd  219

-

-

-STATE 992 ----------------------------------------------------------------------

-( 944 )

-

-QualifiedName ::= Name DOT  .JavaIdentifier 

-QualifiedName ::= Name DOT  .TypeAnnotations JavaIdentifier 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT  .new 

-                                   LPAREN 

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  1017

-Identifier                    Sh/Rd  90

-declare                       Sh/Rd  90

-after                         Sh/Rd  90

-before                        Sh/Rd  90

-pointcut                      Sh/Rd  90

-privileged                    Sh/Rd  90

-aspect                        Sh/Rd  90

-around                        Sh/Rd  90

-AT308                         Shift  22

-

-TypeAnnotation                Goto   1037

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1796

-

-

-TypeAnnotations0              Goto   24

-TypeAnnotationName            Goto   23

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-AjSimpleNameNoAround          Gt/Rd  90

-AjSimpleName                  Gt/Rd  90

-JavaIdentifier                Gt/Rd  90

-TypeAnnotations               Goto   538

-

-

-STATE 993 ----------------------------------------------------------------------

-( 945 )

-

-ClassOrInterface ::= GenericType DOT  .Name 

-ArrayTypeWithTypeArgumentsName ::= GenericType DOT  .Name 

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType 

-                                   DOT  .new LPAREN 

-

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-

-new                           Shift  1018

-AT308                         Shift  22

-Identifier                    Shift  1076

-

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-Name                          Goto   541

-SimpleName                    Gt/Rd  84

-TypeAnnotations               Goto   212

-QualifiedName                 Goto   541

-

-

-STATE 994 ----------------------------------------------------------------------

-( 946 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1797

-

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT  .new LPAREN 

-

-new    Shift  1019

-

-

-STATE 995 ----------------------------------------------------------------------

-( 947 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY  .DOT new 

-                                   LPAREN 

-

-DOT    Shift  1020

-

-

-STATE 996 ----------------------------------------------------------------------

-( 947 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  259

-

-

-STATE 997 ----------------------------------------------------------------------

-( 948 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt GenericType DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  263

-

-

-STATE 998 ----------------------------------------------------------------------

-( 951 )

-

-AfterAdviceHeader ::= AfterAdviceHeaderName FormalParameterListopt 

-                      MethodHeaderRightParen ExtraParamopt 

-                      MethodHeaderThrowsClauseopt COLON PseudoTokens . (234)

-PseudoTokens ::= PseudoTokens  .ColonPseudoToken 

-PseudoTokens ::= PseudoTokens  .PseudoToken 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1798

-

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-ColonPseudoToken ::= .COLON 

-PseudoToken ::= .JavaIdentifier 

-PseudoToken ::= .LPAREN 

-PseudoToken ::= .RPAREN 

-PseudoToken ::= .DOT 

-PseudoToken ::= .MULTIPLY 

-PseudoToken ::= .PLUS 

-PseudoToken ::= .EQUAL 

-PseudoToken ::= .AND_AND 

-PseudoToken ::= .OR_OR 

-PseudoToken ::= .NOT 

-PseudoToken ::= .COMMA 

-PseudoToken ::= .LBRACKET 

-PseudoToken ::= .RBRACKET 

-PseudoToken ::= .AT 

-PseudoToken ::= .ELLIPSIS 

-PseudoToken ::= .QUESTION 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1799

-

-

-PseudoToken ::= .LESS 

-PseudoToken ::= .GREATER 

-PseudoToken ::= .RIGHT_SHIFT 

-PseudoToken ::= .UNSIGNED_RIGHT_SHIFT 

-PseudoToken ::= .AND 

-PseudoToken ::= .NOT_EQUAL 

-PseudoToken ::= .PrimitiveType 

-PseudoToken ::= .SimpleModifier 

-PseudoToken ::= .Literal 

-PseudoToken ::= .this 

-PseudoToken ::= .class 

-PseudoToken ::= .super 

-PseudoToken ::= .if LPAREN Expression RPAREN 

-PseudoToken ::= .assert 

-PseudoToken ::= .import 

-PseudoToken ::= .package 

-PseudoToken ::= .throw 

-PseudoToken ::= .new 

-PseudoToken ::= .do 

-PseudoToken ::= .for 

-PseudoToken ::= .switch 

-PseudoToken ::= .try 

-PseudoToken ::= .while 

-PseudoToken ::= .break 

-PseudoToken ::= .continue 

-PseudoToken ::= .return 

-PseudoToken ::= .case 

-PseudoToken ::= .catch 

-PseudoToken ::= .instanceof 

-PseudoToken ::= .else 

-PseudoToken ::= .extends 

-PseudoToken ::= .finally 

-PseudoToken ::= .implements 

-PseudoToken ::= .throws 

-

-COLON                         Sh/Rd  287

-Identifier                    Shift  1095

-declare                       Shift  1095

-after                         Shift  1095

-before                        Shift  1095

-pointcut                      Shift  1095

-privileged                    Shift  1095

-aspect                        Shift  1095

-around                        Shift  1095

-AT308                         Shift  22

-strictfp                      Shift  1094

-volatile                      Shift  1094

-transient                     Shift  1094

-synchronized                  Shift  1094

-native                        Shift  1094

-final                         Shift  1094

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1800

-

-

-abstract                      Shift  1094

-static                        Shift  1094

-private                       Shift  1094

-protected                     Shift  1094

-public                        Shift  1094

-null                          Shift  1093

-StringLiteral                 Shift  1093

-CharacterLiteral              Shift  1093

-DoubleLiteral                 Shift  1093

-FloatingPointLiteral          Shift  1093

-LongLiteral                   Shift  1093

-IntegerLiteral                Shift  1093

-false                         Shift  1093

-true                          Shift  1093

-throws                        Sh/Rd  337

-implements                    Sh/Rd  336

-finally                       Sh/Rd  335

-extends                       Sh/Rd  334

-else                          Sh/Rd  333

-instanceof                    Sh/Rd  332

-catch                         Sh/Rd  331

-case                          Sh/Rd  330

-return                        Sh/Rd  329

-continue                      Sh/Rd  328

-break                         Sh/Rd  327

-while                         Sh/Rd  326

-try                           Sh/Rd  325

-switch                        Sh/Rd  324

-for                           Sh/Rd  323

-do                            Sh/Rd  322

-new                           Sh/Rd  321

-throw                         Sh/Rd  320

-package                       Sh/Rd  319

-import                        Sh/Rd  318

-assert                        Sh/Rd  317

-if                            Shift  414

-super                         Sh/Rd  315

-class                         Sh/Rd  314

-this                          Sh/Rd  313

-NOT_EQUAL                     Sh/Rd  309

-AND                           Sh/Rd  308

-UNSIGNED_RIGHT_SHIFT          Sh/Rd  307

-RIGHT_SHIFT                   Sh/Rd  306

-GREATER                       Sh/Rd  305

-LESS                          Sh/Rd  304

-QUESTION                      Sh/Rd  303

-ELLIPSIS                      Sh/Rd  302

-AT                            Sh/Rd  301

-RBRACKET                      Sh/Rd  300

-LBRACKET                      Sh/Rd  299

-COMMA                         Sh/Rd  298

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1801

-

-

-NOT                           Sh/Rd  297

-OR_OR                         Sh/Rd  296

-AND_AND                       Sh/Rd  295

-EQUAL                         Sh/Rd  294

-PLUS                          Sh/Rd  293

-MULTIPLY                      Sh/Rd  292

-DOT                           Sh/Rd  291

-RPAREN                        Sh/Rd  290

-LPAREN                        Sh/Rd  289

-

-AjSimpleName                  Goto   1095

-AjSimpleNameNoAround          Goto   1095

-TypeAnnotationsopt            Goto   84

-TypeAnnotations0              Goto   24

-NormalTypeAnnotation          Gt/Rd  97

-MarkerTypeAnnotation          Gt/Rd  98

-SingleMemberTypeAnnotation    Gt/Rd  99

-TypeAnnotationName            Goto   23

-TypeAnnotation                Goto   1037

-TypeAnnotations               Goto   84

-BooleanLiteral                Goto   1093

-JavaIdentifier                Gt/Rd  288

-PrimitiveType                 Gt/Rd  310

-SimpleModifier                Gt/Rd  311

-Literal                       Gt/Rd  312

-ColonPseudoToken              Gt/Rd  283

-PseudoToken                   Gt/Rd  284

-

-LBRACE                        Reduce 234

-boolean                       Reduce 92

-byte                          Reduce 92

-char                          Reduce 92

-double                        Reduce 92

-float                         Reduce 92

-int                           Reduce 92

-long                          Reduce 92

-short                         Reduce 92

-void                          Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 999 ----------------------------------------------------------------------

-( 954 )

-

-InterTypeMethodHeaderName ::= Modifiersopt TypeParameters Type OnType 

-                              TypeParametersAsReference DOT JavaIdentifier  .

-                              LPAREN 

-

-LPAREN    Sh/Rd  254

-

-

-STATE 1000 ---------------------------------------------------------------------

-( 958 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1802

-

-

-InterTypeMethodHeaderName ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                              JavaIdentifier  .LPAREN 

-InterTypeFieldHeader ::= Modifiersopt Type OnType DOT MULTIPLY DOT 

-                         JavaIdentifier . (267)

-

-LPAREN       Sh/Rd  250

-

-SEMICOLON    Reduce 267

-EQUAL        Reduce 267

-

-Default reduction to rule  267

-

-

-STATE 1001 ---------------------------------------------------------------------

-( 960 )

-

-WildcardBounds ::= super  .ReferenceType 

-WildcardBounds1 ::= super  .ReferenceType1 

-WildcardBounds2 ::= super  .ReferenceType2 

-WildcardBounds3 ::= super  .ReferenceType3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1803

-

-

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   1021

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1021

-ReferenceType1                    Gt/Rd  848

-ReferenceType2                    Gt/Rd  852

-ReferenceType3                    Gt/Rd  856

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1002 ---------------------------------------------------------------------

-( 960 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1804

-

-

-WildcardBounds ::= extends  .ReferenceType 

-WildcardBounds1 ::= extends  .ReferenceType1 

-WildcardBounds2 ::= extends  .ReferenceType2 

-WildcardBounds3 ::= extends  .ReferenceType3 

-

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ReferenceType1 ::= .ReferenceType GREATER 

-ReferenceType1 ::= .ClassOrInterface LESS TypeArgumentList2 

-ReferenceType2 ::= .ReferenceType RIGHT_SHIFT 

-ReferenceType2 ::= .ClassOrInterface LESS TypeArgumentList3 

-ReferenceType3 ::= .ReferenceType UNSIGNED_RIGHT_SHIFT 

-

-AT308                             Shift  22

-Identifier                        Shift  1076

-

-ReferenceType                     Goto   1022

-ClassOrInterface                  Goto   664

-GenericType                       Goto   89

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1805

-

-

-SimpleName                        Gt/Rd  84

-TypeAnnotations                   Goto   88

-QualifiedName                     Goto   1077

-Name                              Goto   203

-TypeAnnotation                    Goto   1037

-TypeAnnotations0                  Goto   24

-TypeAnnotationName                Goto   23

-NormalTypeAnnotation              Gt/Rd  97

-MarkerTypeAnnotation              Gt/Rd  98

-SingleMemberTypeAnnotation        Gt/Rd  99

-PrimitiveType                     Goto   204

-ArrayTypeWithTypeArgumentsName    Goto   85

-TypeAnnotationsopt                Goto   84

-ClassOrInterfaceType              Gt/Rd  53

-ArrayType                         Goto   1022

-ReferenceType1                    Gt/Rd  847

-ReferenceType2                    Gt/Rd  851

-ReferenceType3                    Gt/Rd  855

-

-boolean                           Reduce 92

-byte                              Reduce 92

-char                              Reduce 92

-double                            Reduce 92

-float                             Reduce 92

-int                               Reduce 92

-long                              Reduce 92

-short                             Reduce 92

-void                              Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1003 ---------------------------------------------------------------------

-( 964 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL  .ForceNoDiet VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-ForceNoDiet ::= . (381)

-

-ForceNoDiet              Goto   1023

-

-Identifier               Reduce 381

-boolean                  Reduce 381

-byte                     Reduce 381

-char                     Reduce 381

-double                   Reduce 381

-false                    Reduce 381

-float                    Reduce 381

-int                      Reduce 381

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1806

-

-

-long                     Reduce 381

-new                      Reduce 381

-null                     Reduce 381

-short                    Reduce 381

-super                    Reduce 381

-this                     Reduce 381

-true                     Reduce 381

-void                     Reduce 381

-aspect                   Reduce 381

-pointcut                 Reduce 381

-around                   Reduce 381

-before                   Reduce 381

-after                    Reduce 381

-declare                  Reduce 381

-privileged               Reduce 381

-IntegerLiteral           Reduce 381

-LongLiteral              Reduce 381

-FloatingPointLiteral     Reduce 381

-DoubleLiteral            Reduce 381

-CharacterLiteral         Reduce 381

-StringLiteral            Reduce 381

-PLUS_PLUS                Reduce 381

-MINUS_MINUS              Reduce 381

-PLUS                     Reduce 381

-MINUS                    Reduce 381

-NOT                      Reduce 381

-TWIDDLE                  Reduce 381

-LPAREN                   Reduce 381

-LBRACE                   Reduce 381

-BeginLambda              Reduce 381

-BeginIntersectionCast    Reduce 381

-AT308                    Reduce 381

-

-Default reduction to rule  381

-

-

-STATE 1004 ---------------------------------------------------------------------

-( 965 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet  .VariableInitializer RestoreDiet 

-             ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1807

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1808

-

-

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1809

-

-

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1810

-

-

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1811

-

-

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1812

-

-

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1024

-ArrayInitializer                        Goto   1024

-VariableInitializer                     Goto   1024

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1813

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1005 ---------------------------------------------------------------------

-( 966 )

-

-SwitchBlock ::= LBRACE SwitchBlockStatements SwitchLabels  .RBRACE 

-SwitchBlockStatement ::= SwitchLabels  .BlockStatements 

-SwitchLabels ::= SwitchLabels  .SwitchLabel 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1814

-

-

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1815

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatements ::= .BlockStatement 

-BlockStatements ::= .BlockStatements BlockStatement 

-BlockStatement ::= .LocalVariableDeclarationStatement 

-BlockStatement ::= .Statement 

-BlockStatement ::= .ClassDeclaration 

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-Statement ::= .StatementWithoutTrailingSubstatement 

-Statement ::= .LabeledStatement 

-Statement ::= .IfThenStatement 

-Statement ::= .IfThenElseStatement 

-Statement ::= .WhileStatement 

-Statement ::= .ForStatement 

-Statement ::= .EnhancedForStatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1816

-

-

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-SwitchLabel ::= .case ConstantExpression COLON 

-SwitchLabel ::= .default COLON 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1817

-

-

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1818

-

-

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1819

-

-

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-RBRACE                                  Sh/Rd  531

-AT308                                   Shift  22

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-declare                                 Shift  1040

-after                                   Shift  1040

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1820

-

-

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Shift  82

-throw                                   Shift  41

-try                                     Shift  40

-AT                                      Shift  80

-default                                 Shift  967

-case                                    Shift  968

-

-LocalVariableDeclarationStatement       Goto   1049

-Statement                               Goto   1049

-ClassDeclaration                        Goto   1049

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-EnumHeaderName                          Goto   29

-Modifiersopt                            Goto   37

-EnumHeader                              Goto   30

-AnnotationTypeDeclarationHeaderName     Goto   31

-Modifiers                               Goto   83

-AnnotationTypeDeclarationHeader         Goto   32

-InterfaceHeaderName                     Goto   33

-InterfaceHeaderName1                    Goto   34

-InterfaceHeader                         Goto   35

-ClassHeaderName                         Goto   36

-ClassHeaderName1                        Goto   38

-ClassHeader                             Goto   39

-AssertStatement                         Goto   1049

-Block                                   Goto   1049

-EmptyStatement                          Goto   1049

-ExpressionStatement                     Goto   1049

-SwitchStatement                         Goto   1049

-DoStatement                             Goto   1049

-BreakStatement                          Goto   1049

-ContinueStatement                       Goto   1049

-ReturnStatement                         Goto   1049

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1821

-

-

-SynchronizedStatement                   Goto   1049

-ThrowStatement                          Goto   1049

-TryStatement                            Goto   1049

-TryStatementWithResources               Goto   1049

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   87

-PrimitiveType                           Goto   91

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Goto   1049

-LabeledStatement                        Goto   1049

-IfThenStatement                         Goto   1049

-IfThenElseStatement                     Goto   1049

-WhileStatement                          Goto   1049

-ForStatement                            Goto   1049

-EnhancedForStatement                    Goto   1049

-Type                                    Goto   79

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1822

-

-

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-AnnotationName                          Goto   81

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-Modifier                                Goto   1038

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-TypeAnnotations                         Goto   88

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-GenericType                             Goto   89

-ArrayTypeWithTypeArgumentsName          Goto   85

-ClassOrInterface                        Goto   90

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1048

-ReferenceType                           Goto   79

-LocalVariableDeclaration                Goto   92

-BlockStatement                          Gt/Rd  468

-BlockStatements                         Goto   1007

-SwitchLabel                             Gt/Rd  536

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-LBRACE                                  Reduce 467

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-

-Default reduction to rule  92

-

-

-STATE 1006 ---------------------------------------------------------------------

-( 968 )

-

-SwitchLabel ::= case ConstantExpression  .COLON 

-

-COLON    Sh/Rd  537

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1823

-

-

-

-

-STATE 1007 ---------------------------------------------------------------------

-( 969 1005 )

-

-BlockStatements ::= BlockStatements  .BlockStatement 

-SwitchBlockStatement ::= SwitchLabels BlockStatements . (534)

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-Type ::= .PrimitiveType 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-ReferenceType ::= .ClassOrInterfaceType 

-ClassOrInterfaceType ::= .ClassOrInterface 

-ClassOrInterfaceType ::= .GenericType 

-ClassOrInterface ::= .Name 

-ClassOrInterface ::= .GenericType DOT Name 

-GenericType ::= .ClassOrInterface TypeArguments 

-GenericType ::= .ClassOrInterface LESS GREATER 

-ArrayTypeWithTypeArgumentsName ::= .GenericType DOT Name 

-ArrayType ::= .PrimitiveType Dims 

-ArrayType ::= .Name Dims 

-ArrayType ::= .ArrayTypeWithTypeArgumentsName Dims 

-ArrayType ::= .GenericType Dims 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1824

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-Modifiers ::= .Modifier 

-Modifiers ::= .Modifiers Modifier 

-SimpleModifier ::= .public 

-SimpleModifier ::= .protected 

-SimpleModifier ::= .private 

-SimpleModifier ::= .static 

-SimpleModifier ::= .abstract 

-SimpleModifier ::= .final 

-SimpleModifier ::= .native 

-SimpleModifier ::= .synchronized 

-SimpleModifier ::= .transient 

-SimpleModifier ::= .volatile 

-SimpleModifier ::= .strictfp 

-Modifier ::= .SimpleModifier 

-Modifier ::= .Annotation 

-ClassDeclaration ::= .ClassHeader ClassBody 

-ClassHeader ::= .ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt 

-ClassHeaderName ::= .ClassHeaderName1 TypeParameters 

-ClassHeaderName ::= .ClassHeaderName1 

-ClassHeaderName1 ::= .Modifiersopt class JavaIdentifier 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1825

-

-

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-InterfaceDeclaration ::= .InterfaceHeader InterfaceBody 

-InterfaceHeader ::= .InterfaceHeaderName InterfaceHeaderExtendsopt 

-InterfaceHeaderName ::= .InterfaceHeaderName1 TypeParameters 

-InterfaceHeaderName ::= .InterfaceHeaderName1 

-InterfaceHeaderName1 ::= .Modifiersopt interface JavaIdentifier 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-BlockStatement ::= .InterfaceDeclaration 

-BlockStatement ::= .AnnotationTypeDeclaration 

-BlockStatement ::= .EnumDeclaration 

-LocalVariableDeclarationStatement ::= .LocalVariableDeclaration SEMICOLON 

-LocalVariableDeclaration ::= .Type PushModifiers VariableDeclarators 

-LocalVariableDeclaration ::= .Modifiers Type PushRealModifiers 

-                             VariableDeclarators 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1826

-

-

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1827

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1828

-

-

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Modifiersopt ::= . (764)

-Modifiersopt ::= .Modifiers 

-EnumDeclaration ::= .EnumHeader EnumBody 

-EnumHeader ::= .EnumHeaderName ClassHeaderImplementsopt 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier 

-EnumHeaderName ::= .Modifiersopt enum JavaIdentifier TypeParameters 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier 

-AnnotationTypeDeclarationHeaderName ::= .Modifiers AT PushRealModifiers 

-                                        interface JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier TypeParameters 

-AnnotationTypeDeclarationHeaderName ::= .AT PushModifiersForHeader interface 

-                                        JavaIdentifier 

-AnnotationTypeDeclarationHeader ::= .AnnotationTypeDeclarationHeaderName 

-                                    ClassHeaderExtendsopt 

-                                    ClassHeaderImplementsopt 

-AnnotationTypeDeclaration ::= .AnnotationTypeDeclarationHeader 

-                              AnnotationTypeBody 

-Annotation ::= .NormalAnnotation 

-Annotation ::= .MarkerAnnotation 

-Annotation ::= .SingleMemberAnnotation 

-AnnotationName ::= .AT UnannotatableNameOrAj 

-NormalAnnotation ::= .AnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerAnnotation ::= .AnnotationName 

-SingleMemberAnnotation ::= .AnnotationName LPAREN 

-                           SingleMemberAnnotationMemberValue RPAREN 

-

-try                                     Shift  40

-throw                                   Shift  41

-return                                  Shift  43

-continue                                Shift  44

-break                                   Shift  45

-do                                      Shift  46

-switch                                  Shift  47

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-BeginLambda                             Shift  55

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1829

-

-

-around                                  Shift  1040

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-super                                   Shift  66

-this                                    Shift  68

-LESS                                    Shift  25

-SEMICOLON                               Sh/Rd  511

-assert                                  Shift  71

-if                                      Shift  74

-while                                   Shift  75

-for                                     Shift  77

-AT                                      Shift  80

-strictfp                                Shift  1038

-volatile                                Shift  1038

-transient                               Shift  1038

-synchronized                            Shift  82

-native                                  Shift  1038

-final                                   Shift  1038

-abstract                                Shift  1038

-static                                  Shift  1038

-private                                 Shift  1038

-protected                               Shift  1038

-public                                  Shift  1038

-AT308                                   Shift  22

-Identifier                              Shift  86

-

-LocalVariableDeclaration                Goto   92

-PrimitiveType                           Goto   91

-ReferenceType                           Goto   79

-ClassOrInterface                        Goto   90

-GenericType                             Goto   89

-SimpleName                              Gt/Rd  84

-TypeAnnotations                         Goto   88

-QualifiedName                           Goto   1048

-Name                                    Goto   87

-ArrayTypeWithTypeArgumentsName          Goto   85

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1830

-

-

-ClassOrInterfaceType                    Gt/Rd  53

-ArrayType                               Goto   79

-TypeAnnotation                          Goto   1037

-TypeAnnotations0                        Goto   24

-TypeAnnotationName                      Goto   23

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationsopt                      Goto   84

-Modifier                                Goto   1038

-Modifiers                               Goto   83

-NormalAnnotation                        Goto   1047

-MarkerAnnotation                        Goto   1047

-SingleMemberAnnotation                  Goto   1047

-AnnotationName                          Goto   81

-SimpleModifier                          Goto   1038

-Annotation                              Gt/Rd  171

-Type                                    Goto   79

-StatementWithoutTrailingSubstatement    Gt/Rd  469

-LabeledStatement                        Gt/Rd  469

-IfThenStatement                         Gt/Rd  469

-IfThenElseStatement                     Gt/Rd  469

-WhileStatement                          Gt/Rd  469

-ForStatement                            Gt/Rd  469

-EnhancedForStatement                    Gt/Rd  469

-EnhancedForStatementHeaderInit          Goto   78

-EnhancedForStatementHeader              Goto   76

-JavaIdentifier                          Gt/Rd  514

-AjSimpleName                            Goto   73

-Label                                   Goto   72

-OpenBlock                               Goto   70

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OnlyTypeArguments                       Goto   67

-Primary                                 Goto   65

-PostfixExpression                       Goto   64

-InvalidArrayInitializerAssignement      Gt/Rd  741

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-ArrayCreationWithoutArrayInitializer    Goto   1046

-BooleanLiteral                          Goto   1039

-ClassInstanceCreationExpressionName     Goto   60

-QualifiedSuperReceiver                  Goto   59

-NameOrAj                                Goto   58

-AjQualifiedName                         Gt/Rd  72

-AjName                                  Goto   57

-AjSimpleNameNoAround                    Goto   1040

-LambdaParameters                        Goto   56

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-ClassInstanceCreationExpression         Goto   53

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1831

-

-

-FieldAccess                             Goto   1045

-MethodInvocation                        Goto   52

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-OnlySynchronized                        Goto   42

-AssertStatement                         Gt/Rd  469

-Block                                   Gt/Rd  469

-EmptyStatement                          Gt/Rd  469

-ExpressionStatement                     Gt/Rd  469

-SwitchStatement                         Gt/Rd  469

-DoStatement                             Gt/Rd  469

-BreakStatement                          Gt/Rd  469

-ContinueStatement                       Gt/Rd  469

-ReturnStatement                         Gt/Rd  469

-SynchronizedStatement                   Gt/Rd  469

-ThrowStatement                          Gt/Rd  469

-TryStatement                            Gt/Rd  469

-TryStatementWithResources               Gt/Rd  469

-ClassHeader                             Goto   39

-ClassHeaderName1                        Goto   38

-Modifiersopt                            Goto   37

-ClassHeaderName                         Goto   36

-InterfaceHeader                         Goto   35

-InterfaceHeaderName1                    Goto   34

-InterfaceHeaderName                     Goto   33

-AnnotationTypeDeclarationHeader         Goto   32

-AnnotationTypeDeclarationHeaderName     Goto   31

-EnumHeader                              Goto   30

-EnumHeaderName                          Goto   29

-LocalVariableDeclarationStatement       Gt/Rd  469

-Statement                               Gt/Rd  469

-ClassDeclaration                        Gt/Rd  469

-InterfaceDeclaration                    Gt/Rd  476

-AnnotationTypeDeclaration               Gt/Rd  477

-EnumDeclaration                         Gt/Rd  478

-BlockStatement                          Gt/Rd  469

-

-case                                    Reduce 534

-default                                 Reduce 534

-RBRACE                                  Reduce 534

-class                                   Reduce 764

-enum                                    Reduce 764

-interface                               Reduce 764

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1832

-

-

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1008 ---------------------------------------------------------------------

-( 974 )

-

-ClassInstanceCreationExpression ::= Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  628

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1833

-

-

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 1009 ---------------------------------------------------------------------

-( 975 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt  .RPAREN 

-                                    QualifiedClassBodyopt 

-

-RPAREN    Shift  1025

-

-

-STATE 1010 ---------------------------------------------------------------------

-( 978 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1834

-

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON  .Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1835

-

-

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1836

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1837

-

-

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1838

-

-

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-Expressionopt ::= . (757)

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1839

-

-

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1026

-Expressionopt                           Goto   1026

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1840

-

-

-

-SEMICOLON                               Reduce 757

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1011 ---------------------------------------------------------------------

-( 979 )

-

-WhileStatement ::= while LPAREN Expression RPAREN  .Statement 

-WhileStatementNoShortIf ::= while LPAREN Expression RPAREN  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1841

-

-

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1842

-

-

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1843

-

-

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1844

-

-

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1845

-

-

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  540

-IfThenElseStatementNoShortIf            Gt/Rd  540

-WhileStatementNoShortIf                 Gt/Rd  540

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1846

-

-

-ForStatementNoShortIf                   Gt/Rd  540

-EnhancedForStatementNoShortIf           Gt/Rd  540

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1847

-

-

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  539

-IfThenStatement                         Gt/Rd  539

-IfThenElseStatement                     Gt/Rd  539

-WhileStatement                          Gt/Rd  539

-ForStatement                            Gt/Rd  539

-EnhancedForStatement                    Gt/Rd  539

-Statement                               Gt/Rd  539

-StatementNoShortIf                      Gt/Rd  540

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1012 ---------------------------------------------------------------------

-( 980 )

-

-IfThenStatement ::= if LPAREN Expression RPAREN  .Statement 

-IfThenElseStatement ::= if LPAREN Expression RPAREN  .StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN  .

-                                 StatementNoShortIf else StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1848

-

-

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1849

-

-

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1850

-

-

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1851

-

-

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1852

-

-

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1853

-

-

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Goto   1027

-IfThenElseStatementNoShortIf            Goto   1027

-WhileStatementNoShortIf                 Goto   1027

-ForStatementNoShortIf                   Goto   1027

-EnhancedForStatementNoShortIf           Goto   1027

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1854

-

-

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  524

-IfThenStatement                         Gt/Rd  524

-IfThenElseStatement                     Gt/Rd  524

-WhileStatement                          Gt/Rd  524

-ForStatement                            Gt/Rd  524

-EnhancedForStatement                    Gt/Rd  524

-Statement                               Gt/Rd  524

-StatementNoShortIf                      Goto   1027

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1855

-

-

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1013 ---------------------------------------------------------------------

-( 981 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN  .Statement 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1856

-

-

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1857

-

-

-                 ForUpdateopt RPAREN Statement 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1858

-

-

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1859

-

-

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-for                                     Shift  77

-while                                   Shift  75

-if                                      Shift  74

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1860

-

-

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-

-AssertStatement                         Gt/Rd  542

-Block                                   Gt/Rd  542

-EmptyStatement                          Gt/Rd  542

-ExpressionStatement                     Gt/Rd  542

-SwitchStatement                         Gt/Rd  542

-DoStatement                             Gt/Rd  542

-BreakStatement                          Gt/Rd  542

-ContinueStatement                       Gt/Rd  542

-ReturnStatement                         Gt/Rd  542

-SynchronizedStatement                   Gt/Rd  542

-ThrowStatement                          Gt/Rd  542

-TryStatement                            Gt/Rd  542

-TryStatementWithResources               Gt/Rd  542

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1861

-

-

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-Label                                   Goto   72

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeader              Goto   76

-EnhancedForStatementHeaderInit          Goto   78

-StatementWithoutTrailingSubstatement    Gt/Rd  542

-LabeledStatement                        Gt/Rd  542

-IfThenStatement                         Gt/Rd  542

-IfThenElseStatement                     Gt/Rd  542

-WhileStatement                          Gt/Rd  542

-ForStatement                            Gt/Rd  542

-EnhancedForStatement                    Gt/Rd  542

-Statement                               Gt/Rd  542

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1014 ---------------------------------------------------------------------

-( 984 )

-

-VariableDeclarator ::= VariableDeclaratorId EnterVariable EQUAL ForceNoDiet 

-                       VariableInitializer RestoreDiet  .

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1862

-

-

-                       ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  377

-

-SEMICOLON                         Reduce 379

-COMMA                             Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1015 ---------------------------------------------------------------------

-( 987 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN  .InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-

-InsideCastExpressionWithQualifiedGenerics ::= . (703)

-

-InsideCastExpressionWithQualifiedGenerics    Goto   1028

-

-Identifier                                   Reduce 703

-boolean                                      Reduce 703

-byte                                         Reduce 703

-char                                         Reduce 703

-double                                       Reduce 703

-false                                        Reduce 703

-float                                        Reduce 703

-int                                          Reduce 703

-long                                         Reduce 703

-new                                          Reduce 703

-null                                         Reduce 703

-short                                        Reduce 703

-super                                        Reduce 703

-this                                         Reduce 703

-true                                         Reduce 703

-void                                         Reduce 703

-aspect                                       Reduce 703

-pointcut                                     Reduce 703

-around                                       Reduce 703

-before                                       Reduce 703

-after                                        Reduce 703

-declare                                      Reduce 703

-privileged                                   Reduce 703

-IntegerLiteral                               Reduce 703

-LongLiteral                                  Reduce 703

-FloatingPointLiteral                         Reduce 703

-DoubleLiteral                                Reduce 703

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1863

-

-

-CharacterLiteral                             Reduce 703

-StringLiteral                                Reduce 703

-NOT                                          Reduce 703

-TWIDDLE                                      Reduce 703

-LPAREN                                       Reduce 703

-BeginLambda                                  Reduce 703

-BeginIntersectionCast                        Reduce 703

-AT308                                        Reduce 703

-

-Default reduction to rule  703

-

-

-STATE 1016 ---------------------------------------------------------------------

-( 990 )

-

-OnType ::= OnType DOT JavaIdentifier . (242)

-IntertypeClassHeaderName1 ::= Modifiersopt class OnType DOT JavaIdentifier .

-                               (343)

-

-extends       Reduce 343

-implements    Reduce 343

-LESS          Reduce 343

-LBRACE        Reduce 343

-DOT           Reduce 242

-

-Default reduction to rule  343

-

-

-STATE 1017 ---------------------------------------------------------------------

-( 992 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters Name DOT new  .

-                                   LPAREN 

-

-LPAREN    Sh/Rd  262

-

-

-STATE 1018 ---------------------------------------------------------------------

-( 993 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt TypeParameters GenericType 

-                                   DOT new  .LPAREN 

-

-LPAREN    Sh/Rd  264

-

-

-STATE 1019 ---------------------------------------------------------------------

-( 994 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name PLUS DOT new  .LPAREN 

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1864

-

-

-LPAREN    Sh/Rd  261

-

-

-STATE 1020 ---------------------------------------------------------------------

-( 995 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT  .new 

-                                   LPAREN 

-

-new    Shift  1029

-

-

-STATE 1021 ---------------------------------------------------------------------

-( 1001 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-WildcardBounds ::= super ReferenceType . (844)

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 844

-

-Default reduction to rule  844

-

-

-STATE 1022 ---------------------------------------------------------------------

-( 1002 )

-

-ReferenceType1 ::= ReferenceType  .GREATER 

-ReferenceType2 ::= ReferenceType  .RIGHT_SHIFT 

-ReferenceType3 ::= ReferenceType  .UNSIGNED_RIGHT_SHIFT 

-WildcardBounds ::= extends ReferenceType . (843)

-

-UNSIGNED_RIGHT_SHIFT    Sh/Rd  840

-RIGHT_SHIFT             Sh/Rd  834

-GREATER                 Sh/Rd  828

-

-COMMA                   Reduce 843

-

-Default reduction to rule  843

-

-

-STATE 1023 ---------------------------------------------------------------------

-( 1003 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet  .VariableInitializer RestoreDiet 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1865

-

-

-             ExitVariableWithInitialization 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ArrayInitializer ::= .LBRACE PushLeftBrace ,opt RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers RBRACE 

-ArrayInitializer ::= .LBRACE PushLeftBrace VariableInitializers COMMA RBRACE 

-PushLPAREN ::= .LPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1866

-

-

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1867

-

-

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpression ::= .PreIncrementExpression 

-UnaryExpression ::= .PreDecrementExpression 

-UnaryExpression ::= .PLUS PushPosition UnaryExpression 

-UnaryExpression ::= .MINUS PushPosition UnaryExpression 

-UnaryExpression ::= .UnaryExpressionNotPlusMinus 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1868

-

-

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .CastExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-MultiplicativeExpression ::= .UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression MULTIPLY UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression DIVIDE UnaryExpression 

-MultiplicativeExpression ::= .MultiplicativeExpression REMAINDER 

-                             UnaryExpression 

-AdditiveExpression ::= .MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression PLUS MultiplicativeExpression 

-AdditiveExpression ::= .AdditiveExpression MINUS MultiplicativeExpression 

-ShiftExpression ::= .AdditiveExpression 

-ShiftExpression ::= .ShiftExpression LEFT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression RIGHT_SHIFT AdditiveExpression 

-ShiftExpression ::= .ShiftExpression UNSIGNED_RIGHT_SHIFT AdditiveExpression 

-RelationalExpression ::= .ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER ShiftExpression 

-RelationalExpression ::= .RelationalExpression LESS_EQUAL ShiftExpression 

-RelationalExpression ::= .RelationalExpression GREATER_EQUAL ShiftExpression 

-InstanceofExpression ::= .RelationalExpression 

-InstanceofExpression ::= .InstanceofExpression instanceof ReferenceType 

-EqualityExpression ::= .InstanceofExpression 

-EqualityExpression ::= .EqualityExpression EQUAL_EQUAL InstanceofExpression 

-EqualityExpression ::= .EqualityExpression NOT_EQUAL InstanceofExpression 

-AndExpression ::= .EqualityExpression 

-AndExpression ::= .AndExpression AND EqualityExpression 

-ExclusiveOrExpression ::= .AndExpression 

-ExclusiveOrExpression ::= .ExclusiveOrExpression XOR AndExpression 

-InclusiveOrExpression ::= .ExclusiveOrExpression 

-InclusiveOrExpression ::= .InclusiveOrExpression OR ExclusiveOrExpression 

-ConditionalAndExpression ::= .InclusiveOrExpression 

-ConditionalAndExpression ::= .ConditionalAndExpression AND_AND 

-                             InclusiveOrExpression 

-ConditionalOrExpression ::= .ConditionalAndExpression 

-ConditionalOrExpression ::= .ConditionalOrExpression OR_OR 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1869

-

-

-                            ConditionalAndExpression 

-ConditionalExpression ::= .ConditionalOrExpression 

-ConditionalExpression ::= .ConditionalOrExpression QUESTION Expression COLON 

-                          ConditionalExpression 

-AssignmentExpression ::= .ConditionalExpression 

-AssignmentExpression ::= .Assignment 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-Expression ::= .AssignmentExpression 

-

-MINUS                                   Shift  94

-PLUS                                    Shift  95

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1050

-true                                    Shift  1050

-null                                    Shift  1050

-StringLiteral                           Shift  1050

-CharacterLiteral                        Shift  1050

-DoubleLiteral                           Shift  1050

-FloatingPointLiteral                    Shift  1050

-LongLiteral                             Shift  1050

-IntegerLiteral                          Shift  1050

-new                                     Shift  61

-BeginIntersectionCast                   Shift  101

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-LBRACE                                  Shift  117

-

-AssignmentExpression                    Gt/Rd  754

-ConditionalOrExpression                 Goto   114

-InclusiveOrExpression                   Goto   112

-ConditionalAndExpression                Goto   115

-AndExpression                           Goto   110

-ExclusiveOrExpression                   Goto   113

-InstanceofExpression                    Goto   108

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1870

-

-

-EqualityExpression                      Goto   111

-ShiftExpression                         Goto   106

-RelationalExpression                    Goto   109

-MultiplicativeExpression                Goto   105

-AdditiveExpression                      Goto   107

-PreIncrementExpression                  Goto   1052

-PreDecrementExpression                  Goto   1052

-UnaryExpressionNotPlusMinus             Goto   1052

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1054

-PostDecrementExpression                 Goto   1053

-PostfixExpression                       Goto   116

-Literal                                 Goto   1050

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1060

-FieldAccess                             Goto   1059

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1058

-ArrayAccess                             Goto   1057

-LambdaExpression                        Goto   1056

-ReferenceExpression                     Goto   1055

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1050

-ArrayCreationWithoutArrayInitializer    Goto   1062

-CastExpression                          Goto   1052

-UnaryExpression                         Goto   1052

-InvalidArrayInitializerAssignement      Gt/Rd  741

-ConditionalExpression                   Goto   1063

-Assignment                              Goto   1063

-Expression                              Goto   1030

-ArrayInitializer                        Goto   1030

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1871

-

-

-VariableInitializer                     Goto   1030

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1024 ---------------------------------------------------------------------

-( 1004 )

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer  .RestoreDiet 

-             ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1031

-

-RPAREN         Reduce 382

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 1025 ---------------------------------------------------------------------

-( 1009 )

-

-ClassInstanceCreationExpression ::= Primary DOT new OnlyTypeArguments 

-                                    ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN  .

-                                    QualifiedClassBodyopt 

-

-QualifiedClassBodyopt ::= . (636)

-QualifiedClassBodyopt ::= .QualifiedEnterAnonymousClassBody ClassBody 

-QualifiedEnterAnonymousClassBody ::= . (638)

-

-QualifiedEnterAnonymousClassBody    Goto   971

-QualifiedClassBodyopt               Gt/Rd  627

-

-abstract                            Reduce 636

-final                               Reduce 636

-instanceof                          Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1872

-

-

-native                              Reduce 636

-private                             Reduce 636

-protected                           Reduce 636

-public                              Reduce 636

-static                              Reduce 636

-strictfp                            Reduce 636

-synchronized                        Reduce 636

-transient                           Reduce 636

-volatile                            Reduce 636

-PLUS_PLUS                           Reduce 636

-MINUS_MINUS                         Reduce 636

-EQUAL_EQUAL                         Reduce 636

-LESS_EQUAL                          Reduce 636

-GREATER_EQUAL                       Reduce 636

-NOT_EQUAL                           Reduce 636

-LEFT_SHIFT                          Reduce 636

-RIGHT_SHIFT                         Reduce 636

-UNSIGNED_RIGHT_SHIFT                Reduce 636

-PLUS_EQUAL                          Reduce 636

-MINUS_EQUAL                         Reduce 636

-MULTIPLY_EQUAL                      Reduce 636

-DIVIDE_EQUAL                        Reduce 636

-AND_EQUAL                           Reduce 636

-OR_EQUAL                            Reduce 636

-XOR_EQUAL                           Reduce 636

-REMAINDER_EQUAL                     Reduce 636

-LEFT_SHIFT_EQUAL                    Reduce 636

-RIGHT_SHIFT_EQUAL                   Reduce 636

-UNSIGNED_RIGHT_SHIFT_EQUAL          Reduce 636

-OR_OR                               Reduce 636

-AND_AND                             Reduce 636

-PLUS                                Reduce 636

-MINUS                               Reduce 636

-REMAINDER                           Reduce 636

-XOR                                 Reduce 636

-AND                                 Reduce 636

-MULTIPLY                            Reduce 636

-OR                                  Reduce 636

-DIVIDE                              Reduce 636

-GREATER                             Reduce 636

-LESS                                Reduce 636

-RPAREN                              Reduce 636

-RBRACE                              Reduce 636

-LBRACKET                            Reduce 636

-RBRACKET                            Reduce 636

-SEMICOLON                           Reduce 636

-QUESTION                            Reduce 636

-COLON                               Reduce 636

-COMMA                               Reduce 636

-DOT                                 Reduce 636

-EQUAL                               Reduce 636

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1873

-

-

-AT                                  Reduce 636

-COLON_COLON                         Reduce 636

-ElidedSemicolonAndRightBrace        Reduce 636

-$eof                                Reduce 636

-LBRACE                              Reduce 638

-

-Default reduction to rule  636

-

-

-STATE 1026 ---------------------------------------------------------------------

-( 1010 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt  .

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-

-SEMICOLON    Shift  1032

-

-

-STATE 1027 ---------------------------------------------------------------------

-( 1012 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf  .else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf  .else StatementNoShortIf 

-

-else    Shift  1033

-

-

-STATE 1028 ---------------------------------------------------------------------

-( 1015 )

-

-CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics  .

-                   UnaryExpressionNotPlusMinus 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1874

-

-

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1875

-

-

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1876

-

-

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-UnaryExpressionNotPlusMinus ::= .PostfixExpression 

-UnaryExpressionNotPlusMinus ::= .TWIDDLE PushPosition UnaryExpression 

-UnaryExpressionNotPlusMinus ::= .NOT PushPosition UnaryExpression 

-CastExpression ::= .PushLPAREN PrimitiveType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpression UnaryExpression 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt 

-                   AdditionalBoundsListOpt PushRPAREN InsideCastExpression 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name OnlyTypeArgumentsForCastExpression DOT 

-                   ClassOrInterfaceType Dimsopt AdditionalBoundsListOpt 

-                   PushRPAREN InsideCastExpressionWithQualifiedGenerics 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name PushRPAREN InsideCastExpressionLL1 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .BeginIntersectionCast PushLPAREN CastNameAndBounds 

-                   PushRPAREN InsideCastExpressionLL1WithBounds 

-                   UnaryExpressionNotPlusMinus 

-CastExpression ::= .PushLPAREN Name Dims AdditionalBoundsListOpt PushRPAREN 

-                   InsideCastExpression UnaryExpressionNotPlusMinus 

-

-NOT                                     Shift  103

-TWIDDLE                                 Shift  104

-BeginIntersectionCast                   Shift  101

-null                                    Shift  1251

-StringLiteral                           Shift  1251

-CharacterLiteral                        Shift  1251

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1877

-

-

-DoubleLiteral                           Shift  1251

-FloatingPointLiteral                    Shift  1251

-LongLiteral                             Shift  1251

-IntegerLiteral                          Shift  1251

-false                                   Shift  1251

-true                                    Shift  1251

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-around                                  Shift  1051

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  98

-super                                   Shift  97

-this                                    Sh/Rd  583

-

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostIncrementExpression                 Goto   1260

-PostDecrementExpression                 Goto   1259

-PostfixExpression                       Goto   483

-Literal                                 Goto   1251

-PushLPAREN                              Goto   102

-ClassInstanceCreationExpression         Goto   1258

-FieldAccess                             Goto   1257

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-MethodInvocation                        Goto   1256

-ArrayAccess                             Goto   1255

-LambdaExpression                        Goto   1254

-ReferenceExpression                     Goto   1253

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1878

-

-

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1061

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1251

-ArrayCreationWithoutArrayInitializer    Goto   1252

-CastExpression                          Gt/Rd  691

-UnaryExpressionNotPlusMinus             Gt/Rd  691

-

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1029 ---------------------------------------------------------------------

-( 1020 )

-

-InterTypeConstructorHeaderName ::= Modifiersopt Name DOT MULTIPLY DOT new  .

-                                   LPAREN 

-

-LPAREN    Sh/Rd  260

-

-

-STATE 1030 ---------------------------------------------------------------------

-( 1023 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer  .RestoreDiet 

-             ExitVariableWithInitialization 

-

-RestoreDiet ::= . (382)

-

-RestoreDiet    Goto   1034

-

-RPAREN         Reduce 382

-SEMICOLON      Reduce 382

-

-Default reduction to rule  382

-

-

-STATE 1031 ---------------------------------------------------------------------

-( 1024 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1879

-

-

-Resource ::= Type PushModifiers VariableDeclaratorId EnterVariable EQUAL 

-             ForceNoDiet VariableInitializer RestoreDiet  .

-             ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  569

-

-RPAREN                            Reduce 379

-SEMICOLON                         Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1032 ---------------------------------------------------------------------

-( 1026 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON  .

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON  .ForUpdateopt RPAREN StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1880

-

-

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-ForUpdate ::= .StatementExpressionList 

-StatementExpressionList ::= .StatementExpression 

-StatementExpressionList ::= .StatementExpressionList COMMA StatementExpression 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1881

-

-

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1882

-

-

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-ForUpdateopt ::= . (783)

-

-MINUS_MINUS                             Shift  48

-PLUS_PLUS                               Shift  49

-this                                    Sh/Rd  583

-BeginLambda                             Shift  55

-around                                  Shift  1051

-declare                                 Shift  1051

-after                                   Shift  1051

-before                                  Shift  1051

-pointcut                                Shift  1051

-privileged                              Shift  1051

-aspect                                  Shift  1051

-super                                   Shift  97

-Identifier                              Shift  98

-AT308                                   Shift  22

-LPAREN                                  Sh/Rd  577

-false                                   Shift  1039

-true                                    Shift  1039

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-new                                     Shift  61

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1883

-

-

-

-StatementExpressionList                 Goto   982

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   100

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   99

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1051

-AjSimpleName                            Gt/Rd  71

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-StatementExpression                     Goto   1275

-ForUpdate                               Goto   1035

-ForUpdateopt                            Goto   1035

-

-RPAREN                                  Reduce 783

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1884

-

-

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1033 ---------------------------------------------------------------------

-( 1027 )

-

-IfThenElseStatement ::= if LPAREN Expression RPAREN StatementNoShortIf else  .

-                        Statement 

-IfThenElseStatementNoShortIf ::= if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1885

-

-

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1886

-

-

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1887

-

-

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1888

-

-

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1889

-

-

-

-assert                                  Shift  71

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  526

-IfThenElseStatementNoShortIf            Gt/Rd  526

-WhileStatementNoShortIf                 Gt/Rd  526

-ForStatementNoShortIf                   Gt/Rd  526

-EnhancedForStatementNoShortIf           Gt/Rd  526

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1890

-

-

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1891

-

-

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  525

-IfThenStatement                         Gt/Rd  525

-IfThenElseStatement                     Gt/Rd  525

-WhileStatement                          Gt/Rd  525

-ForStatement                            Gt/Rd  525

-EnhancedForStatement                    Gt/Rd  525

-Statement                               Gt/Rd  525

-StatementNoShortIf                      Gt/Rd  526

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1034 ---------------------------------------------------------------------

-( 1030 )

-

-Resource ::= Modifiers Type PushRealModifiers VariableDeclaratorId 

-             EnterVariable EQUAL ForceNoDiet VariableInitializer RestoreDiet  .

-             ExitVariableWithInitialization 

-

-ExitVariableWithInitialization ::= . (379)

-

-ExitVariableWithInitialization    Gt/Rd  570

-

-RPAREN                            Reduce 379

-SEMICOLON                         Reduce 379

-

-Default reduction to rule  379

-

-

-STATE 1035 ---------------------------------------------------------------------

-( 1032 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1892

-

-

-                 ForUpdateopt  .RPAREN Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt  .RPAREN StatementNoShortIf 

-

-RPAREN    Shift  1036

-

-

-STATE 1036 ---------------------------------------------------------------------

-( 1035 )

-

-ForStatement ::= for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN  .Statement 

-ForStatementNoShortIf ::= for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN  .StatementNoShortIf 

-

-Literal ::= .IntegerLiteral 

-Literal ::= .LongLiteral 

-Literal ::= .FloatingPointLiteral 

-Literal ::= .DoubleLiteral 

-Literal ::= .CharacterLiteral 

-Literal ::= .StringLiteral 

-Literal ::= .null 

-Literal ::= .BooleanLiteral 

-BooleanLiteral ::= .true 

-BooleanLiteral ::= .false 

-JavaIdentifier ::= .Identifier 

-JavaIdentifier ::= .AjSimpleName 

-PrimitiveType ::= .TypeAnnotationsopt NumericType 

-PrimitiveType ::= .TypeAnnotationsopt boolean 

-PrimitiveType ::= .TypeAnnotationsopt void 

-NameOrAj ::= .AjName 

-NameOrAj ::= .Name 

-AjName ::= .AjSimpleName 

-AjName ::= .AjQualifiedName 

-AjSimpleName ::= .AjSimpleNameNoAround 

-AjSimpleNameNoAround ::= .aspect 

-AjSimpleNameNoAround ::= .privileged 

-AjSimpleNameNoAround ::= .pointcut 

-AjSimpleName ::= .around 

-AjSimpleNameNoAround ::= .before 

-AjSimpleNameNoAround ::= .after 

-AjSimpleNameNoAround ::= .declare 

-AjQualifiedName ::= .AjName DOT SimpleNameOrAj 

-Name ::= .SimpleName 

-Name ::= .TypeAnnotations SimpleName 

-Name ::= .QualifiedName 

-SimpleName ::= .Identifier 

-QualifiedName ::= .Name DOT JavaIdentifier 

-QualifiedName ::= .Name DOT TypeAnnotations JavaIdentifier 

-TypeAnnotationsopt ::= . (92)

-TypeAnnotationsopt ::= .TypeAnnotations 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1893

-

-

-TypeAnnotations ::= .TypeAnnotations0 

-TypeAnnotations0 ::= .TypeAnnotation 

-TypeAnnotations0 ::= .TypeAnnotations0 TypeAnnotation 

-TypeAnnotation ::= .NormalTypeAnnotation 

-TypeAnnotation ::= .MarkerTypeAnnotation 

-TypeAnnotation ::= .SingleMemberTypeAnnotation 

-TypeAnnotationName ::= .AT308 UnannotatableName 

-NormalTypeAnnotation ::= .TypeAnnotationName LPAREN MemberValuePairsopt RPAREN 

-MarkerTypeAnnotation ::= .TypeAnnotationName 

-SingleMemberTypeAnnotation ::= .TypeAnnotationName LPAREN 

-                               SingleMemberAnnotationMemberValue RPAREN 

-ExplicitConstructorInvocation ::= .this LPAREN ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT super LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT super LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments super LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT this LPAREN ArgumentListopt 

-                                  RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Primary DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT this LPAREN ArgumentListopt RPAREN 

-                                  SEMICOLON 

-ExplicitConstructorInvocation ::= .Name DOT OnlyTypeArguments this LPAREN 

-                                  ArgumentListopt RPAREN SEMICOLON 

-Block ::= .OpenBlock LBRACE BlockStatementsopt RBRACE 

-OpenBlock ::= . (467)

-Statement ::= .StatementWithoutTrailingSubstatement 

-StatementNoShortIf ::= .StatementWithoutTrailingSubstatement 

-StatementWithoutTrailingSubstatement ::= .AssertStatement 

-StatementWithoutTrailingSubstatement ::= .Block 

-StatementWithoutTrailingSubstatement ::= .EmptyStatement 

-StatementWithoutTrailingSubstatement ::= .ExpressionStatement 

-StatementWithoutTrailingSubstatement ::= .SwitchStatement 

-StatementWithoutTrailingSubstatement ::= .DoStatement 

-StatementWithoutTrailingSubstatement ::= .BreakStatement 

-StatementWithoutTrailingSubstatement ::= .ContinueStatement 

-StatementWithoutTrailingSubstatement ::= .ReturnStatement 

-StatementWithoutTrailingSubstatement ::= .SynchronizedStatement 

-StatementWithoutTrailingSubstatement ::= .ThrowStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatement 

-StatementWithoutTrailingSubstatement ::= .TryStatementWithResources 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1894

-

-

-EmptyStatement ::= .SEMICOLON 

-LabeledStatement ::= .Label COLON Statement 

-LabeledStatementNoShortIf ::= .Label COLON StatementNoShortIf 

-Label ::= .JavaIdentifier 

-ExpressionStatement ::= .StatementExpression SEMICOLON 

-ExpressionStatement ::= .ExplicitConstructorInvocation 

-StatementExpression ::= .Assignment 

-StatementExpression ::= .PreIncrementExpression 

-StatementExpression ::= .PreDecrementExpression 

-StatementExpression ::= .PostIncrementExpression 

-StatementExpression ::= .PostDecrementExpression 

-StatementExpression ::= .MethodInvocation 

-StatementExpression ::= .ClassInstanceCreationExpression 

-IfThenStatement ::= .if LPAREN Expression RPAREN Statement 

-IfThenElseStatement ::= .if LPAREN Expression RPAREN StatementNoShortIf else 

-                        Statement 

-IfThenElseStatementNoShortIf ::= .if LPAREN Expression RPAREN 

-                                 StatementNoShortIf else StatementNoShortIf 

-SwitchStatement ::= .switch LPAREN Expression RPAREN OpenBlock SwitchBlock 

-WhileStatement ::= .while LPAREN Expression RPAREN Statement 

-WhileStatementNoShortIf ::= .while LPAREN Expression RPAREN StatementNoShortIf 

-DoStatement ::= .do Statement while LPAREN Expression RPAREN SEMICOLON 

-ForStatement ::= .for LPAREN ForInitopt SEMICOLON Expressionopt SEMICOLON 

-                 ForUpdateopt RPAREN Statement 

-ForStatementNoShortIf ::= .for LPAREN ForInitopt SEMICOLON Expressionopt 

-                          SEMICOLON ForUpdateopt RPAREN StatementNoShortIf 

-AssertStatement ::= .assert Expression SEMICOLON 

-AssertStatement ::= .assert Expression COLON Expression SEMICOLON 

-BreakStatement ::= .break SEMICOLON 

-BreakStatement ::= .break Identifier SEMICOLON 

-ContinueStatement ::= .continue SEMICOLON 

-ContinueStatement ::= .continue Identifier SEMICOLON 

-ReturnStatement ::= .return Expressionopt SEMICOLON 

-ThrowStatement ::= .throw Expression SEMICOLON 

-SynchronizedStatement ::= .OnlySynchronized LPAREN Expression RPAREN Block 

-OnlySynchronized ::= .synchronized 

-TryStatement ::= .try TryBlock Catches 

-TryStatement ::= .try TryBlock Catchesopt Finally 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-TryStatementWithResources ::= .try ResourceSpecification TryBlock Catchesopt 

-                              Finally 

-PushLPAREN ::= .LPAREN 

-Primary ::= .PrimaryNoNewArray 

-Primary ::= .ArrayCreationWithArrayInitializer 

-Primary ::= .ArrayCreationWithoutArrayInitializer 

-PrimaryNoNewArray ::= .Literal 

-PrimaryNoNewArray ::= .this 

-PrimaryNoNewArray ::= .PushLPAREN Expression_NotName PushRPAREN 

-PrimaryNoNewArray ::= .PushLPAREN Name PushRPAREN 

-PrimaryNoNewArray ::= .ClassInstanceCreationExpression 

-PrimaryNoNewArray ::= .FieldAccess 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1895

-

-

-PrimaryNoNewArray ::= .Name DOT this 

-QualifiedSuperReceiver ::= .Name DOT super 

-PrimaryNoNewArray ::= .Name DOT class 

-PrimaryNoNewArray ::= .Name Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType Dims DOT class 

-PrimaryNoNewArray ::= .PrimitiveType DOT class 

-PrimaryNoNewArray ::= .MethodInvocation 

-PrimaryNoNewArray ::= .ArrayAccess 

-PrimaryNoNewArray ::= .LambdaExpression 

-PrimaryNoNewArray ::= .ReferenceExpression 

-ReferenceExpression ::= .PrimitiveType Dims COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name Dimsopt COLON_COLON NonWildTypeArgumentsopt 

-                        IdentifierOrNew 

-ReferenceExpression ::= .Name BeginTypeArguments 

-                        ReferenceExpressionTypeArgumentsAndTrunk COLON_COLON 

-                        NonWildTypeArgumentsopt IdentifierOrNew 

-ReferenceExpression ::= .Primary COLON_COLON NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .QualifiedSuperReceiver COLON_COLON 

-                        NonWildTypeArgumentsopt Identifier 

-ReferenceExpression ::= .super COLON_COLON NonWildTypeArgumentsopt Identifier 

-LambdaExpression ::= .LambdaParameters ARROW LambdaBody 

-LambdaParameters ::= .Identifier NestedLambda 

-LambdaParameters ::= .BeginLambda NestedLambda LambdaParameterList 

-ClassInstanceCreationExpression ::= .new OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    UnqualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new OnlyTypeArguments 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .Primary DOT new ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    ClassType EnterInstanceCreationArgumentList 

-                                    LPAREN ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpression ::= .ClassInstanceCreationExpressionName 

-                                    OnlyTypeArguments ClassType 

-                                    EnterInstanceCreationArgumentList LPAREN 

-                                    ArgumentListopt RPAREN 

-                                    QualifiedClassBodyopt 

-ClassInstanceCreationExpressionName ::= .Name DOT new 

-ArrayCreationWithoutArrayInitializer ::= .new PrimitiveType 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1896

-

-

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new PrimitiveType DimWithOrWithOutExprs 

-                                      ArrayInitializer 

-ArrayCreationWithoutArrayInitializer ::= .new ClassOrInterfaceType 

-                                        DimWithOrWithOutExprs 

-ArrayCreationWithArrayInitializer ::= .new ClassOrInterfaceType 

-                                      DimWithOrWithOutExprs ArrayInitializer 

-FieldAccess ::= .Primary DOT JavaIdentifier 

-FieldAccess ::= .super DOT JavaIdentifier 

-FieldAccess ::= .QualifiedSuperReceiver DOT Identifier 

-MethodInvocation ::= .NameOrAj LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .Name DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .Primary DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .QualifiedSuperReceiver DOT OnlyTypeArguments 

-                     JavaIdentifier LPAREN ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT OnlyTypeArguments JavaIdentifier LPAREN 

-                     ArgumentListopt RPAREN 

-MethodInvocation ::= .super DOT JavaIdentifier LPAREN ArgumentListopt RPAREN 

-ArrayAccess ::= .Name LBRACKET Expression RBRACKET 

-ArrayAccess ::= .AjName LBRACKET Expression RBRACKET 

-ArrayAccess ::= .PrimaryNoNewArray LBRACKET Expression RBRACKET 

-ArrayAccess ::= .ArrayCreationWithArrayInitializer LBRACKET Expression RBRACKET 

-PostfixExpression ::= .Primary 

-PostfixExpression ::= .NameOrAj 

-PostfixExpression ::= .PostIncrementExpression 

-PostfixExpression ::= .PostDecrementExpression 

-PostIncrementExpression ::= .PostfixExpression PLUS_PLUS 

-PostDecrementExpression ::= .PostfixExpression MINUS_MINUS 

-PreIncrementExpression ::= .PLUS_PLUS PushPosition UnaryExpression 

-PreDecrementExpression ::= .MINUS_MINUS PushPosition UnaryExpression 

-Assignment ::= .PostfixExpression AssignmentOperator AssignmentExpression 

-InvalidArrayInitializerAssignement ::= .PostfixExpression AssignmentOperator 

-                                       ArrayInitializer 

-Assignment ::= .InvalidArrayInitializerAssignement 

-EnhancedForStatement ::= .EnhancedForStatementHeader Statement 

-EnhancedForStatementNoShortIf ::= .EnhancedForStatementHeader 

-                                  StatementNoShortIf 

-EnhancedForStatementHeaderInit ::= .for LPAREN Type PushModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeaderInit ::= .for LPAREN Modifiers Type PushRealModifiers 

-                                   JavaIdentifier Dimsopt 

-EnhancedForStatementHeader ::= .EnhancedForStatementHeaderInit COLON Expression 

-                               RPAREN 

-OnlyTypeArguments ::= .LESS TypeArgumentList1 

-

-assert                                  Shift  71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1897

-

-

-SEMICOLON                               Sh/Rd  511

-LESS                                    Shift  25

-null                                    Shift  1039

-StringLiteral                           Shift  1039

-CharacterLiteral                        Shift  1039

-DoubleLiteral                           Shift  1039

-FloatingPointLiteral                    Shift  1039

-LongLiteral                             Shift  1039

-IntegerLiteral                          Shift  1039

-false                                   Shift  1039

-true                                    Shift  1039

-LPAREN                                  Sh/Rd  577

-AT308                                   Shift  22

-declare                                 Shift  1040

-after                                   Shift  1040

-before                                  Shift  1040

-pointcut                                Shift  1040

-privileged                              Shift  1040

-aspect                                  Shift  1040

-around                                  Shift  1040

-new                                     Shift  61

-BeginLambda                             Shift  55

-Identifier                              Shift  86

-super                                   Shift  66

-this                                    Shift  68

-PLUS_PLUS                               Shift  49

-MINUS_MINUS                             Shift  48

-switch                                  Shift  47

-do                                      Shift  46

-break                                   Shift  45

-continue                                Shift  44

-return                                  Shift  43

-synchronized                            Sh/Rd  558

-throw                                   Shift  41

-try                                     Shift  40

-for                                     Shift  843

-while                                   Shift  844

-if                                      Shift  845

-

-Label                                   Goto   846

-EnhancedForStatementHeader              Goto   842

-StatementWithoutTrailingSubstatement    Goto   841

-LabeledStatementNoShortIf               Gt/Rd  543

-IfThenElseStatementNoShortIf            Gt/Rd  543

-WhileStatementNoShortIf                 Gt/Rd  543

-ForStatementNoShortIf                   Gt/Rd  543

-EnhancedForStatementNoShortIf           Gt/Rd  543

-AssertStatement                         Goto   1250

-Block                                   Goto   1250

-EmptyStatement                          Goto   1250

-ExpressionStatement                     Goto   1250

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1898

-

-

-SwitchStatement                         Goto   1250

-DoStatement                             Goto   1250

-BreakStatement                          Goto   1250

-ContinueStatement                       Goto   1250

-ReturnStatement                         Goto   1250

-SynchronizedStatement                   Goto   1250

-ThrowStatement                          Goto   1250

-TryStatement                            Goto   1250

-TryStatementWithResources               Goto   1250

-OnlySynchronized                        Goto   42

-Assignment                              Gt/Rd  517

-PreIncrementExpression                  Gt/Rd  518

-PreDecrementExpression                  Gt/Rd  519

-PostIncrementExpression                 Goto   51

-PostDecrementExpression                 Goto   50

-MethodInvocation                        Goto   52

-ClassInstanceCreationExpression         Goto   53

-Primary                                 Goto   65

-NameOrAj                                Goto   58

-PostfixExpression                       Goto   64

-Literal                                 Goto   1039

-PushLPAREN                              Goto   54

-FieldAccess                             Goto   1045

-Name                                    Goto   240

-PrimitiveType                           Goto   96

-ArrayAccess                             Goto   1044

-LambdaExpression                        Goto   1043

-ReferenceExpression                     Goto   1042

-QualifiedSuperReceiver                  Goto   59

-LambdaParameters                        Goto   56

-AjName                                  Goto   57

-PrimaryNoNewArray                       Goto   63

-ArrayCreationWithArrayInitializer       Goto   62

-AjSimpleNameNoAround                    Goto   1040

-AjSimpleName                            Goto   73

-AjQualifiedName                         Gt/Rd  72

-TypeAnnotations                         Goto   88

-TypeAnnotationsopt                      Goto   84

-TypeAnnotations0                        Goto   24

-NormalTypeAnnotation                    Gt/Rd  97

-MarkerTypeAnnotation                    Gt/Rd  98

-SingleMemberTypeAnnotation              Gt/Rd  99

-TypeAnnotationName                      Goto   23

-TypeAnnotation                          Goto   1037

-SimpleName                              Gt/Rd  84

-QualifiedName                           Goto   1089

-ClassInstanceCreationExpressionName     Goto   60

-BooleanLiteral                          Goto   1039

-ArrayCreationWithoutArrayInitializer    Goto   1046

-InvalidArrayInitializerAssignement      Gt/Rd  741

-OnlyTypeArguments                       Goto   67

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1899

-

-

-StatementExpression                     Goto   69

-ExplicitConstructorInvocation           Gt/Rd  516

-OpenBlock                               Goto   70

-JavaIdentifier                          Gt/Rd  514

-EnhancedForStatementHeaderInit          Goto   78

-LabeledStatement                        Gt/Rd  542

-IfThenStatement                         Gt/Rd  542

-IfThenElseStatement                     Gt/Rd  542

-WhileStatement                          Gt/Rd  542

-ForStatement                            Gt/Rd  542

-EnhancedForStatement                    Gt/Rd  542

-Statement                               Gt/Rd  542

-StatementNoShortIf                      Gt/Rd  543

-

-LBRACE                                  Reduce 467

-boolean                                 Reduce 92

-byte                                    Reduce 92

-char                                    Reduce 92

-double                                  Reduce 92

-float                                   Reduce 92

-int                                     Reduce 92

-long                                    Reduce 92

-short                                   Reduce 92

-void                                    Reduce 92

-

-Default reduction to rule  92

-

-

-STATE 1037 ---------------------------------------------------------------------

-( 3 7 8 9 14 16 25 26 27 41 43 46 54 60 61 71 76 83 85 87 89 91 93 96 99 102 

-  121 133 138 143 149 163 173 174 179 180 181 182 192 194 199 203 204 206 209 

-  216 217 220 222 223 233 235 240 241 242 243 245 249 251 254 258 260 261 262 

-  263 264 269 272 273 275 276 277 278 279 284 287 290 291 293 294 297 298 300 

-  303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 

-  322 323 324 325 326 327 328 329 331 334 339 350 351 355 358 359 360 361 362 

-  363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 

-  382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 

-  401 402 403 409 410 412 413 415 424 430 432 443 444 445 447 450 478 484 494 

-  495 499 504 512 513 516 521 522 526 549 552 572 573 583 591 592 593 595 596 

-  632 634 635 638 639 640 642 644 645 653 667 668 670 674 680 681 691 697 700 

-  702 704 706 707 709 711 712 716 718 724 725 726 729 737 741 746 748 750 751 

-  752 756 757 767 770 774 778 779 804 805 806 821 823 827 832 833 834 836 842 

-  848 854 855 856 858 860 863 864 871 872 873 875 877 878 881 884 896 897 900 

-  911 919 920 921 922 923 924 926 927 933 936 938 944 945 947 948 949 950 951 

-  953 959 968 969 975 988 992 993 998 1001 1002 1004 1005 1007 1010 1011 1012 

-  1013 1023 1028 1032 1033 1036 )

-

-

-TypeAnnotations0 ::= TypeAnnotation . (95)

-

-Identifier    Reduce 94

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1900

-

-

-boolean       Reduce 94

-byte          Reduce 94

-char          Reduce 94

-double        Reduce 94

-float         Reduce 94

-int           Reduce 94

-long          Reduce 94

-short         Reduce 94

-void          Reduce 94

-aspect        Reduce 94

-pointcut      Reduce 94

-around        Reduce 94

-before        Reduce 94

-after         Reduce 94

-declare       Reduce 94

-privileged    Reduce 94

-LBRACKET      Reduce 94

-QUESTION      Reduce 94

-ELLIPSIS      Reduce 94

-AT308         Reduce 95

-$eof          Reduce 94

-

-Default reduction to rule  94

-

-

-STATE 1038 ---------------------------------------------------------------------

-( 7 8 16 93 174 273 432 969 1005 1007 )

-

-

-Modifiers ::= Modifier . (157)

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-Modifier ::= SimpleModifier . (170)

-

-Identifier      Reduce 157

-abstract        Reduce 157

-boolean         Reduce 157

-byte            Reduce 157

-char            Reduce 157

-class           Reduce 765

-double          Reduce 157

-enum            Reduce 765

-final           Reduce 157

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1901

-

-

-float           Reduce 157

-int             Reduce 157

-interface       Reduce 765

-long            Reduce 157

-native          Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 157

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 157

-volatile        Reduce 157

-AT              Reduce 157

-AT308           Reduce 157

-

-Default reduction to rule  157

-

-

-STATE 1039 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1902

-

-

-LBRACKET                      Reduce 582

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1040 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 432 724 725 842 919 923 969 1005 1007 1011 1012 

-  1013 1033 1036 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-PLUS_PLUS                     Reduce 71

-MINUS_MINUS                   Reduce 71

-PLUS_EQUAL                    Reduce 71

-MINUS_EQUAL                   Reduce 71

-MULTIPLY_EQUAL                Reduce 71

-DIVIDE_EQUAL                  Reduce 71

-AND_EQUAL                     Reduce 71

-OR_EQUAL                      Reduce 71

-XOR_EQUAL                     Reduce 71

-REMAINDER_EQUAL               Reduce 71

-LEFT_SHIFT_EQUAL              Reduce 71

-RIGHT_SHIFT_EQUAL             Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 71

-LPAREN                        Reduce 71

-LBRACKET                      Reduce 71

-COLON                         Reduce 514

-DOT                           Reduce 71

-EQUAL                         Reduce 71

-

-Default reduction to rule  71

-

-

-STATE 1041 ---------------------------------------------------------------------

-( 7 )

-

-

-BlockStatementopt0 ::= BlockStatement . (472)

-BlockStatement ::= LocalVariableDeclarationStatement . (473)

-BlockStatement ::= Statement . (474)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1903

-

-

-BlockStatement ::= ClassDeclaration . (475)

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-Statement ::= LabeledStatement . (486)

-Statement ::= IfThenStatement . (487)

-Statement ::= IfThenElseStatement . (488)

-Statement ::= WhileStatement . (489)

-Statement ::= ForStatement . (490)

-Statement ::= EnhancedForStatement . (491)

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-$eof    Reduce 470

-

-Default reduction to rule  470

-

-

-STATE 1042 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 597

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1904

-

-

-

-Default reduction to rule  671

-

-

-STATE 1043 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 596

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1044 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1905

-

-

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 595

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1045 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-LBRACKET                      Reduce 587

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1046 ---------------------------------------------------------------------

-( 7 8 16 46 76 93 174 273 275 278 432 724 725 729 842 919 920 923 924 969 1005 

-  1007 1011 1012 1013 1032 1033 1036 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1906

-

-

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-DOT                           Reduce 581

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 581

-

-Default reduction to rule  671

-

-

-STATE 1047 ---------------------------------------------------------------------

-( 7 8 10 11 12 13 15 16 17 18 28 83 93 118 119 120 124 126 134 137 144 145 174 

-  176 178 184 188 189 191 193 197 218 233 273 278 338 342 405 432 433 434 451 

-  452 463 469 472 478 521 579 659 660 677 679 682 686 690 691 758 760 766 802 

-  803 883 891 920 969 1005 1007 )

-

-

-Annotation ::= NormalAnnotation . (965)

-Annotation ::= MarkerAnnotation . (966)

-Annotation ::= SingleMemberAnnotation . (967)

-

-Identifier      Reduce 171

-abstract        Reduce 171

-boolean         Reduce 171

-byte            Reduce 171

-char            Reduce 171

-class           Reduce 171

-default         Reduce 171

-double          Reduce 171

-enum            Reduce 171

-final           Reduce 171

-float           Reduce 171

-int             Reduce 171

-interface       Reduce 171

-long            Reduce 171

-native          Reduce 171

-package         Reduce 171

-private         Reduce 171

-protected       Reduce 171

-public          Reduce 171

-short           Reduce 171

-static          Reduce 171

-strictfp        Reduce 171

-synchronized    Reduce 171

-transient       Reduce 171

-void            Reduce 171

-volatile        Reduce 171

-aspect          Reduce 171

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1907

-

-

-pointcut        Reduce 171

-around          Reduce 171

-before          Reduce 171

-after           Reduce 171

-privileged      Reduce 171

-LESS            Reduce 171

-AT              Reduce 171

-AT308           Reduce 171

-$eof            Reduce 171

-

-Default reduction to rule  171

-

-

-STATE 1048 ---------------------------------------------------------------------

-( 7 8 16 93 174 273 278 432 552 920 969 1005 1007 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier                    Reduce 57

-instanceof                    Reduce 672

-aspect                        Reduce 57

-pointcut                      Reduce 57

-around                        Reduce 57

-before                        Reduce 57

-after                         Reduce 57

-declare                       Reduce 57

-privileged                    Reduce 57

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 672

-LESS_EQUAL                    Reduce 672

-GREATER_EQUAL                 Reduce 672

-NOT_EQUAL                     Reduce 672

-LEFT_SHIFT                    Reduce 672

-RIGHT_SHIFT                   Reduce 672

-UNSIGNED_RIGHT_SHIFT          Reduce 672

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 672

-AND_AND                       Reduce 672

-PLUS                          Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1908

-

-

-MINUS                         Reduce 672

-REMAINDER                     Reduce 672

-XOR                           Reduce 672

-AND                           Reduce 672

-MULTIPLY                      Reduce 672

-OR                            Reduce 672

-DIVIDE                        Reduce 672

-GREATER                       Reduce 57

-LESS                          Reduce 57

-LPAREN                        Reduce 68

-RPAREN                        Reduce 672

-LBRACKET                      Reduce 86

-QUESTION                      Reduce 672

-COMMA                         Reduce 57

-DOT                           Reduce 86

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 86

-BeginTypeArguments            Reduce 86

-AT308                         Reduce 86

-

-Default reduction to rule  672

-

-

-STATE 1049 ---------------------------------------------------------------------

-( 8 16 273 432 969 1005 )

-

-

-BlockStatement ::= LocalVariableDeclarationStatement . (473)

-BlockStatement ::= Statement . (474)

-BlockStatement ::= ClassDeclaration . (475)

-Statement ::= StatementWithoutTrailingSubstatement . (485)

-Statement ::= LabeledStatement . (486)

-Statement ::= IfThenStatement . (487)

-Statement ::= IfThenElseStatement . (488)

-Statement ::= WhileStatement . (489)

-Statement ::= ForStatement . (490)

-Statement ::= EnhancedForStatement . (491)

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1909

-

-

-Identifier              Reduce 468

-abstract                Reduce 468

-assert                  Reduce 468

-boolean                 Reduce 468

-break                   Reduce 468

-byte                    Reduce 468

-case                    Reduce 468

-char                    Reduce 468

-class                   Reduce 468

-continue                Reduce 468

-default                 Reduce 468

-do                      Reduce 468

-double                  Reduce 468

-enum                    Reduce 468

-false                   Reduce 468

-final                   Reduce 468

-float                   Reduce 468

-for                     Reduce 468

-if                      Reduce 468

-int                     Reduce 468

-interface               Reduce 468

-long                    Reduce 468

-native                  Reduce 468

-new                     Reduce 468

-null                    Reduce 468

-private                 Reduce 468

-protected               Reduce 468

-public                  Reduce 468

-return                  Reduce 468

-short                   Reduce 468

-static                  Reduce 468

-strictfp                Reduce 468

-super                   Reduce 468

-switch                  Reduce 468

-synchronized            Reduce 468

-this                    Reduce 468

-throw                   Reduce 468

-transient               Reduce 468

-true                    Reduce 468

-try                     Reduce 468

-void                    Reduce 468

-volatile                Reduce 468

-while                   Reduce 468

-aspect                  Reduce 468

-pointcut                Reduce 468

-around                  Reduce 468

-before                  Reduce 468

-after                   Reduce 468

-declare                 Reduce 468

-privileged              Reduce 468

-IntegerLiteral          Reduce 468

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1910

-

-

-LongLiteral             Reduce 468

-FloatingPointLiteral    Reduce 468

-DoubleLiteral           Reduce 468

-CharacterLiteral        Reduce 468

-StringLiteral           Reduce 468

-PLUS_PLUS               Reduce 468

-MINUS_MINUS             Reduce 468

-LESS                    Reduce 468

-LPAREN                  Reduce 468

-LBRACE                  Reduce 468

-RBRACE                  Reduce 468

-SEMICOLON               Reduce 468

-AT                      Reduce 468

-BeginLambda             Reduce 468

-AT308                   Reduce 468

-$eof                    Reduce 468

-

-Default reduction to rule  468

-

-

-STATE 1050 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1911

-

-

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1051 ---------------------------------------------------------------------

-( 9 14 41 43 54 71 80 102 136 235 241 242 243 249 251 262 263 264 269 272 276 

-  277 278 279 286 291 297 298 306 307 308 309 310 311 312 313 314 315 317 318 

-  319 320 321 322 323 324 325 326 327 328 329 358 359 360 361 362 363 364 365 

-  366 367 368 369 370 371 372 373 374 375 376 378 379 380 381 382 383 384 385 

-  386 387 388 389 391 392 393 394 395 396 397 398 399 400 401 402 403 484 512 

-  513 516 552 596 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  729 737 741 748 751 752 778 779 804 821 823 827 832 833 834 836 854 855 856 

-  858 875 877 911 920 921 922 924 927 933 936 968 975 988 1004 1010 1023 1028 

-  1032 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1912

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-Identifier                      Reduce 71

-abstract                        Reduce 71

-boolean                         Reduce 71

-byte                            Reduce 71

-char                            Reduce 71

-class                           Reduce 71

-default                         Reduce 71

-double                          Reduce 71

-enum                            Reduce 71

-final                           Reduce 71

-float                           Reduce 71

-instanceof                      Reduce 71

-int                             Reduce 71

-interface                       Reduce 71

-long                            Reduce 71

-native                          Reduce 71

-package                         Reduce 71

-private                         Reduce 71

-protected                       Reduce 71

-public                          Reduce 71

-short                           Reduce 71

-static                          Reduce 71

-strictfp                        Reduce 71

-synchronized                    Reduce 71

-transient                       Reduce 71

-void                            Reduce 71

-volatile                        Reduce 71

-aspect                          Reduce 71

-pointcut                        Reduce 71

-around                          Reduce 71

-before                          Reduce 71

-after                           Reduce 71

-privileged                      Reduce 71

-PLUS_PLUS                       Reduce 71

-MINUS_MINUS                     Reduce 71

-EQUAL_EQUAL                     Reduce 71

-LESS_EQUAL                      Reduce 71

-GREATER_EQUAL                   Reduce 71

-NOT_EQUAL                       Reduce 71

-LEFT_SHIFT                      Reduce 71

-RIGHT_SHIFT                     Reduce 71

-UNSIGNED_RIGHT_SHIFT            Reduce 71

-PLUS_EQUAL                      Reduce 71

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1913

-

-

-MINUS_EQUAL                     Reduce 71

-MULTIPLY_EQUAL                  Reduce 71

-DIVIDE_EQUAL                    Reduce 71

-AND_EQUAL                       Reduce 71

-OR_EQUAL                        Reduce 71

-XOR_EQUAL                       Reduce 71

-REMAINDER_EQUAL                 Reduce 71

-LEFT_SHIFT_EQUAL                Reduce 71

-RIGHT_SHIFT_EQUAL               Reduce 71

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 71

-OR_OR                           Reduce 71

-AND_AND                         Reduce 71

-PLUS                            Reduce 71

-MINUS                           Reduce 71

-REMAINDER                       Reduce 71

-XOR                             Reduce 71

-AND                             Reduce 71

-MULTIPLY                        Reduce 71

-OR                              Reduce 71

-DIVIDE                          Reduce 71

-GREATER                         Reduce 71

-LESS                            Reduce 71

-LPAREN                          Reduce 71

-RPAREN                          Reduce 71

-RBRACE                          Reduce 71

-LBRACKET                        Reduce 71

-RBRACKET                        Reduce 71

-SEMICOLON                       Reduce 71

-QUESTION                        Reduce 71

-COLON                           Reduce 71

-COMMA                           Reduce 71

-DOT                             Reduce 71

-EQUAL                           Reduce 71

-AT                              Reduce 71

-ElidedSemicolonAndRightBrace    Reduce 71

-AT308                           Reduce 71

-$eof                            Reduce 71

-

-Default reduction to rule  71

-

-

-STATE 1052 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1914

-

-

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  754

-

-

-STATE 1053 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1915

-

-

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 674

-MINUS_EQUAL                     Reduce 674

-MULTIPLY_EQUAL                  Reduce 674

-DIVIDE_EQUAL                    Reduce 674

-AND_EQUAL                       Reduce 674

-OR_EQUAL                        Reduce 674

-XOR_EQUAL                       Reduce 674

-REMAINDER_EQUAL                 Reduce 674

-LEFT_SHIFT_EQUAL                Reduce 674

-RIGHT_SHIFT_EQUAL               Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 674

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-EQUAL                           Reduce 674

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  674

-

-

-STATE 1054 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-instanceof                      Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1916

-

-

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 673

-MINUS_EQUAL                     Reduce 673

-MULTIPLY_EQUAL                  Reduce 673

-DIVIDE_EQUAL                    Reduce 673

-AND_EQUAL                       Reduce 673

-OR_EQUAL                        Reduce 673

-XOR_EQUAL                       Reduce 673

-REMAINDER_EQUAL                 Reduce 673

-LEFT_SHIFT_EQUAL                Reduce 673

-RIGHT_SHIFT_EQUAL               Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 673

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-EQUAL                           Reduce 673

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  673

-

-

-STATE 1055 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1917

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1918

-

-

-

-

-STATE 1056 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1919

-

-

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1057 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1920

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1058 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1921

-

-

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1059 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1922

-

-

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1060 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1923

-

-

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1061 ---------------------------------------------------------------------

-( 9 41 43 46 71 235 241 242 243 249 251 262 263 264 269 272 276 277 279 291 

-  297 298 306 307 308 309 310 311 312 313 314 315 317 318 319 320 321 322 323 

-  324 325 326 327 328 329 358 359 360 361 362 363 364 365 366 367 368 369 370 

-  371 372 373 374 375 376 378 379 380 381 382 383 384 385 386 387 388 389 391 

-  392 393 394 395 396 397 398 399 400 401 402 403 484 512 513 516 634 639 642 

-  645 697 700 702 704 706 707 709 712 716 718 726 737 741 748 751 752 778 779 

-  821 823 827 832 833 834 836 854 855 856 858 911 921 922 927 933 936 968 975 

-  988 1004 1010 1023 1028 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1924

-

-

-

-Name ::= QualifiedName . (86)

-

-abstract                        Reduce 672

-final                           Reduce 672

-instanceof                      Reduce 672

-native                          Reduce 672

-private                         Reduce 672

-protected                       Reduce 672

-public                          Reduce 672

-static                          Reduce 672

-strictfp                        Reduce 672

-synchronized                    Reduce 672

-transient                       Reduce 672

-volatile                        Reduce 672

-PLUS_PLUS                       Reduce 672

-MINUS_MINUS                     Reduce 672

-EQUAL_EQUAL                     Reduce 672

-LESS_EQUAL                      Reduce 672

-GREATER_EQUAL                   Reduce 672

-NOT_EQUAL                       Reduce 672

-LEFT_SHIFT                      Reduce 672

-RIGHT_SHIFT                     Reduce 672

-UNSIGNED_RIGHT_SHIFT            Reduce 672

-PLUS_EQUAL                      Reduce 672

-MINUS_EQUAL                     Reduce 672

-MULTIPLY_EQUAL                  Reduce 672

-DIVIDE_EQUAL                    Reduce 672

-AND_EQUAL                       Reduce 672

-OR_EQUAL                        Reduce 672

-XOR_EQUAL                       Reduce 672

-REMAINDER_EQUAL                 Reduce 672

-LEFT_SHIFT_EQUAL                Reduce 672

-RIGHT_SHIFT_EQUAL               Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 672

-OR_OR                           Reduce 672

-AND_AND                         Reduce 672

-PLUS                            Reduce 672

-MINUS                           Reduce 672

-REMAINDER                       Reduce 672

-XOR                             Reduce 672

-AND                             Reduce 672

-MULTIPLY                        Reduce 672

-OR                              Reduce 672

-DIVIDE                          Reduce 672

-GREATER                         Reduce 672

-LESS                            Reduce 672

-LPAREN                          Reduce 68

-RPAREN                          Reduce 672

-RBRACE                          Reduce 672

-LBRACKET                        Reduce 86

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1925

-

-

-RBRACKET                        Reduce 672

-SEMICOLON                       Reduce 672

-QUESTION                        Reduce 672

-COLON                           Reduce 672

-COMMA                           Reduce 672

-DOT                             Reduce 86

-EQUAL                           Reduce 672

-AT                              Reduce 672

-COLON_COLON                     Reduce 86

-BeginTypeArguments              Reduce 86

-ElidedSemicolonAndRightBrace    Reduce 672

-AT308                           Reduce 86

-$eof                            Reduce 672

-

-Default reduction to rule  672

-

-

-STATE 1062 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1926

-

-

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-QUESTION                        Reduce 733

-COLON                           Reduce 754

-COMMA                           Reduce 754

-DOT                             Reduce 581

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  671

-

-

-STATE 1063 ---------------------------------------------------------------------

-( 9 41 43 71 235 241 249 251 262 263 269 272 276 277 279 291 326 329 382 402 

-  484 512 513 516 634 639 642 645 697 700 702 704 706 707 709 712 716 718 726 

-  737 741 752 821 823 827 832 833 834 836 854 855 856 911 921 922 927 968 975 

-  1004 1010 1023 )

-

-

-AssignmentExpression ::= ConditionalExpression . (737)

-AssignmentExpression ::= Assignment . (738)

-

-RPAREN                          Reduce 754

-RBRACE                          Reduce 754

-RBRACKET                        Reduce 754

-SEMICOLON                       Reduce 754

-COLON                           Reduce 754

-COMMA                           Reduce 754

-ElidedSemicolonAndRightBrace    Reduce 754

-$eof                            Reduce 754

-

-Default reduction to rule  754

-

-

-STATE 1064 ---------------------------------------------------------------------

-( 10 11 12 13 15 17 18 28 118 119 120 124 134 145 176 178 184 188 189 191 193 

-  197 218 338 342 405 433 434 451 452 463 469 472 579 659 660 677 679 682 686 

-  690 758 760 766 802 803 883 891 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1927

-

-

-

-Modifiers ::= Modifier . (157)

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= synchronized . (166)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-Modifier ::= SimpleModifier . (170)

-

-Identifier      Reduce 765

-abstract        Reduce 157

-boolean         Reduce 765

-byte            Reduce 765

-char            Reduce 765

-class           Reduce 765

-default         Reduce 765

-double          Reduce 765

-enum            Reduce 765

-final           Reduce 157

-float           Reduce 765

-int             Reduce 765

-interface       Reduce 765

-long            Reduce 765

-native          Reduce 157

-package         Reduce 157

-private         Reduce 157

-protected       Reduce 157

-public          Reduce 157

-short           Reduce 765

-static          Reduce 157

-strictfp        Reduce 157

-synchronized    Reduce 157

-transient       Reduce 157

-void            Reduce 765

-volatile        Reduce 157

-aspect          Reduce 765

-pointcut        Reduce 765

-around          Reduce 765

-before          Reduce 765

-after           Reduce 765

-privileged      Reduce 765

-LESS            Reduce 765

-AT              Reduce 157

-AT308           Reduce 765

-$eof            Reduce 765

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1928

-

-

-

-Default reduction to rule  765

-

-

-STATE 1065 ---------------------------------------------------------------------

-( 10 472 )

-

-

-ClassMemberDeclaration ::= AspectDeclaration . (180)

-ClassMemberDeclaration ::= PointcutDeclaration . (182)

-ClassBodyDeclaration ::= ClassMemberDeclaration . (357)

-ClassBodyDeclaration ::= StaticInitializer . (358)

-ClassBodyDeclaration ::= ConstructorDeclaration . (359)

-ClassMemberDeclaration ::= FieldDeclaration . (364)

-ClassMemberDeclaration ::= MethodDeclaration . (365)

-ClassMemberDeclaration ::= ClassDeclaration . (366)

-ClassMemberDeclaration ::= InterfaceDeclaration . (367)

-ClassMemberDeclaration ::= EnumDeclaration . (368)

-ClassMemberDeclaration ::= AnnotationTypeDeclaration . (369)

-MethodDeclaration ::= AbstractMethodDeclaration . (386)

-

-Identifier      Reduce 355

-abstract        Reduce 355

-boolean         Reduce 355

-byte            Reduce 355

-char            Reduce 355

-class           Reduce 355

-default         Reduce 355

-double          Reduce 355

-enum            Reduce 355

-final           Reduce 355

-float           Reduce 355

-int             Reduce 355

-interface       Reduce 355

-long            Reduce 355

-native          Reduce 355

-private         Reduce 355

-protected       Reduce 355

-public          Reduce 355

-short           Reduce 355

-static          Reduce 355

-strictfp        Reduce 355

-synchronized    Reduce 355

-transient       Reduce 355

-void            Reduce 355

-volatile        Reduce 355

-aspect          Reduce 355

-pointcut        Reduce 355

-privileged      Reduce 355

-LESS            Reduce 355

-LBRACE          Reduce 355

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1929

-

-

-RBRACE          Reduce 355

-SEMICOLON       Reduce 355

-AT              Reduce 355

-AT308           Reduce 355

-$eof            Reduce 355

-

-Default reduction to rule  355

-

-

-STATE 1066 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1930

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 582

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1067 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1931

-

-

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-AT                      Reduce 977

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1068 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1932

-

-

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 581

-AT                      Reduce 977

-COLON_COLON             Reduce 581

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1069 ---------------------------------------------------------------------

-( 14 199 284 596 804 875 877 )

-

-

-Name ::= QualifiedName . (86)

-

-abstract                Reduce 978

-final                   Reduce 978

-instanceof              Reduce 68

-native                  Reduce 978

-private                 Reduce 978

-protected               Reduce 978

-public                  Reduce 978

-static                  Reduce 978

-strictfp                Reduce 978

-synchronized            Reduce 978

-transient               Reduce 978

-volatile                Reduce 978

-PLUS_PLUS               Reduce 672

-MINUS_MINUS             Reduce 672

-EQUAL_EQUAL             Reduce 68

-LESS_EQUAL              Reduce 68

-GREATER_EQUAL           Reduce 68

-NOT_EQUAL               Reduce 68

-LEFT_SHIFT              Reduce 68

-RIGHT_SHIFT             Reduce 68

-UNSIGNED_RIGHT_SHIFT    Reduce 68

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1933

-

-

-OR_OR                   Reduce 68

-AND_AND                 Reduce 68

-PLUS                    Reduce 68

-MINUS                   Reduce 68

-REMAINDER               Reduce 68

-XOR                     Reduce 68

-AND                     Reduce 68

-MULTIPLY                Reduce 68

-OR                      Reduce 68

-DIVIDE                  Reduce 68

-GREATER                 Reduce 68

-LESS                    Reduce 86

-LPAREN                  Reduce 68

-RPAREN                  Reduce 978

-RBRACE                  Reduce 978

-LBRACKET                Reduce 86

-SEMICOLON               Reduce 978

-QUESTION                Reduce 68

-COMMA                   Reduce 978

-DOT                     Reduce 86

-AT                      Reduce 978

-COLON_COLON             Reduce 86

-BeginTypeArguments      Reduce 86

-AT308                   Reduce 86

-$eof                    Reduce 978

-

-Default reduction to rule  68

-

-

-STATE 1070 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1934

-

-

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 597

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1071 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1935

-

-

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 596

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1072 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1936

-

-

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 595

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1073 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1937

-

-

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 594

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1074 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-public                  Reduce 977

-static                  Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1938

-

-

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 587

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1075 ---------------------------------------------------------------------

-( 14 804 875 877 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                Reduce 977

-final                   Reduce 977

-instanceof              Reduce 915

-native                  Reduce 977

-private                 Reduce 977

-protected               Reduce 977

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1939

-

-

-public                  Reduce 977

-static                  Reduce 977

-strictfp                Reduce 977

-synchronized            Reduce 977

-transient               Reduce 977

-volatile                Reduce 977

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 977

-RBRACE                  Reduce 977

-LBRACKET                Reduce 586

-SEMICOLON               Reduce 977

-QUESTION                Reduce 935

-COMMA                   Reduce 977

-DOT                     Reduce 579

-AT                      Reduce 977

-COLON_COLON             Reduce 579

-$eof                    Reduce 977

-

-Default reduction to rule  977

-

-

-STATE 1076 ---------------------------------------------------------------------

-( 25 27 60 61 83 121 149 173 179 180 206 217 220 222 233 254 260 293 294 303 

-  316 331 334 350 355 377 390 409 424 443 444 450 478 494 504 521 592 632 667 

-  668 674 681 691 711 746 770 805 806 878 896 897 900 948 949 959 993 1001 

-  1002 )

-

-

-SimpleName ::= Identifier . (87)

-

-Identifier                      Reduce 84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1940

-

-

-abstract                        Reduce 84

-final                           Reduce 84

-implements                      Reduce 84

-instanceof                      Reduce 84

-native                          Reduce 84

-private                         Reduce 84

-protected                       Reduce 84

-public                          Reduce 84

-static                          Reduce 84

-strictfp                        Reduce 84

-synchronized                    Reduce 84

-this                            Reduce 84

-transient                       Reduce 84

-volatile                        Reduce 84

-aspect                          Reduce 84

-pointcut                        Reduce 84

-around                          Reduce 84

-before                          Reduce 84

-after                           Reduce 84

-declare                         Reduce 84

-privileged                      Reduce 84

-EQUAL_EQUAL                     Reduce 84

-NOT_EQUAL                       Reduce 84

-RIGHT_SHIFT                     Reduce 84

-UNSIGNED_RIGHT_SHIFT            Reduce 84

-OR_OR                           Reduce 84

-AND_AND                         Reduce 84

-XOR                             Reduce 84

-AND                             Reduce 84

-OR                              Reduce 84

-GREATER                         Reduce 84

-LESS                            Reduce 84

-LPAREN                          Reduce 84

-RPAREN                          Reduce 84

-LBRACE                          Reduce 84

-RBRACE                          Reduce 84

-LBRACKET                        Reduce 84

-RBRACKET                        Reduce 84

-SEMICOLON                       Reduce 84

-QUESTION                        Reduce 84

-COLON                           Reduce 84

-COMMA                           Reduce 84

-DOT                             Reduce 84

-AT                              Reduce 84

-ELLIPSIS                        Reduce 84

-COLON_COLON                     Reduce 84

-ElidedSemicolonAndRightBrace    Reduce 84

-AT308                           Reduce 84

-AT308DOTDOTDOT                  Reduce 84

-$eof                            Reduce 84

-

-Default reduction to rule  84

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1941

-

-

-

-

-STATE 1077 ---------------------------------------------------------------------

-( 25 60 83 121 133 138 143 173 179 192 194 216 233 294 316 331 334 339 351 377 

-  390 409 424 430 443 444 450 478 521 632 667 668 681 691 767 805 806 871 878 

-  896 897 900 959 1001 1002 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier                      Reduce 57

-abstract                        Reduce 57

-final                           Reduce 57

-instanceof                      Reduce 57

-native                          Reduce 57

-private                         Reduce 57

-protected                       Reduce 57

-public                          Reduce 57

-static                          Reduce 57

-strictfp                        Reduce 57

-synchronized                    Reduce 57

-this                            Reduce 57

-transient                       Reduce 57

-volatile                        Reduce 57

-aspect                          Reduce 57

-pointcut                        Reduce 57

-around                          Reduce 57

-before                          Reduce 57

-after                           Reduce 57

-declare                         Reduce 57

-privileged                      Reduce 57

-EQUAL_EQUAL                     Reduce 57

-NOT_EQUAL                       Reduce 57

-RIGHT_SHIFT                     Reduce 57

-UNSIGNED_RIGHT_SHIFT            Reduce 57

-OR_OR                           Reduce 57

-AND_AND                         Reduce 57

-PLUS                            Reduce 86

-XOR                             Reduce 57

-AND                             Reduce 57

-OR                              Reduce 57

-GREATER                         Reduce 57

-LESS                            Reduce 57

-LPAREN                          Reduce 57

-RPAREN                          Reduce 57

-RBRACE                          Reduce 57

-LBRACKET                        Reduce 86

-RBRACKET                        Reduce 57

-SEMICOLON                       Reduce 57

-QUESTION                        Reduce 57

-COLON                           Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1942

-

-

-COMMA                           Reduce 57

-DOT                             Reduce 86

-AT                              Reduce 57

-ELLIPSIS                        Reduce 57

-ElidedSemicolonAndRightBrace    Reduce 57

-AT308                           Reduce 86

-AT308DOTDOTDOT                  Reduce 57

-$eof                            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 1078 ---------------------------------------------------------------------

-( 25 294 443 444 552 805 806 959 )

-

-

-ReferenceType ::= ArrayType . (54)

-

-RIGHT_SHIFT             Reduce 54

-UNSIGNED_RIGHT_SHIFT    Reduce 54

-GREATER                 Reduce 54

-COMMA                   Reduce 824

-

-Default reduction to rule  54

-

-

-STATE 1079 ---------------------------------------------------------------------

-( 26 85 87 89 91 96 99 163 203 204 240 245 287 304 305 447 522 526 549 572 573 

-  583 591 593 635 644 653 750 848 860 872 873 926 938 944 945 )

-

-

-DimsLoop ::= OneDimLoop . (652)

-

-Identifier                      Reduce 651

-abstract                        Reduce 651

-default                         Reduce 651

-final                           Reduce 651

-instanceof                      Reduce 651

-native                          Reduce 651

-private                         Reduce 651

-protected                       Reduce 651

-public                          Reduce 651

-static                          Reduce 651

-strictfp                        Reduce 651

-synchronized                    Reduce 651

-this                            Reduce 651

-throws                          Reduce 651

-transient                       Reduce 651

-volatile                        Reduce 651

-aspect                          Reduce 651

-pointcut                        Reduce 651

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1943

-

-

-around                          Reduce 651

-before                          Reduce 651

-after                           Reduce 651

-declare                         Reduce 651

-privileged                      Reduce 651

-EQUAL_EQUAL                     Reduce 651

-NOT_EQUAL                       Reduce 651

-RIGHT_SHIFT                     Reduce 651

-UNSIGNED_RIGHT_SHIFT            Reduce 651

-OR_OR                           Reduce 651

-AND_AND                         Reduce 651

-XOR                             Reduce 651

-AND                             Reduce 651

-OR                              Reduce 651

-GREATER                         Reduce 651

-RPAREN                          Reduce 651

-LBRACE                          Reduce 651

-RBRACE                          Reduce 651

-LBRACKET                        Reduce 652

-RBRACKET                        Reduce 651

-SEMICOLON                       Reduce 651

-QUESTION                        Reduce 651

-COLON                           Reduce 651

-COMMA                           Reduce 651

-DOT                             Reduce 651

-EQUAL                           Reduce 651

-AT                              Reduce 651

-ELLIPSIS                        Reduce 651

-COLON_COLON                     Reduce 651

-ElidedSemicolonAndRightBrace    Reduce 651

-AT308                           Reduce 652

-AT308DOTDOTDOT                  Reduce 651

-$eof                            Reduce 651

-

-Default reduction to rule  651

-

-

-STATE 1080 ---------------------------------------------------------------------

-( 28 119 120 124 134 145 178 184 188 189 191 760 766 )

-

-

-FormalParameterList ::= FormalParameter . (404)

-

-RPAREN    Reduce 775

-COMMA     Reduce 404

-

-Default reduction to rule  775

-

-

-STATE 1081 ---------------------------------------------------------------------

-( 54 102 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1944

-

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 582

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1945

-

-

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1082 ---------------------------------------------------------------------

-( 54 102 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 943

-QUESTION                Reduce 935

-

-Default reduction to rule  899

-

-

-STATE 1083 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1946

-

-

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 597

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1084 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1947

-

-

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 596

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1085 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1948

-

-

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 595

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1086 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1949

-

-

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 594

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1087 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1950

-

-

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 587

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1088 ---------------------------------------------------------------------

-( 54 102 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1951

-

-

-DIVIDE_EQUAL                  Reduce 671

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-LBRACKET                      Reduce 586

-QUESTION                      Reduce 935

-DOT                           Reduce 579

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 579

-

-Default reduction to rule  671

-

-

-STATE 1089 ---------------------------------------------------------------------

-( 54 76 102 275 724 725 729 842 919 923 924 1011 1012 1013 1032 1033 1036 )

-

-

-Name ::= QualifiedName . (86)

-

-instanceof                    Reduce 68

-PLUS_PLUS                     Reduce 672

-MINUS_MINUS                   Reduce 672

-EQUAL_EQUAL                   Reduce 68

-LESS_EQUAL                    Reduce 68

-GREATER_EQUAL                 Reduce 68

-NOT_EQUAL                     Reduce 68

-LEFT_SHIFT                    Reduce 68

-RIGHT_SHIFT                   Reduce 68

-UNSIGNED_RIGHT_SHIFT          Reduce 68

-PLUS_EQUAL                    Reduce 672

-MINUS_EQUAL                   Reduce 672

-MULTIPLY_EQUAL                Reduce 672

-DIVIDE_EQUAL                  Reduce 672

-AND_EQUAL                     Reduce 672

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1952

-

-

-OR_EQUAL                      Reduce 672

-XOR_EQUAL                     Reduce 672

-REMAINDER_EQUAL               Reduce 672

-LEFT_SHIFT_EQUAL              Reduce 672

-RIGHT_SHIFT_EQUAL             Reduce 672

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 672

-OR_OR                         Reduce 68

-AND_AND                       Reduce 68

-PLUS                          Reduce 68

-MINUS                         Reduce 68

-REMAINDER                     Reduce 68

-XOR                           Reduce 68

-AND                           Reduce 68

-MULTIPLY                      Reduce 68

-OR                            Reduce 68

-DIVIDE                        Reduce 68

-GREATER                       Reduce 68

-LESS                          Reduce 86

-LPAREN                        Reduce 68

-RPAREN                        Reduce 86

-LBRACKET                      Reduce 86

-QUESTION                      Reduce 68

-DOT                           Reduce 86

-EQUAL                         Reduce 672

-COLON_COLON                   Reduce 86

-BeginTypeArguments            Reduce 86

-AT308                         Reduce 86

-

-Default reduction to rule  68

-

-

-STATE 1090 ---------------------------------------------------------------------

-( 54 102 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                    Reduce 915

-PLUS_PLUS                     Reduce 671

-MINUS_MINUS                   Reduce 671

-EQUAL_EQUAL                   Reduce 918

-LESS_EQUAL                    Reduce 906

-GREATER_EQUAL                 Reduce 906

-NOT_EQUAL                     Reduce 918

-LEFT_SHIFT                    Reduce 899

-RIGHT_SHIFT                   Reduce 899

-UNSIGNED_RIGHT_SHIFT          Reduce 899

-PLUS_EQUAL                    Reduce 671

-MINUS_EQUAL                   Reduce 671

-MULTIPLY_EQUAL                Reduce 671

-DIVIDE_EQUAL                  Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1953

-

-

-AND_EQUAL                     Reduce 671

-OR_EQUAL                      Reduce 671

-XOR_EQUAL                     Reduce 671

-REMAINDER_EQUAL               Reduce 671

-LEFT_SHIFT_EQUAL              Reduce 671

-RIGHT_SHIFT_EQUAL             Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL    Reduce 671

-OR_OR                         Reduce 935

-AND_AND                       Reduce 932

-PLUS                          Reduce 894

-MINUS                         Reduce 894

-REMAINDER                     Reduce 887

-XOR                           Reduce 926

-AND                           Reduce 923

-MULTIPLY                      Reduce 887

-OR                            Reduce 929

-DIVIDE                        Reduce 887

-GREATER                       Reduce 899

-LESS                          Reduce 899

-RPAREN                        Reduce 943

-QUESTION                      Reduce 935

-DOT                           Reduce 581

-EQUAL                         Reduce 671

-COLON_COLON                   Reduce 581

-

-Default reduction to rule  671

-

-

-STATE 1091 ---------------------------------------------------------------------

-( 61 180 206 217 220 222 254 260 504 674 711 746 770 949 )

-

-

-Name ::= QualifiedName . (86)

-

-Identifier      Reduce 57

-abstract        Reduce 57

-final           Reduce 57

-implements      Reduce 57

-native          Reduce 57

-private         Reduce 57

-protected       Reduce 57

-public          Reduce 57

-static          Reduce 57

-strictfp        Reduce 57

-synchronized    Reduce 57

-transient       Reduce 57

-volatile        Reduce 57

-AND             Reduce 57

-LESS            Reduce 57

-LPAREN          Reduce 57

-RPAREN          Reduce 57

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1954

-

-

-LBRACE          Reduce 57

-LBRACKET        Reduce 57

-SEMICOLON       Reduce 57

-COLON           Reduce 57

-COMMA           Reduce 57

-DOT             Reduce 86

-AT              Reduce 57

-COLON_COLON     Reduce 57

-AT308           Reduce 57

-$eof            Reduce 57

-

-Default reduction to rule  57

-

-

-STATE 1092 ---------------------------------------------------------------------

-( 80 136 286 )

-

-

-SimpleName ::= Identifier . (87)

-UnannotatableName ::= SimpleName . (88)

-

-Identifier      Reduce 83

-abstract        Reduce 83

-boolean         Reduce 83

-byte            Reduce 83

-char            Reduce 83

-class           Reduce 83

-default         Reduce 83

-double          Reduce 83

-enum            Reduce 83

-final           Reduce 83

-float           Reduce 83

-int             Reduce 83

-interface       Reduce 83

-long            Reduce 83

-native          Reduce 83

-package         Reduce 83

-private         Reduce 83

-protected       Reduce 83

-public          Reduce 83

-short           Reduce 83

-static          Reduce 83

-strictfp        Reduce 83

-synchronized    Reduce 83

-transient       Reduce 83

-void            Reduce 83

-volatile        Reduce 83

-aspect          Reduce 83

-pointcut        Reduce 83

-around          Reduce 83

-before          Reduce 83

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1955

-

-

-after           Reduce 83

-privileged      Reduce 83

-LESS            Reduce 83

-LPAREN          Reduce 83

-RPAREN          Reduce 83

-RBRACE          Reduce 83

-SEMICOLON       Reduce 83

-COMMA           Reduce 83

-DOT             Reduce 88

-AT              Reduce 83

-AT308           Reduce 83

-$eof            Reduce 83

-

-Default reduction to rule  83

-

-

-STATE 1093 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-

-Identifier              Reduce 312

-abstract                Reduce 312

-assert                  Reduce 312

-boolean                 Reduce 312

-break                   Reduce 312

-byte                    Reduce 312

-case                    Reduce 312

-catch                   Reduce 312

-char                    Reduce 312

-class                   Reduce 312

-continue                Reduce 312

-do                      Reduce 312

-double                  Reduce 312

-else                    Reduce 312

-extends                 Reduce 312

-false                   Reduce 312

-final                   Reduce 312

-finally                 Reduce 312

-float                   Reduce 312

-for                     Reduce 312

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1956

-

-

-if                      Reduce 312

-implements              Reduce 312

-import                  Reduce 312

-instanceof              Reduce 312

-int                     Reduce 312

-long                    Reduce 312

-native                  Reduce 312

-new                     Reduce 312

-null                    Reduce 312

-package                 Reduce 312

-private                 Reduce 312

-protected               Reduce 312

-public                  Reduce 312

-return                  Reduce 312

-short                   Reduce 312

-static                  Reduce 312

-strictfp                Reduce 312

-super                   Reduce 312

-switch                  Reduce 312

-synchronized            Reduce 312

-this                    Reduce 312

-throw                   Reduce 312

-throws                  Reduce 312

-transient               Reduce 312

-true                    Reduce 312

-try                     Reduce 312

-void                    Reduce 312

-volatile                Reduce 312

-while                   Reduce 312

-aspect                  Reduce 312

-pointcut                Reduce 312

-around                  Reduce 312

-before                  Reduce 312

-after                   Reduce 312

-declare                 Reduce 312

-privileged              Reduce 312

-IntegerLiteral          Reduce 312

-LongLiteral             Reduce 312

-FloatingPointLiteral    Reduce 312

-DoubleLiteral           Reduce 312

-CharacterLiteral        Reduce 312

-StringLiteral           Reduce 312

-NOT_EQUAL               Reduce 312

-RIGHT_SHIFT             Reduce 312

-UNSIGNED_RIGHT_SHIFT    Reduce 312

-OR_OR                   Reduce 312

-AND_AND                 Reduce 312

-PLUS                    Reduce 312

-NOT                     Reduce 312

-AND                     Reduce 312

-MULTIPLY                Reduce 312

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1957

-

-

-GREATER                 Reduce 312

-LESS                    Reduce 312

-LPAREN                  Reduce 312

-RPAREN                  Reduce 312

-LBRACE                  Reduce 312

-LBRACKET                Reduce 312

-RBRACKET                Reduce 312

-SEMICOLON               Reduce 312

-QUESTION                Reduce 312

-COLON                   Reduce 312

-COMMA                   Reduce 312

-DOT                     Reduce 312

-EQUAL                   Reduce 312

-AT                      Reduce 312

-ELLIPSIS                Reduce 312

-AT308                   Reduce 312

-

-Default reduction to rule  312

-

-

-STATE 1094 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-SimpleModifier ::= public . (159)

-SimpleModifier ::= protected . (160)

-SimpleModifier ::= private . (161)

-SimpleModifier ::= static . (162)

-SimpleModifier ::= abstract . (163)

-SimpleModifier ::= final . (164)

-SimpleModifier ::= native . (165)

-SimpleModifier ::= synchronized . (166)

-SimpleModifier ::= transient . (167)

-SimpleModifier ::= volatile . (168)

-SimpleModifier ::= strictfp . (169)

-

-Identifier              Reduce 311

-abstract                Reduce 311

-assert                  Reduce 311

-boolean                 Reduce 311

-break                   Reduce 311

-byte                    Reduce 311

-case                    Reduce 311

-catch                   Reduce 311

-char                    Reduce 311

-class                   Reduce 311

-continue                Reduce 311

-do                      Reduce 311

-double                  Reduce 311

-else                    Reduce 311

-extends                 Reduce 311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1958

-

-

-false                   Reduce 311

-final                   Reduce 311

-finally                 Reduce 311

-float                   Reduce 311

-for                     Reduce 311

-if                      Reduce 311

-implements              Reduce 311

-import                  Reduce 311

-instanceof              Reduce 311

-int                     Reduce 311

-long                    Reduce 311

-native                  Reduce 311

-new                     Reduce 311

-null                    Reduce 311

-package                 Reduce 311

-private                 Reduce 311

-protected               Reduce 311

-public                  Reduce 311

-return                  Reduce 311

-short                   Reduce 311

-static                  Reduce 311

-strictfp                Reduce 311

-super                   Reduce 311

-switch                  Reduce 311

-synchronized            Reduce 311

-this                    Reduce 311

-throw                   Reduce 311

-throws                  Reduce 311

-transient               Reduce 311

-true                    Reduce 311

-try                     Reduce 311

-void                    Reduce 311

-volatile                Reduce 311

-while                   Reduce 311

-aspect                  Reduce 311

-pointcut                Reduce 311

-around                  Reduce 311

-before                  Reduce 311

-after                   Reduce 311

-declare                 Reduce 311

-privileged              Reduce 311

-IntegerLiteral          Reduce 311

-LongLiteral             Reduce 311

-FloatingPointLiteral    Reduce 311

-DoubleLiteral           Reduce 311

-CharacterLiteral        Reduce 311

-StringLiteral           Reduce 311

-NOT_EQUAL               Reduce 311

-RIGHT_SHIFT             Reduce 311

-UNSIGNED_RIGHT_SHIFT    Reduce 311

-OR_OR                   Reduce 311

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1959

-

-

-AND_AND                 Reduce 311

-PLUS                    Reduce 311

-NOT                     Reduce 311

-AND                     Reduce 311

-MULTIPLY                Reduce 311

-GREATER                 Reduce 311

-LESS                    Reduce 311

-LPAREN                  Reduce 311

-RPAREN                  Reduce 311

-LBRACE                  Reduce 311

-LBRACKET                Reduce 311

-RBRACKET                Reduce 311

-SEMICOLON               Reduce 311

-QUESTION                Reduce 311

-COLON                   Reduce 311

-COMMA                   Reduce 311

-DOT                     Reduce 311

-EQUAL                   Reduce 311

-AT                      Reduce 311

-ELLIPSIS                Reduce 311

-AT308                   Reduce 311

-

-Default reduction to rule  311

-

-

-STATE 1095 ---------------------------------------------------------------------

-( 181 182 413 415 756 757 863 864 881 884 950 951 953 998 )

-

-

-JavaIdentifier ::= Identifier . (35)

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-Identifier              Reduce 288

-abstract                Reduce 288

-assert                  Reduce 288

-boolean                 Reduce 288

-break                   Reduce 288

-byte                    Reduce 288

-case                    Reduce 288

-catch                   Reduce 288

-char                    Reduce 288

-class                   Reduce 288

-continue                Reduce 288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1960

-

-

-do                      Reduce 288

-double                  Reduce 288

-else                    Reduce 288

-extends                 Reduce 288

-false                   Reduce 288

-final                   Reduce 288

-finally                 Reduce 288

-float                   Reduce 288

-for                     Reduce 288

-if                      Reduce 288

-implements              Reduce 288

-import                  Reduce 288

-instanceof              Reduce 288

-int                     Reduce 288

-long                    Reduce 288

-native                  Reduce 288

-new                     Reduce 288

-null                    Reduce 288

-package                 Reduce 288

-private                 Reduce 288

-protected               Reduce 288

-public                  Reduce 288

-return                  Reduce 288

-short                   Reduce 288

-static                  Reduce 288

-strictfp                Reduce 288

-super                   Reduce 288

-switch                  Reduce 288

-synchronized            Reduce 288

-this                    Reduce 288

-throw                   Reduce 288

-throws                  Reduce 288

-transient               Reduce 288

-true                    Reduce 288

-try                     Reduce 288

-void                    Reduce 288

-volatile                Reduce 288

-while                   Reduce 288

-aspect                  Reduce 288

-pointcut                Reduce 288

-around                  Reduce 288

-before                  Reduce 288

-after                   Reduce 288

-declare                 Reduce 288

-privileged              Reduce 288

-IntegerLiteral          Reduce 288

-LongLiteral             Reduce 288

-FloatingPointLiteral    Reduce 288

-DoubleLiteral           Reduce 288

-CharacterLiteral        Reduce 288

-StringLiteral           Reduce 288

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1961

-

-

-NOT_EQUAL               Reduce 288

-RIGHT_SHIFT             Reduce 288

-UNSIGNED_RIGHT_SHIFT    Reduce 288

-OR_OR                   Reduce 288

-AND_AND                 Reduce 288

-PLUS                    Reduce 288

-NOT                     Reduce 288

-AND                     Reduce 288

-MULTIPLY                Reduce 288

-GREATER                 Reduce 288

-LESS                    Reduce 288

-LPAREN                  Reduce 288

-RPAREN                  Reduce 288

-LBRACE                  Reduce 288

-LBRACKET                Reduce 288

-RBRACKET                Reduce 288

-SEMICOLON               Reduce 288

-QUESTION                Reduce 288

-COLON                   Reduce 288

-COMMA                   Reduce 288

-DOT                     Reduce 288

-EQUAL                   Reduce 288

-AT                      Reduce 288

-ELLIPSIS                Reduce 288

-AT308                   Reduce 288

-

-Default reduction to rule  288

-

-

-STATE 1096 ---------------------------------------------------------------------

-( 197 )

-

-

-TypeDeclarations ::= TypeDeclaration . (138)

-TypeDeclaration ::= ClassDeclaration . (152)

-TypeDeclaration ::= InterfaceDeclaration . (153)

-TypeDeclaration ::= EnumDeclaration . (155)

-TypeDeclaration ::= AnnotationTypeDeclaration . (156)

-TypeDeclaration ::= AspectDeclaration . (178)

-

-abstract        Reduce 138

-class           Reduce 138

-enum            Reduce 138

-final           Reduce 138

-interface       Reduce 138

-native          Reduce 138

-private         Reduce 138

-protected       Reduce 138

-public          Reduce 138

-static          Reduce 138

-strictfp        Reduce 138

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1962

-

-

-synchronized    Reduce 138

-transient       Reduce 138

-volatile        Reduce 138

-aspect          Reduce 138

-privileged      Reduce 138

-SEMICOLON       Reduce 138

-AT              Reduce 138

-$eof            Reduce 115

-

-Default reduction to rule  138

-

-

-STATE 1097 ---------------------------------------------------------------------

-( 199 284 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1963

-

-

-LBRACKET                Reduce 582

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1098 ---------------------------------------------------------------------

-( 199 284 )

-

-

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-instanceof              Reduce 71

-PLUS_PLUS               Reduce 71

-MINUS_MINUS             Reduce 71

-EQUAL_EQUAL             Reduce 71

-LESS_EQUAL              Reduce 71

-GREATER_EQUAL           Reduce 71

-NOT_EQUAL               Reduce 71

-LEFT_SHIFT              Reduce 71

-RIGHT_SHIFT             Reduce 71

-UNSIGNED_RIGHT_SHIFT    Reduce 71

-OR_OR                   Reduce 71

-AND_AND                 Reduce 71

-PLUS                    Reduce 71

-MINUS                   Reduce 71

-REMAINDER               Reduce 71

-XOR                     Reduce 71

-AND                     Reduce 71

-MULTIPLY                Reduce 71

-OR                      Reduce 71

-DIVIDE                  Reduce 71

-GREATER                 Reduce 71

-LPAREN                  Reduce 71

-RPAREN                  Reduce 71

-LBRACKET                Reduce 71

-QUESTION                Reduce 71

-DOT                     Reduce 71

-EQUAL                   Reduce 69

-

-Default reduction to rule  71

-

-

-STATE 1099 ---------------------------------------------------------------------

-( 199 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1964

-

-

-

-MemberValuePairs ::= MemberValuePair . (972)

-

-RPAREN    Reduce 971

-COMMA     Reduce 972

-

-Default reduction to rule  971

-

-

-STATE 1100 ---------------------------------------------------------------------

-( 199 284 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-QUESTION                Reduce 935

-

-Default reduction to rule  899

-

-

-STATE 1101 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1965

-

-

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 597

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1102 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1966

-

-

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 596

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1103 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 595

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1967

-

-

-

-Default reduction to rule  899

-

-

-STATE 1104 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 594

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1105 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1968

-

-

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 587

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1106 ---------------------------------------------------------------------

-( 199 284 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1969

-

-

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-LBRACKET                Reduce 586

-QUESTION                Reduce 935

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1107 ---------------------------------------------------------------------

-( 199 284 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RPAREN                  Reduce 989

-QUESTION                Reduce 935

-DOT                     Reduce 581

-COLON_COLON             Reduce 581

-

-Default reduction to rule  899

-

-

-STATE 1108 ---------------------------------------------------------------------

-( 199 284 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1970

-

-

-

-Annotation ::= NormalAnnotation . (965)

-Annotation ::= MarkerAnnotation . (966)

-Annotation ::= SingleMemberAnnotation . (967)

-MemberValue ::= ConditionalExpression_NotName . (977)

-MemberValue ::= Annotation . (979)

-MemberValue ::= MemberValueArrayInitializer . (980)

-

-RPAREN    Reduce 989

-

-Default reduction to rule  989

-

-

-STATE 1109 ---------------------------------------------------------------------

-( 231 )

-

-

-Catches ::= CatchClause . (573)

-

-Identifier              Reduce 573

-abstract                Reduce 573

-assert                  Reduce 573

-boolean                 Reduce 573

-break                   Reduce 573

-byte                    Reduce 573

-case                    Reduce 573

-catch                   Reduce 573

-char                    Reduce 573

-class                   Reduce 573

-continue                Reduce 573

-default                 Reduce 573

-do                      Reduce 573

-double                  Reduce 573

-else                    Reduce 573

-enum                    Reduce 573

-false                   Reduce 573

-final                   Reduce 573

-finally                 Reduce 788

-float                   Reduce 573

-for                     Reduce 573

-if                      Reduce 573

-int                     Reduce 573

-interface               Reduce 573

-long                    Reduce 573

-native                  Reduce 573

-new                     Reduce 573

-null                    Reduce 573

-private                 Reduce 573

-protected               Reduce 573

-public                  Reduce 573

-return                  Reduce 573

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1971

-

-

-short                   Reduce 573

-static                  Reduce 573

-strictfp                Reduce 573

-super                   Reduce 573

-switch                  Reduce 573

-synchronized            Reduce 573

-this                    Reduce 573

-throw                   Reduce 573

-transient               Reduce 573

-true                    Reduce 573

-try                     Reduce 573

-void                    Reduce 573

-volatile                Reduce 573

-while                   Reduce 573

-aspect                  Reduce 573

-pointcut                Reduce 573

-around                  Reduce 573

-before                  Reduce 573

-after                   Reduce 573

-declare                 Reduce 573

-privileged              Reduce 573

-IntegerLiteral          Reduce 573

-LongLiteral             Reduce 573

-FloatingPointLiteral    Reduce 573

-DoubleLiteral           Reduce 573

-CharacterLiteral        Reduce 573

-StringLiteral           Reduce 573

-PLUS_PLUS               Reduce 573

-MINUS_MINUS             Reduce 573

-LESS                    Reduce 573

-LPAREN                  Reduce 573

-LBRACE                  Reduce 573

-RBRACE                  Reduce 573

-SEMICOLON               Reduce 573

-AT                      Reduce 573

-BeginLambda             Reduce 573

-AT308                   Reduce 573

-$eof                    Reduce 573

-

-Default reduction to rule  573

-

-

-STATE 1110 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1972

-

-

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1973

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1111 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1974

-

-

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-AT                              Reduce 682

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1112 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1975

-

-

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-AT                              Reduce 682

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1113 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1976

-

-

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1114 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1977

-

-

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1115 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1978

-

-

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1116 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1979

-

-

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1117 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1980

-

-

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1118 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-  933 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1981

-

-

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 579

-AT                              Reduce 682

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

-

-STATE 1119 ---------------------------------------------------------------------

-( 242 243 297 298 306 307 308 309 310 358 359 360 361 364 365 366 399 400 401 

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1982

-

-

-  933 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 682

-final                           Reduce 682

-instanceof                      Reduce 682

-native                          Reduce 682

-private                         Reduce 682

-protected                       Reduce 682

-public                          Reduce 682

-static                          Reduce 682

-strictfp                        Reduce 682

-synchronized                    Reduce 682

-transient                       Reduce 682

-volatile                        Reduce 682

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 682

-LESS_EQUAL                      Reduce 682

-GREATER_EQUAL                   Reduce 682

-NOT_EQUAL                       Reduce 682

-LEFT_SHIFT                      Reduce 682

-RIGHT_SHIFT                     Reduce 682

-UNSIGNED_RIGHT_SHIFT            Reduce 682

-OR_OR                           Reduce 682

-AND_AND                         Reduce 682

-PLUS                            Reduce 682

-MINUS                           Reduce 682

-REMAINDER                       Reduce 682

-XOR                             Reduce 682

-AND                             Reduce 682

-MULTIPLY                        Reduce 682

-OR                              Reduce 682

-DIVIDE                          Reduce 682

-GREATER                         Reduce 682

-LESS                            Reduce 682

-RPAREN                          Reduce 682

-RBRACE                          Reduce 682

-RBRACKET                        Reduce 682

-SEMICOLON                       Reduce 682

-QUESTION                        Reduce 682

-COLON                           Reduce 682

-COMMA                           Reduce 682

-DOT                             Reduce 581

-AT                              Reduce 682

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 682

-$eof                            Reduce 682

-

-Default reduction to rule  682

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1983

-

-

-

-

-STATE 1120 ---------------------------------------------------------------------

-( 264 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1984

-

-

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1121 ---------------------------------------------------------------------

-( 264 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-instanceof                      Reduce 720

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1985

-

-

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  737

-

-

-STATE 1122 ---------------------------------------------------------------------

-( 264 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1986

-

-

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 581

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1123 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1987

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1124 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1988

-

-

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1125 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1989

-

-

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1126 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1990

-

-

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1127 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1991

-

-

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1128 ---------------------------------------------------------------------

-( 264 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1992

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 671

-MINUS_EQUAL                     Reduce 671

-MULTIPLY_EQUAL                  Reduce 671

-DIVIDE_EQUAL                    Reduce 671

-AND_EQUAL                       Reduce 671

-OR_EQUAL                        Reduce 671

-XOR_EQUAL                       Reduce 671

-REMAINDER_EQUAL                 Reduce 671

-LEFT_SHIFT_EQUAL                Reduce 671

-RIGHT_SHIFT_EQUAL               Reduce 671

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 671

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-DOT                             Reduce 579

-EQUAL                           Reduce 671

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  671

-

-

-STATE 1129 ---------------------------------------------------------------------

-( 264 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 674

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1993

-

-

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 674

-MINUS_EQUAL                     Reduce 674

-MULTIPLY_EQUAL                  Reduce 674

-DIVIDE_EQUAL                    Reduce 674

-AND_EQUAL                       Reduce 674

-OR_EQUAL                        Reduce 674

-XOR_EQUAL                       Reduce 674

-REMAINDER_EQUAL                 Reduce 674

-LEFT_SHIFT_EQUAL                Reduce 674

-RIGHT_SHIFT_EQUAL               Reduce 674

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 674

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-EQUAL                           Reduce 674

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  674

-

-

-STATE 1130 ---------------------------------------------------------------------

-( 264 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1994

-

-

-instanceof                      Reduce 720

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-PLUS_EQUAL                      Reduce 673

-MINUS_EQUAL                     Reduce 673

-MULTIPLY_EQUAL                  Reduce 673

-DIVIDE_EQUAL                    Reduce 673

-AND_EQUAL                       Reduce 673

-OR_EQUAL                        Reduce 673

-XOR_EQUAL                       Reduce 673

-REMAINDER_EQUAL                 Reduce 673

-LEFT_SHIFT_EQUAL                Reduce 673

-RIGHT_SHIFT_EQUAL               Reduce 673

-UNSIGNED_RIGHT_SHIFT_EQUAL      Reduce 673

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 737

-RBRACE                          Reduce 737

-RBRACKET                        Reduce 737

-SEMICOLON                       Reduce 737

-QUESTION                        Reduce 733

-COLON                           Reduce 737

-COMMA                           Reduce 737

-EQUAL                           Reduce 673

-ElidedSemicolonAndRightBrace    Reduce 737

-$eof                            Reduce 737

-

-Default reduction to rule  673

-

-

-STATE 1131 ---------------------------------------------------------------------

-( 278 920 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1995

-

-

-StatementExpressionList ::= StatementExpression . (547)

-

-SEMICOLON    Reduce 544

-COMMA        Reduce 547

-

-Default reduction to rule  544

-

-

-STATE 1132 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1996

-

-

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1133 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1997

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1134 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1998

-

-

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1135 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 1999

-

-

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-AT                              Reduce 708

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1136 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2000

-

-

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1137 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2001

-

-

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1138 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2002

-

-

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1139 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2003

-

-

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1140 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2004

-

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2005

-

-

-

-

-STATE 1141 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 579

-AT                              Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2006

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1142 ---------------------------------------------------------------------

-( 311 312 313 372 373 374 394 395 396 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 708

-final                           Reduce 708

-instanceof                      Reduce 708

-native                          Reduce 708

-private                         Reduce 708

-protected                       Reduce 708

-public                          Reduce 708

-static                          Reduce 708

-strictfp                        Reduce 708

-synchronized                    Reduce 708

-transient                       Reduce 708

-volatile                        Reduce 708

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 708

-LESS_EQUAL                      Reduce 708

-GREATER_EQUAL                   Reduce 708

-NOT_EQUAL                       Reduce 708

-LEFT_SHIFT                      Reduce 708

-RIGHT_SHIFT                     Reduce 708

-UNSIGNED_RIGHT_SHIFT            Reduce 708

-OR_OR                           Reduce 708

-AND_AND                         Reduce 708

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 708

-AND                             Reduce 708

-MULTIPLY                        Reduce 704

-OR                              Reduce 708

-DIVIDE                          Reduce 704

-GREATER                         Reduce 708

-LESS                            Reduce 708

-RPAREN                          Reduce 708

-RBRACE                          Reduce 708

-RBRACKET                        Reduce 708

-SEMICOLON                       Reduce 708

-QUESTION                        Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2007

-

-

-COLON                           Reduce 708

-COMMA                           Reduce 708

-DOT                             Reduce 581

-AT                              Reduce 708

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 708

-$eof                            Reduce 708

-

-Default reduction to rule  708

-

-

-STATE 1143 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2008

-

-

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1144 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2009

-

-

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 581

-AT                              Reduce 704

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1145 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2010

-

-

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1146 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2011

-

-

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1147 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2012

-

-

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1148 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2013

-

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1149 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2014

-

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2015

-

-

-

-

-STATE 1150 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-DOT                             Reduce 579

-AT                              Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2016

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1151 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2017

-

-

-COLON                           Reduce 704

-COMMA                           Reduce 704

-AT                              Reduce 704

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1152 ---------------------------------------------------------------------

-( 314 315 362 363 397 398 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 704

-final                           Reduce 704

-instanceof                      Reduce 704

-native                          Reduce 704

-private                         Reduce 704

-protected                       Reduce 704

-public                          Reduce 704

-static                          Reduce 704

-strictfp                        Reduce 704

-synchronized                    Reduce 704

-transient                       Reduce 704

-volatile                        Reduce 704

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 704

-LESS_EQUAL                      Reduce 704

-GREATER_EQUAL                   Reduce 704

-NOT_EQUAL                       Reduce 704

-LEFT_SHIFT                      Reduce 704

-RIGHT_SHIFT                     Reduce 704

-UNSIGNED_RIGHT_SHIFT            Reduce 704

-OR_OR                           Reduce 704

-AND_AND                         Reduce 704

-PLUS                            Reduce 704

-MINUS                           Reduce 704

-REMAINDER                       Reduce 704

-XOR                             Reduce 704

-AND                             Reduce 704

-MULTIPLY                        Reduce 704

-OR                              Reduce 704

-DIVIDE                          Reduce 704

-GREATER                         Reduce 704

-LESS                            Reduce 704

-RPAREN                          Reduce 704

-RBRACE                          Reduce 704

-RBRACKET                        Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2018

-

-

-SEMICOLON                       Reduce 704

-QUESTION                        Reduce 704

-COLON                           Reduce 704

-COMMA                           Reduce 704

-AT                              Reduce 704

-ElidedSemicolonAndRightBrace    Reduce 704

-$eof                            Reduce 704

-

-Default reduction to rule  704

-

-

-STATE 1153 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2019

-

-

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1154 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2020

-

-

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1155 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2021

-

-

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 581

-AT                              Reduce 711

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1156 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2022

-

-

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1157 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2023

-

-

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1158 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2024

-

-

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1159 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2025

-

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2026

-

-

-

-

-STATE 1160 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2027

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1161 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2028

-

-

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-DOT                             Reduce 579

-AT                              Reduce 711

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1162 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-GREATER                         Reduce 711

-LESS                            Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2029

-

-

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1163 ---------------------------------------------------------------------

-( 317 318 319 320 367 368 369 370 371 391 392 393 552 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 711

-final                           Reduce 711

-instanceof                      Reduce 711

-native                          Reduce 711

-private                         Reduce 711

-protected                       Reduce 711

-public                          Reduce 711

-static                          Reduce 711

-strictfp                        Reduce 711

-synchronized                    Reduce 711

-transient                       Reduce 711

-volatile                        Reduce 711

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 711

-LESS_EQUAL                      Reduce 711

-GREATER_EQUAL                   Reduce 711

-NOT_EQUAL                       Reduce 711

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 711

-AND_AND                         Reduce 711

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 711

-AND                             Reduce 711

-MULTIPLY                        Reduce 704

-OR                              Reduce 711

-DIVIDE                          Reduce 704

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2030

-

-

-GREATER                         Reduce 711

-LESS                            Reduce 711

-RPAREN                          Reduce 711

-RBRACE                          Reduce 711

-RBRACKET                        Reduce 711

-SEMICOLON                       Reduce 711

-QUESTION                        Reduce 711

-COLON                           Reduce 711

-COMMA                           Reduce 711

-AT                              Reduce 711

-ElidedSemicolonAndRightBrace    Reduce 711

-$eof                            Reduce 711

-

-Default reduction to rule  711

-

-

-STATE 1164 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2031

-

-

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1165 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2032

-

-

-transient                       Reduce 722

-volatile                        Reduce 722

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1166 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2033

-

-

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1167 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2034

-

-

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-AT                              Reduce 722

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1168 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2035

-

-

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1169 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2036

-

-

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1170 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2037

-

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2038

-

-

-

-

-STATE 1171 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2039

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1172 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2040

-

-

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1173 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2041

-

-

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 579

-AT                              Reduce 722

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1174 ---------------------------------------------------------------------

-( 321 379 387 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 722

-final                           Reduce 722

-instanceof                      Reduce 720

-native                          Reduce 722

-private                         Reduce 722

-protected                       Reduce 722

-public                          Reduce 722

-static                          Reduce 722

-strictfp                        Reduce 722

-synchronized                    Reduce 722

-transient                       Reduce 722

-volatile                        Reduce 722

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 722

-AND_AND                         Reduce 722

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 722

-AND                             Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2042

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 722

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 722

-RBRACE                          Reduce 722

-RBRACKET                        Reduce 722

-SEMICOLON                       Reduce 722

-QUESTION                        Reduce 722

-COLON                           Reduce 722

-COMMA                           Reduce 722

-DOT                             Reduce 581

-AT                              Reduce 722

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 722

-$eof                            Reduce 722

-

-Default reduction to rule  722

-

-

-STATE 1175 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2043

-

-

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1176 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2044

-

-

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1177 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2045

-

-

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 581

-AT                              Reduce 720

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1178 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2046

-

-

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1179 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2047

-

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2048

-

-

-

-

-STATE 1180 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2049

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1181 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2050

-

-

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1182 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2051

-

-

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1183 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2052

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-DOT                             Reduce 579

-AT                              Reduce 720

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1184 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2053

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1185 ---------------------------------------------------------------------

-( 322 323 375 376 388 389 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 720

-final                           Reduce 720

-instanceof                      Reduce 720

-native                          Reduce 720

-private                         Reduce 720

-protected                       Reduce 720

-public                          Reduce 720

-static                          Reduce 720

-strictfp                        Reduce 720

-synchronized                    Reduce 720

-transient                       Reduce 720

-volatile                        Reduce 720

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 720

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 720

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2054

-

-

-OR_OR                           Reduce 720

-AND_AND                         Reduce 720

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 720

-AND                             Reduce 720

-MULTIPLY                        Reduce 704

-OR                              Reduce 720

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 720

-RBRACE                          Reduce 720

-RBRACKET                        Reduce 720

-SEMICOLON                       Reduce 720

-QUESTION                        Reduce 720

-COLON                           Reduce 720

-COMMA                           Reduce 720

-AT                              Reduce 720

-ElidedSemicolonAndRightBrace    Reduce 720

-$eof                            Reduce 720

-

-Default reduction to rule  720

-

-

-STATE 1186 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2055

-

-

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1187 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2056

-

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1188 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2057

-

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1189 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2058

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-AT                              Reduce 727

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1190 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2059

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2060

-

-

-

-

-STATE 1191 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2061

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1192 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2062

-

-

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1193 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2063

-

-

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1194 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2064

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1195 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2065

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 579

-AT                              Reduce 727

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1196 ---------------------------------------------------------------------

-( 324 381 385 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 727

-final                           Reduce 727

-instanceof                      Reduce 720

-native                          Reduce 727

-private                         Reduce 727

-protected                       Reduce 727

-public                          Reduce 727

-static                          Reduce 727

-strictfp                        Reduce 727

-synchronized                    Reduce 727

-transient                       Reduce 727

-volatile                        Reduce 727

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2066

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 727

-AND_AND                         Reduce 727

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 727

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 727

-RBRACE                          Reduce 727

-RBRACKET                        Reduce 727

-SEMICOLON                       Reduce 727

-QUESTION                        Reduce 727

-COLON                           Reduce 727

-COMMA                           Reduce 727

-DOT                             Reduce 581

-AT                              Reduce 727

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 727

-$eof                            Reduce 727

-

-Default reduction to rule  727

-

-

-STATE 1197 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2067

-

-

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1198 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2068

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1199 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2069

-

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 581

-AT                              Reduce 725

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1200 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2070

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2071

-

-

-

-

-STATE 1201 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2072

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1202 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2073

-

-

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1203 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2074

-

-

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1204 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2075

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1205 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2076

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-DOT                             Reduce 579

-AT                              Reduce 725

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1206 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2077

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1207 ---------------------------------------------------------------------

-( 325 378 386 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 725

-final                           Reduce 725

-instanceof                      Reduce 720

-native                          Reduce 725

-private                         Reduce 725

-protected                       Reduce 725

-public                          Reduce 725

-static                          Reduce 725

-strictfp                        Reduce 725

-synchronized                    Reduce 725

-transient                       Reduce 725

-volatile                        Reduce 725

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2078

-

-

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 725

-AND_AND                         Reduce 725

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 725

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 725

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 725

-RBRACE                          Reduce 725

-RBRACKET                        Reduce 725

-SEMICOLON                       Reduce 725

-QUESTION                        Reduce 725

-COLON                           Reduce 725

-COMMA                           Reduce 725

-AT                              Reduce 725

-ElidedSemicolonAndRightBrace    Reduce 725

-$eof                            Reduce 725

-

-Default reduction to rule  725

-

-

-STATE 1208 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2079

-

-

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1209 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2080

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1210 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2081

-

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1211 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2082

-

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-AT                              Reduce 731

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1212 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2083

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2084

-

-

-

-

-STATE 1213 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2085

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1214 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2086

-

-

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1215 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2087

-

-

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1216 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2088

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1217 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2089

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 579

-AT                              Reduce 731

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1218 ---------------------------------------------------------------------

-( 327 383 403 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 731

-final                           Reduce 731

-instanceof                      Reduce 720

-native                          Reduce 731

-private                         Reduce 731

-protected                       Reduce 731

-public                          Reduce 731

-static                          Reduce 731

-strictfp                        Reduce 731

-synchronized                    Reduce 731

-transient                       Reduce 731

-volatile                        Reduce 731

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2090

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 731

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 731

-RBRACE                          Reduce 731

-RBRACKET                        Reduce 731

-SEMICOLON                       Reduce 731

-QUESTION                        Reduce 731

-COLON                           Reduce 731

-COMMA                           Reduce 731

-DOT                             Reduce 581

-AT                              Reduce 731

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 731

-$eof                            Reduce 731

-

-Default reduction to rule  731

-

-

-STATE 1219 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2091

-

-

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1220 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2092

-

-

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1221 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2093

-

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 581

-AT                              Reduce 729

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1222 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2094

-

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2095

-

-

-

-

-STATE 1223 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2096

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1224 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2097

-

-

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1225 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2098

-

-

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1226 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2099

-

-

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1227 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2100

-

-

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-DOT                             Reduce 579

-AT                              Reduce 729

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1228 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2101

-

-

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1229 ---------------------------------------------------------------------

-( 328 380 384 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 729

-final                           Reduce 729

-instanceof                      Reduce 720

-native                          Reduce 729

-private                         Reduce 729

-protected                       Reduce 729

-public                          Reduce 729

-static                          Reduce 729

-strictfp                        Reduce 729

-synchronized                    Reduce 729

-transient                       Reduce 729

-volatile                        Reduce 729

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2102

-

-

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 729

-AND_AND                         Reduce 729

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 729

-RBRACE                          Reduce 729

-RBRACKET                        Reduce 729

-SEMICOLON                       Reduce 729

-QUESTION                        Reduce 729

-COLON                           Reduce 729

-COMMA                           Reduce 729

-AT                              Reduce 729

-ElidedSemicolonAndRightBrace    Reduce 729

-$eof                            Reduce 729

-

-Default reduction to rule  729

-

-

-STATE 1230 ---------------------------------------------------------------------

-( 329 )

-

-

-VariableInitializer ::= Expression . (384)

-VariableInitializer ::= ArrayInitializer . (385)

-

-RBRACE    Reduce 464

-COMMA     Reduce 464

-

-Default reduction to rule  464

-

-

-STATE 1231 ---------------------------------------------------------------------

-( 428 870 )

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2103

-

-

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LPAREN       Reduce 38

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-

-Default reduction to rule  36

-

-

-STATE 1232 ---------------------------------------------------------------------

-( 428 870 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-

-PLUS         Reduce 241

-LESS         Reduce 241

-LBRACKET     Reduce 36

-SEMICOLON    Reduce 36

-COMMA        Reduce 36

-DOT          Reduce 241

-EQUAL        Reduce 36

-AT308        Reduce 36

-

-Default reduction to rule  36

-

-

-STATE 1233 ---------------------------------------------------------------------

-( 473 )

-

-

-Catches ::= CatchClause . (573)

-

-Identifier              Reduce 788

-abstract                Reduce 788

-assert                  Reduce 788

-boolean                 Reduce 788

-break                   Reduce 788

-byte                    Reduce 788

-case                    Reduce 788

-catch                   Reduce 573

-char                    Reduce 788

-class                   Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2104

-

-

-continue                Reduce 788

-default                 Reduce 788

-do                      Reduce 788

-double                  Reduce 788

-else                    Reduce 788

-enum                    Reduce 788

-false                   Reduce 788

-final                   Reduce 788

-finally                 Reduce 788

-float                   Reduce 788

-for                     Reduce 788

-if                      Reduce 788

-int                     Reduce 788

-interface               Reduce 788

-long                    Reduce 788

-native                  Reduce 788

-new                     Reduce 788

-null                    Reduce 788

-private                 Reduce 788

-protected               Reduce 788

-public                  Reduce 788

-return                  Reduce 788

-short                   Reduce 788

-static                  Reduce 788

-strictfp                Reduce 788

-super                   Reduce 788

-switch                  Reduce 788

-synchronized            Reduce 788

-this                    Reduce 788

-throw                   Reduce 788

-transient               Reduce 788

-true                    Reduce 788

-try                     Reduce 788

-void                    Reduce 788

-volatile                Reduce 788

-while                   Reduce 788

-aspect                  Reduce 788

-pointcut                Reduce 788

-around                  Reduce 788

-before                  Reduce 788

-after                   Reduce 788

-declare                 Reduce 788

-privileged              Reduce 788

-IntegerLiteral          Reduce 788

-LongLiteral             Reduce 788

-FloatingPointLiteral    Reduce 788

-DoubleLiteral           Reduce 788

-CharacterLiteral        Reduce 788

-StringLiteral           Reduce 788

-PLUS_PLUS               Reduce 788

-MINUS_MINUS             Reduce 788

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2105

-

-

-LESS                    Reduce 788

-LPAREN                  Reduce 788

-LBRACE                  Reduce 788

-RBRACE                  Reduce 788

-SEMICOLON               Reduce 788

-AT                      Reduce 788

-BeginLambda             Reduce 788

-AT308                   Reduce 788

-$eof                    Reduce 788

-

-Default reduction to rule  788

-

-

-STATE 1234 ---------------------------------------------------------------------

-( 547 551 747 934 )

-

-

-AdditionalBoundList ::= AdditionalBound . (864)

-

-AND       Reduce 864

-RPAREN    Reduce 696

-

-Default reduction to rule  864

-

-

-STATE 1235 ---------------------------------------------------------------------

-( 572 573 593 635 644 938 )

-

-

-Dimsopt ::= Dims . (769)

-

-abstract        Reduce 398

-default         Reduce 398

-final           Reduce 398

-native          Reduce 398

-private         Reduce 398

-protected       Reduce 398

-public          Reduce 398

-static          Reduce 398

-strictfp        Reduce 398

-synchronized    Reduce 398

-throws          Reduce 398

-transient       Reduce 398

-volatile        Reduce 398

-LBRACE          Reduce 398

-SEMICOLON       Reduce 398

-AT              Reduce 398

-$eof            Reduce 398

-

-Default reduction to rule  398

-

-

-STATE 1236 ---------------------------------------------------------------------

-( 579 758 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2106

-

-

-

-ClassBodyDeclarationNoAroundMethod ::= ClassMemberDeclarationNoAroundMethod .

-                                        (201)

-ClassBodyDeclarationNoAroundMethod ::= StaticInitializer . (202)

-ClassBodyDeclarationNoAroundMethod ::= ConstructorDeclaration . (203)

-ClassMemberDeclarationNoAroundMethod ::= PointcutDeclaration . (205)

-ClassMemberDeclarationNoAroundMethod ::= AspectDeclaration . (206)

-ClassMemberDeclarationNoAroundMethod ::= FieldDeclaration . (207)

-ClassMemberDeclarationNoAroundMethod ::= MethodDeclarationNoAround . (208)

-ClassMemberDeclarationNoAroundMethod ::= ClassDeclaration . (209)

-ClassMemberDeclarationNoAroundMethod ::= InterfaceDeclaration . (210)

-ClassMemberDeclarationNoAroundMethod ::= IntertypeClassDeclaration . (211)

-ClassMemberDeclarationNoAroundMethod ::= EnumDeclaration . (212)

-ClassMemberDeclarationNoAroundMethod ::= AnnotationTypeDeclaration . (213)

-MethodDeclarationNoAround ::= AbstractMethodDeclarationNoAround . (215)

-

-Identifier      Reduce 200

-abstract        Reduce 200

-boolean         Reduce 200

-byte            Reduce 200

-char            Reduce 200

-class           Reduce 200

-double          Reduce 200

-enum            Reduce 200

-final           Reduce 200

-float           Reduce 200

-int             Reduce 200

-interface       Reduce 200

-long            Reduce 200

-native          Reduce 200

-private         Reduce 200

-protected       Reduce 200

-public          Reduce 200

-short           Reduce 200

-static          Reduce 200

-strictfp        Reduce 200

-synchronized    Reduce 200

-transient       Reduce 200

-void            Reduce 200

-volatile        Reduce 200

-aspect          Reduce 200

-pointcut        Reduce 200

-around          Reduce 200

-before          Reduce 200

-after           Reduce 200

-declare         Reduce 200

-privileged      Reduce 200

-LESS            Reduce 200

-LBRACE          Reduce 200

-RBRACE          Reduce 200

-SEMICOLON       Reduce 200

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2107

-

-

-AT              Reduce 200

-AT308           Reduce 200

-

-Default reduction to rule  200

-

-

-STATE 1237 ---------------------------------------------------------------------

-( 579 )

-

-

-AspectBodyDeclaration ::= AroundDeclaration . (224)

-AspectBodyDeclaration ::= BasicAdviceDeclaration . (225)

-AspectBodyDeclaration ::= InterTypeMethodDeclaration . (243)

-AspectBodyDeclaration ::= InterTypeConstructorDeclaration . (244)

-AspectBodyDeclaration ::= InterTypeFieldDeclaration . (245)

-InterTypeMethodDeclaration ::= AbstractInterTypeMethodDeclaration . (246)

-AspectBodyDeclaration ::= DeclareDeclaration . (272)

-

-Identifier      Reduce 196

-abstract        Reduce 196

-boolean         Reduce 196

-byte            Reduce 196

-char            Reduce 196

-class           Reduce 196

-double          Reduce 196

-enum            Reduce 196

-final           Reduce 196

-float           Reduce 196

-int             Reduce 196

-interface       Reduce 196

-long            Reduce 196

-native          Reduce 196

-private         Reduce 196

-protected       Reduce 196

-public          Reduce 196

-short           Reduce 196

-static          Reduce 196

-strictfp        Reduce 196

-synchronized    Reduce 196

-transient       Reduce 196

-void            Reduce 196

-volatile        Reduce 196

-aspect          Reduce 196

-pointcut        Reduce 196

-around          Reduce 196

-before          Reduce 196

-after           Reduce 196

-declare         Reduce 196

-privileged      Reduce 196

-LESS            Reduce 196

-LBRACE          Reduce 196

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2108

-

-

-RBRACE          Reduce 196

-SEMICOLON       Reduce 196

-AT              Reduce 196

-AT308           Reduce 196

-

-Default reduction to rule  196

-

-

-STATE 1238 ---------------------------------------------------------------------

-( 596 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 582

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2109

-

-

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1239 ---------------------------------------------------------------------

-( 596 )

-

-

-UnaryExpression_NotName ::= PreIncrementExpression . (878)

-UnaryExpression_NotName ::= PreDecrementExpression . (879)

-UnaryExpression_NotName ::= UnaryExpressionNotPlusMinus_NotName . (882)

-UnaryExpressionNotPlusMinus_NotName ::= PostfixExpression_NotName . (883)

-UnaryExpressionNotPlusMinus_NotName ::= CastExpression . (886)

-MultiplicativeExpression_NotName ::= UnaryExpression_NotName . (887)

-

-instanceof              Reduce 915

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-

-Default reduction to rule  899

-

-

-STATE 1240 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2110

-

-

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 597

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1241 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2111

-

-

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 596

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1242 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 595

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2112

-

-

-

-Default reduction to rule  899

-

-

-STATE 1243 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 594

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1244 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2113

-

-

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 587

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1245 ---------------------------------------------------------------------

-( 596 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2114

-

-

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-LBRACKET                Reduce 586

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 579

-COLON_COLON             Reduce 579

-

-Default reduction to rule  899

-

-

-STATE 1246 ---------------------------------------------------------------------

-( 596 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-instanceof              Reduce 915

-PLUS_PLUS               Reduce 671

-MINUS_MINUS             Reduce 671

-EQUAL_EQUAL             Reduce 918

-LESS_EQUAL              Reduce 906

-GREATER_EQUAL           Reduce 906

-NOT_EQUAL               Reduce 918

-LEFT_SHIFT              Reduce 899

-RIGHT_SHIFT             Reduce 899

-UNSIGNED_RIGHT_SHIFT    Reduce 899

-OR_OR                   Reduce 935

-AND_AND                 Reduce 932

-PLUS                    Reduce 894

-MINUS                   Reduce 894

-REMAINDER               Reduce 887

-XOR                     Reduce 926

-AND                     Reduce 923

-MULTIPLY                Reduce 887

-OR                      Reduce 929

-DIVIDE                  Reduce 887

-GREATER                 Reduce 899

-LESS                    Reduce 899

-RBRACE                  Reduce 986

-QUESTION                Reduce 935

-COMMA                   Reduce 986

-DOT                     Reduce 581

-COLON_COLON             Reduce 581

-

-Default reduction to rule  899

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2115

-

-

-

-

-STATE 1247 ---------------------------------------------------------------------

-( 632 )

-

-

-Type ::= ReferenceType . (40)

-ReferenceType ::= ArrayType . (54)

-

-Identifier    Reduce 411

-aspect        Reduce 411

-pointcut      Reduce 411

-around        Reduce 411

-before        Reduce 411

-after         Reduce 411

-declare       Reduce 411

-privileged    Reduce 411

-OR            Reduce 411

-

-Default reduction to rule  411

-

-

-STATE 1248 ---------------------------------------------------------------------

-( 649 943 )

-

-

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-LESS      Reduce 241

-LPAREN    Reduce 38

-DOT       Reduce 241

-

-Default reduction to rule  241

-

-

-STATE 1249 ---------------------------------------------------------------------

-( 649 943 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= around . (77)

-

-LESS    Reduce 241

-DOT     Reduce 241

-

-Default reduction to rule  241

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2116

-

-

-

-

-STATE 1250 ---------------------------------------------------------------------

-( 724 842 923 1011 1012 1033 1036 )

-

-

-StatementWithoutTrailingSubstatement ::= AssertStatement . (498)

-StatementWithoutTrailingSubstatement ::= Block . (499)

-StatementWithoutTrailingSubstatement ::= EmptyStatement . (500)

-StatementWithoutTrailingSubstatement ::= ExpressionStatement . (501)

-StatementWithoutTrailingSubstatement ::= SwitchStatement . (502)

-StatementWithoutTrailingSubstatement ::= DoStatement . (503)

-StatementWithoutTrailingSubstatement ::= BreakStatement . (504)

-StatementWithoutTrailingSubstatement ::= ContinueStatement . (505)

-StatementWithoutTrailingSubstatement ::= ReturnStatement . (506)

-StatementWithoutTrailingSubstatement ::= SynchronizedStatement . (507)

-StatementWithoutTrailingSubstatement ::= ThrowStatement . (508)

-StatementWithoutTrailingSubstatement ::= TryStatement . (509)

-StatementWithoutTrailingSubstatement ::= TryStatementWithResources . (510)

-

-Identifier              Reduce 485

-abstract                Reduce 485

-assert                  Reduce 485

-boolean                 Reduce 485

-break                   Reduce 485

-byte                    Reduce 485

-case                    Reduce 485

-char                    Reduce 485

-class                   Reduce 485

-continue                Reduce 485

-default                 Reduce 485

-do                      Reduce 485

-double                  Reduce 485

-else                    Reduce 492

-enum                    Reduce 485

-false                   Reduce 485

-final                   Reduce 485

-float                   Reduce 485

-for                     Reduce 485

-if                      Reduce 485

-int                     Reduce 485

-interface               Reduce 485

-long                    Reduce 485

-native                  Reduce 485

-new                     Reduce 485

-null                    Reduce 485

-private                 Reduce 485

-protected               Reduce 485

-public                  Reduce 485

-return                  Reduce 485

-short                   Reduce 485

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2117

-

-

-static                  Reduce 485

-strictfp                Reduce 485

-super                   Reduce 485

-switch                  Reduce 485

-synchronized            Reduce 485

-this                    Reduce 485

-throw                   Reduce 485

-transient               Reduce 485

-true                    Reduce 485

-try                     Reduce 485

-void                    Reduce 485

-volatile                Reduce 485

-while                   Reduce 485

-aspect                  Reduce 485

-pointcut                Reduce 485

-around                  Reduce 485

-before                  Reduce 485

-after                   Reduce 485

-declare                 Reduce 485

-privileged              Reduce 485

-IntegerLiteral          Reduce 485

-LongLiteral             Reduce 485

-FloatingPointLiteral    Reduce 485

-DoubleLiteral           Reduce 485

-CharacterLiteral        Reduce 485

-StringLiteral           Reduce 485

-PLUS_PLUS               Reduce 485

-MINUS_MINUS             Reduce 485

-LESS                    Reduce 485

-LPAREN                  Reduce 485

-LBRACE                  Reduce 485

-RBRACE                  Reduce 485

-SEMICOLON               Reduce 485

-AT                      Reduce 485

-BeginLambda             Reduce 485

-AT308                   Reduce 485

-$eof                    Reduce 485

-

-Default reduction to rule  485

-

-

-STATE 1251 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2118

-

-

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2119

-

-

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1252 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2120

-

-

-DOT                             Reduce 581

-AT                              Reduce 685

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1253 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 597

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2121

-

-

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1254 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2122

-

-

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1255 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2123

-

-

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1256 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2124

-

-

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1257 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2125

-

-

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1258 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2126

-

-

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-DOT                             Reduce 579

-AT                              Reduce 685

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1259 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-private                         Reduce 685

-protected                       Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2127

-

-

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1260 ---------------------------------------------------------------------

-( 748 858 936 988 1028 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 685

-final                           Reduce 685

-instanceof                      Reduce 685

-native                          Reduce 685

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2128

-

-

-private                         Reduce 685

-protected                       Reduce 685

-public                          Reduce 685

-static                          Reduce 685

-strictfp                        Reduce 685

-synchronized                    Reduce 685

-transient                       Reduce 685

-volatile                        Reduce 685

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 685

-LESS_EQUAL                      Reduce 685

-GREATER_EQUAL                   Reduce 685

-NOT_EQUAL                       Reduce 685

-LEFT_SHIFT                      Reduce 685

-RIGHT_SHIFT                     Reduce 685

-UNSIGNED_RIGHT_SHIFT            Reduce 685

-OR_OR                           Reduce 685

-AND_AND                         Reduce 685

-PLUS                            Reduce 685

-MINUS                           Reduce 685

-REMAINDER                       Reduce 685

-XOR                             Reduce 685

-AND                             Reduce 685

-MULTIPLY                        Reduce 685

-OR                              Reduce 685

-DIVIDE                          Reduce 685

-GREATER                         Reduce 685

-LESS                            Reduce 685

-RPAREN                          Reduce 685

-RBRACE                          Reduce 685

-RBRACKET                        Reduce 685

-SEMICOLON                       Reduce 685

-QUESTION                        Reduce 685

-COLON                           Reduce 685

-COMMA                           Reduce 685

-AT                              Reduce 685

-ElidedSemicolonAndRightBrace    Reduce 685

-$eof                            Reduce 685

-

-Default reduction to rule  685

-

-

-STATE 1261 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-Literal ::= IntegerLiteral . (25)

-Literal ::= LongLiteral . (26)

-Literal ::= FloatingPointLiteral . (27)

-Literal ::= DoubleLiteral . (28)

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2129

-

-

-Literal ::= CharacterLiteral . (29)

-Literal ::= StringLiteral . (30)

-Literal ::= null . (31)

-Literal ::= BooleanLiteral . (32)

-BooleanLiteral ::= true . (33)

-BooleanLiteral ::= false . (34)

-PrimaryNoNewArray ::= Literal . (582)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 582

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2130

-

-

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1262 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-UnaryExpression ::= PreIncrementExpression . (678)

-UnaryExpression ::= PreDecrementExpression . (679)

-UnaryExpression ::= UnaryExpressionNotPlusMinus . (682)

-UnaryExpressionNotPlusMinus ::= CastExpression . (688)

-MultiplicativeExpression ::= UnaryExpression . (704)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2131

-

-

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1263 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PostfixExpression ::= PostDecrementExpression . (674)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 674

-MINUS_MINUS                     Reduce 674

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2132

-

-

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1264 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PostfixExpression ::= PostIncrementExpression . (673)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 673

-MINUS_MINUS                     Reduce 673

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2133

-

-

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-AT                              Reduce 735

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1265 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ReferenceExpression . (597)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2134

-

-

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 597

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1266 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= LambdaExpression . (596)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2135

-

-

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 596

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1267 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ArrayAccess . (595)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2136

-

-

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 595

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1268 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= MethodInvocation . (594)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2137

-

-

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 594

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1269 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= FieldAccess . (587)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2138

-

-

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 587

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1270 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-PrimaryNoNewArray ::= ClassInstanceCreationExpression . (586)

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2139

-

-

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-LBRACKET                        Reduce 586

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 579

-AT                              Reduce 735

-COLON_COLON                     Reduce 579

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1271 ---------------------------------------------------------------------

-( 751 778 779 )

-

-

-Primary ::= ArrayCreationWithoutArrayInitializer . (581)

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2140

-

-

-abstract                        Reduce 735

-final                           Reduce 735

-instanceof                      Reduce 720

-native                          Reduce 735

-private                         Reduce 735

-protected                       Reduce 735

-public                          Reduce 735

-static                          Reduce 735

-strictfp                        Reduce 735

-synchronized                    Reduce 735

-transient                       Reduce 735

-volatile                        Reduce 735

-PLUS_PLUS                       Reduce 671

-MINUS_MINUS                     Reduce 671

-EQUAL_EQUAL                     Reduce 722

-LESS_EQUAL                      Reduce 715

-GREATER_EQUAL                   Reduce 715

-NOT_EQUAL                       Reduce 722

-LEFT_SHIFT                      Reduce 711

-RIGHT_SHIFT                     Reduce 711

-UNSIGNED_RIGHT_SHIFT            Reduce 711

-OR_OR                           Reduce 733

-AND_AND                         Reduce 731

-PLUS                            Reduce 708

-MINUS                           Reduce 708

-REMAINDER                       Reduce 704

-XOR                             Reduce 727

-AND                             Reduce 725

-MULTIPLY                        Reduce 704

-OR                              Reduce 729

-DIVIDE                          Reduce 704

-GREATER                         Reduce 715

-LESS                            Reduce 715

-RPAREN                          Reduce 735

-RBRACE                          Reduce 735

-RBRACKET                        Reduce 735

-SEMICOLON                       Reduce 735

-QUESTION                        Reduce 733

-COLON                           Reduce 735

-COMMA                           Reduce 735

-DOT                             Reduce 581

-AT                              Reduce 735

-COLON_COLON                     Reduce 581

-ElidedSemicolonAndRightBrace    Reduce 735

-$eof                            Reduce 735

-

-Default reduction to rule  735

-

-

-STATE 1272 ---------------------------------------------------------------------

-( 770 949 )

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2141

-

-

-

-ClassType ::= ClassOrInterfaceType . (66)

-

-abstract        Reduce 415

-final           Reduce 415

-native          Reduce 415

-private         Reduce 415

-protected       Reduce 415

-public          Reduce 415

-static          Reduce 415

-strictfp        Reduce 415

-synchronized    Reduce 415

-transient       Reduce 415

-volatile        Reduce 415

-LBRACE          Reduce 415

-SEMICOLON       Reduce 415

-COLON           Reduce 415

-COMMA           Reduce 415

-AT              Reduce 415

-$eof            Reduce 415

-

-Default reduction to rule  415

-

-

-STATE 1273 ---------------------------------------------------------------------

-( 869 )

-

-

-JavaIdentifier ::= AjSimpleName . (36)

-AjSimpleName ::= AjSimpleNameNoAround . (73)

-AjSimpleNameNoAround ::= aspect . (74)

-AjSimpleNameNoAround ::= privileged . (75)

-AjSimpleNameNoAround ::= pointcut . (76)

-AjSimpleName ::= around . (77)

-AjSimpleNameNoAround ::= before . (78)

-AjSimpleNameNoAround ::= after . (79)

-AjSimpleNameNoAround ::= declare . (80)

-

-extends       Reduce 36

-implements    Reduce 36

-LESS          Reduce 36

-LBRACE        Reduce 36

-DOT           Reduce 241

-

-Default reduction to rule  36

-

-

-STATE 1274 ---------------------------------------------------------------------

-( 869 )

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2142

-

-

-JavaIdentifier ::= Identifier . (35)

-

-extends       Reduce 35

-implements    Reduce 35

-LESS          Reduce 35

-LBRACE        Reduce 35

-DOT           Reduce 241

-

-Default reduction to rule  35

-

-

-STATE 1275 ---------------------------------------------------------------------

-( 924 1032 )

-

-

-StatementExpressionList ::= StatementExpression . (547)

-

-RPAREN    Reduce 784

-COMMA     Reduce 547

-

-Default reduction to rule  784

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2143

-

-Length of base Action Table: 18573

-Number of entries in base Action Table: 15123

-Percentage of increase: 22.8%

-Storage required for base Tables: 37146 Bytes, 37K

-Storage required for Rules: 2988 Bytes

-Number of unique terminal states: 920

-Number of Shift actions saved by merging: 5177

-Number of Reduce actions saved by merging: 3029

-Number of Reduce saved by default: 12014

-Length of Terminal Check Table: 10551

-Length of Terminal Action Table: 10460

-Number of entries in Terminal Action Table: 8783

-Percentage of increase: 19.0%

-Storage required for Terminal Tables: 31471 Bytes, 31K

-Total storage required for Tables: 68617 Bytes, 68K

-

-

-Actions in Compressed Tables:

-     Number of Shifts: 2885

-     Number of Shift/Reduces: 920

-     Number of Gotos: 10870

-     Number of Goto/Reduces: 2978

-     Number of Reduces: 4058

-     Number of Defaults: 596

-

-Error maps storage:

-    Storage required for ACTION_SYMBOLS_BASE map: 2550 Bytes

-    Storage required for ACTION_SYMBOLS_RANGE map: 2259 Bytes

-    Storage required for NACTION_SYMBOLS_BASE map: 2550 Bytes

-    Storage required for NACTION_SYMBOLS_RANGE map: 1606 Bytes

-    Storage required for TERMINAL_INDEX map: 250 Bytes

-    Storage required for NON_TERMINAL_INDEX map: 848 Bytes

-    Storage required for STRING_BUFFER map: 16986 Bytes

-

-***Warning: Base Check vector contains value > 127. 16-bit words used.

-Escaped symbol $eof is an invalid C variable.

-

-Escaped symbol $error is an invalid C variable.

-

-

-

- IBM Research Jikes Parser Generator    1.3 Thu Nov 03 16:05:48 2016       Page 2144

-

-

-Mapping of new state numbers into original numbers:

-

-  997  ==>>      7

- 1036  ==>>     24

- 1045  ==>>    250

- 1046  ==>>      1

- 1059  ==>>    966

- 1061  ==>>     20

- 1062  ==>>    586

- 1063  ==>>     31

- 1065  ==>>     22

- 1066  ==>>     34

- 1074  ==>>     29

- 1075  ==>>    446

- 1092  ==>>     55

- 1094  ==>>      2

- 1095  ==>>     90

- 1121  ==>>    638

- 1129  ==>>    908

- 1130  ==>>    661

- 1131  ==>>     23

- 1133  ==>>    245

- 1142  ==>>    209

- 1150  ==>>    248

- 1153  ==>>      8

- 1192  ==>>    577

- 1194  ==>>     37

- 1196  ==>>     42

- 1197  ==>>     44

- 1202  ==>>    807

- 1217  ==>>     45

- 1219  ==>>    474

- 1222  ==>>    449

- 1248  ==>>    255

- 1250  ==>>    789

- 1277  ==>>    101

- 1279  ==>>      5

- 1280  ==>>     27

- 1290  ==>>    820

- 1291  ==>>     47

- 1295  ==>>     50

- 1300  ==>>     51

- 1309  ==>>     32

- 1310  ==>>    223

- 1319  ==>>     52

- 1322  ==>>    278

- 1362  ==>>     21

- 1366  ==>>     53

- 1370  ==>>    226

- 1371  ==>>    784

- 1390  ==>>     56

- 1396  ==>>     84

- 1398  ==>>      3

- 1407  ==>>    211

- 1408  ==>>     61

- 1423  ==>>    130

- 1424  ==>>    406

- 1426  ==>>     16

- 1470  ==>>    456

- 1474  ==>>    227

- 1475  ==>>    459

- 1488  ==>>    205

- 1490  ==>>     57

- 1494  ==>>    213

- 1495  ==>>    909

- 1504  ==>>      6

- 1554  ==>>     35

- 1557  ==>>    640

- 1567  ==>>    337

- 1571  ==>>    547

- 1572  ==>>    680

- 1584  ==>>    973

- 1585  ==>>    273

- 1629  ==>>    666

- 1633  ==>>    228

- 1641  ==>>    773

- 1649  ==>>    477

- 1654  ==>>     30

- 1682  ==>>     48

- 1709  ==>>    303

- 1730  ==>>     88

- 1731  ==>>    129

- 1734  ==>>    651

- 1743  ==>>    322

- 1794  ==>>    687

- 1795  ==>>    432

- 1843  ==>>    341

- 1851  ==>>    895

- 1864  ==>>    408

- 1872  ==>>     64

- 1892  ==>>    879

- 1893  ==>>    116

- 1919  ==>>    219

- 1920  ==>>    225

- 1921  ==>>    336

- 1922  ==>>    587

- 1928  ==>>    149

- 1937  ==>>     58

- 1948  ==>>     86

- 1951  ==>>    323

- 1996  ==>>     33

- 2004  ==>>    224

- 2005  ==>>    969

- 2044  ==>>     39

- 2045  ==>>    221

- 2046  ==>>    117

- 2054  ==>>     36

- 2061  ==>>     49

- 2063  ==>>    212

- 2069  ==>>    970

- 2070  ==>>    905

- 2074  ==>>    285

- 2100  ==>>     59

- 2102  ==>>     38

- 2129  ==>>    698

- 2131  ==>>    258

- 2146  ==>>    247

- 2147  ==>>    230

- 2148  ==>>     79

- 2150  ==>>    180

- 2166  ==>>    656

- 2167  ==>>    127

- 2168  ==>>    135

- 2169  ==>>   1005

- 2212  ==>>     62

- 2233  ==>>     63

- 2235  ==>>    232

- 2237  ==>>   1015

- 2247  ==>>    128

- 2294  ==>>    125

- 2295  ==>>   1008

- 2299  ==>>     65

- 2301  ==>>    261

- 2310  ==>>    689

- 2314  ==>>    949

- 2325  ==>>    122

- 2328  ==>>    356

- 2330  ==>>    470

- 2333  ==>>     93

- 2399  ==>>    798

- 2401  ==>>    662

- 2402  ==>>     98

- 2430  ==>>    641

- 2458  ==>>     66

- 2460  ==>>    231

- 2461  ==>>    527

- 2466  ==>>    229

- 2467  ==>>    186

- 2468  ==>>    458

- 2469  ==>>     26

- 2478  ==>>    880

- 2489  ==>>    174

- 2553  ==>>    123

- 2554  ==>>     94

- 2555  ==>>    732

- 2566  ==>>    357

- 2584  ==>>    215

- 2586  ==>>     95

- 2587  ==>>    202

- 2613  ==>>    410

- 2621  ==>>    899

- 2622  ==>>    103

- 2623  ==>>    104

- 2625  ==>>     87

- 2636  ==>>     67

- 2638  ==>>    647

- 2639  ==>>    646

- 2640  ==>>    152

- 2641  ==>>     68

- 2645  ==>>   1007

- 2686  ==>>    153

- 2707  ==>>    678

- 2710  ==>>    743

- 2713  ==>>    253

- 2722  ==>>    473

- 2769  ==>>    293

- 2778  ==>>    259

- 2784  ==>>    637

- 2785  ==>>    177

- 2786  ==>>     69

- 2796  ==>>   1025

- 2801  ==>>    724

- 2840  ==>>    132

- 2841  ==>>    185

- 2842  ==>>    187

- 2844  ==>>    330

- 2849  ==>>    182

- 2857  ==>>    244

- 2862  ==>>    195

- 2866  ==>>    770

- 2876  ==>>    476

- 2882  ==>>    350

- 2891  ==>>    696

- 2893  ==>>     70

- 2898  ==>>    158

- 2928  ==>>    901

- 2931  ==>>    842

- 2979  ==>>    348

- 2985  ==>>    159

- 2987  ==>>     72

- 2990  ==>>    346

- 2991  ==>>    764

- 2996  ==>>    190

- 2997  ==>>    332

- 3006  ==>>    431

- 3009  ==>>    335

- 3012  ==>>    345

- 3016  ==>>    355

- 3025  ==>>    937

- 3061  ==>>    923

- 3100  ==>>    353

- 3101  ==>>    492

- 3102  ==>>    420

- 3103  ==>>    683

- 3109  ==>>    756

- 3121  ==>>    688

- 3122  ==>>    550

- 3126  ==>>    684

- 3127  ==>>    648

- 3138  ==>>    664

- 3143  ==>>    445

- 3155  ==>>    589

- 3158  ==>>    694

- 3185  ==>>    461

- 3186  ==>>     73

- 3187  ==>>     74

- 3188  ==>>     75

- 3191  ==>>   1011

- 3230  ==>>    479

- 3231  ==>>    498

- 3232  ==>>     80

- 3233  ==>>    763

- 3239  ==>>    354

- 3245  ==>>    436

- 3246  ==>>    520

- 3251  ==>>    745

- 3254  ==>>     77

- 3255  ==>>    407

- 3256  ==>>    685

- 3257  ==>>    418

- 3267  ==>>    731

- 3269  ==>>    421

- 3272  ==>>    412

- 3281  ==>>    594

- 3282  ==>>    710

- 3285  ==>>    762

- 3288  ==>>     78

- 3289  ==>>    265

- 3316  ==>>    728

- 3317  ==>>    759

- 3321  ==>>   1012

- 3360  ==>>    633

- 3361  ==>>    422

- 3364  ==>>    423

- 3369  ==>>    757

- 3386  ==>>    761

- 3387  ==>>     19

- 3402  ==>>    494

- 3445  ==>>    892

- 3446  ==>>    850

- 3447  ==>>    772

- 3451  ==>>   1033

- 3490  ==>>    546

- 3492  ==>>    136

- 3493  ==>>    736

- 3494  ==>>    818

- 3495  ==>>    865

- 3511  ==>>    742

- 3514  ==>>    902

- 3515  ==>>     81

- 3516  ==>>    765

- 3517  ==>>    744

- 3527  ==>>    867

- 3534  ==>>    792

- 3537  ==>>    670

- 3546  ==>>      4

- 3548  ==>>    814

- 3549  ==>>    268

- 3576  ==>>   1014

- 3577  ==>>    830

- 3578  ==>>    859

- 3579  ==>>    852

- 3581  ==>>   1036

- 3621  ==>>    749

- 3622  ==>>     82

- 3625  ==>>    851

- 3629  ==>>    881

- 3637  ==>>    971

- 3641  ==>>    861

- 3642  ==>>    965

- 3662  ==>>    592

- 3671  ==>>    534

- 3672  ==>>    542

- 3705  ==>>     14

- 3748  ==>>     92

- 3750  ==>>     97

- 3752  ==>>    100

- 3753  ==>>    812

- 3755  ==>>    105

- 3762  ==>>    972

- 3766  ==>>    866

- 3768  ==>>    735

- 3769  ==>>   1003

- 3770  ==>>    106

- 3771  ==>>    984

- 3774  ==>>   1024

- 3776  ==>>   1030

- 3785  ==>>    572

- 3793  ==>>    126

- 3798  ==>>    596

- 3838  ==>>    868

- 3839  ==>>    987

- 3854  ==>>    107

- 3857  ==>>    108

- 3859  ==>>    109

- 3867  ==>>    110

- 3884  ==>>    111

- 3886  ==>>    112

- 3891  ==>>    113

- 3898  ==>>    114

- 3899  ==>>    115

- 3900  ==>>    573

- 3913  ==>>     46

- 3952  ==>>   1031

- 3953  ==>>    131

- 3954  ==>>    753

- 3955  ==>>    960

- 3956  ==>>    862

- 3957  ==>>    139

- 3979  ==>>    140

- 3981  ==>>    141

- 3988  ==>>    142

- 3990  ==>>    146

- 3994  ==>>    147

- 3996  ==>>    148

- 3999  ==>>     40

- 4000  ==>>    150

- 4001  ==>>    151

- 4002  ==>>    288

- 4003  ==>>    154

- 4006  ==>>    935

- 4007  ==>>    155

- 4008  ==>>    156

- 4010  ==>>    157

- 4011  ==>>    160

- 4037  ==>>     76

- 4077  ==>>    161

- 4080  ==>>    754

- 4081  ==>>    162

- 4085  ==>>    595

- 4093  ==>>    164

- 4096  ==>>    948

- 4105  ==>>    165

- 4106  ==>>   1034

- 4110  ==>>    166

- 4114  ==>>    167

- 4115  ==>>    168

- 4118  ==>>    169

- 4119  ==>>    170

- 4120  ==>>    171

- 4121  ==>>    172

- 4122  ==>>    175

- 4123  ==>>    183

- 4124  ==>>    593

- 4134  ==>>    196

- 4135  ==>>    198

- 4161  ==>>    275

- 4203  ==>>    200

- 4204  ==>>    201

- 4205  ==>>    207

- 4209  ==>>    208

- 4210  ==>>    210

- 4211  ==>>    214

- 4212  ==>>    791

- 4213  ==>>    234

- 4214  ==>>    794

- 4215  ==>>    236

- 4216  ==>>    939

- 4217  ==>>    237

- 4218  ==>>    238

- 4219  ==>>    239

- 4221  ==>>    246

- 4223  ==>>    256

- 4224  ==>>     85

- 4232  ==>>    257

- 4236  ==>>    579

- 4237  ==>>    270

- 4238  ==>>    252

- 4242  ==>>    271

- 4246  ==>>    274

- 4249  ==>>    774

- 4292  ==>>    989

- 4294  ==>>    281

- 4298  ==>>    282

- 4304  ==>>    266

- 4307  ==>>    283

- 4308  ==>>    289

- 4309  ==>>    292

- 4310  ==>>    295

- 4311  ==>>    296

- 4315  ==>>    299

- 4316  ==>>    301

- 4331  ==>>    333

- 4333  ==>>    343

- 4334  ==>>    344

- 4335  ==>>    347

- 4337  ==>>    349

- 4338  ==>>    411

- 4339  ==>>    414

- 4340  ==>>    416

- 4342  ==>>    417

- 4343  ==>>    181

- 4355  ==>>    419

- 4356  ==>>    425

- 4366  ==>>    426

- 4376  ==>>    427

- 4377  ==>>    429

- 4379  ==>>    437

- 4380  ==>>    438

- 4383  ==>>    439

- 4384  ==>>    440

- 4389  ==>>    441

- 4391  ==>>    442

- 4392  ==>>    448

- 4396  ==>>    454

- 4397  ==>>    455

- 4398  ==>>    251

- 4448  ==>>    457

- 4449  ==>>    460

- 4450  ==>>    462

- 4452  ==>>    464

- 4453  ==>>    465

- 4457  ==>>    467

- 4458  ==>>    468

- 4461  ==>>    471

- 4465  ==>>    475

- 4468  ==>>    480

- 4469  ==>>    481

- 4470  ==>>    482

- 4471  ==>>    483

- 4472  ==>>    485

- 4479  ==>>    486

- 4494  ==>>    487

- 4496  ==>>    317

- 4541  ==>>    489

- 4551  ==>>    490

- 4557  ==>>    725

- 4596  ==>>    787

- 4597  ==>>    466

- 4598  ==>>    491

- 4599  ==>>    488

- 4600  ==>>    493

- 4601  ==>>    496

- 4605  ==>>    497

- 4610  ==>>    500

- 4611  ==>>    501

- 4613  ==>>    993

- 4622  ==>>    502

- 4623  ==>>    503

- 4624  ==>>    505

- 4627  ==>>    507

- 4628  ==>>    509

- 4629  ==>>    510

- 4630  ==>>    511

- 4632  ==>>    514

- 4633  ==>>    515

- 4634  ==>>    517

- 4635  ==>>    518

- 4638  ==>>    519

- 4639  ==>>    523

- 4640  ==>>    524

- 4641  ==>>    525

- 4642  ==>>    529

- 4643  ==>>    530

- 4645  ==>>    532

- 4652  ==>>    533

- 4654  ==>>    535

- 4655  ==>>    537

- 4681  ==>>    919

- 4720  ==>>    551

- 4721  ==>>    539

- 4723  ==>>    540

- 4724  ==>>    541

- 4725  ==>>    543

- 4729  ==>>    884

- 4737  ==>>    548

- 4741  ==>>    553

- 4742  ==>>    554

- 4746  ==>>    555

- 4747  ==>>    556

- 4748  ==>>    557

- 4749  ==>>    558

- 4750  ==>>    559

- 4751  ==>>    560

- 4752  ==>>    561

- 4753  ==>>    562

- 4754  ==>>    563

- 4756  ==>>    564

- 4757  ==>>    565

- 4758  ==>>    566

- 4759  ==>>    567

- 4762  ==>>    568

- 4763  ==>>    569

- 4764  ==>>    570

- 4765  ==>>    571

- 4766  ==>>    574

- 4767  ==>>    575

- 4768  ==>>     99

- 4778  ==>>    576

- 4805  ==>>   1013

- 4847  ==>>    578

- 4848  ==>>    581

- 4849  ==>>    582

- 4853  ==>>    947

- 4861  ==>>    584

- 4865  ==>>    585

- 4867  ==>>    588

- 4868  ==>>    597

- 4869  ==>>    598

- 4870  ==>>    599

- 4871  ==>>    600

- 4873  ==>>    601

- 4874  ==>>    602

- 4876  ==>>    603

- 4877  ==>>    604

- 4878  ==>>    605

- 4880  ==>>    758

- 4881  ==>>    606

- 4883  ==>>    607

- 4886  ==>>    608

- 4887  ==>>    609

- 4888  ==>>    610

- 4889  ==>>    992

- 4897  ==>>    611

- 4902  ==>>    788

- 4903  ==>>    612

- 4929  ==>>    613

- 4937  ==>>    614

- 4939  ==>>    267

- 4941  ==>>    615

- 4942  ==>>    616

- 4944  ==>>    617

- 4945  ==>>    618

- 4946  ==>>    619

- 4951  ==>>    620

- 4952  ==>>    621

- 4958  ==>>    622

- 4959  ==>>    623

- 4960  ==>>    624

- 4975  ==>>    220

- 4984  ==>>    625

- 4989  ==>>    233

- 4998  ==>>    626

- 4999  ==>>    627

- 5009  ==>>    628

- 5010  ==>>    629

- 5011  ==>>    302

- 5012  ==>>    630

- 5015  ==>>    631

- 5017  ==>>     17

- 5019  ==>>    636

- 5022  ==>>    643

- 5023  ==>>     11

- 5024  ==>>    650

- 5027  ==>>    652

- 5028  ==>>    654

- 5032  ==>>    655

- 5033  ==>>    657

- 5037  ==>>    663

- 5045  ==>>    695

- 5046  ==>>    665

- 5047  ==>>    669

- 5051  ==>>    671

- 5053  ==>>    672

- 5057  ==>>    673

- 5059  ==>>    137

- 5063  ==>>    675

- 5065  ==>>    676

- 5066  ==>>    692

- 5079  ==>>    693

- 5081  ==>>    699

- 5082  ==>>    701

- 5083  ==>>    747

- 5088  ==>>    703

- 5089  ==>>    705

- 5091  ==>>    708

- 5094  ==>>    713

- 5095  ==>>    714

- 5096  ==>>    715

- 5097  ==>>    717

- 5108  ==>>    719

- 5115  ==>>    720

- 5116  ==>>    721

- 5137  ==>>    722

- 5138  ==>>    723

- 5139  ==>>    733

- 5140  ==>>    738

- 5146  ==>>    739

- 5147  ==>>    740

- 5148  ==>>    649

- 5149  ==>>    755

- 5150  ==>>    768

- 5152  ==>>    769

- 5153  ==>>    771

- 5154  ==>>    775

- 5155  ==>>    781

- 5156  ==>>    776

- 5160  ==>>    144

- 5167  ==>>    777

- 5169  ==>>    780

- 5170  ==>>    782

- 5171  ==>>    783

- 5172  ==>>    785

- 5174  ==>>    786

- 5176  ==>>    790

- 5177  ==>>    934

- 5179  ==>>    793

- 5180  ==>>    795

- 5182  ==>>    796

- 5183  ==>>    797

- 5185  ==>>    799

- 5203  ==>>    800

- 5224  ==>>    808

- 5225  ==>>    809

- 5226  ==>>     18

- 5227  ==>>    443

- 5236  ==>>    810

- 5237  ==>>    813

- 5242  ==>>    816

- 5243  ==>>    819

- 5244  ==>>    822

- 5247  ==>>    824

- 5249  ==>>    825

- 5250  ==>>    506

- 5251  ==>>    826

- 5274  ==>>    280

- 5275  ==>>    828

- 5282  ==>>    817

- 5290  ==>>    829

- 5295  ==>>    831

- 5302  ==>>    835

- 5303  ==>>    837

- 5304  ==>>    838

- 5306  ==>>    839

- 5322  ==>>    840

- 5323  ==>>    841

- 5324  ==>>    843

- 5325  ==>>    844

- 5327  ==>>    845

- 5328  ==>>    846

- 5330  ==>>    121

- 5340  ==>>    847

- 5345  ==>>    853

- 5346  ==>>    508

- 5347  ==>>    857

- 5349  ==>>    874

- 5359  ==>>    876

- 5361  ==>>    882

- 5363  ==>>    885

- 5365  ==>>    889

- 5366  ==>>    890

- 5367  ==>>    893

- 5368  ==>>    894

- 5369  ==>>    452

- 5373  ==>>    903

- 5374  ==>>    904

- 5378  ==>>    906

- 5379  ==>>    907

- 5381  ==>>    910

- 5382  ==>>    912

- 5383  ==>>    913

- 5384  ==>>    914

- 5385  ==>>    915

- 5392  ==>>    916

- 5394  ==>>    917

- 5396  ==>>    918

- 5397  ==>>    925

- 5398  ==>>    928

- 5399  ==>>    929

- 5400  ==>>    930

- 5411  ==>>    931

- 5425  ==>>    932

- 5427  ==>>    940

- 5428  ==>>    941

- 5429  ==>>    942

- 5433  ==>>    946

- 5435  ==>>    952

- 5437  ==>>    955

- 5438  ==>>    956

- 5440  ==>>    957

- 5441  ==>>    961

- 5443  ==>>    962

- 5444  ==>>    963

- 5445  ==>>    964

- 5446  ==>>    967

- 5447  ==>>     89

- 5456  ==>>    974

- 5457  ==>>    976

- 5458  ==>>    977

- 5460  ==>>    978

- 5468  ==>>    979

- 5469  ==>>    980

- 5483  ==>>    199

- 5530  ==>>    981

- 5531  ==>>    982

- 5532  ==>>    983

- 5533  ==>>    985

- 5539  ==>>    318

- 5584  ==>>    986

- 5586  ==>>    991

- 5587  ==>>    994

- 5589  ==>>    284

- 5629  ==>>     91

- 5637  ==>>    995

- 5638  ==>>    996

- 5639  ==>>    997

- 5645  ==>>     12

- 5661  ==>>    999

- 5662  ==>>   1000

- 5663  ==>>   1006

- 5664  ==>>   1009

- 5665  ==>>   1016

- 5666  ==>>   1017

- 5667  ==>>   1018

- 5669  ==>>    815

- 5670  ==>>   1019

- 5671  ==>>   1020

- 5672  ==>>    951

- 5680  ==>>   1021

- 5684  ==>>   1022

- 5685  ==>>   1026

- 5691  ==>>   1027

- 5692  ==>>   1029

- 5693  ==>>    528

- 5694  ==>>   1035

- 5701  ==>>   1037

- 5704  ==>>   1038

- 5709  ==>>   1039

- 5711  ==>>   1040

- 5713  ==>>   1041

- 5714  ==>>   1042

- 5717  ==>>   1043

- 5718  ==>>   1044

- 5720  ==>>   1045

- 5721  ==>>   1046

- 5723  ==>>   1047

- 5724  ==>>   1048

- 5725  ==>>   1049

- 5741  ==>>   1050

- 5742  ==>>   1051

- 5743  ==>>   1052

- 5744  ==>>   1053

- 5745  ==>>   1054

- 5746  ==>>   1055

- 5747  ==>>   1056

- 5748  ==>>   1057

- 5749  ==>>   1058

- 5750  ==>>   1059

- 5751  ==>>     28

- 5767  ==>>   1060

- 5768  ==>>   1061

- 5775  ==>>   1062

- 5777  ==>>   1063

- 5778  ==>>    869

- 5781  ==>>    536

- 5782  ==>>   1064

- 5783  ==>>    538

- 5784  ==>>   1065

- 5785  ==>>   1066

- 5789  ==>>    544

- 5794  ==>>   1067

- 5797  ==>>   1068

- 5800  ==>>   1069

- 5808  ==>>   1070

- 5809  ==>>   1071

- 5810  ==>>   1072

- 5811  ==>>   1073

- 5812  ==>>   1074

- 5813  ==>>   1075

- 5816  ==>>   1076

- 5817  ==>>   1077

- 5819  ==>>   1078

- 5820  ==>>   1079

- 5823  ==>>   1080

- 5824  ==>>   1081

- 5826  ==>>   1082

- 5827  ==>>   1083

- 5829  ==>>   1084

- 5832  ==>>   1085

- 5833  ==>>   1086

- 5834  ==>>   1087

- 5835  ==>>   1088

- 5837  ==>>   1089

- 5838  ==>>   1090

- 5839  ==>>   1091

- 5840  ==>>   1092

- 5842  ==>>    804

- 5889  ==>>   1093

- 5891  ==>>   1094

- 5892  ==>>   1095

- 5898  ==>>    875

- 5938  ==>>   1096

- 5939  ==>>   1097

- 5940  ==>>   1098

- 5941  ==>>   1099

- 5942  ==>>   1100

- 5943  ==>>   1101

- 5944  ==>>   1102

- 5945  ==>>   1103

- 5946  ==>>   1104

- 5948  ==>>   1105

- 5954  ==>>    375

- 5999  ==>>   1106

- 6001  ==>>   1107

- 6004  ==>>   1108

- 6020  ==>>   1109

- 6021  ==>>   1110

- 6022  ==>>   1111

- 6024  ==>>   1112

- 6025  ==>>   1113

- 6026  ==>>   1114

- 6028  ==>>    173

- 6037  ==>>    545

- 6038  ==>>   1115

- 6043  ==>>    943

- 6044  ==>>   1116

- 6045  ==>>   1117

- 6050  ==>>    580

- 6051  ==>>   1118

- 6054  ==>>   1119

- 6055  ==>>   1120

- 6056  ==>>   1121

- 6057  ==>>   1122

- 6058  ==>>   1123

- 6076  ==>>   1124

- 6077  ==>>   1125

- 6078  ==>>   1126

- 6079  ==>>   1127

- 6080  ==>>   1128

- 6081  ==>>   1129

- 6082  ==>>   1130

- 6086  ==>>   1131

- 6091  ==>>   1132

- 6093  ==>>   1133

- 6094  ==>>   1134

- 6095  ==>>   1135

- 6096  ==>>   1136

- 6098  ==>>   1137

- 6102  ==>>   1138

- 6106  ==>>    877

- 6146  ==>>   1139

- 6147  ==>>   1140

- 6148  ==>>   1141

- 6149  ==>>   1142

- 6150  ==>>   1143

- 6151  ==>>   1144

- 6152  ==>>   1145

- 6154  ==>>   1146

- 6155  ==>>   1147

- 6156  ==>>   1148

- 6162  ==>>    329

- 6209  ==>>   1149

- 6212  ==>>   1150

- 6213  ==>>   1151

- 6214  ==>>   1152

- 6215  ==>>   1153

- 6216  ==>>   1154

- 6217  ==>>   1155

- 6221  ==>>   1156

- 6222  ==>>   1157

- 6223  ==>>   1158

- 6225  ==>>   1159

- 6229  ==>>   1160

- 6232  ==>>   1161

- 6233  ==>>   1162

- 6234  ==>>   1163

- 6235  ==>>    691

- 6244  ==>>   1164

- 6245  ==>>    590

- 6250  ==>>    730

- 6251  ==>>   1165

- 6253  ==>>    734

- 6256  ==>>   1166

- 6257  ==>>    801

- 6258  ==>>   1167

- 6261  ==>>   1168

- 6264  ==>>   1169

- 6268  ==>>   1170

- 6284  ==>>   1171

- 6293  ==>>   1172

- 6299  ==>>   1173

- 6301  ==>>   1174

- 6303  ==>>   1175

- 6305  ==>>   1176

- 6311  ==>>   1177

- 6314  ==>>    920

- 6353  ==>>   1178

- 6354  ==>>   1179

- 6355  ==>>   1180

- 6356  ==>>   1181

- 6357  ==>>   1182

- 6358  ==>>   1183

- 6361  ==>>    886

- 6362  ==>>   1184

- 6363  ==>>   1185

- 6372  ==>>   1186

- 6378  ==>>   1187

- 6379  ==>>   1188

- 6382  ==>>   1189

- 6383  ==>>   1190

- 6384  ==>>   1191

- 6388  ==>>   1192

- 6390  ==>>   1193

- 6391  ==>>   1194

- 6392  ==>>   1195

- 6393  ==>>   1196

- 6394  ==>>    163

- 6403  ==>>   1197

- 6404  ==>>   1198

- 6405  ==>>   1199

- 6406  ==>>   1200

- 6407  ==>>   1201

- 6409  ==>>   1202

- 6411  ==>>    269

- 6461  ==>>   1203

- 6462  ==>>   1204

- 6463  ==>>   1205

- 6464  ==>>   1206

- 6465  ==>>   1207

- 6466  ==>>   1208

- 6474  ==>>   1209

- 6478  ==>>   1210

- 6481  ==>>   1211

- 6482  ==>>   1212

- 6483  ==>>   1213

- 6484  ==>>   1214

- 6485  ==>>   1215

- 6486  ==>>   1216

- 6487  ==>>   1217

- 6488  ==>>   1218

- 6489  ==>>   1219

- 6490  ==>>   1220

- 6491  ==>>   1221

- 6493  ==>>     96

- 6501  ==>>   1222

- 6502  ==>>   1223

- 6503  ==>>   1224

- 6504  ==>>   1225

- 6505  ==>>   1226

- 6507  ==>>   1227

- 6509  ==>>    242

- 6553  ==>>   1228

- 6554  ==>>   1229

- 6555  ==>>   1230

- 6556  ==>>    635

- 6564  ==>>   1231

- 6565  ==>>   1232

- 6566  ==>>   1233

- 6567  ==>>   1234

- 6568  ==>>   1235

- 6573  ==>>   1236

- 6575  ==>>   1237

- 6576  ==>>   1238

- 6577  ==>>   1239

- 6578  ==>>   1240

- 6579  ==>>   1241

- 6580  ==>>   1242

- 6581  ==>>   1243

- 6582  ==>>    272

- 6629  ==>>   1244

- 6635  ==>>   1245

- 6636  ==>>   1246

- 6637  ==>>   1247

- 6641  ==>>   1248

- 6642  ==>>   1249

- 6649  ==>>   1250

- 6652  ==>>   1251

- 6653  ==>>   1252

- 6655  ==>>    644

- 6663  ==>>    203

- 6671  ==>>   1253

- 6672  ==>>   1254

- 6673  ==>>   1255

- 6674  ==>>   1256

- 6675  ==>>   1257

- 6676  ==>>   1258

- 6678  ==>>   1259

- 6680  ==>>    512

- 6727  ==>>   1260

- 6730  ==>>   1261

- 6734  ==>>   1262

- 6735  ==>>   1263

- 6743  ==>>   1264

- 6747  ==>>   1265

- 6750  ==>>   1266

- 6751  ==>>   1267

- 6752  ==>>   1268

- 6754  ==>>    938

- 6762  ==>>   1269

- 6763  ==>>   1270

- 6764  ==>>   1271

- 6765  ==>>   1272

- 6766  ==>>   1273

- 6767  ==>>   1274

- 6769  ==>>   1275

- 6778  ==>>    513

- 6853  ==>>    240

- 6876  ==>>    634

- 6957  ==>>    304

- 6974  ==>>    639

- 7046  ==>>    204

- 7056  ==>>    495

- 7072  ==>>    645

- 7142  ==>>    702

- 7240  ==>>    319

- 7287  ==>>    704

- 7359  ==>>    447

- 7368  ==>>    522

- 7385  ==>>    707

- 7458  ==>>    526

- 7483  ==>>    709

- 7557  ==>>    549

- 7581  ==>>    712

- 7656  ==>>    583

- 7679  ==>>    716

- 7760  ==>>    591

- 7777  ==>>    718

- 7849  ==>>    653

- 7875  ==>>    737

- 7948  ==>>    848

- 7956  ==>>    860

- 7973  ==>>    741

- 8055  ==>>    499

- 8071  ==>>    752

- 8141  ==>>    821

- 8239  ==>>    320

- 8286  ==>>    823

- 8358  ==>>    926

- 8367  ==>>    287

- 8384  ==>>    827

- 8463  ==>>    435

- 8465  ==>>    750

- 8482  ==>>    832

- 8561  ==>>    658

- 8563  ==>>    872

- 8580  ==>>    833

- 8678  ==>>    834

- 8776  ==>>    836

- 8848  ==>>    873

- 8874  ==>>    854

- 8946  ==>>    944

- 8955  ==>>    945

- 8972  ==>>    855

- 9042  ==>>    286

- 9070  ==>>    856

- 9168  ==>>    911

- 9266  ==>>    927

- 9336  ==>>    975

- 9434  ==>>    367

- 9481  ==>>   1004

- 9551  ==>>   1023

- 9635  ==>>      9

- 9705  ==>>     43

- 9783  ==>>     54

- 9830  ==>>    102

- 9877  ==>>    751

- 9922  ==>>    887

- 9927  ==>>    888

-10008  ==>>    726

-10078  ==>>    314

-10125  ==>>    415

-10133  ==>>    954

-10137  ==>>    958

-10186  ==>>    968

-10236  ==>>    990

-10293  ==>>   1010

-10363  ==>>     41

-10433  ==>>     71

-10503  ==>>    235

-10582  ==>>    241

-10652  ==>>    249

-10722  ==>>    262

-10792  ==>>    263

-10862  ==>>    264

-10931  ==>>    276

-11010  ==>>    277

-11080  ==>>    279

-11150  ==>>    291

-11220  ==>>    326

-11290  ==>>    382

-11360  ==>>    402

-11430  ==>>    484

-11500  ==>>    516

-11570  ==>>    552

-11646  ==>>    642

-11753  ==>>    311

-11799  ==>>    697

-11869  ==>>    700

-11939  ==>>    706

-12009  ==>>    921

-12079  ==>>    922

-12149  ==>>    778

-12216  ==>>    779

-12283  ==>>    327

-12348  ==>>    383

-12413  ==>>    403

-12478  ==>>    328

-12541  ==>>    380

-12604  ==>>    384

-12667  ==>>    324

-12726  ==>>    381

-12785  ==>>    385

-12844  ==>>    325

-12902  ==>>    378

-12960  ==>>    386

-13005  ==>>    469

-13024  ==>>    863

-13102  ==>>    864

-13110  ==>>    340

-13122  ==>>     10

-13219  ==>>    950

-13285  ==>>     83

-13302  ==>>    290

-13331  ==>>    119

-13417  ==>>    321

-13474  ==>>    379

-13531  ==>>    387

-13576  ==>>    472

-13588  ==>>    953

-13612  ==>>    254

-13680  ==>>    632

-13695  ==>>    682

-13709  ==>>    352

-13790  ==>>    206

-13800  ==>>    404

-13812  ==>>    118

-13909  ==>>    998

-13975  ==>>    478

-13992  ==>>    300

-14071  ==>>    376

-14121  ==>>    388

-14171  ==>>    389

-14216  ==>>    686

-14221  ==>>    368

-14320  ==>>    133

-14335  ==>>    197

-14401  ==>>     15

-14477  ==>>    243

-14572  ==>>    369

-14629  ==>>    176

-14634  ==>>    370

-14707  ==>>    371

-14752  ==>>    391

-14797  ==>>    392

-14842  ==>>    393

-14887  ==>>    924

-14934  ==>>   1032

-14984  ==>>    312

-15031  ==>>    313

-15075  ==>>    372

-15145  ==>>    193

-15148  ==>>    373

-15220  ==>>    374

-15267  ==>>    394

-15311  ==>>    395

-15355  ==>>    396

-15399  ==>>    315

-15442  ==>>    362

-15485  ==>>    363

-15528  ==>>    397

-15571  ==>>    398

-15614  ==>>    297

-15656  ==>>    298

-15698  ==>>    306

-15740  ==>>    307

-15782  ==>>    308

-15824  ==>>    309

-15866  ==>>    310

-15908  ==>>    358

-15950  ==>>    359

-15992  ==>>    360

-16034  ==>>    361

-16076  ==>>    364

-16118  ==>>    365

-16160  ==>>    366

-16202  ==>>    399

-16244  ==>>    400

-16286  ==>>    401

-16328  ==>>    729

-16367  ==>>     13

-16375  ==>>    933

-16462  ==>>    453

-16473  ==>>    433

-16474  ==>>     25

-16571  ==>>    521

-16629  ==>>    463

-16668  ==>>    305

-16780  ==>>    748

-16838  ==>>    216

-16856  ==>>    858

-16922  ==>>    936

-16963  ==>>    988

-17000  ==>>    679

-17004  ==>>   1028

-17096  ==>>    806

-17111  ==>>    660

-17135  ==>>    811

-17179  ==>>    120

-17211  ==>>    138

-17244  ==>>    802

-17253  ==>>    413

-17310  ==>>    531

-17339  ==>>    434

-17408  ==>>    727

-17434  ==>>    124

-17446  ==>>    444

-17461  ==>>    659

-17529  ==>>    803

-17594  ==>>    849

-17595  ==>>    891

-17690  ==>>    959

-17726  ==>>    805

-17764  ==>>    294

-17803  ==>>   1001

-17839  ==>>   1002

-17865  ==>>    338

-17877  ==>>    143

-17966  ==>>    405

-17971  ==>>    179

-17996  ==>>    192

-18074  ==>>    194

-18091  ==>>    767

-18110  ==>>    896

-18184  ==>>    897

-18199  ==>>    451

-18204  ==>>    331

-18223  ==>>    334

-18299  ==>>    339

-18316  ==>>    351

-18333  ==>>    409

-18409  ==>>    424

-18426  ==>>    430

-18443  ==>>    667

-18512  ==>>    134

-18517  ==>>    668

-18532  ==>>    681

-18547  ==>>    871

-18623  ==>>    878

-18652  ==>>    218

-18653  ==>>    900

-18727  ==>>    316

-18742  ==>>    377

-18757  ==>>    390

-18831  ==>>    450

-18846  ==>>     60

-18861  ==>>    677

-18862  ==>>    217

-18876  ==>>    222

-18941  ==>>    504

-18957  ==>>    260

-18971  ==>>    674

-18999  ==>>    898

-19004  ==>>    145

-19021  ==>>    711

-19035  ==>>    746

-19049  ==>>    178

-19068  ==>>    428

-19107  ==>>    184

-19139  ==>>    188

-19163  ==>>    189

-19203  ==>>    191

-19227  ==>>    870

-19231  ==>>    760

-19259  ==>>    766

-19265  ==>>    690

-19293  ==>>    883

-19299  ==>>    342

diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
index aaefec8..d872e59 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
index b4cb759..c60ecb9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser10.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
index 0473b7c..718eafb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser11.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
index 8b6114c..cdf0b0e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser12.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
index 9bcdfff..742c0e6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser13.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
index 48f7dfa..707d2ab 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
index 807f061..9af0998 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser15.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
index 4b1d7d0..230b96b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser16.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
index 080fdca..61a3533 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser17.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
index fc98de2..436d2d7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser18.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
index a4e71ca..9543d18 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser19.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
index 9d168fa..252def8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
index 406185d..ec9629a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser20.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
index 8240ef5..d1e1b31 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser21.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
index 7833854..69a51bd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser22.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
index e91f1c7..8dc3eca 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser23.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
index 277878a..e370a12 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser24.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
index cecf1aa..42e61e5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser3.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
index 417b0b0..318e9d5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser4.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
index e6ed9d6..468b020 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser5.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
index 99c710d..cece702 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser6.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
index c20e8ca..4edafbc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser7.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
index 8e849ab..140fc7e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser8.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
index bfe83b4..3b77cdb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/parser9.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc
new file mode 100644
index 0000000..b3d548c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc
new file mode 100644
index 0000000..0a96c07
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc
new file mode 100644
index 0000000..c8241e8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc
new file mode 100644
index 0000000..f89f581
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/part2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc
new file mode 100644
index 0000000..219835e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc
new file mode 100644
index 0000000..dbfb455
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc
new file mode 100644
index 0000000..f89f581
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode7/start2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc
new file mode 100644
index 0000000..6b106b0
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc
new file mode 100644
index 0000000..b472657
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc
new file mode 100644
index 0000000..c8241e8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part14.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc
new file mode 100644
index 0000000..d88c8d4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/part2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc
new file mode 100644
index 0000000..7b6ff8e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start0.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc
new file mode 100644
index 0000000..7ad1dc8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start1.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc
new file mode 100644
index 0000000..d88c8d4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/parser/unicode8/start2.rsc
Binary files differ
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.java
index 42685c0..3180d7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/AbortCompilation.java
@@ -55,6 +55,7 @@
 		this.isSilent = isSilent;
 		this.silentException = silentException;
 	}
+	@Override
 	public String getMessage() {
 		String message = super.getMessage();
 		StringBuffer buffer = new StringBuffer(message == null ? Util.EMPTY_STRING : message);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.java
index fc87d2b..f5eb192 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblem.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,7 +22,7 @@
 	private int endPosition;
 	private int line;
 	public int column;
-	private int severity;
+	public int severity;
 	private String[] arguments;
 	private String message;
 	// AspectJ Extension
@@ -57,6 +57,9 @@
 	this.line = line;
 	this.column = column;
 }
+public void reportError() {
+	// Do nothing by default
+}
 
 public String errorReportSource(char[] unitSource) {
 	//extra from the source the innacurate     token
@@ -111,16 +114,15 @@
 	}
 	return errorBuffer.toString();
 }
-/**
- * Answer back the original arguments recorded into the problem.
- * @return java.lang.String[]
- */
+
+@Override
 public String[] getArguments() {
 	return this.arguments;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem#getCategoryID()
  */
+@Override
 public int getCategoryID() {
 	return ProblemReporter.getProblemCategory(this.severity, this.id);
 }
@@ -130,6 +132,7 @@
  * @see org.aspectj.org.eclipse.jdt.core.compiler.IProblem#getID()
  * @return int
  */
+@Override
 public int getID() {
 	return this.id;
 }
@@ -174,6 +177,8 @@
 			return "nls"; //$NON-NLS-1$
 		case CAT_RESTRICTION:
 			return "restriction"; //$NON-NLS-1$
+		case CAT_MODULE:
+			return "module"; //$NON-NLS-1$
 	}
 	return null;
 }
@@ -182,32 +187,24 @@
  * Returns the marker type associated to this problem.
  * @see org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem#getMarkerType()
  */
+@Override
 public String getMarkerType() {
 	return this.id == IProblem.Task
 		? MARKER_TYPE_TASK
 		: MARKER_TYPE_PROBLEM;
 }
 
-/**
- * Answer a localized, human-readable message string which describes the problem.
- * @return java.lang.String
- */
+@Override
 public String getMessage() {
 	return this.message;
 }
 
-/**
- * Answer the file name in which the problem was found.
- * @return char[]
- */
+@Override
 public char[] getOriginatingFileName() {
 	return this.fileName;
 }
 
-/**
- * Answer the end position of the problem (inclusive), or -1 if unknown.
- * @return int
- */
+@Override
 public int getSourceEnd() {
 	return this.endPosition;
 }
@@ -218,17 +215,13 @@
 public int getSourceColumnNumber() {
 	return this.column;
 }
-/**
- * Answer the line number in source where the problem begins.
- * @return int
- */
+
+@Override
 public int getSourceLineNumber() {
 	return this.line;
 }
-/**
- * Answer the start position of the problem (inclusive), or -1 if unknown.
- * @return int
- */
+
+@Override
 public int getSourceStart() {
 	return this.startPosition;
 }
@@ -237,6 +230,7 @@
  * Helper method: checks the severity to see if the Error bit is set.
  * @return boolean
  */
+@Override
 public boolean isError() {
 	return (this.severity & ProblemSeverities.Error) != 0;
 }
@@ -245,10 +239,12 @@
  * Helper method: checks the severity to see if the Error bit is not set.
  * @return boolean
  */
+@Override
 public boolean isWarning() {
 	return (this.severity & ProblemSeverities.Error) == 0
 			&& (this.severity & ProblemSeverities.Info) == 0;
 }
+@Override
 public boolean isInfo() {
 	return (this.severity & ProblemSeverities.Info) != 0;
 }
@@ -257,35 +253,23 @@
 	this.fileName = fileName;
 }
 
-/**
- * Set the end position of the problem (inclusive), or -1 if unknown.
- *
- * Used for shifting problem positions.
- * @param sourceEnd the new value of the sourceEnd of the receiver
- */
+@Override
 public void setSourceEnd(int sourceEnd) {
 	this.endPosition = sourceEnd;
 }
 
-/**
- * Set the line number in source where the problem begins.
- * @param lineNumber the new value of the line number of the receiver
- */
+@Override
 public void setSourceLineNumber(int lineNumber) {
 
 	this.line = lineNumber;
 }
 
-/**
- * Set the start position of the problem (inclusive), or -1 if unknown.
- *
- * Used for shifting problem positions.
- * @param sourceStart the new value of the source start position of the receiver
- */
+@Override
 public void setSourceStart(int sourceStart) {
 	this.startPosition = sourceStart;
 }
 
+@Override
 public String toString() {
 	String s = "Pb(" + (this.id & IProblem.IgnoreCategoriesMask) + ") "; //$NON-NLS-1$ //$NON-NLS-2$
 	if (this.message != null) {
@@ -299,21 +283,25 @@
 }
 
 	// AspectJ Extension
+	@Override
 	public void setSeeAlsoProblems(IProblem[] problems) {
 		this.seeAlso = problems;
 	}
 	
+	@Override
 	public IProblem[] seeAlso() {
-		return seeAlso;
+		return this.seeAlso;
 	}
 	
 	
+	@Override
 	public String getSupplementaryMessageInfo() {
-		return supplementaryInfo;
+		return this.supplementaryInfo;
 	}
 	
+	@Override
 	public void setSupplementaryMessageInfo(String msg) {
-		supplementaryInfo = msg;
+		this.supplementaryInfo = msg;
 	}
 	// End AspectJ Extension
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java
index 3b65a3d..cd8e3e8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/DefaultProblemFactory.java
@@ -62,6 +62,7 @@
  * @param lineNumber int
  * @return CategorizedProblem
  */
+@Override
 public CategorizedProblem createProblem(
 	char[] originatingFileName,
 	int problemId,
@@ -84,6 +85,7 @@
 		lineNumber,
 		columnNumber);
 }
+@Override
 public CategorizedProblem createProblem(
 	char[] originatingFileName,
 	int problemId,
@@ -113,6 +115,7 @@
  * Answer the locale used to retrieve the error messages
  * @return java.util.Locale
  */
+@Override
 public Locale getLocale() {
 	return this.locale;
 }
@@ -128,9 +131,11 @@
 		this.messageTemplates = loadMessageTemplates(locale);
 	}
 }
+@Override
 public final String getLocalizedMessage(int id, String[] problemArguments) {
 	return getLocalizedMessage(id, 0, problemArguments);
 }
+@Override
 public final String getLocalizedMessage(int id, int elaborationId, String[] problemArguments) {
 	String rawMessage = (String) this.messageTemplates.get(keyFromID(id & IProblem.IgnoreCategoriesMask));
 	if (rawMessage == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
index 5610800..1b39b3c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
@@ -1,10 +1,11 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Benjamin Muskalla - Contribution for bug 239066
@@ -59,6 +60,7 @@
  *								Bug 458361 - [1.8][null] reconciler throws NPE in ProblemReporter.illegalReturnRedefinition()
  *								Bug 459967 - [null] compiler should know about nullness of special methods like MyEnum.valueOf()
  *								Bug 461878 - [1.7][1.8][compiler][null] ECJ compiler does not allow to use null annotations on annotations
+ *								Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
  *      Jesper S Moller <jesper@selskabet.org> -  Contributions for
  *								bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
  *								bug 382721 - [1.8][compiler] Effectively final variables needs special treatment
@@ -68,6 +70,7 @@
  *								bug 419209 - [1.8] Repeating container annotations should be rejected in the presence of annotation it contains
  *								Bug 429384 - [1.8][null] implement conformance rules for null-annotated lower / upper type bounds
  *								Bug 416182 - [1.8][compiler][null] Contradictory null annotations not rejected
+ *								bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
  *     Ulrich Grave <ulrich.grave@gmx.de> - Contributions for
  *                              bug 386692 - Missing "unused" warning on "autowired" fields
  ********************************************************************************/
@@ -78,6 +81,9 @@
 import java.io.StringWriter;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
@@ -127,9 +133,13 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MessageSend;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NameReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NullAnnotationMatching;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.NullLiteral;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.PackageVisibilityStatement;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression;
@@ -155,9 +165,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.StringConstant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.CaptureBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ElementValuePair;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite;
@@ -165,6 +178,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedGenericMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemMethodBinding;
@@ -173,10 +187,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SplitPackageBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SyntheticArgumentBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants.DangerousMethod;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeIds;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding;
@@ -194,7 +210,7 @@
 
 	public ReferenceContext referenceContext;
 	private Scanner positionScanner;
-	private boolean underScoreIsLambdaParameter;
+	private boolean underScoreIsError;
 	private final static byte
 	  // TYPE_ACCESS = 0x0,
 	  FIELD_ACCESS = 0x4,
@@ -232,8 +248,33 @@
 		case IProblem.UsingDeprecatedMethod :
 		case IProblem.UsingDeprecatedConstructor :
 		case IProblem.UsingDeprecatedField :
+		case IProblem.UsingDeprecatedPackage :
+		case IProblem.UsingDeprecatedModule :
+		case IProblem.OverridingDeprecatedSinceVersionMethod :
+		case IProblem.UsingDeprecatedSinceVersionType :
+		case IProblem.UsingDeprecatedSinceVersionMethod :
+		case IProblem.UsingDeprecatedSinceVersionConstructor :
+		case IProblem.UsingDeprecatedSinceVersionField :
+		case IProblem.UsingDeprecatedSinceVersionPackage :
+		case IProblem.UsingDeprecatedSinceVersionModule :
 			return CompilerOptions.UsingDeprecatedAPI;
 
+		case IProblem.OverridingTerminallyDeprecatedMethod :
+		case IProblem.UsingTerminallyDeprecatedType :
+		case IProblem.UsingTerminallyDeprecatedMethod :
+		case IProblem.UsingTerminallyDeprecatedConstructor :
+		case IProblem.UsingTerminallyDeprecatedField :
+		case IProblem.UsingTerminallyDeprecatedPackage :
+		case IProblem.UsingTerminallyDeprecatedModule :
+		case IProblem.OverridingTerminallyDeprecatedSinceVersionMethod :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionType :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionMethod :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionConstructor :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionField :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionPackage :
+		case IProblem.UsingTerminallyDeprecatedSinceVersionModule :
+			return CompilerOptions.UsingTerminallyDeprecatedAPI;
+
 		case IProblem.LocalVariableIsNeverUsed :
 			return CompilerOptions.UnusedLocalVariable;
 
@@ -370,7 +411,6 @@
 			return CompilerOptions.VarargsArgumentNeedCast;
 
 		case IProblem.NullLocalVariableReference:
-		case IProblem.NullableFieldReference:
 		case IProblem.NullExpressionReference:
 		case IProblem.NullUnboxing:
 			return CompilerOptions.NullReference;
@@ -378,6 +418,7 @@
 		case IProblem.PotentialNullLocalVariableReference:
 		case IProblem.PotentialNullMessageSendReference:
 		case IProblem.ArrayReferencePotentialNullReference:
+		case IProblem.NullableFieldReference:
 		case IProblem.DereferencingNullableExpression:
 		case IProblem.PotentialNullExpressionReference:
 		case IProblem.PotentialNullUnboxing:
@@ -424,6 +465,7 @@
 		case IProblem.ContradictoryNullAnnotationsOnBound:
 		case IProblem.ContradictoryNullAnnotationsInferred:
 		case IProblem.ContradictoryNullAnnotationsInferredFunctionType:
+		case IProblem.IllegalParameterNullityRedefinition:
 			return CompilerOptions.NullSpecViolation;
 
 		case IProblem.NullNotCompatibleToFreeTypeVariable:
@@ -452,9 +494,12 @@
 			return CompilerOptions.NullUncheckedConversion;
 		case IProblem.RedundantNullAnnotation:
 		case IProblem.RedundantNullDefaultAnnotation:
+		case IProblem.RedundantNullDefaultAnnotationModule:
 		case IProblem.RedundantNullDefaultAnnotationPackage:
 		case IProblem.RedundantNullDefaultAnnotationType:
 		case IProblem.RedundantNullDefaultAnnotationMethod:
+		case IProblem.RedundantNullDefaultAnnotationLocal:
+		case IProblem.RedundantNullDefaultAnnotationField:
 			return CompilerOptions.RedundantNullAnnotation;
 
 		case IProblem.BoxingConversion :
@@ -612,6 +657,18 @@
 			
 		case IProblem.UnusedTypeParameter:
 			return CompilerOptions.UnusedTypeParameter;
+
+		case IProblem.UnlikelyCollectionMethodArgumentType:
+			return CompilerOptions.UnlikelyCollectionMethodArgumentType;
+		case IProblem.UnlikelyEqualsArgumentType:
+			return CompilerOptions.UnlikelyEqualsArgumentType;
+
+		case IProblem.NonPublicTypeInAPI:
+		case IProblem.NotExportedTypeInAPI:
+		case IProblem.MissingRequiresTransitiveForTypeInAPI:
+			return CompilerOptions.APILeak;
+		case IProblem.UnstableAutoModuleName:
+			return CompilerOptions.UnstableAutoModuleName;
 }
 	return 0;
 }
@@ -671,6 +728,10 @@
 			case CompilerOptions.PotentiallyUnclosedCloseable :
 			case CompilerOptions.PessimisticNullAnalysisForFreeTypeVariables :
 			case CompilerOptions.NonNullTypeVariableFromLegacyInvocation :
+			case CompilerOptions.UnlikelyCollectionMethodArgumentType :
+			case CompilerOptions.UnlikelyEqualsArgumentType:
+			case CompilerOptions.APILeak:
+			case CompilerOptions.UnstableAutoModuleName:
 				return CategorizedProblem.CAT_POTENTIAL_PROGRAMMING_PROBLEM;
 			
 			case CompilerOptions.OverriddenPackageDefaultMethod :
@@ -697,6 +758,7 @@
 				return CategorizedProblem.CAT_UNNECESSARY_CODE;
 
 			case CompilerOptions.UsingDeprecatedAPI :
+			case CompilerOptions.UsingTerminallyDeprecatedAPI :
 				return CategorizedProblem.CAT_DEPRECATION;
 
 			case CompilerOptions.NonExternalizedString :
@@ -709,6 +771,7 @@
 			case CompilerOptions.MissingJavadocTags :
 			case CompilerOptions.InvalidJavadoc :
 			case CompilerOptions.InvalidJavadoc|CompilerOptions.UsingDeprecatedAPI :
+			case CompilerOptions.InvalidJavadoc|CompilerOptions.UsingTerminallyDeprecatedAPI :
 				return CategorizedProblem.CAT_JAVADOC;
 
 			case CompilerOptions.UncheckedTypeOperation :
@@ -737,7 +800,8 @@
 		case IProblem.IsClassPathCorrect :
 		case IProblem.CorruptedSignature :
 			return CategorizedProblem.CAT_BUILDPATH;
-
+		case IProblem.ProblemNotAnalysed :
+			return CategorizedProblem.CAT_UNNECESSARY_CODE;
 		default :
 			if ((problemID & IProblem.Syntax) != 0)
 				return CategorizedProblem.CAT_SYNTAX;
@@ -747,6 +811,8 @@
 				return CategorizedProblem.CAT_TYPE;
 			if ((problemID & (IProblem.FieldRelated|IProblem.MethodRelated|IProblem.ConstructorRelated)) != 0)
 				return CategorizedProblem.CAT_MEMBER;
+			if ((problemID & IProblem.ModuleRelated) != 0)
+				return CategorizedProblem.CAT_MODULE;
 	}
 	return CategorizedProblem.CAT_INTERNAL;
 }
@@ -1331,7 +1397,7 @@
 		nodeSourceStart(local, location),
 		nodeSourceEnd(local, location));
 }
-public void cannotReferToNonEffectivelyFinalOuterLocal(LocalVariableBinding local, ASTNode location) {
+public void cannotReferToNonEffectivelyFinalOuterLocal(VariableBinding local, ASTNode location) {
 	String[] arguments = new String[] { new String(local.readableName()) };
 	this.handle(
 		IProblem.OuterLocalMustBeEffectivelyFinal, 
@@ -1340,6 +1406,15 @@
 		nodeSourceStart(local, location),
 		nodeSourceEnd(local, location));
 }
+public void cannotReferToNonFinalField(VariableBinding local, ASTNode location) {
+	String[] arguments = new String[] { new String(local.readableName()) };
+	this.handle(
+		IProblem.FieldMustBeFinal, 
+		arguments,
+		arguments,
+		nodeSourceStart(local, location),
+		nodeSourceEnd(local, location));
+}
 public void cannotReturnInInitializer(ASTNode location) {
 	this.handle(
 		IProblem.CannotReturnInInitializer,
@@ -1501,6 +1576,7 @@
  * when different from Ignore, severity can be coupled with ProblemSeverities.Optional
  * to indicate that this problem is configurable through options
  */
+@Override
 public int computeSeverity(int problemID){
 
 	switch (problemID) {
@@ -1593,7 +1669,7 @@
 		case IProblem.ToleratedMisplacedTypeAnnotations:	
 			return ProblemSeverities.Warning;
 		case IProblem.IllegalUseOfUnderscoreAsAnIdentifier:
-			return this.underScoreIsLambdaParameter ? ProblemSeverities.Error : ProblemSeverities.Warning;
+			return this.underScoreIsError ? ProblemSeverities.Error : ProblemSeverities.Warning;
 		case IProblem.ProblemNotAnalysed:
 			return ProblemSeverities.Info; // Not configurable
 	}
@@ -1662,24 +1738,37 @@
 		sourceStart, sourceEnd);
 }
 
-public void deprecatedField(FieldBinding field, ASTNode location) {
-	int severity = computeSeverity(IProblem.UsingDeprecatedField);
-	if (severity == ProblemSeverities.Ignore) return;
-	this.handle(
-		IProblem.UsingDeprecatedField,
-		new String[] {new String(field.declaringClass.readableName()), new String(field.name)},
-		new String[] {new String(field.declaringClass.shortReadableName()), new String(field.name)},
-		severity,
-		nodeSourceStart(field, location),
-		nodeSourceEnd(field, location));
+public void deprecatedField(final FieldBinding field, ASTNode location) {
+	String fieldName = new String(field.name);
+	int sourceStart = nodeSourceStart(field, location);
+	int sourceEnd = nodeSourceEnd(field, location);
+	String sinceValue = deprecatedSinceValue(() -> field.getAnnotations());
+	if (sinceValue != null) {
+		this.handle(
+			(field.tagBits & TagBits.AnnotationTerminallyDeprecated) == 0 ? IProblem.UsingDeprecatedSinceVersionField : IProblem.UsingTerminallyDeprecatedSinceVersionField,
+			new String[] {new String(field.declaringClass.readableName()), fieldName, sinceValue},
+			new String[] {new String(field.declaringClass.shortReadableName()), fieldName, sinceValue},
+			sourceStart, sourceEnd);
+	} else {
+		this.handle(
+			(field.tagBits & TagBits.AnnotationTerminallyDeprecated) == 0 ? IProblem.UsingDeprecatedField : IProblem.UsingTerminallyDeprecatedField,
+			new String[] {new String(field.declaringClass.readableName()), fieldName},
+			new String[] {new String(field.declaringClass.shortReadableName()), fieldName},
+			sourceStart, sourceEnd);
+	}
 }
 
-public void deprecatedMethod(MethodBinding method, ASTNode location) {
+public void deprecatedMethod(final MethodBinding method, ASTNode location) {
+	// common arguments:
+	String readableClassName = new String(method.declaringClass.readableName());
+	String shortReadableClassName = new String(method.declaringClass.shortReadableName());
+	String selector = new String(method.selector);
+	String signature = typesAsString(method, false);
+	String shortSignature = typesAsString(method, true);
+	
 	boolean isConstructor = method.isConstructor();
-	int severity = computeSeverity(isConstructor ? IProblem.UsingDeprecatedConstructor : IProblem.UsingDeprecatedMethod);
-	if (severity == ProblemSeverities.Ignore) return;
+	int start = -1;
 	if (isConstructor) {
-		int start = -1;
 		if(location instanceof AllocationExpression) {
 			// omit the new keyword from the warning marker
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=300031
@@ -1689,27 +1778,50 @@
 			}
 			start = allocationExpression.type.sourceStart;
 		}
-		this.handle(
-			IProblem.UsingDeprecatedConstructor,
-			new String[] {new String(method.declaringClass.readableName()), typesAsString(method, false)},
-			new String[] {new String(method.declaringClass.shortReadableName()), typesAsString(method, true)},
-			severity,
-			(start == -1) ? location.sourceStart : start,
-			location.sourceEnd);
 	} else {
-		int start = -1;
 		if (location instanceof MessageSend) {
 			// start the warning marker from the location where the name of the method starts
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=300031
 			start = (int) (((MessageSend)location).nameSourcePosition >>> 32);
 		}
-		this.handle(
-			IProblem.UsingDeprecatedMethod,
-			new String[] {new String(method.declaringClass.readableName()), new String(method.selector), typesAsString(method, false)},
-			new String[] {new String(method.declaringClass.shortReadableName()), new String(method.selector), typesAsString(method, true)},
-			severity,
-			(start == -1) ? location.sourceStart : start,
-			location.sourceEnd);
+	}
+	int sourceStart = (start == -1) ? location.sourceStart : start;
+	int sourceEnd = location.sourceEnd;
+
+	// discriminate:
+	boolean terminally = (method.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0;
+	String sinceValue = deprecatedSinceValue(() -> method.getAnnotations());
+	if (sinceValue == null && method.isConstructor()) {
+		sinceValue = deprecatedSinceValue(() -> method.declaringClass.getAnnotations()); // for default ctor
+	}
+	if (sinceValue != null) {
+		if (isConstructor) {
+			this.handle(
+				terminally ? IProblem.UsingTerminallyDeprecatedSinceVersionConstructor : IProblem.UsingDeprecatedSinceVersionConstructor,
+				new String[] {readableClassName, signature, sinceValue},
+				new String[] {shortReadableClassName, shortSignature, sinceValue},
+				sourceStart, sourceEnd);
+		} else {
+			this.handle(
+				terminally ? IProblem.UsingTerminallyDeprecatedSinceVersionMethod : IProblem.UsingDeprecatedSinceVersionMethod,
+				new String[] {readableClassName, selector, signature, sinceValue},
+				new String[] {shortReadableClassName, selector, shortSignature, sinceValue},
+				sourceStart, sourceEnd);
+		}
+	} else {
+		if (isConstructor) {
+			this.handle(
+				terminally ? IProblem.UsingTerminallyDeprecatedConstructor : IProblem.UsingDeprecatedConstructor,
+				new String[] {readableClassName, signature},
+				new String[] {shortReadableClassName, shortSignature},
+				sourceStart, sourceEnd);
+		} else {
+			this.handle(
+				terminally ? IProblem.UsingTerminallyDeprecatedMethod : IProblem.UsingDeprecatedMethod,
+				new String[] {readableClassName, selector, signature},
+				new String[] {shortReadableClassName, selector, shortSignature},
+				sourceStart, sourceEnd);
+		}
 	}
 }
 public void deprecatedType(TypeBinding type, ASTNode location) {
@@ -1719,9 +1831,7 @@
 // a deprecated type in a qualified reference (see bug 292510)
 public void deprecatedType(TypeBinding type, ASTNode location, int index) {
 	if (location == null) return; // 1G828DN - no type ref for synthetic arguments
-	int severity = computeSeverity(IProblem.UsingDeprecatedType);
-	if (severity == ProblemSeverities.Ignore) return;
-	type = type.leafComponentType();
+	final TypeBinding leafType = type.leafComponentType();
 	int sourceStart = -1;
 	if (location instanceof QualifiedTypeReference) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=300031
 		QualifiedTypeReference ref = (QualifiedTypeReference) location;
@@ -1729,13 +1839,74 @@
 			sourceStart = (int) (ref.sourcePositions[index] >> 32);
 		}
 	}
-	this.handle(
-		IProblem.UsingDeprecatedType,
-		new String[] {new String(type.readableName())},
-		new String[] {new String(type.shortReadableName())},
-		severity,
-		(sourceStart == -1) ? location.sourceStart : sourceStart,
-		nodeSourceEnd(null, location, index));
+	String sinceValue = deprecatedSinceValue(() -> leafType.getAnnotations());
+	if (sinceValue != null) {
+		this.handle(
+			((leafType.tagBits & TagBits.AnnotationTerminallyDeprecated) == 0) ? IProblem.UsingDeprecatedSinceVersionType : IProblem.UsingTerminallyDeprecatedSinceVersionType,
+			new String[] {new String(leafType.readableName()), sinceValue},
+			new String[] {new String(leafType.shortReadableName()), sinceValue},
+			(sourceStart == -1) ? location.sourceStart : sourceStart,
+			nodeSourceEnd(null, location, index));
+	} else {
+		this.handle(
+			((leafType.tagBits & TagBits.AnnotationTerminallyDeprecated) == 0) ? IProblem.UsingDeprecatedType : IProblem.UsingTerminallyDeprecatedType,
+			new String[] {new String(leafType.readableName())},
+			new String[] {new String(leafType.shortReadableName())},
+			(sourceStart == -1) ? location.sourceStart : sourceStart,
+			nodeSourceEnd(null, location, index));
+	}
+}
+public void deprecatedPackage(ImportReference pkgRef, PackageBinding resolvedPackage, TypeBinding packageInfo) {
+	String sinceValue = deprecatedSinceValue(() -> packageInfo.isValidBinding() ? packageInfo.getAnnotations() : Binding.NO_ANNOTATIONS);
+	boolean isTerminally = (resolvedPackage.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0;
+	if (sinceValue != null) {
+		String[] args = { CharOperation.toString(pkgRef.tokens), sinceValue };
+		handle( isTerminally ? IProblem.UsingTerminallyDeprecatedSinceVersionPackage : IProblem.UsingDeprecatedSinceVersionPackage,
+				args,
+				args,
+				pkgRef.sourceStart,
+				pkgRef.sourceEnd);		
+	} else {
+		String[] args = { CharOperation.toString(pkgRef.tokens) };
+		handle( isTerminally ? IProblem.UsingTerminallyDeprecatedPackage : IProblem.UsingDeprecatedPackage,
+				args,
+				args,
+				pkgRef.sourceStart,
+				pkgRef.sourceEnd);
+	}
+}
+public void deprecatedModule(ModuleReference moduleReference, ModuleBinding requiredModule) {
+	String sinceValue = deprecatedSinceValue(() -> requiredModule.getAnnotations());
+	boolean isTerminally = (requiredModule.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0;
+	if (sinceValue != null) {
+		String[] args = { String.valueOf(requiredModule.name()), sinceValue };
+		handle( isTerminally ? IProblem.UsingTerminallyDeprecatedSinceVersionModule : IProblem.UsingDeprecatedSinceVersionModule,
+				args,
+				args,
+				moduleReference.sourceStart,
+				moduleReference.sourceEnd);		
+	} else {
+		String[] args = { String.valueOf(requiredModule.name()) };
+		handle( isTerminally ? IProblem.UsingTerminallyDeprecatedModule : IProblem.UsingDeprecatedModule,
+				args,
+				args,
+				moduleReference.sourceStart,
+				moduleReference.sourceEnd);
+	}
+}
+String deprecatedSinceValue(Supplier<AnnotationBinding[]> annotations) {
+	if (this.options != null && this.options.complianceLevel >= ClassFileConstants.JDK9) {
+		for (AnnotationBinding annotationBinding : annotations.get()) {
+			if (annotationBinding.getAnnotationType().id == TypeIds.T_JavaLangDeprecated) {
+				for (ElementValuePair elementValuePair : annotationBinding.getElementValuePairs()) {
+					if (CharOperation.equals(elementValuePair.getName(), TypeConstants.SINCE) && elementValuePair.value instanceof StringConstant)
+						return ((StringConstant) elementValuePair.value).stringValue();
+				}
+				break;
+			}
+		}
+	}
+	return null;
 }
 public void disallowedTargetForAnnotation(Annotation annotation) {
 	this.handle(
@@ -2688,6 +2859,15 @@
 		methodDecl.sourceStart,
 		methodDecl.sourceEnd);
 }
+public void illegalModifierCombinationForPrivateInterfaceMethod(AbstractMethodDeclaration methodDecl) {
+	String[] arguments = new String[] {new String(methodDecl.selector)};
+	this.handle(
+		IProblem.IllegalModifierCombinationForPrivateInterfaceMethod9,
+		arguments,
+		arguments,
+		methodDecl.sourceStart,
+		methodDecl.sourceEnd);
+}
 
 public void illegalModifierForAnnotationField(FieldDeclaration fieldDecl) {
 	String name = new String(fieldDecl.name);
@@ -2745,6 +2925,15 @@
 		type.sourceStart(),
 		type.sourceEnd());
 }
+public void illegalModifierForModule(ModuleDeclaration module) {
+	String[] arguments = new String[] {new String(module.moduleName)};
+	this.handle(
+		IProblem.IllegalModifierForModule,
+		arguments,
+		arguments,
+		module.sourceStart(),
+		module.sourceEnd());
+}
 public void illegalModifierForEnum(SourceTypeBinding type) {
 	String[] arguments = new String[] {new String(type.sourceName())};
 	this.handle(
@@ -2806,13 +2995,14 @@
 		fieldDecl.sourceStart,
 		fieldDecl.sourceEnd);
 }
-public void illegalModifierForInterfaceMethod(AbstractMethodDeclaration methodDecl, boolean isJDK18orGreater) {
+public void illegalModifierForInterfaceMethod(AbstractMethodDeclaration methodDecl, long  level) {
+	
+	int problem = level < ClassFileConstants.JDK1_8 ? IProblem.IllegalModifierForInterfaceMethod :
+		level < ClassFileConstants.JDK9 ? IProblem.IllegalModifierForInterfaceMethod18 : IProblem.IllegalModifierForInterfaceMethod9;
 	// cannot include parameter types since they are not resolved yet
 	// and the error message would be too long
 	this.handle(
-		isJDK18orGreater 
-			? IProblem.IllegalModifierForInterfaceMethod18 
-			: IProblem.IllegalModifierForInterfaceMethod,
+		problem,
 		new String[] {
 			new String(methodDecl.selector)
 		},
@@ -3102,7 +3292,8 @@
 		String[] shortArguments = null;
 		switch (expectedImport.problemId()) {
 			case ProblemReasons.NotVisible :
-				id = IProblem.NotVisibleField;
+			case ProblemReasons.NotAccessible :
+				id = (expectedImport.problemId() == ProblemReasons.NotVisible) ? IProblem.NotVisibleField : IProblem.NotAccessibleField;
 				readableArguments = new String[] {CharOperation.toString(importRef.tokens), new String(field.declaringClass.readableName())};
 				shortArguments = new String[] {CharOperation.toString(importRef.tokens), new String(field.declaringClass.shortReadableName())};
 				break;
@@ -3126,6 +3317,18 @@
 		return;
 	}
 
+	if (expectedImport instanceof PackageBinding && expectedImport.problemId() == ProblemReasons.NotAccessible) {
+		char[][] compoundName = ((PackageBinding)expectedImport).compoundName;
+		String[] arguments = new String[] {CharOperation.toString(compoundName)};
+		this.handleUntagged(
+		        IProblem.NotAccessiblePackage,
+		        arguments,
+		        arguments,
+		        importRef.sourceStart,
+		        (int) importRef.sourcePositions[compoundName.length - 1]);
+		return;
+	}
+
 	if (expectedImport.problemId() == ProblemReasons.NotFound) {
 		char[][] tokens = expectedImport instanceof ProblemReferenceBinding
 			? ((ProblemReferenceBinding) expectedImport).compoundName
@@ -3152,6 +3355,46 @@
 	}
 	invalidType(importRef, (TypeBinding)expectedImport);
 }
+public void conflictingPackagesFromModules(SplitPackageBinding splitPackage, int sourceStart, int sourceEnd) {
+	ModuleBinding enclosingModule = splitPackage.enclosingModule;
+	String modules = splitPackage.incarnations.stream()
+						.filter(enclosingModule::canAccess)
+						.map(p -> String.valueOf(p.enclosingModule.readableName()))
+						.sorted()
+						.collect(Collectors.joining(", ")); //$NON-NLS-1$
+	String[] arguments = new String[] {
+						CharOperation.toString(splitPackage.compoundName),
+						modules };
+	this.handle(
+			IProblem.ConflictingPackageFromModules,
+			arguments,
+			arguments,
+			sourceStart,
+			sourceEnd);
+}
+public void conflictingPackagesFromModules(PackageBinding pack, Set<ModuleBinding> modules, int sourceStart, int sourceEnd) {
+	String moduleNames = modules.stream()
+						.map(p -> String.valueOf(p.name()))
+						.sorted()
+						.collect(Collectors.joining(", ")); //$NON-NLS-1$
+	String[] arguments = new String[] {
+						CharOperation.toString(pack.compoundName),
+						moduleNames };
+	this.handle(
+			IProblem.ConflictingPackageFromModules,
+			arguments,
+			arguments,
+			sourceStart,
+			sourceEnd);
+}
+public void conflictingPackagesFromOtherModules(ImportReference currentPackage, Set<ModuleBinding> declaringModules) {
+		String moduleNames = declaringModules.stream()
+								.map(p -> String.valueOf(p.name()))
+								.sorted()
+								.collect(Collectors.joining(", ")); //$NON-NLS-1$
+		String[] arguments = new String[] { CharOperation.toString(currentPackage.tokens), moduleNames };
+		this.handle(IProblem.ConflictingPackageFromOtherModules, arguments, arguments, currentPackage.sourceStart, currentPackage.sourceEnd);
+}
 public void incompatibleExceptionInThrowsClause(SourceTypeBinding type, MethodBinding currentMethod, MethodBinding inheritedMethod, ReferenceBinding exceptionType) {
 	if (TypeBinding.equalsEquals(type, currentMethod.declaringClass)) {
 		int id;
@@ -3611,6 +3854,13 @@
 			    shownConstructor = problemConstructor.closestMatch.original();
 		    }
 			break;
+		case ProblemReasons.NotAccessible :
+			id = IProblem.NotAccessibleConstructor;
+			problemConstructor = (ProblemMethodBinding) targetConstructor;
+			if (problemConstructor.closestMatch != null) {
+			    shownConstructor = problemConstructor.closestMatch.original();
+		    }
+			break;
 		case ProblemReasons.Ambiguous :
 			if (insideDefaultConstructor){
 				id = IProblem.AmbiguousConstructorInDefaultConstructor;
@@ -3860,8 +4110,9 @@
 */
 			break;
 		case ProblemReasons.NotVisible :
+		case ProblemReasons.NotAccessible :
 			this.handle(
-				IProblem.NotVisibleField,
+				(field.problemId() == ProblemReasons.NotVisible) ? IProblem.NotVisibleField : IProblem.NotAccessibleField,
 				new String[] {new String(fieldRef.token), new String(field.declaringClass.readableName())},
 				new String[] {new String(fieldRef.token), new String(field.declaringClass.shortReadableName())},
 				nodeSourceStart(field, fieldRef),
@@ -3935,10 +4186,11 @@
 					nodeSourceEnd(field, nameRef));
 			return;
 		case ProblemReasons.NotVisible :
+		case ProblemReasons.NotAccessible :
 			char[] name = field.readableName();
 			name = CharOperation.lastSegment(name, '.');
 			this.handle(
-				IProblem.NotVisibleField,
+				(field.problemId() == ProblemReasons.NotVisible) ? IProblem.NotVisibleField : IProblem.NotAccessibleField,
 				new String[] {new String(name), new String(field.declaringClass.readableName())},
 				new String[] {new String(name), new String(field.declaringClass.shortReadableName())},
 				nodeSourceStart(field, nameRef),
@@ -4026,9 +4278,10 @@
 					nodeSourceEnd(field, nameRef));
 			return;
 		case ProblemReasons.NotVisible :
+		case ProblemReasons.NotAccessible :
 			fieldName = new String(nameRef.tokens[index]);
 			this.handle(
-				IProblem.NotVisibleField,
+				(field.problemId() == ProblemReasons.NotVisible) ? IProblem.NotVisibleField : IProblem.NotAccessibleField,
 				new String[] {fieldName, new String(field.declaringClass.readableName())},
 				new String[] {fieldName, new String(field.declaringClass.shortReadableName())},
 				nodeSourceStart(field, nameRef),
@@ -4077,6 +4330,20 @@
 			annotation.sourceEnd);
 }
 
+public void nonStaticOrAlienTypeReceiver(MessageSend messageSend, MethodBinding method) {
+	this.handle(
+			IProblem.NonStaticOrAlienTypeReceiver,
+			new String[] {
+					new String(method.declaringClass.readableName()),
+			        new String(method.selector),
+			},
+			new String[] {
+					new String(method.declaringClass.shortReadableName()),
+			        new String(method.selector),
+			},
+			(int) (messageSend.nameSourcePosition >>> 32),
+			(int) messageSend.nameSourcePosition);
+}
 public void invalidMethod(MessageSend messageSend, MethodBinding method, Scope scope) {
 	if (isRecoveredName(messageSend.selector)) return;
 
@@ -4138,7 +4405,8 @@
 			}
 			break;
 		case ProblemReasons.NotVisible :
-			id = IProblem.NotVisibleMethod;
+		case ProblemReasons.NotAccessible :
+			id = (method.problemId() == ProblemReasons.NotVisible) ? IProblem.NotVisibleMethod : IProblem.NotAccessibleMethod;
 			problemMethod = (ProblemMethodBinding) method;
 			if (problemMethod.closestMatch != null) {
 			    shownMethod = problemMethod.closestMatch.original();
@@ -4157,18 +4425,7 @@
 			id = IProblem.StaticMethodRequested;
 			break;
 		case ProblemReasons.NonStaticOrAlienTypeReceiver:
-			this.handle(
-					IProblem.NonStaticOrAlienTypeReceiver,
-					new String[] {
-							new String(method.declaringClass.readableName()),
-					        new String(method.selector),
-					},
-					new String[] {
-							new String(method.declaringClass.shortReadableName()),
-					        new String(method.selector),
-					},
-					(int) (messageSend.nameSourcePosition >>> 32),
-					(int) messageSend.nameSourcePosition);
+			nonStaticOrAlienTypeReceiver(messageSend, method);
 			return;
 		case ProblemReasons.InterfaceMethodInvocationNotBelow18:
 			this.handle(
@@ -4299,7 +4556,6 @@
 			return;
 		case ProblemReasons.InferredApplicableMethodInapplicable:
 		case ProblemReasons.InvocationTypeInferenceFailure:
-			// FIXME(stephan): construct suitable message (https://bugs.eclipse.org/404675)
 			problemMethod = (ProblemMethodBinding) method;
 			shownMethod = problemMethod.closestMatch;
 			if (problemMethod.returnType == shownMethod.returnType) { //$IDENTITY-COMPARISON$
@@ -4311,8 +4567,15 @@
 							new String[] { typeArguments, String.valueOf(shownMethod.original().shortReadableName()) },
 							messageSend.sourceStart,
 							messageSend.sourceEnd);
+				} else {
+					// FIXME(stephan): turn into an exception once we are sure about this 
+					this.handle(IProblem.GenericInferenceError,
+						new String[] { "Unknown error at invocation of "+String.valueOf(shownMethod.readableName())}, //$NON-NLS-1$
+						new String[] { "Unknown error at invocation of "+String.valueOf(shownMethod.shortReadableName())}, //$NON-NLS-1$
+						messageSend.sourceStart,
+						messageSend.sourceEnd);
 				}
-				return; // funnily this can happen in a deeply nested call, because the inner lies by stealing its closest match and the outer does not know so. See GRT1_8.testBug430296
+				return;
 			}
 			TypeBinding shownMethodReturnType = shownMethod.returnType.capture(scope, messageSend.sourceStart, messageSend.sourceEnd);
 			this.handle(
@@ -4494,6 +4757,9 @@
 		case ProblemReasons.NotVisible :
 			id = IProblem.NotVisibleType;
 			break;
+		case ProblemReasons.NotAccessible :
+			id = IProblem.NotAccessibleType;
+			break;
 		case ProblemReasons.Ambiguous :
 			id = IProblem.AmbiguousType;
 			break;
@@ -4713,14 +4979,6 @@
 			annotation.sourceStart,
 			annotation.sourceEnd);
 }
-public void toleratedMisplacedTypeAnnotations(Annotation first, Annotation last) {
-	this.handle(
-			IProblem.ToleratedMisplacedTypeAnnotations,
-			NoArgument,
-			NoArgument,
-			first.sourceStart,
-			last.sourceEnd);	
-}
 public void misplacedTypeAnnotations(Annotation first, Annotation last) {
 	this.handle(
 			IProblem.MisplacedTypeAnnotations,
@@ -4765,15 +5023,15 @@
 		}
 	}
 	try {
-	this.handle(
-		IProblem.IsClassPathCorrect,
-		arguments,
-		arguments,
-		start,
-		end);
+		this.handle(
+				IProblem.IsClassPathCorrect,
+				arguments,
+				arguments,
+				start,
+				end);
 	} finally {
 		this.referenceContext = savedContext;
-}
+	}
 }
 private boolean isIdentifier(int token) {
 	return token == TerminalTokens.TokenNameIdentifier;
@@ -6838,24 +7096,45 @@
 		assignment.sourceEnd);
 }
 public void overridesDeprecatedMethod(MethodBinding localMethod, MethodBinding inheritedMethod) {
-	this.handle(
-		IProblem.OverridingDeprecatedMethod,
-		new String[] {
-			new String(
-					CharOperation.concat(
-						localMethod.declaringClass.readableName(),
-						localMethod.readableName(),
-						'.')),
-			new String(inheritedMethod.declaringClass.readableName())},
-		new String[] {
-			new String(
-					CharOperation.concat(
-						localMethod.declaringClass.shortReadableName(),
-						localMethod.shortReadableName(),
-						'.')),
-			new String(inheritedMethod.declaringClass.shortReadableName())},
-		localMethod.sourceStart(),
-		localMethod.sourceEnd());
+	String localMethodName = new String(
+								CharOperation.concat(
+									localMethod.declaringClass.readableName(),
+									localMethod.readableName(),
+									'.'));
+	String localMethodShortName = new String(
+									CharOperation.concat(
+										localMethod.declaringClass.shortReadableName(),
+										localMethod.shortReadableName(),
+										'.'));
+	String sinceValue = deprecatedSinceValue(() -> inheritedMethod.getAnnotations());
+	if (sinceValue != null) {
+		this.handle(
+			(inheritedMethod.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0
+				? IProblem.OverridingTerminallyDeprecatedSinceVersionMethod : IProblem.OverridingDeprecatedSinceVersionMethod,
+			new String[] {
+				localMethodName,
+				new String(inheritedMethod.declaringClass.readableName()),
+				sinceValue},
+			new String[] {
+				localMethodShortName,
+				new String(inheritedMethod.declaringClass.shortReadableName()),
+				sinceValue},
+			localMethod.sourceStart(),
+			localMethod.sourceEnd());
+		
+	} else {
+		this.handle(
+			(inheritedMethod.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0
+				? IProblem.OverridingTerminallyDeprecatedMethod : IProblem.OverridingDeprecatedMethod,
+			new String[] {
+				localMethodName,
+				new String(inheritedMethod.declaringClass.readableName())},
+			new String[] {
+				localMethodShortName,
+				new String(inheritedMethod.declaringClass.shortReadableName())},
+			localMethod.sourceStart(),
+			localMethod.sourceEnd());
+	}
 }
 public void overridesMethodWithoutSuperInvocation(MethodBinding localMethod) {
 	this.handle(
@@ -7438,7 +7717,7 @@
 public void reset() {
 	this.positionScanner = null;
 }
-public void resourceHasToImplementAutoCloseable(TypeBinding binding, TypeReference typeReference) {
+public void resourceHasToImplementAutoCloseable(TypeBinding binding, ASTNode reference) {
 	if (this.options.sourceLevel < ClassFileConstants.JDK1_7) {
 		return; // Not supported in 1.7 would have been reported. Hence another not required
 	}
@@ -7446,8 +7725,8 @@
 			IProblem.ResourceHasToImplementAutoCloseable,
 			new String[] {new String(binding.readableName())},
 			new String[] {new String(binding.shortReadableName())},
-			typeReference.sourceStart,
-			typeReference.sourceEnd);
+			reference.sourceStart,
+			reference.sourceEnd);
 }
 private int retrieveClosingAngleBracketPosition(int start) {
 	if (this.referenceContext == null) return start;
@@ -8200,16 +8479,23 @@
 		sourceEnd);
 }
 public void unhandledExceptionFromAutoClose (TypeBinding exceptionType, ASTNode location) {
-	LocalVariableBinding localBinding = ((LocalDeclaration)location).binding;
-	if (localBinding != null) {
+	Binding binding = null;
+	if (location instanceof LocalDeclaration) {
+		binding = ((LocalDeclaration)location).binding;
+	} else if (location instanceof  NameReference) {
+		binding = ((NameReference) location).binding;
+	} else if (location instanceof FieldReference) {
+		binding = ((FieldReference) location).binding;
+	}
+	if (binding != null) {
 		this.handle(
 			IProblem.UnhandledExceptionOnAutoClose,
 			new String[] {
 					new String(exceptionType.readableName()),
-					new String(localBinding.readableName())},
+					new String(binding.readableName())},
 			new String[] {
 					new String(exceptionType.shortReadableName()),
-					new String(localBinding.shortReadableName())},
+					new String(binding.shortReadableName())},
 			location.sourceStart,
 			location.sourceEnd);
 	}
@@ -8235,7 +8521,7 @@
 public void uninitializedNonNullField(FieldBinding field, ASTNode location) {
 	char[][] nonNullAnnotationName = this.options.nonNullAnnotationName;
 	if(!field.isNonNull()) {
-	String[] arguments = new String[] {
+		String[] arguments = new String[] {
 				new String(field.readableName()), 
 				new String(field.type.readableName()), 
 				new String(nonNullAnnotationName[nonNullAnnotationName.length-1])
@@ -8991,8 +9277,8 @@
 		sourceStart,
 		sourceEnd);
 }
-public void illegalUseOfUnderscoreAsAnIdentifier(int sourceStart, int sourceEnd, boolean lambdaParameter) {
-	this.underScoreIsLambdaParameter = lambdaParameter;
+public void illegalUseOfUnderscoreAsAnIdentifier(int sourceStart, int sourceEnd, boolean reportError) {
+	this.underScoreIsError = reportError;
 	try {
 		this.handle(
 			IProblem.IllegalUseOfUnderscoreAsAnIdentifier,
@@ -9001,7 +9287,7 @@
 			sourceStart,
 			sourceEnd);
 	} finally {
-		this.underScoreIsLambdaParameter = false;	
+		this.underScoreIsError = false;	
 	}
 }
 public void varargsArgumentNeedCast(MethodBinding method, TypeBinding argumentType, InvocationSite location) {
@@ -9107,6 +9393,103 @@
 		varDecl.sourceStart,
 		varDecl.sourceEnd);
 }
+public void varLocalMultipleDeclarators(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalMultipleDeclarators,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalCannotBeArray(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalCannotBeArray,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalReferencesItself(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalReferencesItself,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalWithoutInitizalier(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalWithoutInitizalier,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalInitializedToNull(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalInitializedToNull,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalInitializedToVoid(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalInitializedToVoid,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalCannotBeArrayInitalizers(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalCannotBeArrayInitalizers,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalCannotBeLambda(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalCannotBeLambda,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varLocalCannotBeMethodReference(AbstractVariableDeclaration varDecl) {
+	this.handle(
+		IProblem.VarLocalCannotBeMethodReference,
+		NoArgument,
+		NoArgument,
+		varDecl.sourceStart,
+		varDecl.sourceEnd);
+}
+public void varIsReservedTypeName(TypeDeclaration decl) {
+	this.handle(
+		IProblem.VarIsReserved,
+		NoArgument,
+		NoArgument,
+		decl.sourceStart,
+		decl.sourceEnd);
+}
+public void varIsReservedTypeNameInFuture(ASTNode decl) {
+	this.handle(
+		IProblem.VarIsReservedInFuture,
+		NoArgument,
+		NoArgument,
+		ProblemSeverities.Warning,
+		decl.sourceStart,
+		decl.sourceEnd);
+}
+public void varIsNotAllowedHere(ASTNode astNode) {
+	this.handle(
+		IProblem.VarIsNotAllowedHere,
+		NoArgument,
+		NoArgument,
+		astNode.sourceStart,
+		astNode.sourceEnd);
+}
 public void variableTypeCannotBeVoidArray(AbstractVariableDeclaration varDecl) {
 	this.handle(
 		IProblem.CannotAllocateVoidArray,
@@ -9225,13 +9608,25 @@
 		typeRef.sourceEnd);
 }
 
-public void autoManagedResourcesNotBelow17(LocalDeclaration[] resources) {
+public void autoManagedResourcesNotBelow17(Statement[] resources) {
+	Statement stmt0 = resources[0];
+	Statement stmtn = resources[resources.length - 1];
+	int sourceStart = stmt0 instanceof LocalDeclaration ? ((LocalDeclaration) stmt0).declarationSourceStart : stmt0.sourceStart;
+	int sourceEnd = stmtn instanceof LocalDeclaration ? ((LocalDeclaration) stmtn).declarationSourceEnd : stmtn.sourceEnd;
 	this.handle(
 			IProblem.AutoManagedResourceNotBelow17,
 			NoArgument,
 			NoArgument,
-			resources[0].declarationSourceStart,
-			resources[resources.length - 1].declarationSourceEnd);
+			sourceStart,
+			sourceEnd);
+}
+public void autoManagedVariableResourcesNotBelow9(Expression resource) {
+	this.handle(
+			IProblem.AutoManagedVariableResourceNotBelow9,
+			NoArgument,
+			NoArgument,
+			resource.sourceStart,
+			resource.sourceEnd);
 }
 public void cannotInferElidedTypes(AllocationExpression allocationExpression) {
 	String arguments [] = new String [] { allocationExpression.type.toString() };
@@ -9277,6 +9672,14 @@
 }
 // End AspectJ Extension
 
+public void anonymousDiamondWithNonDenotableTypeArguments(TypeReference type, TypeBinding tb) {
+	this.handle(
+			IProblem.NonDenotableTypeArgumentForAnonymousDiamond,
+			new String[]{new String(tb.leafComponentType().shortReadableName()), type.toString()},
+			new String[]{new String(tb.leafComponentType().shortReadableName()), type.toString()},
+			type.sourceStart, 
+			type.sourceEnd);
+}
 public void redundantSpecificationOfTypeArguments(ASTNode location, TypeBinding[] argumentTypes) {
 	int severity = computeSeverity(IProblem.RedundantSpecificationOfTypeArguments);
 	if (severity != ProblemSeverities.Ignore) {
@@ -9370,7 +9773,7 @@
 				nullityMismatchingTypeAnnotation(expression, providedType, requiredType, NullAnnotationMatching.NULL_ANNOTATIONS_MISMATCH);
 				return;
 			}
-		nullityMismatchPotentiallyNull(expression, requiredType, annotationName);
+			nullityMismatchPotentiallyNull(expression, requiredType, annotationName);
 		return;
 	}
 	if (this.options.usesNullTypeAnnotations())
@@ -9553,7 +9956,7 @@
 	}
 	TypeBinding inheritedReturnType = inheritedMethod.returnType;
 	int problemId = IProblem.IllegalReturnNullityRedefinition;
-		StringBuilder returnType = new StringBuilder();
+	StringBuilder returnType = new StringBuilder();
 	StringBuilder returnTypeShort = new StringBuilder();
 	if (this.options.usesNullTypeAnnotations()) {
 		// 1.8+
@@ -9580,8 +9983,8 @@
 			problemId, 
 			arguments,
 			argumentsShort,
-		sourceStart,
-		methodDecl.returnType.sourceEnd);
+			sourceStart,
+			methodDecl.returnType.sourceEnd);
 }
 public void referenceExpressionArgumentNullityMismatch(ReferenceExpression location, TypeBinding requiredType, TypeBinding providedType,
 		MethodBinding descriptorMethod, int idx, NullAnnotationMatching status) {
@@ -9597,11 +10000,11 @@
 		.append(descriptorMethod.shortReadableName());
 	this.handle(
 			status.isUnchecked() ? IProblem.ReferenceExpressionParameterNullityUnchecked : IProblem.ReferenceExpressionParameterNullityMismatch,
-			new String[] { String.valueOf(idx+1), 
+			new String[] { idx == -1 ? "'this'" : String.valueOf(idx + 1), //$NON-NLS-1$
 							String.valueOf(requiredType.nullAnnotatedReadableName(this.options, false)),
 							String.valueOf(providedType.nullAnnotatedReadableName(this.options, false)),
 							methodSignature.toString() },
-			new String[] { String.valueOf(idx+1), 
+			new String[] { idx == -1 ? "'this'" : String.valueOf(idx + 1), //$NON-NLS-1$
 							String.valueOf(requiredType.nullAnnotatedReadableName(this.options, true)),
 							String.valueOf(providedType.nullAnnotatedReadableName(this.options, true)),
 							shortSignature.toString() },
@@ -9721,6 +10124,8 @@
 }
 
 public void nullDefaultAnnotationIsRedundant(ASTNode location, Annotation[] annotations, Binding outer) {
+	if (outer == Scope.NOT_REDUNDANT)
+		return;
 	Annotation annotation = findAnnotation(annotations, TypeIds.BitNonNullByDefaultAnnotation);
 	int start = annotation != null ? annotation.sourceStart : location.sourceStart;
 	int end = annotation != null ? annotation.sourceEnd : location.sourceStart;
@@ -9731,12 +10136,18 @@
 		shortArgs = new String[] { new String(outer.shortReadableName()) };
 	}
 	int problemId = IProblem.RedundantNullDefaultAnnotation;
-	if (outer instanceof PackageBinding) {
+	if (outer instanceof ModuleBinding) {
+		problemId = IProblem.RedundantNullDefaultAnnotationModule;
+	} else if (outer instanceof PackageBinding) {
 		problemId = IProblem.RedundantNullDefaultAnnotationPackage;
 	} else if (outer instanceof ReferenceBinding) {
 		problemId = IProblem.RedundantNullDefaultAnnotationType;
 	} else if (outer instanceof MethodBinding) {
 		problemId = IProblem.RedundantNullDefaultAnnotationMethod;
+	} else if (outer instanceof LocalVariableBinding) {
+		problemId = IProblem.RedundantNullDefaultAnnotationLocal;
+	} else if (outer instanceof FieldBinding) {
+		problemId = IProblem.RedundantNullDefaultAnnotationField;
 	}
 	this.handle(problemId, args, shortArgs, start, end);
 }
@@ -9913,7 +10324,7 @@
 	if (annotations != null) {
 		// should have a @NonNull/@Nullable annotation, search for it:
 		int length = annotations.length;
-		for (int j=0; j<length; j++) {
+		for (int j = length - 1; j >= 0; j--) {
 			if (annotations[j].hasNullBit(typeBit)) {
 				return annotations[j];
 			}
@@ -9996,7 +10407,7 @@
 		nullityMismatchPotentiallyNull(expression, requiredType, this.options.nonNullAnnotationName);
 		return;
 	}
-	String[] arguments ;
+	String[] arguments;
 	String[] shortArguments;
 		
 	int problemId = 0;
@@ -10099,7 +10510,7 @@
 
 		char[][] nonNullName = this.options.nonNullAnnotationName;
 		String shortNonNullName = String.valueOf(nonNullName[nonNullName.length-1]);
-
+		
 		if (typeVariable.declaringElement instanceof ReferenceBinding) {
 			String[] arguments = new String[] {
 					shortNonNullName,
@@ -10500,4 +10911,116 @@
 			typeReference[0].sourceStart,
 			typeReference[typeReference.length - 1].sourceEnd);
 }
+public void invalidModule(ModuleReference ref) {
+	this.handle(IProblem.UndefinedModule, 
+		NoArgument, new String[] { CharOperation.charToString(ref.moduleName) },
+		ref.sourceStart, ref.sourceEnd);
+}
+public void invalidOpensStatement(OpensStatement statement, ModuleDeclaration module) {
+	this.handle(IProblem.InvalidOpensStatement,
+		NoArgument, new String[] { CharOperation.charToString(module.moduleName) },
+		statement.declarationSourceStart, statement.declarationSourceEnd);
+}
+public void invalidPackageReference(int problem, PackageVisibilityStatement ref) {
+	invalidPackageReference(problem, ref, ProblemSeverities.Error);
+}
+public void invalidPackageReference(int problem, PackageVisibilityStatement ref, int severity) {
+	this.handle(problem, NoArgument, 0, new String[] { CharOperation.charToString(ref.pkgName) }, severity,
+		ref.pkgRef.sourceStart, ref.pkgRef.sourceEnd, this.referenceContext,
+		this.referenceContext == null ? null : this.referenceContext.compilationResult());
+}
+public void duplicateModuleReference(int problem, ModuleReference ref) {
+	this.handle(problem, 
+		NoArgument, new String[] { CharOperation.charToString(ref.moduleName) },
+		ref.sourceStart, ref.sourceEnd);
+}
+public void duplicateTypeReference(int problem, TypeReference ref) {
+	this.handle(problem, 
+		NoArgument, new String[] { ref.toString() },
+		ref.sourceStart, ref.sourceEnd);
+}
+public void duplicateTypeReference(int problem, TypeReference ref1, TypeReference ref2) {
+	this.handle(problem, 
+		NoArgument, new String[] { ref1.toString(), ref2.toString() },
+		ref1.sourceStart, ref2.sourceEnd);
+}
+public void duplicateResourceReference(Reference ref) {
+	this.handle(IProblem.DuplicateResource, 
+		NoArgument, new String[] {ref.toString() },
+		ProblemSeverities.Warning,
+		ref.sourceStart, ref.sourceEnd);
+}
+public void cyclicModuleDependency(ModuleBinding binding, ModuleReference ref) {
+	this.handle(IProblem.CyclicModuleDependency, 
+		NoArgument, new String[] { CharOperation.charToString(binding.moduleName), CharOperation.charToString(ref.moduleName) },
+		ref.sourceStart, ref.sourceEnd);
+}
+public void invalidServiceRef(int problem, TypeReference type) {
+	this.handle(problem,
+		NoArgument, new String[] { CharOperation.charToString(type.resolvedType.readableName()) },
+		type.sourceStart, type.sourceEnd);
+}
+
+public void unlikelyArgumentType(Expression argument, MethodBinding method, TypeBinding argumentType,
+							TypeBinding receiverType, DangerousMethod dangerousMethod)
+{
+	this.handle(
+			dangerousMethod == DangerousMethod.Equals ? IProblem.UnlikelyEqualsArgumentType : IProblem.UnlikelyCollectionMethodArgumentType,
+			new String[] {
+				new String(argumentType.readableName()),
+				new String(method.readableName()),
+				new String(receiverType.readableName())
+			}, 
+			new String[] {
+				new String(argumentType.shortReadableName()),
+				new String(method.shortReadableName()),
+				new String(receiverType.shortReadableName())
+			}, 
+			argument.sourceStart, 
+			argument.sourceEnd);
+}
+
+public void nonPublicTypeInAPI(TypeBinding type, int sourceStart, int sourceEnd) {
+	handle(IProblem.NonPublicTypeInAPI,
+			new String[] { new String(type.readableName()) },
+			new String[] { new String(type.shortReadableName()) },
+			sourceStart,
+			sourceEnd);
+}
+
+public void notExportedTypeInAPI(TypeBinding type, int sourceStart, int sourceEnd) {
+	handle(IProblem.NotExportedTypeInAPI,
+			new String[] { new String(type.readableName()) },
+			new String[] { new String(type.shortReadableName()) },
+			sourceStart,
+			sourceEnd);
+}
+
+public void missingRequiresTransitiveForTypeInAPI(ReferenceBinding referenceBinding, int sourceStart, int sourceEnd) {
+	String moduleName = new String(referenceBinding.fPackage.enclosingModule.readableName());
+	handle(IProblem.MissingRequiresTransitiveForTypeInAPI,
+			new String[] { new String(referenceBinding.readableName()), moduleName },
+			new String[] { new String(referenceBinding.shortReadableName()), moduleName },
+			sourceStart,
+			sourceEnd);
+}
+
+public void unnamedPackageInNamedModule(ModuleBinding module) {
+	String[] args = { new String(module.readableName()) };
+	handle(IProblem.UnnamedPackageInNamedModule,
+			args,
+			args,
+			ProblemSeverities.Warning,
+			0,
+			0);
+}
+
+public void autoModuleWithUnstableName(ModuleReference moduleReference) {
+	String[] args = { new String(moduleReference.moduleName) };
+	handle(IProblem.UnstableAutoModuleName,
+			args,
+			args,
+			moduleReference.sourceStart,
+			moduleReference.sourceEnd);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
index d07d1ee..d1220d9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/problem/messages.properties
@@ -1,10 +1,10 @@
 ###############################################################################
-# Copyright (c) 2000, 2016 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
 # http://www.eclipse.org/legal/epl-v10.html
-#
+# 
 #
 # Contributors:
 #     IBM Corporation - initial API and implementation
@@ -42,12 +42,14 @@
 #							Bug 439516 - [1.8][null] NonNullByDefault wrongly applied to implicit type bound of binary type
 #							Bug 438467 - [compiler][null] Better error position for "The method _ cannot implement the corresponding method _ due to incompatible nullness constraints"
 #							Bug 458361 - [1.8][null] reconciler throws NPE in ProblemReporter.illegalReturnRedefinition()
+#							Bug 410218 - Optional warning for arguments of "unexpected" types to Map#get(Object), Collection#remove(Object) et al.
 #		Jesper S Moller <jesper@selskabet.org> - Contributions for
 #							bug 382701 - [1.8][compiler] Implement semantic analysis of Lambda expressions & Reference expression
 #							bug 384567 - [1.5][compiler] Compiler accepts illegal modifiers on package declaration
 #							Bug 412153 - [1.8][compiler] Check validity of annotations which may be repeatable
 #							Bug 412151 - [1.8][compiler] Check repeating annotation's collection type
 #							Bug 419209 - [1.8] Repeating container annotations should be rejected in the presence of annotation it contains
+#							Bug 527554 - [18.3] Compiler support for JEP 286 Local-Variable Type
 ###############################################################################
 0 = {0}
 1 = super cannot be used in java.lang.Object
@@ -665,6 +667,7 @@
 666 = Syntax error, type annotations are illegal here
 667 = Super method references to interface default methods are allowed only at source level 1.8 or above
 668 = References to interface static methods are allowed only at source level 1.8 or above
+669 = Field {0} must be final
 
 ### NULL ANALYSIS FOR OTHER EXPRESSIONS
 670 = Null comparison always yields false: this expression cannot be null
@@ -812,6 +815,8 @@
 940 = Conflict between inherited null annotations ''@{0}'' declared in {1} versus ''@{2}'' declared in {3} 
 941 = Redundant null check: The field {0} cannot be null at this location (ignoring concurrency)
 942 = Null comparison always yields false: The field {0} cannot be null at this location (ignoring concurrency)
+943 = Nullness default is redundant with a default specified for the enclosing module {0}
+
 
 951 = Potential null pointer access: array element may be null
 952 = Potential null pointer access: this expression has a ''@{0}'' type
@@ -845,6 +850,7 @@
 980 = Unsafe interpretation of method return type as ''@{0}'' based on the receiver type ''{1}''. Type ''{2}'' doesn''t seem to be designed with null type annotations in mind
 981 = Unsafe interpretation of method return type as ''@{0}'' based on substitution ''{1}={2}''. Declaring type ''{3}'' doesn''t seem to be designed with null type annotations in mind
 
+
 # Java 8
 1001 = Syntax error, modifiers and annotations are not allowed for the lambda parameter {0} as its type is elided
 1002 = Syntax error, modifiers are not allowed here
@@ -864,10 +870,102 @@
 1059 = Cannot infer type argument(s) for <{0}> {1}
 1060 = Illegally placed annotation: type annotations must directly precede the simple name of the type they are meant to affect (or the [] for arrays)
 1061 = The nullness annotation ''{0}'' is not applicable at this location, it must be placed directly before the nested type name.
+1062 = Nullness default is redundant with a default specified for the variable {0}
+1063 = Nullness default is redundant with a default specified for the field {0}
+
+1070 = Illegal combination of modifiers for the private interface method {0}; additionally only one of static and strictfp is permitted
+1071 = Illegal modifier for the interface method {0}; only public, private, abstract, default, static and strictfp are permitted
 
 1100 = Problem detected during type inference: {0}
 #1101 is already used up but deprecated
 1102 = At least one of the problems in category ''{0}'' is not analysed due to a compiler option being ignored
+
+# more programming problems:
+1200 = Unlikely argument type {0} for {1} on a {2}
+1201 = Unlikely argument type for equals(): {0} seems to be unrelated to {2}
+
+### Autoclosable try
+1251 = Duplicate resource reference {0}
+
+# Java9 - Module declaration related
+1300 = {0} cannot be resolved to a module
+1301 = Duplicate requires entry: {0}
+1302 = Duplicate exports entry: {0}
+1303 = Duplicate uses entry: {0}
+1304 = Duplicate service entry: {0}
+1305 = Cycle exists in module dependencies, Module {0} requires itself via {1}
+1306 = Invalid service implementation, the type {0} is abstract
+1307 = The service implementation {0} must define a public static provider method or a no-arg constructor
+1308 = The no-arg constructor of service implementation {0} is not public
+1309 = Invalid service implementation, the type {0} is an inner class
+1310 = Service implementation {0} is not defined in the module with the provides directive
+1311 = The package {0} does not exist or is empty
+1312 = Type {0} inferred for {1}, is not valid for an anonymous class with ''<>''
+1313 = Duplicate opens entry: {0}
+1314 = Duplicate module name: {0}
+1315 = opens statement is not allowed, as module {0} is declared open
+1316 = Invalid service interface {0}, must be a class, interface or annotation type
+1317 = Invalid service implementation {0}, must be a public class or interface type
+1318 = Illegal modifier for module {0}; only open is permitted
+
+#### Java 9
+1351 = Variable resource not allowed here for source level below 9
+
+# Java 9 - advanced deprecation
+1400 = The type {0} has been deprecated and marked for removal
+1401 = The method {1}({2}) from the type {0} has been deprecated and marked for removal
+1402 = The constructor {0}({1}) has been deprecated and marked for removal
+1403 = The field {0}.{1} has been deprecated and marked for removal
+1404 = The method {0} overrides a method from {1} that has been deprecated and marked for removal
+
+1405 = The type {0} is deprecated since version {1}
+1406 = The method {1}({2}) from the type {0} is deprecated since version {3}
+1407 = The constructor {0}({1}) is deprecated since version {2}
+1408 = The field {0}.{1} is deprecated since version {2}
+1409 = The method {0} overrides a method from {1} that is deprecated since version {2}
+
+1410 = The type {0} has been deprecated since version {1} and marked for removal
+1411 = The method {1}({2}) from the type {0} has been deprecated since version {3} and marked for removal
+1412 = The constructor {0}({1}) has been deprecated since version {2} and marked for removal
+1413 = The field {0}.{1} has been deprecated since version {2} and marked for removal
+1414 = The method {0} overrides a method from {1} that has been deprecated since version {2} and marked for removal
+
+1425 = The package {0} is deprecated
+1426 = The package {0} is deprecated since version {1}
+1427 = The package {0} has been deprecated and marked for removal
+1428 = The package {0} has been deprecated since version {1} and marked for removal
+1429 = The module {0} is deprecated
+1430 = The module {0} is deprecated since version {1}
+1431 = The module {0} has been deprecated and marked for removal
+1432 = The module {0} has been deprecated since version {1} and marked for removal
+
+1450 = The type {0} is not accessible
+1451 = The field {1}.{0} is not accessible
+1452 = The method {1}({2}) from the type {0} is not accessible
+1453 = The constructor {0}({1}) is not accessible
+1454 = The package {0} is not accessible
+1455 = The package {0} is accessible from more than one module: {1}
+1456 = The package {0} conflicts with a package accessible from another module: {1}
+1457 = The type {0} is not accessible to clients that require this module
+1458 = The type {0} is not exported from this module
+1459 = The type {0} from module {1} may not be accessible to clients due to missing ''requires transitive''
+1460 = Must declare a named package because this compilation unit is associated to the named module ''{0}''
+1461 = Name of automatic module ''{0}'' is unstable, it is derived from the module''s file name.
+
+# Local-Variable Type Inference
+1500 = ''var'' is not allowed in a compound declaration
+1501 = ''var'' is not allowed as an element type of an array
+1502 = Declaration using ''var'' may not contain references to itself
+1503 = Cannot use ''var'' on variable without initializer
+1504 = Cannot infer type for local variable initialized to ''null''
+1505 = Variable initializer is ''void'' -- cannot infer variable type
+1506 = Array initializer needs an explicit target-type
+1507 = Lambda expression needs an explicit target-type
+1508 = Method reference needs an explicit target-type
+1509 = ''var'' is not a valid type name
+1510 = ''var'' should not be used as an type name, since it is a reserved word from source level 10 on
+1511 = ''var'' is not allowed here
+
 ### ELABORATIONS
 ## Access restrictions
 78592 = The type ''{1}'' is not API (restriction on classpath entry ''{0}'')
@@ -881,4 +979,4 @@
 78602 = The constructor ''{1}'' is not API (restriction on required library ''{0}'')
 78604 = The method ''{2}.{1}'' is not API (restriction on classpath entry ''{0}'')
 78606 = The method ''{2}.{1}'' is not API (restriction on required library ''{0}'')
-78605 = The method ''{2}.{1}'' is not API (restriction on required project ''{0}'')
\ No newline at end of file
+78605 = The method ''{2}.{1}'' is not API (restriction on required project ''{0}'')
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.java
index b38c6e7..47f9958 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/CompoundNameVector.java
@@ -61,6 +61,7 @@
 		this.elements[i] = null;
 	this.size = 0;
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	for (int i = 0; i < this.size; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.java
index 27f1b0f..44b46c2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/GenericXMLWriter.java
@@ -99,6 +99,7 @@
 			Map.Entry[] entries = new Map.Entry[length];
 			parameters.entrySet().toArray(entries);
 			Arrays.sort(entries, new Comparator() {
+				@Override
 				public int compare(Object o1, Object o2) {
 					Map.Entry entry1 = (Map.Entry) o1;
 					Map.Entry entry2 = (Map.Entry) o2;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.java
index fb22ba1..07c0699 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashSetOfInt.java
@@ -35,6 +35,7 @@
 		this.set = new int[extraRoom];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashSetOfInt result = (HashSetOfInt) super.clone();
 		result.elementSize = this.elementSize;
@@ -115,6 +116,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		int element;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.java
index 6be54a2..6a3ed08 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInt.java
@@ -87,6 +87,7 @@
 public int size() {
 	return this.elementSize;
 }
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	Object object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.java
index ce4d3a1..75438d5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfIntValues.java
@@ -41,6 +41,7 @@
 		this.valueTable = new int[extraRoom];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashtableOfIntValues result = (HashtableOfIntValues) super.clone();
 		result.elementSize = this.elementSize;
@@ -145,6 +146,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		String s = ""; //$NON-NLS-1$
 		char[] key;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.java
new file mode 100644
index 0000000..86662bf
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfInteger.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.util;
+
+/**
+  *	Hashtable for Integer keys.
+  */
+
+public final class HashtableOfInteger {
+
+	// to avoid using Enumerations, walk the individual tables skipping nulls
+	public Integer keyTable[];
+	public Object valueTable[];
+
+	public int elementSize; // number of elements in the table
+	int threshold;
+
+	public HashtableOfInteger() {
+		this(13);
+	}
+
+	public HashtableOfInteger(int size) {
+
+		this.elementSize = 0;
+		this.threshold = size; // size represents the expected number of elements
+		int extraRoom = (int) (size * 1.75f);
+		if (this.threshold == extraRoom)
+			extraRoom++;
+		this.keyTable = new Integer[extraRoom];
+		this.valueTable = new Object[extraRoom];
+	}
+
+	public void clear() {
+		for (int i = this.keyTable.length; --i >= 0;) {
+			this.keyTable[i] = null;
+			this.valueTable[i] = null;
+		}
+		this.elementSize = 0;
+	}
+
+	@Override
+	public Object clone() throws CloneNotSupportedException {
+		HashtableOfInteger result = (HashtableOfInteger) super.clone();
+		result.elementSize = this.elementSize;
+		result.threshold = this.threshold;
+
+		int length = this.keyTable.length;
+		result.keyTable = new Integer[length];
+		System.arraycopy(this.keyTable, 0, result.keyTable, 0, length);
+
+		length = this.valueTable.length;
+		result.valueTable = new Object[length];
+		System.arraycopy(this.valueTable, 0, result.valueTable, 0, length);
+		return result;
+	}
+
+	public boolean containsKey(int key) {
+		Integer intKey = Integer.valueOf(key);
+		int length = this.keyTable.length,
+			index = intKey.hashCode() % length;
+		Integer currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.equals(intKey))
+				return true;
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		return false;
+	}
+
+	public Object get(int key) {
+		Integer intKey = Integer.valueOf(key);
+		int length = this.keyTable.length,
+			index = intKey.hashCode() % length;
+		Integer currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.equals(intKey))
+				return this.valueTable[index];
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		return null;
+	}
+
+	public Object put(int key, Object value) {
+		Integer intKey = Integer.valueOf(key);
+		int length = this.keyTable.length,
+			index = intKey.hashCode() % length;
+		Integer currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.equals(intKey))
+				return this.valueTable[index] = value;
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		this.keyTable[index] = intKey;
+		this.valueTable[index] = value;
+
+		// assumes the threshold is never equal to the size of the table
+		if (++this.elementSize > this.threshold)
+			rehash();
+		return value;
+	}
+
+	/**
+	 * Put a value at the index of the given using the local hash code computation.
+	 * <p>
+	 * Note that this is an unsafe put as there's no prior verification whether
+	 * the given key already exists in the table or not.
+	 * </p>
+	 * @param key The key of the table entry
+	 * @param value The value of the table entry
+	 */
+	public void putUnsafely(int key, Object value) {
+		Integer intKey = Integer.valueOf(key);
+		int length = this.keyTable.length,
+			index = intKey.hashCode() % length;
+		while (this.keyTable[index] != null) {
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		this.keyTable[index] = intKey;
+		this.valueTable[index] = value;
+	
+		// assumes the threshold is never equal to the size of the table
+		if (++this.elementSize > this.threshold) {
+			rehash();
+		}
+	}
+
+	public Object removeKey(int key) {
+		Integer intKey = Integer.valueOf(key);
+		int length = this.keyTable.length,
+			index = intKey.hashCode() % length;
+		Integer currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.equals(intKey)) {
+				Object value = this.valueTable[index];
+				this.elementSize--;
+				this.keyTable[index] = null;
+				this.valueTable[index] = null;
+				rehash();
+				return value;
+			}
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		return null;
+	}
+
+	private void rehash() {
+
+		HashtableOfInteger newHashtable = new HashtableOfInteger(this.elementSize * 2);		// double the number of expected elements
+		Integer currentKey;
+		for (int i = this.keyTable.length; --i >= 0;)
+			if ((currentKey = this.keyTable[i]) != null)
+				newHashtable.putUnsafely(currentKey, this.valueTable[i]);
+
+		this.keyTable = newHashtable.keyTable;
+		this.valueTable = newHashtable.valueTable;
+		this.threshold = newHashtable.threshold;
+	}
+
+	public int size() {
+		return this.elementSize;
+	}
+
+	@Override
+	public String toString() {
+		String s = ""; //$NON-NLS-1$
+		Object object;
+		for (int i = 0, length = this.valueTable.length; i < length; i++)
+			if ((object = this.valueTable[i]) != null)
+				s += this.keyTable[i] + " -> " + object.toString() + "\n"; 	//$NON-NLS-2$ //$NON-NLS-1$
+		return s;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.java
index 5ae71c1..5e2e01b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfLong.java
@@ -90,6 +90,7 @@
 public int size() {
 	return this.elementSize;
 }
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	Object object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.java
new file mode 100644
index 0000000..b8214ed
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfModule.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.util;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+
+public final class HashtableOfModule {
+	// to avoid using Enumerations, walk the individual tables skipping nulls
+	public char[] keyTable[];
+	public ModuleBinding valueTable[];
+
+	public int elementSize; // number of elements in the table
+	int threshold;
+	public HashtableOfModule() {
+		this(3); // usually not very large
+	}
+	public HashtableOfModule(int size) {
+		this.elementSize = 0;
+		this.threshold = size; // size represents the expected number of elements
+		int extraRoom = (int) (size * 1.75f);
+		if (this.threshold == extraRoom)
+			extraRoom++;
+		this.keyTable = new char[extraRoom][];
+		this.valueTable = new ModuleBinding[extraRoom];
+	}
+	public boolean containsKey(char[] key) {
+		int length = this.keyTable.length,
+				index = CharOperation.hashCode(key) % length;
+		int keyLength = key.length;
+		char[] currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+				return true;
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		return false;
+	}
+	public ModuleBinding get(char[] key) {
+		int length = this.keyTable.length,
+				index = CharOperation.hashCode(key) % length;
+		int keyLength = key.length;
+		char[] currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+				return this.valueTable[index];
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		return null;
+	}
+	public ModuleBinding put(char[] key, ModuleBinding value) {
+		int length = this.keyTable.length,
+				index = CharOperation.hashCode(key) % length;
+		int keyLength = key.length;
+		char[] currentKey;
+		while ((currentKey = this.keyTable[index]) != null) {
+			if (currentKey.length == keyLength && CharOperation.equals(currentKey, key))
+				return this.valueTable[index] = value;
+			if (++index == length) {
+				index = 0;
+			}
+		}
+		this.keyTable[index] = key;
+		this.valueTable[index] = value;
+
+		// assumes the threshold is never equal to the size of the table
+		if (++this.elementSize > this.threshold)
+			rehash();
+		return value;
+	}
+	private void rehash() {
+		HashtableOfModule newHashtable = new HashtableOfModule(this.elementSize * 2); // double the number of expected elements
+		char[] currentKey;
+		for (int i = this.keyTable.length; --i >= 0;)
+			if ((currentKey = this.keyTable[i]) != null)
+				newHashtable.put(currentKey, this.valueTable[i]);
+
+		this.keyTable = newHashtable.keyTable;
+		this.valueTable = newHashtable.valueTable;
+		this.threshold = newHashtable.threshold;
+	}
+	public int size() {
+		return this.elementSize;
+	}
+	@Override
+	public String toString() {
+		String s = ""; //$NON-NLS-1$
+		ModuleBinding pkg;
+		for (int i = 0, length = this.valueTable.length; i < length; i++)
+			if ((pkg = this.valueTable[i]) != null)
+				s += pkg.toString() + "\n"; //$NON-NLS-1$
+		return s;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
index 73fa473..a7430bf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObject.java
@@ -47,6 +47,7 @@
 		this.elementSize = 0;
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashtableOfObject result = (HashtableOfObject) super.clone();
 		result.elementSize = this.elementSize;
@@ -177,6 +178,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		String s = ""; //$NON-NLS-1$
 		Object object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.java
index 89cecbd..a5a1d71 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToInt.java
@@ -37,6 +37,7 @@
 		this.valueTable = new int[extraRoom];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashtableOfObjectToInt result = (HashtableOfObjectToInt) super.clone();
 		result.elementSize = this.elementSize;
@@ -144,6 +145,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		String s = ""; //$NON-NLS-1$
 		Object key;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.java
index c83018a..7c68b91 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfObjectToIntArray.java
@@ -37,6 +37,7 @@
 		this.valueTable = new int[extraRoom][];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashtableOfObjectToIntArray result = (HashtableOfObjectToIntArray) super.clone();
 		result.elementSize = this.elementSize;
@@ -144,6 +145,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		Object key;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.java
index 7c06a26..5a7479c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfPackage.java
@@ -94,6 +94,7 @@
 public int size() {
 	return this.elementSize;
 }
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	PackageBinding pkg;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.java
index e4d5b09..47bac61 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/HashtableOfType.java
@@ -119,6 +119,7 @@
 public int size() {
 	return this.elementSize;
 }
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	ReferenceBinding type;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.java
new file mode 100644
index 0000000..a740c20
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/JRTUtil.java
@@ -0,0 +1,458 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2017 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.compiler.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.channels.ClosedByInterruptException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.FileVisitor;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+
+public class JRTUtil {
+
+	public static final String JAVA_BASE = "java.base"; //$NON-NLS-1$
+	public static final char[] JAVA_BASE_CHAR = JAVA_BASE.toCharArray();
+	static final String MODULES_SUBDIR = "/modules"; //$NON-NLS-1$
+	static final String[] DEFAULT_MODULE = new String[]{JAVA_BASE};
+	static final String[] NO_MODULE = new String[0];
+	static final String MULTIPLE = "MU"; //$NON-NLS-1$
+	static final String DEFAULT_PACKAGE = ""; //$NON-NLS-1$
+	static String MODULE_TO_LOAD = null;
+	public static final String JRT_FS_JAR = "jrt-fs.jar"; //$NON-NLS-1$
+	static URI JRT_URI = URI.create("jrt:/"); //$NON-NLS-1$
+	public static int NOTIFY_FILES = 0x0001;
+	public static int NOTIFY_PACKAGES = 0x0002;
+	public static int NOTIFY_MODULES = 0x0004;
+	public static int NOTIFY_ALL = NOTIFY_FILES | NOTIFY_PACKAGES | NOTIFY_MODULES;
+
+	// TODO: Java 9 Think about clearing the cache too.
+	private static Map<File, JrtFileSystem> images = null;
+
+	private static final Object lock = new Object();
+
+	public interface JrtFileVisitor<T> {
+
+		public FileVisitResult visitPackage(T dir, T mod, BasicFileAttributes attrs) throws IOException;
+
+		public FileVisitResult visitFile(T file, T mod, BasicFileAttributes attrs) throws IOException;
+		/**
+		 * Invoked when a root directory of a module being visited. The element returned 
+		 * contains only the module name segment - e.g. "java.base". Clients can use this to control
+		 * how the JRT needs to be processed, for e.g., clients can skip a particular module
+		 * by returning FileVisitResult.SKIP_SUBTREE
+		 */
+		public FileVisitResult visitModule(T mod) throws IOException;
+	}
+
+	static abstract class AbstractFileVisitor<T> implements FileVisitor<T> {
+		@Override
+		public FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	
+		@Override
+		public FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	
+		@Override
+		public FileVisitResult visitFileFailed(T file, IOException exc) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	
+		@Override
+		public FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	}
+
+	public static JrtFileSystem getJrtSystem(File image) {
+		Map<File, JrtFileSystem> i = images;
+		if (images == null) {
+			synchronized (lock) {
+	            i = images;
+	            if (i == null) {
+	            	images = i = new HashMap<>();
+	            }
+	        }
+		}
+		JrtFileSystem system = null;
+		synchronized(i) {
+			if ((system = images.get(image)) == null) {
+				try {
+					images.put(image, system = new JrtFileSystem(image));
+				} catch (IOException e) {
+					e.printStackTrace();
+					// Needs better error handling downstream? But for now, make sure 
+					// a dummy JrtFileSystem is not created.
+				}
+			}
+		}
+	    return system;
+	}
+
+	/** TEST ONLY (use when changing the "modules.to.load" property). */
+	public static void reset() {
+		images = null;
+		MODULE_TO_LOAD = System.getProperty("modules.to.load"); //$NON-NLS-1$
+	}
+
+	/**
+	 * Given the path of a modular image file, this method walks the archive content and
+	 * notifies the supplied visitor about packages and files visited.
+	 *
+	 * The file system contains the following top level directories:
+	 *  /modules/$MODULE/$PATH
+	 *  /packages/$PACKAGE/$MODULE 
+	 *  The latter provides quick look up of the module that contains a particular package. However,
+	 *  this method only notifies its clients of the entries within the modules sub-directory. The
+	 *  clients can decide which notifications they want to receive. See {@link JRTUtil#NOTIFY_ALL},
+	 *  {@link JRTUtil#NOTIFY_FILES}, {@link JRTUtil#NOTIFY_PACKAGES} and {@link JRTUtil#NOTIFY_MODULES}.
+	 *
+	 * @param image a java.io.File handle to the JRT image.
+	 * @param visitor an instance of JrtFileVisitor to be notified of the entries in the JRT image.
+	 * @param notify flag indicating the notifications the client is interested in.
+	 * @throws IOException
+	 */
+	public static void walkModuleImage(File image, final JRTUtil.JrtFileVisitor<java.nio.file.Path> visitor, int notify) throws IOException {
+		getJrtSystem(image).walkModuleImage(visitor, false, notify);
+	}
+
+	public static InputStream getContentFromJrt(File jrt, String fileName, String module) throws IOException {
+		return getJrtSystem(jrt).getContentFromJrt(fileName, module);
+	}
+	public static byte[] getClassfileContent(File jrt, String fileName, String module) throws IOException, ClassFormatException {
+		return getJrtSystem(jrt).getClassfileContent(fileName, module);
+	}
+	public static ClassFileReader getClassfile(File jrt, String fileName, IModule module) throws IOException, ClassFormatException {
+		return getJrtSystem(jrt).getClassfile(fileName, module);
+	}
+	public static ClassFileReader getClassfile(File jrt, String fileName, String module, Predicate<String> moduleNameFilter) throws IOException, ClassFormatException {
+		return getJrtSystem(jrt).getClassfile(fileName, module, moduleNameFilter);
+	}
+	public static List<String> getModulesDeclaringPackage(File jrt, String qName, String moduleName) {
+		return getJrtSystem(jrt).getModulesDeclaringPackage(qName, moduleName);
+	}
+
+	public static boolean hasCompilationUnit(File jrt, String qualifiedPackageName, String moduleName) {
+		return getJrtSystem(jrt).hasClassFile(qualifiedPackageName, moduleName);
+	}
+	/**
+	 * Tries to read all bytes of the file denoted by path,
+	 * returns null if the file could not be found or if the read was interrupted.
+	 * @param path
+	 * @return bytes or null
+	 * @throws IOException any IO exception other than NoSuchFileException
+	 */
+	public static byte[] safeReadBytes(Path path) throws IOException {
+		try {
+			return Files.readAllBytes(path);
+		} catch(ClosedByInterruptException e) {
+			return null;
+		} catch (NoSuchFileException e) {
+			return null;
+		}
+	}
+}
+class JrtFileSystem {
+	private final Map<String, String> packageToModule = new HashMap<String, String>();
+
+	private final Map<String, List<String>> packageToModules = new HashMap<String, List<String>>();
+
+	FileSystem jrtSystem = null;
+	
+	/**
+	 * The jrt file system is based on the location of the JRE home whose libraries
+	 * need to be loaded.
+	 *
+	 * @param jrt the path to the root of the JRE whose libraries we are interested in.
+	 * @throws IOException 
+	 */
+	public JrtFileSystem(File jrt) throws IOException {
+		initialize(jrt);
+	}
+	void initialize(File jrt) throws IOException {
+		URL jrtPath = null;
+		String jdkHome = null;
+		if (jrt.toString().endsWith(JRTUtil.JRT_FS_JAR)) {
+			jrtPath = jrt.toPath().toUri().toURL();
+			jdkHome = jrt.getParentFile().getParent();
+		} else {
+			jdkHome = jrt.toPath().toString();
+			jrtPath = Paths.get(jdkHome, "lib", JRTUtil.JRT_FS_JAR).toUri().toURL(); //$NON-NLS-1$
+
+		}
+		JRTUtil.MODULE_TO_LOAD = System.getProperty("modules.to.load"); //$NON-NLS-1$
+		String javaVersion = System.getProperty("java.version"); //$NON-NLS-1$
+		if (javaVersion != null && javaVersion.startsWith("1.8")) { //$NON-NLS-1$
+			URLClassLoader loader = new URLClassLoader(new URL[] { jrtPath });
+			HashMap<String, ?> env = new HashMap<>();
+			this.jrtSystem = FileSystems.newFileSystem(JRTUtil.JRT_URI, env, loader);
+		} else {
+			HashMap<String, String> env = new HashMap<>();
+			env.put("java.home", jdkHome); //$NON-NLS-1$
+			this.jrtSystem = FileSystems.newFileSystem(JRTUtil.JRT_URI, env);
+		}
+		walkModuleImage(null, true, 0 /* doesn't matter */);
+	}
+
+	public List<String> getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		qualifiedPackageName = qualifiedPackageName.replace('.', '/');
+		String module = this.packageToModule.get(qualifiedPackageName);
+		if (moduleName == null) {
+			// wildcard search:
+			if (module == null)
+				return null;
+			if (module == JRTUtil.MULTIPLE)
+				return this.packageToModules.get(qualifiedPackageName);
+			return Collections.singletonList(module);
+		}
+		if (module != null) {
+			// specific search:
+			if (module == JRTUtil.MULTIPLE) {
+				List<String> list = this.packageToModules.get(qualifiedPackageName);
+				if (list.contains(moduleName))
+					return Collections.singletonList(moduleName);
+			} else {
+				if (module.equals(moduleName))
+					return Collections.singletonList(moduleName);
+			}
+		}
+		return null;
+	}
+	public String[] getModules(String fileName) {
+		int idx = fileName.lastIndexOf('/');
+		String pack = null;
+		if (idx != -1) {
+			pack = fileName.substring(0, idx);
+		} else {
+			pack = JRTUtil.DEFAULT_PACKAGE;
+		}
+		String module = this.packageToModule.get(pack);
+		if (module != null) {
+			if (module == JRTUtil.MULTIPLE) {
+				List<String> list = this.packageToModules.get(pack);
+				return list.toArray(new String[list.size()]);
+			} else {
+				return new String[]{module};
+			}
+		}
+		return JRTUtil.DEFAULT_MODULE;
+	}
+	public boolean hasClassFile(String qualifiedPackageName, String module) {
+		if (module == null)
+			return false;
+		// easy checks first:
+		String knownModule = this.packageToModule.get(qualifiedPackageName);
+		if (knownModule == null || (knownModule != JRTUtil.MULTIPLE && !knownModule.equals(module)))
+			return false;
+		Path packagePath = this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, module, qualifiedPackageName);
+		if (!Files.exists(packagePath))
+			return false;
+		// iterate files:
+		try {
+			return Files.list(packagePath)
+				.anyMatch(filePath -> filePath.toString().endsWith(SuffixConstants.SUFFIX_STRING_class)
+										|| filePath.toString().endsWith(SuffixConstants.SUFFIX_STRING_CLASS));
+		} catch (IOException e) {
+			return false;
+		}
+	}
+
+	public InputStream getContentFromJrt(String fileName, String module) throws IOException {
+		if (module != null) {
+			return Files.newInputStream(this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, module, fileName));
+		}
+		String[] modules = getModules(fileName);
+		for (String mod : modules) {
+			return Files.newInputStream(this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, mod, fileName));
+		}
+		return null;
+	}
+	private ClassFileReader getClassfile(String fileName, Predicate<String> moduleNameFilter) throws IOException, ClassFormatException {
+		String[] modules = getModules(fileName);
+		byte[] content = null;
+		String module = null;
+		for (String mod : modules) {
+			if (moduleNameFilter != null && !moduleNameFilter.test(mod))
+				continue;
+			content = JRTUtil.safeReadBytes(this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, mod, fileName));
+			if (content != null) {
+				module = mod;
+				break;
+			}
+		}
+		if (content != null) {
+			ClassFileReader reader = new ClassFileReader(content, fileName.toCharArray());
+			reader.moduleName = module.toCharArray();
+			return reader;
+		}
+		return null;
+	}
+
+	byte[] getClassfileContent(String fileName, String module) throws IOException, ClassFormatException {
+		byte[] content = null;
+		if (module != null) {
+			content = getClassfileBytes(fileName, new String(module.toCharArray()));
+		} else {
+			String[] modules = getModules(fileName);
+			for (String mod : modules) {
+				content = JRTUtil.safeReadBytes(this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, mod, fileName));
+				if (content != null) {
+					break;
+				}
+			}
+		}
+		return content;
+	}
+	private byte[] getClassfileBytes(String fileName, String module) throws IOException, ClassFormatException {
+		return JRTUtil.safeReadBytes(this.jrtSystem.getPath(JRTUtil.MODULES_SUBDIR, module, fileName));
+	}
+	public ClassFileReader getClassfile(String fileName, String module, Predicate<String> moduleNameFilter) throws IOException, ClassFormatException {
+		ClassFileReader reader = null;
+		if (module == null) {
+			reader = getClassfile(fileName, moduleNameFilter);
+		} else {
+			byte[] content = getClassfileBytes(fileName, module);
+			if (content != null) {
+				reader = new ClassFileReader(content, fileName.toCharArray());
+				reader.moduleName = module.toCharArray();
+			}
+		}
+		return reader;
+	}
+	public ClassFileReader getClassfile(String fileName, IModule module) throws IOException, ClassFormatException {
+		ClassFileReader reader = null;
+		if (module == null) {
+			reader = getClassfile(fileName, (Predicate<String>)null);
+		} else {
+			byte[] content = getClassfileBytes(fileName, new String(module.name()));
+			if (content != null) {
+				reader = new ClassFileReader(content, fileName.toCharArray());
+			}
+		}
+		return reader;
+	}
+
+	void walkModuleImage(final JRTUtil.JrtFileVisitor<java.nio.file.Path> visitor, boolean visitPackageMapping, final int notify) throws IOException {
+		Iterable<java.nio.file.Path> roots = this.jrtSystem.getRootDirectories();
+		for (java.nio.file.Path path : roots) {
+			try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(path)) {
+				for (final java.nio.file.Path subdir: stream) {
+					if (subdir.toString().equals(JRTUtil.MODULES_SUBDIR)) {
+						if (visitPackageMapping) continue;
+						Files.walkFileTree(subdir, new JRTUtil.AbstractFileVisitor<java.nio.file.Path>() {
+							@Override
+							public FileVisitResult preVisitDirectory(java.nio.file.Path dir, BasicFileAttributes attrs) throws IOException {
+								int count = dir.getNameCount();
+								if (count == 2) {
+									// e.g. /modules/java.base
+									java.nio.file.Path mod = dir.getName(1);
+									if ((JRTUtil.MODULE_TO_LOAD != null && JRTUtil.MODULE_TO_LOAD.length() > 0 &&
+											JRTUtil.MODULE_TO_LOAD.indexOf(mod.toString()) == -1)) {
+										return FileVisitResult.SKIP_SUBTREE;
+									}
+									return ((notify & JRTUtil.NOTIFY_MODULES) == 0) ? 
+											FileVisitResult.CONTINUE : visitor.visitModule(mod);
+								}
+								if (dir == subdir || count < 3 || (notify & JRTUtil.NOTIFY_PACKAGES) == 0) {
+									// We are dealing with a module or not client is not interested in packages
+									return FileVisitResult.CONTINUE;
+								}
+								return visitor.visitPackage(dir.subpath(2, count), dir.getName(1), attrs);
+							}
+
+							@Override
+							public FileVisitResult visitFile(java.nio.file.Path file, BasicFileAttributes attrs) throws IOException {
+								if ((notify & JRTUtil.NOTIFY_FILES) == 0)
+									return FileVisitResult.CONTINUE;
+								int count = file.getNameCount();
+								// This happens when a file in a default package is present. E.g. /modules/some.module/file.name
+								if (count == 3) {
+									cachePackage(JRTUtil.DEFAULT_PACKAGE, file.getName(1).toString());
+								}
+								return visitor.visitFile(file.subpath(2, file.getNameCount()), file.getName(1), attrs);
+							}
+						});
+					} else if (visitPackageMapping) {
+						Files.walkFileTree(subdir, new JRTUtil.AbstractFileVisitor<java.nio.file.Path>() {
+							@Override
+							public FileVisitResult visitFile(java.nio.file.Path file, BasicFileAttributes attrs) throws IOException {
+								// e.g. /modules/java.base
+								java.nio.file.Path relative = subdir.relativize(file);
+								cachePackage(relative.getParent().toString(), relative.getFileName().toString());
+								return FileVisitResult.CONTINUE;
+							}
+						});
+					}
+			    }
+			} catch (Exception e) {
+				throw new IOException(e.getMessage());
+			}
+		}
+	}
+
+	void cachePackage(String packageName, String module) {
+		packageName = packageName.intern();
+		module = module.intern();
+		packageName = packageName.replace('.', '/');
+		Object current = this.packageToModule.get(packageName);
+		if (current == null) {
+			this.packageToModule.put(packageName, module);
+		} else if(current == module || current.equals(module)) {
+			return;
+		} else if (current == JRTUtil.MULTIPLE) {
+			List<String> list = this.packageToModules.get(packageName);
+			if (!list.contains(module)) {
+				if (JRTUtil.JAVA_BASE == module || JRTUtil.JAVA_BASE.equals(module)) {
+					list.add(0, JRTUtil.JAVA_BASE);
+				} else {
+					list.add(module);
+				}
+			}
+		} else {
+			String first = (String) current;
+			this.packageToModule.put(packageName, JRTUtil.MULTIPLE);
+			List<String> list = new ArrayList<String>();
+			// Just do this as comparator might be overkill
+			if (JRTUtil.JAVA_BASE == current || JRTUtil.JAVA_BASE.equals(current)) {
+				list.add(first);
+				list.add(module);
+			} else {
+				list.add(module);
+				list.add(first);
+			}
+			this.packageToModules.put(packageName, list);
+		}
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java
index fba0e07..687eb02 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ManifestAnalyzer.java
@@ -31,7 +31,7 @@
 	private ArrayList calledFilesNames;
 	
 	/**
-	 * Analyze the manifest contents. The given input stream is read using a UTF-8 encoded reader.
+	 * Analyzes the manifest contents. The given input stream is read using a UTF-8 encoded reader.
 	 * If the contents of the input stream is not encoded using a UTF-8 encoding, the analysis will fail.
 	 * 
 	 * @param inputStream the given input stream.
@@ -41,6 +41,17 @@
 	 */
 	public boolean analyzeManifestContents(InputStream inputStream) throws IOException {
 		char[] chars = Util.getInputStreamAsCharArray(inputStream, -1, Util.UTF_8);
+		return analyzeManifestContents(chars);
+	}
+
+	/**
+	 * Analyzes the manifest contents.
+	 * 
+	 * @param chars the content of the manifest
+	 * 
+	 * @return <code>true</code> if the analysis is successful, <code>false</code> otherwise.
+	 */
+	public boolean analyzeManifestContents(char[] chars) {
 		int state = START, substate = 0;
 		StringBuffer currentJarToken = new StringBuffer();
 		int currentChar;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.java
index bcdc5af..6f9a573 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Messages.java
@@ -40,9 +40,7 @@
 			}
 		}
 
-		/* (non-Javadoc)
-		 * @see java.util.Hashtable#put(java.lang.Object, java.lang.Object)
-		 */
+		@Override
 		public synchronized Object put(Object key, Object value) {
 			try {
 				Field field = (Field) this.fields.get(key);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.java
index 5a836b4..d436eed 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/ObjectVector.java
@@ -10,7 +10,9 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.compiler.util;
 
-public final class ObjectVector {
+import java.util.Iterator;
+
+public final class ObjectVector implements Iterable<Object> {
 
 	static int INITIAL_SIZE = 10;
 
@@ -125,6 +127,7 @@
 		return this.size;
 	}
 
+	@Override
 	public String toString() {
 
 		String s = ""; //$NON-NLS-1$
@@ -132,4 +135,19 @@
 			s += this.elements[i].toString() + "\n"; //$NON-NLS-1$
 		return s;
 	}
+
+	@Override
+	public Iterator<Object> iterator() {
+		return new Iterator<Object>() {
+			int i=0;
+			@Override
+			public boolean hasNext() {
+				return this.i < ObjectVector.this.size;
+			}
+			@Override
+			public Object next() {
+				return ObjectVector.this.elementAt(this.i++);
+			}
+		};
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.java
index 0034689..b3ad21b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleLookupTable.java
@@ -37,6 +37,7 @@
 	this.valueTable = new Object[extraRoom];
 }
 
+@Override
 public Object clone() throws CloneNotSupportedException {
 	SimpleLookupTable result = (SimpleLookupTable) super.clone();
 	result.elementSize = this.elementSize;
@@ -156,6 +157,7 @@
 	this.threshold = newLookupTable.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	Object object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.java
index 9a54f4e..de9f29f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleNameVector.java
@@ -86,6 +86,7 @@
 		return this.size;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		for (int i = 0; i < this.size; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.java
index 80c2966..18769fe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSet.java
@@ -78,6 +78,7 @@
 	this.elementSize = 0;
 }
 
+@Override
 public Object clone() throws CloneNotSupportedException {
 	SimpleSet result = (SimpleSet) super.clone();
 	result.elementSize = this.elementSize;
@@ -130,6 +131,7 @@
 	this.threshold = newSet.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	Object object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.java
index 11d48ff..372c053 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SimpleSetOfCharArray.java
@@ -65,6 +65,7 @@
 	this.elementSize = 0;
 }
 
+@Override
 public Object clone() throws CloneNotSupportedException {
 	SimpleSetOfCharArray result = (SimpleSetOfCharArray) super.clone();
 	result.elementSize = this.elementSize;
@@ -132,6 +133,7 @@
 	this.threshold = newSet.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	char[] object;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.java
index d2158b4..ffbe63f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/SuffixConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,8 @@
 	public final static String EXTENSION_CLASS = "CLASS"; //$NON-NLS-1$
 	public final static String EXTENSION_java = "java"; //$NON-NLS-1$
 	public final static String EXTENSION_JAVA = "JAVA"; //$NON-NLS-1$
+	public final static String EXTENSION_jmod = "jmod"; //$NON-NLS-1$
+	public final static String EXTENSION_JMOD = "JMOD"; //$NON-NLS-1$
 
 	public final static String SUFFIX_STRING_class = "." + EXTENSION_class; //$NON-NLS-1$
 	public final static String SUFFIX_STRING_CLASS = "." + EXTENSION_CLASS; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.java
index 921ee30..851c834 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/compiler/util/Util.java
@@ -1,10 +1,11 @@
+// ASPECTJ
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     daolaf@gmail.com - Contribution for bug 3292227
@@ -27,6 +28,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -35,8 +37,10 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem.Classpath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
@@ -45,7 +49,6 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.WildcardBinding;
 
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class Util implements SuffixConstants {
 
 	/**
@@ -232,6 +235,10 @@
 	public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
 
 	public static final String EMPTY_STRING = new String(CharOperation.NO_CHAR);
+	/**
+	 * @since 3.14
+	 */
+	public static final String COMMA_SEPARATOR = new String(CharOperation.COMMA_SEPARATOR);
 	public static final int[] EMPTY_INT_ARRAY= new int[0];
 
 	/**
@@ -742,6 +749,51 @@
 		}
 		return true; // it is neither a ".java" file nor a ".class" file, so this is a potential archive name
 	}
+	
+	public static final int ZIP_FILE = 0;
+	public static final int JMOD_FILE = 1;
+	
+	/**
+	 * Returns the kind of archive this file is. The format is one of
+	 * #ZIP_FILE or {@link #JMOD_FILE}
+	 */
+	public final static int archiveFormat(String name) {
+		int lastDot = name.lastIndexOf('.');
+		if (lastDot == -1)
+			return -1; // no file extension, it cannot be a zip archive name
+		if (name.lastIndexOf(File.separatorChar) > lastDot)
+			return -1; // dot was before the last file separator, it cannot be a zip archive name
+		int length = name.length();
+		int extensionLength = length - lastDot - 1;
+		
+		if (extensionLength == EXTENSION_java.length()) {
+			for (int i = extensionLength-1; i >=0; i--) {
+				if (Character.toLowerCase(name.charAt(length - extensionLength + i)) != EXTENSION_java.charAt(i)) {
+					break; // not a ".java" file, check ".class" file case below
+				}
+				if (i == 0) {
+					return -1; // it is a ".java" file, it cannot be a zip archive name
+				}
+			}
+		}
+		if (extensionLength == EXTENSION_class.length()) {
+			for (int i = extensionLength-1; i >=0; i--) {
+				if (Character.toLowerCase(name.charAt(length - extensionLength + i)) != EXTENSION_class.charAt(i)) {
+					return ZIP_FILE; // not a ".class" file, so this is a potential archive name
+				}
+			}
+			return -1; // it is a ".class" file, it cannot be a zip archive name
+		}
+		if (extensionLength == EXTENSION_jmod.length()) {
+			for (int i = extensionLength-1; i >=0; i--) {
+				if (Character.toLowerCase(name.charAt(length - extensionLength + i)) != EXTENSION_jmod.charAt(i)) {
+					return ZIP_FILE; // not a ".jmod" file, so this is a potential archive name
+				}
+			}
+			return JMOD_FILE;
+		}
+		return ZIP_FILE; // it is neither a ".java" file nor a ".class" file, so this is a potential archive name
+	}
 
 	/**
 	 * Returns true iff str.toLowerCase().endsWith(".class")
@@ -866,6 +918,14 @@
 	}
 	// End AspectJ Extension
 
+	/**
+	 * Returns true iff str.toLowerCase().endsWith("jrt-fs.jar")
+	 * implementation is not creating extra strings.
+	 */
+	public final static boolean isJrt(String name) {
+		return name.endsWith(JRTUtil.JRT_FS_JAR);
+	}
+
 	public static void reverseQuickSort(char[][] list, int left, int right) {
 		int original_left= left;
 		int original_right= right;
@@ -959,6 +1019,7 @@
 	public static String toString(Object[] objects) {
 		return toString(objects,
 			new Displayable(){
+				@Override
 				public String displayString(Object o) {
 					if (o == null) return "null"; //$NON-NLS-1$
 					return o.toString();
@@ -1022,6 +1083,7 @@
 			output.close();
 		}
 	}
+	@SuppressWarnings({ "rawtypes", "unchecked" })
 	public static void recordNestedType(ClassFile classFile, TypeBinding typeBinding) {
 		if (classFile.visitedTypes == null) {
 			classFile.visitedTypes = new HashSet(3);
@@ -1108,24 +1170,42 @@
 		return null;
 	}
 
-	public static void collectRunningVMBootclasspath(List bootclasspaths) {
-		for (String filePath : collectFilesNames()) {
-			FileSystem.Classpath currentClasspath = FileSystem.getClasspath(filePath, null, null, null);
-			if (currentClasspath != null) {
-				bootclasspaths.add(currentClasspath);
-			}
-		}
+	public static void collectVMBootclasspath(List<Classpath> bootclasspaths, File javaHome) {
+		List<Classpath> classpaths = collectPlatformLibraries(javaHome);
+		bootclasspaths.addAll(classpaths);
 	}
-
-	public static List<String> collectFilesNames() {
+	public static void collectRunningVMBootclasspath(List<Classpath> bootclasspaths) {
+		collectVMBootclasspath(bootclasspaths, null);
+			}
+	public static long getJDKLevel(File javaHome) {
+		String version = System.getProperty("java.version"); //$NON-NLS-1$
+		return CompilerOptions.versionToJdkLevel(version);
+		}
+	public static List<FileSystem.Classpath> collectFilesNames() {
+		return collectPlatformLibraries(null);
+	}
+	public static List<FileSystem.Classpath> collectPlatformLibraries(File javaHome) {
 		/* no bootclasspath specified
 		 * we can try to retrieve the default librairies of the VM used to run
 		 * the batch compiler
 		 */
-		String javaversion = System.getProperty("java.version");//$NON-NLS-1$
+		String javaversion = null;
+		javaversion = System.getProperty("java.version"); //$NON-NLS-1$
+		// Surely, this ain't required anymore?
 		if (javaversion != null && javaversion.equalsIgnoreCase("1.1.8")) { //$NON-NLS-1$
 			throw new IllegalStateException();
 		}
+		long jdkLevel = CompilerOptions.versionToJdkLevel(javaversion);
+			if (jdkLevel >= ClassFileConstants.JDK9) {
+			List<FileSystem.Classpath> filePaths = new ArrayList<>();
+			if (javaHome == null) {
+				javaHome = getJavaHome();
+			}
+				if (javaHome != null) {
+				filePaths.add(FileSystem.getJrtClasspath(javaHome.getAbsolutePath(), null, null, null));
+					return filePaths;
+				}
+			}
 
 		/*
 		 * Handle >= JDK 1.2.2 settings: retrieve the bootclasspath
@@ -1140,7 +1220,7 @@
 				bootclasspathProperty = System.getProperty("org.apache.harmony.boot.class.path"); //$NON-NLS-1$
 			}
 		}
-		List<String> filePaths = new ArrayList<>();
+		Set<String> filePaths = new HashSet<>();
 		if ((bootclasspathProperty != null) && (bootclasspathProperty.length() != 0)) {
 			StringTokenizer tokenizer = new StringTokenizer(bootclasspathProperty, File.pathSeparator);
 			while (tokenizer.hasMoreTokens()) {
@@ -1148,7 +1228,9 @@
 			}
 		} else {
 			// try to get all jars inside the lib folder of the java home
-			final File javaHome = getJavaHome();
+			if (javaHome == null) {
+				javaHome = getJavaHome();
+			}
 			if (javaHome != null) {
 				File[] directoriesToCheck = null;
 				if (System.getProperty("os.name").startsWith("Mac")) {//$NON-NLS-1$//$NON-NLS-2$
@@ -1174,7 +1256,14 @@
 				}
 			}
 		}
-		return filePaths;
+		List<FileSystem.Classpath> classpaths = new ArrayList<>();
+		for (String filePath : filePaths) {
+			FileSystem.Classpath currentClasspath = FileSystem.getClasspath(filePath, null, null, null);
+			if (currentClasspath != null) {
+				classpaths.add(currentClasspath);
+			}
+		}
+		return classpaths;
 	}
 	public static int getParameterCount(char[] methodSignature) {
 		try {
@@ -1643,5 +1732,4 @@
 				}
 		}
 	}
-
 }
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.java
new file mode 100644
index 0000000..ec241eb
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractClassFile.java
@@ -0,0 +1,489 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     Stephan Herrmann - Contribution for
+ *								Bug 458577 - IClassFile.getWorkingCopy() may lead to NPE in BecomeWorkingCopyOperation
+ *								Bug 440477 - [null] Infrastructure for feeding external annotations into compilation
+ *								Bug 462768 - [null] NPE when using linked folder for external annotations
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+/**
+ * Common parts of ClassFile (containing a BinaryType) and ModularClassFile (containing a BinaryModule).
+ * Prior to Java 9, most of this content was directly in ClassFile.
+ */
+public abstract class AbstractClassFile extends Openable implements IClassFile, SuffixConstants {
+
+	protected String name;
+
+	protected AbstractClassFile(PackageFragment parent, String nameWithoutExtension) {
+		super(parent);
+		this.name = nameWithoutExtension;
+	}
+
+	/*
+	 * @see IClassFile#becomeWorkingCopy(IProblemRequestor, WorkingCopyOwner, IProgressMonitor)
+	 */
+	@Override
+	public ICompilationUnit becomeWorkingCopy(IProblemRequestor problemRequestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
+		JavaModelManager manager = JavaModelManager.getJavaModelManager();
+		CompilationUnit workingCopy = new ClassFileWorkingCopy(this, owner == null ? DefaultWorkingCopyOwner.PRIMARY : owner);
+		JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo = manager.getPerWorkingCopyInfo(workingCopy, false/*don't create*/, true /*record usage*/, null/*no problem requestor needed*/);
+		if (perWorkingCopyInfo == null) {
+			// close cu and its children
+			close();
+	
+			BecomeWorkingCopyOperation operation = new BecomeWorkingCopyOperation(workingCopy, problemRequestor);
+			operation.runOperation(monitor);
+	
+			return workingCopy;
+		}
+		return perWorkingCopyInfo.workingCopy;
+	}
+
+	/**
+	 * @see ICodeAssist#codeComplete(int, ICompletionRequestor)
+	 * @deprecated
+	 */
+	@Override
+	@Deprecated
+	public void codeComplete(int offset, ICompletionRequestor requestor) throws JavaModelException {
+		codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
+	}
+	/**
+	 * @see ICodeAssist#codeComplete(int, ICompletionRequestor, WorkingCopyOwner)
+	 * @deprecated
+	 */
+	@Override
+	@Deprecated
+	public void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
+		if (requestor == null) {
+			throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
+		}
+		codeComplete(offset, new org.aspectj.org.eclipse.jdt.internal.codeassist.CompletionRequestorWrapper(requestor), owner);
+	}
+
+	@Override
+	public void codeComplete(int offset, CompletionRequestor requestor) throws JavaModelException {
+		codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
+	}
+
+	@Override
+	public void codeComplete(int offset, CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
+		codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY, monitor);
+	}
+
+	@Override
+	public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
+		codeComplete(offset, requestor, owner, null);
+	}
+	@Override
+	public abstract void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException;
+	
+	/**
+	 * @see ICodeAssist#codeSelect(int, int)
+	 */
+	@Override
+	public IJavaElement[] codeSelect(int offset, int length) throws JavaModelException {
+		return codeSelect(offset, length, DefaultWorkingCopyOwner.PRIMARY);
+	}
+	@Override
+	public abstract IJavaElement[] codeSelect(int offset, int length, WorkingCopyOwner owner) throws JavaModelException;
+	
+	/**
+	 * Returns a new element info for this element.
+	 */
+	@Override
+	protected Object createElementInfo() {
+		return new ClassFileInfo();
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (!(o instanceof AbstractClassFile)) return false;
+		AbstractClassFile other = (AbstractClassFile) o;
+		return this.name.equals(other.name) && this.parent.equals(other.parent);
+	}
+	
+	/**
+	 * Finds the deepest <code>IJavaElement</code> in the hierarchy of
+	 * <code>elt</elt>'s children (including <code>elt</code> itself)
+	 * which has a source range that encloses <code>position</code>
+	 * according to <code>mapper</code>.
+	 */
+	protected IJavaElement findElement(IJavaElement elt, int position, SourceMapper mapper) {
+		SourceRange range = mapper.getSourceRange(elt);
+		if (range == null || position < range.getOffset() || range.getOffset() + range.getLength() - 1 < position) {
+			return null;
+		}
+		if (elt instanceof IParent) {
+			try {
+				IJavaElement[] children = ((IParent) elt).getChildren();
+				for (int i = 0; i < children.length; i++) {
+					IJavaElement match = findElement(children[i], position, mapper);
+					if (match != null) {
+						return match;
+					}
+				}
+			} catch (JavaModelException npe) {
+				// elt doesn't exist: return the element
+			}
+		}
+		return elt;
+	}
+	
+	@Override
+	public byte[] getBytes() throws JavaModelException {
+		JavaElement pkg = (JavaElement) getParent();
+		if (pkg instanceof JarPackageFragment) {
+			JarPackageFragmentRoot root = (JarPackageFragmentRoot) pkg.getParent();
+			try {
+				String entryName = Util.concatWith(((PackageFragment) pkg).names, getElementName(), '/');
+				entryName = root.getClassFilePath(entryName);
+				return getClassFileContent(root, entryName);
+				// Java 9 - The below exception is not thrown in new scheme of things. Could cause issues?
+	//			throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, this));
+			} catch (IOException ioe) {
+				throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
+			} catch (CoreException e) {
+				if (e instanceof JavaModelException) {
+					throw (JavaModelException)e;
+				} else {
+					throw new JavaModelException(e);
+				}
+			}
+		} else {
+			IFile file = (IFile) resource();
+			return Util.getResourceContentsAsByteArray(file);
+		}
+	}
+	protected byte[] getClassFileContent(JarPackageFragmentRoot root, String className) throws CoreException, IOException {
+		byte[] contents = null;
+		String rootPath = root.getPath().toOSString();
+		if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isJrt(rootPath)) {
+				try {
+					contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.getClassfileContent(
+							new File(rootPath),
+							className,
+							root.getElementName());
+				} catch (ClassFormatException e) {
+					e.printStackTrace();
+				}
+		} else {
+			ZipFile zip = root.getJar();
+			try {
+				ZipEntry ze = zip.getEntry(className);
+				if (ze != null) {
+					contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
+				}
+			} finally {
+				JavaModelManager.getJavaModelManager().closeZipFile(zip);
+			}
+		}
+		if (contents == null && Thread.interrupted()) // reading from JRT is interruptible
+			throw new OperationCanceledException();
+		return contents;
+	}
+	
+	@Override
+	public IBuffer getBuffer() throws JavaModelException {
+		IStatus status = validateClassFile();
+		if (status.isOK()) {
+			return super.getBuffer();
+		} else {
+			switch (status.getCode()) {
+			case IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH: // don't throw a JavaModelException to be able to open .class file outside the classpath (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=138507 )
+			case IJavaModelStatusConstants.INVALID_ELEMENT_TYPES: // don't throw a JavaModelException to be able to open .class file in proj==src case without source (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=221904 )
+				return null;
+			default:
+				throw new JavaModelException(status);
+			}
+		}
+	}
+	/**
+	 * @see IMember#getTypeRoot()
+	 */
+	public ITypeRoot getTypeRoot() {
+		return this;
+	}
+	
+	/**
+	 * A class file has a corresponding resource unless it is contained
+	 * in a jar.
+	 *
+	 * @see IJavaElement
+	 */
+	@Override
+	public IResource getCorrespondingResource() throws JavaModelException {
+		IPackageFragmentRoot root= (IPackageFragmentRoot)getParent().getParent();
+		if (root.isArchive()) {
+			return null;
+		} else {
+			return getUnderlyingResource();
+		}
+	}
+	public IJavaElement getElementAtConsideringSibling(int position) throws JavaModelException {
+		IPackageFragment fragment = (IPackageFragment)getParent();
+		PackageFragmentRoot root = (PackageFragmentRoot) fragment.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+		SourceMapper mapper = root.getSourceMapper();
+		if (mapper == null) {
+			return null;
+		} else {
+			int index = this.name.indexOf('$');
+			int prefixLength = index < 0 ? this.name.length() : index;
+	
+			IType type = null;
+			int start = -1;
+			int end = Integer.MAX_VALUE;
+			IJavaElement[] children = fragment.getChildren();
+			for (int i = 0; i < children.length; i++) {
+				if (children[i] instanceof IOrdinaryClassFile) {
+					IOrdinaryClassFile classFile = (IOrdinaryClassFile) children[i];
+					String childName = classFile.getElementName();
+		
+					int childIndex = childName.indexOf('$');
+					int childPrefixLength = childIndex < 0 ? childName.indexOf('.') : childIndex;
+					if (prefixLength == childPrefixLength && this.name.regionMatches(0, childName, 0, prefixLength)) {
+		
+						// ensure this class file's buffer is open so that source ranges are computed
+						classFile.getBuffer();
+		
+						SourceRange range = mapper.getSourceRange(classFile.getType());
+						if (range == SourceMapper.UNKNOWN_RANGE) continue;
+						int newStart = range.getOffset();
+						int newEnd = newStart + range.getLength() - 1;
+						if(newStart > start && newEnd < end
+								&& newStart <= position && newEnd >= position) {
+							type = classFile.getType();
+							start = newStart;
+							end = newEnd;
+						}
+					}
+				}
+			}
+			if(type != null) {
+				return findElement(type, position, mapper);
+			}
+			return null;
+		}
+	}
+	@Override
+	public String getElementName() {
+		return this.name + SuffixConstants.SUFFIX_STRING_class;
+	}
+	/**
+	 * @see IJavaElement
+	 */
+	@Override
+	public int getElementType() {
+		return CLASS_FILE;
+	}
+
+	/*
+	 * @see IJavaElement
+	 */
+	@Override
+	public IPath getPath() {
+		PackageFragmentRoot root = getPackageFragmentRoot();
+		if (root.isArchive()) {
+			return root.getPath();
+		} else {
+			return getParent().getPath().append(getElementName());
+		}
+	}
+	
+	/*
+	 * @see IJavaElement
+	 */
+	@Override
+	public IResource resource(PackageFragmentRoot root) {
+		return ((IContainer) ((Openable) this.parent).resource(root)).getFile(new Path(getElementName()));
+	}
+	/**
+	 * @see ISourceReference
+	 */
+	@Override
+	public String getSource() throws JavaModelException {
+		IBuffer buffer = getBuffer();
+		if (buffer == null) {
+			return null;
+		}
+		return buffer.getContents();
+	}
+	/**
+	 * @see ISourceReference
+	 */
+	@Override
+	public ISourceRange getSourceRange() throws JavaModelException {
+		IBuffer buffer = getBuffer();
+		if (buffer != null) {
+			String contents = buffer.getContents();
+			if (contents == null) return null;
+			return new SourceRange(0, contents.length());
+		} else {
+			return null;
+		}
+	}
+	/**
+	 * @see IClassFile
+	 * @deprecated
+	 */
+	@Override
+	@Deprecated
+	public IJavaElement getWorkingCopy(IProgressMonitor monitor, org.aspectj.org.eclipse.jdt.core.IBufferFactory factory) throws JavaModelException {
+		return getWorkingCopy(BufferFactoryWrapper.create(factory), monitor);
+	}
+	/**
+	 * @see Openable
+	 */
+	@Override
+	protected boolean hasBuffer() {
+		return true;
+	}
+	@Override
+	public int hashCode() {
+		return Util.combineHashCodes(this.name.hashCode(), this.parent.hashCode());
+	}
+	/**
+	 * Returns true - class files are always read only.
+	 */
+	@Override
+	public boolean isReadOnly() {
+		return true;
+	}
+	private IStatus validateClassFile() {
+		IPackageFragmentRoot root = getPackageFragmentRoot();
+		try {
+			if (root.getKind() != IPackageFragmentRoot.K_BINARY)
+				return new JavaModelStatus(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, root);
+		} catch (JavaModelException e) {
+			return e.getJavaModelStatus();
+		}
+		IJavaProject project = getJavaProject();
+		return JavaConventions.validateClassFileName(getElementName(), project.getOption(JavaCore.COMPILER_SOURCE, true), project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
+	}
+	
+
+	/**
+	 * @see ICodeAssist#codeComplete(int, ICodeCompletionRequestor)
+	 * @deprecated - should use codeComplete(int, ICompletionRequestor) instead
+	 */
+	@Override
+	@Deprecated
+	public void codeComplete(int offset, final org.aspectj.org.eclipse.jdt.core.ICodeCompletionRequestor requestor) throws JavaModelException {
+
+		if (requestor == null){
+			codeComplete(offset, (ICompletionRequestor)null);
+			return;
+		}
+		codeComplete(
+			offset,
+			new ICompletionRequestor(){
+				@Override
+				public void acceptAnonymousType(char[] superTypePackageName,char[] superTypeName, char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
+					// ignore
+				}
+				@Override
+				public void acceptClass(char[] packageName, char[] className, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
+					requestor.acceptClass(packageName, className, completionName, modifiers, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptError(IProblem error) {
+					// was disabled in 1.0
+				}
+				@Override
+				public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, char[] typePackageName, char[] typeName, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
+					requestor.acceptField(declaringTypePackageName, declaringTypeName, fieldName, typePackageName, typeName, completionName, modifiers, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptInterface(char[] packageName,char[] interfaceName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
+					requestor.acceptInterface(packageName, interfaceName, completionName, modifiers, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptKeyword(char[] keywordName,int completionStart,int completionEnd, int relevance){
+					requestor.acceptKeyword(keywordName, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptLabel(char[] labelName,int completionStart,int completionEnd, int relevance){
+					requestor.acceptLabel(labelName, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptLocalVariable(char[] localVarName,char[] typePackageName,char[] typeName,int modifiers,int completionStart,int completionEnd, int relevance){
+					// ignore
+				}
+				@Override
+				public void acceptMethod(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
+					// skip parameter names
+					requestor.acceptMethod(declaringTypePackageName, declaringTypeName, selector, parameterPackageNames, parameterTypeNames, returnTypePackageName, returnTypeName, completionName, modifiers, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptMethodDeclaration(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
+					// ignore
+				}
+				@Override
+				public void acceptModifier(char[] modifierName,int completionStart,int completionEnd, int relevance){
+					requestor.acceptModifier(modifierName, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptPackage(char[] packageName,char[] completionName,int completionStart,int completionEnd, int relevance){
+					requestor.acceptPackage(packageName, completionName, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptType(char[] packageName,char[] typeName,char[] completionName,int completionStart,int completionEnd, int relevance){
+					requestor.acceptType(packageName, typeName, completionName, completionStart, completionEnd);
+				}
+				@Override
+				public void acceptVariableName(char[] typePackageName,char[] typeName,char[] varName,char[] completionName,int completionStart,int completionEnd, int relevance){
+					// ignore
+				}
+			});
+	}
+	
+	@Override
+	protected IStatus validateExistence(IResource underlyingResource) {
+		// check whether the class file can be opened
+		IStatus status = validateClassFile();
+		if (!status.isOK())
+			return status;
+		if (underlyingResource != null) {
+			if (!underlyingResource.isAccessible())
+				return newDoesNotExistStatus();
+			PackageFragmentRoot root;
+			if ((underlyingResource instanceof IFolder) && (root = getPackageFragmentRoot()).isArchive()) { // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=204652
+				return root.newDoesNotExistStatus();
+			}
+		}
+		return JavaModelStatus.VERIFIED_OK;
+	}
+	
+	@Override
+	public ISourceRange getNameRange() {
+		return null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.java
new file mode 100644
index 0000000..dcc10b3
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AbstractModule.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.Arrays;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IService;
+
+public interface AbstractModule extends IModuleDescription {
+	
+	/**
+	 * Handle for an automatic module.
+	 *
+	 * <p>Note, that by definition this is mostly a fake, only {@link #getElementName()} provides a useful value.</p>
+	 */
+	static class AutoModule extends NamedMember implements AbstractModule {
+	
+		private boolean nameFromManifest;
+
+		public AutoModule(JavaElement parent, String name, boolean nameFromManifest) {
+			super(parent, name);
+			this.nameFromManifest = nameFromManifest;
+		}
+		@Override
+		public IJavaElement[] getChildren() throws JavaModelException {
+			return JavaElement.NO_ELEMENTS; // may later answer computed details
+		}
+		@Override
+		public int getFlags() throws JavaModelException {
+			return 0;
+		}
+		@Override
+		public boolean isAutoModule() {
+			return true;
+		}
+		public boolean isAutoNameFromManifest() {
+			return this.nameFromManifest;
+		}
+		@Override
+		public char getHandleMementoDelimiter() {
+			return JavaElement.JEM_MODULE;
+		}
+		@Override
+		public ITypeRoot getTypeRoot() {
+			return null; // has no real CompilationUnit nor ClassFile
+		}
+		@Override
+		public IModuleReference[] getRequiredModules() throws JavaModelException {
+			return ModuleDescriptionInfo.NO_REQUIRES;
+		}
+		@Override
+		public void toStringContent(StringBuffer buffer, String lineDelimiter) throws JavaModelException {
+			buffer.append("automatic module "); //$NON-NLS-1$
+			buffer.append(this.name);
+		}
+	}
+	
+	// "forward declaration" for a method from JavaElement:
+	abstract Object getElementInfo() throws JavaModelException;
+
+	default IModule getModuleInfo() throws JavaModelException {
+		return (IModule) getElementInfo();
+	}
+	default IModuleReference[] getRequiredModules() throws JavaModelException {
+		return getModuleInfo().requires();
+	}
+	default IPackageExport[] getExportedPackages() throws JavaModelException {
+		return getModuleInfo().exports();
+	}
+	default IService[] getProvidedServices() throws JavaModelException {
+		return getModuleInfo().provides();
+	}
+	default char[][] getUsedServices() throws JavaModelException {
+		return getModuleInfo().uses();
+	}
+	default IPackageExport[] getOpenedPackages() throws JavaModelException {
+		return getModuleInfo().opens();
+	}
+	@Override
+	default String[] getRequiredModuleNames() throws JavaModelException {
+		IModuleReference[] references = getRequiredModules();
+		return Arrays.stream(references).map(ref -> String.valueOf(ref.name())).toArray(String[]::new);
+	}
+
+	default String toString(String lineDelimiter) {
+		StringBuffer buffer = new StringBuffer();
+		try {
+			toStringContent(buffer, lineDelimiter);
+		} catch (JavaModelException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return buffer.toString();
+	}
+	default void toStringContent(StringBuffer buffer, String lineDelimiter) throws JavaModelException {
+		IPackageExport[] exports = getExportedPackages();
+		IModuleReference[] requires = getRequiredModules();
+		buffer.append("module "); //$NON-NLS-1$
+		buffer.append(getElementName()).append(' ');
+		buffer.append('{').append(lineDelimiter);
+		if (exports != null) {
+			for(int i = 0; i < exports.length; i++) {
+				buffer.append("\texports "); //$NON-NLS-1$
+				buffer.append(exports[i].toString());
+				buffer.append(lineDelimiter);
+			}
+		}
+		buffer.append(lineDelimiter);
+		if (requires != null) {
+			for(int i = 0; i < requires.length; i++) {
+				buffer.append("\trequires "); //$NON-NLS-1$
+				if (requires[i].isTransitive()) {
+					buffer.append(" public "); //$NON-NLS-1$
+				}
+				buffer.append(requires[i].name());
+				buffer.append(';').append(lineDelimiter);
+			}
+		}
+		buffer.append(lineDelimiter).append('}').toString();
+	}
+
+	@Override
+	default int getElementType() {
+		return JAVA_MODULE;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.java
index 57ca601..7fd5b7f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/AnnotatableInfo.java
@@ -38,6 +38,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceMethod#getNameSourceEnd()
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceField#getNameSourceEnd()
 	 */
+	@Override
 	public int getNameSourceEnd() {
 		return this.nameEnd;
 	}
@@ -46,6 +47,7 @@
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceMethod#getNameSourceStart()
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceField#getNameSourceStart()
 	 */
+	@Override
 	public int getNameSourceStart() {
 		return this.nameStart;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Annotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Annotation.java
index 37a39b9..1404915 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Annotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Annotation.java
@@ -40,6 +40,7 @@
 		this.memberValuePairName = memberValuePairName;
 	}
 
+	@Override
 	public boolean equals(Object o) {
 		if (!(o instanceof Annotation)) {
 			return false;
@@ -59,18 +60,22 @@
 		return (IMember) getParent();
 	}
 
+	@Override
 	public String getElementName() {
 		return this.name;
 	}
 
+	@Override
 	public int getElementType() {
 		return ANNOTATION;
 	}
 
+	@Override
 	protected char getHandleMementoDelimiter() {
 		return JavaElement.JEM_ANNOTATION;
 	}
 
+	@Override
 	public IMemberValuePair[] getMemberValuePairs() throws JavaModelException {
 		Object info = getElementInfo();
 		if (info instanceof AnnotationInfo)
@@ -87,10 +92,11 @@
 		return result;
 	}
 
+	@Override
 	public ISourceRange getNameRange() throws JavaModelException {
 		SourceMapper mapper= getSourceMapper();
 		if (mapper != null) {
-			ClassFile classFile = (ClassFile)getClassFile();
+			IClassFile classFile = getClassFile();
 			if (classFile != null) {
 				// ensure the class file's buffer is open so that source ranges are computed
 				classFile.getBuffer();
@@ -108,11 +114,12 @@
 	/*
 	 * @see ISourceReference
 	 */
+	@Override
 	public ISourceRange getSourceRange() throws JavaModelException {
 		SourceMapper mapper= getSourceMapper();
 		if (mapper != null) {
 			// ensure the class file's buffer is open so that source ranges are computed
-			ClassFile classFile = (ClassFile)getClassFile();
+			IClassFile classFile = getClassFile();
 			if (classFile != null) {
 				classFile.getBuffer();
 				return mapper.getSourceRange(this);
@@ -121,10 +128,12 @@
 		return super.getSourceRange();
 	}
 
+	@Override
 	public IClassFile getClassFile() {
 		return ((JavaElement)getParent()).getClassFile();
 	}
 
+	@Override
 	public int hashCode() {
 		final int prime = 31;
 		int result = super.hashCode();
@@ -133,6 +142,7 @@
 		return result;
 	}
 
+	@Override
 	protected void toStringName(StringBuffer buffer) {
 		buffer.append('@');
 		buffer.append(getElementName());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.java
index 35124ca..df1f03a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BasicCompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,9 @@
 import org.eclipse.core.runtime.CoreException;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModularClassFile;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
@@ -38,14 +41,19 @@
 
 	protected char[][] packageName;
 	protected char[] mainTypeName;
+	protected char[] moduleName;
 	protected String encoding;
 
-public BasicCompilationUnit(char[] contents, char[][] packageName, String fileName) {
+private BasicCompilationUnit(char[] contents, char[][] packageName, String fileName) {
 	this.contents = contents;
 	this.fileName = fileName.toCharArray();
 	this.packageName = packageName;
 }
 
+/**
+ * @deprecated Should pass a javaElement via {@link BasicCompilationUnit#BasicCompilationUnit(char[], char[][], String, IJavaElement)}.
+ */
+@Deprecated
 public BasicCompilationUnit(char[] contents, char[][] packageName, String fileName, String encoding) {
 	this(contents, packageName, fileName);
 	this.encoding = encoding;
@@ -53,7 +61,7 @@
 
 public BasicCompilationUnit(char[] contents, char[][] packageName, String fileName, IJavaElement javaElement) {
 	this(contents, packageName, fileName);
-	initEncoding(javaElement);
+	initAttributes(javaElement);
 }
 
 /*
@@ -64,26 +72,49 @@
  * a corresponding source file resource.
  * If we have a compilation unit, then get encoding from its resource directly...
  */
-private void initEncoding(IJavaElement javaElement) {
+private void initAttributes(IJavaElement javaElement) {
 	if (javaElement != null) {
 		try {
-			IJavaProject javaProject = javaElement.getJavaProject();
-			switch (javaElement.getElementType()) {
-				case IJavaElement.COMPILATION_UNIT:
-					IFile file = (IFile) javaElement.getResource();
-					if (file != null) {
-						this.encoding = file.getCharset();
-						break;
+				IModuleDescription module = null;
+
+				search: while (javaElement != null) {
+					switch (javaElement.getElementType()) {
+						case IJavaElement.JAVA_PROJECT:
+							module = ((IJavaProject) javaElement).getModuleDescription();
+							break search;
+						case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+							module = ((IPackageFragmentRoot) javaElement).getModuleDescription();
+							break search;
+						case IJavaElement.CLASS_FILE:
+							if (javaElement instanceof IModularClassFile) {
+								module = ((IModularClassFile) javaElement).getModule();
+								break search;
+							}
+							break;
+						case IJavaElement.COMPILATION_UNIT:
+							IFile file = (IFile) javaElement.getResource();
+							if (file != null) {
+								this.encoding = file.getCharset();
+							}
+							module = ((org.aspectj.org.eclipse.jdt.core.ICompilationUnit) javaElement).getModule();
+							if (module != null)
+								break search;
+							break;
+						default:
+							break;
 					}
-					// if no file, then get project encoding
-					// $FALL-THROUGH$
-				default:
-					IProject project = (IProject) javaProject.getResource();
+					javaElement = javaElement.getParent();
+				}
+
+				if (module != null) {
+					this.moduleName = module.getElementName().toCharArray();
+				}
+				if (this.encoding == null) {
+					IProject project = javaElement.getJavaProject().getProject();
 					if (project != null) {
 						this.encoding = project.getDefaultCharset();
 					}
-					break;
-			}
+				}
 		} catch (CoreException e1) {
 			this.encoding = null;
 		}
@@ -92,6 +123,7 @@
 	}
 }
 
+@Override
 public char[] getContents() {
 	if (this.contents != null)
 		return this.contents;   // answer the cached source
@@ -107,15 +139,17 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.fileName;
 }
+@Override
 public char[] getMainTypeName() {
 	if (this.mainTypeName == null) {
 		int start = CharOperation.lastIndexOf('/', this.fileName) + 1;
 		if (start == 0 || start < CharOperation.lastIndexOf('\\', this.fileName))
 			start = CharOperation.lastIndexOf('\\', this.fileName) + 1;
-		int separator = CharOperation.indexOf('|', this.fileName) + 1;
+		int separator = CharOperation.lastIndexOf('|', this.fileName) + 1;
 		if (separator > start) // case of a .class file in a default package in a jar
 			start = separator;
 
@@ -130,13 +164,21 @@
 	}
 	return this.mainTypeName;
 }
+@Override
 public char[][] getPackageName() {
 	return this.packageName;
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return false;
 }
+@Override
 public String toString(){
 	return "CompilationUnit: "+new String(this.fileName); //$NON-NLS-1$
 }
+
+@Override
+public char[] getModuleName() {
+	return this.moduleName;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.java
index cec0b4c..94afc19 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchInitializationMonitor.java
@@ -23,12 +23,14 @@
 		return (IProgressMonitor) this.initializeAfterLoadMonitor.get();
 	}
 
+	@Override
 	public void beginTask(String name, int totalWork) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
 			monitor.beginTask(name, totalWork);
 	}
 
+	@Override
 	public void done() {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
@@ -37,12 +39,14 @@
 		this.subTaskName = ""; //$NON-NLS-1$
 	}
 
+	@Override
 	public void internalWorked(double work) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
 			monitor.internalWorked(work);
 	}
 
+	@Override
 	public boolean isCanceled() {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
@@ -50,18 +54,21 @@
 		return false;
 	}
 
+	@Override
 	public void setCanceled(boolean value) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
 			monitor.setCanceled(value);
 	}
 
+	@Override
 	public void setTaskName(String name) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
 			monitor.setTaskName(name);
 	}
 
+	@Override
 	public void subTask(String name) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
@@ -69,6 +76,7 @@
 		this.subTaskName = name;
 	}
 
+	@Override
 	public void worked(int work) {
 		IProgressMonitor monitor = getMonitor();
 		if (monitor != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.java
index 294770f..5967038 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BatchOperation.java
@@ -26,14 +26,13 @@
 		this.runnable = runnable;
 	}
 
+	@Override
 	protected boolean canModifyRoots() {
 		// anything in the workspace runnable can modify the roots
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation#executeOperation()
-	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		try {
 			this.runnable.run(this.progressMonitor);
@@ -52,9 +51,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation#verify()
-	 */
+	@Override
 	protected IJavaModelStatus verify() {
 		// cannot verify user defined operation
 		return JavaModelStatus.VERIFIED_OK;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.java
index 9650b9d..617fa27 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BecomeWorkingCopyOperation.java
@@ -31,6 +31,7 @@
 		super(new IJavaElement[] {workingCopy});
 		this.problemRequestor = problemRequestor;
 	}
+	@Override
 	protected void executeOperation() throws JavaModelException {
 
 		// open the working copy now to ensure contents are that of the current state of this element
@@ -71,6 +72,7 @@
 	/*
 	 * @see JavaModelOperation#isReadOnly
 	 */
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.java
index 8bc5162..d3b931c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryField.java
@@ -32,10 +32,12 @@
 protected BinaryField(JavaElement parent, String name) {
 	super(parent, name);
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof BinaryField)) return false;
 	return super.equals(o);
 }
+@Override
 public IAnnotation[] getAnnotations() throws JavaModelException {
 	IBinaryField info = (IBinaryField) getElementInfo();
 	IBinaryAnnotation[] binaryAnnotations = info.getAnnotations();
@@ -44,6 +46,7 @@
 /*
  * @see IField
  */
+@Override
 public Object getConstant() throws JavaModelException {
 	IBinaryField info = (IBinaryField) getElementInfo();
 	return convertConstant(info.getConstant());
@@ -51,6 +54,7 @@
 /*
  * @see IMember
  */
+@Override
 public int getFlags() throws JavaModelException {
 	IBinaryField info = (IBinaryField) getElementInfo();
 	return info.getModifiers();
@@ -58,21 +62,25 @@
 /*
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return FIELD;
 }
 /*
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_FIELD;
 }
+@Override
 public String getKey(boolean forceOpen) throws JavaModelException {
 	return getKey(this, forceOpen);
 }
 /*
  * @see IField
  */
+@Override
 public String getTypeSignature() throws JavaModelException {
 	IBinaryField info = (IBinaryField) getElementInfo();
 	char[] genericSignature = info.getGenericSignature();
@@ -83,15 +91,16 @@
 }
 /* (non-Javadoc)
  * @see org.aspectj.org.eclipse.jdt.core.IField#isEnumConstant()
- */public boolean isEnumConstant() throws JavaModelException {
+ */@Override
+public boolean isEnumConstant() throws JavaModelException {
 	return Flags.isEnum(getFlags());
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IField#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	SourceRefElement resolvedHandle = new ResolvedBinaryField(this.parent, this.name, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -100,6 +109,7 @@
 /*
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
@@ -117,6 +127,7 @@
 		}
 	}
 }
+@Override
 public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
 	JavadocContents javadocContents = ((BinaryType) this.getDeclaringType()).getJavadocContents(monitor);
 	if (javadocContents == null) return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.java
index c0ce6d8..117b797 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaExpression.java
@@ -27,16 +27,12 @@
 		super(parent, interphase, sourceStart, sourceEnd, arrowPosition, lambdaMethod);
 	}
 
-	/*
-	 * @see JavaElement#getPrimaryElement(boolean)
-	 */
+	@Override
 	public IJavaElement getPrimaryElement(boolean checkOwner) {
 		return this;
 	}
 
-	/*
-	 * @see IMember#isBinary()
-	 */
+	@Override
 	public boolean isBinary() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.java
index 1c22410..6b26f7e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryLambdaMethod.java
@@ -19,16 +19,12 @@
 		super(parent, name, key, sourceStart, parameterTypes, parameterNames, returnType, elementInfo);
 	}
 
-	/*
-	 * @see JavaElement#getPrimaryElement(boolean)
-	 */
+	@Override
 	public IJavaElement getPrimaryElement(boolean checkOwner) {
 		return this;
 	}
 
-	/*
-	 * @see IMember#isBinary()
-	 */
+	@Override
 	public boolean isBinary() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.java
index bee0e39..09173b1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMember.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,6 +39,7 @@
 /*
  * @see ISourceManipulation
  */
+@Override
 public void copy(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
@@ -92,11 +93,12 @@
 	return (IAnnotation[]) annotations.toArray(new IAnnotation[annotations.size()]);
 }
 
+@Override
 public String[] getCategories() throws JavaModelException {
 	SourceMapper mapper= getSourceMapper();
 	if (mapper != null) {
 		// ensure the class file's buffer is open so that categories are computed
-		((ClassFile)getClassFile()).getBuffer();
+		getClassFile().getBuffer();
 
 		if (mapper.categories != null) {
 			String[] categories = (String[]) mapper.categories.get(this);
@@ -121,11 +123,12 @@
 /*
  * @see ISourceReference
  */
+@Override
 public ISourceRange getNameRange() throws JavaModelException {
 	SourceMapper mapper= getSourceMapper();
 	if (mapper != null) {
 		// ensure the class file's buffer is open so that source ranges are computed
-		((ClassFile)getClassFile()).getBuffer();
+		((AbstractClassFile)getClassFile()).getBuffer();
 
 		return mapper.getNameRange(this);
 	} else {
@@ -135,11 +138,12 @@
 /*
  * @see ISourceReference
  */
+@Override
 public ISourceRange getSourceRange() throws JavaModelException {
 	SourceMapper mapper= getSourceMapper();
 	if (mapper != null) {
 		// ensure the class file's buffer is open so that source ranges are computed
-		((ClassFile)getClassFile()).getBuffer();
+		getClassFile().getBuffer();
 
 		return mapper.getSourceRange(this);
 	} else {
@@ -149,24 +153,28 @@
 /*
  * @see IMember
  */
+@Override
 public boolean isBinary() {
 	return true;
 }
 /*
  * @see IJavaElement
  */
+@Override
 public boolean isStructureKnown() throws JavaModelException {
 	return ((IJavaElement)getOpenableParent()).isStructureKnown();
 }
 /*
  * @see ISourceManipulation
  */
+@Override
 public void move(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
 /*
  * @see ISourceManipulation
  */
+@Override
 public void rename(String newName, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.java
index e7180ca..e95d01b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryMethod.java
@@ -64,15 +64,18 @@
 		this.parameterTypes= paramTypes;
 	}
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof BinaryMethod)) return false;
 	return super.equals(o) && Util.equalArraysOrNull(getErasedParameterTypes(), ((BinaryMethod)o).getErasedParameterTypes());
 }
+@Override
 public IAnnotation[] getAnnotations() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	IBinaryAnnotation[] binaryAnnotations = info.getAnnotations();
 	return getAnnotations(binaryAnnotations, info.getTagBits());
 }
+@Override
 public ILocalVariable[] getParameters() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	int length = this.parameterTypes.length;
@@ -144,6 +147,7 @@
 	}
 	return annotations;
 }
+@Override
 public IMemberValuePair getDefaultValue() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	Object defaultValue = info.getDefaultValue();
@@ -156,6 +160,7 @@
 /*
  * @see IMethod
  */
+@Override
 public String[] getExceptionTypes() throws JavaModelException {
 	if (this.exceptionTypes == null) {
 		IBinaryMethod info = (IBinaryMethod) getElementInfo();
@@ -188,12 +193,14 @@
 /*
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return METHOD;
 }
 /*
  * @see IMember
  */
+@Override
 public int getFlags() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	int modifiers = info.getModifiers();
@@ -204,6 +211,7 @@
 /*
  * @see JavaElement#getHandleMemento(StringBuffer)
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	((JavaElement) getParent()).getHandleMemento(buff);
 	char delimiter = getHandleMementoDelimiter();
@@ -221,15 +229,18 @@
 /*
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_METHOD;
 }
+@Override
 public String getKey(boolean forceOpen) throws JavaModelException {
 	return getKey(this, forceOpen);
 }
 /*
  * @see IMethod
  */
+@Override
 public int getNumberOfParameters() {
 	return this.parameterTypes == null ? 0 : this.parameterTypes.length;
 }
@@ -237,6 +248,7 @@
  * @see IMethod
  * Look for source attachment information to retrieve the actual parameter names as stated in source.
  */
+@Override
 public String[] getParameterNames() throws JavaModelException {
 	if (this.parameterNames != null)
 		return this.parameterNames;
@@ -251,8 +263,8 @@
 		if(paramNames == null) {
 			IBinaryType info = (IBinaryType) ((BinaryType) getDeclaringType()).getElementInfo();
 			char[] source = mapper.findSource(type, info);
-			if (source != null){
-				mapper.mapSource(type, source, info);
+			if (source != null) {
+				mapper.mapSource((NamedMember) type, source, info);
 			}
 			paramNames = mapper.getMethodParameterNames(this);
 		}
@@ -328,6 +340,7 @@
 			 */
 			final ParametersNameCollector nameCollector = new ParametersNameCollector();
 			Thread collect = new Thread() {
+				@Override
 				public void run() {
 					try {
 						// this call has a side-effect on the per project info cache
@@ -492,6 +505,7 @@
 /*
  * @see IMethod
  */
+@Override
 public String[] getParameterTypes() {
 	return this.parameterTypes;
 }
@@ -515,10 +529,12 @@
 	return getErasedParameterTypes()[index];
 }
 
+@Override
 public ITypeParameter getTypeParameter(String typeParameterName) {
 	return new TypeParameter(this, typeParameterName);
 }
 
+@Override
 public ITypeParameter[] getTypeParameters() throws JavaModelException {
 	String[] typeParameterSignatures = getTypeParameterSignatures();
 	int length = typeParameterSignatures.length;
@@ -536,6 +552,7 @@
  * @since 3.0
  * @deprecated
  */
+@Override
 public String[] getTypeParameterSignatures() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	char[] genericSignature = info.getGenericSignature();
@@ -546,6 +563,7 @@
 	return CharOperation.toStrings(typeParams);
 }
 
+@Override
 public String[] getRawParameterNames() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	int paramCount = Signature.getParameterCount(new String(info.getMethodDescriptor()));
@@ -562,6 +580,7 @@
 /*
  * @see IMethod
  */
+@Override
 public String getReturnType() throws JavaModelException {
 	if (this.returnType == null) {
 		IBinaryMethod info = (IBinaryMethod) getElementInfo();
@@ -579,6 +598,7 @@
 /*
  * @see IMethod
  */
+@Override
 public String getSignature() throws JavaModelException {
 	IBinaryMethod info = (IBinaryMethod) getElementInfo();
 	return new String(info.getMethodDescriptor());
@@ -586,6 +606,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.core.JavaElement#hashCode()
  */
+@Override
 public int hashCode() {
    int hash = super.hashCode();
 	for (int i = 0, length = this.parameterTypes.length; i < length; i++) {
@@ -596,6 +617,7 @@
 /*
  * @see IMethod
  */
+@Override
 public boolean isConstructor() throws JavaModelException {
 	if (!getElementName().equals(this.parent.getElementName())) {
 		// faster than reaching the info
@@ -607,24 +629,26 @@
 /*
  * @see IMethod#isMainMethod()
  */
+@Override
 public boolean isMainMethod() throws JavaModelException {
 	return this.isMainMethod(this);
 }
 /*
  * @see IMethod#isLambdaMethod()
  */
+@Override
 public boolean isLambdaMethod() {
 	return false;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IMethod#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
 /*
  * @see IMethod#isSimilar(IMethod)
  */
+@Override
 public boolean isSimilar(IMethod method) {
 	return
 		areSimilarMethods(
@@ -633,6 +657,7 @@
 			null);
 }
 
+@Override
 public String readableName() {
 
 	StringBuffer buffer = new StringBuffer(super.readableName());
@@ -650,6 +675,7 @@
 	buffer.append(")"); //$NON-NLS-1$
 	return buffer.toString();
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	SourceRefElement resolvedHandle = new ResolvedBinaryMethod(this.parent, this.name, this.parameterTypes, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -657,6 +683,7 @@
 }/*
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
@@ -677,6 +704,7 @@
 		toStringName(buffer, flags);
 	}
 }
+@Override
 protected void toStringName(StringBuffer buffer) {
 	toStringName(buffer, 0);
 }
@@ -713,6 +741,7 @@
 		buffer.append(this.occurrenceCount);
 	}
 }
+@Override
 public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
 	JavadocContents javadocContents = ((BinaryType) this.getDeclaringType()).getJavadocContents(monitor);
 	if (javadocContents == null) return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.java
new file mode 100644
index 0000000..cdc4849
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryModule.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.net.URL;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.aspectj.org.eclipse.jdt.core.IAnnotation;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.ISourceRange;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
+
+public class BinaryModule extends BinaryMember implements AbstractModule {
+
+	private IBinaryModule info;
+	
+	/** For creating a pure handle from its memento. */
+	public BinaryModule(JavaElement parent, String name) {
+		super(parent, name);
+	}
+	/** For creating a populated handle from a class file. */
+	public BinaryModule(JavaElement parent, IBinaryModule info) {
+		super(parent, String.valueOf(info.name()));
+		this.info = info;
+	}
+	@Override
+	public IModule getModuleInfo() throws JavaModelException {
+		if (this.info == null) {
+			ModularClassFile classFile = (ModularClassFile) this.parent;
+			this.info = classFile.getBinaryModuleInfo();			
+		}
+		return this.info;
+	}
+	@Override
+	public IAnnotation[] getAnnotations() throws JavaModelException {
+		IBinaryModule moduleInfo = (IBinaryModule) getModuleInfo();
+		IBinaryAnnotation[] binaryAnnotations = moduleInfo.getAnnotations();
+		long tagBits = moduleInfo.getTagBits() & ~TagBits.AnnotationDeprecated; // TODO: kludge to avoid duplication of real annotation and tagBit induced standard annotation
+		return getAnnotations(binaryAnnotations, tagBits);
+	}
+	@Override
+	public IJavaElement[] getChildren() throws JavaModelException {
+		return NO_ELEMENTS;
+	}
+	@Override
+	public boolean isBinary() {
+		return true;
+	}
+	@Override
+	public int getFlags() throws JavaModelException {
+		if (getModuleInfo().isOpen())
+			return ClassFileConstants.ACC_OPEN;
+		return 0;
+	}
+	@Override
+	public char getHandleMementoDelimiter() {
+		return JavaElement.JEM_MODULE;
+	}
+	@Override
+	public String getKey(boolean forceOpen) throws JavaModelException {
+		return getKey(this, forceOpen);
+	}
+	@Override
+	public ISourceRange getSourceRange() throws JavaModelException {
+		SourceMapper mapper= getSourceMapper();
+		if (mapper != null) {
+			// ensure the class file's buffer is open so that source ranges are computed
+			((ModularClassFile)getClassFile()).getBuffer();
+
+			return mapper.getSourceRange(this);
+		} else {
+			return SourceMapper.UNKNOWN_RANGE;
+		}
+	}
+	@Override
+	public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
+		JavadocContents javadocContents = getJavadocContents(monitor);
+		if (javadocContents == null) return null;
+		return javadocContents.getModuleDoc();
+	}
+	public JavadocContents getJavadocContents(IProgressMonitor monitor) throws JavaModelException {
+		PerProjectInfo projectInfo = JavaModelManager.getJavaModelManager().getPerProjectInfoCheckExistence(getJavaProject().getProject());
+		JavadocContents cachedJavadoc = null;
+		synchronized (projectInfo.javadocCache) {
+			cachedJavadoc = (JavadocContents) projectInfo.javadocCache.get(this);
+		}
+		
+		if (cachedJavadoc != null && cachedJavadoc != BinaryType.EMPTY_JAVADOC) {
+			return cachedJavadoc;
+		}
+		URL baseLocation= getJavadocBaseLocation();
+		if (baseLocation == null) {
+			return null;
+		}
+		StringBuffer pathBuffer = new StringBuffer(baseLocation.toExternalForm());
+
+		if (!(pathBuffer.charAt(pathBuffer.length() - 1) == '/')) {
+			pathBuffer.append('/');
+		}
+		pathBuffer.append(getElementName()).append(JavadocConstants.MODULE_FILE_SUFFIX);
+		if (monitor != null && monitor.isCanceled()) throw new OperationCanceledException();
+		String contents = getURLContents(baseLocation, String.valueOf(pathBuffer));
+		JavadocContents javadocContents = new JavadocContents(contents);
+		synchronized (projectInfo.javadocCache) {
+			projectInfo.javadocCache.put(this, javadocContents);
+		}
+		return javadocContents;
+	}
+	@Override
+	public String toString(String lineDelimiter) {
+		StringBuffer buffer = new StringBuffer();
+		try {
+			toStringContent(buffer, lineDelimiter);
+		} catch (JavaModelException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return buffer.toString();
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.java
index 51a74b4..1db6c11 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BinaryType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -55,6 +55,7 @@
 /*
  * Remove my cached children from the Java Model
  */
+@Override
 protected void closing(Object info) throws JavaModelException {
 	ClassFileInfo cfi = getClassFileInfo();
 	cfi.removeBinaryChildren();
@@ -64,6 +65,7 @@
  * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor)
  * @deprecated
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,ICompletionRequestor requestor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
@@ -72,33 +74,30 @@
  * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor, WorkingCopyOwner)
  * @deprecated
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	if (requestor == null) {
 		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
 	}
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, new org.aspectj.org.eclipse.jdt.internal.codeassist.CompletionRequestorWrapper(requestor), owner);
 }
-/*
- * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor)
- */
+
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
-/*
- * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor, IProgressMonitor)
- */
+
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor, WorkingCopyOwner)
- */
+
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, owner, null);
 }
-/*
- * @see IType#codeComplete(char[], int, int, char[][], char[][], int[], boolean, ICompletionRequestor, WorkingCopyOwner, IProgressMonitor)
- */
+
+@Override
 public void codeComplete(
 		char[] snippet,
 		int insertion,
@@ -114,7 +113,7 @@
 		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
 	}
 	JavaProject project = (JavaProject) getJavaProject();
-	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner);
+	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner, requestor.isTestCodeExcluded());
 	CompletionEngine engine = new CompletionEngine(environment, requestor, project.getOptions(true), project, owner, monitor);
 
 	String source = getClassFile().getSource();
@@ -142,37 +141,32 @@
 	}
 }
 
-/*
- * @see IType#createField(String, IJavaElement, boolean, IProgressMonitor)
- */
+@Override
 public IField createField(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
-/*
- * @see IType#createInitializer(String, IJavaElement, IProgressMonitor)
- */
+
+@Override
 public IInitializer createInitializer(String contents, IJavaElement sibling, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
-/*
- * @see IType#createMethod(String, IJavaElement, boolean, IProgressMonitor)
- */
+
+@Override
 public IMethod createMethod(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
-/*
- * @see IType#createType(String, IJavaElement, boolean, IProgressMonitor)
- */
+
+@Override
 public IType createType(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof BinaryType)) return false;
 	return super.equals(o);
 }
-/*
- * @see IType#findMethods(IMethod)
- */
+
+@Override
 public IMethod[] findMethods(IMethod method) {
 	try {
 		return findMethods(method, getMethods());
@@ -181,18 +175,19 @@
 		return null;
 	}
 }
+@Override
 public IAnnotation[] getAnnotations() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	IBinaryAnnotation[] binaryAnnotations = info.getAnnotations();
 	return getAnnotations(binaryAnnotations, info.getTagBits());
 }
-/*
- * @see IParent#getChildren()
- */
+
+@Override
 public IJavaElement[] getChildren() throws JavaModelException {
 	ClassFileInfo cfi = getClassFileInfo();
 	return cfi.binaryChildren;
 }
+@Override
 public IJavaElement[] getChildrenForCategory(String category) throws JavaModelException {
 	IJavaElement[] children = getChildren();
 	int length = children.length;
@@ -200,7 +195,7 @@
 	SourceMapper mapper= getSourceMapper();
 	if (mapper != null) {
 		// ensure the class file's buffer is open so that categories are computed
-		((ClassFile)getClassFile()).getBuffer();
+		getClassFile().getBuffer();
 
 		HashMap categories = mapper.categories;
 		IJavaElement[] result = new IJavaElement[length];
@@ -226,14 +221,15 @@
 	return NO_ELEMENTS;
 }
 protected ClassFileInfo getClassFileInfo() throws JavaModelException {
-	ClassFile cf = (ClassFile)this.parent;
-	return (ClassFileInfo) cf.getElementInfo();
+	return (ClassFileInfo) this.parent.getElementInfo();
 }
-/*
- * @see IMember#getDeclaringType()
- */
+@Override
+public IOrdinaryClassFile getClassFile() {
+	return (IOrdinaryClassFile) super.getClassFile();
+}
+@Override
 public IType getDeclaringType() {
-	IClassFile classFile = getClassFile();
+	IOrdinaryClassFile classFile = getClassFile();
 	if (classFile.isOpen()) {
 		try {
 			char[] enclosingTypeName = ((IBinaryType) getElementInfo()).getEnclosingTypeName();
@@ -249,7 +245,7 @@
 				return null;
 			}
 
-			return getPackageFragment().getClassFile(new String(enclosingTypeName) + SUFFIX_STRING_class).getType();
+			return getPackageFragment().getOrdinaryClassFile(new String(enclosingTypeName) + SUFFIX_STRING_class).getType();
 		} catch (JavaModelException npe) {
 			return null;
 		}
@@ -280,6 +276,7 @@
 		}
 	}
 }
+@Override
 public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	Object info = manager.getInfo(this);
@@ -289,18 +286,17 @@
 /*
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return TYPE;
 }
-/*
- * @see IType#getField(String name)
- */
+
+@Override
 public IField getField(String fieldName) {
 	return new BinaryField(this, fieldName);
 }
-/*
- * @see IType#getFields()
- */
+
+@Override
 public IField[] getFields() throws JavaModelException {
 	ArrayList list = getChildrenOfType(FIELD);
 	int size;
@@ -312,22 +308,19 @@
 		return array;
 	}
 }
-/*
- * @see IMember#getFlags()
- */
+
+@Override
 public int getFlags() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return info.getModifiers() & ~ClassFileConstants.AccSuper;
 }
-/*
- * @see IType#getFullyQualifiedName()
- */
+
+@Override
 public String getFullyQualifiedName() {
 	return this.getFullyQualifiedName('$');
 }
-/*
- * @see IType#getFullyQualifiedName(char enclosingTypeSeparator)
- */
+
+@Override
 public String getFullyQualifiedName(char enclosingTypeSeparator) {
 	try {
 		return getFullyQualifiedName(enclosingTypeSeparator, false/*don't show parameters*/);
@@ -337,9 +330,7 @@
 	}
 }
 
-/*
- * @see IType#getFullyQualifiedParameterizedName()
- */
+@Override
 public String getFullyQualifiedParameterizedName() throws JavaModelException {
 	return getFullyQualifiedName('.', true/*show parameters*/);
 }
@@ -347,6 +338,7 @@
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_COUNT:
@@ -434,30 +426,27 @@
 	}
 	return null;
 }
-/*
- * @see IType#getInitializer(int occurrenceCount)
- */
+
+@Override
 public IInitializer getInitializer(int count) {
 	return new Initializer(this, count);
 }
-/*
- * @see IType#getInitializers()
- */
+
+@Override
 public IInitializer[] getInitializers() {
 	return NO_INITIALIZERS;
 }
+@Override
 public String getKey(boolean forceOpen) throws JavaModelException {
 	return getKey(this, forceOpen);
 }
-/*
- * @see IType#getMethod(String name, String[] parameterTypeSignatures)
- */
+
+@Override
 public IMethod getMethod(String selector, String[] parameterTypeSignatures) {
 	return new BinaryMethod(this, selector, parameterTypeSignatures);
 }
-/*
- * @see IType#getMethods()
- */
+
+@Override
 public IMethod[] getMethods() throws JavaModelException {
 	ArrayList list = getChildrenOfType(METHOD);
 	int size;
@@ -469,9 +458,8 @@
 		return array;
 	}
 }
-/*
- * @see IType#getPackageFragment()
- */
+
+@Override
 public IPackageFragment getPackageFragment() {
 	IJavaElement parentElement = this.parent;
 	while (parentElement != null) {
@@ -490,6 +478,7 @@
  * @see IType#getSuperclassTypeSignature()
  * @since 3.0
  */
+@Override
 public String getSuperclassTypeSignature() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	char[] genericSignature = info.getGenericSignature();
@@ -542,9 +531,7 @@
 	return sourceFileName(info);
 }
 
-/*
- * @see IType#getSuperclassName()
- */
+@Override
 public String getSuperclassName() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	char[] superclassName = info.getSuperclassName();
@@ -553,9 +540,8 @@
 	}
 	return new String(ClassFile.translatedName(superclassName));
 }
-/*
- * @see IType#getSuperInterfaceNames()
- */
+
+@Override
 public String[] getSuperInterfaceNames() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	char[][] names= info.getInterfaceNames();
@@ -575,6 +561,7 @@
  * @see IType#getSuperInterfaceTypeSignatures()
  * @since 3.0
  */
+@Override
 public String[] getSuperInterfaceTypeSignatures() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	char[] genericSignature = info.getGenericSignature();
@@ -624,6 +611,7 @@
 	}
 }
 
+@Override
 public ITypeParameter[] getTypeParameters() throws JavaModelException {
 	String[] typeParameterSignatures = getTypeParameterSignatures();
 	int length = typeParameterSignatures.length;
@@ -640,6 +628,7 @@
  * @see IType#getTypeParameterSignatures()
  * @since 3.0
  */
+@Override
 public String[] getTypeParameterSignatures() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	char[] genericSignature = info.getGenericSignature();
@@ -651,25 +640,22 @@
 	return CharOperation.toStrings(typeParams);
 }
 
-/*
- * @see IType#getType(String)
- */
+@Override
 public IType getType(String typeName) {
 	IClassFile classFile= getPackageFragment().getClassFile(getTypeQualifiedName() + "$" + typeName + SUFFIX_STRING_class); //$NON-NLS-1$
 	return new BinaryType((JavaElement)classFile, typeName);
 }
+@Override
 public ITypeParameter getTypeParameter(String typeParameterName) {
 	return new TypeParameter(this, typeParameterName);
 }
-/*
- * @see IType#getTypeQualifiedName()
- */
+
+@Override
 public String getTypeQualifiedName() {
 	return this.getTypeQualifiedName('$');
 }
-/*
- * @see IType#getTypeQualifiedName(char)
- */
+
+@Override
 public String getTypeQualifiedName(char enclosingTypeSeparator) {
 	try {
 		return getTypeQualifiedName(enclosingTypeSeparator, false/*don't show parameters*/);
@@ -678,9 +664,8 @@
 		return null;
 	}
 }
-/*
- * @see IType#getTypes()
- */
+
+@Override
 public IType[] getTypes() throws JavaModelException {
 	ArrayList list = getChildrenOfType(TYPE);
 	int size;
@@ -693,16 +678,13 @@
 	}
 }
 
-/*
- * @see IType#isAnonymous()
- */
+@Override
 public boolean isAnonymous() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return info.isAnonymous();
 }
-/*
- * @see IType#isClass()
- */
+
+@Override
 public boolean isClass() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.CLASS_DECL;
@@ -713,14 +695,13 @@
  * @see IType#isEnum()
  * @since 3.0
  */
+@Override
 public boolean isEnum() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.ENUM_DECL;
 }
 
-/*
- * @see IType#isInterface()
- */
+@Override
 public boolean isInterface() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	switch (TypeDeclaration.kind(info.getModifiers())) {
@@ -734,34 +715,32 @@
  * @see IType#isAnnotation()
  * @since 3.0
  */
+@Override
 public boolean isAnnotation() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.ANNOTATION_TYPE_DECL;
 }
 
-/*
- * @see IType#isLocal()
- */
+@Override
 public boolean isLocal() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return info.isLocal();
 }
-/*
- * @see IType#isMember()
- */
+
+@Override
 public boolean isMember() throws JavaModelException {
 	IBinaryType info = (IBinaryType) getElementInfo();
 	return info.isMember();
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IType#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
 /*
  * @see IType
  */
+@Override
 public ITypeHierarchy loadTypeHierachy(InputStream input, IProgressMonitor monitor) throws JavaModelException {
 	return loadTypeHierachy(input, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
@@ -771,15 +750,13 @@
 public ITypeHierarchy loadTypeHierachy(InputStream input, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
 	return TypeHierarchy.load(this, input, owner);
 }
-/*
- * @see IType#newSupertypeHierarchy(IProgressMonitor monitor)
- */
+
+@Override
 public ITypeHierarchy newSupertypeHierarchy(IProgressMonitor monitor) throws JavaModelException {
 	return this.newSupertypeHierarchy(DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- *@see IType#newSupertypeHierarchy(ICompilationUnit[], IProgressMonitor monitor)
- */
+
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	ICompilationUnit[] workingCopies,
 	IProgressMonitor monitor)
@@ -799,6 +776,7 @@
  * @see IType#newSupertypeHierarchy(IWorkingCopy[], IProgressMonitor)
  * @deprecated
  */
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	IWorkingCopy[] workingCopies,
 	IProgressMonitor monitor)
@@ -813,9 +791,8 @@
 	}
 	return newSupertypeHierarchy(copies, monitor);
 }
-/*
- * @see IType#newSupertypeHierarchy(WorkingCopyOwner, IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	WorkingCopyOwner owner,
 	IProgressMonitor monitor)
@@ -826,15 +803,13 @@
 	op.runOperation(monitor);
 	return op.getResult();
 }
-/*
- * @see IType#newTypeHierarchy(IJavaProject, IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newTypeHierarchy(IJavaProject project, IProgressMonitor monitor) throws JavaModelException {
 	return newTypeHierarchy(project, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- * @see IType#newTypeHierarchy(IJavaProject, WorkingCopyOwner, IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
 	if (project == null) {
 		throw new IllegalArgumentException(Messages.hierarchy_nullProject);
@@ -872,14 +847,14 @@
  * @see IType#newTypeHierarchy(IProgressMonitor monitor)
  * @deprecated
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(IProgressMonitor monitor) throws JavaModelException {
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=228845, consider any
 	// changes that may exist on primary working copies.
 	return newTypeHierarchy(DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- * @see IType#newTypeHierarchy(ICompilationUnit[], IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	ICompilationUnit[] workingCopies,
 	IProgressMonitor monitor)
@@ -893,6 +868,7 @@
  * @see IType#newTypeHierarchy(IWorkingCopy[], IProgressMonitor)
  * @deprecated
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	IWorkingCopy[] workingCopies,
 	IProgressMonitor monitor)
@@ -907,9 +883,8 @@
 	}
 	return newTypeHierarchy(copies, monitor);
 }
-/*
- * @see IType#newTypeHierarchy(WorkingCopyOwner, IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	WorkingCopyOwner owner,
 	IProgressMonitor monitor)
@@ -920,6 +895,7 @@
 	op.runOperation(monitor);
 	return op.getResult();
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	SourceRefElement resolvedHandle = new ResolvedBinaryType(this.parent, this.name, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -963,6 +939,7 @@
 /*
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
@@ -987,12 +964,14 @@
 		}
 	}
 }
+@Override
 protected void toStringName(StringBuffer buffer) {
 	if (getElementName().length() > 0)
 		super.toStringName(buffer);
 	else
 		buffer.append("<anonymous>"); //$NON-NLS-1$
 }
+@Override
 public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
 	JavadocContents javadocContents = getJavadocContents(monitor);
 	if (javadocContents == null) return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Buffer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Buffer.java
index 5a2b25f..ecf38dc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Buffer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Buffer.java
@@ -13,7 +13,7 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.util.ArrayList;
+import java.util.Iterator;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
@@ -21,6 +21,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.ListenerList;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.content.IContentDescription;
 import org.aspectj.org.eclipse.jdt.core.*;
@@ -34,7 +35,7 @@
 	protected IFile file;
 	protected int flags;
 	protected char[] contents;
-	protected ArrayList changeListeners;
+	protected ListenerList<IBufferChangedListener> changeListeners;
 	protected IOpenable owner;
 	protected int gapStart = -1;
 	protected int gapEnd = -1;
@@ -58,18 +59,18 @@
 /**
  * @see IBuffer
  */
+@Override
 public synchronized void addBufferChangedListener(IBufferChangedListener listener) {
 	if (this.changeListeners == null) {
-		this.changeListeners = new ArrayList(5);
+		this.changeListeners = new ListenerList();
 	}
-	if (!this.changeListeners.contains(listener)) {
-		this.changeListeners.add(listener);
-	}
+	this.changeListeners.add(listener);
 }
 /**
  * Append the <code>text</code> to the actual content, the gap is moved
  * to the end of the <code>text</code>.
  */
+@Override
 public void append(char[] text) {
 	if (!isReadOnly()) {
 		if (text == null || text.length == 0) {
@@ -90,6 +91,7 @@
  * Append the <code>text</code> to the actual content, the gap is moved
  * to the end of the <code>text</code>.
  */
+@Override
 public void append(String text) {
 	if (text == null) {
 		return;
@@ -99,6 +101,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public void close() {
 	BufferChangedEvent event = null;
 	synchronized (this.lock) {
@@ -116,6 +119,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public char getChar(int position) {
 	synchronized (this.lock) {
 	    if (this.contents == null) return Character.MIN_VALUE;
@@ -129,6 +133,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public char[] getCharacters() {
 	synchronized (this.lock) {
 		if (this.contents == null) return null;
@@ -145,6 +150,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public String getContents() {
 	char[] chars = getCharacters();
 	if (chars == null) return null;
@@ -153,6 +159,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public int getLength() {
 	synchronized (this.lock) {
 		if (this.contents == null) return -1;
@@ -163,12 +170,14 @@
 /**
  * @see IBuffer
  */
+@Override
 public IOpenable getOwner() {
 	return this.owner;
 }
 /**
  * @see IBuffer
  */
+@Override
 public String getText(int offset, int length) {
 	synchronized (this.lock) {
 		if (this.contents == null) return ""; //$NON-NLS-1$
@@ -187,24 +196,28 @@
 /**
  * @see IBuffer
  */
+@Override
 public IResource getUnderlyingResource() {
 	return this.file;
 }
 /**
  * @see IBuffer
  */
+@Override
 public boolean hasUnsavedChanges() {
 	return (this.flags & F_HAS_UNSAVED_CHANGES) != 0;
 }
 /**
  * @see IBuffer
  */
+@Override
 public boolean isClosed() {
 	return (this.flags & F_IS_CLOSED) != 0;
 }
 /**
  * @see IBuffer
  */
+@Override
 public boolean isReadOnly() {
 	return (this.flags & F_IS_READ_ONLY) != 0;
 }
@@ -255,25 +268,28 @@
  * To avoid deadlock, this should not be called in a synchronized block.
  */
 protected void notifyChanged(final BufferChangedEvent event) {
-	ArrayList listeners = this.changeListeners;
+	ListenerList<IBufferChangedListener> listeners = this.changeListeners;
 	if (listeners != null) {
-		for (int i = 0, size = listeners.size(); i < size; ++i) {
-			final IBufferChangedListener listener = (IBufferChangedListener) listeners.get(i);
+		Iterator<IBufferChangedListener> iterator = listeners.iterator();
+		while (iterator.hasNext()) {
+			final IBufferChangedListener listener = iterator.next();
 			SafeRunner.run(new ISafeRunnable() {
+				@Override
 				public void handleException(Throwable exception) {
 					Util.log(exception, "Exception occurred in listener of buffer change notification"); //$NON-NLS-1$
 				}
+				@Override
 				public void run() throws Exception {
 					listener.bufferChanged(event);
 				}
 			});
-
 		}
 	}
 }
 /**
  * @see IBuffer
  */
+@Override
 public synchronized void removeBufferChangedListener(IBufferChangedListener listener) {
 	if (this.changeListeners != null) {
 		this.changeListeners.remove(listener);
@@ -287,6 +303,7 @@
  * After that operation, the gap is placed at the end of the
  * inserted <code>text</code>.
  */
+@Override
 public void replace(int position, int length, char[] text) {
 	if (!isReadOnly()) {
 		int textLength = text == null ? 0 : text.length;
@@ -323,12 +340,14 @@
  * After that operation, the gap is placed at the end of the
  * inserted <code>text</code>.
  */
+@Override
 public void replace(int position, int length, String text) {
 	this.replace(position, length, text == null ? null : text.toCharArray());
 }
 /**
  * @see IBuffer
  */
+@Override
 public void save(IProgressMonitor progress, boolean force) throws JavaModelException {
 
 	// determine if saving is required
@@ -400,6 +419,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public void setContents(char[] newContents) {
 	// allow special case for first initialization
 	// after creation by buffer factory
@@ -430,6 +450,7 @@
 /**
  * @see IBuffer
  */
+@Override
 public void setContents(String newContents) {
 	this.setContents(newContents.toCharArray());
 }
@@ -443,6 +464,7 @@
 		this.flags &= ~(F_IS_READ_ONLY);
 	}
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append("Owner: " + ((JavaElement)this.owner).toStringWithAncestors()); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.java
index 06c978d..8c7a584 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferCache.java
@@ -11,6 +11,7 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import java.util.ArrayList;
+import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.core.IBuffer;
 import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache;
@@ -18,60 +19,54 @@
 /**
  * An LRU cache of <code>IBuffers</code>.
  */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public class BufferCache extends OverflowingLRUCache {
+public class BufferCache<K> extends OverflowingLRUCache<K, IBuffer> {
 
-	private ThreadLocal buffersToClose = new ThreadLocal();
-/**
- * Constructs a new buffer cache of the given size.
- */
-public BufferCache(int size) {
-	super(size);
-}
-/**
- * Constructs a new buffer cache of the given size.
- */
-public BufferCache(int size, int overflow) {
-	super(size, overflow);
-}
-/**
- * Returns true if the buffer is successfully closed and
- * removed from the cache, otherwise false.
- *
- * <p>NOTE: this triggers an external removal of this buffer
- * by closing the buffer.
- */
-protected boolean close(LRUCacheEntry entry) {
-	IBuffer buffer= (IBuffer) entry.value;
+	private ThreadLocal<List<IBuffer>> buffersToClose = new ThreadLocal<>();
 
-	// prevent buffer that have unsaved changes or working copy buffer to be removed
-	// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=39311
-	if (!((Openable)buffer.getOwner()).canBufferBeRemovedFromCache(buffer)) {
-		return false;
-	} else {
-		ArrayList buffers = (ArrayList) this.buffersToClose.get();
-		if (buffers == null) {
-			buffers = new ArrayList();
-			this.buffersToClose.set(buffers);
-		}
-		buffers.add(buffer);
-		return true;
-	}
-}
-
-void closeBuffers() {
-	ArrayList buffers = (ArrayList) this.buffersToClose.get();
-	if (buffers == null)
-		return;
-	this.buffersToClose.set(null);
-	for (int i = 0, length = buffers.size(); i < length; i++) {
-		((IBuffer) buffers.get(i)).close();
-	}
-}
 	/**
-	 * Returns a new instance of the reciever.
+	 * Constructs a new buffer cache of the given size.
 	 */
-	protected LRUCache newInstance(int size, int newOverflow) {
-		return new BufferCache(size, newOverflow);
+	public BufferCache(int size) {
+		super(size);
+	}
+	/**
+	 * Constructs a new buffer cache of the given size.
+	 */
+	public BufferCache(int size, int overflow) {
+		super(size, overflow);
+	}
+
+	@Override
+	protected boolean close(LRUCacheEntry<K, IBuffer> entry) {
+		IBuffer buffer= entry.value;
+
+		// prevent buffer that have unsaved changes or working copy buffer to be removed
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=39311
+		if (!((Openable)buffer.getOwner()).canBufferBeRemovedFromCache(buffer)) {
+			return false;
+		} else {
+			List<IBuffer> buffers = this.buffersToClose.get();
+			if (buffers == null) {
+				buffers = new ArrayList<>();
+				this.buffersToClose.set(buffers);
+			}
+			buffers.add(buffer);
+			return true;
+		}
+	}
+
+	void closeBuffers() {
+		List<IBuffer> buffers = this.buffersToClose.get();
+		if (buffers == null)
+			return;
+		this.buffersToClose.set(null);
+		for (int i = 0, length = buffers.size(); i < length; i++) {
+			buffers.get(i).close();
+		}
+	}
+
+	@Override
+	protected LRUCache<K, IBuffer> newInstance(int size, int newOverflow) {
+		return new BufferCache<>(size, newOverflow);
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.java
index 93bd276..024e192 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferFactoryWrapper.java
@@ -31,24 +31,25 @@
 		return new BufferFactoryWrapper(factory);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner#createBuffer(org.aspectj.org.eclipse.jdt.core.ICompilationUnit)
-	 */
+	@Override
 	public IBuffer createBuffer(ICompilationUnit workingCopy) {
 		if (this.factory == null) return super.createBuffer(workingCopy);
 		return this.factory.createBuffer(workingCopy);
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof BufferFactoryWrapper)) return false;
 		BufferFactoryWrapper other = (BufferFactoryWrapper)obj;
 		if (this.factory == null) return other.factory == null;
 		return this.factory.equals(other.factory);
 	}
+	@Override
 	public int hashCode() {
 		if (this.factory == null) return 0;
 		return this.factory.hashCode();
 	}
+	@Override
 	public String toString() {
 		return "FactoryWrapper for " + this.factory; //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.java
index f2bb239..aea8608 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/BufferManager.java
@@ -22,7 +22,6 @@
  * The buffer manager manages the set of open buffers.
  * It implements an LRU cache of buffers.
  */
-@SuppressWarnings("rawtypes")
 public class BufferManager {
 
 	protected static BufferManager DEFAULT_BUFFER_MANAGER;
@@ -32,7 +31,7 @@
 	 * LRU cache of buffers. The key and value for an entry
 	 * in the table is the identical buffer.
 	 */
-	private BufferCache openBuffers = new BufferCache(60);
+	private BufferCache<IOpenable> openBuffers = new BufferCache<>(60);
 
 	/**
 	 * @deprecated
@@ -41,6 +40,7 @@
 	    /**
 	     * @deprecated
 	     */
+		@Override
 		public IBuffer createBuffer(IOpenable owner) {
 			return BufferManager.createBuffer(owner);
 		}
@@ -88,7 +88,7 @@
  */
 public IBuffer getBuffer(IOpenable owner) {
 	synchronized (this.openBuffers) {
-		return (IBuffer)this.openBuffers.get(owner);
+		return this.openBuffers.get(owner);
 	}
 }
 /**
@@ -115,8 +115,8 @@
  * @see OverflowingLRUCache
  * @return Enumeration of IBuffer
  */
-public Enumeration getOpenBuffers() {
-	Enumeration result;
+public Enumeration<IBuffer> getOpenBuffers() {
+	Enumeration<IBuffer> result;
 	synchronized (this.openBuffers) {
 		this.openBuffers.shrink();
 		result = this.openBuffers.elements();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.java
index 00713dc..a690abd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableNameEnvironment.java
@@ -23,7 +23,10 @@
 	private IProgressMonitor monitor;
 
 	public CancelableNameEnvironment(JavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
-		super(project, owner);
+		this(project, owner, monitor, false);
+	}
+	public CancelableNameEnvironment(JavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor, boolean excludeTestCode) throws JavaModelException {
+		super(project, owner, excludeTestCode);
 		setMonitor(monitor);
 	}
 
@@ -35,30 +38,34 @@
 		}
 	}
 
+	@Override
 	public void findPackages(char[] prefix, ISearchRequestor requestor) {
 		checkCanceled();
 		super.findPackages(prefix, requestor);
 	}
 
+	@Override
 	public NameEnvironmentAnswer findType(char[] name, char[][] packageName) {
 		checkCanceled();
 		return super.findType(name, packageName);
 	}
 
-	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes) {
-		return findType(typeName, packageName);
-	}
-
+	@Override
 	public NameEnvironmentAnswer findType(char[][] compoundTypeName) {
 		checkCanceled();
 		return super.findType(compoundTypeName);
 	}
-
+	@Override
+	public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, boolean searchWithSecondaryTypes, char[] moduleName) {
+		return findType(typeName, packageName, moduleName);
+	}
+	@Override
 	public void findTypes(char[] prefix, boolean findMembers, boolean camelCaseMatch, int searchFor, ISearchRequestor storage, IProgressMonitor progressMonitor) {
 		checkCanceled();
 		super.findTypes(prefix, findMembers, camelCaseMatch, searchFor, storage, progressMonitor);
 	}
 	
+	@Override
 	public void setMonitor(IProgressMonitor monitor) {
 		this.monitor = monitor;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.java
index 723576d..9172e52 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CancelableProblemFactory.java
@@ -25,12 +25,14 @@
 		this.monitor = monitor;
 	}
 
+	@Override
 	public CategorizedProblem createProblem(char[] originatingFileName, int problemId, String[] problemArguments, String[] messageArguments, int severity, int startPosition, int endPosition, int lineNumber, int columnNumber) {
 		if (this.monitor != null && this.monitor.isCanceled())
 			throw new AbortCompilation(true/*silent*/, new OperationCanceledException());
 		return super.createProblem(originatingFileName, problemId, problemArguments, messageArguments, severity, startPosition, endPosition, lineNumber, columnNumber);
 	}
 
+	@Override
 	public CategorizedProblem createProblem(char[] originatingFileName, int problemId, String[] problemArguments, int elaborationId, String[] messageArguments, int severity, int startPosition, int endPosition, int lineNumber, int columnNumber) {
 		if (this.monitor != null && this.monitor.isCanceled())
 			throw new AbortCompilation(true/*silent*/, new OperationCanceledException());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
index 55e0c4d..63ed1c1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ChangeClasspathOperation.java
@@ -27,6 +27,7 @@
 		this.canChangeResources = canChangeResources;
 	}
 
+	@Override
 	protected boolean canModifyRoots() {
 		// changing the classpath can modify roots
 		return true;
@@ -54,10 +55,7 @@
 			// delta, indexing and classpath markers are going to be created by the delta processor
 			// while handling the resource change (either .classpath change, or project touched)
 
-			// however ensure project references are updated
-			// since some clients rely on the project references when run inside an IWorkspaceRunnable
-			new ProjectReferenceChange(project, change.oldResolvedClasspath).updateProjectReferencesIfNecessary();
-
+			project.getProject().clearCachedDynamicReferences();
 			// and ensure that external folders are updated as well
 			new ExternalFolderChange(project, change.oldResolvedClasspath).updateExternalFoldersIfNecessary(refreshExternalFolder, null);
 
@@ -80,7 +78,8 @@
 			}
 			if ((result & ClasspathChange.HAS_PROJECT_CHANGE) != 0) {
 				// ensure project references are updated on next build
-				state.addProjectReferenceChange(project, change.oldResolvedClasspath);
+				project.getProject().clearCachedDynamicReferences();
+				state.addProjectReferenceChange(project);
 			}
 			if ((result & ClasspathChange.HAS_LIBRARY_CHANGE) != 0) {
 				// ensure external folders are updated on next build
@@ -89,10 +88,12 @@
 		}
 	}
 
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		return null; // no lock taken while changing classpath
 	}
 
+	@Override
 	public boolean isReadOnly() {
 		return !this.canChangeResources;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.java
index b995a79..a091c7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,12 +17,8 @@
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
@@ -33,11 +29,13 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.aspectj.org.eclipse.jdt.core.*;
-import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationProvider;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaNames;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.model.BinaryTypeDescriptor;
@@ -51,9 +49,8 @@
  */
 
 @SuppressWarnings({"rawtypes"})
-public class ClassFile extends Openable implements IClassFile, SuffixConstants {
+public class ClassFile extends AbstractClassFile implements IOrdinaryClassFile {
 
-	protected String name;
 	protected BinaryType binaryType = null;
 
 	private IPath externalAnnotationBase;
@@ -62,27 +59,7 @@
  * Creates a handle to a class file.
  */
 protected ClassFile(PackageFragment parent, String nameWithoutExtension) {
-	super(parent);
-	this.name = nameWithoutExtension;
-}
-
-/*
- * @see IClassFile#becomeWorkingCopy(IProblemRequestor, WorkingCopyOwner, IProgressMonitor)
- */
-public ICompilationUnit becomeWorkingCopy(IProblemRequestor problemRequestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
-	JavaModelManager manager = JavaModelManager.getJavaModelManager();
-	CompilationUnit workingCopy = new ClassFileWorkingCopy(this, owner == null ? DefaultWorkingCopyOwner.PRIMARY : owner);
-	JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo = manager.getPerWorkingCopyInfo(workingCopy, false/*don't create*/, true /*record usage*/, null/*no problem requestor needed*/);
-	if (perWorkingCopyInfo == null) {
-		// close cu and its children
-		close();
-
-		BecomeWorkingCopyOperation operation = new BecomeWorkingCopyOperation(workingCopy, problemRequestor);
-		operation.runOperation(monitor);
-
-		return workingCopy;
-	}
-	return perWorkingCopyInfo.workingCopy;
+	super(parent, nameWithoutExtension);
 }
 
 /**
@@ -102,58 +79,17 @@
 		info.setChildren(new IJavaElement[] {});
 		return false;
 	}
-
+	
 	// Make the type
 	IType type = getType();
 	info.setChildren(new IJavaElement[] {type});
 	newElements.put(type, typeInfo);
-
 	// Read children
 	((ClassFileInfo) info).readBinaryChildren(this, (HashMap) newElements, typeInfo);
-
 	return true;
 }
-/**
- * @see ICodeAssist#codeComplete(int, ICompletionRequestor)
- * @deprecated
- */
-@Deprecated
-public void codeComplete(int offset, ICompletionRequestor requestor) throws JavaModelException {
-	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
-}
-/**
- * @see ICodeAssist#codeComplete(int, ICompletionRequestor, WorkingCopyOwner)
- * @deprecated
- */
-@Deprecated
-public void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
-	if (requestor == null) {
-		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
-	}
-	codeComplete(offset, new org.aspectj.org.eclipse.jdt.internal.codeassist.CompletionRequestorWrapper(requestor), owner);
-}
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor)
- */
-public void codeComplete(int offset, CompletionRequestor requestor) throws JavaModelException {
-	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
-}
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.eclipse.core.runtime.IProgressMonitor)
- */
-public void codeComplete(int offset, CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
-	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY, monitor);
-}
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner)
- */
-public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
-	codeComplete(offset, requestor, owner, null);
-}
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner, org.eclipse.core.runtime.IProgressMonitor)
- */
+@Override
 public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
 	String source = getSource();
 	if (source != null) {
@@ -169,39 +105,21 @@
 }
 
 /**
- * @see ICodeAssist#codeSelect(int, int)
- */
-public IJavaElement[] codeSelect(int offset, int length) throws JavaModelException {
-	return codeSelect(offset, length, DefaultWorkingCopyOwner.PRIMARY);
-}
-/**
  * @see ICodeAssist#codeSelect(int, int, WorkingCopyOwner)
  */
+@Override
 public IJavaElement[] codeSelect(int offset, int length, WorkingCopyOwner owner) throws JavaModelException {
 	IBuffer buffer = getBuffer();
 	char[] contents;
 	if (buffer != null && (contents = buffer.getCharacters()) != null) {
 	    BinaryType type = (BinaryType) getType();
-		BasicCompilationUnit cu = new BasicCompilationUnit(contents, null, type.sourceFileName((IBinaryType) type.getElementInfo()));
+		BasicCompilationUnit cu = new BasicCompilationUnit(contents, null, type.sourceFileName((IBinaryType) type.getElementInfo()), this);
 		return super.codeSelect(cu, offset, length, owner);
 	} else {
 		//has no associated souce
 		return new IJavaElement[] {};
 	}
 }
-/**
- * Returns a new element info for this element.
- */
-@Override
-protected Object createElementInfo() {
-	return new ClassFileInfo();
-}
-@Override
-public boolean equals(Object o) {
-	if (!(o instanceof ClassFile)) return false;
-	ClassFile other = (ClassFile) o;
-	return this.name.equals(other.name) && this.parent.equals(other.parent);
-}
 public boolean existsUsingJarTypeCache() {
 	if (getPackageFragmentRoot().isArchive()) {
 		JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -239,34 +157,9 @@
 }
 
 /**
- * Finds the deepest <code>IJavaElement</code> in the hierarchy of
- * <code>elt</elt>'s children (including <code>elt</code> itself)
- * which has a source range that encloses <code>position</code>
- * according to <code>mapper</code>.
- */
-protected IJavaElement findElement(IJavaElement elt, int position, SourceMapper mapper) {
-	SourceRange range = mapper.getSourceRange(elt);
-	if (range == null || position < range.getOffset() || range.getOffset() + range.getLength() - 1 < position) {
-		return null;
-	}
-	if (elt instanceof IParent) {
-		try {
-			IJavaElement[] children = ((IParent) elt).getChildren();
-			for (int i = 0; i < children.length; i++) {
-				IJavaElement match = findElement(children[i], position, mapper);
-				if (match != null) {
-					return match;
-				}
-			}
-		} catch (JavaModelException npe) {
-			// elt doesn't exist: return the element
-		}
-	}
-	return elt;
-}
-/**
  * @see ITypeRoot#findPrimaryType()
  */
+@Override
 public IType findPrimaryType() {
 	IType primaryType= getType();
 	if (primaryType.exists()) {
@@ -314,36 +207,6 @@
 	}
 }
 
-public byte[] getBytes() throws JavaModelException {
-	JavaElement pkg = (JavaElement) getParent();
-	if (pkg instanceof JarPackageFragment) {
-		JarPackageFragmentRoot root = (JarPackageFragmentRoot) pkg.getParent();
-		ZipFile zip = null;
-		try {
-			zip = root.getJar();
-			String entryName = Util.concatWith(((PackageFragment) pkg).names, getElementName(), '/');
-			ZipEntry ze = zip.getEntry(entryName);
-			if (ze != null) {
-				return org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
-			}
-			throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, this));
-		} catch (IOException ioe) {
-			throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
-		} catch (CoreException e) {
-			if (e instanceof JavaModelException) {
-				throw (JavaModelException)e;
-			} else {
-				throw new JavaModelException(e);
-			}
-		} finally {
-			JavaModelManager.getJavaModelManager().closeZipFile(zip);
-		}
-	} else {
-		IFile file = (IFile) resource();
-		return Util.getResourceContentsAsByteArray(file);
-	}
-}
-
 public String getName() {
 	return this.name;
 }
@@ -354,36 +217,45 @@
 	if (descriptor == null) {
 		return null;
 	}
-
-	IBinaryType result = BinaryTypeFactory.readType(descriptor, null);
-
+	IBinaryType result = null;
+	IPackageFragmentRoot root = getPackageFragmentRoot();
+	if (getPackageFragmentRoot() instanceof JarPackageFragmentRoot) {
+		if (root instanceof JrtPackageFragmentRoot || this.name.equals(IModule.MODULE_INFO)) {
+			PackageFragment pkg = (PackageFragment) getParent();
+			JarPackageFragmentRoot jarRoot = (JarPackageFragmentRoot) getPackageFragmentRoot();
+			String entryName = jarRoot.getClassFilePath(Util.concatWith(pkg.names, getElementName(), '/'));
+			byte[] contents = getClassFileContent(jarRoot, entryName);
+			if (contents != null) {
+				String fileName = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName;
+				result = new ClassFileReader(contents, fileName.toCharArray(), false);
+			}
+		} else {
+			result = BinaryTypeFactory.readType(descriptor, null);
+		}
+	} else {
+		result = BinaryTypeFactory.readType(descriptor, null);
+	}
+		
 	if (result == null) {
 		return null;
 	}
 
 	// TODO(sxenos): setup the external annotation provider if the IBinaryType came from the index
-	// TODO(sxenos): the old code always passed null as the third argument to setupExternalAnnotationProvider,
-	// but this looks like a bug. I've preserved it for now but we need to figure out what was supposed to go
-	// there.
-	PackageFragment pkg = (PackageFragment) getParent();
-	IJavaElement grandparent = pkg.getParent();
-	if (grandparent instanceof JarPackageFragmentRoot) {
-		JarPackageFragmentRoot root = (JarPackageFragmentRoot) grandparent;
-
-		if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
-			JavaProject javaProject = (JavaProject) getAncestor(IJavaElement.JAVA_PROJECT);
-			IClasspathEntry entry = javaProject.getClasspathEntryFor(getPath());
-			if (entry != null) {
-				String entryName = new String(CharArrayUtils.concat(
-						JavaNames.fieldDescriptorToBinaryName(descriptor.fieldDescriptor), SuffixConstants.SUFFIX_CLASS));
-				IProject project = javaProject.getProject();
-				IPath externalAnnotationPath = ClasspathEntry.getExternalAnnotationPath(entry, project, false); // unresolved for use in ExternalAnnotationTracker
-				if (externalAnnotationPath != null) {
-					result = setupExternalAnnotationProvider(project, externalAnnotationPath, null, result, 
+	if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
+		JavaProject javaProject = (JavaProject) getAncestor(IJavaElement.JAVA_PROJECT);
+		IClasspathEntry entry = javaProject.getClasspathEntryFor(getPath());
+		if (entry != null) {
+			PackageFragment pkg = (PackageFragment) getParent();
+			String entryName = Util.concatWith(pkg.names, getElementName(), '/');
+			entryName = new String(CharArrayUtils.concat(
+					JavaNames.fieldDescriptorToBinaryName(descriptor.fieldDescriptor), SuffixConstants.SUFFIX_CLASS));
+			IProject project = javaProject.getProject();
+			IPath externalAnnotationPath = ClasspathEntry.getExternalAnnotationPath(entry, project, false); // unresolved for use in ExternalAnnotationTracker
+			if (externalAnnotationPath != null) {
+				result = setupExternalAnnotationProvider(project, externalAnnotationPath, result, 
 						entryName.substring(0, entryName.length() - SuffixConstants.SUFFIX_CLASS.length));
-				} else if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-					result = new ExternalAnnotationDecorator(result, true);
-				}
+			} else if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+				result = new ExternalAnnotationDecorator(result, true);
 			}
 		}
 	}
@@ -392,7 +264,7 @@
 }
 
 private IBinaryType setupExternalAnnotationProvider(IProject project, final IPath externalAnnotationPath,
-		ZipFile annotationZip, IBinaryType reader, final String typeName)
+		IBinaryType reader, final String typeName)
 {
 	IBinaryType result = reader;
 	// try resolve path within the workspace:
@@ -416,17 +288,16 @@
 	} else {
 		resolvedPath = externalAnnotationPath.toString(); // not in workspace, use as is
 	}
+	ZipFile annotationZip = null;
 	try {
-		if (annotationZip == null) {
-			annotationZip = ExternalAnnotationDecorator.getAnnotationZipFile(resolvedPath, new ExternalAnnotationDecorator.ZipFileProducer() {
-				@Override public ZipFile produce() throws IOException {
-					try {
-						return JavaModelManager.getJavaModelManager().getZipFile(externalAnnotationPath); // use (absolute, but) unresolved path here
-					} catch (CoreException e) {
-						throw new IOException("Failed to read annotation file for "+typeName+" from "+externalAnnotationPath.toString(), e); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-				}});
-		}
+		annotationZip = ExternalAnnotationDecorator.getAnnotationZipFile(resolvedPath, new ExternalAnnotationDecorator.ZipFileProducer() {
+			@Override public ZipFile produce() throws IOException {
+				try {
+					return JavaModelManager.getJavaModelManager().getZipFile(externalAnnotationPath); // use (absolute, but) unresolved path here
+				} catch (CoreException e) {
+					throw new IOException("Failed to read annotation file for "+typeName+" from "+externalAnnotationPath.toString(), e); //$NON-NLS-1$ //$NON-NLS-2$
+				}
+			}});
 
 		ExternalAnnotationProvider annotationProvider = ExternalAnnotationDecorator
 				.externalAnnotationProvider(resolvedPath, typeName, annotationZip);
@@ -434,6 +305,9 @@
 	} catch (IOException e) {
 		Util.log(e);
 		return result;
+	} finally {
+		if (annotationZip != null)
+			JavaModelManager.getJavaModelManager().closeZipFile(annotationZip);
 	}
 	if (annotationZip == null) {
 		// Additional change listening for individual types only when annotations are in individual files.
@@ -456,21 +330,6 @@
 	}
 	super.close();
 }
-@Override
-public IBuffer getBuffer() throws JavaModelException {
-	IStatus status = validateClassFile();
-	if (status.isOK()) {
-		return super.getBuffer();
-	} else {
-		switch (status.getCode()) {
-		case IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH: // don't throw a JavaModelException to be able to open .class file outside the classpath (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=138507 )
-		case IJavaModelStatusConstants.INVALID_ELEMENT_TYPES: // don't throw a JavaModelException to be able to open .class file in proj==src case without source (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=221904 )
-			return null;
-		default:
-			throw new JavaModelException((IJavaModelStatus) status);
-		}
-	}
-}
 /**
  * @see IMember
  */
@@ -479,29 +338,9 @@
 	return this;
 }
 /**
- * @see IMember#getTypeRoot()
- */
-public ITypeRoot getTypeRoot() {
-	return this;
-}
-/**
- * A class file has a corresponding resource unless it is contained
- * in a jar.
- *
- * @see IJavaElement
- */
-@Override
-public IResource getCorrespondingResource() throws JavaModelException {
-	IPackageFragmentRoot root= (IPackageFragmentRoot)getParent().getParent();
-	if (root.isArchive()) {
-		return null;
-	} else {
-		return getUnderlyingResource();
-	}
-}
-/**
  * @see IClassFile
  */
+@Override
 public IJavaElement getElementAt(int position) throws JavaModelException {
 	IJavaElement parentElement = getParent();
 	while (parentElement.getElementType() != IJavaElement.PACKAGE_FRAGMENT_ROOT) {
@@ -519,59 +358,7 @@
 		return findElement(type, position, mapper);
 	}
 }
-public IJavaElement getElementAtConsideringSibling(int position) throws JavaModelException {
-	IPackageFragment fragment = (IPackageFragment)getParent();
-	PackageFragmentRoot root = (PackageFragmentRoot) fragment.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
-	SourceMapper mapper = root.getSourceMapper();
-	if (mapper == null) {
-		return null;
-	} else {
-		int index = this.name.indexOf('$');
-		int prefixLength = index < 0 ? this.name.length() : index;
 
-		IType type = null;
-		int start = -1;
-		int end = Integer.MAX_VALUE;
-		IJavaElement[] children = fragment.getChildren();
-		for (int i = 0; i < children.length; i++) {
-			String childName = children[i].getElementName();
-
-			int childIndex = childName.indexOf('$');
-			int childPrefixLength = childIndex < 0 ? childName.indexOf('.') : childIndex;
-			if (prefixLength == childPrefixLength && this.name.regionMatches(0, childName, 0, prefixLength)) {
-				IClassFile classFile = (IClassFile) children[i];
-
-				// ensure this class file's buffer is open so that source ranges are computed
-				classFile.getBuffer();
-
-				SourceRange range = mapper.getSourceRange(classFile.getType());
-				if (range == SourceMapper.UNKNOWN_RANGE) continue;
-				int newStart = range.getOffset();
-				int newEnd = newStart + range.getLength() - 1;
-				if(newStart > start && newEnd < end
-						&& newStart <= position && newEnd >= position) {
-					type = classFile.getType();
-					start = newStart;
-					end = newEnd;
-				}
-			}
-		}
-		if(type != null) {
-			return findElement(type, position, mapper);
-		}
-		return null;
-	}
-}
-@Override
-public String getElementName() {
-	return this.name + SuffixConstants.SUFFIX_STRING_class;
-}
-/**
- * @see IJavaElement
- */
-public int getElementType() {
-	return CLASS_FILE;
-}
 /*
  * @see JavaElement
  */
@@ -594,47 +381,6 @@
 	return JavaElement.JEM_CLASSFILE;
 }
 /*
- * @see IJavaElement
- */
-public IPath getPath() {
-	PackageFragmentRoot root = getPackageFragmentRoot();
-	if (root.isArchive()) {
-		return root.getPath();
-	} else {
-		return getParent().getPath().append(getElementName());
-	}
-}
-/*
- * @see IJavaElement
- */
-@Override
-public IResource resource(PackageFragmentRoot root) {
-	return ((IContainer) ((Openable) this.parent).resource(root)).getFile(new Path(getElementName()));
-}
-/**
- * @see ISourceReference
- */
-public String getSource() throws JavaModelException {
-	IBuffer buffer = getBuffer();
-	if (buffer == null) {
-		return null;
-	}
-	return buffer.getContents();
-}
-/**
- * @see ISourceReference
- */
-public ISourceRange getSourceRange() throws JavaModelException {
-	IBuffer buffer = getBuffer();
-	if (buffer != null) {
-		String contents = buffer.getContents();
-		if (contents == null) return null;
-		return new SourceRange(0, contents.length());
-	} else {
-		return null;
-	}
-}
-/*
  * Returns the name of the toplevel type of this class file.
  */
 public String getTopLevelTypeName() {
@@ -650,6 +396,7 @@
 /**
  * @see IClassFile
  */
+@Override
 public IType getType() {
 	if (this.binaryType == null) {
 		this.binaryType = new BinaryType(this, getTypeName());
@@ -664,6 +411,7 @@
 /*
  * @see IClassFile
  */
+@Override
 public ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
 	CompilationUnit workingCopy = new ClassFileWorkingCopy(this, owner == null ? DefaultWorkingCopyOwner.PRIMARY : owner);
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -678,54 +426,19 @@
 }
 /**
  * @see IClassFile
- * @deprecated
- */
-@Deprecated
-public IJavaElement getWorkingCopy(IProgressMonitor monitor, org.aspectj.org.eclipse.jdt.core.IBufferFactory factory) throws JavaModelException {
-	return getWorkingCopy(BufferFactoryWrapper.create(factory), monitor);
-}
-/**
- * @see Openable
  */
 @Override
-protected boolean hasBuffer() {
-	return true;
-}
-@Override
-public int hashCode() {
-	return Util.combineHashCodes(this.name.hashCode(), this.parent.hashCode());
-}
-/**
- * @see IClassFile
- */
 public boolean isClass() throws JavaModelException {
 	return getType().isClass();
 }
 /**
  * @see IClassFile
  */
+@Override
 public boolean isInterface() throws JavaModelException {
 	return getType().isInterface();
 }
 /**
- * Returns true - class files are always read only.
- */
-@Override
-public boolean isReadOnly() {
-	return true;
-}
-private IStatus validateClassFile() {
-	IPackageFragmentRoot root = getPackageFragmentRoot();
-	try {
-		if (root.getKind() != IPackageFragmentRoot.K_BINARY)
-			return new JavaModelStatus(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, root);
-	} catch (JavaModelException e) {
-		return e.getJavaModelStatus();
-	}
-	IJavaProject project = getJavaProject();
-	return JavaConventions.validateClassFileName(getElementName(), project.getOption(JavaCore.COMPILER_SOURCE, true), project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
-}
-/**
  * Opens and returns buffer on the source code associated with this class file.
  * Maps the source code to the children elements of this class file.
  * If no source code is associated with this class file,
@@ -766,7 +479,7 @@
 		buffer.addBufferChangedListener(this);
 
 		// do the source mapping
-		mapper.mapSource(getOuterMostEnclosingType(), contents, info);
+		mapper.mapSource((NamedMember) getOuterMostEnclosingType(), contents, info);
 
 		return buffer;
 	} else {
@@ -869,84 +582,4 @@
 	}
 	return className;
 }
-
-/**
- * @see ICodeAssist#codeComplete(int, ICodeCompletionRequestor)
- * @deprecated - should use codeComplete(int, ICompletionRequestor) instead
- */
-@Deprecated
-public void codeComplete(int offset, final org.aspectj.org.eclipse.jdt.core.ICodeCompletionRequestor requestor) throws JavaModelException {
-
-	if (requestor == null){
-		codeComplete(offset, (ICompletionRequestor)null);
-		return;
-	}
-	codeComplete(
-		offset,
-		new ICompletionRequestor(){
-			public void acceptAnonymousType(char[] superTypePackageName,char[] superTypeName, char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
-				// ignore
-			}
-			public void acceptClass(char[] packageName, char[] className, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
-				requestor.acceptClass(packageName, className, completionName, modifiers, completionStart, completionEnd);
-			}
-			public void acceptError(IProblem error) {
-				// was disabled in 1.0
-			}
-			public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, char[] typePackageName, char[] typeName, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
-				requestor.acceptField(declaringTypePackageName, declaringTypeName, fieldName, typePackageName, typeName, completionName, modifiers, completionStart, completionEnd);
-			}
-			public void acceptInterface(char[] packageName,char[] interfaceName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
-				requestor.acceptInterface(packageName, interfaceName, completionName, modifiers, completionStart, completionEnd);
-			}
-			public void acceptKeyword(char[] keywordName,int completionStart,int completionEnd, int relevance){
-				requestor.acceptKeyword(keywordName, completionStart, completionEnd);
-			}
-			public void acceptLabel(char[] labelName,int completionStart,int completionEnd, int relevance){
-				requestor.acceptLabel(labelName, completionStart, completionEnd);
-			}
-			public void acceptLocalVariable(char[] localVarName,char[] typePackageName,char[] typeName,int modifiers,int completionStart,int completionEnd, int relevance){
-				// ignore
-			}
-			public void acceptMethod(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
-				// skip parameter names
-				requestor.acceptMethod(declaringTypePackageName, declaringTypeName, selector, parameterPackageNames, parameterTypeNames, returnTypePackageName, returnTypeName, completionName, modifiers, completionStart, completionEnd);
-			}
-			public void acceptMethodDeclaration(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
-				// ignore
-			}
-			public void acceptModifier(char[] modifierName,int completionStart,int completionEnd, int relevance){
-				requestor.acceptModifier(modifierName, completionStart, completionEnd);
-			}
-			public void acceptPackage(char[] packageName,char[] completionName,int completionStart,int completionEnd, int relevance){
-				requestor.acceptPackage(packageName, completionName, completionStart, completionEnd);
-			}
-			public void acceptType(char[] packageName,char[] typeName,char[] completionName,int completionStart,int completionEnd, int relevance){
-				requestor.acceptType(packageName, typeName, completionName, completionStart, completionEnd);
-			}
-			public void acceptVariableName(char[] typePackageName,char[] typeName,char[] varName,char[] completionName,int completionStart,int completionEnd, int relevance){
-				// ignore
-			}
-		});
-}
-
-@Override
-protected IStatus validateExistence(IResource underlyingResource) {
-	// check whether the class file can be opened
-	IStatus status = validateClassFile();
-	if (!status.isOK())
-		return status;
-	if (underlyingResource != null) {
-		if (!underlyingResource.isAccessible())
-			return newDoesNotExistStatus();
-		PackageFragmentRoot root;
-		if ((underlyingResource instanceof IFolder) && (root = getPackageFragmentRoot()).isArchive()) { // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=204652
-			return root.newDoesNotExistStatus();
-		}
-	}
-	return JavaModelStatus.VERIFIED_OK;
-}
-public ISourceRange getNameRange() {
-	return null;
-}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.java
index 08d0ba0..cd39362 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -146,6 +146,15 @@
 	if ((tagBits & TagBits.AnnotationForPackage) != 0) {
 		values.add(elementType + new String(TypeConstants.UPPER_PACKAGE));
 	}
+	if ((tagBits & TagBits.AnnotationForTypeUse) != 0) {
+		values.add(elementType + new String(TypeConstants.TYPE_USE_TARGET));
+	}
+	if ((tagBits & TagBits.AnnotationForTypeParameter) != 0) {
+		values.add(elementType + new String(TypeConstants.TYPE_PARAMETER_TARGET));
+	}
+	if ((tagBits & TagBits.AnnotationForModule) != 0) {
+		values.add(elementType + new String(TypeConstants.UPPER_MODULE));
+	}
 	final Object value;
 	if (values.size() == 0) {
 		if ((tagBits & TagBits.AnnotationTarget) != 0)
@@ -159,12 +168,15 @@
 	}
 	return new IMemberValuePair[] {
 		new IMemberValuePair() {
+			@Override
 			public int getValueKind() {
 				return IMemberValuePair.K_QUALIFIED_NAME;
 			}
+			@Override
 			public Object getValue() {
 				return value;
 			}
+			@Override
 			public String getMemberName() {
 				return new String(TypeConstants.VALUE);
 			}
@@ -188,12 +200,15 @@
 	return 
 		new IMemberValuePair[] {
 			new IMemberValuePair() {
+				@Override
 				public int getValueKind() {
 					return IMemberValuePair.K_QUALIFIED_NAME;
 				}
+				@Override
 				public Object getValue() {
 					return value;
 				}
+				@Override
 				public String getMemberName() {
 					return new String(TypeConstants.VALUE);
 				}
@@ -399,13 +414,6 @@
 	}
 }
 /**
- * Returns true iff the <code>readBinaryChildren</code> has already
- * been called.
- */
-boolean hasReadBinaryChildren() {
-	return this.binaryChildren != null;
-}
-/**
  * Creates the handles for <code>BinaryMember</code>s defined in this
  * <code>ClassFile</code> and adds them to the
  * <code>JavaModelManager</code>'s cache.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.java
index adf4778..43566a0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClassFileWorkingCopy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.util.ClassFileBytesDisassembler;
 import org.aspectj.org.eclipse.jdt.core.util.IClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Disassembler;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -31,17 +32,25 @@
  */
 public class ClassFileWorkingCopy extends CompilationUnit {
 
-	public ClassFile classFile;
+	public AbstractClassFile classFile;
 
-public ClassFileWorkingCopy(ClassFile classFile, WorkingCopyOwner owner) {
-	super((PackageFragment) classFile.getParent(), ((BinaryType) classFile.getType()).getSourceFileName(null/*no info available*/), owner);
+public ClassFileWorkingCopy(AbstractClassFile classFile, WorkingCopyOwner owner) {
+	super((PackageFragment) classFile.getParent(), sourceFileName(classFile), owner);
 	this.classFile = classFile;
 }
+private static String sourceFileName(AbstractClassFile classFile) {
+	if (classFile instanceof ModularClassFile)
+		return TypeConstants.MODULE_INFO_FILE_NAME_STRING;
+	else
+		return ((BinaryType) ((ClassFile) classFile).getType()).getSourceFileName(null/*no info available*/);
+}
 
+@Override
 public void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, this));
 }
 
+@Override
 public IBuffer getBuffer() throws JavaModelException {
 	if (isWorkingCopy())
 		return super.getBuffer();
@@ -49,6 +58,7 @@
 		return this.classFile.getBuffer();
 }
 
+@Override
 public char[] getContents() {
 	try {
 		IBuffer buffer = getBuffer();
@@ -61,15 +71,18 @@
 	}
 }
 
+@Override
 public IPath getPath() {
 	return this.classFile.getPath();
 }
 
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner && isPrimary()) return this;
 	return new ClassFileWorkingCopy(this.classFile, DefaultWorkingCopyOwner.PRIMARY);
 }
 
+@Override
 public IResource resource(PackageFragmentRoot root) {
 	if (root.isArchive())
 		return root.resource(root);
@@ -79,6 +92,7 @@
 /**
  * @see Openable#openBuffer(IProgressMonitor, Object)
  */
+@Override
 protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException {
 
 	// create buffer
@@ -106,6 +120,7 @@
 	return buffer;
 }
 
+@Override
 protected void toStringName(StringBuffer buffer) {
 	buffer.append(this.classFile.getElementName());
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.java
index 51bad48..aec1bbe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAccessRule.java
@@ -38,10 +38,12 @@
 		}
 	}
 
+	@Override
 	public IPath getPattern() {
 		return new Path(new String(this.pattern));
 	}
 
+	@Override
 	public int getKind() {
 		switch (getProblemId()) {
 			case IProblem.ForbiddenReference:
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.java
index 65aaad9..1921a99 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathAttribute.java
@@ -23,25 +23,30 @@
 		this.value = value;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof ClasspathAttribute)) return false;
 		ClasspathAttribute other = (ClasspathAttribute) obj;
 		return this.name.equals(other.name) && this.value.equals(other.value);
 	}
 
-    public String getName() {
+    @Override
+	public String getName() {
 		return this.name;
     }
 
-    public String getValue() {
+    @Override
+	public String getValue() {
 		return this.value;
     }
 
-    public int hashCode() {
+    @Override
+	public int hashCode() {
      	return Util.combineHashCodes(this.name.hashCode(), this.value.hashCode());
     }
 
-    public String toString() {
+    @Override
+	public String toString() {
     	return this.name + "=" + this.value; //$NON-NLS-1$
     }
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.java
index a353713..9ed7848 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathChange.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -134,7 +134,11 @@
 								continue;
 						} else if (annotationPath != otherAnnotationPath) {
 							continue; // null and not-null
-						}						
+						}
+					}
+					if (((ClasspathEntry) entry).isModular() !=
+							((ClasspathEntry) other).isModular()) {
+						continue nextEntry;
 					}
 					return i;
 			}
@@ -205,6 +209,7 @@
 		return fragments;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof ClasspathChange))
 			return false;
@@ -333,19 +338,21 @@
 						ObjectVector accumulatedRoots = new ObjectVector();
 						HashSet rootIDs = new HashSet(5);
 						rootIDs.add(this.project.rootID());
+						JrtPackageFragmentRoot.workingOnOldClasspath.set(Boolean.TRUE);
 						this.project.computePackageFragmentRoots(
 							this.oldResolvedClasspath[i],
 							accumulatedRoots,
 							rootIDs,
 							null, // inside original project
 							false, // don't retrieve exported roots
+							true, // filter module roots
 							null); /*no reverse map*/
 						// https://bugs.eclipse.org/bugs/show_bug.cgi?id=335986
-						// When a package fragment's corresponding resource is removed from the project, 
-						// IJavaProject#computePackageFragmentRoots() doesn't include that entry. Hence 
-						// the cache become necessary in such cases. Add the cache to the accumulatedRoots 
+						// When a package fragment's corresponding resource is removed from the project,
+						// IJavaProject#computePackageFragmentRoots() doesn't include that entry. Hence
+						// the cache become necessary in such cases. Add the cache to the accumulatedRoots
 						// only when it's not already present.
-						RootInfo rootInfo = (RootInfo) state.oldRoots.get(this.oldResolvedClasspath[i].getPath());
+						RootInfo rootInfo = state.oldRoots.get(this.oldResolvedClasspath[i].getPath());
 						if (rootInfo != null && rootInfo.cache != null) {
 							IPackageFragmentRoot oldRoot = rootInfo.cache;
 							boolean found = false;
@@ -364,6 +371,8 @@
 						accumulatedRoots.copyInto(pkgFragmentRoots);
 					} catch (JavaModelException e) {
 						pkgFragmentRoots =  new PackageFragmentRoot[] {};
+					} finally {
+						JrtPackageFragmentRoot.workingOnOldClasspath.set(null);
 					}
 				}
 				addClasspathDeltas(delta, pkgFragmentRoots, IJavaElementDelta.F_REMOVED_FROM_CLASSPATH);
@@ -471,6 +480,7 @@
 		}
 	}
 
+	@Override
 	public int hashCode() {
 		return this.project.hashCode();
 	}
@@ -570,6 +580,7 @@
 		}
 	}
 
+	@Override
 	public String toString() {
 		return "ClasspathChange: " + this.project.getElementName(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.java
index 12f6c68..1172868 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ClasspathEntry.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Terry Parker <tparker@google.com> - DeltaProcessor misses state changes in archive files, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=357425
@@ -13,9 +13,13 @@
  *								Bug 440477 - [null] Infrastructure for feeding external annotations into compilation
  *								Bug 462768 - [null] NPE when using linked folder for external annotations
  *                              Bug 465296 - precedence of extra attributes on a classpath container
+ *     Karsten Thoms - Bug 532505 - Reduce memory footprint of ClasspathAccessRule
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
+import static org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.UTF_8;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsCharArray;
+
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
@@ -61,7 +65,11 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.ManifestAnalyzer;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.IReader;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 import org.w3c.dom.DOMException;
@@ -317,7 +325,7 @@
 //		}
 
 		this.combineAccessRules = combineAccessRules;
-		this.extraAttributes = extraAttributes;
+		this.extraAttributes = extraAttributes.length > 0 ? extraAttributes : NO_EXTRA_ATTRIBUTES;
 
 	    if (inclusionPatterns != INCLUDE_ALL && inclusionPatterns.length > 0) {
 			this.fullInclusionPatternChars = UNINIT_PATTERNS;
@@ -331,6 +339,7 @@
 		this.isExported = isExported;
 	}
 
+	@Override
 	public boolean combineAccessRules() {
 		return this.combineAccessRules;
 	}
@@ -348,8 +357,15 @@
 			int lenRefer = referringExtraAttributes.length;
 			if (lenRefer > 0) {
 				int lenEntry = combinedAttributes.length;
-				System.arraycopy(combinedAttributes, 0, combinedAttributes=new IClasspathAttribute[lenEntry+lenRefer], lenRefer, lenEntry);
-				System.arraycopy(referringExtraAttributes, 0, combinedAttributes, 0, lenRefer);
+				if (referringEntry.path.isPrefixOf(this.path)) {
+					// consider prefix location as less specific, put to back (e.g.: referring to a library via a project):
+					System.arraycopy(combinedAttributes, 0, combinedAttributes=new IClasspathAttribute[lenEntry+lenRefer], 0, lenEntry);
+					System.arraycopy(referringExtraAttributes, 0, combinedAttributes, lenEntry, lenRefer);
+				} else {
+					// otherwise consider the referring entry as more specific than the referee:
+					System.arraycopy(combinedAttributes, 0, combinedAttributes=new IClasspathAttribute[lenEntry+lenRefer], lenRefer, lenEntry);
+					System.arraycopy(referringExtraAttributes, 0, combinedAttributes, 0, lenRefer);
+				}
 			}
 			return new ClasspathEntry(
 								getContentKind(),
@@ -429,7 +445,7 @@
 				else
 					continue;
 				boolean ignoreIfBetter = "true".equals(elementAccessRule.getAttribute(TAG_IGNORE_IF_BETTER)); //$NON-NLS-1$
-				result[index++] = new ClasspathAccessRule(new Path(pattern), ignoreIfBetter ? kind | IAccessRule.IGNORE_IF_BETTER : kind);
+				result[index++] = JavaCore.newAccessRule(new Path(pattern), ignoreIfBetter ? kind | IAccessRule.IGNORE_IF_BETTER : kind);
 			}
 		}
 		if (index != length)
@@ -965,23 +981,60 @@
 		}
 	}
 
+	private static char[] getManifestContents(IPath jarPath) throws CoreException, IOException {
+		// Try to read a cached manifest from the index
+		if (JavaIndex.isEnabled()) {
+			JavaIndex index = JavaIndex.getIndex();
+			String location = JavaModelManager.getLocalFile(jarPath).getAbsolutePath();
+			try (IReader reader = index.getNd().acquireReadLock()) {
+				NdResourceFile resourceFile = index.getResourceFile(location.toCharArray());
+				if (index.isUpToDate(resourceFile)) {
+					char[] manifestContent = resourceFile.getManifestContent().getChars();
+					if (manifestContent.length == 0) {
+						return null;
+					}
+					return manifestContent;
+				}
+			}
+		}
+
+		ZipFile zip = null;
+		InputStream inputStream = null;
+		JavaModelManager manager = JavaModelManager.getJavaModelManager();
+		try {
+			zip = manager.getZipFile(jarPath);
+			ZipEntry manifest = zip.getEntry(TypeConstants.META_INF_MANIFEST_MF);
+			if (manifest == null) {
+				return null;
+			}
+			inputStream = zip.getInputStream(manifest);
+			char[] chars = getInputStreamAsCharArray(inputStream, -1, UTF_8);
+			return chars;
+		} finally {
+			if (inputStream != null) {
+				try {
+					inputStream.close();
+				} catch (IOException e) {
+					// best effort
+				}
+			}
+			manager.closeZipFile(zip);
+		}
+	}
+
 	private static List getCalledFileNames(IPath jarPath) {
 		Object target = JavaModel.getTarget(jarPath, true/*check existence, otherwise the manifest cannot be read*/);
 		if (!(target instanceof IFile || target instanceof File))
 			return null;
-		JavaModelManager manager = JavaModelManager.getJavaModelManager();
-		ZipFile zip = null;
-		InputStream inputStream = null;
+
 		List calledFileNames = null;
 		try {
-			zip = manager.getZipFile(jarPath);
-			ZipEntry manifest = zip.getEntry("META-INF/MANIFEST.MF"); //$NON-NLS-1$
-			if (manifest == null) 
+			char[] manifestContents = getManifestContents(jarPath);
+			if (manifestContents == null) 
 				return null;
 			// non-null implies regular file
 			ManifestAnalyzer analyzer = new ManifestAnalyzer();
-			inputStream = zip.getInputStream(manifest);
-			boolean success = analyzer.analyzeManifestContents(inputStream);
+			boolean success = analyzer.analyzeManifestContents(manifestContents);
 			calledFileNames = analyzer.getCalledFileNames();
 			if (!success || analyzer.getClasspathSectionsCount() == 1 && calledFileNames == null) {
 				if (JavaModelManager.CP_RESOLVE_VERBOSE_FAILURE) {
@@ -1006,19 +1059,10 @@
 				Util.verbose("Could not read Class-Path header in manifest of jar file: " + jarPath.toOSString()); //$NON-NLS-1$
 				e.printStackTrace();
 			}
-		} finally {
-			if (inputStream != null) {
-				try {
-					inputStream.close();
-				} catch (IOException e) {
-					// best effort
-				}
-			}
-			manager.closeZipFile(zip);
 		}
 		return calledFileNames;
 	}
-	
+
 	/*
 	 * Resolves the ".." in the given path. Returns the given path if it contains no ".." segment.
 	 */
@@ -1089,6 +1133,7 @@
 	 * Returns true if the given object is a classpath entry
 	 * with equivalent attributes.
 	 */
+	@Override
 	public boolean equals(Object object) {
 		if (this == object)
 			return true;
@@ -1186,6 +1231,7 @@
 	/**
 	 * @see IClasspathEntry#getAccessRules()
 	 */
+	@Override
 	public IAccessRule[] getAccessRules() {
 		if (this.accessRuleSet == null) return NO_ACCESS_RULES;
 		AccessRule[] rules = this.accessRuleSet.getAccessRules();
@@ -1203,6 +1249,7 @@
 	/**
 	 * @see IClasspathEntry
 	 */
+	@Override
 	public int getContentKind() {
 		return this.contentKind;
 	}
@@ -1210,6 +1257,7 @@
 	/**
 	 * @see IClasspathEntry
 	 */
+	@Override
 	public int getEntryKind() {
 		return this.entryKind;
 	}
@@ -1217,10 +1265,12 @@
 	/**
 	 * @see IClasspathEntry#getExclusionPatterns()
 	 */
+	@Override
 	public IPath[] getExclusionPatterns() {
 		return this.exclusionPatterns;
 	}
 
+	@Override
 	public IClasspathAttribute[] getExtraAttributes() {
 		return this.extraAttributes;
 	}
@@ -1228,6 +1278,7 @@
 	/**
 	 * @see IClasspathEntry#getExclusionPatterns()
 	 */
+	@Override
 	public IPath[] getInclusionPatterns() {
 		return this.inclusionPatterns;
 	}
@@ -1235,6 +1286,7 @@
 	/**
 	 * @see IClasspathEntry#getOutputLocation()
 	 */
+	@Override
 	public IPath getOutputLocation() {
 		return this.specificOutputLocation;
 	}
@@ -1242,6 +1294,7 @@
 	/**
 	 * @see IClasspathEntry
 	 */
+	@Override
 	public IPath getPath() {
 		return this.path;
 	}
@@ -1249,6 +1302,7 @@
 	/**
 	 * @see IClasspathEntry
 	 */
+	@Override
 	public IPath getSourceAttachmentPath() {
 		return this.sourceAttachmentPath;
 	}
@@ -1256,6 +1310,7 @@
 	/**
 	 * @see IClasspathEntry
 	 */
+	@Override
 	public IPath getSourceAttachmentRootPath() {
 		return this.sourceAttachmentRootPath;
 	}
@@ -1322,14 +1377,7 @@
 	 * @return the attached external annotation path, or null.
 	 */
 	static String getRawExternalAnnotationPath(IClasspathEntry entry) {
-		IClasspathAttribute[] extraAttributes = entry.getExtraAttributes();
-		for (int i = 0, length = extraAttributes.length; i < length; i++) {
-			IClasspathAttribute attribute = extraAttributes[i];
-			if (IClasspathAttribute.EXTERNAL_ANNOTATION_PATH.equals(attribute.getName())) {
-				return attribute.getValue();
-			}
-		}
-		return null;
+		return getExtraAttribute(entry, IClasspathAttribute.EXTERNAL_ANNOTATION_PATH);
 	}
 
 	private static void invalidExternalAnnotationPath(IProject project) {
@@ -1367,6 +1415,18 @@
 						new String[] { annotationPath.toString(), project.getName(), this.path.toString()}));
 	}
 
+	public static String getExtraAttribute(IClasspathEntry entry, String attributeName) {
+		IClasspathAttribute[] extraAttributes = entry.getExtraAttributes();
+		for (int i = 0, length = extraAttributes.length; i < length; i++) {
+			IClasspathAttribute attribute = extraAttributes[i];
+			if (attributeName.equals(attribute.getName())) {
+				return attribute.getValue();
+			}
+		}
+		return null;
+	}
+
+	@Override
 	public IClasspathEntry getReferencingEntry() {
 		return this.referencingEntry;
 	}
@@ -1374,6 +1434,7 @@
 	/**
 	 * Returns the hash code for this classpath entry
 	 */
+	@Override
 	public int hashCode() {
 		return this.path.hashCode();
 	}
@@ -1381,6 +1442,7 @@
 	/**
 	 * @see IClasspathEntry#isExported()
 	 */
+	@Override
 	public boolean isExported() {
 		return this.isExported;
 	}
@@ -1393,6 +1455,14 @@
 		}
 		return false;
 	}
+	public boolean isModular() {
+		for (int i = 0, length = this.extraAttributes.length; i < length; i++) {
+			IClasspathAttribute attribute = this.extraAttributes[i];
+			if (IClasspathAttribute.MODULE.equals(attribute.getName()) && "true".equals(attribute.getValue())) //$NON-NLS-1$
+				return true;
+		}
+		return false;
+	}
 
 	public String getSourceAttachmentEncoding() {
 		for (int i = 0, length = this.extraAttributes.length; i < length; i++) {
@@ -1467,6 +1537,7 @@
 	/**
 	 * Returns a printable representation of this classpath entry.
 	 */
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		Object target = JavaModel.getTarget(getPath(), true);
@@ -1654,6 +1725,7 @@
 	 * @see IClasspathEntry
 	 * @deprecated
 	 */
+	@Override
 	public IClasspathEntry getResolvedEntry() {
 
 		return JavaCore.getResolvedClasspathEntry(this);
@@ -1785,9 +1857,9 @@
 		int sourceEntryCount = 0;
 		boolean disableExclusionPatterns = JavaCore.DISABLED.equals(javaProject.getOption(JavaCore.CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS, true));
 		boolean disableCustomOutputLocations = JavaCore.DISABLED.equals(javaProject.getOption(JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS, true));
-
-		for (int i = 0 ; i < length; i++) {
-			IClasspathEntry resolvedEntry = classpath[i];
+		ArrayList<IClasspathEntry> testSourcesFolders=new ArrayList<>();
+		HashSet<IPath> mainOutputLocations=new HashSet<>();
+		for (IClasspathEntry resolvedEntry : classpath) {
 			if (disableExclusionPatterns &&
 			        ((resolvedEntry.getInclusionPatterns() != null && resolvedEntry.getInclusionPatterns().length > 0)
 			        || (resolvedEntry.getExclusionPatterns() != null && resolvedEntry.getExclusionPatterns().length > 0))) {
@@ -1796,6 +1868,10 @@
 			switch(resolvedEntry.getEntryKind()){
 				case IClasspathEntry.CPE_SOURCE :
 					sourceEntryCount++;
+					boolean isTest = resolvedEntry.isTest();
+					if(isTest) {
+						testSourcesFolders.add(resolvedEntry);
+					}
 
 					IPath customOutput;
 					if ((customOutput = resolvedEntry.getOutputLocation()) != null) {
@@ -1811,7 +1887,9 @@
 						} else {
 							return new JavaModelStatus(IJavaModelStatusConstants.RELATIVE_PATH, customOutput);
 						}
-
+						if(!isTest) {
+							mainOutputLocations.add(customOutput);
+						}
 						// ensure custom output doesn't conflict with other outputs
 						// check exact match
 						if (Util.indexOfMatchingPath(customOutput, outputLocations, outputCount) != -1) {
@@ -1842,6 +1920,23 @@
 		    allowNestingInOutputLocations[0] = true;
 		} else if (potentialNestedOutput != null) {
 			return new JavaModelStatus(IJavaModelStatusConstants.INVALID_CLASSPATH, Messages.bind(Messages.classpath_cannotNestOutputInOutput, new String[] {potentialNestedOutput.makeRelative().toString(), outputLocations[0].makeRelative().toString()}));
+		} else {
+			if (sourceEntryCount > testSourcesFolders.size()) {
+				// if there are source folders with main sources, treat project output location as main output location
+				mainOutputLocations.add(outputLocations[0]);
+			}
+		}
+		for (IClasspathEntry resolvedEntry : testSourcesFolders) {
+			IPath customOutput;
+			if ((customOutput = resolvedEntry.getOutputLocation()) != null) {
+				if(mainOutputLocations.contains(customOutput)) {
+					return new JavaModelStatus(IJavaModelStatusConstants.TEST_OUTPUT_FOLDER_MUST_BE_SEPARATE_FROM_MAIN_OUTPUT_FOLDERS, javaProject, resolvedEntry.getPath());				
+				}
+			} else {
+				if(sourceEntryCount > testSourcesFolders.size()) {
+					return new JavaModelStatus(IJavaModelStatusConstants.TEST_SOURCE_REQUIRES_SEPARATE_OUTPUT_LOCATION, javaProject, resolvedEntry.getPath());
+				}
+			}
 		}
 
 		for (int i = 0 ; i < length; i++) {
@@ -1987,6 +2082,7 @@
 									cachedStatus = new JavaModelStatus(IStatus.OK, IJavaModelStatusConstants.OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE, 
 										Messages.bind(Messages.classpath_cannotUseDistinctSourceFolderAsOutput, new String[] {
 										entryPathMsg, otherPathMsg, projectName })){
+										@Override
 										public boolean isOK() {
 											return true;
 										}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.java
index b873bbc..b10aab4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CommitWorkingCopyOperation.java
@@ -66,6 +66,7 @@
 	 * @exception JavaModelException if setting the source
 	 * 	of the original compilation unit fails
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		try {
 			beginTask(Messages.workingCopy_commit, 2);
@@ -185,6 +186,7 @@
 	protected CompilationUnit getCompilationUnit() {
 		return (CompilationUnit)getElementToProcess();
 	}
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		IResource resource = getElementToProcess().getResource();
 		if (resource == null) return null;
@@ -206,6 +208,7 @@
 	 *  <li>READ_ONLY - the original compilation unit is in read-only mode
 	 *  </ul>
 	 */
+	@Override
 	public IJavaModelStatus verify() {
 		CompilationUnit cu = getCompilationUnit();
 		if (!cu.isWorkingCopy()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.java
new file mode 100644
index 0000000..fb092dd
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationGroup.java
@@ -0,0 +1,5 @@
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+public enum CompilationGroup {
+	MAIN, TEST
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.java
index 42e8276..069124d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.SourceElementParser;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
@@ -64,9 +65,7 @@
 }
 
 
-/*
- * @see ICompilationUnit#applyTextEdit(TextEdit, IProgressMonitor)
- */
+@Override
 public UndoEdit applyTextEdit(TextEdit edit, IProgressMonitor monitor) throws JavaModelException {
 	IBuffer buffer = getBuffer();
 	if (buffer instanceof IBuffer.ITextEditCapability) {
@@ -85,9 +84,7 @@
 	return null; // can not happen, there are no compilation units without buffer
 }
 
-/*
- * @see ICompilationUnit#becomeWorkingCopy(IProblemRequestor, IProgressMonitor)
- */
+@Override
 public void becomeWorkingCopy(IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException {
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo = manager.getPerWorkingCopyInfo(this, false/*don't create*/, true /*record usage*/, null/*no problem requestor needed*/);
@@ -99,13 +96,13 @@
 		operation.runOperation(monitor);
 	}
 }
-/*
- * @see ICompilationUnit#becomeWorkingCopy(IProgressMonitor)
- */
+
+@Override
 public void becomeWorkingCopy(IProgressMonitor monitor) throws JavaModelException {
 	IProblemRequestor requestor = this.owner == null ? null : this.owner.getProblemRequestor(this);
 	becomeWorkingCopy(requestor, monitor);
 }
+@Override
 protected boolean buildStructure(OpenableElementInfo info, final IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
 	CompilationUnitElementInfo unitInfo = (CompilationUnitElementInfo) info;
 
@@ -218,39 +215,38 @@
 public CompilationUnit cloneCachingContents() {
 	return new CompilationUnit((PackageFragment) this.parent, this.name, this.owner) {
 		private char[] cachedContents;
+		@Override
 		public char[] getContents() {
 			if (this.cachedContents == null)
 				this.cachedContents = CompilationUnit.this.getContents();
 			return this.cachedContents;
 		}
+		@Override
 		public CompilationUnit originalFromClone() {
 			return CompilationUnit.this;
 		}
 	};
 }
-/*
- * @see Openable#canBeRemovedFromCache
- */
+
+@Override
 public boolean canBeRemovedFromCache() {
 	if (getPerWorkingCopyInfo() != null) return false; // working copies should remain in the cache until they are destroyed
 	return super.canBeRemovedFromCache();
 }
-/*
- * @see Openable#canBufferBeRemovedFromCache
- */
+
+@Override
 public boolean canBufferBeRemovedFromCache(IBuffer buffer) {
 	if (getPerWorkingCopyInfo() != null) return false; // working copy buffers should remain in the cache until working copy is destroyed
 	return super.canBufferBeRemovedFromCache(buffer);
-}/*
- * @see IOpenable#close
- */
+}
+
+@Override
 public void close() throws JavaModelException {
 	if (getPerWorkingCopyInfo() != null) return; // a working copy must remain opened until it is discarded
 	super.close();
 }
-/*
- * @see Openable#closing
- */
+
+@Override
 protected void closing(Object info) {
 	if (getPerWorkingCopyInfo() == null) {
 		super.closing(info);
@@ -260,6 +256,7 @@
  * @see ICodeAssist#codeComplete(int, ICompletionRequestor)
  * @deprecated
  */
+@Override
 public void codeComplete(int offset, ICompletionRequestor requestor) throws JavaModelException {
 	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
@@ -267,6 +264,7 @@
  * @see ICodeAssist#codeComplete(int, ICompletionRequestor, WorkingCopyOwner)
  * @deprecated
  */
+@Override
 public void codeComplete(int offset, ICompletionRequestor requestor, WorkingCopyOwner workingCopyOwner) throws JavaModelException {
 	if (requestor == null) {
 		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
@@ -277,6 +275,7 @@
  * @see ICodeAssist#codeComplete(int, ICodeCompletionRequestor)
  * @deprecated - use codeComplete(int, ICompletionRequestor)
  */
+@Override
 public void codeComplete(int offset, final ICodeCompletionRequestor requestor) throws JavaModelException {
 
 	if (requestor == null){
@@ -286,73 +285,82 @@
 	codeComplete(
 		offset,
 		new ICompletionRequestor(){
+			@Override
 			public void acceptAnonymousType(char[] superTypePackageName,char[] superTypeName,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
+			@Override
 			public void acceptClass(char[] packageName, char[] className, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
 				requestor.acceptClass(packageName, className, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptError(IProblem error) {
 				// was disabled in 1.0
 			}
+			@Override
 			public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, char[] typePackageName, char[] typeName, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
 				requestor.acceptField(declaringTypePackageName, declaringTypeName, fieldName, typePackageName, typeName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptInterface(char[] packageName,char[] interfaceName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
 				requestor.acceptInterface(packageName, interfaceName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptKeyword(char[] keywordName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptKeyword(keywordName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptLabel(char[] labelName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptLabel(labelName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptLocalVariable(char[] localVarName,char[] typePackageName,char[] typeName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
+			@Override
 			public void acceptMethod(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// skip parameter names
 				requestor.acceptMethod(declaringTypePackageName, declaringTypeName, selector, parameterPackageNames, parameterTypeNames, returnTypePackageName, returnTypeName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptMethodDeclaration(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
+			@Override
 			public void acceptModifier(char[] modifierName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptModifier(modifierName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptPackage(char[] packageName,char[] completionName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptPackage(packageName, completionName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptType(char[] packageName,char[] typeName,char[] completionName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptType(packageName, typeName, completionName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptVariableName(char[] typePackageName,char[] typeName,char[] varName,char[] completionName,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
 		});
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor)
- */
+@Override
 public void codeComplete(int offset, CompletionRequestor requestor) throws JavaModelException {
 	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.eclipse.core.runtime.IProgressMonitor)
- */
+
+@Override
 public void codeComplete(int offset, CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
 	codeComplete(offset, requestor, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner)
- */
+
+@Override
 public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner workingCopyOwner) throws JavaModelException {
 	codeComplete(offset, requestor, workingCopyOwner, null);
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.ICodeAssist#codeComplete(int, org.aspectj.org.eclipse.jdt.core.CompletionRequestor, org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner, org.eclipse.core.runtime.IProgressMonitor)
- */
+
+@Override
 public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner workingCopyOwner, IProgressMonitor monitor) throws JavaModelException {
 	codeComplete(
 			this,
@@ -367,12 +375,14 @@
 /**
  * @see ICodeAssist#codeSelect(int, int)
  */
+@Override
 public IJavaElement[] codeSelect(int offset, int length) throws JavaModelException {
 	return codeSelect(offset, length, DefaultWorkingCopyOwner.PRIMARY);
 }
 /**
  * @see ICodeAssist#codeSelect(int, int, WorkingCopyOwner)
  */
+@Override
 public IJavaElement[] codeSelect(int offset, int length, WorkingCopyOwner workingCopyOwner) throws JavaModelException {
 	return super.codeSelect(this, offset, length, workingCopyOwner);
 }
@@ -380,12 +390,14 @@
  * @see IWorkingCopy#commit(boolean, IProgressMonitor)
  * @deprecated
  */
+@Override
 public void commit(boolean force, IProgressMonitor monitor) throws JavaModelException {
 	commitWorkingCopy(force, monitor);
 }
 /**
  * @see ICompilationUnit#commitWorkingCopy(boolean, IProgressMonitor)
  */
+@Override
 public void commitWorkingCopy(boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CommitWorkingCopyOperation op= new CommitWorkingCopyOperation(this, force);
 	op.runOperation(monitor);
@@ -393,6 +405,7 @@
 /**
  * @see ISourceManipulation#copy(IJavaElement, IJavaElement, String, boolean, IProgressMonitor)
  */
+@Override
 public void copy(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (container == null) {
 		throw new IllegalArgumentException(Messages.operation_nullContainer);
@@ -408,12 +421,14 @@
 /**
  * Returns a new element info for this element.
  */
+@Override
 protected Object createElementInfo() {
 	return new CompilationUnitElementInfo();
 }
 /**
  * @see ICompilationUnit#createImport(String, IJavaElement, IProgressMonitor)
  */
+@Override
 public IImportDeclaration createImport(String importName, IJavaElement sibling, IProgressMonitor monitor) throws JavaModelException {
 	return createImport(importName, sibling, Flags.AccDefault, monitor);
 }
@@ -422,6 +437,7 @@
  * @see ICompilationUnit#createImport(String, IJavaElement, int, IProgressMonitor)
  * @since 3.0
  */
+@Override
 public IImportDeclaration createImport(String importName, IJavaElement sibling, int flags, IProgressMonitor monitor) throws JavaModelException {
 	CreateImportOperation op = new CreateImportOperation(importName, this, flags);
 	if (sibling != null) {
@@ -434,6 +450,7 @@
 /**
  * @see ICompilationUnit#createPackageDeclaration(String, IProgressMonitor)
  */
+@Override
 public IPackageDeclaration createPackageDeclaration(String pkg, IProgressMonitor monitor) throws JavaModelException {
 
 	CreatePackageDeclarationOperation op= new CreatePackageDeclarationOperation(pkg, this);
@@ -443,6 +460,7 @@
 /**
  * @see ICompilationUnit#createType(String, IJavaElement, boolean, IProgressMonitor)
  */
+@Override
 public IType createType(String content, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (!exists()) {
 		//autogenerate this compilation unit
@@ -466,6 +484,7 @@
 /**
  * @see ISourceManipulation#delete(boolean, IProgressMonitor)
  */
+@Override
 public void delete(boolean force, IProgressMonitor monitor) throws JavaModelException {
 	IJavaElement[] elements= new IJavaElement[] {this};
 	getJavaModel().delete(elements, force, monitor);
@@ -474,6 +493,7 @@
  * @see IWorkingCopy#destroy()
  * @deprecated
  */
+@Override
 public void destroy() {
 	try {
 		discardWorkingCopy();
@@ -482,9 +502,8 @@
 			e.printStackTrace();
 	}
 }
-/*
- * @see ICompilationUnit#discardWorkingCopy
- */
+
+@Override
 public void discardWorkingCopy() throws JavaModelException {
 	// discard working copy and its children
 	DiscardWorkingCopyOperation op = new DiscardWorkingCopyOperation(this);
@@ -496,6 +515,7 @@
  *
  * @see Object#equals(java.lang.Object)
  */
+@Override
 public boolean equals(Object obj) {
 	if (!(obj instanceof CompilationUnit)) return false;
 	CompilationUnit other = (CompilationUnit)obj;
@@ -504,6 +524,7 @@
 /**
  * @see ICompilationUnit#findElements(IJavaElement)
  */
+@Override
 public IJavaElement[] findElements(IJavaElement element) {
 	if (element instanceof IType && ((IType) element).isLambda()) {
 		return null;
@@ -563,6 +584,7 @@
 /**
  * @see ICompilationUnit#findPrimaryType()
  */
+@Override
 public IType findPrimaryType() {
 	String typeName = Util.getNameWithoutJavaLikeExtension(getElementName());
 	IType primaryType= getType(typeName);
@@ -576,6 +598,7 @@
  * @see IWorkingCopy#findSharedWorkingCopy(IBufferFactory)
  * @deprecated
  */
+@Override
 public IJavaElement findSharedWorkingCopy(IBufferFactory factory) {
 
 	// if factory is null, default factory must be used
@@ -587,6 +610,7 @@
 /**
  * @see ICompilationUnit#findWorkingCopy(WorkingCopyOwner)
  */
+@Override
 public ICompilationUnit findWorkingCopy(WorkingCopyOwner workingCopyOwner) {
 	CompilationUnit cu = new CompilationUnit((PackageFragment)this.parent, getElementName(), workingCopyOwner);
 	if (workingCopyOwner == DefaultWorkingCopyOwner.PRIMARY) {
@@ -604,6 +628,7 @@
 /**
  * @see ICompilationUnit#getAllTypes()
  */
+@Override
 public IType[] getAllTypes() throws JavaModelException {
 	IJavaElement[] types = getTypes();
 	int i;
@@ -628,12 +653,14 @@
 /**
  * @see IMember#getCompilationUnit()
  */
+@Override
 public ICompilationUnit getCompilationUnit() {
 	return this;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit#getContents()
  */
+@Override
 public char[] getContents() {
 	IBuffer buffer = getBufferManager().getBuffer(this);
 	if (buffer == null) {
@@ -688,6 +715,7 @@
  *
  * @see IJavaElement#getCorrespondingResource()
  */
+@Override
 public IResource getCorrespondingResource() throws JavaModelException {
 	PackageFragmentRoot root = getPackageFragmentRoot();
 	if (root == null || root.isArchive()) {
@@ -699,6 +727,7 @@
 /**
  * @see ICompilationUnit#getElementAt(int)
  */
+@Override
 public IJavaElement getElementAt(int position) throws JavaModelException {
 
 	IJavaElement e= getSourceElementAt(position);
@@ -708,25 +737,26 @@
 		return e;
 	}
 }
+@Override
 public String getElementName() {
 	return this.name;
 }
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return COMPILATION_UNIT;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName(){
 	return getPath().toString().toCharArray();
 }
 
-/*
- * @see JavaElement
- */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_IMPORTDECLARATION:
@@ -742,6 +772,11 @@
 			String typeName = memento.nextToken();
 			JavaElement type = (JavaElement)getType(typeName);
 			return type.getHandleFromMemento(memento, workingCopyOwner);
+		case JEM_MODULE:
+			if (!memento.hasMoreTokens()) return this;
+			String modName = memento.nextToken();
+			JavaElement mod = new SourceModule(this, modName);
+			return mod.getHandleFromMemento(memento, workingCopyOwner);
 	}
 	return null;
 }
@@ -749,18 +784,21 @@
 /**
  * @see JavaElement#getHandleMementoDelimiter()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_COMPILATIONUNIT;
 }
 /**
  * @see ICompilationUnit#getImport(String)
  */
+@Override
 public IImportDeclaration getImport(String importName) {
 	return getImportContainer().getImport(importName);
 }
 /**
  * @see ICompilationUnit#getImportContainer()
  */
+@Override
 public IImportContainer getImportContainer() {
 	return new ImportContainer(this);
 }
@@ -769,6 +807,7 @@
 /**
  * @see ICompilationUnit#getImports()
  */
+@Override
 public IImportDeclaration[] getImports() throws JavaModelException {
 	IImportContainer container= getImportContainer();
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -800,6 +839,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit#getMainTypeName()
  */
+@Override
 public char[] getMainTypeName(){
 	return Util.getNameWithoutJavaLikeExtension(getElementName()).toCharArray();
 }
@@ -807,6 +847,7 @@
  * @see IWorkingCopy#getOriginal(IJavaElement)
  * @deprecated
  */
+@Override
 public IJavaElement getOriginal(IJavaElement workingCopyElement) {
 	// backward compatibility
 	if (!isWorkingCopy()) return null;
@@ -821,27 +862,29 @@
  * @see IWorkingCopy#getOriginalElement()
  * @deprecated
  */
+@Override
 public IJavaElement getOriginalElement() {
 	// backward compatibility
 	if (!isWorkingCopy()) return null;
 
 	return getPrimaryElement();
 }
-/*
- * @see ICompilationUnit#getOwner()
- */
+
+@Override
 public WorkingCopyOwner getOwner() {
 	return isPrimary() || !isWorkingCopy() ? null : this.owner;
 }
 /**
  * @see ICompilationUnit#getPackageDeclaration(String)
  */
+@Override
 public IPackageDeclaration getPackageDeclaration(String pkg) {
 	return new PackageDeclaration(this, pkg);
 }
 /**
  * @see ICompilationUnit#getPackageDeclarations()
  */
+@Override
 public IPackageDeclaration[] getPackageDeclarations() throws JavaModelException {
 	ArrayList list = getChildrenOfType(PACKAGE_DECLARATION);
 	IPackageDeclaration[] array= new IPackageDeclaration[list.size()];
@@ -851,6 +894,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit#getPackageName()
  */
+@Override
 public char[][] getPackageName() {
 	PackageFragment packageFragment = (PackageFragment) getParent();
 	if (packageFragment == null) return CharOperation.NO_CHAR_CHAR;
@@ -860,6 +904,7 @@
 /**
  * @see IJavaElement#getPath()
  */
+@Override
 public IPath getPath() {
 	PackageFragmentRoot root = getPackageFragmentRoot();
 	if (root == null) return new Path(getElementName()); // working copy not in workspace
@@ -876,22 +921,19 @@
 public JavaModelManager.PerWorkingCopyInfo getPerWorkingCopyInfo() {
 	return JavaModelManager.getJavaModelManager().getPerWorkingCopyInfo(this, false/*don't create*/, false/*don't record usage*/, null/*no problem requestor needed*/);
 }
-/*
- * @see ICompilationUnit#getPrimary()
- */
+
+@Override
 public ICompilationUnit getPrimary() {
 	return (ICompilationUnit)getPrimaryElement(true);
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner && isPrimary()) return this;
 	return new CompilationUnit((PackageFragment)getParent(), getElementName(), DefaultWorkingCopyOwner.PRIMARY);
 }
-/*
- * @see Openable#resource(PackageFragmentRoot)
- */
+
+@Override
 public IResource resource(PackageFragmentRoot root) {
 	if (root == null) return null; // working copy not in workspace
 	return ((IContainer) ((Openable) this.parent).resource(root)).getFile(new Path(getElementName()));
@@ -899,6 +941,7 @@
 /**
  * @see ISourceReference#getSource()
  */
+@Override
 public String getSource() throws JavaModelException {
 	IBuffer buffer = getBuffer();
 	if (buffer == null) return ""; //$NON-NLS-1$
@@ -907,18 +950,21 @@
 /**
  * @see ISourceReference#getSourceRange()
  */
+@Override
 public ISourceRange getSourceRange() throws JavaModelException {
 	return ((CompilationUnitElementInfo) getElementInfo()).getSourceRange();
 }
 /**
  * @see ICompilationUnit#getType(String)
  */
+@Override
 public IType getType(String typeName) {
 	return new SourceType(this, typeName);
 }
 /**
  * @see ICompilationUnit#getTypes()
  */
+@Override
 public IType[] getTypes() throws JavaModelException {
 	ArrayList list = getChildrenOfType(TYPE);
 	IType[] array= new IType[list.size()];
@@ -928,6 +974,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public IResource getUnderlyingResource() throws JavaModelException {
 	if (isWorkingCopy() && !isPrimary()) return null;
 	return super.getUnderlyingResource();
@@ -936,6 +983,7 @@
  * @see IWorkingCopy#getSharedWorkingCopy(IProgressMonitor, IBufferFactory, IProblemRequestor)
  * @deprecated
  */
+@Override
 public IJavaElement getSharedWorkingCopy(IProgressMonitor pm, IBufferFactory factory, IProblemRequestor problemRequestor) throws JavaModelException {
 
 	// if factory is null, default factory must be used
@@ -947,18 +995,21 @@
  * @see IWorkingCopy#getWorkingCopy()
  * @deprecated
  */
+@Override
 public IJavaElement getWorkingCopy() throws JavaModelException {
 	return getWorkingCopy(null);
 }
 /**
  * @see ICompilationUnit#getWorkingCopy(IProgressMonitor)
  */
+@Override
 public ICompilationUnit getWorkingCopy(IProgressMonitor monitor) throws JavaModelException {
 	return getWorkingCopy(new WorkingCopyOwner() {/*non shared working copy*/}, null/*no problem requestor*/, monitor);
 }
 /**
  * @see ITypeRoot#getWorkingCopy(WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public ICompilationUnit getWorkingCopy(WorkingCopyOwner workingCopyOwner, IProgressMonitor monitor) throws JavaModelException {
 	return getWorkingCopy(workingCopyOwner, null, monitor);
 }
@@ -966,6 +1017,7 @@
  * @see IWorkingCopy#getWorkingCopy(IProgressMonitor, IBufferFactory, IProblemRequestor)
  * @deprecated
  */
+@Override
 public IJavaElement getWorkingCopy(IProgressMonitor monitor, IBufferFactory factory, IProblemRequestor problemRequestor) throws JavaModelException {
 	return getWorkingCopy(BufferFactoryWrapper.create(factory), problemRequestor, monitor);
 }
@@ -973,6 +1025,7 @@
  * @see ICompilationUnit#getWorkingCopy(WorkingCopyOwner, IProblemRequestor, IProgressMonitor)
  * @deprecated
  */
+@Override
 public ICompilationUnit getWorkingCopy(WorkingCopyOwner workingCopyOwner, IProblemRequestor problemRequestor, IProgressMonitor monitor) throws JavaModelException {
 	if (!isPrimary()) return this;
 
@@ -991,12 +1044,12 @@
 /**
  * @see Openable#hasBuffer()
  */
+@Override
 protected boolean hasBuffer() {
 	return true;
 }
-/*
- * @see ICompilationUnit#hasResourceChanged()
- */
+
+@Override
 public boolean hasResourceChanged() {
 	if (!isWorkingCopy()) return false;
 
@@ -1008,6 +1061,7 @@
 	if (resource == null) return false;
 	return ((CompilationUnitElementInfo)info).timestamp != resource.getModificationStamp();
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return getPackageFragmentRoot().ignoreOptionalProblems();
 }
@@ -1015,6 +1069,7 @@
  * @see IWorkingCopy#isBasedOn(IResource)
  * @deprecated
  */
+@Override
 public boolean isBasedOn(IResource resource) {
 	if (!isWorkingCopy()) return false;
 	if (!getResource().equals(resource)) return false;
@@ -1023,6 +1078,7 @@
 /**
  * @see IOpenable#isConsistent()
  */
+@Override
 public boolean isConsistent() {
 	return !JavaModelManager.getJavaModelManager().getElementsOutOfSynchWithBuffers().contains(this);
 }
@@ -1032,6 +1088,7 @@
 /**
  * @see Openable#isSourceElement()
  */
+@Override
 protected boolean isSourceElement() {
 	return true;
 }
@@ -1055,9 +1112,8 @@
 	IJavaProject project = getJavaProject();
 	return JavaConventions.validateCompilationUnitName(getElementName(),project.getOption(JavaCore.COMPILER_SOURCE, true), project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
 }
-/*
- * @see ICompilationUnit#isWorkingCopy()
- */
+
+@Override
 public boolean isWorkingCopy() {
 	// For backward compatibility, non primary working copies are always returning true; in removal
 	// delta, clients can still check that element was a working copy before being discarded.
@@ -1066,6 +1122,7 @@
 /**
  * @see IOpenable#makeConsistent(IProgressMonitor)
  */
+@Override
 public void makeConsistent(IProgressMonitor monitor) throws JavaModelException {
 	makeConsistent(NO_AST, false/*don't resolve bindings*/, 0 /* don't perform statements recovery */, null/*don't collect problems but report them*/, monitor);
 }
@@ -1097,6 +1154,7 @@
 /**
  * @see ISourceManipulation#move(IJavaElement, IJavaElement, String, boolean, IProgressMonitor)
  */
+@Override
 public void move(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (container == null) {
 		throw new IllegalArgumentException(Messages.operation_nullContainer);
@@ -1114,6 +1172,7 @@
 /**
  * @see Openable#openBuffer(IProgressMonitor, Object)
  */
+@Override
 protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException {
 
 	// create buffer
@@ -1135,42 +1194,47 @@
 
 	// synchronize to ensure that 2 threads are not putting 2 different buffers at the same time
 	// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=146331
+	IBuffer existingBuffer;
 	synchronized(bufManager) {
-		IBuffer existingBuffer = bufManager.getBuffer(this);
-		if (existingBuffer != null)
-			return existingBuffer;
-
-		// set the buffer source
-		if (buffer.getCharacters() == null) {
-			if (isWorkingCopy) {
-				if (mustSetToOriginalContent) {
-					buffer.setContents(original.getSource());
+		existingBuffer = bufManager.getBuffer(this);
+		if (existingBuffer == null) {
+			// set the buffer source
+			if (buffer.getCharacters() == null) {
+				if (isWorkingCopy) {
+					if (mustSetToOriginalContent) {
+						buffer.setContents(original.getSource());
+					} else {
+						IFile file = (IFile)getResource();
+						if (file == null || !file.exists()) {
+							// initialize buffer with empty contents
+							buffer.setContents(CharOperation.NO_CHAR);
+						} else {
+							buffer.setContents(Util.getResourceContentsAsCharArray(file));
+						}
+					}
 				} else {
 					IFile file = (IFile)getResource();
-					if (file == null || !file.exists()) {
-						// initialize buffer with empty contents
-						buffer.setContents(CharOperation.NO_CHAR);
-					} else {
-						buffer.setContents(Util.getResourceContentsAsCharArray(file));
-					}
+					if (file == null || !file.exists()) throw newNotPresentException();
+					buffer.setContents(Util.getResourceContentsAsCharArray(file));
 				}
-			} else {
-				IFile file = (IFile)getResource();
-				if (file == null || !file.exists()) throw newNotPresentException();
-				buffer.setContents(Util.getResourceContentsAsCharArray(file));
 			}
+	
+			// add buffer to buffer cache
+			// note this may cause existing buffers to be removed from the buffer cache, but only primary compilation unit's buffer
+			// can be closed, thus no call to a client's IBuffer#close() can be done in this synchronized block.
+			bufManager.addBuffer(buffer);
+	
+			// listen to buffer changes
+			buffer.addBufferChangedListener(this);
 		}
-
-		// add buffer to buffer cache
-		// note this may cause existing buffers to be removed from the buffer cache, but only primary compilation unit's buffer
-		// can be closed, thus no call to a client's IBuffer#close() can be done in this synchronized block.
-		bufManager.addBuffer(buffer);
-
-		// listen to buffer changes
-		buffer.addBufferChangedListener(this);
+	}
+	if(existingBuffer != null) {
+		buffer.close();
+		return existingBuffer;
 	}
 	return buffer;
 }
+@Override
 protected void openAncestors(HashMap newElements, IProgressMonitor monitor) throws JavaModelException {
 	if (!isWorkingCopy()) {
 		super.openAncestors(newElements, monitor);
@@ -1188,6 +1252,7 @@
  * @see ICompilationUnit#reconcile()
  * @deprecated
  */
+@Override
 public IMarker[] reconcile() throws JavaModelException {
 	reconcile(NO_AST, false/*don't force problem detection*/, false, null/*use primary owner*/, null/*no progress monitor*/);
 	return null;
@@ -1195,6 +1260,7 @@
 /**
  * @see ICompilationUnit#reconcile(int, boolean, WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public void reconcile(boolean forceProblemDetection, IProgressMonitor monitor) throws JavaModelException {
 	reconcile(NO_AST, forceProblemDetection? ICompilationUnit.FORCE_PROBLEM_DETECTION : 0, null/*use primary owner*/, monitor);
 }
@@ -1203,6 +1269,7 @@
  * @see ICompilationUnit#reconcile(int, boolean, WorkingCopyOwner, IProgressMonitor)
  * @since 3.0
  */
+@Override
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit reconcile(
 		int astLevel,
 		boolean forceProblemDetection,
@@ -1215,6 +1282,7 @@
  * @see ICompilationUnit#reconcile(int, boolean, WorkingCopyOwner, IProgressMonitor)
  * @since 3.0
  */
+@Override
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit reconcile(
 		int astLevel,
 		boolean forceProblemDetection,
@@ -1227,6 +1295,7 @@
 	return reconcile(astLevel, flags, workingCopyOwner, monitor);
 }
 
+@Override
 public org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit reconcile(
 		int astLevel,
 		int reconcileFlags,
@@ -1260,6 +1329,7 @@
 /**
  * @see ISourceManipulation#rename(String, boolean, IProgressMonitor)
  */
+@Override
 public void rename(String newName, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (newName == null) {
 		throw new IllegalArgumentException(Messages.operation_nullName);
@@ -1269,9 +1339,8 @@
 	String[] renamings= new String[] {newName};
 	getJavaModel().rename(elements, dests, renamings, force, monitor);
 }
-/*
- * @see ICompilationUnit
- */
+
+@Override
 public void restore() throws JavaModelException {
 
 	if (!isWorkingCopy()) return;
@@ -1286,6 +1355,7 @@
 /**
  * @see IOpenable
  */
+@Override
 public void save(IProgressMonitor pm, boolean force) throws JavaModelException {
 	if (isWorkingCopy()) {
 		// no need to save the buffer for a working copy (this is a noop)
@@ -1299,6 +1369,7 @@
 /**
  * Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	if (!isPrimary()) {
 		buffer.append(tabString(tab));
@@ -1330,6 +1401,7 @@
 	((CompilationUnitElementInfo) getElementInfo()).timestamp = timeStamp;
 }
 
+@Override
 protected IStatus validateExistence(IResource underlyingResource) {
 	// check if this compilation unit can be opened
 	if (!isWorkingCopy()) { // no check is done on root kind or exclusion pattern for working copies
@@ -1346,7 +1418,33 @@
 	return JavaModelStatus.VERIFIED_OK;
 }
 
+@Override
 public ISourceRange getNameRange() {
 	return null;
 }
+
+
+@Override
+public IModuleDescription getModule() throws JavaModelException {
+	if (TypeConstants.MODULE_INFO_FILE_NAME_STRING.equals(getElementName()))
+		return ((CompilationUnitElementInfo) getElementInfo()).getModule();
+	return null;
+}
+
+@Override
+public char[] getModuleName() {
+	try {
+		IModuleDescription module = getModule();
+		if (module == null) {
+			JavaProject project = (JavaProject) getAncestor(IJavaElement.JAVA_PROJECT);
+			module = project.getModuleDescription();
+		}
+		if (module != null)
+			return module.getElementName().toCharArray();
+	} catch (JavaModelException e) {
+		// TODO Auto-generated catch block
+		e.printStackTrace();
+	}
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
index 004354c..2c4ec57 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitProblemFinder.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -13,6 +13,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.aspectj.org.eclipse.jdt.core.*;
@@ -21,10 +22,13 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.Compiler;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.SourceTypeConverter;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CommentRecorderParser;
@@ -90,6 +94,7 @@
 	/**
 	 * Add additional source types
 	 */
+	@Override
 	public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		// ensure to jump back to toplevel type for first one (could be a member)
 		while (sourceTypes[0].getEnclosingType() != null) {
@@ -103,6 +108,10 @@
 		final long savedComplianceLevel = this.options.complianceLevel;
 		final long savedSourceLevel = this.options.sourceLevel;
 		
+		LookupEnvironment environment = packageBinding.environment;
+		if (environment == null)
+			environment = this.lookupEnvironment;
+		
 		try {
 			IJavaProject project = ((SourceTypeElementInfo) sourceTypes[0]).getHandle().getJavaProject();
 			this.options.complianceLevel = CompilerOptions.versionToJdkLevel(project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
@@ -115,12 +124,54 @@
 						SourceTypeConverter.FIELD_AND_METHOD // need field and methods
 						| SourceTypeConverter.MEMBER_TYPE // need member types
 						| SourceTypeConverter.FIELD_INITIALIZATION, // need field initialization
-						this.lookupEnvironment.problemReporter,
+						environment.problemReporter,
 						result);
 
 			if (unit != null) {
-				this.lookupEnvironment.buildTypeBindings(unit, accessRestriction);
-				this.lookupEnvironment.completeTypeBindings(unit);
+				environment.buildTypeBindings(unit, accessRestriction);
+				environment.completeTypeBindings(unit);
+			}
+		} finally {
+			this.options.complianceLevel = savedComplianceLevel;
+			this.options.sourceLevel = savedSourceLevel;
+		}
+	}
+
+	@Override
+	public void accept(IModule module, LookupEnvironment environment) {
+		IModuleDescription handle = null;
+		if (module instanceof ModuleDescriptionInfo) {
+			handle = ((ModuleDescriptionInfo) module).getHandle();
+		}
+		if (handle == null) {
+			super.accept(module, environment);
+			return;
+		}
+		CompilationResult result =
+				new CompilationResult(TypeConstants.MODULE_INFO_FILE_NAME, 1, 1, this.options.maxProblemsPerUnit);
+			
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=305259, build the compilation unit in its own sand box.
+		final long savedComplianceLevel = this.options.complianceLevel;
+		final long savedSourceLevel = this.options.sourceLevel;
+		
+		if (environment == null)
+			environment = this.lookupEnvironment;
+		
+		try {
+			IJavaProject project = handle.getJavaProject();
+			this.options.complianceLevel = CompilerOptions.versionToJdkLevel(project.getOption(JavaCore.COMPILER_COMPLIANCE, true));
+			this.options.sourceLevel = CompilerOptions.versionToJdkLevel(project.getOption(JavaCore.COMPILER_SOURCE, true));
+
+			// need to hold onto this
+			CompilationUnitDeclaration unit =
+				SourceTypeConverter.buildModularCompilationUnit(
+						module,
+						environment.problemReporter,
+						result);
+
+			if (unit != null) {
+				environment.buildTypeBindings(unit, null);
+				environment.completeTypeBindings(unit);
 			}
 		} finally {
 			this.options.complianceLevel = savedComplianceLevel;
@@ -150,12 +201,33 @@
 	 */
 	protected static ICompilerRequestor getRequestor() {
 		return new ICompilerRequestor() {
+			@Override
 			public void acceptResult(CompilationResult compilationResult) {
 				// default requestor doesn't handle compilation results back
 			}
 		};
 	}
 
+	private static boolean isTestSource(IJavaProject project, ICompilationUnit cu) {
+		try {
+			IClasspathEntry[] resolvedClasspath = project.getResolvedClasspath(true);
+			final IPath resourcePath = cu.getResource().getFullPath();
+			for (IClasspathEntry e : resolvedClasspath) {
+				if (e.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+					if (e.isTest()) {
+						if (e.getPath().isPrefixOf(resourcePath)) {
+							return true;
+						}
+					}
+				}
+			}
+		} catch (JavaModelException e) {
+			Util.log(e, "Exception while determining if compilation unit \"" + cu.getElementName() //$NON-NLS-1$
+					+ "\" is test source"); //$NON-NLS-1$
+		}
+		return false;
+	}
+
 	/*
 	 * Can return null if the process was aborted or canceled 
 	 */
@@ -175,7 +247,7 @@
 		CompilationUnitProblemFinder problemFinder = null;
 		CompilationUnitDeclaration unit = null;
 		try {
-			environment = new CancelableNameEnvironment(project, workingCopyOwner, monitor);
+			environment = new CancelableNameEnvironment(project, workingCopyOwner, monitor, !isTestSource(unitElement.getJavaProject(), unitElement));
 			problemFactory = new CancelableProblemFactory(monitor);
 			CompilerOptions compilerOptions = getCompilerOptions(project.getOptions(true), creatingAST, ((reconcileFlags & ICompilationUnit.ENABLE_STATEMENTS_RECOVERY) != 0));
 			boolean ignoreMethodBodies = (reconcileFlags & ICompilationUnit.IGNORE_METHOD_BODIES) != 0;
@@ -275,6 +347,7 @@
 	 * Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=60689.
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.Compiler#initializeParser()
 	 */
+	@Override
 	public void initializeParser() {
 		this.parser = new CommentRecorderParser(this.problemReporter, this.options.parseLiteralExpressionsAsConstants);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
index 6115f02..ddc12f5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CompilationUnitStructureRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IMemberValuePair;
 import org.aspectj.org.eclipse.jdt.core.ITypeParameter;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.Signature;
 import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
@@ -140,6 +141,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void acceptImport(int declarationStart, int declarationEnd, int nameSourceStart, int nameSourceEnd, char[][] tokens, boolean onDemand, int modifiers) {
 	JavaElement parentHandle= (JavaElement) this.handleStack.peek();
 	if (!(parentHandle.getElementType() == IJavaElement.COMPILATION_UNIT)) {
@@ -177,12 +179,14 @@
  * A line separator might corresponds to several characters in the source,
  *
  */
+@Override
 public void acceptLineSeparatorPositions(int[] positions) {
 	// ignore line separator positions
 }
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void acceptPackage(ImportReference importReference) {
 
 		Object parentInfo = this.infoStack.peek();
@@ -214,6 +218,7 @@
 			}
 		}
 }
+@Override
 public void acceptProblem(CategorizedProblem problem) {
 	if ((problem.getID() & IProblem.Syntax) != 0){
 		this.hasSyntaxErrors = true;
@@ -253,6 +258,10 @@
 	String nameString= new String(typeInfo.name);
 	return new SourceType(parent, nameString);
 }
+protected SourceModule createModuleHandle(JavaElement parent, ModuleInfo modInfo) {
+	String nameString= new String(modInfo.moduleName);
+	return new org.aspectj.org.eclipse.jdt.internal.core.SourceModule(parent, nameString);
+}
 protected TypeParameter createTypeParameter(JavaElement parent, String name) {
 	return new TypeParameter(parent, name);
 }
@@ -309,6 +318,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterCompilationUnit() {
 	this.infoStack = new Stack();
 	this.children = new HashMap();
@@ -319,12 +329,14 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterConstructor(MethodInfo methodInfo) {
 	enterMethod(methodInfo);
 }
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterField(FieldInfo fieldInfo) {
 
 	TypeInfo parentInfo = (TypeInfo) this.infoStack.peek();
@@ -348,6 +360,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterInitializer(int declarationSourceStart, int modifiers) {
 	Object parentInfo = this.infoStack.peek();
 	JavaElement parentHandle= (JavaElement) this.handleStack.peek();
@@ -369,6 +382,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterMethod(MethodInfo methodInfo) {
 
 	TypeInfo parentInfo = (TypeInfo) this.infoStack.peek();
@@ -491,17 +505,29 @@
 	}
 	return result;
 }
+@Override
+public void enterModule(ModuleInfo info) {
 
+	Object parentInfo = this.infoStack.peek();
+	JavaElement parentHandle= (JavaElement) this.handleStack.peek();
+	JavaElement handle = createModuleHandle(parentHandle, info);
+	
+	this.infoStack.push(info);
+	this.handleStack.push(handle);
+
+	addToChildren(parentInfo, handle);
+}
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void enterType(TypeInfo typeInfo) {
 
 	Object parentInfo = this.infoStack.peek();
 	JavaElement parentHandle= (JavaElement) this.handleStack.peek();
-	SourceType handle = createTypeHandle(parentHandle, typeInfo); //NB: occurenceCount is computed in resolveDuplicates
-	resolveDuplicates(handle);
-
+	JavaElement handle = createTypeHandle(parentHandle, typeInfo);
+	 //NB: occurenceCount is computed in resolveDuplicates
+	resolveDuplicates((SourceType) handle);
 	this.infoStack.push(typeInfo);
 	this.handleStack.push(handle);
 
@@ -509,10 +535,30 @@
 		((TypeInfo) parentInfo).childrenCategories.put(handle, typeInfo.categories);
 	addToChildren(parentInfo, handle);
 }
+private org.aspectj.org.eclipse.jdt.internal.core.ModuleDescriptionInfo createModuleInfo(ModuleInfo modInfo, org.aspectj.org.eclipse.jdt.internal.core.SourceModule handle) {
+	org.aspectj.org.eclipse.jdt.internal.core.ModuleDescriptionInfo info = org.aspectj.org.eclipse.jdt.internal.core.ModuleDescriptionInfo.createModule(modInfo.node);
+	info.setHandle(handle);
+	info.setSourceRangeStart(modInfo.declarationStart);
+	info.setFlags(modInfo.modifiers);
+	info.setNameSourceStart(modInfo.nameSourceStart);
+	info.setNameSourceEnd(modInfo.nameSourceEnd);
+	info.addCategories(handle, modInfo.categories);
+	if (modInfo.annotations != null) {
+		int length = modInfo.annotations.length;
+		for (int i = 0; i < length; i++) {
+			org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation annotation = modInfo.annotations[i];
+			acceptAnnotation(annotation, info, handle);
+		}
+	}
+	this.newElements.put(handle, info);
+
+	return info;
+}
 private SourceTypeElementInfo createTypeInfo(TypeInfo typeInfo, SourceType handle) {
 	SourceTypeElementInfo info =
 		typeInfo.anonymousMember ?
 			new SourceTypeElementInfo() {
+				@Override
 				public boolean isAnonymousMember() {
 					return true;
 				}
@@ -595,6 +641,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitCompilationUnit(int declarationEnd) {
 	// set import container children
 	if (this.importContainerInfo != null) {
@@ -610,12 +657,14 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitConstructor(int declarationEnd) {
 	exitMethod(declarationEnd, null);
 }
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd) {
 	JavaElement handle = (JavaElement) this.handleStack.peek();
 	FieldInfo fieldInfo = (FieldInfo) this.infoStack.peek();
@@ -663,6 +712,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitInitializer(int declarationEnd) {
 	JavaElement handle = (JavaElement) this.handleStack.peek();
 	int[] initializerInfo = (int[]) this.infoStack.peek();
@@ -681,6 +731,7 @@
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitMethod(int declarationEnd, Expression defaultValue) {
 	SourceMethod handle = (SourceMethod) this.handleStack.peek();
 	MethodInfo methodInfo = (MethodInfo) this.infoStack.peek();
@@ -702,16 +753,36 @@
 	this.handleStack.pop();
 	this.infoStack.pop();
 }
+@Override
+public void exitModule(int declarationEnd) {
+	ModuleInfo moduleInfo = (ModuleInfo) this.infoStack.peek();
+	SourceModule handle = (SourceModule) this.handleStack.peek();
+	JavaProject proj = (JavaProject) handle.getAncestor(IJavaElement.JAVA_PROJECT);
+	if (proj != null) {
+		try {
+			org.aspectj.org.eclipse.jdt.internal.core.SourceModule moduleDecl = handle;
+			org.aspectj.org.eclipse.jdt.internal.core.ModuleDescriptionInfo info = createModuleInfo(moduleInfo, moduleDecl);
+			info.setSourceRangeEnd(declarationEnd);
+			info.children = getChildren(info);
+			this.unitInfo.setModule(moduleDecl);
+			proj.setModuleDescription(moduleDecl);
+		} catch (JavaModelException e) {
+			// Unexpected while creating
+		}
+	}
+	this.handleStack.pop();
+	this.infoStack.pop();
+}
 /**
  * @see ISourceElementRequestor
  */
+@Override
 public void exitType(int declarationEnd) {
-	SourceType handle = (SourceType) this.handleStack.peek();
 	TypeInfo typeInfo = (TypeInfo) this.infoStack.peek();
+	SourceType handle = (SourceType) this.handleStack.peek();
 	SourceTypeElementInfo info = createTypeInfo(typeInfo, handle);
 	info.setSourceRangeEnd(declarationEnd);
 	info.children = getChildren(typeInfo);
-	
 	this.handleStack.pop();
 	this.infoStack.pop();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.java
index 12224c1..ce6ea04 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyElementsOperation.java
@@ -84,6 +84,7 @@
  * Returns the <code>String</code> to use as the main task name
  * for progress monitoring.
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_copyElementProgress;
 }
@@ -158,6 +159,7 @@
  * @exception JavaModelException if the operation is unable to
  * be completed
  */
+@Override
 protected void processElement(IJavaElement element) throws JavaModelException {
 	JavaModelOperation op = getNestedOperation(element);
 	boolean createElementInCUOperation =op instanceof CreateElementInCUOperation;
@@ -217,6 +219,7 @@
  *		does not match the number of elements that were supplied.
  * </ul>
  */
+@Override
 protected IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (!status.isOK()) {
@@ -250,6 +253,7 @@
 
  * </ul>
  */
+@Override
 protected void verify(IJavaElement element) throws JavaModelException {
 	if (element == null || !element.exists())
 		error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, element);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.java
index 2e3decf..3e8e73d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyPackageFragmentRootOperation.java
@@ -35,6 +35,7 @@
 		this.updateModelFlags = updateModelFlags;
 		this.sibling = sibling;
 	}
+	@Override
 	protected void executeOperation() throws JavaModelException {
 
 		IPackageFragmentRoot root = (IPackageFragmentRoot)getElementToProcess();
@@ -76,6 +77,7 @@
 			final IFolder destFolder = workspaceRoot.getFolder(this.destination);
 			final IPath[] nestedFolders = getNestedFolders(root);
 			IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+				@Override
 				public boolean visit(IResourceProxy proxy) throws CoreException {
 					if (proxy.getType() == IResource.FOLDER) {
 						IPath path = proxy.requestFullPath();
@@ -206,6 +208,7 @@
 				throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, getElementToProcess()));
 		}
 	}
+	@Override
 	public IJavaModelStatus verify() {
 		IJavaModelStatus status = super.verify();
 		if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java
index c8a1862..160b643 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CopyResourceElementsOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -87,7 +87,7 @@
 		initializeASTParser();
 	}
 	private void initializeASTParser() {
-		this.parser = ASTParser.newParser(AST.JLS8);
+		this.parser = ASTParser.newParser(AST.JLS10);
 	}
 	/**
 	 * Returns the children of <code>source</code> which are affected by this operation.
@@ -187,9 +187,11 @@
 	/**
 	 * @see MultiOperation
 	 */
+	@Override
 	protected String getMainTaskName() {
 		return Messages.operation_copyResourceProgress;
 	}
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		if (this.elementsToProcess == null)
 			return null;
@@ -404,6 +406,7 @@
 	 * <code>processPackageFragmentResource</code>, depending on the type of
 	 * <code>element</code>.
 	 */
+	@Override
 	protected void processElement(IJavaElement element) throws JavaModelException {
 		IJavaElement dest = getDestinationParent(element);
 		switch (element.getElementType()) {
@@ -423,6 +426,7 @@
 	 * Overridden to allow special processing of <code>JavaElementDelta</code>s
 	 * and <code>fResultElements</code>.
 	 */
+	@Override
 	protected void processElements() throws JavaModelException {
 		this.createdElements = new ArrayList(this.elementsToProcess.length);
 		try {
@@ -745,6 +749,7 @@
 	 *		does not match the number of elements that were supplied.
 	 * </ul>
 	 */
+	@Override
 	protected IJavaModelStatus verify() {
 		IJavaModelStatus status = super.verify();
 		if (!status.isOK()) {
@@ -759,6 +764,7 @@
 	/**
 	 * @see MultiOperation
 	 */
+	@Override
 	protected void verify(IJavaElement element) throws JavaModelException {
 		if (element == null || !element.exists())
 			error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, element);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.java
index 00b8ba2..9e4cfd0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateCompilationUnitOperation.java
@@ -76,6 +76,7 @@
  *
  * @exception JavaModelException if unable to create the compilation unit.
  */
+@Override
 protected void executeOperation() throws JavaModelException {
 	try {
 		beginTask(Messages.operation_createUnitProgress, 2);
@@ -139,6 +140,7 @@
 protected ICompilationUnit getCompilationUnit() {
 	return ((IPackageFragment)getParentElement()).getCompilationUnit(this.name);
 }
+@Override
 protected ISchedulingRule getSchedulingRule() {
 	IResource resource  = getCompilationUnit().getResource();
 	IWorkspace workspace = resource.getWorkspace();
@@ -157,6 +159,7 @@
  *  <li>INVALID_CONTENTS - the source specified for the compiliation unit is null
  * </ul>
  */
+@Override
 public IJavaModelStatus verify() {
 	if (getParentElement() == null) {
 		return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java
index 7dd9cda..04f0a2e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateElementInCUOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -92,6 +92,7 @@
 	/**
 	 * Only allow cancelling if this operation is not nested.
 	 */
+	@Override
 	protected void checkCanceled() {
 		if (!this.isNested) {
 			super.checkCanceled();
@@ -119,6 +120,7 @@
 	 *
 	 * @exception JavaModelException if the operation is unable to complete
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		try {
 			beginTask(getMainTaskName(), getMainAmountOfWork());
@@ -205,6 +207,7 @@
 	 */
 	public abstract String getMainTaskName();
 
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		IResource resource = getCompilationUnit().getResource();
 		IWorkspace workspace = resource.getWorkspace();
@@ -261,7 +264,7 @@
 		// ensure cu is consistent (noop if already consistent)
 		cu.makeConsistent(this.progressMonitor);
 		// create an AST for the compilation unit
-		ASTParser parser = ASTParser.newParser(AST.JLS8);
+		ASTParser parser = ASTParser.newParser(AST.JLS10);
 		parser.setSource(cu);
 		return (CompilationUnit) parser.createAST(this.progressMonitor);
 	}
@@ -300,6 +303,7 @@
 	 * @see IJavaModelStatus
 	 * @see org.aspectj.org.eclipse.jdt.core.JavaConventions
 	 */
+	@Override
 	public IJavaModelStatus verify() {
 		if (getParentElement() == null) {
 			return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.java
index c447060..73ba4a5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateFieldOperation.java
@@ -48,6 +48,7 @@
 public CreateFieldOperation(IType parentElement, String source, boolean force) {
 	super(parentElement, source, force);
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	ASTNode node = super.generateElementAST(rewriter, cu);
 	if (node.getNodeType() != ASTNode.FIELD_DECLARATION)
@@ -57,12 +58,14 @@
 /**
  * @see CreateElementInCUOperation#generateResultHandle
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	return getType().getField(getASTNodeName());
 }
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createFieldProgress;
 }
@@ -87,6 +90,7 @@
  * declaration, or as the first member in the type if there are no
  * field declarations.
  */
+@Override
 protected void initializeDefaultPosition() {
 	IType parentElement = getType();
 	try {
@@ -114,6 +118,7 @@
 /**
  * @see CreateTypeMemberOperation#verifyNameCollision
  */
+@Override
 protected IJavaModelStatus verifyNameCollision() {
 	if (this.createdNode != null) {
 		IType type= getType();
@@ -130,6 +135,7 @@
 	if (this.alteredName != null) return this.alteredName;
 	return getFragment(this.createdNode).getName().getIdentifier();
 }
+@Override
 protected SimpleName rename(ASTNode node, SimpleName newName) {
 	VariableDeclarationFragment fragment = getFragment(node);
 	SimpleName oldName = fragment.getName();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.java
index 4c3a21a..2cdd68f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateImportOperation.java
@@ -73,9 +73,11 @@
 	this.importName = importName;
 	this.flags = flags;
 }
+@Override
 protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent) {
 	return CompilationUnit.IMPORTS_PROPERTY;
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	// ensure no duplicate
 	Iterator imports = this.cuAST.imports().iterator();
@@ -112,12 +114,14 @@
 /**
  * @see CreateElementInCUOperation#generateResultHandle
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	return getCompilationUnit().getImport(this.importName);
 }
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createImportsProgress;
 }
@@ -128,6 +132,7 @@
  * <li> if no type, after the package statement
  * <li> and if no package statement - first thing in the CU
  */
+@Override
 protected void initializeDefaultPosition() {
 	try {
 		ICompilationUnit cu = getCompilationUnit();
@@ -162,6 +167,7 @@
  * @see IJavaModelStatus
  * @see JavaConventions
  */
+@Override
 public IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.java
index 5e4e9f2..ad3d969 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateInitializerOperation.java
@@ -46,6 +46,7 @@
 public CreateInitializerOperation(IType parentElement, String source) {
 	super(parentElement, source, false);
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	ASTNode node = super.generateElementAST(rewriter, cu);
 	if (node.getNodeType() != ASTNode.INITIALIZER)
@@ -55,6 +56,7 @@
 /**
  * @see CreateElementInCUOperation#generateResultHandle
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	try {
 		//update the children to be current
@@ -85,9 +87,11 @@
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createInitializerProgress;
 }
+@Override
 protected SimpleName rename(ASTNode node, SimpleName newName) {
 	return null; // intializer cannot be renamed
 }
@@ -96,6 +100,7 @@
  * declaration, or as the first member in the type if there are no
  * initializers.
  */
+@Override
 protected void initializeDefaultPosition() {
 	IType parentElement = getType();
 	try {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.java
index f744df1..cec1d78 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateMethodOperation.java
@@ -74,6 +74,7 @@
 	}
 	return this.parameterTypes;
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	ASTNode node = super.generateElementAST(rewriter, cu);
 	if (node.getNodeType() != ASTNode.METHOD_DECLARATION)
@@ -83,6 +84,7 @@
 /**
  * @see CreateElementInCUOperation#generateResultHandle
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	String[] types = convertASTMethodTypesToSignatures();
 	String name = getASTNodeName();
@@ -94,9 +96,11 @@
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createMethodProgress;
 }
+@Override
 protected SimpleName rename(ASTNode node, SimpleName newName) {
 	MethodDeclaration method = (MethodDeclaration) node;
 	SimpleName oldName = method.getName();
@@ -106,6 +110,7 @@
 /**
  * @see CreateTypeMemberOperation#verifyNameCollision
  */
+@Override
 protected IJavaModelStatus verifyNameCollision() {
 	if (this.createdNode != null) {
 		IType type = getType();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java
index 1c27d5a..66f1a32 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageDeclarationOperation.java
@@ -52,9 +52,11 @@
 	super(parentElement);
 	this.name= name;
 }
+@Override
 protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent) {
 	return CompilationUnit.PACKAGE_PROPERTY;
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	//look for an existing package declaration
 	IJavaElement[] children = getCompilationUnit().getChildren();
@@ -74,12 +76,14 @@
 /**
  * Creates and returns the handle for the element this operation created.
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	return getCompilationUnit().getPackageDeclaration(this.name);
 }
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createPackageProgress;
 }
@@ -90,6 +94,7 @@
  * <li> if no type - first thing in the CU
  * <li>
  */
+@Override
 protected void initializeDefaultPosition() {
 	try {
 		ICompilationUnit cu = getCompilationUnit();
@@ -116,6 +121,7 @@
  * @see IJavaModelStatus
  * @see JavaConventions
  */
+@Override
 public IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.java
index 619679a..0c421d3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreatePackageFragmentOperation.java
@@ -70,6 +70,7 @@
  *
  * @exception JavaModelException if the operation is unable to complete
  */
+@Override
 protected void executeOperation() throws JavaModelException {
 	try {
 		JavaElementDelta delta = null;
@@ -112,6 +113,7 @@
 		done();
 	}
 }
+@Override
 protected ISchedulingRule getSchedulingRule() {
 	if (this.pkgName.length == 0)
 		return null; // no resource is going to be created
@@ -133,6 +135,7 @@
  * @see IJavaModelStatus
  * @see JavaConventions
  */
+@Override
 public IJavaModelStatus verify() {
 	IJavaElement parentElement = getParentElement();
 	if (parentElement == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
index 478d941..b13e697 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeHierarchyOperation.java
@@ -86,6 +86,7 @@
  * Performs the operation - creates the type hierarchy
  * @exception JavaModelException The operation has failed.
  */
+@Override
 protected void executeOperation() throws JavaModelException {
 	this.typeHierarchy.refresh(this);
 }
@@ -98,6 +99,7 @@
 /**
  * @see JavaModelOperation
  */
+@Override
 public boolean isReadOnly() {
 	return true;
 }
@@ -108,6 +110,7 @@
  *	<li>ELEMENT_NOT_PRESENT - the provided type or type's project does not exist
  * </ul>
  */
+@Override
 public IJavaModelStatus verify() {
 	IJavaElement elementToProcess= getElementToProcess();
 	if (elementToProcess == null && !(this.typeHierarchy instanceof RegionBasedTypeHierarchy)) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java
index ef7f457..8405c95 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeMemberOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -63,6 +63,7 @@
 	this.source = source;
 	this.force = force;
 }
+@Override
 protected StructuralPropertyDescriptor getChildPropertyDescriptor(ASTNode parent) {
 	switch (parent.getNodeType()) {
 		case ASTNode.COMPILATION_UNIT:
@@ -75,10 +76,11 @@
 			return TypeDeclaration.BODY_DECLARATIONS_PROPERTY;
 	}
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	if (this.createdNode == null) {
 		this.source = removeIndentAndNewLines(this.source, cu);
-		ASTParser parser = ASTParser.newParser(AST.JLS8);
+		ASTParser parser = ASTParser.newParser(AST.JLS10);
 		parser.setSource(this.source.toCharArray());
 		parser.setProject(getCompilationUnit().getJavaProject());
 		parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
@@ -165,7 +167,7 @@
 	buff.append(lineSeparator + " public class A {" + lineSeparator); //$NON-NLS-1$
 	buff.append(this.source);
 	buff.append(lineSeparator).append('}');
-	ASTParser parser = ASTParser.newParser(AST.JLS8);
+	ASTParser parser = ASTParser.newParser(AST.JLS10);
 	parser.setSource(buff.toString().toCharArray());
 	CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null);
 	TypeDeclaration typeDeclaration = (TypeDeclaration) compilationUnit.types().iterator().next();
@@ -185,6 +187,7 @@
  * create this new element.
  * Used by the <code>CopyElementsOperation</code> for renaming
  */
+@Override
 protected void setAlteredName(String newName) {
 	this.alteredName = newName;
 }
@@ -196,6 +199,7 @@
   *	<li>NAME_COLLISION - A name collision occurred in the destination
  * </ul>
  */
+@Override
 public IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.java
index 24d0de6..1df5a08 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/CreateTypeOperation.java
@@ -39,6 +39,7 @@
 public CreateTypeOperation(IJavaElement parentElement, String source, boolean force) {
 	super(parentElement, source, force);
 }
+@Override
 protected ASTNode generateElementAST(ASTRewrite rewriter, ICompilationUnit cu) throws JavaModelException {
 	ASTNode node = super.generateElementAST(rewriter, cu);
 	if (!(node instanceof AbstractTypeDeclaration))
@@ -49,6 +50,7 @@
 /**
  * @see CreateElementInCUOperation#generateResultHandle()
  */
+@Override
 protected IJavaElement generateResultHandle() {
 	IJavaElement parent= getParentElement();
 	switch (parent.getElementType()) {
@@ -63,12 +65,14 @@
 /**
  * @see CreateElementInCUOperation#getMainTaskName()
  */
+@Override
 public String getMainTaskName(){
 	return Messages.operation_createTypeProgress;
 }
 /**
  * Returns the <code>IType</code> the member is to be created in.
  */
+@Override
 protected IType getType() {
 	IJavaElement parent = getParentElement();
 	if (parent.getElementType() == IJavaElement.TYPE) {
@@ -79,6 +83,7 @@
 /**
  * @see CreateTypeMemberOperation#verifyNameCollision
  */
+@Override
 protected IJavaModelStatus verifyNameCollision() {
 	IJavaElement parent = getParentElement();
 	switch (parent.getElementType()) {
@@ -102,6 +107,7 @@
 	}
 	return JavaModelStatus.VERIFIED_OK;
 }
+@Override
 public IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (!status.isOK())
@@ -119,6 +125,7 @@
 private String getASTNodeName() {
 	return ((AbstractTypeDeclaration) this.createdNode).getName().getIdentifier();
 }
+@Override
 protected SimpleName rename(ASTNode node, SimpleName newName) {
 	AbstractTypeDeclaration type = (AbstractTypeDeclaration) node;
 	SimpleName oldName = type.getName();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.java
index 3db88d4..4545251 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DefaultWorkingCopyOwner.java
@@ -28,10 +28,12 @@
 		// only one instance can be created
 	}
 
+	@Override
 	public IBuffer createBuffer(ICompilationUnit workingCopy) {
 		if (this.primaryBufferProvider != null) return this.primaryBufferProvider.createBuffer(workingCopy);
 		return super.createBuffer(workingCopy);
 	}
+	@Override
 	public String toString() {
 		return "Primary owner"; //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
index 384881e..7c2837a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteElementsOperation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -81,15 +81,17 @@
 	}
 
 	private void initASTParser() {
-		this.parser = ASTParser.newParser(AST.JLS8);
+		this.parser = ASTParser.newParser(AST.JLS10);
 	}
 
 	/**
 	 * @see MultiOperation
 	 */
+	@Override
 	protected String getMainTaskName() {
 		return Messages.operation_deleteElementProgress;
 	}
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		if (this.elementsToProcess != null && this.elementsToProcess.length == 1) {
 			IResource resource = this.elementsToProcess[0].getResource();
@@ -133,6 +135,7 @@
 	 * Deletes this element from its compilation unit.
 	 * @see MultiOperation
 	 */
+	@Override
 	protected void processElement(IJavaElement element) throws JavaModelException {
 		ICompilationUnit cu = (ICompilationUnit) element;
 
@@ -168,6 +171,7 @@
 	 * This method first group the elements by <code>ICompilationUnit</code>,
 	 * and then processes the <code>ICompilationUnit</code>.
 	 */
+	@Override
 	protected void processElements() throws JavaModelException {
 		groupElements();
 		super.processElements();
@@ -175,6 +179,7 @@
 	/**
 	 * @see MultiOperation
 	 */
+	@Override
 	protected void verify(IJavaElement element) throws JavaModelException {
 		IJavaElement[] children = ((IRegion) this.childrenToRemove.get(element)).getElements();
 		for (int i = 0; i < children.length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.java
index bcf2df7..ed7815d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeletePackageFragmentRootOperation.java
@@ -34,6 +34,7 @@
 		this.updateModelFlags = updateModelFlags;
 	}
 
+	@Override
 	protected void executeOperation() throws JavaModelException {
 
 		IPackageFragmentRoot root = (IPackageFragmentRoot)getElementToProcess();
@@ -73,6 +74,7 @@
 		} else {
 			final IPath[] nestedFolders = getNestedFolders(root);
 			IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+				@Override
 				public boolean visit(IResourceProxy proxy) throws CoreException {
 					if (proxy.getType() == IResource.FOLDER) {
 						IPath path = proxy.requestFullPath();
@@ -143,6 +145,7 @@
 			project.setRawClasspath(newClasspath, this.progressMonitor);
 		}
 	}
+	@Override
 	protected IJavaModelStatus verify() {
 		IJavaModelStatus status = super.verify();
 		if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.java
index bc1e2c6..db5d038 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeleteResourceElementsOperation.java
@@ -93,6 +93,7 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_deleteResourceProgress;
 }
@@ -100,6 +101,7 @@
  * @see MultiOperation This method delegate to <code>deleteResource</code> or
  * <code>deletePackageFragment</code> depending on the type of <code>element</code>.
  */
+@Override
 protected void processElement(IJavaElement element) throws JavaModelException {
 	switch (element.getElementType()) {
 		case IJavaElement.CLASS_FILE :
@@ -120,6 +122,7 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected void verify(IJavaElement element) throws JavaModelException {
 	if (element == null || !element.exists())
 		error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, element);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.java
index d2ad0da..69e8348 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessingState.java
@@ -19,10 +19,12 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.*;
+import java.util.Map.Entry;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.Indexer;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.IndexerEvent;
@@ -32,7 +34,6 @@
 /**
  * Keep the global states used during Java element delta processing.
  */
-@SuppressWarnings({ "rawtypes", "unchecked" })
 public class DeltaProcessingState implements IResourceChangeListener, Indexer.Listener {
 
 	/*
@@ -52,8 +53,8 @@
 	/*
 	 * The delta processor for the current thread.
 	 */
-	private ThreadLocal deltaProcessors = new ThreadLocal();
-	
+	private ThreadLocal<DeltaProcessor> deltaProcessors = new ThreadLocal<>();
+
 	public void doNotUse() {
 		// reset the delta processor of the current thread to avoid to keep it in memory
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=269476
@@ -61,63 +62,63 @@
 	}
 
 	/* A table from IPath (from a classpath entry) to DeltaProcessor.RootInfo */
-	public HashMap roots = new HashMap();
+	public Map<IPath, RootInfo> roots = new LinkedHashMap<>();
 
 	/* A table from IPath (from a classpath entry) to ArrayList of DeltaProcessor.RootInfo
 	 * Used when an IPath corresponds to more than one root */
-	public HashMap otherRoots = new HashMap();
+	public Map<IPath, List<RootInfo>> otherRoots = new HashMap<>();
 
 	/* A table from IPath (from a classpath entry) to DeltaProcessor.RootInfo
 	 * from the last time the delta processor was invoked. */
-	public HashMap oldRoots = new HashMap();
+	public Map<IPath, RootInfo> oldRoots = new LinkedHashMap<>();
 
 	/* A table from IPath (from a classpath entry) to ArrayList of DeltaProcessor.RootInfo
 	 * from the last time the delta processor was invoked.
 	 * Used when an IPath corresponds to more than one root */
-	public HashMap oldOtherRoots = new HashMap();
+	public Map<IPath, List<RootInfo>> oldOtherRoots = new HashMap<>();
 
 	/* A table from IPath (a source attachment path from a classpath entry) to IPath (a root path) */
-	public HashMap sourceAttachments = new HashMap();
+	public Map<IPath, IPath> sourceAttachments = new HashMap<>();
 
 	/* A table from IJavaProject to IJavaProject[] (the list of direct dependent of the key) */
-	public HashMap projectDependencies = new HashMap();
+	public Map<IJavaProject, IJavaProject[]> projectDependencies = new HashMap<>();
 
 	/* Whether the roots tables should be recomputed */
 	public boolean rootsAreStale = true;
 
 	/* Threads that are currently running initializeRoots() */
-	private Set initializingThreads = Collections.synchronizedSet(new HashSet());
+	private Set<Thread> initializingThreads = Collections.synchronizedSet(new HashSet<>());
 
 	/* A table from file system absoulte path (String) to timestamp (Long) */
-	public Hashtable externalTimeStamps;
+	public Hashtable<IPath, Long> externalTimeStamps;
 
 	/*
 	 * Map from IProject to ClasspathChange
 	 * Note these changes need to be kept on the delta processing state to ensure we don't loose them
 	 * (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=271102 Java model corrupt after switching target platform)
 	 */
-	private HashMap classpathChanges = new HashMap();
+	private Map<IProject, ClasspathChange> classpathChanges = new LinkedHashMap<>();
 
 	/* A table from JavaProject to ClasspathValidation */
-	private HashMap classpathValidations = new HashMap();
+	private Map<JavaProject, ClasspathValidation> classpathValidations = new LinkedHashMap<>();
 
 	/* A table from JavaProject to ProjectReferenceChange */
-	private HashMap projectReferenceChanges = new HashMap();
+	private Set<IJavaProject> projectReferenceChanges = new LinkedHashSet<>();
 
 	/* A table from JavaProject to ExternalFolderChange */
-	private HashMap externalFolderChanges = new HashMap();
+	private Map<JavaProject, ExternalFolderChange> externalFolderChanges = new LinkedHashMap<>();
 
 	/**
 	 * Workaround for bug 15168 circular errors not reported
 	 * This is a cache of the projects before any project addition/deletion has started.
 	 */
-	private HashSet javaProjectNamesCache;
+	private Set<String> javaProjectNamesCache;
 
 	/*
 	 * A list of IJavaElement used as a scope for external archives refresh during POST_CHANGE.
 	 * This is null if no refresh is needed.
 	 */
-	private HashSet externalElementsToRefresh;
+	private Set<IJavaElement> externalElementsToRefresh;
 
 	/*
 	 * Need to clone defensively the listener information, in case some listener is reacting to some notification iteration by adding/changing/removing
@@ -151,7 +152,7 @@
 	 */
 	public synchronized void addForRefresh(IJavaElement externalElement) {
 		if (this.externalElementsToRefresh == null) {
-			this.externalElementsToRefresh = new HashSet();
+			this.externalElementsToRefresh = new LinkedHashSet<>();
 		}
 		this.externalElementsToRefresh.add(externalElement);
 	}
@@ -175,7 +176,7 @@
 	}
 
 	public DeltaProcessor getDeltaProcessor() {
-		DeltaProcessor deltaProcessor = (DeltaProcessor)this.deltaProcessors.get();
+		DeltaProcessor deltaProcessor = this.deltaProcessors.get();
 		if (deltaProcessor != null) return deltaProcessor;
 		deltaProcessor = new DeltaProcessor(this, JavaModelManager.getJavaModelManager());
 		this.deltaProcessors.set(deltaProcessor);
@@ -184,7 +185,7 @@
 
 	public ClasspathChange addClasspathChange(IProject project, IClasspathEntry[] oldRawClasspath, IPath oldOutputLocation, IClasspathEntry[] oldResolvedClasspath) {
 		synchronized (this.classpathChanges) {
-			ClasspathChange change = (ClasspathChange) this.classpathChanges.get(project);
+			ClasspathChange change = this.classpathChanges.get(project);
 			if (change == null) {
 				change = new ClasspathChange((JavaProject) JavaModelManager.getJavaModelManager().getJavaModel().getJavaProject(project), oldRawClasspath, oldOutputLocation, oldResolvedClasspath);
 				this.classpathChanges.put(project, change);
@@ -199,23 +200,23 @@
 			return change;
 		}
 	}
-	
+
 	public ClasspathChange getClasspathChange(IProject project) {
 		synchronized (this.classpathChanges) {
-			return (ClasspathChange) this.classpathChanges.get(project);
+			return this.classpathChanges.get(project);
 		}
 	}
-	
-	public HashMap removeAllClasspathChanges() {
+
+	public Map<IProject, ClasspathChange> removeAllClasspathChanges() {
 		synchronized (this.classpathChanges) {
-			HashMap result = this.classpathChanges;
-			this.classpathChanges = new HashMap(result.size());
+			Map<IProject, ClasspathChange> result = this.classpathChanges;
+			this.classpathChanges = new LinkedHashMap<>(result.size());
 			return result;
 		}
 	}
 
 	public synchronized ClasspathValidation addClasspathValidation(JavaProject project) {
-		ClasspathValidation validation = (ClasspathValidation) this.classpathValidations.get(project);
+		ClasspathValidation validation = this.classpathValidations.get(project);
 		if (validation == null) {
 			validation = new ClasspathValidation(project);
 			this.classpathValidations.put(project, validation);
@@ -224,25 +225,21 @@
 	}
 
 	public synchronized void addExternalFolderChange(JavaProject project, IClasspathEntry[] oldResolvedClasspath) {
-		ExternalFolderChange change = (ExternalFolderChange) this.externalFolderChanges.get(project);
+		ExternalFolderChange change = this.externalFolderChanges.get(project);
 		if (change == null) {
 			change = new ExternalFolderChange(project, oldResolvedClasspath);
 			this.externalFolderChanges.put(project, change);
-	    }
+		}
 	}
 
-	public synchronized void addProjectReferenceChange(JavaProject project, IClasspathEntry[] oldResolvedClasspath) {
-		ProjectReferenceChange change = (ProjectReferenceChange) this.projectReferenceChanges.get(project);
-		if (change == null) {
-			change = new ProjectReferenceChange(project, oldResolvedClasspath);
-			this.projectReferenceChanges.put(project, change);
-	    }
+	public synchronized void addProjectReferenceChange(IJavaProject project) {
+		this.projectReferenceChanges.add(project);
 	}
 
 	public void initializeRoots(boolean initAfterLoad) {
 
 		// recompute root infos only if necessary
-		HashMap[] rootInfos = null;
+		RootInfos rootInfos = null;
 		if (this.rootsAreStale) {
 			Thread currentThread = Thread.currentThread();
 			boolean addedCurrentThread = false;
@@ -268,31 +265,28 @@
 			this.oldRoots = this.roots;
 			this.oldOtherRoots = this.otherRoots;
 			if (this.rootsAreStale && rootInfos != null) { // double check again
-				this.roots = rootInfos[0];
-				this.otherRoots = rootInfos[1];
-				this.sourceAttachments = rootInfos[2];
-				this.projectDependencies = rootInfos[3];
+				this.roots = rootInfos.roots;
+				this.otherRoots = rootInfos.otherRoots;
+				this.sourceAttachments = rootInfos.sourceAttachments;
+				this.projectDependencies = rootInfos.projectDependencies;
 				this.rootsAreStale = false;
 			}
 		}
 	}
 
 	synchronized void initializeRootsWithPreviousSession() {
-		HashMap[] rootInfos = getRootInfos(true/*use previous session values*/);
+		RootInfos rootInfos = getRootInfos(true/*use previous session values*/);
 		if (rootInfos != null) {
-			this.roots = rootInfos[0];
-			this.otherRoots = rootInfos[1];
-			this.sourceAttachments = rootInfos[2];
-			this.projectDependencies = rootInfos[3];
+			this.roots = rootInfos.roots;
+			this.otherRoots = rootInfos.otherRoots;
+			this.sourceAttachments = rootInfos.sourceAttachments;
+			this.projectDependencies = rootInfos.projectDependencies;
 			this.rootsAreStale = false;
 		}
 	}
 
-	private HashMap[] getRootInfos(boolean usePreviousSession) {
-		HashMap newRoots = new HashMap();
-		HashMap newOtherRoots = new HashMap();
-		HashMap newSourceAttachments = new HashMap();
-		HashMap newProjectDependencies = new HashMap();
+	private RootInfos getRootInfos(boolean usePreviousSession) {
+		RootInfos ri = new RootInfos();
 
 		IJavaModel model = JavaModelManager.getJavaModelManager().getJavaModel();
 		IJavaProject[] projects;
@@ -321,7 +315,7 @@
 				IClasspathEntry entry = classpath[j];
 				if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
 					IJavaProject key = model.getJavaProject(entry.getPath().segment(0)); // TODO (jerome) reuse handle
-					IJavaProject[] dependents = (IJavaProject[]) newProjectDependencies.get(key);
+					IJavaProject[] dependents = ri.projectDependencies.get(key);
 					if (dependents == null) {
 						dependents = new IJavaProject[] {project};
 					} else {
@@ -329,19 +323,19 @@
 						System.arraycopy(dependents, 0, dependents = new IJavaProject[dependentsLength+1], 0, dependentsLength);
 						dependents[dependentsLength] = project;
 					}
-					newProjectDependencies.put(key, dependents);
+					ri.projectDependencies.put(key, dependents);
 					continue;
 				}
 
 				// root path
 				IPath path = entry.getPath();
-				if (newRoots.get(path) == null) {
-					newRoots.put(path, new DeltaProcessor.RootInfo(project, path, ((ClasspathEntry)entry).fullInclusionPatternChars(), ((ClasspathEntry)entry).fullExclusionPatternChars(), entry.getEntryKind()));
+				if (ri.roots.get(path) == null) {
+					ri.roots.put(path, new DeltaProcessor.RootInfo(project, path, ((ClasspathEntry)entry).fullInclusionPatternChars(), ((ClasspathEntry)entry).fullExclusionPatternChars(), entry.getEntryKind()));
 				} else {
-					ArrayList rootList = (ArrayList)newOtherRoots.get(path);
+					List<RootInfo> rootList = ri.otherRoots.get(path);
 					if (rootList == null) {
-						rootList = new ArrayList();
-						newOtherRoots.put(path, rootList);
+						rootList = new ArrayList<>();
+						ri.otherRoots.put(path, rootList);
 					}
 					rootList.add(new DeltaProcessor.RootInfo(project, path, ((ClasspathEntry)entry).fullInclusionPatternChars(), ((ClasspathEntry)entry).fullExclusionPatternChars(), entry.getEntryKind()));
 				}
@@ -362,11 +356,11 @@
 					sourceAttachmentPath = entry.getSourceAttachmentPath();
 				}
 				if (sourceAttachmentPath != null) {
-					newSourceAttachments.put(sourceAttachmentPath, path);
+					ri.sourceAttachments.put(sourceAttachmentPath, path);
 				}
 			}
 		}
-		return new HashMap[] {newRoots, newOtherRoots, newSourceAttachments, newProjectDependencies};
+		return ri;
 	}
 
 	public synchronized ClasspathValidation[] removeClasspathValidations() {
@@ -387,17 +381,14 @@
 	    return updates;
 	}
 
-	public synchronized ProjectReferenceChange[] removeProjectReferenceChanges() {
-	    int length = this.projectReferenceChanges.size();
-	    if (length == 0) return null;
-	    ProjectReferenceChange[]  updates = new ProjectReferenceChange[length];
-	    this.projectReferenceChanges.values().toArray(updates);
-	    this.projectReferenceChanges.clear();
-	    return updates;
+	public synchronized Set<IJavaProject> removeProjectReferenceChanges() {
+		Set<IJavaProject> result = this.projectReferenceChanges;
+		this.projectReferenceChanges = new HashSet<>();
+		return result;
 	}
 
-	public synchronized HashSet removeExternalElementsToRefresh() {
-		HashSet result = this.externalElementsToRefresh;
+	public synchronized Set<IJavaElement> removeExternalElementsToRefresh() {
+		Set<IJavaElement> result = this.externalElementsToRefresh;
 		this.externalElementsToRefresh = null;
 		return result;
 	}
@@ -462,15 +453,18 @@
 		}
 	}
 
+	@Override
 	public void resourceChanged(final IResourceChangeEvent event) {
 		for (int i = 0; i < this.preResourceChangeListenerCount; i++) {
 			// wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief
 			final IResourceChangeListener listener = this.preResourceChangeListeners[i];
 			if ((this.preResourceChangeEventMasks[i] & event.getType()) != 0)
 				SafeRunner.run(new ISafeRunnable() {
+					@Override
 					public void handleException(Throwable exception) {
 						Util.log(exception, "Exception occurred in listener of pre Java resource change notification"); //$NON-NLS-1$
 					}
+					@Override
 					public void run() throws Exception {
 						listener.resourceChanged(event);
 					}
@@ -491,9 +485,9 @@
 
 	}
 
-	public Hashtable getExternalLibTimeStamps() {
+	public Hashtable<IPath, Long> getExternalLibTimeStamps() {
 		if (this.externalTimeStamps == null) {
-			Hashtable timeStamps = new Hashtable();
+			Hashtable<IPath, Long> timeStamps = new Hashtable<>();
 			File timestampsFile = getTimeStampsFile();
 			DataInputStream in = null;
 			try {
@@ -532,15 +526,15 @@
 	 * Returns the list of java projects before resource delta processing
 	 * has started.
 	 */
-	public synchronized HashSet getOldJavaProjecNames() {
+	public synchronized Set<String> getOldJavaProjecNames() {
 		if (this.javaProjectNamesCache == null) {
-			HashSet result = new HashSet();
 			IJavaProject[] projects;
 			try {
 				projects = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProjects();
 			} catch (JavaModelException e) {
 				return this.javaProjectNamesCache;
 			}
+			HashSet<String> result = new LinkedHashSet<>();
 			for (int i = 0, length = projects.length; i < length; i++) {
 				IJavaProject project = projects[i];
 				result.add(project.getElementName());
@@ -560,31 +554,31 @@
 
 	public void saveExternalLibTimeStamps() throws CoreException {
 		if (this.externalTimeStamps == null) return;
-		
+
 		// cleanup to avoid any leak ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=244849 )
-		HashSet toRemove = new HashSet();
+		HashSet<IPath> toRemove = new HashSet<>();
 		if (this.roots != null) {
-			Enumeration keys = this.externalTimeStamps.keys();
+			Enumeration<IPath> keys = this.externalTimeStamps.keys();
 			while (keys.hasMoreElements()) {
-				Object key = keys.nextElement();
+				IPath key = keys.nextElement();
 				if (this.roots.get(key) == null) {
 					toRemove.add(key);
 				}
 			}
 		}
-		
+
 		File timestamps = getTimeStampsFile();
 		DataOutputStream out = null;
 		try {
 			out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(timestamps)));
 			out.writeInt(this.externalTimeStamps.size() - toRemove.size());
-			Iterator entries = this.externalTimeStamps.entrySet().iterator();
+			Iterator<Entry<IPath, Long>> entries = this.externalTimeStamps.entrySet().iterator();
 			while (entries.hasNext()) {
-				Map.Entry entry = (Map.Entry) entries.next();
-				IPath key = (IPath) entry.getKey();
+				Entry<IPath, Long> entry = entries.next();
+				IPath key = entry.getKey();
 				if (!toRemove.contains(key)) {
 					out.writeUTF(key.toPortableString());
-					Long timestamp = (Long) entry.getValue();
+					Long timestamp = entry.getValue();
 					out.writeLong(timestamp.longValue());
 				}
 			}
@@ -606,8 +600,8 @@
 	 * Update the roots that are affected by the addition or the removal of the given container resource.
 	 */
 	public synchronized void updateRoots(IPath containerPath, IResourceDelta containerDelta, DeltaProcessor deltaProcessor) {
-		Map updatedRoots;
-		Map otherUpdatedRoots;
+		Map<IPath, RootInfo> updatedRoots;
+		Map<IPath, List<RootInfo>> otherUpdatedRoots;
 		if (containerDelta.getKind() == IResourceDelta.REMOVED) {
 			updatedRoots = this.oldRoots;
 			otherUpdatedRoots = this.oldOtherRoots;
@@ -617,25 +611,25 @@
 		}
 		int containerSegmentCount = containerPath.segmentCount();
 		boolean containerIsProject = containerSegmentCount == 1;
-		Iterator iterator = updatedRoots.entrySet().iterator();
+		Iterator<Entry<IPath, RootInfo>> iterator = updatedRoots.entrySet().iterator();
 		while (iterator.hasNext()) {
-			Map.Entry entry = (Map.Entry) iterator.next();
-			IPath path = (IPath) entry.getKey();
+			Entry<IPath, RootInfo> entry = iterator.next();
+			IPath path = entry.getKey();
 			if (containerPath.isPrefixOf(path) && !containerPath.equals(path)) {
 				IResourceDelta rootDelta = containerDelta.findMember(path.removeFirstSegments(containerSegmentCount));
 				if (rootDelta == null) continue;
-				DeltaProcessor.RootInfo rootInfo = (DeltaProcessor.RootInfo) entry.getValue();
+				DeltaProcessor.RootInfo rootInfo = entry.getValue();
 
 				if (!containerIsProject
 						|| !rootInfo.project.getPath().isPrefixOf(path)) { // only consider folder roots that are not included in the container
 					deltaProcessor.updateCurrentDeltaAndIndex(rootDelta, IJavaElement.PACKAGE_FRAGMENT_ROOT, rootInfo);
 				}
 
-				ArrayList rootList = (ArrayList)otherUpdatedRoots.get(path);
+				List<RootInfo> rootList = otherUpdatedRoots.get(path);
 				if (rootList != null) {
-					Iterator otherProjects = rootList.iterator();
+					Iterator<RootInfo> otherProjects = rootList.iterator();
 					while (otherProjects.hasNext()) {
-						rootInfo = (DeltaProcessor.RootInfo)otherProjects.next();
+						rootInfo = otherProjects.next();
 						if (!containerIsProject
 								|| !rootInfo.project.getPath().isPrefixOf(path)) { // only consider folder roots that are not included in the container
 							deltaProcessor.updateCurrentDeltaAndIndex(rootDelta, IJavaElement.PACKAGE_FRAGMENT_ROOT, rootInfo);
@@ -657,4 +651,17 @@
 		}
 	}
 
+	private static final class RootInfos {
+		final Map<IPath, RootInfo> roots;
+		final Map<IPath, List<RootInfo>> otherRoots;
+		final Map<IPath, IPath> sourceAttachments;
+		final Map<IJavaProject, IJavaProject[]> projectDependencies;
+
+		public RootInfos() {
+			this.roots = new LinkedHashMap<>();
+			this.otherRoots = new HashMap<>();
+			this.sourceAttachments = new HashMap<>();
+			this.projectDependencies = new HashMap<>();
+		}
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.java
index da2d0d3..7ce1277 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DeltaProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,6 +34,7 @@
 import org.aspectj.org.eclipse.jdt.core.*;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.SourceElementParser;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.JavaBuilder;
 import org.aspectj.org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy;
@@ -62,7 +63,6 @@
  * 		resolved classpath, cycles))</li>
  * </ul>
  */
-@SuppressWarnings({ "rawtypes", "unchecked" })
 public class DeltaProcessor {
 
 	/*
@@ -77,6 +77,7 @@
 			this.traverseModes = traverseModes;
 			this.outputCount = outputCount;
 		}
+		@Override
 		public String toString() {
 			if (this.paths == null) return "<none>"; //$NON-NLS-1$
 			StringBuffer buffer = new StringBuffer();
@@ -145,13 +146,14 @@
 					this.root = getPackageFragmentRoot();
 				}
 			}
-			if (this.root != null) 
+			if (this.root != null)
 				this.cache = this.root;
 			return this.root;
 		}
 		boolean isRootOfProject(IPath path) {
 			return this.rootPath.equals(path) && this.project.getProject().getFullPath().isPrefixOf(path);
 		}
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer("project="); //$NON-NLS-1$
 			if (this.project == null) {
@@ -240,13 +242,13 @@
 	 * Queue of deltas created explicily by the Java Model that
 	 * have yet to be fired.
 	 */
-	public ArrayList javaModelDeltas= new ArrayList();
+	public List<IJavaElementDelta> javaModelDeltas= new ArrayList<>();
 
 	/*
 	 * Queue of reconcile deltas on working copies that have yet to be fired.
 	 * This is a table form IWorkingCopy to IJavaElementDelta
 	 */
-	public HashMap reconcileDeltas = new HashMap();
+	public Map<ICompilationUnit, IJavaElementDelta> reconcileDeltas = new HashMap<>();
 
 	/*
 	 * Turns delta firing on/off. By default it is on.
@@ -259,12 +261,12 @@
 	private final ModelUpdater modelUpdater = new ModelUpdater();
 
 	/* A set of IJavaProject whose caches need to be reset */
-	public HashSet projectCachesToReset = new HashSet();
+	public Set<IJavaElement> projectCachesToReset = new HashSet<>();
 
 	/* A table from IJavaProject to an array of IPackageFragmentRoot.
 	 * This table contains the pkg fragment roots of the project that are being deleted.
 	 */
-	public Map oldRoots;
+	public Map<IJavaProject, IPackageFragmentRoot[]> oldRoots;
 
 	/*
 	 * Type of event that should be processed no matter what the real event type is.
@@ -285,8 +287,8 @@
 	 * Adds the dependents of the given project to the list of the projects
 	 * to update.
 	 */
-	private void addDependentProjects(IJavaProject project, HashMap projectDependencies, HashSet result) {
-		IJavaProject[] dependents = (IJavaProject[]) projectDependencies.get(project);
+	private void addDependentProjects(IJavaProject project, Map<IJavaProject, IJavaProject[]> projectDependencies, Set<IJavaElement> result) {
+		IJavaProject[] dependents = projectDependencies.get(project);
 		if (dependents == null) return;
 		for (int i = 0, length = dependents.length; i < length; i++) {
 			IJavaProject dependent = dependents[i];
@@ -315,7 +317,7 @@
 			}
 		}
 	}
-	
+
 	private void addPackageFragmentRoot(OpenableElementInfo parent, IPackageFragmentRoot child)
 			throws JavaModelException {
 
@@ -495,7 +497,7 @@
 						this.manager.removePerProjectInfo(javaProject, true /* remove external jar files indexes and timestamps*/);
 						// remove container cache for this project
 						this.manager.containerRemove(javaProject);
-
+						JavaModelManager.getModulePathManager().removeEntry(javaProject);
 						this.state.rootsAreStale = true;
 						break;
 				}
@@ -507,13 +509,12 @@
 					case IResourceDelta.REMOVED:
 						// Close the containing package fragment root to reset its cached children.
 						// See http://bugs.eclipse.org/500714
-						IPackageFragmentRoot root = findContainingPackageFragmentRoot(resource);
-						if (root != null && root.isOpen()) {
-							try {
+						try {
+							IPackageFragmentRoot root = findContainingPackageFragmentRoot(resource);
+							if (root != null && root.isOpen())
 								root.close();
-							} catch (JavaModelException e) {
-								Util.log(e);
-							}
+						} catch (JavaModelException e) {
+							Util.log(e);
 						}
 						break;
 
@@ -534,7 +535,7 @@
 							int flags = delta.getFlags();
 							if ((flags & IResourceDelta.CONTENT) == 0  // only consider content change
 								&& (flags & IResourceDelta.ENCODING) == 0 // and encoding change
-								&& (flags & IResourceDelta.MOVED_FROM) == 0) {// and also move and overide scenario (see http://dev.eclipse.org/bugs/show_bug.cgi?id=21420)
+								&& (flags & IResourceDelta.MOVED_FROM) == 0) {// and also move and override scenario (see http://dev.eclipse.org/bugs/show_bug.cgi?id=21420)
 								break;
 							}
 						//$FALL-THROUGH$
@@ -553,6 +554,28 @@
 					javaProject = (JavaProject)JavaCore.create(file.getProject());
 					javaProject.resetResolvedClasspath();
 					this.state.rootsAreStale = true;
+				} else if (file.getName().toLowerCase().contains(new String(TypeConstants.MODULE_INFO_FILE_NAME))) {
+					switch(kind) {
+						case IResourceDelta.CHANGED :
+							int flags = delta.getFlags();
+							if ((flags & IResourceDelta.CONTENT) == 0)
+								break;
+							javaProject = (JavaProject)JavaCore.create(file.getProject());
+							this.manager.removePerProjectInfo(javaProject, false);
+							this.state.rootsAreStale = true;
+							break;
+							//$FALL-THROUGH$
+						case IResourceDelta.ADDED :
+						case IResourceDelta.REMOVED :
+							javaProject = (JavaProject)JavaCore.create(file.getProject());
+							try {
+								// Make sure module description is read
+								javaProject.close();
+							} catch (JavaModelException e) {
+								// do nothing
+							}
+							break;
+					}
 				}
 				break;
 
@@ -564,22 +587,24 @@
 		}
 	}
 
-	private IPackageFragmentRoot findContainingPackageFragmentRoot(IResource resource) {
+	private IPackageFragmentRoot findContainingPackageFragmentRoot(IResource resource) throws JavaModelException {
 		IProject project = resource.getProject();
 		if (JavaProject.hasJavaNature(project)) {
 			IJavaProject javaProject = JavaCore.create(project);
-			try {
-				IPath path = resource.getProjectRelativePath();
-				IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
-				for (IPackageFragmentRoot root : roots) {
-					IResource rootResource = root.getUnderlyingResource();
-					if (rootResource != null && !resource.equals(rootResource) &&
-							rootResource.getProjectRelativePath().isPrefixOf(path)) {
-						return root;
-					}
+			IPath path = resource.getProjectRelativePath();
+			IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
+			for (IPackageFragmentRoot root : roots) {
+				IResource rootResource = null;
+				try {
+					rootResource = root.getUnderlyingResource();
+				} catch (JavaModelException e) {
+					if (!e.isDoesNotExist())
+						throw e;
 				}
-			} catch (JavaModelException e) {
-				Util.log(e);
+				if (rootResource != null && !resource.equals(rootResource) &&
+						rootResource.getProjectRelativePath().isPrefixOf(path)) {
+					return root;
+				}
 			}
 		}
 		return null;
@@ -591,8 +616,8 @@
 	}
 
 	private void checkProjectReferenceChange(IProject project, JavaProject javaProject) {
-		ClasspathChange change = this.state.getClasspathChange(project);
-		this.state.addProjectReferenceChange(javaProject, change == null ? null : change.oldResolvedClasspath);
+		project.clearCachedDynamicReferences();
+		this.state.addProjectReferenceChange(javaProject);
 	}
 
 	private void readRawClasspath(JavaProject javaProject) {
@@ -608,7 +633,7 @@
 		}
 	}
 	private void checkSourceAttachmentChange(IResourceDelta delta, IResource res) {
-		IPath rootPath = (IPath)this.state.sourceAttachments.get(externalPath(res));
+		IPath rootPath = this.state.sourceAttachments.get(externalPath(res));
 		if (rootPath != null) {
 			RootInfo rootInfo = rootInfo(rootPath, delta.getKind());
 			if (rootInfo != null) {
@@ -796,7 +821,10 @@
 							// create class file handle
 							// fileName validation has been done in elementType(IResourceDelta, int, boolean)
 							String fileName = path.lastSegment();
-							element = pkgFragment.getClassFile(fileName);
+							if (TypeConstants.MODULE_INFO_CLASS_NAME_STRING.equals(fileName))
+								element = pkgFragment.getModularClassFile();
+							else
+								element = pkgFragment.getClassFile(fileName);
 						}
 					}
 				}
@@ -806,7 +834,7 @@
 		this.currentElement = (Openable)element;
 		return this.currentElement;
 	}
-	
+
 	public void checkExternalArchiveChanges(IJavaElement[] elementsScope,  IProgressMonitor monitor) throws JavaModelException {
 		checkExternalArchiveChanges(elementsScope, false, monitor);
 	}
@@ -826,10 +854,10 @@
 				this.state.addForRefresh(elementsScope[i]);
 				if (element.getElementType() == IJavaElement.JAVA_MODEL) {
 					// ensure external working copies' projects' caches are reset
-					HashSet projects = JavaModelManager.getJavaModelManager().getExternalWorkingCopyProjects();
+					Set<IJavaProject> projects = JavaModelManager.getJavaModelManager().getExternalWorkingCopyProjects();
 					if (projects != null) {
 						hasExternalWorkingCopyProject = true;
-						Iterator iterator = projects.iterator();
+						Iterator<IJavaProject> iterator = projects.iterator();
 						while (iterator.hasNext()) {
 							JavaProject project = (JavaProject) iterator.next();
 							project.resetCaches();
@@ -837,7 +865,7 @@
 					}
 				}
 			}
-			HashSet elementsToRefresh = this.state.removeExternalElementsToRefresh();
+			Set<IJavaElement> elementsToRefresh = this.state.removeExternalElementsToRefresh();
 			boolean hasDelta = elementsToRefresh != null && createExternalArchiveDelta(elementsToRefresh, monitor);
 			if (hasDelta){
 				IJavaElementDelta[] projectDeltas = this.currentDelta.getAffectedChildren();
@@ -857,6 +885,7 @@
 						//	 so that there is no concurrency with the Java builder
 						// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=96575
 						IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+							@Override
 							public void run(IProgressMonitor progressMonitor) throws CoreException {
 								for (int i = 0; i < projectsToTouch.length; i++) {
 									IProject project = projectsToTouch[i];
@@ -893,16 +922,16 @@
 	 * Check if external archives have changed for the given elements and create the corresponding deltas.
 	 * Returns whether at least one delta was created.
 	 */
-	private boolean createExternalArchiveDelta(HashSet refreshedElements, IProgressMonitor monitor) {
+	private boolean createExternalArchiveDelta(Set<IJavaElement> refreshedElements, IProgressMonitor monitor) {
 
-		HashMap externalArchivesStatus = new HashMap();
+		Map<IPath, String> externalArchivesStatus = new HashMap<>();
 		boolean hasDelta = false;
 
 		// find JARs to refresh
-		HashSet archivePathsToRefresh = new HashSet();
-		Iterator iterator = refreshedElements.iterator();
+		Set<IPath> archivePathsToRefresh = new HashSet<>();
+		Iterator<IJavaElement> iterator = refreshedElements.iterator();
 		while (iterator.hasNext()) {
-			IJavaElement element = (IJavaElement)iterator.next();
+			IJavaElement element = iterator.next();
 			switch(element.getElementType()){
 				case IJavaElement.PACKAGE_FRAGMENT_ROOT :
 					archivePathsToRefresh.add(element.getPath());
@@ -926,9 +955,9 @@
 					}
 					break;
 				case IJavaElement.JAVA_MODEL :
-					Iterator projectNames = this.state.getOldJavaProjecNames().iterator();
+					Iterator<String> projectNames = this.state.getOldJavaProjecNames().iterator();
 					while (projectNames.hasNext()) {
-						String projectName = (String) projectNames.next();
+						String projectName = projectNames.next();
 						IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
 						if (!JavaProject.hasJavaNature(project)) {
 							// project is not accessible or has lost its Java nature
@@ -952,13 +981,13 @@
 		}
 
 		// perform refresh
-		Iterator projectNames = this.state.getOldJavaProjecNames().iterator();
+		Iterator<String> projectNames = this.state.getOldJavaProjecNames().iterator();
 		IWorkspaceRoot wksRoot = ResourcesPlugin.getWorkspace().getRoot();
 		while (projectNames.hasNext()) {
 
 			if (monitor != null && monitor.isCanceled()) break;
 
-			String projectName = (String) projectNames.next();
+			String projectName = projectNames.next();
 			IProject project = wksRoot.getProject(projectName);
 			if (!JavaProject.hasJavaNature(project)) {
 				// project is not accessible or has lost its Java nature
@@ -979,7 +1008,7 @@
 
 					if (!archivePathsToRefresh.contains(entryPath)) continue; // not supposed to be refreshed
 
-					String status = (String)externalArchivesStatus.get(entryPath);
+					String status = externalArchivesStatus.get(entryPath);
 					if (status == null){
 
 						// Clear the external file state for this path, since this method is responsible for updating it.
@@ -1001,7 +1030,7 @@
 							File externalFile = (File)targetLibrary;
 
 							// check timestamp to figure if JAR has changed in some way
-							Long oldTimestamp =(Long) this.state.getExternalLibTimeStamps().get(entryPath);
+							Long oldTimestamp =this.state.getExternalLibTimeStamps().get(entryPath);
 							long newTimeStamp = getTimeStamp(externalFile);
 							if (oldTimestamp != null){
 
@@ -1041,7 +1070,7 @@
 						}
 					}
 					// according to computed status, generate a delta
-					status = (String)externalArchivesStatus.get(entryPath);
+					status = externalArchivesStatus.get(entryPath);
 					if (status != null){
 						if (status == EXTERNAL_JAR_ADDED){
 							PackageFragmentRoot root = (PackageFragmentRoot) javaProject.getPackageFragmentRoot(entryPath.toString());
@@ -1076,7 +1105,7 @@
 					}
 				}
 			}
-			
+
 			if (deltaContainsModifiedJar) {
 				javaProject.resetResolvedClasspath();
 			}
@@ -1108,7 +1137,7 @@
 
 			// remember roots of this project
 			if (this.oldRoots == null) {
-				this.oldRoots = new HashMap();
+				this.oldRoots = new HashMap<>();
 			}
 			if (javaProject.isOpen()) {
 				this.oldRoots.put(javaProject, javaProject.getPackageFragmentRoots());
@@ -1119,6 +1148,7 @@
 					javaProject.computePackageFragmentRoots(
 						javaProject.getResolvedClasspath(),
 						false,
+						true, // respect limit modules
 						null /*no reverse map*/));
 			}
 
@@ -1425,7 +1455,7 @@
 	 * Flushes all deltas without firing them.
 	 */
 	public void flush() {
-		this.javaModelDeltas = new ArrayList();
+		this.javaModelDeltas = new ArrayList<>();
 	}
 
 	private SourceElementParser getSourceElementParser(Openable element) {
@@ -1473,9 +1503,9 @@
 
 		// Refresh internal scopes
 		if (deltaToNotify != null) {
-			Iterator scopes = this.manager.searchScopes.keySet().iterator();
+			Iterator<AbstractSearchScope> scopes = this.manager.searchScopes.keySet().iterator();
 			while (scopes.hasNext()) {
-				AbstractSearchScope scope = (AbstractSearchScope)scopes.next();
+				AbstractSearchScope scope = scopes.next();
 				scope.processDelta(deltaToNotify, eventType);
 			}
 			JavaWorkspaceScope workspaceScope = this.manager.workspaceScope;
@@ -1539,7 +1569,7 @@
 		}
 		if (deltaToNotify != null) {
 			// flush now so as to keep listener reactions to post their own deltas for subsequent iteration
-			this.reconcileDeltas = new HashMap();
+			this.reconcileDeltas = new HashMap<>();
 
 			notifyListeners(deltaToNotify, ElementChangedEvent.POST_RECONCILE, listeners, listenerMask, listenerCount);
 		}
@@ -1559,6 +1589,7 @@
 			}
 			try {
 				rootDelta.accept(new IResourceDeltaVisitor() {
+					@Override
 					public boolean visit(IResourceDelta delta) /* throws CoreException */ {
 						switch (delta.getKind()){
 							case IResourceDelta.ADDED :
@@ -1639,15 +1670,15 @@
 	/*
 	 * Merges all awaiting deltas.
 	 */
-	private IJavaElementDelta mergeDeltas(Collection deltas) {
+	private IJavaElementDelta mergeDeltas(Collection<IJavaElementDelta> deltas) {
 		if (deltas.size() == 0) return null;
-		if (deltas.size() == 1) return (IJavaElementDelta)deltas.iterator().next();
+		if (deltas.size() == 1) return deltas.iterator().next();
 
 		if (VERBOSE) {
 			System.out.println("MERGING " + deltas.size() + " DELTAS ["+Thread.currentThread()+"]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		}
 
-		Iterator iterator = deltas.iterator();
+		Iterator<IJavaElementDelta> iterator = deltas.iterator();
 		JavaElementDelta rootDelta = new JavaElementDelta(this.manager.javaModel);
 		boolean insertedTree = false;
 		while (iterator.hasNext()) {
@@ -1690,9 +1721,11 @@
 				}
 				// wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief
 				SafeRunner.run(new ISafeRunnable() {
+					@Override
 					public void handleException(Throwable exception) {
 						Util.log(exception, "Exception occurred in listener of Java element change notification"); //$NON-NLS-1$
 					}
+					@Override
 					public void run() throws Exception {
 						PerformanceStats stats = null;
 						if(PERF) {
@@ -1718,9 +1751,11 @@
 
 			// wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief
 			SafeRunner.run(new ISafeRunnable() {
+				@Override
 				public void handleException(Throwable exception) {
 					Util.log(exception, "Exception occurred in listener of Java element change notification"); //$NON-NLS-1$
 				}
+				@Override
 				public void run() throws Exception {
 					TypeHierarchy typeHierarchy = (TypeHierarchy)listener;
 					if (typeHierarchy.hasFineGrainChanges()) {
@@ -1745,7 +1780,7 @@
 			JavaElementInfo info = (JavaElementInfo)element.getElementInfo();
 			switch (element.getElementType()) {
 				case IJavaElement.JAVA_MODEL :
-					((JavaModelInfo) info).nonJavaResources = null;
+					((JavaModelInfo) info).setNonJavaResources(null);
 					if (!ExternalFoldersManager.isInternalPathForExternalFolder(delta.getFullPath()))
 						currentDelta().addResourceDelta(delta);
 					return;
@@ -1781,16 +1816,16 @@
 	 * Returns the old root info for the given path and project.
 	 */
 	private RootInfo oldRootInfo(IPath path, JavaProject project) {
-		RootInfo oldInfo = (RootInfo) this.state.oldRoots.get(path);
+		RootInfo oldInfo = this.state.oldRoots.get(path);
 		if (oldInfo == null)
 			return null;
 		if (oldInfo.project.equals(project))
 			return oldInfo;
-		ArrayList oldInfos = (ArrayList) this.state.oldOtherRoots.get(path);
+		List<RootInfo> oldInfos = this.state.oldOtherRoots.get(path);
 		if (oldInfos == null)
 			return null;
 		for (int i = 0, length = oldInfos.size(); i < length; i++) {
-			oldInfo = (RootInfo) oldInfos.get(i);
+			oldInfo = oldInfos.get(i);
 			if (oldInfo.project.equals(project))
 				return oldInfo;
 		}
@@ -1799,11 +1834,11 @@
 	/*
 	 * Returns the other root infos for the given path. Look in the old other roots table if kind is REMOVED.
 	 */
-	private ArrayList otherRootsInfo(IPath path, int kind) {
+	private List<RootInfo> otherRootsInfo(IPath path, int kind) {
 		if (kind == IResourceDelta.REMOVED) {
-			return (ArrayList)this.state.oldOtherRoots.get(path);
+			return this.state.oldOtherRoots.get(path);
 		}
-		return (ArrayList)this.state.otherRoots.get(path);
+		return this.state.otherRoots.get(path);
 	}
 
 	private OutputsInfo outputsInfo(RootInfo rootInfo, IResource res) {
@@ -1953,9 +1988,9 @@
 
 		JavaModelManager.getJavaModelManager().resetJarTypeCache();
 
-		Iterator iterator = this.projectCachesToReset.iterator();
-		HashMap projectDepencies = this.state.projectDependencies;
-		HashSet affectedDependents = new HashSet();
+		Iterator<IJavaElement> iterator = this.projectCachesToReset.iterator();
+		Map<IJavaProject, IJavaProject[]> projectDepencies = this.state.projectDependencies;
+		Set<IJavaElement> affectedDependents = new HashSet<>();
 		while (iterator.hasNext()) {
 			JavaProject project = (JavaProject)iterator.next();
 			project.resetCaches();
@@ -2034,7 +2069,7 @@
 				//https://bugs.eclipse.org/bugs/show_bug.cgi?id=302295
 				// Refresh all project references together in a single job
 				JavaModelManager.getExternalManager().refreshReferences(projects, null);
-				
+
 				IJavaProject[] javaElements = new IJavaProject[projects.length];
 				for (int index = 0; index < projects.length; index++) {
 					javaElements[index] = JavaCore.create(projects[index]);
@@ -2048,7 +2083,7 @@
 				return;
 
 			case IResourceChangeEvent.POST_CHANGE :
-				HashSet elementsToRefresh = this.state.removeExternalElementsToRefresh();
+				Set<IJavaElement> elementsToRefresh = this.state.removeExternalElementsToRefresh();
 				if (isAffectedBy(delta) // avoid populating for SYNC or MARKER deltas
 						|| elementsToRefresh != null) {
 					try {
@@ -2062,13 +2097,13 @@
 							}
 
 							// generate classpath change deltas
-							HashMap classpathChanges = this.state.removeAllClasspathChanges();
+							Map<IProject, ClasspathChange> classpathChanges = this.state.removeAllClasspathChanges();
 							if (classpathChanges.size() > 0) {
 								boolean hasDelta = this.currentDelta != null;
 								JavaElementDelta javaDelta = currentDelta();
-								Iterator changes = classpathChanges.values().iterator();
+								Iterator<ClasspathChange> changes = classpathChanges.values().iterator();
 								while (changes.hasNext()) {
-									ClasspathChange change = (ClasspathChange) changes.next();
+									ClasspathChange change = changes.next();
 									int result = change.generateDelta(javaDelta, false/*don't add classpath change*/);
 									if ((result & ClasspathChange.HAS_DELTA) != 0) {
 										hasDelta = true;
@@ -2080,7 +2115,8 @@
 										this.state.addClasspathValidation(change.project);
 									}
 									if ((result & ClasspathChange.HAS_PROJECT_CHANGE) != 0) {
-										this.state.addProjectReferenceChange(change.project, change.oldResolvedClasspath);
+										change.project.getProject().clearCachedDynamicReferences();
+										this.state.addProjectReferenceChange(change.project);
 									}
 									if ((result & ClasspathChange.HAS_LIBRARY_CHANGE) != 0) {
 										this.state.addExternalFolderChange(change.project, change.oldResolvedClasspath);
@@ -2118,7 +2154,7 @@
 				// (note this is no-op if already initialized)
 				// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=241751
 				this.state.initializeRoots(false/*not initiAfterLoad*/);
-				
+
 				boolean isAffected = isAffectedBy(delta);
 				boolean needCycleValidation = isAffected && validateClasspaths(delta);
 
@@ -2145,20 +2181,13 @@
 				}
 
 				// update project references if necessary
-			    ProjectReferenceChange[] projectRefChanges = this.state.removeProjectReferenceChanges();
-				if (projectRefChanges != null) {
-				    for (int i = 0, length = projectRefChanges.length; i < length; i++) {
-				        try {
-					        projectRefChanges[i].updateProjectReferencesIfNecessary();
-				        } catch(JavaModelException e) {
-				            // project doesn't exist any longer, continue with next one
-				        	if (!e.isDoesNotExist())
-				        		Util.log(e, "Exception while updating project references"); //$NON-NLS-1$
-				        }
-				    }
-				}
+				Set<IJavaProject> referencedProjects = this.state.removeProjectReferenceChanges();
+				needCycleValidation = needCycleValidation || !referencedProjects.isEmpty();
 
-				if (needCycleValidation || projectRefChanges != null) {
+				if (needCycleValidation) {
+					for (IJavaProject next : referencedProjects) {
+						next.getProject().clearCachedDynamicReferences();
+					}
 					// update all cycle markers since the project references changes may have affected cycles
 					try {
 						JavaProject.validateCycles(null);
@@ -2229,9 +2258,9 @@
 	 */
 	private RootInfo rootInfo(IPath path, int kind) {
 		if (kind == IResourceDelta.REMOVED) {
-			return (RootInfo)this.state.oldRoots.get(path);
+			return this.state.oldRoots.get(path);
 		}
-		return (RootInfo)this.state.roots.get(path);
+		return this.state.roots.get(path);
 	}
 	/*
 	 * Turns the firing mode to on. That is, deltas that are/have been
@@ -2384,11 +2413,11 @@
 				}
 
 				// if the child is a package fragment root of one or several other projects
-				ArrayList rootList;
+				List<RootInfo> rootList;
 				if ((rootList = otherRootsInfo(childPath, childKind)) != null) {
-					Iterator iterator = rootList.iterator();
+					Iterator<RootInfo> iterator = rootList.iterator();
 					while (iterator.hasNext()) {
-						originalChildRootInfo = (RootInfo) iterator.next();
+						originalChildRootInfo = iterator.next();
 						this.currentElement = null; // ensure that 2 roots refering to the same resource don't share the current element (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=210746 )
 						traverseDelta(child, IJavaElement.PACKAGE_FRAGMENT_ROOT, originalChildRootInfo, null); // binary output of childRootInfo.project cannot be this root
 					}
@@ -2417,7 +2446,7 @@
 		} // else resource delta will be added by parent
 	}
 
-	private void validateClasspaths(IResourceDelta delta, HashSet affectedProjects) {
+	private void validateClasspaths(IResourceDelta delta, Set<IPath> affectedProjects) {
 		IResource resource = delta.getResource();
 		boolean processChildren = false;
 		switch (resource.getType()) {
@@ -2488,7 +2517,7 @@
 	 * Returns whether cycle markers should be recomputed.
 	 */
 	private boolean validateClasspaths(IResourceDelta delta) {
-		HashSet affectedProjects = new HashSet(5);
+		Set<IPath> affectedProjects = new HashSet<>(5);
 		validateClasspaths(delta, affectedProjects);
 		boolean needCycleValidation = false;
 
@@ -2536,6 +2565,7 @@
 	 * Returns whether the children of the given delta must be processed.
 	 * @throws a JavaModelException if the delta doesn't correspond to a java element of the given type.
 	 */
+	@SuppressWarnings("unlikely-arg-type")
 	public boolean updateCurrentDeltaAndIndex(IResourceDelta delta, int elementType, RootInfo rootInfo) {
 		Openable element;
 		switch (delta.getKind()) {
@@ -2614,6 +2644,7 @@
 						if (res.isOpen()) {
 							if (JavaProject.hasJavaNature(res)) {
 								addToParentInfo(element);
+								this.manager.getPerProjectInfo(res, true /*create info if needed*/).rememberExternalLibTimestamps();
 								currentDelta().opened(element);
 								this.state.updateRoots(element.getPath(), delta, this);
 
@@ -2813,7 +2844,7 @@
 
 		if (customDelta == null){
 			for (int i = 0, length = this.javaModelDeltas.size(); i < length; i++){
-				IJavaElementDelta delta = (IJavaElementDelta)this.javaModelDeltas.get(i);
+				IJavaElementDelta delta = this.javaModelDeltas.get(i);
 				this.modelUpdater.processJavaDelta(delta);
 			}
 		} else {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.java
index d40945b..0428f81 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DiscardWorkingCopyOperation.java
@@ -27,6 +27,7 @@
 	public DiscardWorkingCopyOperation(IJavaElement workingCopy) {
 		super(new IJavaElement[] {workingCopy});
 	}
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		CompilationUnit workingCopy = getWorkingCopy();
 
@@ -71,6 +72,7 @@
 	/**
 	 * @see JavaModelOperation#isReadOnly
 	 */
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.java
index 24b5efe..e718efa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DocumentAdapter.java
@@ -26,11 +26,13 @@
 		this.buffer = buffer;
 	}
 
+	@Override
 	public void set(String text) {
 		super.set(text);
 		this.buffer.setContents(text);
 	}
 
+	@Override
 	public void replace(int offset, int length, String text) throws BadLocationException {
 		super.replace(offset, length, text);
 		this.buffer.replace(offset, length, text);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.java
new file mode 100644
index 0000000..f3faf45
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/DynamicProjectReferences.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.core.resources.IBuildConfiguration;
+import org.eclipse.core.resources.IDynamicReferenceProvider;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+
+public class DynamicProjectReferences implements IDynamicReferenceProvider {
+	@Override
+	public List<IProject> getDependentProjects(IBuildConfiguration buildConfiguration) throws CoreException {
+		IProject input = buildConfiguration.getProject();
+		IJavaProject javaProject = JavaCore.create(input);
+		if (javaProject instanceof JavaProject) {
+			JavaProject project = (JavaProject) javaProject;
+
+			String[] required = project.projectPrerequisites(project.getResolvedClasspath());
+
+			IWorkspaceRoot wksRoot = input.getWorkspace().getRoot();
+			return Arrays.stream(required).sorted().map(name -> wksRoot.getProject(name)).collect(Collectors.toList());
+		}
+		return Collections.emptyList();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.java
index 7480598..383a031 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ElementCache.java
@@ -11,13 +11,13 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IOpenable;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
-import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache;
 
 /**
  * An LRU cache of <code>JavaElements</code>.
  */
-public class ElementCache extends OverflowingLRUCache {
+public class ElementCache<K extends IJavaElement & IOpenable> extends OverflowingLRUCache<K, JavaElementInfo> {
 
 	IJavaElement spaceLimitParent = null;
 
@@ -40,7 +40,11 @@
  * <p>NOTE: this triggers an external removal of this element
  * by closing the element.
  */
-protected boolean close(LRUCacheEntry entry) {
+@Override
+protected boolean close(LRUCacheEntry<K, JavaElementInfo> entry) {
+	if(!(entry.key instanceof Openable)) {
+		return false;
+	}
 	Openable element = (Openable) entry.key;
 	try {
 		if (!element.canBeRemovedFromCache()) {
@@ -58,9 +62,9 @@
  * Ensures that there is enough room for adding the children of the given info.
  * If the space limit must be increased, record the parent that needed this space limit.
  */
-protected void ensureSpaceLimit(Object info, IJavaElement parent) {
+protected void ensureSpaceLimit(JavaElementInfo info, IJavaElement parent) {
 	// ensure the children can be put without closing other elements
-	int childrenSize = ((JavaElementInfo) info).getChildren().length;
+	int childrenSize = info.getChildren().length;
 	int spaceNeeded = 1 + (int)((1 + this.loadFactor) * (childrenSize + this.overflow));
 	if (this.spaceLimit < spaceNeeded) {
 		// parent is being opened with more children than the space limit
@@ -73,8 +77,9 @@
 /*
  * Returns a new instance of the receiver.
  */
-protected LRUCache newInstance(int size, int newOverflow) {
-	return new ElementCache(size, newOverflow);
+@Override
+protected ElementCache<K> newInstance(int size, int newOverflow) {
+	return new ElementCache<>(size, newOverflow);
 }
 
 /*
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.java
index 959d008..aa9bfb5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalAnnotationTracker.java
@@ -129,8 +129,10 @@
 	
 	/** Stop listening & clean up. */
 	static void shutdown(IWorkspace workspace) {
-		workspace.removeResourceChangeListener(singleton);
-		singleton.tree.children = null;
+		if (singleton != null) {
+			workspace.removeResourceChangeListener(singleton);
+			singleton.tree.children = null;
+		}
 	}
 
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.java
index 599e99f..7c47683 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFolderChange.java
@@ -11,8 +11,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
-import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
@@ -35,9 +35,9 @@
 	 * Update external folders
 	 */
 	public void updateExternalFoldersIfNecessary(boolean refreshIfExistAlready, IProgressMonitor monitor) throws JavaModelException {
-		HashSet oldFolders = ExternalFoldersManager.getExternalFolders(this.oldResolvedClasspath);
+		Set oldFolders = ExternalFoldersManager.getExternalFolders(this.oldResolvedClasspath);
 		IClasspathEntry[] newResolvedClasspath = this.project.getResolvedClasspath();
-		HashSet newFolders = ExternalFoldersManager.getExternalFolders(newResolvedClasspath);
+		Set newFolders = ExternalFoldersManager.getExternalFolders(newResolvedClasspath);
 		if (newFolders == null)
 			return;
 		ExternalFoldersManager foldersManager = JavaModelManager.getExternalManager();
@@ -54,6 +54,7 @@
 		}
 		// removal of linked folders is done during save
 	}
+	@Override
 	public String toString() {
 		return "ExternalFolderChange: " + this.project.getElementName(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
index 9f61440..a78cd63 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalFoldersManager.java
@@ -17,15 +17,18 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
-import java.util.Vector;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
@@ -38,24 +41,26 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
 import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
-@SuppressWarnings({ "rawtypes", "unchecked" })
 public class ExternalFoldersManager {
 	private static final String EXTERNAL_PROJECT_NAME = ".org.aspectj.org.eclipse.jdt.core.external.folders"; //$NON-NLS-1$
 	private static final String LINKED_FOLDER_NAME = ".link"; //$NON-NLS-1$
-	private Map folders;
-	private Set pendingFolders; // subset of keys of 'folders', for which linked folders haven't been created yet.
-	private int counter = 0;
+	private Map<IPath, IFolder> folders;
+	private Set<IPath> pendingFolders; // subset of keys of 'folders', for which linked folders haven't been created yet.
+	private final AtomicInteger counter = new AtomicInteger(0);
 	/* Singleton instance */
 	private static ExternalFoldersManager MANAGER;
+	private RefreshJob refreshJob;
 
 	private ExternalFoldersManager() {
 		// Prevent instantiation
@@ -76,23 +81,23 @@
 	 * Returns a set of external paths to external folders referred to on the given classpath.
 	 * Returns <code>null</code> if there are none.
 	 */
-	public static HashSet getExternalFolders(IClasspathEntry[] classpath) {
+	public static Set<IPath> getExternalFolders(IClasspathEntry[] classpath) {
 		if (classpath == null)
 			return null;
-		HashSet folders = null;
+		Set<IPath> folders = null;
 		for (int i = 0; i < classpath.length; i++) {
 			IClasspathEntry entry = classpath[i];
 			if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
 				IPath entryPath = entry.getPath();
 				if (isExternalFolderPath(entryPath)) {
 					if (folders == null)
-						folders = new HashSet();
+						folders = new LinkedHashSet<>();
 					folders.add(entryPath);
 				}
 				IPath attachmentPath = entry.getSourceAttachmentPath();
 				if (isExternalFolderPath(attachmentPath)) {
 					if (folders == null)
-						folders = new HashSet();
+						folders = new LinkedHashSet<>();
 					folders.add(attachmentPath);
 				}
 			}
@@ -133,23 +138,33 @@
 	}
 
 	private IFolder addFolder(IPath externalFolderPath, IProject externalFoldersProject, boolean scheduleForCreation) {
-		Map knownFolders = getFolders();
-		Object existing = knownFolders.get(externalFolderPath);
-		if (existing != null) {
-			return (IFolder) existing;
+		Map<IPath, IFolder> knownFolders = getFolders();
+
+		IFolder existing;
+		synchronized (this) {
+			existing = knownFolders.get(externalFolderPath);
+			if (existing != null) {
+				return existing;
+			}
 		}
+
 		IFolder result;
 		do {
-			result = externalFoldersProject.getFolder(LINKED_FOLDER_NAME + this.counter++);
+			result = externalFoldersProject.getFolder(LINKED_FOLDER_NAME + this.counter.incrementAndGet());
 		} while (result.exists());
-		if (scheduleForCreation) {
-			synchronized(this) {
+
+		synchronized (this) {
+			if (scheduleForCreation) {
 				if (this.pendingFolders == null)
-					this.pendingFolders = Collections.synchronizedSet(new HashSet());
+					this.pendingFolders = new LinkedHashSet<>();
+				this.pendingFolders.add(externalFolderPath);
 			}
-			this.pendingFolders.add(externalFolderPath);
+			existing = knownFolders.get(externalFolderPath);
+			if (existing != null) {
+				return existing;
+			}
+			knownFolders.put(externalFolderPath, result);
 		}
-		knownFolders.put(externalFolderPath, result);
 		return result;
 	}
 
@@ -173,10 +188,18 @@
 									IProject externalFoldersProject, IProgressMonitor monitor) throws CoreException {
 
 		IFolder result = addFolder(externalFolderPath, externalFoldersProject, false);
-		if (!result.exists())
-			result.createLink(externalFolderPath, IResource.ALLOW_MISSING_LOCAL, monitor);
-		else if (refreshIfExistAlready)
+		if (!result.exists()) {
+			try {
+				result.createLink(externalFolderPath, IResource.ALLOW_MISSING_LOCAL, monitor);
+			} catch (CoreException e) {
+				// If we managed to create the folder in the meantime, don't complain
+				if (!result.exists()) {
+					throw e;
+				}
+			}
+		} else if (refreshIfExistAlready) {
 			result.refreshLocal(IResource.DEPTH_INFINITE,  monitor);
+		}
 		return result;
 	}
 
@@ -196,7 +219,7 @@
 		// To avoid race condition (from addFolder and removeFolder, load the map elements into an array and clear the map immediately.
 		// The createLinkFolder being in the synchronized block can cause a deadlock and hence keep it out of the synchronized block.
 		Object[] arrayOfFolders = null;
-		synchronized (this.pendingFolders) {
+		synchronized (this) {
 			arrayOfFolders = this.pendingFolders.toArray();
 			this.pendingFolders.clear();
 		}
@@ -211,14 +234,13 @@
 	}
 
 	public void cleanUp(IProgressMonitor monitor) throws CoreException {
-		ArrayList toDelete = getFoldersToCleanUp(monitor);
+		List<Entry<IPath, IFolder>> toDelete = getFoldersToCleanUp(monitor);
 		if (toDelete == null)
 			return;
-		for (Iterator iterator = toDelete.iterator(); iterator.hasNext();) {
-			Map.Entry entry = (Map.Entry) iterator.next();
-			IFolder folder = (IFolder) entry.getValue();
+		for (Entry<IPath, IFolder> entry : toDelete) {
+			IFolder folder = entry.getValue();
 			folder.delete(true, monitor);
-			IPath key = (IPath) entry.getKey();
+			IPath key = entry.getKey();
 			this.folders.remove(key);
 		}
 		IProject project = getExternalFoldersProject();
@@ -226,24 +248,24 @@
 			project.delete(true, monitor);
 	}
 
-	private ArrayList getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException {
+	private List<Entry<IPath, IFolder>> getFoldersToCleanUp(IProgressMonitor monitor) throws CoreException {
 		DeltaProcessingState state = JavaModelManager.getDeltaState();
-		HashMap roots = state.roots;
-		HashMap sourceAttachments = state.sourceAttachments;
+		Map<IPath, RootInfo> roots = state.roots;
+		Map<IPath, IPath> sourceAttachments = state.sourceAttachments;
 		if (roots == null && sourceAttachments == null)
 			return null;
-		Map knownFolders = getFolders();
-		ArrayList result = null;
+		Map<IPath, IFolder> knownFolders = getFolders();
+		List<Entry<IPath, IFolder>> result = null;
 		synchronized (knownFolders) {
-			Iterator iterator = knownFolders.entrySet().iterator();
+			Iterator<Entry<IPath, IFolder>> iterator = knownFolders.entrySet().iterator();
 			while (iterator.hasNext()) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				IPath path = (IPath) entry.getKey();
+				Entry<IPath, IFolder> entry = iterator.next();
+				IPath path = entry.getKey();
 				if ((roots != null && !roots.containsKey(path))
 						&& (sourceAttachments != null && !sourceAttachments.containsKey(path))) {
 					if (entry.getValue() != null) {
 						if (result == null)
-							result = new ArrayList();
+							result = new ArrayList<>();
 						result.add(entry);
 					}
 				}
@@ -255,6 +277,7 @@
 	public IProject getExternalFoldersProject() {
 		return ResourcesPlugin.getWorkspace().getRoot().getProject(EXTERNAL_PROJECT_NAME);
 	}
+
 	public IProject createExternalFoldersProject(IProgressMonitor monitor) throws CoreException {
 		IProject project = getExternalFoldersProject();
 		if (!project.isAccessible()) {
@@ -283,10 +306,9 @@
 				// .project or folder on disk have been deleted, recreate them
 				IPath stateLocation = JavaCore.getPlugin().getStateLocation();
 				IPath projectPath = stateLocation.append(EXTERNAL_PROJECT_NAME);
-				projectPath.toFile().mkdirs();
 				try {
-				    FileOutputStream output = new FileOutputStream(projectPath.append(".project").toOSString()); //$NON-NLS-1$
-				    try {
+					Files.createDirectories(projectPath.toFile().toPath());
+					try (FileOutputStream output = new FileOutputStream(projectPath.append(".project").toOSString())){ //$NON-NLS-1$
 				        output.write((
 				        		"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + //$NON-NLS-1$
 				        		"<projectDescription>\n" + //$NON-NLS-1$
@@ -299,8 +321,6 @@
 				        		"	<natures>\n" + //$NON-NLS-1$
 				        		"	</natures>\n" + //$NON-NLS-1$
 				        		"</projectDescription>").getBytes()); //$NON-NLS-1$
-				    } finally {
-				        output.close();
 				    }
 				} catch (IOException e) {
 					// fallback to re-creating the project
@@ -317,16 +337,23 @@
 		IProjectDescription desc = project.getWorkspace().newProjectDescription(project.getName());
 		IPath stateLocation = JavaCore.getPlugin().getStateLocation();
 		desc.setLocation(stateLocation.append(EXTERNAL_PROJECT_NAME));
-		project.create(desc, IResource.HIDDEN, monitor);
+		try {
+			project.create(desc, IResource.HIDDEN, monitor);
+		} catch (CoreException e) {
+			// If we managed to create the project in the meantime, don't complain
+			if (!project.exists()) {
+				throw e;
+			}
+		}
 	}
 
 	public IFolder getFolder(IPath externalFolderPath) {
-		return (IFolder) getFolders().get(externalFolderPath);
+		return getFolders().get(externalFolderPath);
 	}
 
-	private Map getFolders() {
+	private Map<IPath, IFolder> getFolders() {
 		if (this.folders == null) {
-			Map tempFolders = new HashMap();
+			Map<IPath, IFolder> tempFolders = new LinkedHashMap<>();
 			IProject project = getExternalFoldersProject();
 			try {
 				if (!project.isAccessible()) {
@@ -339,11 +366,10 @@
 					}
 				}
 				IResource[] members = project.members();
-				for (int i = 0, length = members.length; i < length; i++) {
-					IResource member = members[i];
+				for (IResource member : members) {
 					if (member.getType() == IResource.FOLDER && member.isLinked() && member.getName().startsWith(LINKED_FOLDER_NAME)) {
 						IPath externalFolderPath = member.getLocation();
-						tempFolders.put(externalFolderPath, member);
+						tempFolders.put(externalFolderPath, (IFolder) member);
 					}
 				}
 			} catch (CoreException e) {
@@ -356,59 +382,45 @@
 
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=313153
 	// Use the same RefreshJob if the job is still available
-	private void runRefreshJob(Collection paths) {
-		Job[] jobs = Job.getJobManager().find(ResourcesPlugin.FAMILY_MANUAL_REFRESH);
-		RefreshJob refreshJob = null;
-		if (jobs != null) {
-			for (int index = 0; index < jobs.length; index++) {
-				// We are only concerned about ExternalFolderManager.RefreshJob
-				if(jobs[index] instanceof RefreshJob) {
-					refreshJob =  (RefreshJob) jobs[index];
-					refreshJob.addFoldersToRefresh(paths);
-					if (refreshJob.getState() == Job.NONE) {
-						refreshJob.schedule();
-					}
-					break;
-				}
-			}
+	private synchronized void runRefreshJob(Collection<IPath> paths) {
+		if (paths == null || paths.isEmpty()) {
+			return;
 		}
-		if (refreshJob == null) {
-			refreshJob = new RefreshJob(new Vector(paths));
-			refreshJob.schedule();
+		if (this.refreshJob == null) {
+			this.refreshJob = new RefreshJob();
 		}
+		this.refreshJob.addFoldersToRefresh(paths);
 	}
+
 	/*
 	 * Refreshes the external folders referenced on the classpath of the given source project
 	 */
 	public void refreshReferences(final IProject[] sourceProjects, IProgressMonitor monitor) {
 		IProject externalProject = getExternalFoldersProject();
 		try {
-			HashSet externalFolders = null;
+			Set<IPath> externalFolders = null;
 			for (int index = 0; index < sourceProjects.length; index++) {
 				if (sourceProjects[index].equals(externalProject))
 					continue;
 				if (!JavaProject.hasJavaNature(sourceProjects[index]))
 					continue;
 
-				HashSet foldersInProject = getExternalFolders(((JavaProject) JavaCore.create(sourceProjects[index])).getResolvedClasspath());
+				Set<IPath> foldersInProject = getExternalFolders(((JavaProject) JavaCore.create(sourceProjects[index])).getResolvedClasspath());
 
 				if (foldersInProject == null || foldersInProject.size() == 0)
 					continue;
 				if (externalFolders == null)
-					externalFolders = new HashSet();
+					externalFolders = new LinkedHashSet<>();
 
 				externalFolders.addAll(foldersInProject);
 			}
-			if (externalFolders == null)
-				return;
-
 			runRefreshJob(externalFolders);
 
 		} catch (CoreException e) {
 			Util.log(e, "Exception while refreshing external project"); //$NON-NLS-1$
 		}
-		return;
 	}
+
 	public void refreshReferences(IProject source, IProgressMonitor monitor) {
 		IProject externalProject = getExternalFoldersProject();
 		if (source.equals(externalProject))
@@ -416,75 +428,79 @@
 		if (!JavaProject.hasJavaNature(source))
 			return;
 		try {
-			HashSet externalFolders = getExternalFolders(((JavaProject) JavaCore.create(source)).getResolvedClasspath());
-			if (externalFolders == null)
-				return;
-
+			Set<IPath> externalFolders = getExternalFolders(((JavaProject) JavaCore.create(source)).getResolvedClasspath());
 			runRefreshJob(externalFolders);
 		} catch (CoreException e) {
 			Util.log(e, "Exception while refreshing external project"); //$NON-NLS-1$
 		}
-		return;
 	}
 
 	public IFolder removeFolder(IPath externalFolderPath) {
-		return (IFolder) getFolders().remove(externalFolderPath);
+		return getFolders().remove(externalFolderPath);
 	}
 
-	class RefreshJob extends Job {
-		Vector externalFolders = null;
-		RefreshJob(Vector externalFolders){
+	static class RefreshJob extends Job {
+
+		final LinkedHashSet<IPath> externalFolders;
+
+		RefreshJob(){
 			super(Messages.refreshing_external_folders);
-			this.externalFolders = externalFolders;
 			// bug 476059: don't interrupt autobuild by using rule and system flag.
 			setSystem(true);
 			IWorkspace workspace = ResourcesPlugin.getWorkspace();
 			setRule(workspace.getRuleFactory().refreshRule(workspace.getRoot()));
+			this.externalFolders = new LinkedHashSet<>();
 		}
 
+		@Override
 		public boolean belongsTo(Object family) {
 			return family == ResourcesPlugin.FAMILY_MANUAL_REFRESH;
 		}
 
 		/*
 		 * Add the collection of paths to be refreshed to the already
-		 * existing list of paths.
+		 * existing set of paths and schedules the job
 		 */
-		public void addFoldersToRefresh(Collection paths) {
-			if (!paths.isEmpty() && this.externalFolders == null) {
-				this.externalFolders = new Vector();
+		public void addFoldersToRefresh(Collection<IPath> paths) {
+			boolean shouldSchedule;
+			synchronized (this.externalFolders) {
+				this.externalFolders.addAll(paths);
+				shouldSchedule = !this.externalFolders.isEmpty();
 			}
-			Iterator it = paths.iterator();
-			while(it.hasNext()) {
-				Object path = it.next();
-				if (!this.externalFolders.contains(path)) {
-					this.externalFolders.add(path);
-				}
+			if (shouldSchedule) {
+				schedule();
 			}
 		}
 
+		@Override
 		protected IStatus run(IProgressMonitor pm) {
-			try {
-				if (this.externalFolders == null)
-					return Status.OK_STATUS;
-				IPath externalPath = null;
-				for (int index = 0; index < this.externalFolders.size(); index++ ) {
-					if ((externalPath = (IPath)this.externalFolders.get(index)) != null) {
-						IFolder folder = getFolder(externalPath);
-						// https://bugs.eclipse.org/bugs/show_bug.cgi?id=321358
-						if (folder != null)
-							folder.refreshLocal(IResource.DEPTH_INFINITE, pm);
+			MultiStatus errors = new MultiStatus(JavaCore.PLUGIN_ID, IStatus.OK,
+					"Exception while refreshing external folders", null); //$NON-NLS-1$
+			while (true) {
+				IPath externalPath;
+				synchronized (this.externalFolders) {
+					if (this.externalFolders.isEmpty()) {
+						return errors.isOK()? Status.OK_STATUS : errors;
 					}
-					// Set the processed ones to null instead of removing the element altogether,
-					// so that they will not be considered as duplicates.
-					// This will also avoid elements being shifted to the left every time an element
-					// is removed. However, there is a risk of Collection size to be increased more often.
-					this.externalFolders.setElementAt(null, index);
+					// keep the path in the list to avoid re-adding it while we are working
+					externalPath = this.externalFolders.iterator().next();
 				}
-			} catch (CoreException e) {
-				return e.getStatus();
+
+				try {
+					IFolder folder = getExternalFoldersManager().getFolder(externalPath);
+					// https://bugs.eclipse.org/bugs/show_bug.cgi?id=321358
+					if (folder != null) {
+						folder.refreshLocal(IResource.DEPTH_INFINITE, pm);
+					}
+				} catch (CoreException e) {
+					errors.merge(e.getStatus());
+				} finally {
+					// we should always remove the path to avoid endless loop trying to refresh it
+					synchronized (this.externalFolders) {
+						this.externalFolders.remove(externalPath);
+					}
+				}
 			}
-			return Status.OK_STATUS;
 		}
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.java
index e3c1d2c..0d10adb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalJavaProject.java
@@ -34,15 +34,18 @@
 		}
 	}
 
+	@Override
 	public boolean equals(Object o) {
 		return this == o;
 	}
 
+	@Override
 	public boolean exists() {
 		// external project never exists
 		return false;
 	}
 
+	@Override
 	public String getOption(String optionName, boolean inheritJavaCoreOptions) {
 		if (JavaCore.COMPILER_PB_FORBIDDEN_REFERENCE.equals(optionName)
 				|| JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE.equals(optionName))
@@ -50,16 +53,19 @@
 		return super.getOption(optionName, inheritJavaCoreOptions);
 	}
 
+	@Override
 	public boolean isOnClasspath(IJavaElement element) {
 		// since project is external, no element is on classpath (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=61013#c16)
 		return false;
 	}
 
+	@Override
 	public boolean isOnClasspath(IResource resource) {
 		// since project is external, no resource is on classpath (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=61013#c16)
 		return false;
 	}
 
+	@Override
 	protected IStatus validateExistence(IResource underlyingResource) {
 		// allow opening of external project
 		return JavaModelStatus.VERIFIED_OK;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.java
index 1b5367b..735eeff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ExternalPackageFragmentRoot.java
@@ -52,6 +52,7 @@
 	/**
 	 * An external class folder is always K_BINARY.
 	 */
+	@Override
 	protected int determineKind(IResource underlyingResource) {
 		return IPackageFragmentRoot.K_BINARY;
 	}
@@ -61,6 +62,7 @@
 	 *
 	 * @see Object#equals
 	 */
+	@Override
 	public boolean equals(Object o) {
 		if (this == o)
 			return true;
@@ -70,21 +72,25 @@
 		}
 		return false;
 	}
+	@Override
 	public String getElementName() {
 		return this.externalPath.lastSegment();
 	}
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public int getKind() {
 		return IPackageFragmentRoot.K_BINARY;
 	}
+	@Override
 	int internalKind() throws JavaModelException {
 		return IPackageFragmentRoot.K_BINARY;
 	}
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public IPath getPath() {
 		return this.externalPath;
 	}
@@ -92,25 +98,30 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IResource getUnderlyingResource() throws JavaModelException {
 		return null;
 	}
+	@Override
 	public int hashCode() {
 		return this.externalPath.hashCode();
 	}
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public boolean isExternal() {
 		return true;
 	}
 
+	@Override
 	public IResource resource(PackageFragmentRoot root) {
 		if (this.resource == null)
 			return this.resource = JavaModelManager.getExternalManager().getFolder(this.externalPath);
 		return super.resource(root);
 	}
 
+	@Override
 	protected boolean resourceExists(IResource underlyingResource) {
 		if (underlyingResource == null)
 			return false;
@@ -123,6 +134,7 @@
 		return file.exists();
 	}
 
+	@Override
 	protected void toStringAncestors(StringBuffer buffer) {
 		// don't show project as it is irrelevant for external folders.
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
index 320ccf3..f5ef4a2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/IJavaElementRequestor.java
@@ -13,6 +13,7 @@
 import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IInitializer;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IType;
 
@@ -30,6 +31,7 @@
 public void acceptMethod(IMethod method);
 public void acceptPackageFragment(IPackageFragment packageFragment);
 public void acceptType(IType type);
+public void acceptModule(IModuleDescription module);
 /**
  * Returns <code>true</code> if this IJavaElementRequestor does
  * not want to receive any more results.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.java
index b1efac8..9a5fe90 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainer.java
@@ -20,6 +20,7 @@
 protected ImportContainer(CompilationUnit parent) {
 	super(parent);
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof ImportContainer)) return false;
 	return super.equals(o);
@@ -27,12 +28,12 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return IMPORT_CONTAINER;
 }
-/*
- * @see JavaElement
- */
+
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_COUNT:
@@ -51,12 +52,14 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_IMPORTDECLARATION;
 }
 /**
  * @see IImportContainer
  */
+@Override
 public IImportDeclaration getImport(String importName) {
 	int index = importName.indexOf(".*"); ///$NON-NLS-1$
 	boolean isOnDemand = index != -1;
@@ -68,9 +71,8 @@
 protected IImportDeclaration getImport(String importName, boolean isOnDemand) {
 	return new ImportDeclaration(this, importName, isOnDemand);
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	CompilationUnit cu = (CompilationUnit)this.parent;
 	if (checkOwner && cu.isPrimary()) return this;
@@ -79,6 +81,7 @@
 /**
  * @see ISourceReference
  */
+@Override
 public ISourceRange getSourceRange() throws JavaModelException {
 	IJavaElement[] imports= getChildren();
 	ISourceRange firstRange= ((ISourceReference)imports[0]).getSourceRange();
@@ -88,6 +91,7 @@
 }
 /**
  */
+@Override
 public String readableName() {
 
 	return null;
@@ -95,6 +99,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toString(int tab, StringBuffer buffer) {
 	Object info = JavaModelManager.getJavaModelManager().peekAtInfo(this);
 	if (info == null || !(info instanceof JavaElementInfo)) return;
@@ -107,6 +112,7 @@
 /**
  *  Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	buffer.append("<import container>"); //$NON-NLS-1$
@@ -114,6 +120,7 @@
 		buffer.append(" (not open)"); //$NON-NLS-1$
 	}
 }
+@Override
 public ISourceRange getNameRange() {
 	return null;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.java
index a7ac293..80ae1f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportContainerInfo.java
@@ -16,6 +16,7 @@
 
 	protected IJavaElement[] children = JavaElement.NO_ELEMENTS;
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.java
index 8cf5c13..8c2986e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ImportDeclaration.java
@@ -32,10 +32,12 @@
 	this.name = name;
 	this.isOnDemand = isOnDemand;
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof ImportDeclaration)) return false;
 	return super.equals(o);
 }
+@Override
 public String getElementName() {
 	if (this.isOnDemand)
 		return this.name + ".*"; //$NON-NLS-1$
@@ -47,12 +49,14 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return IMPORT_DECLARATION;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.IImportDeclaration#getFlags()
  */
+@Override
 public int getFlags() throws JavaModelException {
 	ImportDeclarationElementInfo info = (ImportDeclarationElementInfo)getElementInfo();
 	return info.getModifiers();
@@ -61,6 +65,7 @@
  * @see JavaElement#getHandleMemento(StringBuffer)
  * For import declarations, the handle delimiter is associated to the import container already
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	((JavaElement)getParent()).getHandleMemento(buff);
 	escapeMementoName(buff, getElementName());
@@ -72,18 +77,19 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	// For import declarations, the handle delimiter is associated to the import container already
 	Assert.isTrue(false, "Should not be called"); //$NON-NLS-1$
 	return 0;
 }
+@Override
 public ISourceRange getNameRange() throws JavaModelException {
 	ImportDeclarationElementInfo info = (ImportDeclarationElementInfo) getElementInfo();
 	return info.getNameRange();
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	CompilationUnit cu = (CompilationUnit)this.parent.getParent();
 	if (checkOwner && cu.isPrimary()) return this;
@@ -92,11 +98,13 @@
 /**
  * Returns true if the import is on-demand (ends with ".*")
  */
+@Override
 public boolean isOnDemand() {
 	return this.isOnDemand;
 }
 /**
  */
+@Override
 public String readableName() {
 
 	return null;
@@ -104,6 +112,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	buffer.append("import "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Initializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Initializer.java
index 84eac47..75c4a3c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Initializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Initializer.java
@@ -33,6 +33,7 @@
 		throw new IllegalArgumentException();
 	this.occurrenceCount = count;
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof Initializer)) return false;
 	return super.equals(o);
@@ -40,12 +41,14 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return INITIALIZER;
 }
 /**
  * @see JavaElement#getHandleMemento(StringBuffer)
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	((JavaElement)getParent()).getHandleMemento(buff);
 	buff.append(getHandleMementoDelimiter());
@@ -54,14 +57,17 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_INITIALIZER;
 }
+@Override
 public int hashCode() {
 	return Util.combineHashCodes(this.parent.hashCode(), this.occurrenceCount);
 }
 /**
  */
+@Override
 public String readableName() {
 
 	return ((JavaElement)getDeclaringType()).readableName();
@@ -69,18 +75,19 @@
 /**
  * @see ISourceManipulation
  */
+@Override
 public void rename(String newName, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_ELEMENT_TYPES, this));
 }
 /**
  * @see IMember
  */
+@Override
 public ISourceRange getNameRange() {
 	return null;
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner) {
 		CompilationUnit cu = (CompilationUnit)getAncestor(COMPILATION_UNIT);
@@ -92,6 +99,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.java
index 16c0164..bee9d7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/InitializerWithChildrenInfo.java
@@ -20,6 +20,7 @@
 		this.children = children;
 	}
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.java
new file mode 100644
index 0000000..650ee3d
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JModPackageFragmentRoot.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.core.builder.ClasspathJMod;
+import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
+
+/**
+ * A package fragment root that corresponds to a JMod file.
+ *
+ * <p>NOTE: The only visible entries from a Jmod package fragment root
+ * are .class files. The sub folder "classes" where the .class files are nested under
+ * is hidden from clients. THe package fragments appear to be directly under the 
+ * package fragment roots.
+ * <p>NOTE: A JMod package fragment root may or may not have an associated resource.
+ *
+ * @see org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot
+ * @see org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRootInfo
+ */
+public class JModPackageFragmentRoot extends JarPackageFragmentRoot {
+
+	/**
+	 * Constructs a package fragment root which is the root of the Java package directory hierarchy
+	 * based on a JMOD file that is not contained in a <code>IJavaProject</code> and
+	 * does not have an associated <code>IResource</code>.
+	 */
+	protected JModPackageFragmentRoot(IPath externalPath, JavaProject project) {
+		super(externalPath, project);
+	}
+	/**
+	 * Constructs a package fragment root which is the root of the Java package directory hierarchy
+	 * based on a JMOD file.
+	 */
+	protected JModPackageFragmentRoot(IResource resource, JavaProject project) {
+		super(resource, project);
+	}
+
+	/**
+	 * @see PackageFragmentRoot#getClassFilePath(String)
+	 */
+	@Override
+	public String getClassFilePath(String entryName) {
+		char[] name = CharOperation.append(ClasspathJMod.CLASSES_FOLDER, entryName.toCharArray());
+		return new String(name);
+	}
+	@Override
+	protected void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) {
+		char[] name = entryName.toCharArray();
+		if (CharOperation.prefixEquals(ClasspathJMod.CLASSES_FOLDER, name)) {
+			name = CharOperation.subarray(name, ClasspathJMod.CLASSES_FOLDER.length, name.length);
+		}
+		super.initRawPackageInfo(rawPackageInfo, new String(name), isDirectory, compliance);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.java
index a59bc08..2e9da20 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryDirectory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,7 @@
 		super(simpleName);
 	}
 
+	@Override
 	public JarEntryResource clone(Object newParent) {
 		JarEntryDirectory dir = new JarEntryDirectory(this.simpleName);
 		dir.setParent(newParent);
@@ -38,14 +39,17 @@
 		return dir;
 	}
 
+	@Override
 	public IJarEntryResource[] getChildren() {
 		return this.children;
 	}
 
+	@Override
 	public InputStream getContents() throws CoreException {
 		return new ByteArrayInputStream(new byte[0]);
 	}
 
+	@Override
 	public boolean isFile() {
 		return false;
 	}
@@ -54,6 +58,7 @@
 		this.children = children;
 	}
 
+	@Override
 	public String toString() {
 		return "JarEntryDirectory["+getEntryName()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.java
index 5dadc72..c9e8835 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import java.io.ByteArrayInputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.zip.ZipEntry;
@@ -18,9 +19,12 @@
 
 import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.aspectj.org.eclipse.jdt.core.IJarEntryResource;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
 /**
@@ -30,47 +34,65 @@
  */
 public class JarEntryFile  extends JarEntryResource {
 	private static final IJarEntryResource[] NO_CHILDREN = new IJarEntryResource[0];
-
 	public JarEntryFile(String simpleName) {
 		super(simpleName);
 	}
 
+	@Override
 	public JarEntryResource clone(Object newParent) {
 		JarEntryFile file = new JarEntryFile(this.simpleName);
 		file.setParent(newParent);
 		return file;
 	}
 
+	@Override
 	public InputStream getContents() throws CoreException {
-		ZipFile zipFile = null;
-		try {
-			zipFile = getZipFile();
-			if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
-				System.out.println("(" + Thread.currentThread() + ") [JarEntryFile.getContents()] Creating ZipFile on " +zipFile.getName()); //$NON-NLS-1$	//$NON-NLS-2$
+		IPackageFragmentRoot root = getPackageFragmentRoot();
+		if (Util.isJrt(root.getPath().toOSString())) {
+			try {
+				IPath rootPath = root.getPath();
+				Object target = JavaModel.getTarget(rootPath, false);
+				if (target != null && target instanceof File) {
+					return JRTUtil.getContentFromJrt((File) target, getEntryName(), root.getElementName());
+				}
+			} catch (IOException e) {
+				throw new JavaModelException(e, IJavaModelStatusConstants.IO_EXCEPTION);
 			}
-			String entryName = getEntryName();
-			ZipEntry zipEntry = zipFile.getEntry(entryName);
-			if (zipEntry == null){
-				throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_PATH, entryName));
+			return null;
+		} else {
+			ZipFile zipFile = null;
+			try {
+				zipFile = getZipFile();
+				if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
+					System.out.println("(" + Thread.currentThread() + ") [JarEntryFile.getContents()] Creating ZipFile on " +zipFile.getName()); //$NON-NLS-1$	//$NON-NLS-2$
+				}
+				String entryName = getEntryName();
+				ZipEntry zipEntry = zipFile.getEntry(entryName);
+				if (zipEntry == null){
+					throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INVALID_PATH, entryName));
+				}
+				byte[] contents = Util.getZipEntryByteContent(zipEntry, zipFile);
+				return new ByteArrayInputStream(contents);
+			} catch (IOException e){
+				throw new JavaModelException(e, IJavaModelStatusConstants.IO_EXCEPTION);
+			} finally {
+				// avoid leaking ZipFiles
+				JavaModelManager.getJavaModelManager().closeZipFile(zipFile);
 			}
-			byte[] contents = Util.getZipEntryByteContent(zipEntry, zipFile);
-			return new ByteArrayInputStream(contents);
-		} catch (IOException e){
-			throw new JavaModelException(e, IJavaModelStatusConstants.IO_EXCEPTION);
-		} finally {
-			// avoid leaking ZipFiles
-			JavaModelManager.getJavaModelManager().closeZipFile(zipFile);
 		}
 	}
 
+	@Override
 	public IJarEntryResource[] getChildren() {
 		return NO_CHILDREN;
 	}
 
+	@Override
 	public boolean isFile() {
 		return true;
 	}
 
+	@Override
 	public String toString() {
 		return "JarEntryFile["+getEntryName()+"]"; //$NON-NLS-2$ //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.java
index 9bb4756..afc29ae 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarEntryResource.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,6 +32,7 @@
 
 	public abstract JarEntryResource clone(Object newParent);
 
+	@Override
 	public boolean equals(Object obj) {
 		if (! (obj instanceof JarEntryResource))
 			return false;
@@ -52,18 +53,22 @@
 		return parentEntryName + this.simpleName;
 	}
 
+	@Override
 	public IPath getFullPath() {
 		return new Path(getEntryName()).makeAbsolute();
 	}
 
+	@Override
 	public String getName() {
 		return this.simpleName;
 	}
 
+	@Override
 	public Object getParent() {
 		return this.parent;
 	}
 
+	@Override
 	public IPackageFragmentRoot getPackageFragmentRoot() {
 		if (this.parent instanceof IPackageFragment) {
 			return (IPackageFragmentRoot) ((IPackageFragment) this.parent).getParent();
@@ -84,10 +89,12 @@
 			return ((JarEntryDirectory) this.parent).getZipFile();
 	}
 
+	@Override
 	public int hashCode() {
 		return Util.combineHashCodes(this.simpleName.hashCode(), this.parent.hashCode());
 	}
 
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.java
index 77db06a..d71829f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,6 +25,7 @@
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
 /**
@@ -43,6 +44,7 @@
 /**
  * @see Openable
  */
+@Override
 protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
 	JarPackageFragmentRoot root = (JarPackageFragmentRoot) getParent();
 	JarPackageFragmentRootInfo parentInfo = (JarPackageFragmentRootInfo) root.getElementInfo();
@@ -71,7 +73,10 @@
 	IJavaElement[] children = new IJavaElement[size];
 	for (int i = 0; i < size; i++) {
 		String nameWithoutExtension = (String) namesWithoutExtension.get(i);
-		children[i] = new ClassFile(this, nameWithoutExtension);
+		if (TypeConstants.MODULE_INFO_NAME_STRING.equals(nameWithoutExtension))
+			children[i] = new ModularClassFile(this);
+		else
+			children[i] = new ClassFile(this, nameWithoutExtension);
 	}
 	return children;
 }
@@ -147,25 +152,29 @@
  * Returns true if this fragment contains at least one java resource.
  * Returns false otherwise.
  */
+@Override
 public boolean containsJavaResources() throws JavaModelException {
 	return ((JarPackageFragmentInfo) getElementInfo()).containsJavaResources();
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.IPackageFragment
  */
+@Override
 public ICompilationUnit createCompilationUnit(String cuName, String contents, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
 }
 /**
  * @see JavaElement
  */
+@Override
 protected Object createElementInfo() {
 	return new JarPackageFragmentInfo();
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.IPackageFragment
  */
-public IClassFile[] getClassFiles() throws JavaModelException {
+@Override
+public IClassFile[] getAllClassFiles() throws JavaModelException {
 	ArrayList list = getChildrenOfType(CLASS_FILE);
 	IClassFile[] array= new IClassFile[list.size()];
 	list.toArray(array);
@@ -175,6 +184,7 @@
  * A jar package fragment never contains compilation units.
  * @see org.aspectj.org.eclipse.jdt.core.IPackageFragment
  */
+@Override
 public ICompilationUnit[] getCompilationUnits() {
 	return NO_COMPILATION_UNITS;
 }
@@ -183,12 +193,14 @@
  *
  * @see IJavaElement
  */
+@Override
 public IResource getCorrespondingResource() {
 	return null;
 }
 /**
  * Returns an array of non-java resources contained in the receiver.
  */
+@Override
 public Object[] getNonJavaResources() throws JavaModelException {
 	if (isDefaultPackage()) {
 		// We don't want to show non java resources of the default package (see PR #1G58NB8)
@@ -197,12 +209,14 @@
 		return storedNonJavaResources();
 	}
 }
+@Override
 protected boolean internalIsValidPackageName() {
 	return true;
 }
 /**
  * Jars and jar entries are all read only
  */
+@Override
 public boolean isReadOnly() {
 	return true;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.java
index 9a684ae..17c15df 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JarPackageFragmentRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,8 +10,11 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
+import java.io.IOException;
 import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipException;
 import java.util.zip.ZipFile;
@@ -20,9 +23,19 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
-import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.IReader;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdType;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdZipEntry;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -39,7 +52,7 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class JarPackageFragmentRoot extends PackageFragmentRoot {
 
-	private final static ArrayList EMPTY_LIST = new ArrayList();
+	protected final static ArrayList EMPTY_LIST = new ArrayList();
 
 	/**
 	 * The path to the jar file
@@ -48,6 +61,8 @@
 	 */
 	protected final IPath jarPath;
 
+	boolean knownToBeModuleLess;
+
 	/**
 	 * Constructs a package fragment root which is the root of the Java package directory hierarchy
 	 * based on a JAR file that is not contained in a <code>IJavaProject</code> and
@@ -71,24 +86,59 @@
 	 * These are all of the directory zip entries, and any directories implied
 	 * by the path of class files contained in the jar of this package fragment root.
 	 */
+	@Override
 	protected boolean computeChildren(OpenableElementInfo info, IResource underlyingResource) throws JavaModelException {
-		HashtableOfArrayToObject rawPackageInfo = new HashtableOfArrayToObject();
+		final HashtableOfArrayToObject rawPackageInfo = new HashtableOfArrayToObject();
 		IJavaElement[] children;
-		ZipFile jar = null;
 		try {
-			Object file = JavaModel.getTarget(getPath(), true);
-			long level = Util.getJdkLevel(file);
-			String compliance = CompilerOptions.versionFromJdkLevel(level);
-			jar = getJar();
-
 			// always create the default package
 			rawPackageInfo.put(CharOperation.NO_STRINGS, new ArrayList[] { EMPTY_LIST, EMPTY_LIST });
 
-			for (Enumeration e= jar.entries(); e.hasMoreElements();) {
-				ZipEntry member= (ZipEntry) e.nextElement();
-				initRawPackageInfo(rawPackageInfo, member.getName(), member.isDirectory(), compliance);
+			boolean usedIndex = false;
+			if (JavaIndex.isEnabled()) {
+				JavaIndex index = JavaIndex.getIndex();
+				try (IReader reader = index.getNd().acquireReadLock()) {
+					IPath resourcePath = JavaIndex.getLocationForElement(this); 
+					if (!resourcePath.isEmpty()) {
+						NdResourceFile resourceFile = index.getResourceFile(resourcePath.toString().toCharArray());
+						if (index.isUpToDate(resourceFile)) {
+							usedIndex = true;
+							long level = resourceFile.getJdkLevel();
+							String compliance = CompilerOptions.versionFromJdkLevel(level);
+							// Locate all the non-classfile entries
+							for (NdZipEntry next : resourceFile.getZipEntries()) {
+								String filename = next.getFileName().getString();
+								initRawPackageInfo(rawPackageInfo, filename, filename.endsWith("/"), compliance); //$NON-NLS-1$
+							}
+	
+							// Locate all the classfile entries
+							for (NdType type : resourceFile.getTypes()) {	
+								String path = new String(type.getTypeId().getBinaryName()) + ".class"; //$NON-NLS-1$
+								initRawPackageInfo(rawPackageInfo, path, false, compliance);
+							}
+						}
+					}
+				}
 			}
 
+			// If we weren't able to compute the set of children from the index (either the index was disabled or didn't
+			// contain an up-to-date entry for this .jar) then fetch it directly from the .jar
+			if (!usedIndex) {
+				Object file = JavaModel.getTarget(getPath(), true);
+				long level = Util.getJdkLevel(file);
+				String compliance = CompilerOptions.versionFromJdkLevel(level);
+				ZipFile jar = null;
+				try {
+					jar = getJar();
+
+					for (Enumeration e= jar.entries(); e.hasMoreElements();) {
+						ZipEntry member= (ZipEntry) e.nextElement();
+						initRawPackageInfo(rawPackageInfo, member.getName(), member.isDirectory(), compliance);
+					}
+				}  finally {
+					JavaModelManager.getJavaModelManager().closeZipFile(jar);
+				}
+			}
 			// loop through all of referenced packages, creating package fragments if necessary
 			// and cache the entry names in the rawPackageInfo table
 			children = new IJavaElement[rawPackageInfo.size()];
@@ -108,23 +158,36 @@
 			} else {
 				throw new JavaModelException(e);
 			}
-		} finally {
-			JavaModelManager.getJavaModelManager().closeZipFile(jar);
 		}
 
 		info.setChildren(children);
 		((JarPackageFragmentRootInfo) info).rawPackageInfo = rawPackageInfo;
 		return true;
 	}
+	protected IJavaElement[] createChildren(final HashtableOfArrayToObject rawPackageInfo) {
+		IJavaElement[] children;
+		// loop through all of referenced packages, creating package fragments if necessary
+		// and cache the entry names in the rawPackageInfo table
+		children = new IJavaElement[rawPackageInfo.size()];
+		int index = 0;
+		for (int i = 0, length = rawPackageInfo.keyTable.length; i < length; i++) {
+			String[] pkgName = (String[]) rawPackageInfo.keyTable[i];
+			if (pkgName == null) continue;
+			children[index++] = getPackageFragment(pkgName);
+		}
+		return children;
+	}
 	/**
 	 * Returns a new element info for this element.
 	 */
+	@Override
 	protected Object createElementInfo() {
 		return new JarPackageFragmentRootInfo();
 	}
 	/**
 	 * A Jar is always K_BINARY.
 	 */
+	@Override
 	protected int determineKind(IResource underlyingResource) {
 		return IPackageFragmentRoot.K_BINARY;
 	}
@@ -135,6 +198,7 @@
 	 *
 	 * @see Object#equals
 	 */
+	@Override
 	public boolean equals(Object o) {
 		if (this == o)
 			return true;
@@ -144,6 +208,7 @@
 		}
 		return false;
 	}
+	@Override
 	public String getElementName() {
 		return this.jarPath.lastSegment();
 	}
@@ -158,15 +223,18 @@
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public int getKind() {
 		return IPackageFragmentRoot.K_BINARY;
 	}
+	@Override
 	int internalKind() throws JavaModelException {
 		return IPackageFragmentRoot.K_BINARY;
 	}
 	/**
 	 * Returns an array of non-java resources contained in the receiver.
 	 */
+	@Override
 	public Object[] getNonJavaResources() throws JavaModelException {
 		// We want to show non java resources of the default package at the root (see PR #1G58NB8)
 		Object[] defaultPkgResources =  ((JarPackageFragment) getPackageFragment(CharOperation.NO_STRINGS)).storedNonJavaResources();
@@ -180,9 +248,26 @@
 		}
 		return nonJavaResources;
 	}
+	@Override
 	public PackageFragment getPackageFragment(String[] pkgName) {
 		return new JarPackageFragment(this, pkgName);
 	}
+	@Override
+	public PackageFragment getPackageFragment(String[] pkgName, String mod) {
+		return new JarPackageFragment(this, pkgName); // Overridden in JImageModuleFragmentBridge
+	}
+
+	@Override
+	public IModuleDescription getModuleDescription() {
+		if (this.knownToBeModuleLess)
+			return null;
+		IModuleDescription module = super.getModuleDescription();
+		if (module == null)
+			this.knownToBeModuleLess = true;
+		return module;
+	}
+
+	@Override
 	public IPath internalPath() {
 		if (isExternal()) {
 			return this.jarPath;
@@ -190,6 +275,7 @@
 			return super.internalPath();
 		}
 	}
+	@Override
 	public IResource resource(PackageFragmentRoot root) {
 		if (this.resource == null) {
 			// external jar
@@ -202,6 +288,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IResource getUnderlyingResource() throws JavaModelException {
 		if (isExternal()) {
 			if (!exists()) throw newNotPresentException();
@@ -210,11 +297,21 @@
 			return super.getUnderlyingResource();
 		}
 	}
+	@Override
 	public int hashCode() {
 		return this.jarPath.hashCode();
 	}
-	private void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) {
-		int lastSeparator = isDirectory ? entryName.length()-1 : entryName.lastIndexOf('/');
+	protected void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) {
+		int lastSeparator;
+		if (isDirectory) {
+			if (entryName.charAt(entryName.length() - 1) == '/') {
+				lastSeparator = entryName.length() - 1;
+			} else {
+				lastSeparator = entryName.length();
+			}
+		} else {
+			lastSeparator = entryName.lastIndexOf('/');
+		}
 		String[] pkgName = Util.splitOn('/', entryName, 0, lastSeparator);
 		String[] existing = null;
 		int length = pkgName.length;
@@ -259,25 +356,28 @@
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public boolean isArchive() {
 		return true;
 	}
 	/**
 	 * @see IPackageFragmentRoot
 	 */
+	@Override
 	public boolean isExternal() {
 		return resource() == null;
 	}
 	/**
 	 * Jars and jar entries are all read only
 	 */
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
-
 	/**
 	 * Returns whether the corresponding resource or associated file exists
 	 */
+	@Override
 	protected boolean resourceExists(IResource underlyingResource) {
 		if (underlyingResource == null) {
 			return
@@ -289,6 +389,7 @@
 		}
 	}
 
+	@Override
 	protected void toStringAncestors(StringBuffer buffer) {
 		if (isExternal())
 			// don't show project as it is irrelevant for external jar files.
@@ -307,4 +408,28 @@
 		return null;
 	}
 
+	@Override
+	public Manifest getManifest() {
+		ZipFile jar = null;
+		try {
+			jar = getJar();
+			ZipEntry mfEntry = jar.getEntry(TypeConstants.META_INF_MANIFEST_MF);
+			if (mfEntry != null)
+				return new Manifest(jar.getInputStream(mfEntry));
+		} catch (CoreException | IOException e) {
+			// must do without manifest
+		} finally {
+			JavaModelManager.getJavaModelManager().closeZipFile(jar);
+		}
+		return null;
+	}
+
+//	@Override
+//	public boolean isModule() {
+//	 	try {
+//	 		return ((PackageFragmentRootInfo) getElementInfo()).isModule(resource(), this);
+//	 	} catch (JavaModelException e) {
+//	 		return false;
+//	 	}
+//	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.java
index b24073c..4dbbf93 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceInitializer.java
@@ -18,6 +18,8 @@
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ChunkCache;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
 
 /**
  * JavaCore eclipse preferences initializer.
@@ -30,6 +32,7 @@
 	/**
 	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
 	 */
+	@Override
 	public void initializeDefaultPreferences() {
 		// If modified, also modify the method JavaModelManager#getDefaultOptionsNoInitialization()
 		// and also consider updating org.aspectj.org.eclipse.jdt.internal.compiler.batch.Main#initializeWarnings(String)
@@ -39,6 +42,13 @@
 		// Compiler settings
 		Map defaultOptionsMap = new CompilerOptions().getMap(); // compiler defaults
 
+		String testDefaults = System.getProperty("jdt.default.test.compliance"); //$NON-NLS-1$
+		if (testDefaults != null) {
+			defaultOptionsMap.put(JavaCore.COMPILER_SOURCE, testDefaults);
+			defaultOptionsMap.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, testDefaults);
+			defaultOptionsMap.put(JavaCore.COMPILER_COMPLIANCE, testDefaults);
+		}
+
 		// Override some compiler defaults
 		defaultOptionsMap.put(JavaCore.COMPILER_LOCAL_VARIABLE_ATTR, JavaCore.GENERATE);
 		defaultOptionsMap.put(JavaCore.COMPILER_CODEGEN_UNUSED_LOCAL, JavaCore.PRESERVE);
@@ -96,6 +106,11 @@
 		defaultOptionsMap.put(JavaCore.CODEASSIST_CAMEL_CASE_MATCH, JavaCore.ENABLED);
 		defaultOptionsMap.put(JavaCore.CODEASSIST_SUBSTRING_MATCH, JavaCore.ENABLED);
 		defaultOptionsMap.put(JavaCore.CODEASSIST_SUGGEST_STATIC_IMPORTS, JavaCore.ENABLED);
+		defaultOptionsMap.put(ChunkCache.CHUNK_CACHE_SIZE_MB, Double.toString(ChunkCache.CHUNK_CACHE_SIZE_MB_DEFAULT));
+		defaultOptionsMap.put(ChunkCache.CHUNK_CACHE_SIZE_PERCENT,
+				Double.toString(ChunkCache.CHUNK_CACHE_SIZE_PERCENT_DEFAULT));
+		defaultOptionsMap.put(JavaIndex.ENABLE_NEW_JAVA_INDEX,
+				Boolean.toString(JavaIndex.ENABLE_NEW_JAVA_INDEX_DEFAULT));
 
 		// Time out for parameter names
 		defaultOptionsMap.put(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC, "50"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.java
index 990deb0..8661676 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaCorePreferenceModifyListener.java
@@ -22,9 +22,7 @@
 	static int PREFIX_LENGTH = JavaModelManager.CP_CONTAINER_PREFERENCES_PREFIX.length();
 	JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.preferences.PreferenceModifyListener#preApply(org.eclipse.core.runtime.preferences.IEclipsePreferences)
-	 */
+	@Override
 	public IEclipsePreferences preApply(IEclipsePreferences node) {
 		// the node does not need to be the root of the hierarchy
 		Preferences root = node.node("/"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.java
index 9ba2bca..bf35734 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElement.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -86,6 +86,7 @@
 	public static final char JEM_INITIALIZER = '|';
 	public static final char JEM_COMPILATIONUNIT = '{';
 	public static final char JEM_CLASSFILE = '(';
+	public static final char JEM_MODULAR_CLASSFILE = '\'';
 	public static final char JEM_TYPE = '[';
 	public static final char JEM_PACKAGEDECLARATION = '%';
 	public static final char JEM_IMPORTDECLARATION = '#';
@@ -96,6 +97,7 @@
 	public static final char JEM_LAMBDA_EXPRESSION = ')';
 	public static final char JEM_LAMBDA_METHOD = '&';
 	public static final char JEM_STRING = '"';
+	public static final char JEM_MODULE = '`';
 	
 	/**
 	 * Before ')', '&' and '"' became the newest additions as delimiters, the former two
@@ -120,6 +122,7 @@
 	 */
 	protected JavaElement parent;
 
+	protected static final String[] NO_STRINGS = new String[0];
 	protected static final JavaElement[] NO_ELEMENTS = new JavaElement[0];
 	protected static final Object NO_INFO = new Object();
 	
@@ -164,6 +167,7 @@
 	 *
 	 * @see Object#equals
 	 */
+	@Override
 	public boolean equals(Object o) {
 
 		if (this == o) return true;
@@ -200,6 +204,7 @@
 				case JEM_INITIALIZER:
 				case JEM_COMPILATIONUNIT:
 				case JEM_CLASSFILE:
+				case JEM_MODULAR_CLASSFILE:
 				case JEM_TYPE:
 				case JEM_PACKAGEDECLARATION:
 				case JEM_IMPORTDECLARATION:
@@ -214,6 +219,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public boolean exists() {
 
 		try {
@@ -241,6 +247,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IJavaElement getAncestor(int ancestorType) {
 
 		IJavaElement element = this;
@@ -318,6 +325,7 @@
 	/**
 	 * @see IAdaptable
 	 */
+	@Override
 	public String getElementName() {
 		return ""; //$NON-NLS-1$
 	}
@@ -339,6 +347,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public String getHandleIdentifier() {
 		return getHandleMemento();
 	}
@@ -363,6 +372,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IJavaModel getJavaModel() {
 		IJavaElement current = this;
 		do {
@@ -374,6 +384,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IJavaProject getJavaProject() {
 		IJavaElement current = this;
 		do {
@@ -381,9 +392,8 @@
 		} while ((current = current.getParent()) != null);
 		return null;
 	}
-	/*
-	 * @see IJavaElement
-	 */
+
+	@Override
 	public IOpenable getOpenable() {
 		return getOpenableParent();
 	}
@@ -399,12 +409,12 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IJavaElement getParent() {
 		return this.parent;
 	}
-	/*
-	 * @see IJavaElement#getPrimaryElement()
-	 */
+
+	@Override
 	public IJavaElement getPrimaryElement() {
 		return getPrimaryElement(true);
 	}
@@ -415,6 +425,7 @@
 	public IJavaElement getPrimaryElement(boolean checkOwner) {
 		return this;
 	}
+	@Override
 	public IResource getResource() {
 		return resource();
 	}
@@ -475,9 +486,8 @@
 	public SourceMapper getSourceMapper() {
 		return ((JavaElement)getParent()).getSourceMapper();
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IJavaElement#getSchedulingRule()
-	 */
+
+	@Override
 	public ISchedulingRule getSchedulingRule() {
 		IResource resource = resource();
 		if (resource == null) {
@@ -486,6 +496,7 @@
 				public NoResourceSchedulingRule(IPath path) {
 					this.path = path;
 				}
+				@Override
 				public boolean contains(ISchedulingRule rule) {
 					if (rule instanceof NoResourceSchedulingRule) {
 						return this.path.isPrefixOf(((NoResourceSchedulingRule)rule).path);
@@ -493,6 +504,7 @@
 						return false;
 					}
 				}
+				@Override
 				public boolean isConflicting(ISchedulingRule rule) {
 					if (rule instanceof NoResourceSchedulingRule) {
 						IPath otherPath = ((NoResourceSchedulingRule)rule).path;
@@ -527,6 +539,7 @@
 	 * and parent's hash code. Elements with other requirements must
 	 * override this method.
 	 */
+	@Override
 	public int hashCode() {
 		if (this.parent == null) return super.hashCode();
 		return Util.combineHashCodes(getElementName().hashCode(), this.parent.hashCode());
@@ -546,6 +559,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public boolean isReadOnly() {
 		return false;
 	}
@@ -575,7 +589,7 @@
 		JavaModelManager manager = JavaModelManager.getJavaModelManager();
 		boolean hadTemporaryCache = manager.hasTemporaryCache();
 		try {
-			HashMap newElements = manager.getTemporaryCache();
+			HashMap<IJavaElement, Object> newElements = manager.getTemporaryCache();
 			generateInfos(info, newElements, monitor);
 			if (info == null) {
 				info = newElements.get(this);
@@ -627,6 +641,7 @@
 	/**
 	 *  Debugging purposes
 	 */
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		toString(0, buffer);
@@ -761,9 +776,7 @@
 		return null;
 	}
 
-	/*
-	 * @see IJavaElement#getAttachedJavadoc(IProgressMonitor)
-	 */
+	@Override
 	public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
 		return null;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.java
index c73d505..e6ea18f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDelta.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,6 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Vladimir Piskarev <pisv@1c.ru> - Building large Java element deltas is really slow - https://bugs.eclipse.org/443928
+ *     Vladimir Piskarev <pisv@1c.ru> - F_CONTENT sometimes lost when merging deltas - https://bugs.eclipse.org/520336
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
@@ -92,9 +93,11 @@
 		public Key(IJavaElement element) {
 			this.element = element;
 		}
+		@Override
 		public int hashCode() {
 			return this.element.hashCode();
 		}
+		@Override
 		public boolean equals(Object obj) {
 			if (!(obj instanceof Key))
 				return false;
@@ -183,16 +186,13 @@
 						}
 
 						// update flags
-						boolean childHadContentFlag = (child.changeFlags & F_CONTENT) != 0;
-						boolean existingChildHadChildrenFlag = (existingChild.changeFlags & F_CHILDREN) != 0;
-						existingChild.changeFlags |= child.changeFlags;
-
-						// remove F_CONTENT flag if existing child had F_CHILDREN flag set
-						// (case of fine grained delta (existing child) and delta coming from
-						// DeltaProcessor (child))
-						if (childHadContentFlag && existingChildHadChildrenFlag) {
-							existingChild.changeFlags &= ~F_CONTENT;
+						int flags = child.changeFlags;
+						// case of fine grained delta (existing child) and delta coming from
+						// DeltaProcessor (child): ensure F_CONTENT is not propagated from child
+						if ((existingChild.changeFlags & F_FINE_GRAINED) != 0 && (flags & F_FINE_GRAINED) == 0) {
+							flags &= ~F_CONTENT;
 						}
+						existingChild.changeFlags |= flags;
 
 						// add the non-java resource deltas if needed
 						// note that the child delta always takes precedence over this existing child delta
@@ -374,12 +374,14 @@
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElementDelta[] getAddedChildren() {
 	return getChildrenOfType(ADDED);
 }
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElementDelta[] getAffectedChildren() {
 	return this.affectedChildren;
 }
@@ -405,15 +407,18 @@
 	parents.trimToSize();
 	return parents;
 }
+@Override
 public CompilationUnit getCompilationUnitAST() {
 	return this.ast;
 }
+@Override
 public IJavaElementDelta[] getAnnotationDeltas() {
 	return this.annotationDeltas;
 }
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElementDelta[] getChangedChildren() {
 	return getChildrenOfType(CHANGED);
 }
@@ -469,30 +474,35 @@
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElement getElement() {
 	return this.changedElement;
 }
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElement getMovedFromElement() {
 	return this.movedFromHandle;
 }
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElement getMovedToElement() {
 	return this.movedToHandle;
 }
 /**
  * @see IJavaElementDelta
  */
+@Override
 public IJavaElementDelta[] getRemovedChildren() {
 	return getChildrenOfType(REMOVED);
 }
 /**
  * Return the collection of resource deltas. Return null if none.
  */
+@Override
 public IResourceDelta[] getResourceDeltas() {
 	if (this.resourceDeltas == null) return null;
 	if (this.resourceDeltas.length != this.resourceDeltasCounter) {
@@ -691,6 +701,7 @@
 	}
 	return buffer.toString();
 }
+@Override
 protected boolean toDebugString(StringBuffer buffer, int flags) {
 	boolean prev = super.toDebugString(buffer, flags);
 
@@ -820,6 +831,7 @@
  * Returns a string representation of this delta's
  * structure suitable for debug purposes.
  */
+@Override
 public String toString() {
 	return toDebugString(0);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.java
index 7b3f2a6..2cd0c83 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementDeltaBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -312,33 +312,38 @@
 					|| !equals(oldSourceTypeInfo.getTypeParameterBounds(), newSourceTypeInfo.getTypeParameterBounds())) {
 				this.delta.changed(newElement, IJavaElementDelta.F_CONTENT);
 			}
-			HashMap oldTypeCategories = oldSourceTypeInfo.categories;
-			HashMap newTypeCategories = newSourceTypeInfo.categories;
-			if (oldTypeCategories != null) {
-				// take the union of old and new categories elements (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=125675)
-				Set elements;
-				if (newTypeCategories != null) {
-					elements = new HashSet(oldTypeCategories.keySet());
-					elements.addAll(newTypeCategories.keySet());
-				} else
-					elements = oldTypeCategories.keySet();
-				Iterator iterator = elements.iterator();
-				while (iterator.hasNext()) {
-					IJavaElement element = (IJavaElement) iterator.next();
-					String[] oldCategories = (String[]) oldTypeCategories.get(element);
-					String[] newCategories = newTypeCategories == null ? null : (String[]) newTypeCategories.get(element);
-					if (!Util.equalArraysOrNull(oldCategories, newCategories)) {
-						this.delta.changed(element, IJavaElementDelta.F_CATEGORIES);
-					}
-				}
-			} else if (newTypeCategories != null) {
-				Iterator elements = newTypeCategories.keySet().iterator();
-				while (elements.hasNext()) {
-					IJavaElement element = (IJavaElement) elements.next();
-					this.delta.changed(element, IJavaElementDelta.F_CATEGORIES); // all categories for this element were removed
-				}
+			findCategoryChange(oldSourceTypeInfo.categories, newSourceTypeInfo.categories);
+		} else if (oldInfo instanceof ModuleDescriptionInfo && newInfo instanceof ModuleDescriptionInfo) {
+			ModuleDescriptionInfo oldSourceModuleInfo = (ModuleDescriptionInfo)oldInfo;
+			ModuleDescriptionInfo newSourceModuleInfo = (ModuleDescriptionInfo)newInfo;
+			findCategoryChange(oldSourceModuleInfo.getCategories(), newSourceModuleInfo.getCategories());
+		}
+	}
+}
+private void findCategoryChange(Map<IJavaElement, String[]> oldCategoriesMap, Map<IJavaElement, String[]> newCategoriesMap) {
+	if (oldCategoriesMap != null) {
+		// take the union of old and new categories elements (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=125675)
+		Set elements;
+		if (newCategoriesMap != null) {
+			elements = new HashSet(oldCategoriesMap.keySet());
+			elements.addAll(newCategoriesMap.keySet());
+		} else
+			elements = oldCategoriesMap.keySet();
+		Iterator iterator = elements.iterator();
+		while (iterator.hasNext()) {
+			IJavaElement element = (IJavaElement) iterator.next();
+			String[] oldCategories = oldCategoriesMap.get(element);
+			String[] newCategories = newCategoriesMap == null ? null : (String[]) newCategoriesMap.get(element);
+			if (!Util.equalArraysOrNull(oldCategories, newCategories)) {
+				this.delta.changed(element, IJavaElementDelta.F_CATEGORIES);
 			}
 		}
+	} else if (newCategoriesMap != null) {
+		Iterator elements = newCategoriesMap.keySet().iterator();
+		while (elements.hasNext()) {
+			IJavaElement element = (IJavaElement) elements.next();
+			this.delta.changed(element, IJavaElementDelta.F_CATEGORIES); // all categories for this element were removed
+		}
 	}
 }
 /**
@@ -480,6 +485,7 @@
 private void removeElementInfo(IJavaElement element) {
 	this.infos.remove(element);
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append("Built delta:\n"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.java
index 731130c..d0db19a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementInfo.java
@@ -23,6 +23,7 @@
 	 */
 	static Object[] NO_NON_JAVA_RESOURCES = new Object[] {};
 
+	@Override
 	public Object clone() {
 		try {
 			return super.clone();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.java
index c676778..94d8ca6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaElementRequestor.java
@@ -15,6 +15,7 @@
 import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IInitializer;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IType;
 
@@ -67,6 +68,12 @@
 	protected ArrayList types= null;
 
 	/**
+	 * A collection of the resulting modules, or <code>null</code>
+	 * if no module results have been received
+	 */
+	protected ArrayList<IModuleDescription> modules = null;
+
+	/**
 	 * Empty arrays used for efficiency
 	 */
 	protected static final IField[] EMPTY_FIELD_ARRAY= new IField[0];
@@ -74,9 +81,11 @@
 	protected static final IType[] EMPTY_TYPE_ARRAY= new IType[0];
 	protected static final IPackageFragment[] EMPTY_PACKAGE_FRAGMENT_ARRAY= new IPackageFragment[0];
 	protected static final IMethod[] EMPTY_METHOD_ARRAY= new IMethod[0];
+	protected static final IModuleDescription[] EMPTY_MODULE_ARRAY= new IModuleDescription[0];
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptField(IField field) {
 	if (this.fields == null) {
 		this.fields= new ArrayList();
@@ -86,6 +95,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptInitializer(IInitializer initializer) {
 	if (this.initializers == null) {
 		this.initializers= new ArrayList();
@@ -95,6 +105,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptMemberType(IType type) {
 	if (this.memberTypes == null) {
 		this.memberTypes= new ArrayList();
@@ -104,6 +115,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptMethod(IMethod method) {
 	if (this.methods == null) {
 		this.methods = new ArrayList();
@@ -113,6 +125,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptPackageFragment(IPackageFragment packageFragment) {
 	if (this.packageFragments== null) {
 		this.packageFragments= new ArrayList();
@@ -122,6 +135,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptType(IType type) {
 	if (this.types == null) {
 		this.types= new ArrayList();
@@ -131,6 +145,17 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
+public void acceptModule(IModuleDescription module) {
+	if (this.modules == null) {
+		this.modules= new ArrayList();
+	}
+	this.modules.add(module);	
+}
+
+/**
+ * @see IJavaElementRequestor
+ */
 public IField[] getFields() {
 	if (this.fields == null) {
 		return EMPTY_FIELD_ARRAY;
@@ -203,6 +228,19 @@
 /**
  * @see IJavaElementRequestor
  */
+public IModuleDescription[] getModules() {
+	if (this.modules == null) {
+		return EMPTY_MODULE_ARRAY;
+	}
+	int size = this.modules.size();
+	IModuleDescription[] results = new IModuleDescription[size];
+	this.modules.toArray(results);
+	return results;
+}
+/**
+ * @see IJavaElementRequestor
+ */
+@Override
 public boolean isCanceled() {
 	return this.canceled;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.java
index b9a4a56..7fc757e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModel.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.util.MementoTokenizer;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 
@@ -52,6 +53,7 @@
 protected JavaModel() throws Error {
 	super(null);
 }
+@Override
 protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource)	/*throws JavaModelException*/ {
 
 	// determine my children
@@ -76,6 +78,7 @@
 /*
  * @see IJavaModel
  */
+@Override
 public boolean contains(IResource resource) {
 	switch (resource.getType()) {
 		case IResource.ROOT:
@@ -100,6 +103,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public void copy(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (elements != null && elements.length > 0 && elements[0] != null && elements[0].getElementType() < IJavaElement.TYPE) {
 		runOperation(new CopyResourceElementsOperation(elements, containers, force), elements, siblings, renamings, monitor);
@@ -110,6 +114,7 @@
 /**
  * Returns a new element info for this element.
  */
+@Override
 protected Object createElementInfo() {
 	return new JavaModelInfo();
 }
@@ -117,6 +122,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public void delete(IJavaElement[] elements, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (elements != null && elements.length > 0 && elements[0] != null && elements[0].getElementType() < IJavaElement.TYPE) {
 		new DeleteResourceElementsOperation(elements, force).runOperation(monitor);
@@ -124,6 +130,7 @@
 		new DeleteElementsOperation(elements, force).runOperation(monitor);
 	}
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof JavaModel)) return false;
 	return super.equals(o);
@@ -131,6 +138,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return JAVA_MODEL;
 }
@@ -138,6 +146,7 @@
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
 	switch (token.charAt(0)) {
 		case JEM_JAVAPROJECT:
@@ -151,6 +160,7 @@
 /**
  * @see JavaElement#getHandleMemento(StringBuffer)
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	buff.append(getElementName());
 }
@@ -158,6 +168,7 @@
  * Returns the <code>char</code> that marks the start of this handles
  * contribution to a memento.
  */
+@Override
 protected char getHandleMementoDelimiter(){
 	Assert.isTrue(false, "Should not be called"); //$NON-NLS-1$
 	return 0;
@@ -165,6 +176,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public IJavaProject getJavaProject(String projectName) {
 	return new JavaProject(ResourcesPlugin.getWorkspace().getRoot().getProject(projectName), this);
 }
@@ -191,6 +203,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public IJavaProject[] getJavaProjects() throws JavaModelException {
 	ArrayList list = getChildrenOfType(JAVA_PROJECT);
 	IJavaProject[] array= new IJavaProject[list.size()];
@@ -201,6 +214,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public Object[] getNonJavaResources() throws JavaModelException {
 		return ((JavaModelInfo) getElementInfo()).getNonJavaResources();
 }
@@ -208,24 +222,28 @@
 /*
  * @see IJavaElement
  */
+@Override
 public IPath getPath() {
 	return Path.ROOT;
 }
 /*
  * @see IJavaElement
  */
+@Override
 public IResource resource(PackageFragmentRoot root) {
 	return ResourcesPlugin.getWorkspace().getRoot();
 }
 /**
  * @see IOpenable
  */
+@Override
 public IResource getUnderlyingResource() {
 	return null;
 }
 /**
  * Returns the workbench associated with this object.
  */
+@Override
 public IWorkspace getWorkspace() {
 	return ResourcesPlugin.getWorkspace();
 }
@@ -233,6 +251,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public void move(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (elements != null && elements.length > 0 && elements[0] != null && elements[0].getElementType() < IJavaElement.TYPE) {
 		runOperation(new MoveResourceElementsOperation(elements, containers, force), elements, siblings, renamings, monitor);
@@ -244,6 +263,7 @@
 /**
  * @see IJavaModel#refreshExternalArchives(IJavaElement[], IProgressMonitor)
  */
+@Override
 public void refreshExternalArchives(IJavaElement[] elementsScope, IProgressMonitor monitor) throws JavaModelException {
 	if (elementsScope == null){
 		elementsScope = new IJavaElement[] { this };
@@ -254,6 +274,7 @@
 /**
  * @see IJavaModel
  */
+@Override
 public void rename(IJavaElement[] elements, IJavaElement[] destinations, String[] renamings, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	MultiOperation op;
 	if (elements != null && elements.length > 0 && elements[0] != null && elements[0].getElementType() < IJavaElement.TYPE) {
@@ -279,6 +300,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	buffer.append("Java Model"); //$NON-NLS-1$
@@ -361,6 +383,17 @@
 	return false;
 }
 
+public static boolean isJimage(File file) {
+	return JavaModelManager.isJrt(file.getPath());
+}
+public static boolean isJmod(File file) {
+	IPath path = Path.fromOSString(file.getPath());
+	if (path.getFileExtension().equalsIgnoreCase(SuffixConstants.EXTENSION_jmod)) {
+		return true;
+	}
+	return false;
+}
+
 /**
  * Returns whether the provided path is an external file, checking and updating the
  * JavaModelManager's external file cache.
@@ -387,6 +420,7 @@
 	return isFile(target) ? (File) target : null;
 }
 
+@Override
 protected IStatus validateExistence(IResource underlyingResource) {
 	// Java model always exists
 	return JavaModelStatus.VERIFIED_OK;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.java
index d60e3f9..627a553 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelCache.java
@@ -15,14 +15,18 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.aspectj.org.eclipse.jdt.core.IAccessRule;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
 /**
  * The cache of java elements to their respective info.
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class JavaModelCache {
 	public static boolean VERBOSE = false;
 	public static boolean DEBUG_CACHE_INSERTIONS = false;
@@ -32,9 +36,10 @@
 	public static final int DEFAULT_PKG_SIZE = 500; // average 1782 bytes per pkg -> maximum size : 178200*BASE_VALUE bytes
 	public static final int DEFAULT_OPENABLE_SIZE = 250; // average 6629 bytes per openable (includes children) -> maximum size : 662900*BASE_VALUE bytes
 	public static final int DEFAULT_CHILDREN_SIZE = 250*20; // average 20 children per openable
+	public static final int DEFAULT_ACCESSRULE_SIZE = 1024;
 	public static final String RATIO_PROPERTY = "org.aspectj.org.eclipse.jdt.core.javamodelcache.ratio"; //$NON-NLS-1$
 	public static final String JAR_TYPE_RATIO_PROPERTY = "org.aspectj.org.eclipse.jdt.core.javamodelcache.jartyperatio"; //$NON-NLS-1$
-	
+
 	public static final Object NON_EXISTING_JAR_TYPE_INFO = new Object();
 
 	/*
@@ -45,54 +50,62 @@
 	/**
 	 * Active Java Model Info
 	 */
-	protected Object modelInfo;
+	protected JavaElementInfo modelInfo;
 
 	/**
 	 * Cache of open projects.
 	 */
-	protected HashMap projectCache;
+	protected HashMap<IJavaProject, JavaElementInfo> projectCache;
 
 	/**
 	 * Cache of open package fragment roots.
 	 */
-	protected ElementCache rootCache;
+	protected ElementCache<IPackageFragmentRoot> rootCache;
 
 	/**
 	 * Cache of open package fragments
 	 */
-	protected ElementCache pkgCache;
+	protected ElementCache<IPackageFragment> pkgCache;
 
 	/**
 	 * Cache of open compilation unit and class files
 	 */
-	protected ElementCache openableCache;
+	protected ElementCache<ITypeRoot> openableCache;
 
 	/**
 	 * Cache of open children of openable Java Model Java elements
 	 */
-	protected Map childrenCache;
-
-	/*
-	 * Cache of open binary type (inside a jar) that have a non-open parent
+	protected Map<IJavaElement, Object> childrenCache;
+	
+	/**
+	 * Cache of access rules
 	 */
-	protected LRUCache jarTypeCache;
+	protected LRUCache<IAccessRule, IAccessRule> accessRuleCache;
+
+
+	/**
+	 * Cache of open binary type (inside a jar) that have a non-open parent
+	 * Values are either instance of IBinaryType or Object (see {@link #NON_EXISTING_JAR_TYPE_INFO})
+	 */
+	protected LRUCache<IJavaElement, Object> jarTypeCache;
 
 public JavaModelCache() {
 	// set the size of the caches as a function of the maximum amount of memory available
 	double ratio = getMemoryRatio();
 	// adjust the size of the openable cache using the RATIO_PROPERTY property
 	double openableRatio = getOpenableRatio();
-	this.projectCache = new HashMap(DEFAULT_PROJECT_SIZE); // NB: Don't use a LRUCache for projects as they are constantly reopened (e.g. during delta processing)
+	this.projectCache = new HashMap<>(DEFAULT_PROJECT_SIZE); // NB: Don't use a LRUCache for projects as they are constantly reopened (e.g. during delta processing)
 	if (VERBOSE) {
-		this.rootCache = new VerboseElementCache((int) (DEFAULT_ROOT_SIZE * ratio), "Root cache"); //$NON-NLS-1$
-		this.pkgCache = new VerboseElementCache((int) (DEFAULT_PKG_SIZE * ratio), "Package cache"); //$NON-NLS-1$
-		this.openableCache = new VerboseElementCache((int) (DEFAULT_OPENABLE_SIZE * ratio * openableRatio), "Openable cache"); //$NON-NLS-1$
+		this.rootCache = new VerboseElementCache<>((int) (DEFAULT_ROOT_SIZE * ratio), "Root cache"); //$NON-NLS-1$
+		this.pkgCache = new VerboseElementCache<>((int) (DEFAULT_PKG_SIZE * ratio), "Package cache"); //$NON-NLS-1$
+		this.openableCache = new VerboseElementCache<>((int) (DEFAULT_OPENABLE_SIZE * ratio * openableRatio), "Openable cache"); //$NON-NLS-1$
 	} else {
-		this.rootCache = new ElementCache((int) (DEFAULT_ROOT_SIZE * ratio));
-		this.pkgCache = new ElementCache((int) (DEFAULT_PKG_SIZE * ratio));
-		this.openableCache = new ElementCache((int) (DEFAULT_OPENABLE_SIZE * ratio * openableRatio));
+		this.rootCache = new ElementCache<>((int) (DEFAULT_ROOT_SIZE * ratio));
+		this.pkgCache = new ElementCache<>((int) (DEFAULT_PKG_SIZE * ratio));
+		this.openableCache = new ElementCache<>((int) (DEFAULT_OPENABLE_SIZE * ratio * openableRatio));
 	}
-	this.childrenCache = new HashMap((int) (DEFAULT_CHILDREN_SIZE * ratio * openableRatio));
+	this.childrenCache = new HashMap<>((int) (DEFAULT_CHILDREN_SIZE * ratio * openableRatio));
+	this.accessRuleCache = new LRUCache<>(DEFAULT_ACCESSRULE_SIZE);
 	resetJarTypeCache();
 }
 
@@ -127,12 +140,12 @@
 		case IJavaElement.JAVA_PROJECT:
 			return this.projectCache.get(element);
 		case IJavaElement.PACKAGE_FRAGMENT_ROOT:
-			return this.rootCache.get(element);
+			return this.rootCache.get((IPackageFragmentRoot) element);
 		case IJavaElement.PACKAGE_FRAGMENT:
-			return this.pkgCache.get(element);
+			return this.pkgCache.get((IPackageFragment) element);
 		case IJavaElement.COMPILATION_UNIT:
 		case IJavaElement.CLASS_FILE:
-			return this.openableCache.get(element);
+			return this.openableCache.get((ITypeRoot) element);
 		case IJavaElement.TYPE:
 			Object result = this.jarTypeCache.get(element);
 			if (result != null)
@@ -155,12 +168,12 @@
 		case IJavaElement.JAVA_PROJECT:
 			return element; // projectCache is a Hashtable and Hashtables don't support getKey(...)
 		case IJavaElement.PACKAGE_FRAGMENT_ROOT:
-			return (IJavaElement) this.rootCache.getKey(element);
+			return this.rootCache.getKey((IPackageFragmentRoot) element);
 		case IJavaElement.PACKAGE_FRAGMENT:
-			return (IJavaElement) this.pkgCache.getKey(element);
+			return this.pkgCache.getKey((IPackageFragment) element);
 		case IJavaElement.COMPILATION_UNIT:
 		case IJavaElement.CLASS_FILE:
-			return (IJavaElement) this.openableCache.getKey(element);
+			return this.openableCache.getKey((ITypeRoot) element);
 		case IJavaElement.TYPE:
 			return element; // jarTypeCache or childrenCache are Hashtables and Hashtables don't support getKey(...)
 		default:
@@ -189,12 +202,12 @@
 		case IJavaElement.JAVA_PROJECT:
 			return this.projectCache.get(element);
 		case IJavaElement.PACKAGE_FRAGMENT_ROOT:
-			return this.rootCache.peek(element);
+			return this.rootCache.peek((IPackageFragmentRoot) element);
 		case IJavaElement.PACKAGE_FRAGMENT:
-			return this.pkgCache.peek(element);
+			return this.pkgCache.peek((IPackageFragment) element);
 		case IJavaElement.COMPILATION_UNIT:
 		case IJavaElement.CLASS_FILE:
-			return this.openableCache.peek(element);
+			return this.openableCache.peek((ITypeRoot) element);
 		case IJavaElement.TYPE:
 			Object result = this.jarTypeCache.peek(element);
 			if (result != null)
@@ -215,23 +228,23 @@
 	}
 	switch (element.getElementType()) {
 		case IJavaElement.JAVA_MODEL:
-			this.modelInfo = info;
+			this.modelInfo = (JavaElementInfo) info;
 			break;
 		case IJavaElement.JAVA_PROJECT:
-			this.projectCache.put(element, info);
-			this.rootCache.ensureSpaceLimit(info, element);
+			this.projectCache.put((IJavaProject) element, (JavaElementInfo) info);
+			this.rootCache.ensureSpaceLimit((JavaElementInfo) info, element);
 			break;
 		case IJavaElement.PACKAGE_FRAGMENT_ROOT:
-			this.rootCache.put(element, info);
-			this.pkgCache.ensureSpaceLimit(info, element);
+			this.rootCache.put((IPackageFragmentRoot) element, (JavaElementInfo) info);
+			this.pkgCache.ensureSpaceLimit((JavaElementInfo) info, element);
 			break;
 		case IJavaElement.PACKAGE_FRAGMENT:
-			this.pkgCache.put(element, info);
-			this.openableCache.ensureSpaceLimit(info, element);
+			this.pkgCache.put((IPackageFragment) element, (JavaElementInfo) info);
+			this.openableCache.ensureSpaceLimit((JavaElementInfo) info, element);
 			break;
 		case IJavaElement.COMPILATION_UNIT:
 		case IJavaElement.CLASS_FILE:
-			this.openableCache.put(element, info);
+			this.openableCache.put((ITypeRoot) element, (JavaElementInfo) info);
 			break;
 		default:
 			this.childrenCache.put(element, info);
@@ -275,31 +288,32 @@
 			this.modelInfo = null;
 			break;
 		case IJavaElement.JAVA_PROJECT:
-			this.projectCache.remove(element);
+			this.projectCache.remove((IJavaProject)element);
 			this.rootCache.resetSpaceLimit((int) (DEFAULT_ROOT_SIZE * getMemoryRatio()), element);
 			break;
 		case IJavaElement.PACKAGE_FRAGMENT_ROOT:
-			this.rootCache.remove(element);
+			this.rootCache.remove((IPackageFragmentRoot) element);
 			this.pkgCache.resetSpaceLimit((int) (DEFAULT_PKG_SIZE * getMemoryRatio()), element);
 			break;
 		case IJavaElement.PACKAGE_FRAGMENT:
-			this.pkgCache.remove(element);
+			this.pkgCache.remove((IPackageFragment) element);
 			this.openableCache.resetSpaceLimit((int) (DEFAULT_OPENABLE_SIZE * getMemoryRatio() * getOpenableRatio()), element);
 			break;
 		case IJavaElement.COMPILATION_UNIT:
 		case IJavaElement.CLASS_FILE:
-			this.openableCache.remove(element);
+			this.openableCache.remove((ITypeRoot) element);
 			break;
 		default:
 			this.childrenCache.remove(element);
 	}
 }
 protected void resetJarTypeCache() {
-	this.jarTypeCache = new LRUCache((int) (DEFAULT_OPENABLE_SIZE * getMemoryRatio() * getJarTypeRatio()));
+	this.jarTypeCache = new LRUCache<>((int) (DEFAULT_OPENABLE_SIZE * getMemoryRatio() * getJarTypeRatio()));
 }
 protected void removeFromJarTypeCache(BinaryType type) {
 	this.jarTypeCache.flush(type);
 }
+@Override
 public String toString() {
 	return toStringFillingRation(""); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.java
index e31f12e..ebfe12d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,11 +21,6 @@
  */
 public class JavaModelInfo extends OpenableElementInfo {
 
-	/**
-	 * A array with all the non-java projects contained by this model
-	 */
-	Object[] nonJavaResources;
-
 /**
  * Compute the non-java resources contained in this java project.
  */
@@ -54,10 +49,11 @@
  * Returns an array of non-java resources contained in the receiver.
  */
 Object[] getNonJavaResources() {
-
-	if (this.nonJavaResources == null) {
-		this.nonJavaResources = computeNonJavaResources();
+	Object[] resources = this.nonJavaResources;
+	if (resources == null) {
+		resources = computeNonJavaResources();
+		this.nonJavaResources = resources;
 	}
-	return this.nonJavaResources;
+	return resources;
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.java
index 7671569..c14648f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,6 +18,7 @@
  *     Terry Parker <tparker@google.com> - [performance] Low hit rates in JavaModel caches - https://bugs.eclipse.org/421165
  *     Terry Parker <tparker@google.com> - Enable the Java model caches to recover from IO errors - https://bugs.eclipse.org/455042
  *     Gábor Kövesdán - Contribution for Bug 350000 - [content assist] Include non-prefix matches in auto-complete suggestions
+ *     Karsten Thoms - Bug 532505 - Reduce memory footprint of ClasspathAccessRule
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
@@ -40,6 +41,7 @@
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -84,6 +86,7 @@
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.content.IContentTypeManager;
 import org.eclipse.core.runtime.content.IContentTypeManager.ContentTypeChangeEvent;
 import org.eclipse.core.runtime.content.IContentTypeManager.IContentTypeChangeListener;
 import org.eclipse.core.runtime.jobs.Job;
@@ -109,6 +112,7 @@
 import org.aspectj.org.eclipse.jdt.core.IParent;
 import org.aspectj.org.eclipse.jdt.core.IProblemRequestor;
 import org.aspectj.org.eclipse.jdt.core.IType;
+import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
 import org.aspectj.org.eclipse.jdt.core.JavaConventions;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
@@ -124,14 +128,22 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.ObjectVector;
+import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.JavaBuilder;
 import org.aspectj.org.eclipse.jdt.internal.core.dom.SourceRangeVerifier;
 import org.aspectj.org.eclipse.jdt.internal.core.dom.rewrite.RewriteEventStore;
 import org.aspectj.org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.IReader;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.Indexer;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
 import org.aspectj.org.eclipse.jdt.internal.core.search.AbstractSearchScope;
 import org.aspectj.org.eclipse.jdt.internal.core.search.BasicSearchEngine;
 import org.aspectj.org.eclipse.jdt.internal.core.search.IRestrictedAccessTypeRequestor;
@@ -141,7 +153,6 @@
 import org.aspectj.org.eclipse.jdt.internal.core.search.processing.JobManager;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
 import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache;
-import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache.Stats;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.util.WeakHashSet;
@@ -166,7 +177,6 @@
  * The single instance of <code>JavaModelManager</code> is available from
  * the static method <code>JavaModelManager.getJavaModelManager()</code>.
  */
-@SuppressWarnings({ "rawtypes", "unchecked" })
 public class JavaModelManager implements ISaveParticipant, IContentTypeChangeListener {
 	private static ServiceRegistration<DebugOptionsListener> DEBUG_REGISTRATION;
 	private static final String NON_CHAINING_JARS_CACHE = "nonChainingJarsCache"; //$NON-NLS-1$
@@ -185,36 +195,45 @@
 	 * Define a zip cache object.
 	 */
 	static class ZipCache {
-		private Map map;
+		private Map<Object, ZipFile> map;
 		Object owner;
 
 		ZipCache(Object owner) {
-			this.map = new HashMap();
+			this.map = new HashMap<>();
 			this.owner = owner;
 		}
 
 		public void flush() {
 			Thread currentThread = Thread.currentThread();
-			Iterator iterator = this.map.values().iterator();
+			Iterator<ZipFile> iterator = this.map.values().iterator();
 			while (iterator.hasNext()) {
+				ZipFile zipFile = iterator.next();
 				try {
-					ZipFile zipFile = (ZipFile)iterator.next();
 					if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
-						System.out.println("(" + currentThread + ") [JavaModelManager.flushZipFiles()] Closing ZipFile on " +zipFile.getName()); //$NON-NLS-1$//$NON-NLS-2$
+						System.out.println("(" + currentThread + ") [ZipCache[" + this.owner //$NON-NLS-1$//$NON-NLS-2$
+								+ "].flush()] Closing ZipFile on " + zipFile.getName()); //$NON-NLS-1$
 					}
 					zipFile.close();
 				} catch (IOException e) {
 					// problem occured closing zip file: cannot do much more
+					JavaCore.getPlugin().getLog().log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, "Error closing " + zipFile.getName(), e)); //$NON-NLS-1$
 				}
 			}
 		}
 
 		public ZipFile getCache(IPath path) {
-			return (ZipFile) this.map.get(path);
+			return this.map.get(path);
 		}
 
 		public void setCache(IPath path, ZipFile zipFile) {
-			this.map.put(path, zipFile);
+			ZipFile old = this.map.put(path, zipFile);
+			if(old != null) {
+				if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
+					Thread currentThread = Thread.currentThread();
+					System.out.println("(" + currentThread + ") [ZipCache[" + this.owner //$NON-NLS-1$//$NON-NLS-2$
+							+ "].setCache()] leaked ZipFile on " + old.getName() + " for path: " + path); //$NON-NLS-1$ //$NON-NLS-2$
+				}
+			}
 		}
 	}
 	/**
@@ -225,21 +244,21 @@
 	/**
 	 * Classpath variables pool
 	 */
-	public HashMap variables = new HashMap(5);
-	public HashSet variablesWithInitializer = new HashSet(5);
-	public HashMap deprecatedVariables = new HashMap(5);
-	public HashSet readOnlyVariables = new HashSet(5);
-	public HashMap previousSessionVariables = new HashMap(5);
-	private ThreadLocal variableInitializationInProgress = new ThreadLocal();
+	public HashMap<String, IPath> variables = new HashMap<>(5);
+	public HashSet<String> variablesWithInitializer = new HashSet<>(5);
+	public HashMap<String, String> deprecatedVariables = new HashMap<>(5);
+	public HashSet<String> readOnlyVariables = new HashSet<>(5);
+	public HashMap<String, IPath> previousSessionVariables = new HashMap<>(5);
+	private ThreadLocal<Set<String>> variableInitializationInProgress = new ThreadLocal<>();
 
 	/**
 	 * Classpath containers pool
 	 */
-	public HashMap containers = new HashMap(5);
-	public HashMap previousSessionContainers = new HashMap(5);
-	private ThreadLocal containerInitializationInProgress = new ThreadLocal();
-	ThreadLocal containersBeingInitialized = new ThreadLocal();
-	
+	public HashMap<IJavaProject, Map<IPath, IClasspathContainer>> containers = new HashMap<>(5);
+	public HashMap<IJavaProject, Map<IPath, IClasspathContainer>> previousSessionContainers = new HashMap<>(5);
+	private ThreadLocal<Map<IJavaProject, Set<IPath>>> containerInitializationInProgress = new ThreadLocal<>();
+	ThreadLocal<Map<IJavaProject, Map<IPath, IClasspathContainer>>> containersBeingInitialized = new ThreadLocal<>();
+
 	public static final int NO_BATCH_INITIALIZATION = 0;
 	public static final int NEED_BATCH_INITIALIZATION = 1;
 	public static final int BATCH_INITIALIZATION_IN_PROGRESS = 2;
@@ -247,12 +266,12 @@
 	public int batchContainerInitializations = NO_BATCH_INITIALIZATION;
 
 	public BatchInitializationMonitor batchContainerInitializationsProgress = new BatchInitializationMonitor();
-	public Hashtable containerInitializersCache = new Hashtable(5);
+	public Hashtable<String, ClasspathContainerInitializer> containerInitializersCache = new Hashtable<>(5);
 
 	/*
 	 * A HashSet that contains the IJavaProject whose classpath is being resolved.
 	 */
-	private ThreadLocal classpathsBeingResolved = new ThreadLocal();
+	private ThreadLocal<Set<IJavaProject>> classpathsBeingResolved = new ThreadLocal<>();
 
 	/*
 	 * The unique workspace scope
@@ -274,7 +293,7 @@
 	/*
 	 * Map from a package fragment root's path to a source attachment property (source path + ATTACHMENT_PROPERTY_DELIMITER + source root path)
 	 */
-	public Map rootPathToAttachments = new Hashtable();
+	public Map<IPath, String> rootPathToAttachments = new Hashtable<>();
 
 	public final static String CP_VARIABLE_PREFERENCES_PREFIX = JavaCore.PLUGIN_ID+".classpathVariable."; //$NON-NLS-1$
 	public final static String CP_CONTAINER_PREFERENCES_PREFIX = JavaCore.PLUGIN_ID+".classpathContainer."; //$NON-NLS-1$
@@ -314,7 +333,7 @@
 	 * Name of the JVM parameter to specify whether or not referenced JAR should be resolved for container libraries.
 	 */
 	private static final String RESOLVE_REFERENCED_LIBRARIES_FOR_CONTAINERS = "resolveReferencedLibrariesForContainers"; //$NON-NLS-1$
-	
+
 	/**
 	 * Name of the JVM parameter to specify how many compilation units must be handled at once by the builder.
 	 * The default value is represented by <code>AbstractImageBuilder#MAX_AT_ONCE</code>.
@@ -326,10 +345,15 @@
 	 */
 	public final static IPath VARIABLE_INITIALIZATION_IN_PROGRESS = new Path("Variable Initialization In Progress"); //$NON-NLS-1$
 	public final static IClasspathContainer CONTAINER_INITIALIZATION_IN_PROGRESS = new IClasspathContainer() {
+		@Override
 		public IClasspathEntry[] getClasspathEntries() { return null; }
+		@Override
 		public String getDescription() { return "Container Initialization In Progress"; } //$NON-NLS-1$
+		@Override
 		public int getKind() { return 0; }
+		@Override
 		public IPath getPath() { return null; }
+		@Override
 		public String toString() { return getDescription(); }
 	};
 
@@ -362,12 +386,16 @@
 	private static final String SEARCH_DEBUG = JavaCore.PLUGIN_ID + "/debug/search" ; //$NON-NLS-1$
 	private static final String SOURCE_MAPPER_DEBUG_VERBOSE = JavaCore.PLUGIN_ID + "/debug/sourcemapper" ; //$NON-NLS-1$
 	private static final String FORMATTER_DEBUG = JavaCore.PLUGIN_ID + "/debug/formatter" ; //$NON-NLS-1$
+	private static final String INDEX_DEBUG_LARGE_CHUNKS = JavaCore.PLUGIN_ID + "/debug/index/freespacetest" ; //$NON-NLS-1$
+	private static final String INDEX_DEBUG_PAGE_CACHE = JavaCore.PLUGIN_ID + "/debug/index/pagecache" ; //$NON-NLS-1$
 	private static final String INDEX_INDEXER_DEBUG = JavaCore.PLUGIN_ID + "/debug/index/indexer" ; //$NON-NLS-1$
 	private static final String INDEX_INDEXER_INSERTIONS = JavaCore.PLUGIN_ID + "/debug/index/insertions" ; //$NON-NLS-1$
+	private static final String INDEX_INDEXER_SCHEDULING = JavaCore.PLUGIN_ID + "/debug/index/scheduling" ; //$NON-NLS-1$
 	private static final String INDEX_INDEXER_SELFTEST = JavaCore.PLUGIN_ID + "/debug/index/selftest" ; //$NON-NLS-1$
 	private static final String INDEX_LOCKS_DEBUG = JavaCore.PLUGIN_ID + "/debug/index/locks" ; //$NON-NLS-1$
 	private static final String INDEX_INDEXER_SPACE = JavaCore.PLUGIN_ID + "/debug/index/space" ; //$NON-NLS-1$
 	private static final String INDEX_INDEXER_TIMING = JavaCore.PLUGIN_ID + "/debug/index/timing" ; //$NON-NLS-1$
+	private static final String INDEX_INDEXER_LOG_SIZE_MEGS = JavaCore.PLUGIN_ID + "/debug/index/logsizemegs"; //$NON-NLS-1$
 
 	public static final String COMPLETION_PERF = JavaCore.PLUGIN_ID + "/perf/completion" ; //$NON-NLS-1$
 	public static final String SELECTION_PERF = JavaCore.PLUGIN_ID + "/perf/selection" ; //$NON-NLS-1$
@@ -376,8 +404,6 @@
 	public static final String CONTAINER_INITIALIZER_PERF = JavaCore.PLUGIN_ID + "/perf/containerinitializer" ; //$NON-NLS-1$
 	public static final String RECONCILE_PERF = JavaCore.PLUGIN_ID + "/perf/reconcile" ; //$NON-NLS-1$
 
-	private final static String INDEXED_SECONDARY_TYPES = "#@*_indexing secondary cache_*@#"; //$NON-NLS-1$
-
 	public static boolean PERF_VARIABLE_INITIALIZER = false;
 	public static boolean PERF_CONTAINER_INITIALIZER = false;
 	// Non-static, which will give it a chance to retain the default when and if JavaModelManager is restarted.
@@ -389,9 +415,9 @@
 	private final static int UNKNOWN_OPTION = 0;
 	private final static int DEPRECATED_OPTION = 1;
 	private final static int VALID_OPTION = 2;
-	HashSet optionNames = new HashSet(20);
-	Map deprecatedOptions = new HashMap();
-	Hashtable optionsCache;
+	HashSet<String> optionNames = new HashSet<>(20);
+	Map<String, String[]> deprecatedOptions = new HashMap<>();
+	Hashtable<String, String> optionsCache;
 
 	// Preferences
 	public final IEclipsePreferences[] preferencesLookup = new IEclipsePreferences[2];
@@ -402,7 +428,7 @@
 
 	public static class CompilationParticipants {
 
-		private final static int MAX_SOURCE_LEVEL = 8; // 1.1 to 1.8
+		private final static int MAX_SOURCE_LEVEL = 10 ; // 1.1 to 1.8 and 9, 10
 
 		/*
 		 * The registered compilation participants (a table from int (source level) to Object[])
@@ -410,7 +436,7 @@
 		 * it contains CompilationParticipants.
 		 */
 		private Object[][] registeredParticipants = null;
-		private HashSet managedMarkerTypes;
+		private HashSet<String> managedMarkerTypes;
 
 		public CompilationParticipant[] getCompilationParticipants(IJavaProject project) {
 			final Object[][] participantsPerSource = getRegisteredParticipants();
@@ -427,9 +453,11 @@
 					final IConfigurationElement configElement = (IConfigurationElement) participants[i];
 					final int participantIndex = i;
 					SafeRunner.run(new ISafeRunnable() {
+						@Override
 						public void handleException(Throwable exception) {
 							Util.log(exception, "Exception occurred while creating compilation participant"); //$NON-NLS-1$
 						}
+						@Override
 						public void run() throws Exception {
 							Object executableExtension = configElement.createExecutableExtension("class"); //$NON-NLS-1$
 							for (int j = sourceLevelIndex; j < MAX_SOURCE_LEVEL; j++)
@@ -448,7 +476,7 @@
 			return result;
 		}
 
-		public HashSet managedMarkerTypes() {
+		public HashSet<String> managedMarkerTypes() {
 			if (this.managedMarkerTypes == null) {
 				// force extension points to be read
 				getRegisteredParticipants();
@@ -460,13 +488,13 @@
 			if (this.registeredParticipants != null) {
 				return this.registeredParticipants;
 			}
-			this.managedMarkerTypes = new HashSet();
+			this.managedMarkerTypes = new HashSet<>();
 			IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, COMPILATION_PARTICIPANT_EXTPOINT_ID);
 			if (extension == null)
 				return this.registeredParticipants = NO_PARTICIPANTS;
-			final ArrayList modifyingEnv = new ArrayList();
-			final ArrayList creatingProblems = new ArrayList();
-			final ArrayList others = new ArrayList();
+			final ArrayList<IConfigurationElement> modifyingEnv = new ArrayList<>();
+			final ArrayList<IConfigurationElement> creatingProblems = new ArrayList<>();
+			final ArrayList<IConfigurationElement> others = new ArrayList<>();
 			IExtension[] extensions = extension.getExtensions();
 			// for all extensions of this point...
 			for(int i = 0; i < extensions.length; i++) {
@@ -528,6 +556,8 @@
 		 * ...
 		 * 1.6 -> 5
 		 * 1.7 -> 6
+		 * 1.8 -> 7
+		 * 9 -> 8
 		 * null -> 0
 		 */
 		private int indexForSourceLevel(String sourceLevel) {
@@ -548,17 +578,22 @@
 					return 6;
 				case ClassFileConstants.MAJOR_VERSION_1_8:
 					return 7;
+				case ClassFileConstants.MAJOR_VERSION_9:
+					return 8;
+				case ClassFileConstants.MAJOR_VERSION_10:
+					return 9;
 				default:
 					// all other cases including ClassFileConstants.MAJOR_VERSION_1_1
 					return 0;
 			}
 		}
 
-		private int sortParticipants(ArrayList group, IConfigurationElement[] configElements, int index) {
+		private int sortParticipants(ArrayList<IConfigurationElement> group, IConfigurationElement[] configElements, int index) {
 			int size = group.size();
 			if (size == 0) return index;
 			Object[] elements = group.toArray();
 			Util.sort(elements, new Util.Comparer() {
+				@Override
 				public int compare(Object a, Object b) {
 					if (a == b) return 0;
 					String id = ((IConfigurationElement) a).getAttribute("id"); //$NON-NLS-1$
@@ -581,7 +616,7 @@
 	public final CompilationParticipants compilationParticipants = new CompilationParticipants();
 
 	/* whether an AbortCompilationUnit should be thrown when the source of a compilation unit cannot be retrieved */
-	public ThreadLocal<Boolean> abortOnMissingSource = new ThreadLocal();
+	public ThreadLocal<Boolean> abortOnMissingSource = new ThreadLocal<>();
 
 	private ExternalFoldersManager externalFoldersManager = ExternalFoldersManager.getExternalFoldersManager();
 
@@ -627,74 +662,74 @@
 			return CONTAINER_INITIALIZATION_IN_PROGRESS;
 		}
 
-		Map projectContainers = (Map)this.containers.get(project);
+		Map<IPath, IClasspathContainer> projectContainers = this.containers.get(project);
 		if (projectContainers == null){
 			return null;
 		}
-		IClasspathContainer container = (IClasspathContainer)projectContainers.get(containerPath);
+		IClasspathContainer container = projectContainers.get(containerPath);
 		return container;
 	}
 
 	public synchronized IClasspathContainer containerGetDefaultToPreviousSession(IJavaProject project, IPath containerPath) {
-		Map projectContainers = (Map)this.containers.get(project);
+		Map<IPath, IClasspathContainer> projectContainers = this.containers.get(project);
 		if (projectContainers == null)
 			return getPreviousSessionContainer(containerPath, project);
-		IClasspathContainer container = (IClasspathContainer)projectContainers.get(containerPath);
+		IClasspathContainer container = projectContainers.get(containerPath);
 		if (container == null)
 			return getPreviousSessionContainer(containerPath, project);
 		return container;
 	}
 
 	private boolean containerIsInitializationInProgress(IJavaProject project, IPath containerPath) {
-		Map initializations = (Map)this.containerInitializationInProgress.get();
+		Map<IJavaProject, Set<IPath>> initializations = this.containerInitializationInProgress.get();
 		if (initializations == null)
 			return false;
-		HashSet projectInitializations = (HashSet) initializations.get(project);
+		Set<IPath> projectInitializations = initializations.get(project);
 		if (projectInitializations == null)
 			return false;
 		return projectInitializations.contains(containerPath);
 	}
 
 	private void containerAddInitializationInProgress(IJavaProject project, IPath containerPath) {
-		Map initializations = (Map)this.containerInitializationInProgress.get();
+		Map<IJavaProject, Set<IPath>> initializations = this.containerInitializationInProgress.get();
 		if (initializations == null)
-			this.containerInitializationInProgress.set(initializations = new HashMap());
-		HashSet projectInitializations = (HashSet) initializations.get(project);
+			this.containerInitializationInProgress.set(initializations = new HashMap<>());
+		Set<IPath> projectInitializations = initializations.get(project);
 		if (projectInitializations == null)
-			initializations.put(project, projectInitializations = new HashSet());
+			initializations.put(project, projectInitializations = new HashSet<>());
 		projectInitializations.add(containerPath);
 	}
-	
+
 	public void containerBeingInitializedPut(IJavaProject project, IPath containerPath, IClasspathContainer container) {
-		Map perProjectContainers = (Map)this.containersBeingInitialized.get();
+		Map<IJavaProject, Map<IPath, IClasspathContainer>> perProjectContainers = this.containersBeingInitialized.get();
 		if (perProjectContainers == null)
-			this.containersBeingInitialized.set(perProjectContainers = new HashMap());
-		HashMap perPathContainers = (HashMap) perProjectContainers.get(project);
+			this.containersBeingInitialized.set(perProjectContainers = new HashMap<>());
+		Map<IPath, IClasspathContainer> perPathContainers = perProjectContainers.get(project);
 		if (perPathContainers == null)
-			perProjectContainers.put(project, perPathContainers = new HashMap());
+			perProjectContainers.put(project, perPathContainers = new HashMap<>());
 		perPathContainers.put(containerPath, container);
 	}
 
 	public IClasspathContainer containerBeingInitializedGet(IJavaProject project, IPath containerPath) {
-		Map perProjectContainers = (Map)this.containersBeingInitialized.get();
+		Map<IJavaProject, Map<IPath, IClasspathContainer>> perProjectContainers = this.containersBeingInitialized.get();
 		if (perProjectContainers == null)
 			return null;
-		HashMap perPathContainers = (HashMap) perProjectContainers.get(project);
+		Map<IPath, IClasspathContainer> perPathContainers = perProjectContainers.get(project);
 		if (perPathContainers == null)
 			return null;
-		return (IClasspathContainer) perPathContainers.get(containerPath);
+		return perPathContainers.get(containerPath);
 	}
 
 	public IClasspathContainer containerBeingInitializedRemove(IJavaProject project, IPath containerPath) {
-		Map perProjectContainers = (Map)this.containersBeingInitialized.get();
+		Map<IJavaProject, Map<IPath, IClasspathContainer>> perProjectContainers = this.containersBeingInitialized.get();
 		if (perProjectContainers == null)
 			return null;
-		HashMap perPathContainers = (HashMap) perProjectContainers.get(project);
+		Map<IPath, IClasspathContainer> perPathContainers = perProjectContainers.get(project);
 		if (perPathContainers == null)
 			return null;
-		IClasspathContainer container = (IClasspathContainer) perPathContainers.remove(containerPath);
+		IClasspathContainer container = perPathContainers.remove(containerPath);
 		if (perPathContainers.size() == 0)
-			perPathContainers.remove(project);
+			perProjectContainers.remove(project);
 		if (perProjectContainers.size() == 0)
 			this.containersBeingInitialized.set(null);
 		return container;
@@ -711,9 +746,9 @@
 		} else {
 			containerRemoveInitializationInProgress(project, containerPath);
 
-			Map projectContainers = (Map)this.containers.get(project);
+			Map<IPath, IClasspathContainer> projectContainers = this.containers.get(project);
  			if (projectContainers == null){
-				projectContainers = new HashMap(1);
+				projectContainers = new HashMap<>(1);
 				this.containers.put(project, projectContainers);
 			}
 
@@ -723,7 +758,7 @@
   				projectContainers.put(containerPath, container);
 			}
 			// discard obsoleted information about previous session
-			Map previousContainers = (Map)this.previousSessionContainers.get(project);
+			Map<IPath, IClasspathContainer> previousContainers = this.previousSessionContainers.get(project);
 			if (previousContainers != null){
 				previousContainers.remove(containerPath);
 			}
@@ -735,7 +770,7 @@
 	 * The given project is being removed. Remove all containers for this project from the cache.
 	 */
 	public synchronized void containerRemove(IJavaProject project) {
-		Map initializations = (Map) this.containerInitializationInProgress.get();
+		Map<IJavaProject, Set<IPath>> initializations = this.containerInitializationInProgress.get();
 		if (initializations != null) {
 			initializations.remove(project);
 		}
@@ -805,12 +840,14 @@
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				projects,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) { return ((IJavaProject) o).getElementName(); }
 				}) +
 			"}\n	values on previous session: {\n"  +//$NON-NLS-1$
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				respectiveContainers,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) {
 						StringBuffer buffer = new StringBuffer("		"); //$NON-NLS-1$
 						if (o == null) {
@@ -837,6 +874,7 @@
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				respectiveContainers,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) {
 						StringBuffer buffer = new StringBuffer("		"); //$NON-NLS-1$
 						if (o == null) {
@@ -866,6 +904,7 @@
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				classpathEntries,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) {
 						StringBuffer buffer = new StringBuffer("		"); //$NON-NLS-1$
 						if (o == null) {
@@ -890,10 +929,10 @@
 	}
 
 	private void containerRemoveInitializationInProgress(IJavaProject project, IPath containerPath) {
-		Map initializations = (Map)this.containerInitializationInProgress.get();
+		Map<IJavaProject, Set<IPath>> initializations = this.containerInitializationInProgress.get();
 		if (initializations == null)
 			return;
-		HashSet projectInitializations = (HashSet) initializations.get(project);
+		Set<IPath> projectInitializations = initializations.get(project);
 		if (projectInitializations == null)
 			return;
 		projectInitializations.remove(containerPath);
@@ -906,13 +945,13 @@
 	private synchronized void containersReset(String[] containerIDs) {
 		for (int i = 0; i < containerIDs.length; i++) {
 			String containerID = containerIDs[i];
-			Iterator projectIterator = this.containers.values().iterator();
+			Iterator<Map<IPath, IClasspathContainer>> projectIterator = this.containers.values().iterator();
 			while (projectIterator.hasNext()){
-				Map projectContainers = (Map) projectIterator.next();
+				Map<IPath, IClasspathContainer> projectContainers = projectIterator.next();
 				if (projectContainers != null){
-					Iterator containerIterator = projectContainers.keySet().iterator();
+					Iterator<IPath> containerIterator = projectContainers.keySet().iterator();
 					while (containerIterator.hasNext()){
-						IPath containerPath = (IPath)containerIterator.next();
+						IPath containerPath = containerIterator.next();
 						if (containerID.equals(containerPath.segment(0))) { // registered container
 							projectContainers.put(containerPath, null); // reset container value, but leave entry in Map
 						}
@@ -1051,6 +1090,9 @@
 			PackageFragmentRoot root = (PackageFragmentRoot) project.getPackageFragmentRoot(file.getParent());
 			pkg = root.getPackageFragment(CharOperation.NO_STRINGS);
 		}
+		String fileName = file.getName();
+		if (TypeConstants.MODULE_INFO_CLASS_NAME_STRING.equals(fileName))
+			return pkg.getModularClassFile();
 		return pkg.getClassFile(file.getName());
 	}
 
@@ -1135,7 +1177,7 @@
 					if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT) continue;
 					IPath rootPath = entry.getPath();
 					if (rootPath.equals(resourcePath)) {
-						if (isJavaLike) 
+						if (isJavaLike)
 							return null;
 						return project.getPackageFragmentRoot(resource);
 					} else if (rootPath.isPrefixOf(resourcePath)) {
@@ -1188,12 +1230,12 @@
 	/*
 	 * Temporary cache of newly opened elements
 	 */
-	private ThreadLocal temporaryCache = new ThreadLocal();
+	private ThreadLocal<HashMap<IJavaElement, Object>> temporaryCache = new ThreadLocal<>();
 
 	/**
 	 * Set of elements which are out of sync with their buffers.
 	 */
-	protected HashSet<Openable> elementsOutOfSynchWithBuffers = new HashSet(11);
+	protected HashSet<Openable> elementsOutOfSynchWithBuffers = new HashSet<>(11);
 
 	/**
 	 * Holds the state used for delta processing.
@@ -1206,18 +1248,18 @@
 	 * Table from IProject to PerProjectInfo.
 	 * NOTE: this object itself is used as a lock to synchronize creation/removal of per project infos
 	 */
-	protected Map perProjectInfos = new HashMap(5);
+	protected Map<IProject, PerProjectInfo> perProjectInfos = new HashMap<>(5);
 
 	/**
 	 * Table from WorkingCopyOwner to a table of ICompilationUnit (working copy handle) to PerWorkingCopyInfo.
 	 * NOTE: this object itself is used as a lock to synchronize creation/removal of per working copy infos
 	 */
-	protected Map perWorkingCopyInfos = new HashMap(5);
+	protected HashMap<WorkingCopyOwner, Map<CompilationUnit, PerWorkingCopyInfo>> perWorkingCopyInfos = new HashMap<>(5);
 
 	/**
 	 * A weak set of the known search scopes.
 	 */
-	protected WeakHashMap searchScopes = new WeakHashMap();
+	protected WeakHashMap<AbstractSearchScope, ?> searchScopes = new WeakHashMap<>();
 
 	public static class PerProjectInfo {
 		private static final int JAVADOC_CACHE_INITIAL_SIZE = 10;
@@ -1234,21 +1276,30 @@
 		public boolean writtingRawClasspath = false;
 		public IClasspathEntry[] resolvedClasspath;
 		public IJavaModelStatus unresolvedEntryStatus;
-		public Map rootPathToRawEntries; // reverse map from a package fragment root's path to the raw entry
-		public Map rootPathToResolvedEntries; // map from a package fragment root's path to the resolved entry
+		public Map<IPath, IClasspathEntry> rootPathToRawEntries; // reverse map from a package fragment root's path to the raw entry
+		public Map<IPath, IClasspathEntry> rootPathToResolvedEntries; // map from a package fragment root's path to the resolved entry
 		public IPath outputLocation;
+		public Map<IPath, ObjectVector> jrtRoots; // A map between a JRT file system (as a string) and the package fragment roots found in it.
 
 		public IEclipsePreferences preferences;
-		public Hashtable options;
-		public Hashtable secondaryTypes;
-		public LRUCache javadocCache;
+		public Hashtable<String, String> options;
+		public Hashtable<String, Map<String, IType>> secondaryTypes;
+		/**
+		 * The temporary structure used while indexing, previously known as INDEXED_SECONDARY_TYPES entry
+		 */
+		volatile Map<IFile, Map<String, Map<String, IType>>> indexingSecondaryCache;
+
+
+		// NB: PackageFragment#getAttachedJavadoc uses this map differently
+		// and stores String data, not JavadocContents as values
+		public LRUCache<IJavaElement, Object> javadocCache;
 
 		public PerProjectInfo(IProject project) {
 
 			this.triedRead = false;
 			this.savedState = null;
 			this.project = project;
-			this.javadocCache = new LRUCache(JAVADOC_CACHE_INITIAL_SIZE);
+			this.javadocCache = new LRUCache<>(JAVADOC_CACHE_INITIAL_SIZE);
 		}
 
 		public synchronized IClasspathEntry[] getResolvedClasspath() {
@@ -1256,14 +1307,14 @@
 				return null;
 			return this.resolvedClasspath;
 		}
-		
+
 		public void forgetExternalTimestampsAndIndexes() {
 			IClasspathEntry[] classpath = this.resolvedClasspath;
 			if (classpath == null) return;
 			JavaModelManager manager = JavaModelManager.getJavaModelManager();
 			IndexManager indexManager = manager.indexManager;
-			Map externalTimeStamps = manager.deltaState.getExternalLibTimeStamps();
-			HashMap rootInfos = JavaModelManager.getDeltaState().otherRoots;
+			Hashtable<IPath, Long> externalTimeStamps = manager.deltaState.getExternalLibTimeStamps();
+			Map<IPath, List<RootInfo>> rootInfos = JavaModelManager.getDeltaState().otherRoots;
 			for (int i = 0, length = classpath.length; i < length; i++) {
 				IClasspathEntry entry = classpath[i];
 				if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
@@ -1279,7 +1330,7 @@
 		public void rememberExternalLibTimestamps() {
 			IClasspathEntry[] classpath = this.resolvedClasspath;
 			if (classpath == null) return;
-			Map externalTimeStamps = JavaModelManager.getJavaModelManager().deltaState.getExternalLibTimeStamps();
+			Map<IPath, Long> externalTimeStamps = JavaModelManager.getJavaModelManager().deltaState.getExternalLibTimeStamps();
 			for (int i = 0, length = classpath.length; i < length; i++) {
 				IClasspathEntry entry = classpath[i];
 				if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
@@ -1298,17 +1349,17 @@
 		public synchronized ClasspathChange resetResolvedClasspath() {
 			// clear non-chaining jars cache and invalid jars cache
 			JavaModelManager.getJavaModelManager().resetClasspathListCache();
-			
+
 			// null out resolved information
 			return setResolvedClasspath(null, null, null, null, this.rawTimeStamp, true/*add classpath change*/);
 		}
 
-		private ClasspathChange setClasspath(IClasspathEntry[] newRawClasspath, IClasspathEntry[] referencedEntries, IPath newOutputLocation, IJavaModelStatus newRawClasspathStatus, IClasspathEntry[] newResolvedClasspath, Map newRootPathToRawEntries, Map newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, boolean addClasspathChange) {
+		private ClasspathChange setClasspath(IClasspathEntry[] newRawClasspath, IClasspathEntry[] referencedEntries, IPath newOutputLocation, IJavaModelStatus newRawClasspathStatus, IClasspathEntry[] newResolvedClasspath, Map<IPath, IClasspathEntry> newRootPathToRawEntries, Map<IPath, IClasspathEntry> newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, boolean addClasspathChange) {
 			if (DEBUG_CLASSPATH) {
 				System.out.println("Setting resolved classpath for " + this.project.getFullPath()); //$NON-NLS-1$
 				if (newResolvedClasspath == null) {
 					System.out.println("New classpath = null"); //$NON-NLS-1$
-				} else { 
+				} else {
 					for (IClasspathEntry next : newResolvedClasspath) {
 						System.out.println("    " + next); //$NON-NLS-1$
 					}
@@ -1325,7 +1376,7 @@
 			this.rootPathToRawEntries = newRootPathToRawEntries;
 			this.rootPathToResolvedEntries = newRootPathToResolvedEntries;
 			this.unresolvedEntryStatus = newUnresolvedEntryStatus;
-			this.javadocCache = new LRUCache(JAVADOC_CACHE_INITIAL_SIZE);
+			this.javadocCache = new LRUCache<>(JAVADOC_CACHE_INITIAL_SIZE);
 
 			return classpathChange;
 		}
@@ -1346,22 +1397,27 @@
 			return setClasspath(newRawClasspath, referencedEntries, newOutputLocation, newRawClasspathStatus, null/*resolved classpath*/, null/*root to raw map*/, null/*root to resolved map*/, null/*unresolved status*/, true/*add classpath change*/);
 		}
 
-		public ClasspathChange setResolvedClasspath(IClasspathEntry[] newResolvedClasspath, Map newRootPathToRawEntries, Map newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, int timeStamp, boolean addClasspathChange) {
+		public ClasspathChange setResolvedClasspath(IClasspathEntry[] newResolvedClasspath, Map<IPath, IClasspathEntry> newRootPathToRawEntries, Map<IPath, IClasspathEntry> newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, int timeStamp, boolean addClasspathChange) {
 			return setResolvedClasspath(newResolvedClasspath, null, newRootPathToRawEntries, newRootPathToResolvedEntries, newUnresolvedEntryStatus, timeStamp, addClasspathChange);
 		}
-		
-		public synchronized ClasspathChange setResolvedClasspath(IClasspathEntry[] newResolvedClasspath, IClasspathEntry[] referencedEntries, Map newRootPathToRawEntries, Map newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, int timeStamp, boolean addClasspathChange) {
+
+		public synchronized ClasspathChange setResolvedClasspath(IClasspathEntry[] newResolvedClasspath, IClasspathEntry[] referencedEntries, Map<IPath, IClasspathEntry> newRootPathToRawEntries, Map<IPath, IClasspathEntry> newRootPathToResolvedEntries, IJavaModelStatus newUnresolvedEntryStatus, int timeStamp, boolean addClasspathChange) {
 			if (this.rawTimeStamp != timeStamp)
 				return null;
 			return setClasspath(this.rawClasspath, referencedEntries, this.outputLocation, this.rawClasspathStatus, newResolvedClasspath, newRootPathToRawEntries, newRootPathToResolvedEntries, newUnresolvedEntryStatus, addClasspathChange);
 		}
 
+		public synchronized void setJrtPackageRoots(IPath jrtPath, ObjectVector roots) {
+			if (this.jrtRoots == null) this.jrtRoots = new HashMap<>();
+			this.jrtRoots.put(jrtPath, roots);
+		}
+
 		/**
 		 * Reads the classpath and caches the entries. Returns a two-dimensional array, where the number of elements in the row is fixed to 2.
 		 * The first element is an array of raw classpath entries and the second element is an array of referenced entries that may have been stored
-		 * by the client earlier. See {@link IJavaProject#getReferencedClasspathEntries()} for more details. 
-		 * 
-		 */		
+		 * by the client earlier. See {@link IJavaProject#getReferencedClasspathEntries()} for more details.
+		 *
+		 */
 		public synchronized IClasspathEntry[][] readAndCacheClasspath(JavaProject javaProject) {
 			// read file entries and update status
 			IClasspathEntry[][] classpath;
@@ -1414,6 +1470,7 @@
 			return classpath;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append("Info for "); //$NON-NLS-1$
@@ -1454,14 +1511,14 @@
 		}
 
 		public boolean writeAndCacheClasspath(
-				JavaProject javaProject, 
-				final IClasspathEntry[] newRawClasspath, 
+				JavaProject javaProject,
+				final IClasspathEntry[] newRawClasspath,
 				IClasspathEntry[] newReferencedEntries,
 				final IPath newOutputLocation) throws JavaModelException {
 			try {
 				this.writtingRawClasspath = true;
 				if (newReferencedEntries == null) newReferencedEntries = this.referencedEntries;
-				
+
 				// write .classpath
 				if (!javaProject.writeFileEntries(newRawClasspath, newReferencedEntries,  newOutputLocation)) {
 					return false;
@@ -1473,7 +1530,7 @@
 			}
 			return true;
 		}
-		
+
 		public boolean writeAndCacheClasspath(JavaProject javaProject, final IClasspathEntry[] newRawClasspath, final IPath newOutputLocation) throws JavaModelException {
 			return writeAndCacheClasspath(javaProject, newRawClasspath, null, newOutputLocation);
 		}
@@ -1488,16 +1545,19 @@
 			this.workingCopy = workingCopy;
 			this.problemRequestor = problemRequestor;
 		}
+		@Override
 		public void acceptProblem(IProblem problem) {
 			IProblemRequestor requestor = getProblemRequestor();
 			if (requestor == null) return;
 			requestor.acceptProblem(problem);
 		}
+		@Override
 		public void beginReporting() {
 			IProblemRequestor requestor = getProblemRequestor();
 			if (requestor == null) return;
 			requestor.beginReporting();
 		}
+		@Override
 		public void endReporting() {
 			IProblemRequestor requestor = getProblemRequestor();
 			if (requestor == null) return;
@@ -1512,10 +1572,12 @@
 		public ICompilationUnit getWorkingCopy() {
 			return this.workingCopy;
 		}
+		@Override
 		public boolean isActive() {
 			IProblemRequestor requestor = getProblemRequestor();
 			return requestor != null && requestor.isActive();
 		}
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append("Info for "); //$NON-NLS-1$
@@ -1540,19 +1602,21 @@
 	public static boolean CP_RESOLVE_VERBOSE_ADVANCED = false;
 	public static boolean CP_RESOLVE_VERBOSE_FAILURE = false;
 	public static boolean ZIP_ACCESS_VERBOSE = false;
-	
+	public static boolean JRT_ACCESS_VERBOSE = false;
+
 	/**
 	 * A cache of opened zip files per thread.
 	 * (for a given thread, the object value is a HashMap from IPath to java.io.ZipFile)
 	 */
-	private ThreadLocal zipFiles = new ThreadLocal();
+	private ThreadLocal<ZipCache> zipFiles = new ThreadLocal<>();
 
 	private UserLibraryManager userLibraryManager;
-	
+
+	private ModuleSourcePathManager modulePathManager;
 	/*
 	 * A set of IPaths for jars that are known to not contain a chaining (through MANIFEST.MF) to another library
 	 */
-	private Set nonChainingJars;
+	private Set<IPath> nonChainingJars;
 
 	// The amount of time from when an invalid archive is first sensed until that state is considered stale.
 	private static long INVALID_ARCHIVE_TTL_MILLISECONDS = 2 * 60 * 1000;
@@ -1578,20 +1642,20 @@
 	 * A map of IPaths for jars that are known to be invalid (such as not being in a valid/known format), to an eviction timestamp.
 	 * Synchronize on invalidArchivesMutex before accessing.
 	 */
-	private final Map<IPath, InvalidArchiveInfo> invalidArchives = new HashMap<IPath, InvalidArchiveInfo>();
+	private final Map<IPath, InvalidArchiveInfo> invalidArchives = new HashMap<>();
 	private final Object invalidArchivesMutex = new Object();
 
 	/*
 	 * A set of IPaths for files that are known to be external to the workspace.
 	 * Need not be referenced by the classpath.
 	 */
-	private Set externalFiles;
+	private Set<IPath> externalFiles;
 
 	/*
 	 * A set of IPaths for files that do not exist on the file system but are assumed to be
 	 * external archives (rather than external folders).
 	 */
-	private Set assumedExternalFiles;
+	private Set<IPath> assumedExternalFiles;
 
 	/**
 	 * Update the classpath variable cache
@@ -1600,7 +1664,8 @@
 		/**
          * @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent)
          */
-        public void preferenceChange(IEclipsePreferences.PreferenceChangeEvent event) {
+        @Override
+		public void preferenceChange(IEclipsePreferences.PreferenceChangeEvent event) {
         	String propertyName = event.getKey();
         	if (propertyName.startsWith(JavaCore.PLUGIN_ID)) {
 	        	if (propertyName.startsWith(CP_VARIABLE_PREFERENCES_PREFIX)) {
@@ -1684,9 +1749,11 @@
 	 * Listener on eclipse preferences default/instance node changes.
 	 */
 	IEclipsePreferences.INodeChangeListener instanceNodeListener = new IEclipsePreferences.INodeChangeListener() {
+		@Override
 		public void added(IEclipsePreferences.NodeChangeEvent event) {
 			// do nothing
 		}
+		@Override
 		public void removed(IEclipsePreferences.NodeChangeEvent event) {
 			if (event.getChild() == JavaModelManager.this.preferencesLookup[PREF_INSTANCE]) {
 				JavaModelManager.this.preferencesLookup[PREF_INSTANCE] = InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
@@ -1695,9 +1762,11 @@
 		}
 	};
 	IEclipsePreferences.INodeChangeListener defaultNodeListener = new IEclipsePreferences.INodeChangeListener() {
+		@Override
 		public void added(IEclipsePreferences.NodeChangeEvent event) {
 			// do nothing
 		}
+		@Override
 		public void removed(IEclipsePreferences.NodeChangeEvent event) {
 			if (event.getChild() == JavaModelManager.this.preferencesLookup[PREF_DEFAULT]) {
 				JavaModelManager.this.preferencesLookup[PREF_DEFAULT] = DefaultScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
@@ -1733,16 +1802,16 @@
 	/**
 	 * @deprecated
 	 */
-	private void addDeprecatedOptions(Hashtable options) {
+	private void addDeprecatedOptions(Hashtable<String, String> options) {
 		options.put(JavaCore.COMPILER_PB_INVALID_IMPORT, JavaCore.ERROR);
 		options.put(JavaCore.COMPILER_PB_UNREACHABLE_CODE, JavaCore.ERROR);
 	}
-	
+
 	public void addNonChainingJar(IPath path) {
 		if (this.nonChainingJars != null)
 			this.nonChainingJars.add(path);
 	}
-	
+
 	public void addInvalidArchive(IPath path, ArchiveValidity reason) {
 		if (DEBUG_INVALID_ARCHIVES) {
 			System.out.println("Invalid JAR cache: adding " + path + ", reason: " + reason);  //$NON-NLS-1$//$NON-NLS-2$
@@ -1759,7 +1828,7 @@
 	public void addExternalFile(IPath path) {
 		// unlikely to be null
 		if (this.externalFiles == null) {
-			this.externalFiles = Collections.synchronizedSet(new HashSet());
+			this.externalFiles = Collections.synchronizedSet(new HashSet<IPath>());
 		}
 		if(this.externalFiles != null) {
 			this.externalFiles.add(path);
@@ -1771,7 +1840,7 @@
 	 * Ignores if there are already clients.
 	 */
 	public void cacheZipFiles(Object owner) {
-		ZipCache zipCache = (ZipCache) this.zipFiles.get();
+		ZipCache zipCache = this.zipFiles.get();
 		if (zipCache != null) {
 			return;
 		}
@@ -1782,6 +1851,9 @@
 	public void closeZipFile(ZipFile zipFile) {
 		if (zipFile == null) return;
 		if (this.zipFiles.get() != null) {
+			if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
+				System.out.println("(" + Thread.currentThread() + ") [JavaModelManager.closeZipFile(ZipFile)] NOT closed ZipFile (cache exist!) on " +zipFile.getName()); //$NON-NLS-1$	//$NON-NLS-2$
+			}
 			return; // zip file will be closed by call to flushZipFiles
 		}
 		try {
@@ -1791,12 +1863,13 @@
 			zipFile.close();
 		} catch (IOException e) {
 			// problem occured closing zip file: cannot do much more
+			JavaCore.getPlugin().getLog().log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, "Error closing " + zipFile.getName(), e)); //$NON-NLS-1$
 		}
 	}
 
 	public static void registerDebugOptionsListener(BundleContext context) {
 		// register debug options listener
-		Hashtable<String, String> properties = new Hashtable<String, String>(2);
+		Hashtable<String, String> properties = new Hashtable<>(2);
 		properties.put(DebugOptions.LISTENER_SYMBOLICNAME, JavaCore.PLUGIN_ID);
 		DEBUG_REGISTRATION = context.registerService(DebugOptionsListener.class, new DebugOptionsListener() {
 			@Override
@@ -1831,13 +1904,17 @@
 				JavaModelManager.ZIP_ACCESS_VERBOSE = debug && options.getBooleanOption(ZIP_ACCESS_DEBUG, false);
 				SourceMapper.VERBOSE = debug && options.getBooleanOption(SOURCE_MAPPER_DEBUG_VERBOSE, false);
 				DefaultCodeFormatter.DEBUG = debug && options.getBooleanOption(FORMATTER_DEBUG, false);
+				Database.DEBUG_FREE_SPACE = debug && options.getBooleanOption(INDEX_DEBUG_LARGE_CHUNKS, false);
+				Database.DEBUG_PAGE_CACHE = debug && options.getBooleanOption(INDEX_DEBUG_PAGE_CACHE, false);
 				Indexer.DEBUG = debug && options.getBooleanOption(INDEX_INDEXER_DEBUG, false);
 				Indexer.DEBUG_INSERTIONS = debug  && options.getBooleanOption(INDEX_INDEXER_INSERTIONS, false);
 				Indexer.DEBUG_ALLOCATIONS = debug && options.getBooleanOption(INDEX_INDEXER_SPACE, false);
 				Indexer.DEBUG_TIMING = debug && options.getBooleanOption(INDEX_INDEXER_TIMING, false);
+				Indexer.DEBUG_SCHEDULING = debug && options.getBooleanOption(INDEX_INDEXER_SCHEDULING, false);
 				Indexer.DEBUG_SELFTEST = debug && options.getBooleanOption(INDEX_INDEXER_SELFTEST, false);
+				Indexer.DEBUG_LOG_SIZE_MB = debug ? options.getIntegerOption(INDEX_INDEXER_LOG_SIZE_MEGS, 0) : 0;
 				Nd.sDEBUG_LOCKS = debug && options.getBooleanOption(INDEX_LOCKS_DEBUG, false);
-		
+
 				// configure performance options
 				if(PerformanceStats.ENABLED) {
 					CompletionEngine.PERF = PerformanceStats.isEnabled(COMPLETION_PERF);
@@ -1893,9 +1970,11 @@
 		apm[0] = null;
 		final IConfigurationElement factory = this.annotationProcessorManagerFactory;
 		SafeRunner.run(new ISafeRunnable() {
+			@Override
 			public void handleException(Throwable exception) {
 				Util.log(exception, "Exception occurred while loading annotation processor manager"); //$NON-NLS-1$
 			}
+			@Override
 			public void run() throws Exception {
 				Object executableExtension = factory.createExecutableExtension("class"); //$NON-NLS-1$
 				if (executableExtension instanceof AbstractAnnotationProcessorManager) {
@@ -1927,10 +2006,10 @@
 		PerWorkingCopyInfo info = null;
 		synchronized(this.perWorkingCopyInfos) {
 			WorkingCopyOwner owner = workingCopy.owner;
-			Map workingCopyToInfos = (Map)this.perWorkingCopyInfos.get(owner);
+			Map<CompilationUnit, PerWorkingCopyInfo> workingCopyToInfos = this.perWorkingCopyInfos.get(owner);
 			if (workingCopyToInfos == null) return -1;
 
-			info = (PerWorkingCopyInfo)workingCopyToInfos.get(workingCopy);
+			info = workingCopyToInfos.get(workingCopy);
 			if (info == null) return -1;
 
 			if (--info.useCount == 0) {
@@ -1961,6 +2040,7 @@
 	/**
 	 * @see ISaveParticipant
 	 */
+	@Override
 	public void doneSaving(ISaveContext context){
 		// nothing to do for jdt.core
 	}
@@ -1969,8 +2049,11 @@
 	 * Flushes ZipFiles cache if there are no more clients.
 	 */
 	public void flushZipFiles(Object owner) {
-		ZipCache zipCache = (ZipCache)this.zipFiles.get();
+		ZipCache zipCache = this.zipFiles.get();
 		if (zipCache == null) {
+			if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
+				System.out.println("(" + Thread.currentThread() + ") [JavaModelManager.flushZipFiles(String)] NOT found cache for " + owner); //$NON-NLS-1$	//$NON-NLS-2$
+			}
 			return;
 		}
 		// the owner will be responsible for flushing the cache
@@ -1978,6 +2061,12 @@
 		if (zipCache.owner == owner) {
 			this.zipFiles.set(null);
 			zipCache.flush();
+		} else {
+			if (JavaModelManager.ZIP_ACCESS_VERBOSE) {
+				System.out.println("(" + Thread.currentThread() //$NON-NLS-1$
+						+ ") [JavaModelManager.flushZipFiles(String)] NOT closed cache, wrong owner, expected: " //$NON-NLS-1$
+						+ zipCache.owner + ", got: " + owner); //$NON-NLS-1$
+			}
 		}
 	}
 
@@ -2038,24 +2127,24 @@
 	}
 
 	public IClasspathEntry[] getReferencedClasspathEntries(IClasspathEntry libraryEntry, IJavaProject project) {
-		
+
 		IClasspathEntry[] referencedEntries = ((ClasspathEntry)libraryEntry).resolvedChainedLibraries();
-		
+
 		if (project == null)
 			return referencedEntries;
-		
+
 		PerProjectInfo perProjectInfo = getPerProjectInfo(project.getProject(), false);
-		if(perProjectInfo == null) 
+		if(perProjectInfo == null)
 			return referencedEntries;
-		
-		List pathToReferencedEntries = new ArrayList(referencedEntries.length);
+
+		LinkedHashSet<IPath> pathToReferencedEntries = new LinkedHashSet<>(referencedEntries.length);
 		for (int index = 0; index < referencedEntries.length; index++) {
 
 			if (pathToReferencedEntries.contains(referencedEntries[index].getPath()))
 				continue;
 
 			IClasspathEntry persistedEntry = null;
-			if ((persistedEntry = (IClasspathEntry)perProjectInfo.rootPathToResolvedEntries.get(referencedEntries[index].getPath())) != null) {
+			if ((persistedEntry = perProjectInfo.rootPathToResolvedEntries.get(referencedEntries[index].getPath())) != null) {
 				// TODO: reconsider this - may want to copy the values instead of reference assignment?
 				referencedEntries[index] = persistedEntry;
 			}
@@ -2063,7 +2152,7 @@
 		}
 		return referencedEntries;
 	}
-	
+
 	public DeltaProcessor getDeltaProcessor() {
 		return this.deltaState.getDeltaProcessor();
 	}
@@ -2091,7 +2180,7 @@
 	 *  Returns the info for the element.
 	 */
 	public synchronized Object getInfo(IJavaElement element) {
-		HashMap tempCache = (HashMap)this.temporaryCache.get();
+		HashMap<IJavaElement, Object> tempCache = this.temporaryCache.get();
 		if (tempCache != null) {
 			Object result = tempCache.get(element);
 			if (result != null) {
@@ -2108,19 +2197,19 @@
 		return this.cache.getExistingElement(element);
 	}
 
-	public HashSet getExternalWorkingCopyProjects() {
+	public HashSet<IJavaProject> getExternalWorkingCopyProjects() {
 		synchronized (this.perWorkingCopyInfos) {
-			HashSet result = null;
-			Iterator values = this.perWorkingCopyInfos.values().iterator();
+			HashSet<IJavaProject> result = null;
+			Iterator<Map<CompilationUnit, PerWorkingCopyInfo>> values = this.perWorkingCopyInfos.values().iterator();
 			while (values.hasNext()) {
-				Map ownerCopies = (Map) values.next();
-				Iterator workingCopies = ownerCopies.keySet().iterator();
+				Map<CompilationUnit, PerWorkingCopyInfo> ownerCopies = values.next();
+				Iterator<CompilationUnit> workingCopies = ownerCopies.keySet().iterator();
 				while (workingCopies.hasNext()) {
-					ICompilationUnit workingCopy = (ICompilationUnit) workingCopies.next();
+					ICompilationUnit workingCopy = workingCopies.next();
 					IJavaProject project = workingCopy.getJavaProject();
 					if (project.getElementName().equals(ExternalJavaProject.EXTERNAL_PROJECT_NAME)) {
 						if (result == null)
-							result = new HashSet();
+							result = new HashSet<>();
 						result.add(project);
 					}
 				}
@@ -2137,18 +2226,18 @@
 	}
 
 	// If modified, also modify the method getDefaultOptionsNoInitialization()
-	public Hashtable getDefaultOptions(){
+	public Hashtable<String, String> getDefaultOptions(){
 
-		Hashtable defaultOptions = new Hashtable(10);
+		Hashtable<String, String> defaultOptions = new Hashtable<>(10);
 
 		// see JavaCorePreferenceInitializer#initializeDefaultPluginPreferences() for changing default settings
 		// If modified, also modify the method getDefaultOptionsNoInitialization()
 		IEclipsePreferences defaultPreferences = getDefaultPreferences();
 
 		// initialize preferences to their default
-		Iterator iterator = this.optionNames.iterator();
+		Iterator<String> iterator = this.optionNames.iterator();
 		while (iterator.hasNext()) {
-		    String propertyName = (String) iterator.next();
+		    String propertyName = iterator.next();
 		    String value = defaultPreferences.get(propertyName, null);
 		    if (value != null) defaultOptions.put(propertyName, value);
 		}
@@ -2222,7 +2311,7 @@
 			String value = service.get(optionName, null, this.preferencesLookup);
 			if (value == null && optionLevel == DEPRECATED_OPTION) {
 				// May be a deprecated option, retrieve the new value in compatible options
-				String[] compatibleOptions = (String[]) this.deprecatedOptions.get(optionName);
+				String[] compatibleOptions = this.deprecatedOptions.get(optionName);
 				value = service.get(compatibleOptions[0], null, this.preferencesLookup);
 			}
 			return value==null ? null : value.trim();
@@ -2255,7 +2344,7 @@
 					return oldValue.trim();
 				}
 				// Get the new compatible value
-				String[] compatibleOptions = (String[]) this.deprecatedOptions.get(optionName);
+				String[] compatibleOptions = this.deprecatedOptions.get(optionName);
 				String newDefault = inheritJavaCoreOptions ? JavaCore.getOption(compatibleOptions[0]) : null;
 				String newValue = projectPreferences.get(compatibleOptions[0], newDefault);
 				return newValue == null ? null : newValue.trim();
@@ -2265,7 +2354,7 @@
 
 	/**
 	 * Returns whether an option name is known or not.
-	 * 
+	 *
 	 * @param optionName The name of the option
 	 * @return <code>true</code> when the option name is either
 	 * {@link #VALID_OPTION valid} or {@link #DEPRECATED_OPTION deprecated},
@@ -2281,7 +2370,7 @@
 
 	/**
 	 * Returns the level of the given option.
-	 * 
+	 *
 	 * @param optionName The name of the option
 	 * @return The level of the option as an int which may have the following
 	 * values:
@@ -2301,25 +2390,25 @@
 		return UNKNOWN_OPTION;
 	}
 
-	public Hashtable getOptions() {
+	public Hashtable<String, String> getOptions() {
 
 		// return cached options if already computed
-		Hashtable cachedOptions; // use a local variable to avoid race condition (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=256329 )
+		Hashtable<String, String> cachedOptions; // use a local variable to avoid race condition (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=256329 )
 		if ((cachedOptions = this.optionsCache) != null) {
-			return new Hashtable(cachedOptions);
+			return new Hashtable<>(cachedOptions);
 		}
 		if (!Platform.isRunning()) {
 			this.optionsCache = getDefaultOptionsNoInitialization();
-			return new Hashtable(this.optionsCache);
+			return new Hashtable<>(this.optionsCache);
 		}
 		// init
-		Hashtable options = new Hashtable(10);
+		Hashtable<String, String> options = new Hashtable<>(10);
 		IPreferencesService service = Platform.getPreferencesService();
 
 		// set options using preferences service lookup
-		Iterator iterator = this.optionNames.iterator();
+		Iterator<String> iterator = this.optionNames.iterator();
 		while (iterator.hasNext()) {
-			String propertyName = (String) iterator.next();
+			String propertyName = iterator.next();
 			String propertyValue = service.get(propertyName, null, this.preferencesLookup);
 			if (propertyValue != null) {
 				options.put(propertyName, propertyValue);
@@ -2327,14 +2416,14 @@
 		}
 
 		// set deprecated options using preferences service lookup
-		Iterator deprecatedEntries = this.deprecatedOptions.entrySet().iterator();
+		Iterator<Entry<String, String[]>> deprecatedEntries = this.deprecatedOptions.entrySet().iterator();
 		while (deprecatedEntries.hasNext()) {
-			Entry entry = (Entry) deprecatedEntries.next();
-			String propertyName = (String) entry.getKey();
+			Entry<String, String[]> entry = deprecatedEntries.next();
+			String propertyName = entry.getKey();
 			String propertyValue = service.get(propertyName, null, this.preferencesLookup);
 			if (propertyValue != null) {
 				options.put(propertyName, propertyValue);
-				String[] compatibleOptions = (String[]) entry.getValue();
+				String[] compatibleOptions = entry.getValue();
 				for (int co=0, length=compatibleOptions.length; co < length; co++) {
 					String compatibleOption = compatibleOptions[co];
 					if (!options.containsKey(compatibleOption))
@@ -2351,13 +2440,13 @@
 
 		Util.fixTaskTags(options);
 		// store built map in cache
-		this.optionsCache = new Hashtable(options);
+		this.optionsCache = new Hashtable<>(options);
 		// return built map
 		return options;
 	}
 
 	// Do not modify without modifying getDefaultOptions()
-	private Hashtable getDefaultOptionsNoInitialization() {
+	private Hashtable<String, String> getDefaultOptionsNoInitialization() {
 		Map<String, String> defaultOptionsMap = new CompilerOptions().getMap(); // compiler defaults
 
 		// Override some compiler defaults
@@ -2379,7 +2468,7 @@
 		defaultOptionsMap.put(JavaCore.CORE_JAVA_BUILD_ORDER, JavaCore.IGNORE);
 		defaultOptionsMap.put(JavaCore.CORE_INCOMPLETE_CLASSPATH, JavaCore.ERROR);
 		defaultOptionsMap.put(JavaCore.CORE_CIRCULAR_CLASSPATH, JavaCore.ERROR);
-		defaultOptionsMap.put(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, JavaCore.IGNORE); 
+		defaultOptionsMap.put(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, JavaCore.IGNORE);
 		defaultOptionsMap.put(JavaCore.CORE_OUTPUT_LOCATION_OVERLAPPING_ANOTHER_SOURCE, JavaCore.ERROR);
 		defaultOptionsMap.put(JavaCore.CORE_ENABLE_CLASSPATH_EXCLUSION_PATTERNS, JavaCore.ENABLED);
 		defaultOptionsMap.put(JavaCore.CORE_ENABLE_CLASSPATH_MULTIPLE_OUTPUT_LOCATIONS, JavaCore.ENABLED);
@@ -2410,7 +2499,7 @@
 		// Time out for parameter names
 		defaultOptionsMap.put(JavaCore.TIMEOUT_FOR_PARAMETER_NAME_FROM_ATTACHED_JAVADOC, "50"); //$NON-NLS-1$
 
-		return new Hashtable(defaultOptionsMap);
+		return new Hashtable<>(defaultOptionsMap);
 	}
 
 	/*
@@ -2418,7 +2507,7 @@
 	 */
 	public PerProjectInfo getPerProjectInfo(IProject project, boolean create) {
 		synchronized(this.perProjectInfos) { // use the perProjectInfo collection as its own lock
-			PerProjectInfo info= (PerProjectInfo) this.perProjectInfos.get(project);
+			PerProjectInfo info= this.perProjectInfos.get(project);
 			if (info == null && create) {
 				info= new PerProjectInfo(project);
 				this.perProjectInfos.put(project, info);
@@ -2452,13 +2541,13 @@
 	public PerWorkingCopyInfo getPerWorkingCopyInfo(CompilationUnit workingCopy,boolean create, boolean recordUsage, IProblemRequestor problemRequestor) {
 		synchronized(this.perWorkingCopyInfos) { // use the perWorkingCopyInfo collection as its own lock
 			WorkingCopyOwner owner = workingCopy.owner;
-			Map workingCopyToInfos = (Map)this.perWorkingCopyInfos.get(owner);
+			Map<CompilationUnit, PerWorkingCopyInfo> workingCopyToInfos = this.perWorkingCopyInfos.get(owner);
 			if (workingCopyToInfos == null && create) {
-				workingCopyToInfos = new HashMap();
+				workingCopyToInfos = new HashMap<>();
 				this.perWorkingCopyInfos.put(owner, workingCopyToInfos);
 			}
 
-			PerWorkingCopyInfo info = workingCopyToInfos == null ? null : (PerWorkingCopyInfo) workingCopyToInfos.get(workingCopy);
+			PerWorkingCopyInfo info = workingCopyToInfos == null ? null : workingCopyToInfos.get(workingCopy);
 			if (info == null && create) {
 				info= new PerWorkingCopyInfo(workingCopy, problemRequestor);
 				workingCopyToInfos.put(workingCopy, info);
@@ -2474,9 +2563,9 @@
 	 * As such it should not be stored into container caches.
 	 */
 	public IClasspathContainer getPreviousSessionContainer(IPath containerPath, IJavaProject project) {
-			Map previousContainerValues = (Map)this.previousSessionContainers.get(project);
+			Map<IPath, IClasspathContainer> previousContainerValues = this.previousSessionContainers.get(project);
 			if (previousContainerValues != null){
-			    IClasspathContainer previousContainer = (IClasspathContainer)previousContainerValues.get(containerPath);
+			    IClasspathContainer previousContainer = previousContainerValues.get(containerPath);
 			    if (previousContainer != null) {
 					if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
 						verbose_reentering_project_container_access(containerPath, project, previousContainer);
@@ -2511,7 +2600,7 @@
 	 * Returns a persisted container from previous session if any
 	 */
 	public IPath getPreviousSessionVariable(String variableName) {
-		IPath previousPath = (IPath)this.previousSessionVariables.get(variableName);
+		IPath previousPath = this.previousSessionVariables.get(variableName);
 		if (previousPath != null){
 			if (CP_RESOLVE_VERBOSE_ADVANCED)
 				verbose_reentering_variable_access(variableName, previousPath);
@@ -2532,10 +2621,10 @@
 	 * Returns the temporary cache for newly opened elements for the current thread.
 	 * Creates it if not already created.
 	 */
-	public HashMap getTemporaryCache() {
-		HashMap result = (HashMap)this.temporaryCache.get();
+	public HashMap<IJavaElement, Object> getTemporaryCache() {
+		HashMap<IJavaElement, Object> result = this.temporaryCache.get();
 		if (result == null) {
-			result = new HashMap();
+			result = new HashMap<>();
 			this.temporaryCache.set(result);
 		}
 		return result;
@@ -2553,7 +2642,7 @@
 		Plugin jdtCorePlugin = JavaCore.getPlugin();
 		if (jdtCorePlugin == null) return null;
 
-		ArrayList variableList = new ArrayList(5);
+		ArrayList<String> variableList = new ArrayList<>(5);
 		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPVARIABLE_INITIALIZER_EXTPOINT_ID);
 		if (extension != null) {
 			IExtension[] extensions =  extension.getExtensions();
@@ -2578,7 +2667,7 @@
 		Plugin jdtCorePlugin = JavaCore.getPlugin();
 		if (jdtCorePlugin == null) return null;
 
-		ArrayList containerIDList = new ArrayList(5);
+		ArrayList<String> containerIDList = new ArrayList<>(5);
 		IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint(JavaCore.PLUGIN_ID, JavaModelManager.CPCONTAINER_INITIALIZER_EXTPOINT_ID);
 		if (extension != null) {
 			IExtension[] extensions =  extension.getExtensions();
@@ -2712,6 +2801,17 @@
 		return MANAGER.userLibraryManager;
 	}
 
+	public static ModuleSourcePathManager getModulePathManager() {
+		if (MANAGER.modulePathManager == null) {
+			ModuleSourcePathManager modulePathManager = new ModuleSourcePathManager();
+			synchronized(MANAGER) {
+				if (MANAGER.modulePathManager == null) { // ensure another library manager was not set while creating the instance above
+					MANAGER.modulePathManager = modulePathManager;
+				}
+			}
+		}
+		return MANAGER.modulePathManager;
+	}
 	/*
 	 * Returns all the working copies which have the given owner.
 	 * Adds the working copies of the primary owner if specified.
@@ -2722,7 +2822,7 @@
 			ICompilationUnit[] primaryWCs = addPrimary && owner != DefaultWorkingCopyOwner.PRIMARY
 				? getWorkingCopies(DefaultWorkingCopyOwner.PRIMARY, false)
 				: null;
-			Map workingCopyToInfos = (Map)this.perWorkingCopyInfos.get(owner);
+			Map<CompilationUnit, PerWorkingCopyInfo> workingCopyToInfos = this.perWorkingCopyInfos.get(owner);
 			if (workingCopyToInfos == null) return primaryWCs;
 			int primaryLength = primaryWCs == null ? 0 : primaryWCs.length;
 			int size = workingCopyToInfos.size(); // note size is > 0 otherwise pathToPerWorkingCopyInfos would be null
@@ -2738,9 +2838,9 @@
 				if (index != primaryLength)
 					System.arraycopy(result, 0, result = new ICompilationUnit[index+size], 0, index);
 			}
-			Iterator iterator = workingCopyToInfos.values().iterator();
+			Iterator<PerWorkingCopyInfo> iterator = workingCopyToInfos.values().iterator();
 			while(iterator.hasNext()) {
-				result[index++] = ((JavaModelManager.PerWorkingCopyInfo)iterator.next()).getWorkingCopy();
+				result[index++] = iterator.next().getWorkingCopy();
 			}
 			return result;
 		}
@@ -2753,12 +2853,42 @@
 		return this.workspaceScope;
 	}
 
+	public static boolean isJrt(IPath path) {
+		return path.toString().endsWith(JRTUtil.JRT_FS_JAR);
+	}
+
+	public static boolean isJrt(String path) {
+		return isJrt(new Path(path));
+	}
+
 	public void verifyArchiveContent(IPath path) throws CoreException {
+		// TODO: we haven't finalized what path the JRT is represented by. Don't attempt to validate it.
+		if (isJrt(path)) {
+			return;
+		}
 		throwExceptionIfArchiveInvalid(path);
+		// Check if we can determine the archive's validity by examining the index
+		if (JavaIndex.isEnabled()) {
+			JavaIndex index = JavaIndex.getIndex();
+			String location = JavaModelManager.getLocalFile(path).getAbsolutePath();
+			try (IReader reader = index.getNd().acquireReadLock()) {
+				NdResourceFile resourceFile = index.getResourceFile(location.toCharArray());
+				if (index.isUpToDate(resourceFile)) {
+					// We have this file in the index and the index is up-to-date, so we can determine the file's
+					// validity without touching the filesystem.
+					if (resourceFile.isCorruptedZipFile()) {
+						throw new CoreException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, -1,
+								Messages.status_IOException, new ZipException()));
+					}
+					return;
+				}
+			}
+		}
+
 		ZipFile file = getZipFile(path);
 		closeZipFile(file);
 	}
-	
+
 	/**
 	 * Returns the open ZipFile at the given path. If the ZipFile
 	 * does not yet exist, it is created, opened, and added to the cache
@@ -2781,7 +2911,7 @@
 	 * For use in the JDT unit tests only. Used for testing error handling. Causes an
 	 * {@link IOException} to be thrown in {@link #getZipFile} whenever it attempts to
 	 * read a zip file.
-	 * 
+	 *
 	 * @noreference This field is not intended to be referenced by clients.
 	 */
 	public static boolean throwIoExceptionsInGetZipFile = false;
@@ -2792,7 +2922,7 @@
 		}
 		ZipCache zipCache;
 		ZipFile zipFile;
-		if ((zipCache = (ZipCache)this.zipFiles.get()) != null
+		if ((zipCache = this.zipFiles.get()) != null
 				&& (zipFile = zipCache.getCache(path)) != null) {
 			return zipFile;
 		}
@@ -2811,8 +2941,8 @@
 			}
 			return zipFile;
 		} catch (IOException e) {
-			ArchiveValidity reason; 
-			
+			ArchiveValidity reason;
+
 			if (e instanceof ZipException) {
 				reason = ArchiveValidity.BAD_FORMAT;
 			} else if (e instanceof FileNotFoundException) {
@@ -2875,13 +3005,13 @@
 			verbose_batching_containers_initialization(javaProjectToInit, containerToInit);
 
 		// collect all container paths
-		final HashMap allContainerPaths = new HashMap();
+		final HashMap<IJavaProject, Set<IPath>> allContainerPaths = new HashMap<>();
 		IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
 		for (int i = 0, length = projects.length; i < length; i++) {
 			IProject project = projects[i];
 			if (!JavaProject.hasJavaNature(project)) continue;
 			IJavaProject javaProject = new JavaProject(project, getJavaModel());
-			HashSet paths = (HashSet) allContainerPaths.get(javaProject);
+			Set<IPath> paths = allContainerPaths.get(javaProject);
 			IClasspathEntry[] rawClasspath = javaProject.getRawClasspath();
 			for (int j = 0, length2 = rawClasspath.length; j < length2; j++) {
 				IClasspathEntry entry = rawClasspath[j];
@@ -2889,7 +3019,7 @@
 				if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER
 						&& containerGet(javaProject, path) == null) {
 					if (paths == null) {
-						paths = new HashSet();
+						paths = new HashSet<>();
 						allContainerPaths.put(javaProject, paths);
 					}
 					paths.add(path);
@@ -2909,9 +3039,9 @@
 		}
 		// TODO (frederic) remove following block when JDT/UI dummy project will be thrown away...
 		if (javaProjectToInit != null) {
-			HashSet containerPaths = (HashSet) allContainerPaths.get(javaProjectToInit);
+			Set<IPath> containerPaths = allContainerPaths.get(javaProjectToInit);
 			if (containerPaths == null) {
-				containerPaths = new HashSet();
+				containerPaths = new HashSet<>();
 				allContainerPaths.put(javaProjectToInit, containerPaths);
 			}
 			containerPaths.add(containerToInit);
@@ -2925,19 +3055,18 @@
 			// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=118507)
 			IWorkspaceRunnable runnable =
 				new IWorkspaceRunnable() {
+					@Override
 					public void run(IProgressMonitor monitor) throws CoreException {
 						try {
 							// Collect all containers
-							Set entrySet = allContainerPaths.entrySet();
+							Set<Entry<IJavaProject, Set<IPath>>> entrySet = allContainerPaths.entrySet();
 							int length = entrySet.size();
 							if (monitor != null)
 								monitor.beginTask("", length); //$NON-NLS-1$
-							Map.Entry[] entries = new Map.Entry[length]; // clone as the following will have a side effect
-							entrySet.toArray(entries);
-							for (int i = 0; i < length; i++) {
-								Map.Entry entry = entries[i];
-								IJavaProject javaProject = (IJavaProject) entry.getKey();
-								HashSet pathSet = (HashSet) entry.getValue();
+							Set<Entry<IJavaProject, Set<IPath>>> entries = new HashSet<>(entrySet);  // clone as the following will have a side effect
+							for (Entry<IJavaProject, Set<IPath>> entry : entries) {
+								IJavaProject javaProject = entry.getKey();
+								Set<IPath> pathSet = entry.getValue();
 								if (pathSet == null) continue;
 								int length2 = pathSet.size();
 								IPath[] paths = new IPath[length2];
@@ -2953,31 +3082,45 @@
 								if (monitor != null)
 									monitor.worked(1);
 							}
-							
+
 							// Set all containers
-							Map perProjectContainers = (Map) JavaModelManager.this.containersBeingInitialized.get();
-							if (perProjectContainers != null) {
-								Iterator entriesIterator = perProjectContainers.entrySet().iterator();
-								while (entriesIterator.hasNext()) {
-									Map.Entry entry = (Map.Entry) entriesIterator.next();
-									IJavaProject project = (IJavaProject) entry.getKey();
-									HashMap perPathContainers = (HashMap) entry.getValue();
-									Iterator containersIterator = perPathContainers.entrySet().iterator();
-									while (containersIterator.hasNext()) {
-										Map.Entry containerEntry = (Map.Entry) containersIterator.next();
-										IPath containerPath = (IPath) containerEntry.getKey();
-										IClasspathContainer container = (IClasspathContainer) containerEntry.getValue();
-										SetContainerOperation operation = new SetContainerOperation(containerPath, new IJavaProject[] {project}, new IClasspathContainer[] {container});
-										operation.runOperation(monitor);
-									}
-								}
-								JavaModelManager.this.containersBeingInitialized.set(null);
+							Map<IJavaProject, Map<IPath, IClasspathContainer>> perProjectContainers = JavaModelManager.this.containersBeingInitialized.get();
+							// Note that during the operation below new containers could be added to the map,
+							// so we should loop until containersBeingInitialized will be empty
+							while (perProjectContainers != null && !perProjectContainers.isEmpty()) {
+								initKnownContainers(perProjectContainers, monitor);
 							}
+							JavaModelManager.this.containersBeingInitialized.set(null);
 						} finally {
 							if (monitor != null)
 								monitor.done();
 						}
 					}
+
+					private void initKnownContainers(Map<IJavaProject, Map<IPath, IClasspathContainer>> perProjectContainers, IProgressMonitor monitor)
+							throws JavaModelException {
+						Iterator<Entry<IJavaProject, Map<IPath, IClasspathContainer>>> entriesIterator = perProjectContainers.entrySet().iterator();
+						List<SetContainerOperation> operations = new ArrayList<>();
+						while (entriesIterator.hasNext()) {
+							Entry<IJavaProject, Map<IPath, IClasspathContainer>> entry = entriesIterator.next();
+							IJavaProject project = entry.getKey();
+							Map<IPath, IClasspathContainer> perPathContainers = entry.getValue();
+							Iterator<Entry<IPath, IClasspathContainer>> containersIterator = perPathContainers.entrySet().iterator();
+							while (containersIterator.hasNext()) {
+								Entry<IPath, IClasspathContainer> containerEntry = containersIterator.next();
+								IPath containerPath = containerEntry.getKey();
+								IClasspathContainer container = containerEntry.getValue();
+								SetContainerOperation operation = new SetContainerOperation(containerPath, new IJavaProject[] {project}, new IClasspathContainer[] {container});
+								operations.add(operation);
+							}
+						}
+						// operation.runOperation() below could put something into the map again
+						// so we clear the map to make sure we only see new content there
+						perProjectContainers.clear();
+						for (SetContainerOperation operation : operations) {
+							operation.runOperation(monitor);
+						}
+					}
 				};
 			IProgressMonitor monitor = this.batchContainerInitializationsProgress;
 			IWorkspace workspace = ResourcesPlugin.getWorkspace();
@@ -3089,6 +3232,7 @@
 		} else {
 			// create a dummy initializer and get the default failure container
 			container = (new ClasspathContainerInitializer() {
+				@Override
 				public void initialize(IPath path, IJavaProject javaProject) throws CoreException {
 					// not used
 				}
@@ -3185,9 +3329,11 @@
 
 		// Listen to instance preferences node removal from parent in order to refresh stored one
 		this.instanceNodeListener = new IEclipsePreferences.INodeChangeListener() {
+			@Override
 			public void added(IEclipsePreferences.NodeChangeEvent event) {
 				// do nothing
 			}
+			@Override
 			public void removed(IEclipsePreferences.NodeChangeEvent event) {
 				if (event.getChild() == JavaModelManager.this.preferencesLookup[PREF_INSTANCE]) {
 					JavaModelManager.this.preferencesLookup[PREF_INSTANCE] = InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
@@ -3200,9 +3346,11 @@
 
 		// Listen to default preferences node removal from parent in order to refresh stored one
 		this.defaultNodeListener = new IEclipsePreferences.INodeChangeListener() {
+			@Override
 			public void added(IEclipsePreferences.NodeChangeEvent event) {
 				// do nothing
 			}
+			@Override
 			public void removed(IEclipsePreferences.NodeChangeEvent event) {
 				if (event.getChild() == JavaModelManager.this.preferencesLookup[PREF_DEFAULT]) {
 					JavaModelManager.this.preferencesLookup[PREF_DEFAULT] = DefaultScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
@@ -3236,17 +3384,21 @@
 
 	void touchProjects(final IProject[] projectsToTouch, IProgressMonitor progressMonitor) throws JavaModelException {
 		WorkspaceJob touchJob = new WorkspaceJob(Messages.synchronizing_projects_job) {
+			@Override
 			public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
 				SubMonitor subMonitor = SubMonitor.convert(monitor, projectsToTouch.length);
 				for (IProject iProject : projectsToTouch) {
 					if (JavaBuilder.DEBUG) {
 						System.out.println("Touching project " + iProject.getName()); //$NON-NLS-1$
 					}
-					iProject.touch(subMonitor.split(1));
+					if (iProject.isAccessible()) {
+						iProject.touch(subMonitor.split(1));
+					}
 				}
 				return Status.OK_STATUS;
 			}
 
+			@Override
 			public boolean belongsTo(Object family) {
 				return ResourcesPlugin.FAMILY_MANUAL_REFRESH == family;
 			}
@@ -3254,10 +3406,10 @@
 		touchJob.schedule();
 	}
 
-	private HashSet getClasspathBeingResolved() {
-	    HashSet result = (HashSet) this.classpathsBeingResolved.get();
+	private Set<IJavaProject> getClasspathBeingResolved() {
+	    Set<IJavaProject> result = this.classpathsBeingResolved.get();
 	    if (result == null) {
-	        result = new HashSet();
+	        result = new HashSet<>();
 	        this.classpathsBeingResolved.set(result);
 	    }
 	    return result;
@@ -3274,11 +3426,11 @@
 		return JavaCore.COMPILER_PB_INVALID_IMPORT.equals(optionName)
 				|| JavaCore.COMPILER_PB_UNREACHABLE_CODE.equals(optionName);
 	}
-	
+
 	public boolean isNonChainingJar(IPath path) {
 		return this.nonChainingJars != null && this.nonChainingJars.contains(path);
 	}
-	
+
 	public ArchiveValidity getArchiveValidity(IPath path) {
 		InvalidArchiveInfo invalidArchiveInfo;
 		synchronized (this.invalidArchivesMutex) {
@@ -3376,9 +3528,9 @@
 	        getClasspathBeingResolved().remove(project);
 	    }
 	}
-	
-	private Set loadClasspathListCache(String cacheName) {
-		Set pathCache = new HashSet();
+
+	private Set<IPath> loadClasspathListCache(String cacheName) {
+		Set<IPath> pathCache = new HashSet<>();
 		File cacheFile = getClasspathListFile(cacheName);
 		DataInputStream in = null;
 		try {
@@ -3402,18 +3554,18 @@
 		}
 		return Collections.synchronizedSet(pathCache);
 	}
-	
+
 	private File getClasspathListFile(String fileName) {
-		return JavaCore.getPlugin().getStateLocation().append(fileName).toFile(); 
+		return JavaCore.getPlugin().getStateLocation().append(fileName).toFile();
 	}
-	
-	private Set getNonChainingJarsCache() throws CoreException {
-		// Even if there is one entry in the cache, just return it. It may not be 
+
+	private Set<IPath> getNonChainingJarsCache() throws CoreException {
+		// Even if there is one entry in the cache, just return it. It may not be
 		// the complete cache, but avoid going through all the projects to populate the cache.
 		if (this.nonChainingJars != null && this.nonChainingJars.size() > 0) {
 			return this.nonChainingJars;
 		}
-		Set result = new HashSet();
+		Set<IPath> result = new HashSet<>();
 		IJavaProject[] projects = getJavaModel().getJavaProjects();
 		for (int i = 0, length = projects.length; i < length; i++) {
 			IJavaProject javaProject = projects[i];
@@ -3421,7 +3573,7 @@
 			for (int j = 0, length2 = classpath.length; j < length2; j++) {
 				IClasspathEntry entry = classpath[j];
 				IPath path;
-				if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY 
+				if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY
 					&& !result.contains(path = entry.getPath())
 					&& ClasspathEntry.resolvedChainedLibraries(path).length == 0) {
 						result.add(path);
@@ -3431,9 +3583,9 @@
 		this.nonChainingJars = Collections.synchronizedSet(result);
 		return this.nonChainingJars;
 	}
-	
-	private Set getClasspathListCache(String cacheName) throws CoreException {
-		if (cacheName == NON_CHAINING_JARS_CACHE) 
+
+	private Set<IPath> getClasspathListCache(String cacheName) throws CoreException {
+		if (cacheName == NON_CHAINING_JARS_CACHE)
 			return getNonChainingJarsCache();
 		else if (cacheName == EXTERNAL_FILES_CACHE)
 			return this.externalFiles;
@@ -3442,7 +3594,7 @@
 		else
 			return null;
 	}
-	
+
 	public void loadVariablesAndContainers() throws CoreException {
 		// backward compatibility, consider persistent property
 		QualifiedName qName = new QualifiedName(JavaCore.PLUGIN_ID, "variables"); //$NON-NLS-1$
@@ -3616,24 +3768,29 @@
 			this.project = project;
 		}
 
+		@Override
 		public IClasspathEntry[] getClasspathEntries() {
 			return this.entries;
 		}
 
+		@Override
 		public String getDescription() {
 			return "Persisted container [" + this.containerPath //$NON-NLS-1$
 					+ " for project [" + this.project.getElementName() //$NON-NLS-1$
 					+ "]]"; //$NON-NLS-1$
 		}
 
+		@Override
 		public int getKind() {
 			return 0;
 		}
 
+		@Override
 		public IPath getPath() {
 			return this.containerPath;
 		}
 
+		@Override
 		public String toString() {
 			return getDescription();
 		}
@@ -3646,7 +3803,7 @@
 		private IClasspathEntry[] allClasspathEntries;
 		private int allClasspathEntryCount;
 
-		private final Map allPaths; // String -> IPath
+		private final Map<String, IPath> allPaths;
 
 		private String[] allStrings;
 		private int allStringsCount;
@@ -3657,7 +3814,7 @@
 			super();
 			this.allClasspathEntries = null;
 			this.allClasspathEntryCount = 0;
-			this.allPaths = new HashMap();
+			this.allPaths = new HashMap<>();
 			this.allStrings = null;
 			this.allStringsCount = 0;
 			this.in = in;
@@ -3671,7 +3828,7 @@
 		private IAccessRule loadAccessRule() throws IOException {
 			int problemId = loadInt();
 			IPath pattern = loadPath();
-			return new ClasspathAccessRule(pattern.toString().toCharArray(), problemId);
+			return getAccessRule(pattern, problemId);
 		}
 
 		private IAccessRule[] loadAccessRules() throws IOException {
@@ -3784,10 +3941,10 @@
 
 				containerPut(project, path, container);
 
-				Map oldContainers = (Map) JavaModelManager.this.previousSessionContainers.get(project);
+				Map<IPath, IClasspathContainer> oldContainers = JavaModelManager.this.previousSessionContainers.get(project);
 
 				if (oldContainers == null) {
-					oldContainers = new HashMap();
+					oldContainers = new HashMap<>();
 					JavaModelManager.this.previousSessionContainers.put(project, oldContainers);
 				}
 
@@ -3804,7 +3961,7 @@
 				return null;
 
 			String portableString = loadString();
-			IPath path = (IPath) this.allPaths.get(portableString);
+			IPath path = this.allPaths.get(portableString);
 
 			if (path == null) {
 				path = Path.fromPortableString(portableString);
@@ -3863,7 +4020,7 @@
 
 		private void loadVariables() throws IOException {
 			int size = loadInt();
-			Map loadedVars = new HashMap(size);
+			Map<String, IPath> loadedVars = new HashMap<>(size);
 
 			for (int i = 0; i < size; ++i) {
 				String varName = loadString();
@@ -3883,7 +4040,7 @@
 	 *  disturbing the cache ordering.
 	 */
 	protected synchronized Object peekAtInfo(IJavaElement element) {
-		HashMap tempCache = (HashMap)this.temporaryCache.get();
+		HashMap<IJavaElement, Object> tempCache = this.temporaryCache.get();
 		if (tempCache != null) {
 			Object result = tempCache.get(element);
 			if (result != null) {
@@ -3896,24 +4053,25 @@
 	/**
 	 * @see ISaveParticipant
 	 */
+	@Override
 	public void prepareToSave(ISaveContext context) /*throws CoreException*/ {
 		// nothing to do
 	}
 	/*
 	 * Puts the infos in the given map (keys are IJavaElements and values are JavaElementInfos)
-	 * in the Java model cache in an atomic way if the info is not already present in the cache. 
+	 * in the Java model cache in an atomic way if the info is not already present in the cache.
 	 * If the info is already present in the cache, it depends upon the forceAdd parameter.
-	 * If forceAdd is false it just returns the existing info and if true, this element and it's children are closed and then 
+	 * If forceAdd is false it just returns the existing info and if true, this element and it's children are closed and then
 	 * this particular info is added to the cache.
 	 */
-	protected synchronized Object putInfos(IJavaElement openedElement, Object newInfo, boolean forceAdd, Map newElements) {
+	protected synchronized Object putInfos(IJavaElement openedElement, Object newInfo, boolean forceAdd, Map<IJavaElement, Object> newElements) {
 		// remove existing children as the are replaced with the new children contained in newElements
 		Object existingInfo = this.cache.peekAtInfo(openedElement);
 		if (existingInfo != null && !forceAdd) {
-			// If forceAdd is false, then it could mean that the particular element 
-			// wasn't in cache at that point of time, but would have got added through 
+			// If forceAdd is false, then it could mean that the particular element
+			// wasn't in cache at that point of time, but would have got added through
 			// another thread. In that case, removing the children could remove it's own
-			// children. So, we should not remove the children but return the already existing 
+			// children. So, we should not remove the children but return the already existing
 			// info.
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=372687
 			return existingInfo;
@@ -3932,20 +4090,20 @@
 		// Subsequent resolution against package in the jar would fail as a result.
 		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=102422
 		// (theodora)
-		for(Iterator it = newElements.entrySet().iterator(); it.hasNext(); ) {
-			Map.Entry entry = (Map.Entry)it.next();
-			IJavaElement element = (IJavaElement)entry.getKey();
+		for(Iterator<Entry<IJavaElement, Object>> it = newElements.entrySet().iterator(); it.hasNext(); ) {
+			Entry<IJavaElement, Object> entry = it.next();
+			IJavaElement element = entry.getKey();
 			if (element instanceof JarPackageFragmentRoot) {
-				Object info = entry.getValue();
+				JavaElementInfo info = (JavaElementInfo) entry.getValue();
 				it.remove();
 				this.cache.putInfo(element, info);
 			}
 		}
 
-		Iterator iterator = newElements.entrySet().iterator();
+		Iterator<Entry<IJavaElement, Object>> iterator = newElements.entrySet().iterator();
 		while (iterator.hasNext()) {
-			Map.Entry entry = (Map.Entry) iterator.next();
-			this.cache.putInfo((IJavaElement) entry.getKey(), entry.getValue());
+			Entry<IJavaElement, Object> entry = iterator.next();
+			this.cache.putInfo(entry.getKey(), entry.getValue());
 		}
 		return newInfo;
 	}
@@ -3964,8 +4122,9 @@
 		}
 	}
 
-	/*
+	/**
 	 * Remember the info for the jar binary type
+	 * @param info instanceof IBinaryType or {@link JavaModelCache#NON_EXISTING_JAR_TYPE_INFO}
 	 */
 	protected synchronized void putJarTypeInfo(IJavaElement type, Object info) {
 		this.cache.jarTypeCache.put(type, info);
@@ -4033,18 +4192,23 @@
 			if (entries != JavaProject.INVALID_CLASSPATH) {
 				final IClasspathEntry[] containerEntries = entries;
 				IClasspathContainer container = new IClasspathContainer() {
+					@Override
 					public IClasspathEntry[] getClasspathEntries() {
 						return containerEntries;
 					}
+					@Override
 					public String getDescription() {
 						return "Persisted container ["+containerPath+" for project ["+ project.getElementName()+"]"; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
 					}
+					@Override
 					public int getKind() {
 						return 0;
 					}
+					@Override
 					public IPath getPath() {
 						return containerPath;
 					}
+					@Override
 					public String toString() {
 						return getDescription();
 					}
@@ -4053,9 +4217,9 @@
 				if (addToContainerValues) {
 					getJavaModelManager().containerPut(project, containerPath, container);
 				}
-				Map projectContainers = (Map)getJavaModelManager().previousSessionContainers.get(project);
+				Map<IPath, IClasspathContainer> projectContainers = getJavaModelManager().previousSessionContainers.get(project);
 				if (projectContainers == null){
-					projectContainers = new HashMap(1);
+					projectContainers = new HashMap<>(1);
 					getJavaModelManager().previousSessionContainers.put(project, projectContainers);
 				}
 				projectContainers.put(containerPath, container);
@@ -4111,7 +4275,7 @@
 	public void removePerProjectInfo(JavaProject javaProject, boolean removeExtJarInfo) {
 		synchronized(this.perProjectInfos) { // use the perProjectInfo collection as its own lock
 			IProject project = javaProject.getProject();
-			PerProjectInfo info= (PerProjectInfo) this.perProjectInfos.get(project);
+			PerProjectInfo info= this.perProjectInfos.get(project);
 			if (info != null) {
 				this.perProjectInfos.remove(project);
 				if (removeExtJarInfo) {
@@ -4128,7 +4292,7 @@
 	public void resetProjectOptions(JavaProject javaProject) {
 		synchronized(this.perProjectInfos) { // use the perProjectInfo collection as its own lock
 			IProject project = javaProject.getProject();
-			PerProjectInfo info= (PerProjectInfo) this.perProjectInfos.get(project);
+			PerProjectInfo info= this.perProjectInfos.get(project);
 			if (info != null) {
 				info.options = null;
 			}
@@ -4141,7 +4305,7 @@
 	public void resetProjectPreferences(JavaProject javaProject) {
 		synchronized(this.perProjectInfos) { // use the perProjectInfo collection as its own lock
 			IProject project = javaProject.getProject();
-			PerProjectInfo info= (PerProjectInfo) this.perProjectInfos.get(project);
+			PerProjectInfo info= this.perProjectInfos.get(project);
 			if (info != null) {
 				info.preferences = null;
 			}
@@ -4160,9 +4324,9 @@
 	protected synchronized void resetJarTypeCache() {
 		this.cache.resetJarTypeCache();
 	}
-	
+
 	public void resetClasspathListCache() {
-		if (this.nonChainingJars != null) 
+		if (this.nonChainingJars != null)
 			this.nonChainingJars.clear();
 		if (DEBUG_INVALID_ARCHIVES) {
 			synchronized(this.invalidArchivesMutex) {
@@ -4190,6 +4354,7 @@
 	/**
 	 * @see ISaveParticipant
 	 */
+	@Override
 	public void rollback(ISaveContext context){
 		// nothing to do
 	}
@@ -4256,12 +4421,12 @@
 		DataOutputStream out = null;
 		try {
 			out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
-			Set pathCache = getClasspathListCache(cacheName);
+			Set<IPath> pathCache = getClasspathListCache(cacheName);
 			synchronized (pathCache) {
 				out.writeInt(pathCache.size());
-				Iterator entries = pathCache.iterator();
+				Iterator<IPath> entries = pathCache.iterator();
 				while (entries.hasNext()) {
-					IPath path = (IPath) entries.next();
+					IPath path = entries.next();
 					out.writeUTF(path.toPortableString());
 				}
 			}
@@ -4278,7 +4443,7 @@
 			}
 		}
 	}
-	
+
 	private void saveVariablesAndContainers(ISaveContext context) throws CoreException {
 		File file = getVariableAndContainersFile();
 		DataOutputStream out = null;
@@ -4316,17 +4481,17 @@
 		void save(ISaveContext context) throws IOException, JavaModelException {
 			saveProjects(getJavaModel().getJavaProjects());
 			// remove variables that should not be saved
-			HashMap varsToSave = null;
-			Iterator iterator = JavaModelManager.this.variables.entrySet().iterator();
+			HashMap<String, IPath> varsToSave = null;
+			Iterator<Entry<String, IPath>> iterator = JavaModelManager.this.variables.entrySet().iterator();
 			IEclipsePreferences defaultPreferences = getDefaultPreferences();
 			while (iterator.hasNext()) {
-				Map.Entry entry = (Map.Entry) iterator.next();
-				String varName = (String) entry.getKey();
+				Entry<String, IPath> entry = iterator.next();
+				String varName = entry.getKey();
 				if (defaultPreferences.get(CP_VARIABLE_PREFERENCES_PREFIX + varName, null) != null // don't save classpath variables from the default preferences as there is no delta if they are removed
 						|| CP_ENTRY_IGNORE_PATH.equals(entry.getValue())) {
 
 					if (varsToSave == null)
-						varsToSave = new HashMap(JavaModelManager.this.variables);
+						varsToSave = new HashMap<>(JavaModelManager.this.variables);
 					varsToSave.remove(varName);
 				}
 			}
@@ -4388,14 +4553,14 @@
 			}
 		}
 
-		private void saveContainers(IJavaProject project, Map containerMap)
+		private void saveContainers(IJavaProject project, Map<IPath, IClasspathContainer> containerMap)
 				throws IOException {
 			saveInt(containerMap.size());
 
-			for (Iterator i = containerMap.entrySet().iterator(); i.hasNext();) {
-				Entry entry = (Entry) i.next();
-				IPath path = (IPath) entry.getKey();
-				IClasspathContainer container = (IClasspathContainer) entry.getValue();
+			for (Iterator<Entry<IPath, IClasspathContainer>> i = containerMap.entrySet().iterator(); i.hasNext();) {
+				Entry<IPath, IClasspathContainer> entry = i.next();
+				IPath path = entry.getKey();
+				IClasspathContainer container = entry.getValue();
 				IClasspathEntry[] cpEntries = null;
 
 				if (container == null) {
@@ -4463,14 +4628,14 @@
 
 				saveString(project.getElementName());
 
-				Map containerMap = (Map) JavaModelManager.this.containers.get(project);
+				Map<IPath, IClasspathContainer> containerMap = JavaModelManager.this.containers.get(project);
 
 				if (containerMap == null) {
 					containerMap = Collections.EMPTY_MAP;
 				} else {
 					// clone while iterating
 					// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59638)
-					containerMap = new HashMap(containerMap);
+					containerMap = new HashMap<>(containerMap);
 				}
 
 				saveContainers(project, containerMap);
@@ -4482,13 +4647,13 @@
 				this.out.writeUTF(string);
 		}
 
-		private void saveVariables(Map map) throws IOException {
+		private void saveVariables(Map<String, IPath> map) throws IOException {
 			saveInt(map.size());
 
-			for (Iterator i = map.entrySet().iterator(); i.hasNext();) {
-				Entry entry = (Entry) i.next();
-				String varName = (String) entry.getKey();
-				IPath varPath = (IPath) entry.getValue();
+			for (Iterator<Entry<String, IPath>> i = map.entrySet().iterator(); i.hasNext();) {
+				Entry<String, IPath> entry = i.next();
+				String varName = entry.getKey();
+				IPath varPath = entry.getValue();
 
 				saveString(varName);
 				savePath(varPath);
@@ -4509,6 +4674,7 @@
 	/**
 	 * @see ISaveParticipant
 	 */
+	@Override
 	public void saving(ISaveContext context) throws CoreException {
 
 	    long start = -1;
@@ -4517,7 +4683,7 @@
 
 		// save variable and container values on snapshot/full save
 		saveVariablesAndContainers(context);
-		
+
 		if (VERBOSE)
 			traceVariableAndContainers("Saved", start); //$NON-NLS-1$
 
@@ -4527,10 +4693,10 @@
 				saveClasspathListCache(NON_CHAINING_JARS_CACHE);
 				saveClasspathListCache(EXTERNAL_FILES_CACHE);
 				saveClasspathListCache(ASSUMED_EXTERNAL_FILES_CACHE);
-	
+
 				// will need delta since this save (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658)
 				context.needDelta();
-	
+
 				// clean up indexes on workspace full save
 				// (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=52347)
 				IndexManager manager = this.indexManager;
@@ -4556,19 +4722,19 @@
 			return;
 		}
 
-		ArrayList vStats= null; // lazy initialized
-		ArrayList values = null;
+		ArrayList<IStatus> vStats= null; // lazy initialized
+		ArrayList<PerProjectInfo> values = null;
 		synchronized(this.perProjectInfos) {
-			values = new ArrayList(this.perProjectInfos.values());
+			values = new ArrayList<>(this.perProjectInfos.values());
 		}
-		Iterator iterator = values.iterator();
+		Iterator<PerProjectInfo> iterator = values.iterator();
 		while (iterator.hasNext()) {
 			try {
-				PerProjectInfo info = (PerProjectInfo) iterator.next();
+				PerProjectInfo info = iterator.next();
 				saveState(info, context);
 			} catch (CoreException e) {
 				if (vStats == null)
-					vStats= new ArrayList();
+					vStats= new ArrayList<>();
 				vStats.add(e.getStatus());
 			}
 		}
@@ -4589,10 +4755,6 @@
 	 * Current secondary types cache is not modified as we want to wait that indexing
 	 * was finished before taking new secondary types into account.
 	 *
-	 * Indexing cache is a specific entry in secondary types cache which key is
-	 * {@link #INDEXED_SECONDARY_TYPES } and value a map with same structure than
-	 * secondary types cache itself.
-	 *
 	 * @see #secondaryTypes(IJavaProject, boolean, IProgressMonitor)
 	 */
 	public void secondaryTypeAdding(String path, char[] typeName, char[] packageName) {
@@ -4610,29 +4772,29 @@
 		}
 		IWorkspaceRoot wRoot = ResourcesPlugin.getWorkspace().getRoot();
 		IResource resource = wRoot.findMember(path);
-		if (resource != null) {
-			if (org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(path) && resource.getType() == IResource.FILE) {
+		if (resource instanceof IFile) {
+			if (org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(path)) {
 				IProject project = resource.getProject();
 				try {
 					PerProjectInfo projectInfo = getPerProjectInfoCheckExistence(project);
 					// Get or create map to cache secondary types while indexing (can be not synchronized as indexing insure a non-concurrent usage)
-					HashMap indexedSecondaryTypes = null;
+					Map<IFile, Map<String, Map<String, IType>>> indexedSecondaryTypes;
 					if (projectInfo.secondaryTypes == null) {
-						projectInfo.secondaryTypes = new Hashtable(3);
-						indexedSecondaryTypes = new HashMap(3);
-						projectInfo.secondaryTypes.put(INDEXED_SECONDARY_TYPES, indexedSecondaryTypes);
+						projectInfo.secondaryTypes = new Hashtable<>(3);
+						indexedSecondaryTypes = new HashMap<>(3);
+						projectInfo.indexingSecondaryCache = indexedSecondaryTypes;
 					} else {
-						indexedSecondaryTypes = (HashMap) projectInfo.secondaryTypes.get(INDEXED_SECONDARY_TYPES);
+						indexedSecondaryTypes = projectInfo.indexingSecondaryCache;
 						if (indexedSecondaryTypes == null) {
-							indexedSecondaryTypes = new HashMap(3);
-							projectInfo.secondaryTypes.put(INDEXED_SECONDARY_TYPES, indexedSecondaryTypes);
+							indexedSecondaryTypes = new HashMap<>(3);
+							projectInfo.indexingSecondaryCache = indexedSecondaryTypes;
 						}
 					}
 					// Store the secondary type in temporary cache (these are just handles => no problem to create it now...)
-					HashMap allTypes = (HashMap) indexedSecondaryTypes.get(resource);
+					Map<String, Map<String, IType>> allTypes = indexedSecondaryTypes.get(resource);
 					if (allTypes == null) {
-						allTypes = new HashMap(3);
-						indexedSecondaryTypes.put(resource, allTypes);
+						allTypes = new HashMap<>(3);
+						indexedSecondaryTypes.put((IFile) resource, allTypes);
 					}
 					ICompilationUnit unit = JavaModelManager.createCompilationUnitFrom((IFile)resource, null);
 					if (unit != null) {
@@ -4642,19 +4804,19 @@
 						// use package fragment name instead of parameter as it may be invalid...
 						// see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=186781
 						String packageString = type.getPackageFragment().getElementName();
-						HashMap packageTypes = (HashMap) allTypes.get(packageString);
+						Map<String, IType> packageTypes = allTypes.get(packageString);
 						if (packageTypes == null) {
-							packageTypes = new HashMap(3);
+							packageTypes = new HashMap<>(3);
 							allTypes.put(packageString, packageTypes);
 						}
 						packageTypes.put(typeString, type);
 					}
 					if (VERBOSE) {
 						Util.verbose("	- indexing cache:"); //$NON-NLS-1$
-						Iterator entries = indexedSecondaryTypes.entrySet().iterator();
+						Iterator<Entry<IFile, Map<String, Map<String, IType>>>> entries = indexedSecondaryTypes.entrySet().iterator();
 						while (entries.hasNext()) {
-							Map.Entry entry = (Map.Entry) entries.next();
-							IFile file = (IFile) entry.getKey();
+							Entry<IFile, Map<String, Map<String, IType>>> entry = entries.next();
+							IFile file = entry.getKey();
 							Util.verbose("		+ "+file.getFullPath()+':'+ entry.getValue()); //$NON-NLS-1$
 						}
 					}
@@ -4680,17 +4842,14 @@
 	 * </ul>
 	 * Hashtable was used to protect callers from possible concurrent access.
 	 * </p>
-	 * Note that this map may have a specific entry which key is {@link #INDEXED_SECONDARY_TYPES }
-	 * and value is a map containing all secondary types created during indexing.
-	 * When this key is in cache and indexing is finished, returned map is merged
-	 * with the value of this special key. If indexing is not finished and caller does
+	 * Note, if indexing is not finished and caller does
 	 * not wait for the end of indexing, returned map is the current secondary
 	 * types cache content which may be invalid...
 	 *
 	 * @param project Project we want get secondary types from
 	 * @return HashMap Table of secondary type names->path for given project
 	 */
-	public Map secondaryTypes(IJavaProject project, boolean waitForIndexes, IProgressMonitor monitor) throws JavaModelException {
+	public Map<String, Map<String, IType>> secondaryTypes(IJavaProject project, boolean waitForIndexes, IProgressMonitor monitor) throws JavaModelException {
 		if (VERBOSE) {
 			StringBuffer buffer = new StringBuffer("JavaModelManager.secondaryTypes("); //$NON-NLS-1$
 			buffer.append(project.getElementName());
@@ -4702,7 +4861,7 @@
 
 		// Return cache if not empty and there's no new secondary types created during indexing
 		final PerProjectInfo projectInfo = getPerProjectInfoCheckExistence(project.getProject());
-		Map indexingSecondaryCache = projectInfo.secondaryTypes == null ? null : (Map) projectInfo.secondaryTypes.get(INDEXED_SECONDARY_TYPES);
+		Map<IFile, Map<String, Map<String, IType>>> indexingSecondaryCache = projectInfo.secondaryTypes == null ? null : projectInfo.indexingSecondaryCache;
 		if (projectInfo.secondaryTypes != null && indexingSecondaryCache == null) {
 			return projectInfo.secondaryTypes;
 		}
@@ -4748,7 +4907,7 @@
 					public String getJobFamily() {
 						return ""; //$NON-NLS-1$
 					}
-				
+
 				}, IJob.WaitUntilReady, monitor);
 			} catch (OperationCanceledException oce) {
 				return projectInfo.secondaryTypes;
@@ -4756,55 +4915,57 @@
 		}
 
 		// Indexing is finished => merge caches and return result
-		return secondaryTypesMerging(projectInfo.secondaryTypes);
+		return secondaryTypesMerging(projectInfo);
 	}
 
 	/*
 	 * Return secondary types cache merged with new secondary types created while indexing
 	 * Note that merge result is directly stored in given parameter map.
 	 */
-	private Hashtable secondaryTypesMerging(Hashtable secondaryTypes) {
+	private Map<String, Map<String, IType>> secondaryTypesMerging(PerProjectInfo projectInfo) {
+		Map<String, Map<String, IType>> secondaryTypes = projectInfo.secondaryTypes;
 		if (VERBOSE) {
 			Util.verbose("JavaModelManager.getSecondaryTypesMerged()"); //$NON-NLS-1$
 			Util.verbose("	- current cache to merge:"); //$NON-NLS-1$
-			Iterator entries = secondaryTypes.entrySet().iterator();
+			Iterator<Entry<String, Map<String, IType>>> entries = secondaryTypes.entrySet().iterator();
 			while (entries.hasNext()) {
-				Map.Entry entry = (Map.Entry) entries.next();
-				String packName = (String) entry.getKey();
+				Entry<String, Map<String, IType>> entry = entries.next();
+				String packName = entry.getKey();
 				Util.verbose("		+ "+packName+':'+ entry.getValue() ); //$NON-NLS-1$
 			}
 		}
 
 		// Return current cache if there's no indexing cache (double check, this should not happen)
-		HashMap indexedSecondaryTypes = (HashMap) secondaryTypes.remove(INDEXED_SECONDARY_TYPES);
+		Map<IFile, Map<String, Map<String, IType>>> indexedSecondaryTypes = projectInfo.indexingSecondaryCache;
+		projectInfo.indexingSecondaryCache = null;
 		if (indexedSecondaryTypes == null) {
 			return secondaryTypes;
 		}
 
 		// Merge indexing cache in secondary types one
-		Iterator entries = indexedSecondaryTypes.entrySet().iterator();
+		Iterator<Entry<IFile, Map<String, Map<String, IType>>>> entries = indexedSecondaryTypes.entrySet().iterator();
 		while (entries.hasNext()) {
-			Map.Entry entry = (Map.Entry) entries.next();
-			IFile file = (IFile) entry.getKey();
+			Entry<IFile, Map<String, Map<String, IType>>> entry = entries.next();
+			IFile file = entry.getKey();
 
 			// Remove all secondary types of indexed file from cache
 			secondaryTypesRemoving(secondaryTypes, file);
 
 			// Add all indexing file secondary types in given secondary types cache
-			HashMap fileSecondaryTypes = (HashMap) entry.getValue();
-			Iterator entries2 = fileSecondaryTypes.entrySet().iterator();
+			Map<String, Map<String, IType>> fileSecondaryTypes = entry.getValue();
+			Iterator<Entry<String, Map<String, IType>>> entries2 = fileSecondaryTypes.entrySet().iterator();
 			while (entries2.hasNext()) {
-				Map.Entry entry2 = (Map.Entry) entries2.next();
-				String packageName = (String) entry2.getKey();
-				HashMap cachedTypes = (HashMap) secondaryTypes.get(packageName);
+				Entry<String, Map<String, IType>> entry2 = entries2.next();
+				String packageName = entry2.getKey();
+				Map<String, IType> cachedTypes = secondaryTypes.get(packageName);
 				if (cachedTypes == null) {
 					secondaryTypes.put(packageName, entry2.getValue());
 				} else {
-					HashMap types = (HashMap) entry2.getValue();
-					Iterator entries3 = types.entrySet().iterator();
+					Map<String, IType> types = entry2.getValue();
+					Iterator<Entry<String, IType>> entries3 = types.entrySet().iterator();
 					while (entries3.hasNext()) {
-						Map.Entry entry3 = (Map.Entry) entries3.next();
-						String typeName = (String) entry3.getKey();
+						Entry<String, IType> entry3 = entries3.next();
+						String typeName = entry3.getKey();
 						cachedTypes.put(typeName, entry3.getValue());
 					}
 				}
@@ -4812,10 +4973,10 @@
 		}
 		if (VERBOSE) {
 			Util.verbose("	- secondary types cache merged:"); //$NON-NLS-1$
-			entries = secondaryTypes.entrySet().iterator();
+			Iterator<Entry<String, Map<String, IType>>> entries2 = secondaryTypes.entrySet().iterator();
 			while (entries.hasNext()) {
-				Map.Entry entry = (Map.Entry) entries.next();
-				String packName = (String) entry.getKey();
+				Entry<String, Map<String, IType>> entry = entries2.next();
+				String packName = entry.getKey();
 				Util.verbose("		+ "+packName+':'+ entry.getValue()); //$NON-NLS-1$
 			}
 		}
@@ -4826,7 +4987,7 @@
 	 * Perform search request to get all secondary types of a given project.
 	 * If not waiting for indexes and indexing is running, will return types found in current built indexes...
 	 */
-	private Map secondaryTypesSearching(IJavaProject project, boolean waitForIndexes, IProgressMonitor monitor, final PerProjectInfo projectInfo) throws JavaModelException {
+	private static Map<String, Map<String, IType>> secondaryTypesSearching(IJavaProject project, boolean waitForIndexes, IProgressMonitor monitor, final PerProjectInfo projectInfo) throws JavaModelException {
 		if (VERBOSE || BasicSearchEngine.VERBOSE) {
 			StringBuffer buffer = new StringBuffer("JavaModelManager.secondaryTypesSearch("); //$NON-NLS-1$
 			buffer.append(project.getElementName());
@@ -4836,14 +4997,15 @@
 			Util.verbose(buffer.toString());
 		}
 
-		final Hashtable secondaryTypes = new Hashtable(3);
+		final Hashtable<String, Map<String, String>> secondaryTypesSearch = new Hashtable<>(3);
 		IRestrictedAccessTypeRequestor nameRequestor = new IRestrictedAccessTypeRequestor() {
+			@Override
 			public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 				String key = packageName==null ? "" : new String(packageName); //$NON-NLS-1$
-				HashMap types = (HashMap) secondaryTypes.get(key);
-				if (types == null) types = new HashMap(3);
+				Map<String, String> types = secondaryTypesSearch.get(key);
+				if (types == null) types = new HashMap<>(3);
 				types.put(new String(simpleTypeName), path);
-				secondaryTypes.put(key, types);
+				secondaryTypesSearch.put(key, types);
 			}
 		};
 
@@ -4864,16 +5026,14 @@
 		new BasicSearchEngine().searchAllSecondaryTypeNames(allSourceFolders, nameRequestor, waitForIndexes, monitor);
 
 		// Build types from paths
-		Iterator packages = secondaryTypes.values().iterator();
-		while (packages.hasNext()) {
-			HashMap types = (HashMap) packages.next();
-			HashMap tempTypes = new HashMap(types.size());
-			Iterator names = types.entrySet().iterator();
-			while (names.hasNext()) {
-				Map.Entry entry = (Map.Entry) names.next();
-				String typeName = (String) entry.getKey();
-				String path = (String) entry.getValue();
-				names.remove();
+		final Hashtable<String, Map<String, IType>> secondaryTypes = new Hashtable<>(secondaryTypesSearch.size());
+		for (Entry<String, Map<String, String>> packageEntry : secondaryTypesSearch.entrySet()) {
+			String packageName = packageEntry.getKey();
+			Map<String, String> types = packageEntry.getValue();
+			Map<String, IType> tempTypes = new HashMap<>(types.size());
+			for (Entry<String, String> entry : types.entrySet()) {
+				String typeName = entry.getKey();
+				String path = entry.getValue();
 				if (org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(path)) {
 					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(path));
 					ICompilationUnit unit = JavaModelManager.createCompilationUnitFrom(file, null);
@@ -4881,19 +5041,19 @@
 					tempTypes.put(typeName, type);
 				}
 			}
-			types.putAll(tempTypes);
+			secondaryTypes.put(packageName, tempTypes);
 		}
 
 		// Store result in per project info cache if still null or there's still an indexing cache (may have been set by another thread...)
-		if (projectInfo.secondaryTypes == null || projectInfo.secondaryTypes.get(INDEXED_SECONDARY_TYPES) != null) {
+		if (projectInfo.secondaryTypes == null || projectInfo.indexingSecondaryCache != null) {
 			projectInfo.secondaryTypes = secondaryTypes;
 			if (VERBOSE || BasicSearchEngine.VERBOSE) {
 				System.out.print(Thread.currentThread() + "	-> secondary paths stored in cache: ");  //$NON-NLS-1$
 				System.out.println();
-				Iterator entries = secondaryTypes.entrySet().iterator();
+				Iterator<Entry<String, Map<String, IType>>> entries = secondaryTypes.entrySet().iterator();
 				while (entries.hasNext()) {
-					Map.Entry entry = (Map.Entry) entries.next();
-					String qualifiedName = (String) entry.getKey();
+					Entry<String, Map<String, IType>> entry = entries.next();
+					String qualifiedName = entry.getKey();
 					Util.verbose("		- "+qualifiedName+'-'+ entry.getValue()); //$NON-NLS-1$
 				}
 			}
@@ -4927,22 +5087,22 @@
 				secondaryTypesRemoving(projectInfo.secondaryTypes, file);
 
 				// Clean indexing cache if necessary
-				HashMap indexingCache = (HashMap) projectInfo.secondaryTypes.get(INDEXED_SECONDARY_TYPES);
+				Map<IFile, Map<String, Map<String, IType>>> indexingCache = projectInfo.indexingSecondaryCache;
 				if (!cleanIndexCache) {
 					if (indexingCache == null) {
 						// Need to signify that secondary types indexing will happen before any request happens
 						// see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=152841
-						projectInfo.secondaryTypes.put(INDEXED_SECONDARY_TYPES, new HashMap());
+						projectInfo.indexingSecondaryCache = new HashMap<>();
 					}
 					return;
 				}
 				if (indexingCache != null) {
-					Set keys = indexingCache.keySet();
+					Set<IFile> keys = indexingCache.keySet();
 					int filesSize = keys.size(), filesCount = 0;
 					IFile[] removed = null;
-					Iterator cachedFiles = keys.iterator();
+					Iterator<IFile> cachedFiles = keys.iterator();
 					while (cachedFiles.hasNext()) {
-						IFile cachedFile = (IFile) cachedFiles.next();
+						IFile cachedFile = cachedFiles.next();
 						if (file.equals(cachedFile)) {
 							if (removed == null) removed = new IFile[filesSize];
 							filesSize--;
@@ -4963,13 +5123,13 @@
 	 * Remove from a given cache map all secondary types belonging to a given file.
 	 * Note that there can have several secondary types per file...
 	 */
-	private void secondaryTypesRemoving(Hashtable secondaryTypesMap, IFile file) {
+	private void secondaryTypesRemoving(Map<String, Map<String, IType>> secondaryTypesMap, IFile file) {
 		if (VERBOSE) {
 			StringBuffer buffer = new StringBuffer("JavaModelManager.removeSecondaryTypesFromMap("); //$NON-NLS-1$
-			Iterator entries = secondaryTypesMap.entrySet().iterator();
+			Iterator<Entry<String, Map<String, IType>>> entries = secondaryTypesMap.entrySet().iterator();
 			while (entries.hasNext()) {
-				Map.Entry entry = (Map.Entry) entries.next();
-				String qualifiedName = (String) entry.getKey();
+				Entry<String, Map<String, IType>> entry = entries.next();
+				String qualifiedName = entry.getKey();
 				buffer.append(qualifiedName+':'+ entry.getValue());
 			}
 			buffer.append(',');
@@ -4977,39 +5137,37 @@
 			buffer.append(')');
 			Util.verbose(buffer.toString());
 		}
-		Set packageEntries = secondaryTypesMap.entrySet();
+		Set<Entry<String, Map<String, IType>>> packageEntries = secondaryTypesMap.entrySet();
 		int packagesSize = packageEntries.size(), removedPackagesCount = 0;
 		String[] removedPackages = null;
-		Iterator packages = packageEntries.iterator();
+		Iterator<Entry<String, Map<String, IType>>> packages = packageEntries.iterator();
 		while (packages.hasNext()) {
-			Map.Entry entry = (Map.Entry) packages.next();
-			String packName = (String) entry.getKey();
-			if (packName != INDEXED_SECONDARY_TYPES) { // skip indexing cache entry if present (!= is intentional)
-				HashMap types = (HashMap) entry.getValue();
-				Set nameEntries = types.entrySet();
-				int namesSize = nameEntries.size(), removedNamesCount = 0;
-				String[] removedNames = null;
-				Iterator names = nameEntries.iterator();
-				while (names.hasNext()) {
-					Map.Entry entry2 = (Map.Entry) names.next();
-					String typeName = (String) entry2.getKey();
-					JavaElement type = (JavaElement) entry2.getValue();
-					if (file.equals(type.resource())) {
-						if (removedNames == null) removedNames = new String[namesSize];
-						namesSize--;
-						removedNames[removedNamesCount++] = typeName;
-					}
+			Entry<String, Map<String, IType>> entry = packages.next();
+			String packName = entry.getKey();
+			Map<String, IType> types = entry.getValue();
+			Set<Entry<String, IType>> nameEntries = types.entrySet();
+			int namesSize = nameEntries.size(), removedNamesCount = 0;
+			String[] removedNames = null;
+			Iterator<Entry<String, IType>> names = nameEntries.iterator();
+			while (names.hasNext()) {
+				Entry<String, IType> entry2 = names.next();
+				String typeName = entry2.getKey();
+				JavaElement type = (JavaElement) entry2.getValue();
+				if (file.equals(type.resource())) {
+					if (removedNames == null) removedNames = new String[namesSize];
+					namesSize--;
+					removedNames[removedNamesCount++] = typeName;
 				}
-				if (removedNames != null) {
-					for (int i=0; i<removedNamesCount; i++) {
-						types.remove(removedNames[i]);
-					}
+			}
+			if (removedNames != null) {
+				for (int i=0; i<removedNamesCount; i++) {
+					types.remove(removedNames[i]);
 				}
-				if (types.size() == 0) {
-					if (removedPackages == null) removedPackages = new String[packagesSize];
-					packagesSize--;
-					removedPackages[removedPackagesCount++] = packName;
-				}
+			}
+			if (types.size() == 0) {
+				if (removedPackages == null) removedPackages = new String[packagesSize];
+				packagesSize--;
+				removedPackages[removedPackagesCount++] = packName;
 			}
 		}
 		if (removedPackages != null) {
@@ -5019,10 +5177,10 @@
 		}
 		if (VERBOSE) {
 			Util.verbose("	- new secondary types map:"); //$NON-NLS-1$
-			Iterator entries = secondaryTypesMap.entrySet().iterator();
+			Iterator<Entry<String, Map<String, IType>>> entries = secondaryTypesMap.entrySet().iterator();
 			while (entries.hasNext()) {
-				Map.Entry entry = (Map.Entry) entries.next();
-				String qualifiedName = (String) entry.getKey();
+				Entry<String, Map<String, IType>> entry = entries.next();
+				String qualifiedName = entry.getKey();
 				Util.verbose("		+ "+qualifiedName+':'+ entry.getValue()); //$NON-NLS-1$
 			}
 		}
@@ -5050,7 +5208,7 @@
 		} else {
 			// remove projects which are already mentionned in java builder order
 			int javaCount = javaBuildOrder.length;
-			HashMap newSet = new HashMap(javaCount); // create a set for fast check
+			HashMap<String, String> newSet = new HashMap<>(javaCount); // create a set for fast check
 			for (int i = 0; i < javaCount; i++){
 				newSet.put(javaBuildOrder[i], javaBuildOrder[i]);
 			}
@@ -5115,10 +5273,10 @@
 	 * @return <code>true</code> if the preferences have been changed,
 	 * 	<code>false</code> otherwise.
 	 */
-	public boolean storePreference(String optionName, String optionValue, IEclipsePreferences eclipsePreferences, Map otherOptions) {
+	public boolean storePreference(String optionName, String optionValue, IEclipsePreferences eclipsePreferences, Map<String, String> otherOptions) {
 		int optionLevel = this.getOptionLevel(optionName);
 		if (optionLevel == UNKNOWN_OPTION) return false; // unrecognized option
-		
+
 		// Store option value
 		switch (optionLevel) {
 			case JavaModelManager.VALID_OPTION:
@@ -5131,7 +5289,7 @@
 			case JavaModelManager.DEPRECATED_OPTION:
 				// Try to migrate deprecated option
 				eclipsePreferences.remove(optionName); // get rid off old preference
-				String[] compatibleOptions = (String[]) this.deprecatedOptions.get(optionName);
+				String[] compatibleOptions = this.deprecatedOptions.get(optionName);
 				for (int co=0, length=compatibleOptions.length; co < length; co++) {
 					if (otherOptions != null && otherOptions.containsKey(compatibleOptions[co]))
 						continue; // don't overwrite explicit value of otherOptions at compatibleOptions[co]
@@ -5148,8 +5306,8 @@
 		return true;
 	}
 
-	public void setOptions(Hashtable newOptions) {
-		Hashtable cachedValue = newOptions == null ? null : new Hashtable(newOptions);
+	public void setOptions(Hashtable<String, String> newOptions) {
+		Hashtable<String, String> cachedValue = newOptions == null ? null : new Hashtable<>(newOptions);
 		IEclipsePreferences defaultPreferences = getDefaultPreferences();
 		IEclipsePreferences instancePreferences = getInstancePreferences();
 
@@ -5160,9 +5318,9 @@
 				// ignore
 			}
 		} else {
-			Enumeration keys = newOptions.keys();
+			Enumeration<String> keys = newOptions.keys();
 			while (keys.hasMoreElements()){
-				String key = (String)keys.nextElement();
+				String key = keys.nextElement();
 				int optionLevel = getOptionLevel(key);
 				if (optionLevel == UNKNOWN_OPTION) continue; // unrecognized option
 				if (key.equals(JavaCore.CORE_ENCODING)) {
@@ -5171,7 +5329,7 @@
 					}
 					continue; // skipped, contributed by resource prefs
 				}
-				String value = (String) newOptions.get(key);
+				String value = newOptions.get(key);
 				String defaultValue = defaultPreferences.get(key, null);
 				// Store value in preferences
 				if (defaultValue != null && defaultValue.equals(value)) {
@@ -5204,14 +5362,16 @@
 
 			// Listen to preference changes
 			this.propertyListener = new IEclipsePreferences.IPreferenceChangeListener() {
+				@Override
 				public void preferenceChange(PreferenceChangeEvent event) {
 					JavaModelManager.this.optionsCache = null;
 				}
 			};
 			InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID).addPreferenceChangeListener(this.propertyListener);
-			
+
 			// listen for encoding changes (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=255501 )
 			this.resourcesPropertyListener = new IEclipsePreferences.IPreferenceChangeListener() {
+				@Override
 				public void preferenceChange(PreferenceChangeEvent event) {
 					if (ResourcesPlugin.PREF_ENCODING.equals(event.getKey())) {
 						JavaModelManager.this.optionsCache = null;
@@ -5255,12 +5415,14 @@
 			// process deltas since last activated in indexer thread so that indexes are up-to-date.
 			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=38658
 			Job processSavedState = new Job(Messages.savedState_jobName) {
+				@Override
 				protected IStatus run(IProgressMonitor monitor) {
 					try {
 						// add save participant and process delta atomically
 						// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59937
 						workspace.run(
 							new IWorkspaceRunnable() {
+								@Override
 								public void run(IProgressMonitor progress) throws CoreException {
 									ISavedState savedState = workspace.addSaveParticipant(JavaCore.PLUGIN_ID, JavaModelManager.this);
 									if (savedState != null) {
@@ -5282,7 +5444,11 @@
 			processSavedState.setPriority(Job.SHORT); // process asap
 			processSavedState.schedule();
 		} catch (RuntimeException e) {
-			shutdown();
+			try {
+				shutdown();
+			} catch (RuntimeException e2) {
+				e.addSuppressed(e2);
+			}
 			throw e;
 		}
 	}
@@ -5309,7 +5475,10 @@
 		ExternalAnnotationTracker.shutdown(workspace);
 
 		// Stop listening to content-type changes
-		Platform.getContentTypeManager().removeContentTypeChangeListener(this);
+		IContentTypeManager contentTypeManager = Platform.getContentTypeManager();
+		if (contentTypeManager != null) {
+			contentTypeManager.removeContentTypeChangeListener(this);
+		}
 
 		// Stop indexing
 		if (this.indexManager != null) {
@@ -5338,15 +5507,15 @@
 
 	public synchronized IPath variableGet(String variableName){
 		// check initialization in progress first
-		HashSet initializations = variableInitializationInProgress();
+		Set<String> initializations = variableInitializationInProgress();
 		if (initializations.contains(variableName)) {
 			return VARIABLE_INITIALIZATION_IN_PROGRESS;
 		}
-		return (IPath)this.variables.get(variableName);
+		return this.variables.get(variableName);
 	}
 
 	private synchronized IPath variableGetDefaultToPreviousSession(String variableName){
-		IPath variablePath = (IPath)this.variables.get(variableName);
+		IPath variablePath = this.variables.get(variableName);
 		if (variablePath == null)
 			return getPreviousSessionVariable(variableName);
 		return variablePath;
@@ -5355,10 +5524,10 @@
 	/*
 	 * Returns the set of variable names that are being initialized in the current thread.
 	 */
-	private HashSet variableInitializationInProgress() {
-		HashSet initializations = (HashSet)this.variableInitializationInProgress.get();
+	private Set<String> variableInitializationInProgress() {
+		Set<String> initializations = this.variableInitializationInProgress.get();
 		if (initializations == null) {
-			initializations = new HashSet();
+			initializations = new HashSet<>();
 			this.variableInitializationInProgress.set(initializations);
 		}
 		return initializations;
@@ -5367,10 +5536,10 @@
 	public synchronized String[] variableNames(){
 		int length = this.variables.size();
 		String[] result = new String[length];
-		Iterator vars = this.variables.keySet().iterator();
+		Iterator<String> vars = this.variables.keySet().iterator();
 		int index = 0;
 		while (vars.hasNext()) {
-			result[index++] = (String) vars.next();
+			result[index++] = vars.next();
 		}
 		return result;
 	}
@@ -5378,7 +5547,7 @@
 	public synchronized void variablePut(String variableName, IPath variablePath){
 
 		// set/unset the initialization in progress
-		HashSet initializations = variableInitializationInProgress();
+		Set<String> initializations = variableInitializationInProgress();
 		if (variablePath == VARIABLE_INITIALIZATION_IN_PROGRESS) {
 			initializations.add(variableName);
 
@@ -5434,6 +5603,7 @@
 		return true;
 	}
 
+	@Override
 	public void contentTypeChanged(ContentTypeChangeEvent event) {
 		Util.resetJavaLikeExtensions();
 
@@ -5456,12 +5626,31 @@
 	public synchronized String cacheToString(String prefix) {
 		return this.cache.toStringFillingRation(prefix);
 	}
-	
-	public Stats debugNewOpenableCacheStats() {
+
+	public ElementCache<ITypeRoot>.Stats debugNewOpenableCacheStats() {
 		return this.cache.openableCache.new Stats();
 	}
-	
+
 	public int getOpenableCacheSize() {
 		return this.cache.openableCache.getSpaceLimit();
 	}
+
+	/**
+	 * Get a cached access rule, or when the cache did not contain the rule, creates a new one.
+	 *
+	 * @param filePattern the file pattern this access rule should match
+	 * @param kind one of {@link IAccessRule#K_ACCESSIBLE}, {@link IAccessRule#K_DISCOURAGED},
+	 *                     or {@link IAccessRule#K_NON_ACCESSIBLE}, optionally combined with
+	 *                     {@link IAccessRule#IGNORE_IF_BETTER}
+	 * @return an access rule
+	 */
+	public IAccessRule getAccessRule(IPath filePattern, int kind) {
+		IAccessRule rule = new ClasspathAccessRule(filePattern, kind);
+		IAccessRule cachedRule = this.cache.accessRuleCache.get(rule);
+		if (cachedRule != null) {
+			return cachedRule;
+		}
+		this.cache.accessRuleCache.put(rule, rule);
+		return rule;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.java
index 7b965b3..be0844f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelOperation.java
@@ -13,6 +13,7 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Map;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
@@ -169,7 +170,7 @@
 	 * Registers the given reconcile delta with the Java Model Manager.
 	 */
 	protected void addReconcileDelta(ICompilationUnit workingCopy, IJavaElementDelta delta) {
-		HashMap reconcileDeltas = JavaModelManager.getJavaModelManager().getDeltaProcessor().reconcileDeltas;
+		Map<ICompilationUnit, IJavaElementDelta> reconcileDeltas = JavaModelManager.getJavaModelManager().getDeltaProcessor().reconcileDeltas;
 		JavaElementDelta previousDelta = (JavaElementDelta)reconcileDeltas.get(workingCopy);
 		if (previousDelta != null) {
 			IJavaElementDelta[] children = delta.getAffectedChildren();
@@ -204,6 +205,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void beginTask(String name, int totalWork) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.beginTask(name, totalWork);
@@ -318,6 +320,9 @@
 						forceFlag ? IResource.FORCE | IResource.KEEP_HISTORY : IResource.KEEP_HISTORY,
 						getSubProgressMonitor(1));
 					setAttribute(HAS_MODIFIED_RESOURCE_ATTR, TRUE);
+				} else {
+					// we didn't delete the package, so its parent packages cannot be empty
+					break;
 				}
 			}
 		} catch (CoreException e) {
@@ -355,6 +360,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void done() {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.done();
@@ -525,6 +531,7 @@
 	public boolean hasModifiedResource() {
 		return !isReadOnly() && getAttribute(HAS_MODIFIED_RESOURCE_ATTR) == TRUE;
 	}
+	@Override
 	public void internalWorked(double work) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.internalWorked(work);
@@ -533,6 +540,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public boolean isCanceled() {
 		if (this.progressMonitor != null) {
 			return this.progressMonitor.isCanceled();
@@ -705,6 +713,7 @@
 	 * @see IWorkspaceRunnable
 	 * @exception CoreException if the operation fails
 	 */
+	@Override
 	public void run(IProgressMonitor monitor) throws CoreException {
 		SubMonitor oldMonitor = this.progressMonitor;
 		try {
@@ -720,7 +729,7 @@
 						// noop if aready initialized
 						JavaModelManager.getDeltaState().initializeRoots(false/*not initiAfterLoad*/);
 					}
-	
+
 					executeOperation();
 				} finally {
 					if (isTopLevelOperation()) {
@@ -731,12 +740,12 @@
 				try {
 					// reacquire delta processor as it can have been reset during executeOperation()
 					deltaProcessor = manager.getDeltaProcessor();
-	
+
 					// update JavaModel using deltas that were recorded during this operation
 					for (int i = previousDeltaCount, size = deltaProcessor.javaModelDeltas.size(); i < size; i++) {
-						deltaProcessor.updateJavaModel((IJavaElementDelta)deltaProcessor.javaModelDeltas.get(i));
+						deltaProcessor.updateJavaModel(deltaProcessor.javaModelDeltas.get(i));
 					}
-	
+
 					// close the parents of the created elements and reset their project's cache (in case we are in an
 					// IWorkspaceRunnable and the clients wants to use the created element's parent)
 					// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=83646
@@ -754,7 +763,7 @@
 						}
 					}
 					deltaProcessor.resetProjectCaches();
-	
+
 					// fire only iff:
 					// - the operation is a top level operation
 					// - the operation did produce some delta(s)
@@ -833,6 +842,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void setCanceled(boolean b) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.setCanceled(b);
@@ -848,6 +858,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void setTaskName(String name) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.setTaskName(name);
@@ -856,6 +867,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void subTask(String name) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.subTask(name);
@@ -878,6 +890,7 @@
 	/**
 	 * @see IProgressMonitor
 	 */
+	@Override
 	public void worked(int work) {
 		if (this.progressMonitor != null) {
 			this.progressMonitor.worked(work);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.java
index fa0ac87..b5b416c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaModelStatus.java
@@ -171,18 +171,21 @@
 	/**
 	 * @see IStatus
 	 */
+	@Override
 	public IStatus[] getChildren() {
 		return this.children;
 	}
 	/**
 	 * @see IJavaModelStatus
 	 */
+	@Override
 	public IJavaElement[] getElements() {
 		return this.elements;
 	}
 	/**
 	 * Returns the message that is relevant to the code of this status.
 	 */
+	@Override
 	public String getMessage() {
 		Throwable exception = getException();
 		if (exception == null) {
@@ -394,6 +397,22 @@
 				case DEPRECATED_VARIABLE :
 					javaProject = (IJavaProject)this.elements[0];
 					return Messages.bind(Messages.classpath_deprecated_variable, new String[] {this.path.segment(0).toString(), javaProject.getElementName(), this.string});
+				case TEST_SOURCE_REQUIRES_SEPARATE_OUTPUT_LOCATION:
+					javaProject = (IJavaProject)this.elements[0];
+					projectName = javaProject.getElementName();
+					newPath = this.path;
+					if (this.path.segment(0).toString().equals(projectName)) {
+						newPath = this.path.removeFirstSegments(1);
+					}
+					return Messages.bind(Messages.classpath_testSourceRequiresSeparateOutputFolder, new String[] {newPath.makeRelative().toString(), projectName});
+				case TEST_OUTPUT_FOLDER_MUST_BE_SEPARATE_FROM_MAIN_OUTPUT_FOLDERS:
+					javaProject = (IJavaProject)this.elements[0];
+					projectName = javaProject.getElementName();
+					newPath = this.path;
+					if (this.path.segment(0).toString().equals(projectName)) {
+						newPath = this.path.removeFirstSegments(1);
+					}
+					return Messages.bind(Messages.classpath_testOutputFolderMustBeSeparateFromMainOutputFolders, new String[] {newPath.makeRelative().toString(), projectName});
 			}
 			if (this.string != null) {
 				return this.string;
@@ -412,12 +431,14 @@
 	/**
 	 * @see IJavaModelStatus#getPath()
 	 */
+	@Override
 	public IPath getPath() {
 		return this.path;
 	}
 	/**
 	 * @see IStatus#getSeverity()
 	 */
+	@Override
 	public int getSeverity() {
 		if (this.children == NO_CHILDREN) return super.getSeverity();
 		int severity = -1;
@@ -433,12 +454,14 @@
 	 * @see IJavaModelStatus#getString()
 	 * @deprecated
 	 */
+	@Override
 	public String getString() {
 		return this.string;
 	}
 	/**
 	 * @see IJavaModelStatus#isDoesNotExist()
 	 */
+	@Override
 	public boolean isDoesNotExist() {
 		int code = getCode();
 		return code == ELEMENT_DOES_NOT_EXIST || code == ELEMENT_NOT_ON_CLASSPATH;
@@ -446,18 +469,21 @@
 	/**
 	 * @see IStatus#isMultiStatus()
 	 */
+	@Override
 	public boolean isMultiStatus() {
 		return this.children != NO_CHILDREN;
 	}
 	/**
 	 * @see IStatus#isOK()
 	 */
+	@Override
 	public boolean isOK() {
 		return getCode() == OK;
 	}
 	/**
 	 * @see IStatus#matches(int)
 	 */
+	@Override
 	public boolean matches(int mask) {
 		if (! isMultiStatus()) {
 			return matches(this, mask);
@@ -493,6 +519,7 @@
 	 * Returns a printable representation of this exception for debugging
 	 * purposes.
 	 */
+	@Override
 	public String toString() {
 		if (this == VERIFIED_OK){
 			return "JavaModelStatus[OK]"; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.java
index c9df148..8efd8c1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProject.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,7 +15,10 @@
 
 import java.io.*;
 import java.net.URI;
+import java.nio.file.FileVisitResult;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
@@ -23,6 +26,10 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.jar.Manifest;
+import java.util.stream.Collectors;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -46,6 +53,7 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.content.IContentDescription;
 import org.eclipse.core.runtime.preferences.IEclipsePreferences;
 import org.eclipse.core.runtime.preferences.IScopeContext;
@@ -58,6 +66,7 @@
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatus;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IRegion;
@@ -69,6 +78,14 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AutomaticModuleNaming;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.ObjectVector;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
@@ -367,7 +384,6 @@
 	 * @throws JavaModelException
 	 */
 	public static void validateCycles(Map preferredClasspaths) throws JavaModelException {
-
 		//long start = System.currentTimeMillis();
 
 		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
@@ -375,7 +391,7 @@
 		int length = rscProjects.length;
 		JavaProject[] projects = new JavaProject[length];
 
-		LinkedHashSet cycleParticipants = new LinkedHashSet();
+		LinkedHashSet<IPath> cycleParticipants = new LinkedHashSet<>();
 		HashSet traversed = new HashSet();
 
 		// compute cycle participants
@@ -391,10 +407,18 @@
 		}
 		//System.out.println("updateAllCycleMarkers: " + (System.currentTimeMillis() - start) + " ms");
 
+		String cycleString = cycleParticipants.stream()
+			.map(path -> workspaceRoot.findMember(path))
+			.filter(r -> r != null)
+			.map(r -> JavaCore.create((IProject)r))
+			.filter(p -> p != null)
+			.map(p -> p.getElementName())
+			.collect(Collectors.joining(", ")); //$NON-NLS-1$
+
 		for (int i = 0; i < length; i++){
 			JavaProject project = projects[i];
 			if (project != null) {
-				if (cycleParticipants.contains(project.getPath())){
+				if (cycleParticipants.contains(project.getPath())) {
 					IMarker cycleMarker = project.getCycleMarker();
 					String circularCPOption = project.getOption(JavaCore.CORE_CIRCULAR_CLASSPATH, true);
 					int circularCPSeverity = JavaCore.ERROR.equals(circularCPOption) ? IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING;
@@ -405,30 +429,16 @@
 							if (existingSeverity != circularCPSeverity) {
 								cycleMarker.setAttribute(IMarker.SEVERITY, circularCPSeverity);
 							}
+							String existingMessage = cycleMarker.getAttribute(IMarker.MESSAGE, ""); //$NON-NLS-1$
+							String newMessage = new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE,
+									project, cycleString).getMessage();
+							if (!newMessage.equals(existingMessage)) {
+								cycleMarker.setAttribute(IMarker.MESSAGE, newMessage);
+							}
 						} catch (CoreException e) {
 							throw new JavaModelException(e);
 						}
 					} else {
-						IJavaProject[] projectsInCycle;
-						String cycleString = "";	 //$NON-NLS-1$
-						if (cycleParticipants.isEmpty()) {
-							projectsInCycle = null;
-						} else {
-							projectsInCycle = new IJavaProject[cycleParticipants.size()];
-							Iterator it = cycleParticipants.iterator();
-							int k = 0;
-							while (it.hasNext()) {
-								//projectsInCycle[i++] = (IPath) it.next();
-								IResource member = workspaceRoot.findMember((IPath) it.next());
-								if (member != null && member.getType() == IResource.PROJECT){
-									projectsInCycle[k] = JavaCore.create((IProject)member);
-									if (projectsInCycle[k] != null) {
-										if (k != 0) cycleString += ", "; //$NON-NLS-1$
-										cycleString += projectsInCycle[k++].getElementName();
-									}
-								}
-							}
-						}
 						// create new marker
 						project.createClasspathProblemMarker(
 							new JavaModelStatus(IJavaModelStatusConstants.CLASSPATH_CYCLE, project, cycleString));
@@ -459,19 +469,35 @@
 	/**
 	 * @see Openable
 	 */
+	@Override
 	protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
 		// cannot refresh cp markers on opening (emulate cp check on startup) since can create deadlocks (see bug 37274)
 		IClasspathEntry[] resolvedClasspath = getResolvedClasspath();
 
 		// compute the pkg fragment roots
-		info.setChildren(computePackageFragmentRoots(resolvedClasspath, false, null /*no reverse map*/));
-
+		IPackageFragmentRoot[] roots = computePackageFragmentRoots(resolvedClasspath, false, true, null /*no reverse map*/);
+		info.setChildren(roots);
+		IModuleDescription module = null;
+		IModuleDescription current = null;
+		for (IPackageFragmentRoot root : roots) {
+			if (root.getKind() != IPackageFragmentRoot.K_SOURCE)
+				continue;
+			module = root.getModuleDescription();
+			if (module != null) {
+				if (current != null) {
+					throw new JavaModelException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, 
+							Messages.bind(Messages.classpath_duplicateEntryPath, TypeConstants.MODULE_INFO_FILE_NAME_STRING, getElementName())));
+				}
+				current = module;
+				JavaModelManager.getModulePathManager().addEntry(module, this);
+				//break; continue looking, there may be other roots containing module-info
+				info.setModule(module);
+			}
+		}
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.JavaElement#close()
-	 */
+	@Override
 	public void close() throws JavaModelException {
 		if (JavaProject.hasJavaNature(this.project)) {
 			// Get cached preferences if exist
@@ -494,11 +520,12 @@
 	/**
 	 * Internal computation of an expanded classpath. It will eliminate duplicates, and produce copies
 	 * of exported or restricted classpath entries to avoid possible side-effects ever after.
+	 * @param excludeTestCode 
 	 */
 	private void computeExpandedClasspath(
 		ClasspathEntry referringEntry,
 		HashSet rootIDs,
-		ObjectVector accumulatedEntries) throws JavaModelException {
+		ObjectVector accumulatedEntries, boolean excludeTestCode) throws JavaModelException {
 
 		String projectRootId = rootID();
 		if (rootIDs.contains(projectRootId)){
@@ -512,6 +539,9 @@
 		boolean isInitialProject = referringEntry == null;
 		for (int i = 0, length = resolvedClasspath.length; i < length; i++){
 			ClasspathEntry entry = (ClasspathEntry) resolvedClasspath[i];
+			if (excludeTestCode && entry.isTest()) {
+				continue;
+			}
 			if (isInitialProject || entry.isExported()){
 				String rootID = entry.rootID();
 				if (rootIDs.contains(rootID)) {
@@ -531,7 +561,7 @@
 							javaProject.computeExpandedClasspath(
 								combinedEntry,
 								rootIDs,
-								accumulatedEntries);
+								accumulatedEntries, excludeTestCode || entry.isWithoutTestCode());
 						}
 					}
 				} else {
@@ -553,6 +583,7 @@
 				computePackageFragmentRoots(
 					new IClasspathEntry[]{ resolvedEntry },
 					false, // don't retrieve exported roots
+					true, // respect limit-modules
 					null /* no reverse map */
 				);
 		} catch (JavaModelException e) {
@@ -560,10 +591,25 @@
 		}
 	}
 
+	public void computePackageFragmentRoots(
+			IClasspathEntry resolvedEntry,
+			ObjectVector accumulatedRoots,
+			HashSet rootIDs,
+			IClasspathEntry referringEntry,
+			boolean retrieveExportedRoots,
+			boolean filterModuleRoots,
+			Map rootToResolvedEntries) throws JavaModelException {
+		computePackageFragmentRoots(resolvedEntry, accumulatedRoots, rootIDs, referringEntry, retrieveExportedRoots, filterModuleRoots,
+				rootToResolvedEntries, false);
+	}
+
 	/**
 	 * Returns the package fragment roots identified by the given entry. In case it refers to
 	 * a project, it will follow its classpath so as to find exported roots as well.
 	 * Only works with resolved entry
+	 * <p><strong>Note:</strong> this method is retained for the sole purpose of supporting
+	 * old versions of Xtext [2.8.x,2.12], which illegally call this internal method.
+	 * </p>
 	 * @param resolvedEntry IClasspathEntry
 	 * @param accumulatedRoots ObjectVector
 	 * @param rootIDs HashSet
@@ -578,9 +624,38 @@
 		IClasspathEntry referringEntry,
 		boolean retrieveExportedRoots,
 		Map rootToResolvedEntries) throws JavaModelException {
+		computePackageFragmentRoots(resolvedEntry, accumulatedRoots, rootIDs, referringEntry, retrieveExportedRoots, true, rootToResolvedEntries);
+	}
+
+	/**
+	 * Returns the package fragment roots identified by the given entry. In case it refers to
+	 * a project, it will follow its classpath so as to find exported roots as well.
+	 * Only works with resolved entry
+	 * @param resolvedEntry IClasspathEntry
+	 * @param accumulatedRoots ObjectVector
+	 * @param rootIDs HashSet
+	 * @param referringEntry the CP entry (project) referring to this entry, or null if initial project
+	 * @param retrieveExportedRoots boolean
+	 * @param filterModuleRoots if true, roots corresponding to modules will be filtered if applicable:
+	 *    if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
+	 *    according to the rules of root modules per JEP 261.
+	 * @throws JavaModelException
+	 */
+	public void computePackageFragmentRoots(
+		IClasspathEntry resolvedEntry,
+		ObjectVector accumulatedRoots,
+		HashSet rootIDs,
+		IClasspathEntry referringEntry,
+		boolean retrieveExportedRoots,
+		boolean filterModuleRoots,
+		Map rootToResolvedEntries,
+		boolean excludeTestCode) throws JavaModelException {
 
 		String rootID = ((ClasspathEntry)resolvedEntry).rootID();
 		if (rootIDs.contains(rootID)) return;
+		if(excludeTestCode && ((ClasspathEntry)resolvedEntry).isTest()) {
+			return;
+		}
 
 		IPath projectPath = this.project.getFullPath();
 		IPath entryPath = resolvedEntry.getPath();
@@ -588,7 +663,6 @@
 		IPackageFragmentRoot root = null;
 
 		switch(resolvedEntry.getEntryKind()){
-
 			// source folder
 			case IClasspathEntry.CPE_SOURCE :
 
@@ -616,7 +690,36 @@
 				} else if (target instanceof File) {
 					// external target
 					if (JavaModel.isFile(target)) {
-						root = new JarPackageFragmentRoot(entryPath, this);
+						if (JavaModel.isJimage((File) target)) {
+							PerProjectInfo info = getPerProjectInfo();
+							ObjectVector imageRoots;
+							if (info.jrtRoots == null || !info.jrtRoots.containsKey(entryPath)) {
+								imageRoots = new ObjectVector();
+								loadModulesInJimage(entryPath, imageRoots, rootToResolvedEntries, resolvedEntry, referringEntry);
+								info.setJrtPackageRoots(entryPath, imageRoots); // unfiltered
+								rootIDs.add(rootID);
+							} else {
+								imageRoots = info.jrtRoots.get(entryPath);
+							}
+							if (filterModuleRoots) {
+								List<String> rootModules = null;
+								String limitModules = ClasspathEntry.getExtraAttribute(resolvedEntry, IClasspathAttribute.LIMIT_MODULES);
+								if (limitModules != null) {
+									rootModules = Arrays.asList(limitModules.split(",")); //$NON-NLS-1$
+								} else if (isUnNamedModule()) {
+									rootModules = defaultRootModules((Iterable) imageRoots);
+								}
+								if (rootModules != null) {
+									imageRoots = filterLimitedModules(entryPath, imageRoots, rootModules);
+								}
+							}
+							accumulatedRoots.addAll(imageRoots);
+						} else if (JavaModel.isJmod((File) target)) {
+							root = new JModPackageFragmentRoot(entryPath, this);
+						}
+						else {
+							root = new JarPackageFragmentRoot(entryPath, this);
+						}
 					} else if (((File) target).isDirectory()) {
 						root = new ExternalPackageFragmentRoot(entryPath, this);
 					}
@@ -641,7 +744,9 @@
 							rootIDs,
 							rootToResolvedEntries == null ? resolvedEntry : ((ClasspathEntry)resolvedEntry).combineWith((ClasspathEntry) referringEntry), // only combine if need to build the reverse map
 							retrieveExportedRoots,
-							rootToResolvedEntries);
+							filterModuleRoots,
+							rootToResolvedEntries,
+							excludeTestCode);
 					}
 				break;
 			}
@@ -653,6 +758,187 @@
 		}
 	}
 
+	/** Implements selection of root modules per JEP 261. */
+	public static List<String> defaultRootModules(Iterable<IPackageFragmentRoot> allSystemRoots) {
+		return internalDefaultRootModules(allSystemRoots,
+				IPackageFragmentRoot::getElementName,
+				r ->  (r instanceof JrtPackageFragmentRoot) ? ((JrtPackageFragmentRoot) r).getModule() : null);
+	}
+
+	public static <T> List<String> internalDefaultRootModules(Iterable<T> allSystemModules, Function<T,String> getModuleName, Function<T,IModule> getModule) {
+		List<String> result = new ArrayList<>();
+		boolean hasJavaDotSE = false;
+		for (T mod : allSystemModules) {
+			String moduleName = getModuleName.apply(mod);
+			if ("java.se".equals(moduleName)) { //$NON-NLS-1$
+				result.add(moduleName);
+				hasJavaDotSE = true;
+				break;
+			}
+		}
+		for (T mod : allSystemModules) {
+			String moduleName = getModuleName.apply(mod);
+			boolean isJavaDotStart = moduleName.startsWith("java."); //$NON-NLS-1$
+			boolean isPotentialRoot = !isJavaDotStart;	// always include non-java.*
+			if (!hasJavaDotSE)
+				isPotentialRoot |= isJavaDotStart;		// no java.se => add all java.*
+			
+			if (isPotentialRoot) {
+				IModule module = getModule.apply(mod);
+				if (module != null) {
+					for (IPackageExport packageExport : module.exports()) {
+						if (!packageExport.isQualified()) {
+							result.add(moduleName);
+							break;
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	private ObjectVector filterLimitedModules(IPath jrtPath, ObjectVector imageRoots, List<String> rootModuleNames) {
+		Set<String> limitModulesSet = new HashSet<>(rootModuleNames);
+		ModuleLookup lookup = new ModuleLookup(jrtPath.toFile());
+		// collect all module roots:
+		for (int i = 0; i < imageRoots.size(); i++) {
+			lookup.recordRoot((JrtPackageFragmentRoot) imageRoots.elementAt(i));
+		}
+		// for those contained in limitModules, add the transitive closure:
+		for (int i = 0; i < imageRoots.size(); i++) {
+			String moduleName = ((JrtPackageFragmentRoot) imageRoots.elementAt(i)).moduleName;
+			if (limitModulesSet.contains(moduleName))
+				lookup.addTransitive(moduleName);
+		}
+		// map the result back to package fragment roots:
+		ObjectVector result = new ObjectVector(lookup.resultModuleSet.size());
+		for (IModule mod : lookup.resultModuleSet) {
+			result.add(lookup.getRoot(mod));
+		}
+		return result;
+	}
+
+	/** Helper for computing the transitive closure of a set of modules. */
+	private static class ModuleLookup {
+		File jrtFile;
+		Map<String, JrtPackageFragmentRoot> modNames2Roots = new HashMap<>();
+		Map<String, IModule> modules = new HashMap<>();
+		Set<IModule> resultModuleSet = new HashSet<>();
+		
+		public ModuleLookup(File jrtFile) {
+			this.jrtFile = jrtFile;
+		}
+
+		void recordRoot(JrtPackageFragmentRoot root) {
+			this.modNames2Roots.put(root.moduleName, root);
+		}
+		void addTransitive(String moduleName) {
+			IModule module = getModule(moduleName);
+			if (module != null && this.resultModuleSet.add(module)) {
+				for (IModuleReference reqRef : module.requires())
+					addTransitive(String.valueOf(reqRef.name()));
+			}
+		}
+		private IModule getModule(String moduleName) {
+			IModule result = this.modules.get(moduleName);
+			if (result == null) {
+				JrtPackageFragmentRoot root = this.modNames2Roots.get(moduleName);
+				if (root != null) {
+					try {
+						ClassFileReader classFile = JRTUtil.getClassfile(this.jrtFile, TypeConstants.MODULE_INFO_CLASS_NAME_STRING, root.moduleName, null);
+						result = classFile.getModuleDeclaration();
+						this.modules.put(moduleName, result);
+					} catch (IOException | ClassFormatException e) {
+						JavaCore.getJavaCore().getLog().log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, "Failed to read module-info.class", e)); //$NON-NLS-1$
+					}
+				}
+			}
+			return result;
+		}
+		JrtPackageFragmentRoot getRoot(IModule module) {
+			return this.modNames2Roots.get(String.valueOf(module.name()));
+		}
+	}
+
+	/**
+	 * This bogus package fragment root acts as placeholder plus bridge for the
+	 * real one until the module name becomes available. It is useful in certain
+	 * scenarios like creating package roots from delta processors, search etc.
+	 */
+	class JImageModuleFragmentBridge extends JarPackageFragmentRoot {
+
+		protected JImageModuleFragmentBridge(IPath externalJarPath) {
+			super(externalJarPath, JavaProject.this);
+		}
+		@Override
+		public PackageFragment getPackageFragment(String[] pkgName) {
+			return getPackageFragment(pkgName, null);
+		}
+		@Override
+		public PackageFragment getPackageFragment(String[] pkgName, String mod) {
+			PackageFragmentRoot realRoot = new JrtPackageFragmentRoot(this.jarPath,
+												mod == null ?  JRTUtil.JAVA_BASE : mod,
+														JavaProject.this);
+			return new JarPackageFragment(realRoot, pkgName);
+		}
+		@Override
+		protected boolean computeChildren(OpenableElementInfo info, IResource underlyingResource) throws JavaModelException {
+			// Do nothing, idea is to avoid this being read in JarPackageFragmentRoot as a Jar.
+			return true;
+		}
+		public boolean isModule() {
+			return true;
+		}
+	}
+
+	private void loadModulesInJimage(final IPath imagePath, final ObjectVector roots, final Map rootToResolvedEntries, 
+				final IClasspathEntry resolvedEntry, final IClasspathEntry referringEntry) {
+		try {
+			org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(imagePath.toFile(),
+					new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<java.nio.file.Path>() {
+				@Override
+				public FileVisitResult visitPackage(java.nio.file.Path dir, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+					return FileVisitResult.SKIP_SIBLINGS;
+				}
+
+				@Override
+				public FileVisitResult visitFile(java.nio.file.Path path, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+					return FileVisitResult.SKIP_SIBLINGS;
+				}
+
+				@Override
+				public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+					JrtPackageFragmentRoot root = new JrtPackageFragmentRoot(imagePath, mod.toString(), JavaProject.this);
+					roots.add(root);
+					if (rootToResolvedEntries != null) 
+						rootToResolvedEntries.put(root, ((ClasspathEntry)resolvedEntry).combineWith((ClasspathEntry) referringEntry));
+					return FileVisitResult.SKIP_SUBTREE;
+				}
+			}, JRTUtil.NOTIFY_MODULES);
+		} catch (IOException e) {
+			Util.log(IStatus.ERROR, "Error reading modules from " + imagePath.toOSString()); //$NON-NLS-1$
+		}
+	}
+
+	@Override
+	public IPackageFragmentRoot[] findUnfilteredPackageFragmentRoots(IClasspathEntry entry) {
+		try {
+			IClasspathEntry[] resolvedEntries = resolveClasspath(new IClasspathEntry[]{ entry });
+			return computePackageFragmentRoots(resolvedEntries, false /* not exported roots */, false /* don't filter! */, null /* no reverse map */);
+		} catch (JavaModelException e) {
+			// according to comment in findPackageFragmentRoots() we assume that this is caused by the project no longer existing
+			return new IPackageFragmentRoot[] {};
+		}
+	}
+
+	public IPackageFragmentRoot[] computePackageFragmentRoots(
+			IClasspathEntry[] resolvedClasspath,
+			boolean retrieveExportedRoots,
+			boolean filterModuleRoots,
+			Map rootToResolvedEntries) throws JavaModelException {
+		return computePackageFragmentRoots(resolvedClasspath, retrieveExportedRoots, filterModuleRoots, rootToResolvedEntries, false);
+	}
 	/**
 	 * Returns (local/all) the package fragment roots identified by the given project's classpath.
 	 * Note: this follows project classpath references to find required project contributions,
@@ -660,13 +946,18 @@
 	 * Only works with resolved entries
 	 * @param resolvedClasspath IClasspathEntry[]
 	 * @param retrieveExportedRoots boolean
+	 * @param filterModuleRoots if true, roots corresponding to modules will be filtered if applicable:
+	 *    if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
+	 *    according to the rules of root modules per JEP 261.
 	 * @return IPackageFragmentRoot[]
 	 * @throws JavaModelException
 	 */
 	public IPackageFragmentRoot[] computePackageFragmentRoots(
 					IClasspathEntry[] resolvedClasspath,
 					boolean retrieveExportedRoots,
-					Map rootToResolvedEntries) throws JavaModelException {
+					boolean filterModuleRoots,
+					Map rootToResolvedEntries,
+					boolean excludeTestCode) throws JavaModelException {
 
 		ObjectVector accumulatedRoots = new ObjectVector();
 		computePackageFragmentRoots(
@@ -675,12 +966,26 @@
 			new HashSet(5), // rootIDs
 			null, // inside original project
 			retrieveExportedRoots,
-			rootToResolvedEntries);
+			filterModuleRoots,
+			rootToResolvedEntries,
+			excludeTestCode);
 		IPackageFragmentRoot[] rootArray = new IPackageFragmentRoot[accumulatedRoots.size()];
 		accumulatedRoots.copyInto(rootArray);
 		return rootArray;
 	}
 
+	@Deprecated
+	public void computePackageFragmentRoots(
+			IClasspathEntry[] resolvedClasspath,
+			ObjectVector accumulatedRoots,
+			HashSet rootIDs,
+			IClasspathEntry referringEntry,
+			boolean retrieveExportedRoots,
+			boolean filterModuleRoots,
+			Map rootToResolvedEntries) throws JavaModelException {
+		computePackageFragmentRoots(resolvedClasspath, accumulatedRoots, rootIDs, referringEntry, retrieveExportedRoots,
+				filterModuleRoots, rootToResolvedEntries, false);
+	}
 	/**
 	 * Returns (local/all) the package fragment roots identified by the given project's classpath.
 	 * Note: this follows project classpath references to find required project contributions,
@@ -691,6 +996,9 @@
 	 * @param rootIDs HashSet
 	 * @param referringEntry project entry referring to this CP or null if initial project
 	 * @param retrieveExportedRoots boolean
+	 * @param filterModuleRoots if true, roots corresponding to modules will be filtered if applicable:
+	 *    if a limit-modules attribute exists, this is used, otherwise system modules will be filtered
+	 *    according to the rules of root modules per JEP 261.
 	 * @throws JavaModelException
 	 */
 	public void computePackageFragmentRoots(
@@ -699,7 +1007,9 @@
 		HashSet rootIDs,
 		IClasspathEntry referringEntry,
 		boolean retrieveExportedRoots,
-		Map rootToResolvedEntries) throws JavaModelException {
+		boolean filterModuleRoots,
+		Map rootToResolvedEntries,
+		boolean excludeTestCode) throws JavaModelException {
 
 		if (referringEntry == null){
 			rootIDs.add(rootID());
@@ -711,7 +1021,9 @@
 				rootIDs,
 				referringEntry,
 				retrieveExportedRoots,
-				rootToResolvedEntries);
+				filterModuleRoots,
+				rootToResolvedEntries,
+				excludeTestCode);
 		}
 	}
 	/**
@@ -727,6 +1039,7 @@
 	/**
 	 * Configure the project with Java nature.
 	 */
+	@Override
 	public void configure() throws CoreException {
 
 		// register Java builder
@@ -893,6 +1206,7 @@
 	/**
 	 * Returns a new element info for this element.
 	 */
+	@Override
 	protected Object createElementInfo() {
 		return new JavaProjectElementInfo();
 	}
@@ -964,6 +1278,7 @@
 		return entries;
 	}
 
+	@Override
 	public IClasspathEntry decodeClasspathEntry(String encodedEntry) {
 
 		try {
@@ -998,6 +1313,7 @@
 	/**
 	 * Removes the Java nature from the project.
 	 */
+	@Override
 	public void deconfigure() throws CoreException {
 
 		// deregister Java builder
@@ -1063,6 +1379,7 @@
 		}
 	}
 
+	@Override
 	public String encodeClasspathEntry(IClasspathEntry classpathEntry) {
 		try {
 			ByteArrayOutputStream s = new ByteArrayOutputStream();
@@ -1087,6 +1404,7 @@
 	 *
 	 * @see JavaElement#equals(Object)
 	 */
+	@Override
 	public boolean equals(Object o) {
 
 		if (this == o)
@@ -1102,6 +1420,7 @@
 	/**
 	 * @see IJavaProject#findElement(IPath)
 	 */
+	@Override
 	public IJavaElement findElement(IPath path) throws JavaModelException {
 		return findElement(path, DefaultWorkingCopyOwner.PRIMARY);
 	}
@@ -1109,6 +1428,7 @@
 	/**
 	 * @see IJavaProject#findElement(IPath, WorkingCopyOwner)
 	 */
+	@Override
 	public IJavaElement findElement(IPath path, WorkingCopyOwner owner) throws JavaModelException {
 
 		if (path == null || path.isAbsolute()) {
@@ -1185,6 +1505,7 @@
 		}
 	}
 
+	@Override
 	public IJavaElement findElement(String bindingKey, WorkingCopyOwner owner) throws JavaModelException {
 		JavaElementFinder elementFinder = new JavaElementFinder(bindingKey, this, owner);
 		elementFinder.parse();
@@ -1196,6 +1517,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragment findPackageFragment(IPath path)
 		throws JavaModelException {
 
@@ -1214,6 +1536,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot findPackageFragmentRoot(IPath path)
 		throws JavaModelException {
 
@@ -1231,7 +1554,7 @@
 		}
 		for (int i= 0; i < allRoots.length; i++) {
 			IPackageFragmentRoot classpathRoot= allRoots[i];
-			if (classpathRoot.getPath().equals(path)) {
+			if (classpathRoot.getPath() != null && classpathRoot.getPath().equals(path)) {
 				return classpathRoot;
 			}
 		}
@@ -1240,6 +1563,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry) {
 		try {
 			IClasspathEntry[] classpath = getRawClasspath();
@@ -1249,6 +1573,7 @@
 						computePackageFragmentRoots(
 							resolveClasspath(new IClasspathEntry[] {entry}),
 							false, // don't retrieve exported roots
+							true, // filterModuleRoots
 							null); /*no reverse map*/
 				}
 			}
@@ -1260,12 +1585,14 @@
 	/**
 	 * @see IJavaProject#findType(String)
 	 */
+	@Override
 	public IType findType(String fullyQualifiedName) throws JavaModelException {
 		return findType(fullyQualifiedName, DefaultWorkingCopyOwner.PRIMARY);
 	}
 	/**
 	 * @see IJavaProject#findType(String, IProgressMonitor)
 	 */
+	@Override
 	public IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException {
 		return findType(fullyQualifiedName, DefaultWorkingCopyOwner.PRIMARY, progressMonitor);
 	}
@@ -1300,12 +1627,14 @@
 	/**
 	 * @see IJavaProject#findType(String, String)
 	 */
+	@Override
 	public IType findType(String packageName, String typeQualifiedName) throws JavaModelException {
 		return findType(packageName, typeQualifiedName, DefaultWorkingCopyOwner.PRIMARY);
 	}
 	/**
 	 * @see IJavaProject#findType(String, String, IProgressMonitor)
 	 */
+	@Override
 	public IType findType(String packageName, String typeQualifiedName, IProgressMonitor progressMonitor) throws JavaModelException {
 		return findType(packageName, typeQualifiedName, DefaultWorkingCopyOwner.PRIMARY, progressMonitor);
 	}
@@ -1327,6 +1656,7 @@
 	/**
 	 * @see IJavaProject#findType(String, String, WorkingCopyOwner)
 	 */
+	@Override
 	public IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner) throws JavaModelException {
 		NameLookup lookup = newNameLookup(owner);
 		return findType(
@@ -1340,6 +1670,7 @@
 	/**
 	 * @see IJavaProject#findType(String, String, WorkingCopyOwner, IProgressMonitor)
 	 */
+	@Override
 	public IType findType(String packageName, String typeQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException {
 		NameLookup lookup = newNameLookup(owner);
 		return findType(
@@ -1353,6 +1684,7 @@
 	/**
 	 * @see IJavaProject#findType(String, WorkingCopyOwner)
 	 */
+	@Override
 	public IType findType(String fullyQualifiedName, WorkingCopyOwner owner) throws JavaModelException {
 		NameLookup lookup = newNameLookup(owner);
 		return findType(fullyQualifiedName, lookup, false, null);
@@ -1361,11 +1693,28 @@
 	/**
 	 * @see IJavaProject#findType(String, WorkingCopyOwner, IProgressMonitor)
 	 */
+	@Override
 	public IType findType(String fullyQualifiedName, WorkingCopyOwner owner, IProgressMonitor progressMonitor) throws JavaModelException {
 		NameLookup lookup = newNameLookup(owner);
 		return findType(fullyQualifiedName, lookup, true, progressMonitor);
 	}
 
+	@Override
+	public IModuleDescription findModule(String moduleName, WorkingCopyOwner owner) throws JavaModelException {
+		NameLookup lookup = newNameLookup(owner);
+		return findModule(moduleName, lookup);
+	}
+
+	/*
+	 * Internal findModule with instantiated name lookup
+	 */
+	IModuleDescription findModule(String moduleName, NameLookup lookup) throws JavaModelException {
+		NameLookup.Answer answer = lookup.findModule(moduleName.toCharArray());
+		if (answer != null)
+			return answer.module;
+		return null;
+	}
+
 	/**
 	 * Remove all markers denoting classpath problems
 	 */ //TODO (philippe) should improve to use a bitmask instead of booleans (CYCLE, FORMAT, VALID)
@@ -1419,24 +1768,22 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot[] getAllPackageFragmentRoots()
 		throws JavaModelException {
-
-		return getAllPackageFragmentRoots(null /*no reverse map*/);
+		return getAllPackageFragmentRoots(null /*no reverse map*/, false);
 	}
 
+	@Deprecated
 	public IPackageFragmentRoot[] getAllPackageFragmentRoots(Map rootToResolvedEntries) throws JavaModelException {
+		return getAllPackageFragmentRoots(rootToResolvedEntries, false);
+	}
+	public IPackageFragmentRoot[] getAllPackageFragmentRoots(Map rootToResolvedEntries, boolean excludeTestCode) throws JavaModelException {
 
-		return computePackageFragmentRoots(getResolvedClasspath(), true/*retrieveExportedRoots*/, rootToResolvedEntries);
+		return computePackageFragmentRoots(getResolvedClasspath(), true/*retrieveExportedRoots*/, true/*filterModuleRoots*/, rootToResolvedEntries, excludeTestCode);
 	}
 
-	/**
-	 * Returns the classpath entry that refers to the given path
-	 * or <code>null</code> if there is no reference to the path.
-	 * @param path IPath
-	 * @return IClasspathEntry
-	 * @throws JavaModelException
-	 */
+	@Override
 	public IClasspathEntry getClasspathEntryFor(IPath path) throws JavaModelException {
 		getResolvedClasspath(); // force resolution
 		PerProjectInfo perProjectInfo = getPerProjectInfo();
@@ -1498,9 +1845,11 @@
 				eclipseParentPreferences.removeNodeChangeListener(this.preferencesNodeListener);
 			}
 			this.preferencesNodeListener = new IEclipsePreferences.INodeChangeListener() {
+				@Override
 				public void added(IEclipsePreferences.NodeChangeEvent event) {
 					// do nothing
 				}
+				@Override
 				public void removed(IEclipsePreferences.NodeChangeEvent event) {
 					if (event.getChild() == eclipsePreferences) {
 						JavaModelManager.getJavaModelManager().resetProjectPreferences(JavaProject.this);
@@ -1515,6 +1864,7 @@
 			eclipsePreferences.removePreferenceChangeListener(this.preferencesChangeListener);
 		}
 		this.preferencesChangeListener = new IEclipsePreferences.IPreferenceChangeListener() {
+			@Override
 			public void preferenceChange(IEclipsePreferences.PreferenceChangeEvent event) {
 				String propertyName = event.getKey();
 				JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -1543,6 +1893,7 @@
 		return eclipsePreferences;
 	}
 
+	@Override
 	public String getElementName() {
 		return this.project.getName();
 	}
@@ -1550,6 +1901,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public int getElementType() {
 		return JAVA_PROJECT;
 	}
@@ -1562,9 +1914,12 @@
 	 * @throws JavaModelException
 	 */
 	public IClasspathEntry[] getExpandedClasspath()	throws JavaModelException {
+		return getExpandedClasspath(false);
+	}
+	public IClasspathEntry[] getExpandedClasspath(boolean excludeTestCode)	throws JavaModelException {
 
 			ObjectVector accumulatedEntries = new ObjectVector();
-			computeExpandedClasspath(null, new HashSet(5), accumulatedEntries);
+			computeExpandedClasspath(null, new HashSet(5), accumulatedEntries, excludeTestCode);
 
 			IClasspathEntry[] expandedPath = new IClasspathEntry[accumulatedEntries.size()];
 			accumulatedEntries.copyInto(expandedPath);
@@ -1587,7 +1942,9 @@
 	/*
 	 * @see JavaElement
 	 */
+	@Override
 	public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
+		String mod = null;
 		switch (token.charAt(0)) {
 			case JEM_PACKAGEFRAGMENTROOT:
 				String rootPath = IPackageFragmentRoot.DEFAULT_PACKAGEROOT_PATH;
@@ -1597,11 +1954,22 @@
 					// https://bugs.eclipse.org/bugs/show_bug.cgi?id=331821
 					if (token == MementoTokenizer.PACKAGEFRAGMENT || token == MementoTokenizer.COUNT) {
 						break;
+					} else if (token == MementoTokenizer.MODULE) {
+						if (memento.hasMoreTokens()) {
+							token = memento.nextToken();
+							if (token != null) {
+								mod = token;
+							
+							}
+						}
+						continue;
 					}
 					rootPath += token;
 				}
-				JavaElement root = (JavaElement)getPackageFragmentRoot(new Path(rootPath));
-				if (token != null && token.charAt(0) == JEM_PACKAGEFRAGMENT) {
+				JavaElement root = (mod == null) ?
+						(JavaElement)getPackageFragmentRoot(new Path(rootPath)) :
+							new JrtPackageFragmentRoot(new Path(rootPath), mod, this);
+				if (token != null && (token.charAt(0) == JEM_PACKAGEFRAGMENT)) {
 					return root.getHandleFromMemento(token, memento, owner);
 				} else {
 					return root.getHandleFromMemento(memento, owner);
@@ -1614,6 +1982,7 @@
 	 * Returns the <code>char</code> that marks the start of this handles
 	 * contribution to a memento.
 	 */
+	@Override
 	protected char getHandleMementoDelimiter() {
 
 		return JEM_JAVAPROJECT;
@@ -1645,6 +2014,7 @@
 	/**
 	 * Returns an array of non-java resources contained in the receiver.
 	 */
+	@Override
 	public Object[] getNonJavaResources() throws JavaModelException {
 
 		return ((JavaProjectElementInfo) getElementInfo()).getNonJavaResources(this);
@@ -1653,6 +2023,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.IJavaProject#getOption(String, boolean)
 	 */
+	@Override
 	public String getOption(String optionName, boolean inheritJavaCoreOptions) {
 		return JavaModelManager.getJavaModelManager().getOption(optionName, inheritJavaCoreOptions, getEclipsePreferences());
 	}
@@ -1660,6 +2031,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.IJavaProject#getOptions(boolean)
 	 */
+	@Override
 	public Map<String, String> getOptions(boolean inheritJavaCoreOptions) {
 
 		// initialize to the defaults from JavaCore options pool
@@ -1690,7 +2062,7 @@
 						projectOptions.put(propertyName, value);
 						if (!optionNames.contains(propertyName)) {
 							// try to migrate deprecated options
-							String[] compatibleOptions = (String[]) javaModelManager.deprecatedOptions.get(propertyName);
+							String[] compatibleOptions = javaModelManager.deprecatedOptions.get(propertyName);
 							if (compatibleOptions != null) {
 								for (int co=0, length=compatibleOptions.length; co < length; co++) {
 									String compatibleOption = compatibleOptions[co];
@@ -1731,6 +2103,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPath getOutputLocation() throws JavaModelException {
 		// Do not create marker while getting output location
 		JavaModelManager.PerProjectInfo perProjectInfo = getPerProjectInfo();
@@ -1800,6 +2173,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot getPackageFragmentRoot(IResource resource) {
 		return getPackageFragmentRoot(resource, null/*no entry path*/);
 	}
@@ -1822,6 +2196,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot getPackageFragmentRoot(String externalLibraryPath) {
 		return getPackageFragmentRoot0(JavaProject.canonicalizedPath(new Path(externalLibraryPath)));
 	}
@@ -1833,12 +2208,22 @@
 		IFolder linkedFolder = JavaModelManager.getExternalManager().getFolder(externalLibraryPath);
 		if (linkedFolder != null)
 			return new ExternalPackageFragmentRoot(linkedFolder, externalLibraryPath, this);
+		if (JavaModelManager.isJrt(externalLibraryPath)) {
+			return this.new JImageModuleFragmentBridge(externalLibraryPath);
+		}
+		Object target = JavaModel.getTarget(externalLibraryPath, true/*check existency*/);
+		if (target instanceof File && JavaModel.isFile(target)) {
+			if (JavaModel.isJmod((File) target)) {
+				return new JModPackageFragmentRoot(externalLibraryPath, this);
+			}
+		}
 		return new JarPackageFragmentRoot(externalLibraryPath, this);
 	}
 
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragmentRoot[] getPackageFragmentRoots()
 		throws JavaModelException {
 
@@ -1860,6 +2245,7 @@
 	 * @see IJavaProject
 	 * @deprecated
 	 */
+	@Override
 	public IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry) {
 		return findPackageFragmentRoots(entry);
 	}
@@ -1867,6 +2253,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPackageFragment[] getPackageFragments() throws JavaModelException {
 
 		IPackageFragmentRoot[] roots = getPackageFragmentRoots();
@@ -1901,6 +2288,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IPath getPath() {
 		return this.project.getFullPath();
 	}
@@ -1916,17 +2304,24 @@
 	/**
 	 * @see IJavaProject#getProject()
 	 */
+	@Override
 	public IProject getProject() {
 		return this.project;
 	}
 
+	@Deprecated
 	public ProjectCache getProjectCache() throws JavaModelException {
-		return ((JavaProjectElementInfo) getElementInfo()).getProjectCache(this);
+		return getProjectCache(false);
+	}
+
+	public ProjectCache getProjectCache(boolean excludeTestCode) throws JavaModelException {
+		return ((JavaProjectElementInfo) getElementInfo()).getProjectCache(this, excludeTestCode);
 	}
 
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IClasspathEntry[] getRawClasspath() throws JavaModelException {
 		JavaModelManager.PerProjectInfo perProjectInfo = getPerProjectInfo();
 		IClasspathEntry[] classpath = perProjectInfo.rawClasspath;
@@ -1943,6 +2338,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IClasspathEntry[] getReferencedClasspathEntries() throws JavaModelException {
 		return getPerProjectInfo().referencedEntries;
 	}
@@ -1950,6 +2346,7 @@
 	/**
 	 * @see IJavaProject#getRequiredProjectNames()
 	 */
+	@Override
 	public String[] getRequiredProjectNames() throws JavaModelException {
 
 		return projectPrerequisites(getResolvedClasspath());
@@ -1974,6 +2371,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry) throws JavaModelException {
 		if  (JavaModelManager.getJavaModelManager().isClasspathBeingResolved(this)) {
 			if (JavaModelManager.CP_RESOLVE_VERBOSE_ADVANCED)
@@ -2021,6 +2419,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IResource resource(PackageFragmentRoot root) {
 		return this.project;
 	}
@@ -2079,6 +2478,7 @@
 	/**
 	 * @see JavaElement
 	 */
+	@Override
 	public SourceMapper getSourceMapper() {
 
 		return null;
@@ -2087,6 +2487,7 @@
 	/**
 	 * @see IJavaElement
 	 */
+	@Override
 	public IResource getUnderlyingResource() throws JavaModelException {
 		if (!exists()) throw newNotPresentException();
 		return this.project;
@@ -2095,6 +2496,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public boolean hasBuildState() {
 
 		return JavaModelManager.getJavaModelManager().getLastBuiltState(this.project, null) != null;
@@ -2103,6 +2505,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public boolean hasClasspathCycle(IClasspathEntry[] preferredClasspath) {
 		LinkedHashSet cycleParticipants = new LinkedHashSet();
 		HashMap preferredClasspaths = new HashMap(1);
@@ -2115,6 +2518,7 @@
 		return getCycleMarker() != null;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.project.hashCode();
 	}
@@ -2157,6 +2561,7 @@
 	/*
 	 * @see IJavaProject
 	 */
+	@Override
 	public boolean isOnClasspath(IJavaElement element) {
 		IClasspathEntry[] rawClasspath;
 		try {
@@ -2227,6 +2632,7 @@
 	/*
 	 * @see IJavaProject
 	 */
+	@Override
 	public boolean isOnClasspath(IResource resource) {
 		IPath exactPath = resource.getFullPath();
 		IPath path = exactPath;
@@ -2316,34 +2722,43 @@
 	/**
 	 * @see IJavaProject#newEvaluationContext()
 	 */
+	@Override
 	public IEvaluationContext newEvaluationContext() {
 		EvaluationContext context = new EvaluationContext();
 		context.setLineSeparator(Util.getLineSeparator(null/*no existing source*/, this));
 		return new EvaluationContextWrapper(context, this);
 	}
 
+	public NameLookup newNameLookup(ICompilationUnit[] workingCopies) throws JavaModelException {
+		return newNameLookup(workingCopies, false);
+	}
 	/*
 	 * Returns a new name lookup. This name lookup first looks in the given working copies.
 	 */
-	public NameLookup newNameLookup(ICompilationUnit[] workingCopies) throws JavaModelException {
-		return getJavaProjectElementInfo().newNameLookup(this, workingCopies);
+	public NameLookup newNameLookup(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException {
+		return getJavaProjectElementInfo().newNameLookup(this, workingCopies, excludeTestCode);
 	}
 
+	public NameLookup newNameLookup(WorkingCopyOwner owner) throws JavaModelException {
+		return newNameLookup(owner, false);
+	}
 	/*
 	 * Returns a new name lookup. This name lookup first looks in the working copies of the given owner.
 	 */
-	public NameLookup newNameLookup(WorkingCopyOwner owner) throws JavaModelException {
-
+	public NameLookup newNameLookup(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException {
 		JavaModelManager manager = JavaModelManager.getJavaModelManager();
 		ICompilationUnit[] workingCopies = owner == null ? null : manager.getWorkingCopies(owner, true/*add primary WCs*/);
 		return newNameLookup(workingCopies);
 	}
 
+	public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies) throws JavaModelException {
+		return newSearchableNameEnvironment(workingCopies, false);
+	}
 	/*
 	 * Returns a new search name environment for this project. This name environment first looks in the given working copies.
 	 */
-	public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies) throws JavaModelException {
-		return new SearchableEnvironment(this, workingCopies);
+	public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException {
+		return new SearchableEnvironment(this, workingCopies, excludeTestCode);
 	}
 
 	/*
@@ -2351,7 +2766,10 @@
 	 * of the given owner.
 	 */
 	public SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner) throws JavaModelException {
-		return new SearchableEnvironment(this, owner);
+		return newSearchableNameEnvironment(owner, false);
+	}
+	public SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException {
+		return new SearchableEnvironment(this, owner, excludeTestCode);
 	}
 
 	/*
@@ -2361,6 +2779,7 @@
 	public PerProjectInfo newTemporaryInfo() {
 		return 
 			new PerProjectInfo(this.project.getProject()) {
+				@Override
 				protected ClasspathChange addClasspathChange() {
 					return null;
 				}
@@ -2370,6 +2789,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public ITypeHierarchy newTypeHierarchy(
 		IRegion region,
 		IProgressMonitor monitor)
@@ -2381,6 +2801,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public ITypeHierarchy newTypeHierarchy(
 		IRegion region,
 		WorkingCopyOwner owner,
@@ -2400,6 +2821,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public ITypeHierarchy newTypeHierarchy(
 		IType type,
 		IRegion region,
@@ -2412,6 +2834,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public ITypeHierarchy newTypeHierarchy(
 		IType type,
 		IRegion region,
@@ -2521,6 +2944,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IPath readOutputLocation() {
 		// Read classpath file without creating markers nor logging problems
 		IClasspathEntry[][] classpath = readFileEntries(null/*not interested in unknown elements*/);
@@ -2541,6 +2965,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public IClasspathEntry[] readRawClasspath() {
 		// Read classpath file without creating markers nor logging problems
 		IClasspathEntry[][] classpath = readFileEntries(null/*not interested in unknown elements*/);
@@ -2623,7 +3048,7 @@
 		Map knownDrives = new HashMap();
 
 		Map referencedEntriesMap = new HashMap();
-		List rawLibrariesPath = new ArrayList();
+		Set<IPath> rawLibrariesPath = new LinkedHashSet<>();
 		LinkedHashSet resolvedEntries = new LinkedHashSet();
 		
 		if(resolveChainedLibraries) {
@@ -2944,6 +3369,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.IJavaProject#setOption(java.lang.String, java.lang.String)
 	 */
+	@Override
 	public void setOption(String optionName, String optionValue) {
 		// Store option value
 		IEclipsePreferences projectPreferences = getEclipsePreferences();
@@ -2962,6 +3388,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.IJavaProject#setOptions(Map)
 	 */
+	@Override
 	public void setOptions(Map<String, String> newOptions) {
 
 		IEclipsePreferences projectPreferences = getEclipsePreferences();
@@ -3008,6 +3435,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public void setOutputLocation(IPath path, IProgressMonitor monitor) throws JavaModelException {
 		if (path == null) {
 			throw new IllegalArgumentException(Messages.path_nullPath);
@@ -3025,6 +3453,7 @@
 	 *
 	 * @see IProjectNature#setProject(IProject)
 	 */
+	@Override
 	public void setProject(IProject project) {
 
 		this.project = project;
@@ -3034,6 +3463,7 @@
 	/**
 	 * @see IJavaProject#setRawClasspath(IClasspathEntry[],boolean,IProgressMonitor)
 	 */
+	@Override
 	public void setRawClasspath(
 		IClasspathEntry[] entries,
 		boolean canModifyResources,
@@ -3050,6 +3480,7 @@
 	/**
 	 * @see IJavaProject#setRawClasspath(IClasspathEntry[],IPath,boolean,IProgressMonitor)
 	 */
+	@Override
 	public void setRawClasspath(
 			IClasspathEntry[] newRawClasspath,
 			IPath newOutputLocation,
@@ -3062,6 +3493,7 @@
 	/**
 	 * @see IJavaProject#setRawClasspath(IClasspathEntry[],IPath,IProgressMonitor)
 	 */
+	@Override
 	public void setRawClasspath(
 		IClasspathEntry[] entries,
 		IPath outputLocation,
@@ -3075,6 +3507,7 @@
 			monitor);
 	}
 	
+	@Override
 	public void setRawClasspath(IClasspathEntry[] entries, IClasspathEntry[] referencedEntries, IPath outputLocation,
 			IProgressMonitor monitor) throws JavaModelException {
 		setRawClasspath(entries, referencedEntries, outputLocation, true, monitor);
@@ -3104,6 +3537,7 @@
 	/**
 	 * @see IJavaProject
 	 */
+	@Override
 	public void setRawClasspath(
 		IClasspathEntry[] entries,
 		IProgressMonitor monitor)
@@ -3228,6 +3662,7 @@
 		}
 	 }
 
+	@Override
 	protected IStatus validateExistence(IResource underlyingResource) {
 		// check whether the java project can be opened
 		try {
@@ -3238,4 +3673,87 @@
 		}
 		return JavaModelStatus.VERIFIED_OK;
 	}
+
+	@Override
+	public IModuleDescription getModuleDescription() throws JavaModelException {
+		JavaProjectElementInfo info = (JavaProjectElementInfo) getElementInfo();
+		IModuleDescription module = info.getModule();
+		if (module != null)
+			return module;
+		for(IClasspathEntry entry : getRawClasspath()) {
+			String mainModule = ClasspathEntry.getExtraAttribute(entry, IClasspathAttribute.PATCH_MODULE);
+			if (mainModule != null) {
+				switch (entry.getEntryKind()) {
+					case IClasspathEntry.CPE_PROJECT:
+						IJavaProject referencedProject = getJavaModel().getJavaProject(entry.getPath().toString());
+						module = referencedProject.getModuleDescription();
+						if (module != null && module.getElementName().equals(mainModule))
+							return module;
+						break;
+					case IClasspathEntry.CPE_LIBRARY:
+					case IClasspathEntry.CPE_CONTAINER:
+						for (IPackageFragmentRoot root : findPackageFragmentRoots(entry)) {
+							module = root.getModuleDescription();
+							if (module != null && module.getElementName().equals(mainModule))
+								return module;
+						}
+				}
+			}
+		}
+		return null;
+	}
+
+	public IModuleDescription getAutomaticModuleDescription() throws JavaModelException {
+		boolean nameFromManifest = true;
+		char[] moduleName = AutomaticModuleNaming.determineAutomaticModuleNameFromManifest(getManifest());
+		if (moduleName == null) {
+			nameFromManifest = false;
+			moduleName = AutomaticModuleNaming.determineAutomaticModuleNameFromFileName(getElementName(), true, false);
+		}
+		return new AbstractModule.AutoModule(this, String.valueOf(moduleName), nameFromManifest);
+	}
+
+	public void setModuleDescription(IModuleDescription module) throws JavaModelException {
+		JavaProjectElementInfo info = (JavaProjectElementInfo) getElementInfo();	
+		IModuleDescription current = info.getModule();
+		if (current != null) {
+			IPackageFragmentRoot root = (IPackageFragmentRoot) current.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+			IPackageFragmentRoot newRoot = (IPackageFragmentRoot) module.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+			if (!root.equals(newRoot))
+				throw new JavaModelException(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID,
+						Messages.bind(Messages.classpath_duplicateEntryPath, TypeConstants.MODULE_INFO_FILE_NAME_STRING, getElementName())));
+		}
+		info.setModule(module);
+	}
+	
+	private boolean isUnNamedModule() throws JavaModelException {
+		JavaProjectElementInfo info = (JavaProjectElementInfo) getElementInfo();
+		IModuleDescription module = info.getModule();
+		if (module != null)
+			return false;
+		for(IClasspathEntry entry : getRawClasspath()) {
+			String mainModule = ClasspathEntry.getExtraAttribute(entry, IClasspathAttribute.PATCH_MODULE);
+			if (mainModule != null)
+				return false;
+
+		}
+		return true;
+	}
+
+	public Manifest getManifest() {
+		IFile file = getProject().getFile(new Path(TypeConstants.META_INF_MANIFEST_MF));
+		if (file.exists()) {
+			try (InputStream contents = file.getContents()) {
+				return new Manifest(contents);
+			} catch (IOException | CoreException e) {
+				// unusable manifest
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public Set<String> determineModulesOfProjectsWithNonEmptyClasspath() throws JavaModelException {
+		return ModuleUpdater.determineModulesOfProjectsWithNonEmptyClasspath(this, getExpandedClasspath());
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java
index de4c05e..c2b068a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavaProjectElementInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,10 +17,16 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
-import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HashSetOfArray;
-import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
 /**
  * Info for IJavaProject.
@@ -32,7 +38,7 @@
  * that are internal to the project, use <code>JavaProject#getChildren()</code>.
  */
 
-@SuppressWarnings({"rawtypes", "unchecked"})
+@SuppressWarnings({"rawtypes"})
 /* package */
 class JavaProjectElementInfo extends OpenableElementInfo {
 
@@ -65,12 +71,8 @@
 		public Map rootToResolvedEntries;
 	}
 
-	/**
-	 * A array with all the non-java resources contained by this PackageFragment
-	 */
-	private Object[] nonJavaResources;
-
 	ProjectCache projectCache;
+	ProjectCache mainProjectCache;
 
 	/*
 	 * Adds the given name and its super names to the given set
@@ -135,7 +137,7 @@
 							String resName = res.getName();
 
 							// ignore a jar file on the classpath
-							if (isClasspathResolved && 
+							if (isClasspathResolved &&
 									isClasspathEntryOrOutputLocation(resFullPath, res.getLocation()/* see https://bugs.eclipse.org/bugs/show_bug.cgi?id=244406 */, classpath, projectOutput)) {
 								break;
 							}
@@ -198,26 +200,26 @@
 		return resources;
 	}
 
-	ProjectCache getProjectCache(JavaProject project) {
-		ProjectCache cache = this.projectCache;
+	ProjectCache getProjectCache(JavaProject project, boolean excludeTestCode) {
+		ProjectCache cache = excludeTestCode ? this.mainProjectCache : this.projectCache;
 		if (cache == null) {
 			IPackageFragmentRoot[] roots;
-			Map reverseMap = new HashMap(3);
+			Map<?, ?> reverseMap = new HashMap<>(3);
 			try {
-				roots = project.getAllPackageFragmentRoots(reverseMap);
+				roots = project.getAllPackageFragmentRoots(reverseMap, excludeTestCode);
 			} catch (JavaModelException e) {
 				// project does not exist: cannot happen since this is the info of the project
 				roots = new IPackageFragmentRoot[0];
 				reverseMap.clear();
 			}
 
-			HashMap rootInfos = JavaModelManager.getJavaModelManager().deltaState.roots;
-			HashMap pkgFragmentsCaches = new HashMap();
+			Map<IPath, RootInfo> rootInfos = JavaModelManager.getJavaModelManager().deltaState.roots;
+			HashMap<IPackageFragmentRoot, HashSetOfArray> pkgFragmentsCaches = new HashMap<>();
 			int length = roots.length;
 			JavaModelManager  manager = JavaModelManager.getJavaModelManager();
 			for (int i = 0; i < length; i++) {
 				IPackageFragmentRoot root = roots[i];
-				DeltaProcessor.RootInfo rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(root.getPath());
+				DeltaProcessor.RootInfo rootInfo = rootInfos.get(root.getPath());
 				if (rootInfo == null || rootInfo.project.equals(project)) {
 					// ensure that an identical root is used (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=217059 )
 					roots[i] = root = (IPackageFragmentRoot) manager.getExistingElement(root);
@@ -229,7 +231,11 @@
 			}
 
 			cache = new ProjectCache(roots, reverseMap, pkgFragmentsCaches);
-			this.projectCache = cache;
+			if(excludeTestCode) {
+				this.mainProjectCache = cache;
+			} else {
+				this.projectCache = cache;
+			}
 		}
 		return cache;
 	}
@@ -238,11 +244,12 @@
 	 * Returns an array of non-java resources contained in the receiver.
 	 */
 	Object[] getNonJavaResources(JavaProject project) {
-
-		if (this.nonJavaResources == null) {
-			this.nonJavaResources = computeNonJavaResources(project);
+		Object[] resources = this.nonJavaResources;
+		if (resources == null) {
+			resources = computeNonJavaResources(project);
+			this.nonJavaResources = resources;
 		}
-		return this.nonJavaResources;
+		return resources;
 	}
 
 	private void initializePackageNames(IPackageFragmentRoot root, HashSetOfArray fragmentsCache) {
@@ -259,7 +266,7 @@
 			return;
 		}
 		for (int j = 0, length = frags.length; j < length; j++) {
-			fragmentsCache.add(((PackageFragment) frags[j]).names);
+			if (frags[j] instanceof PackageFragment) fragmentsCache.add(((PackageFragment) frags[j]).names);
 		}
 	}
 
@@ -287,17 +294,17 @@
 	 * The given project is assumed to be the handle of this info.
 	 * This name lookup first looks in the given working copies.
 	 */
-	NameLookup newNameLookup(JavaProject project, ICompilationUnit[] workingCopies) {
-		ProjectCache cache = getProjectCache(project);
+	NameLookup newNameLookup(JavaProject project, ICompilationUnit[] workingCopies, boolean excludeTestCode) {
+		ProjectCache cache = getProjectCache(project, excludeTestCode);
 		HashtableOfArrayToObject allPkgFragmentsCache = cache.allPkgFragmentsCache;
 		if (allPkgFragmentsCache == null) {
-			HashMap rootInfos = JavaModelManager.getJavaModelManager().deltaState.roots;
+			Map<IPath, RootInfo> rootInfos = JavaModelManager.getJavaModelManager().deltaState.roots;
 			IPackageFragmentRoot[] allRoots = cache.allPkgFragmentRootsCache;
 			int length = allRoots.length;
 			allPkgFragmentsCache = new HashtableOfArrayToObject();
 			for (int i = 0; i < length; i++) {
 				IPackageFragmentRoot root = allRoots[i];
-				DeltaProcessor.RootInfo rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(root.getPath());
+				DeltaProcessor.RootInfo rootInfo = rootInfos.get(root.getPath());
 				JavaProject rootProject = rootInfo == null ? project : rootInfo.project;
 				HashSetOfArray fragmentsCache;
 				if (rootProject.equals(project)) {
@@ -307,7 +314,7 @@
 					// retrieve package fragments  cache from the root's project
 					ProjectCache rootProjectCache;
 					try {
-						rootProjectCache = rootProject.getProjectCache();
+						rootProjectCache = rootProject.getProjectCache(excludeTestCode);
 					} catch (JavaModelException e) {
 						// project doesn't exit
 						continue;
@@ -352,14 +359,6 @@
 	 */
 	void resetCaches() {
 		this.projectCache = null;
+		this.mainProjectCache = null;
 	}
-
-	/**
-	 * Set the fNonJavaResources to res value
-	 */
-	void setNonJavaResources(Object[] resources) {
-
-		this.nonJavaResources = resources;
-	}
-
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.java
index d77bed1..b1b4311 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2016 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,6 +35,9 @@
 	String PACKAGE_FILE_NAME = "package-summary.html"; //$NON-NLS-1$
 	char[] PACKAGE_DESCRIPTION_START = "name=\"package_description\"".toCharArray(); //$NON-NLS-1$
 	char[] PACKAGE_DESCRIPTION_START2 = "name=\"package.description\"".toCharArray(); //$NON-NLS-1$
+	char[] PACKAGE_DESCRIPTION_START3 = "<div class=\"contentContainer\">".toCharArray(); //$NON-NLS-1$
+	String MODULE_FILE_SUFFIX = "-summary.html"; //$NON-NLS-1$
+	char[] MODULE_DESCRIPTION_START = "<!-- ============ MODULE DESCRIPTION =========== -->".toCharArray(); //$NON-NLS-1$
 	char[] H2_PREFIX = "<H2".toCharArray(); //$NON-NLS-1$
 	char[] H2_SUFFIX = "</H2>".toCharArray(); //$NON-NLS-1$
 	int H2_SUFFIX_LENGTH = H2_SUFFIX.length;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.java
index 6b30dd6..13dd263 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JavadocContents.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2014 IBM Corporation and others.
+ * Copyright (c) 2009, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -91,14 +91,17 @@
 		if (index == -1) {
 			index = CharOperation.indexOf(JavadocConstants.PACKAGE_DESCRIPTION_START, this.content, false, 0);
 		}
-		if (index == -1) return null;
-		index = CharOperation.indexOf(JavadocConstants.ANCHOR_SUFFIX, this.content, false, index);
-		if (index == -1) return null;
-		
-		int start = CharOperation.indexOf(JavadocConstants.H2_PREFIX, this.content, false, index);
-		if (start != -1) {
-			start = CharOperation.indexOf(JavadocConstants.H2_SUFFIX, this.content, false, start);
-			if (start != -1) index = start + JavadocConstants.H2_SUFFIX_LENGTH;
+		if (index != -1) {
+			index = CharOperation.indexOf(JavadocConstants.ANCHOR_SUFFIX, this.content, false, index);
+			if (index == -1) return null;
+			
+			int start = CharOperation.indexOf(JavadocConstants.H2_PREFIX, this.content, false, index);
+			if (start != -1) {
+				start = CharOperation.indexOf(JavadocConstants.H2_SUFFIX, this.content, false, start);
+				if (start != -1) index = start + JavadocConstants.H2_SUFFIX_LENGTH;
+			}
+		} else {
+			index = CharOperation.indexOf(JavadocConstants.PACKAGE_DESCRIPTION_START3, this.content, false, 0);
 		}
 		if (index != -1) {
 			int end = CharOperation.indexOf(JavadocConstants.BOTTOM_NAVBAR, this.content, false, index);
@@ -109,6 +112,15 @@
 		return null;
 	}
 	
+	public String getModuleDoc() throws JavaModelException {
+		if (this.content == null) return null;
+		int index = CharOperation.indexOf(JavadocConstants.MODULE_DESCRIPTION_START, this.content, false, 0);
+		if (index == -1) return null;
+		int end = CharOperation.indexOf(JavadocConstants.BOTTOM_NAVBAR, this.content, false, index);
+		if (end == -1) end = this.content.length -1;
+		return String.valueOf(CharOperation.subarray(this.content, index, end));
+	}
+	
 	/*
 	 * Returns the part of the javadoc that describe a field of the type
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java
new file mode 100644
index 0000000..33db3f8
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/JrtPackageFragmentRoot.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2015, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+/**
+ * A package fragment root that corresponds to a module in a JRT file system.
+ *
+ * @see org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot
+ * @see org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRootInfo
+ */
+public class JrtPackageFragmentRoot extends JarPackageFragmentRoot implements IModulePathEntry {
+
+	String moduleName;
+	
+	public static final ThreadLocal<Boolean> workingOnOldClasspath = new ThreadLocal<>();
+	
+	/**
+	 * Constructs a package fragment root which represents a module
+	 * contained in a JRT.
+	 */
+	protected JrtPackageFragmentRoot(IPath jrtPath, String moduleName, JavaProject project) {
+		super(jrtPath, project);
+		this.moduleName = moduleName;
+	}
+
+	@Override
+	protected boolean computeChildren(OpenableElementInfo info, IResource underlyingResource) throws JavaModelException {
+		final HashtableOfArrayToObject rawPackageInfo = new HashtableOfArrayToObject();
+		final String compliance = CompilerOptions.VERSION_1_8; // TODO: Java 9 Revisit
+
+		// always create the default package
+		rawPackageInfo.put(CharOperation.NO_STRINGS, new ArrayList[] { EMPTY_LIST, EMPTY_LIST });
+
+		try {
+			org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(this.jarPath.toFile(),
+					new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<Path>() {
+				@Override
+				public FileVisitResult visitPackage(Path dir, Path mod, BasicFileAttributes attrs) throws IOException {
+					initRawPackageInfo(rawPackageInfo, dir.toString(), true, compliance);
+					return FileVisitResult.CONTINUE;
+				}
+
+				@Override
+				public FileVisitResult visitFile(Path path, Path mod, BasicFileAttributes attrs) throws IOException {
+					initRawPackageInfo(rawPackageInfo, path.toString(), false, compliance);
+					return FileVisitResult.CONTINUE;
+				}
+
+				@Override
+				public FileVisitResult visitModule(Path mod) throws IOException {
+					if (!JrtPackageFragmentRoot.this.moduleName.equals(mod.toString())) {
+						return FileVisitResult.SKIP_SUBTREE;
+					}
+					return FileVisitResult.CONTINUE;
+				}
+			}, JRTUtil.NOTIFY_ALL);
+		} catch (IOException e) {
+			Util.log(IStatus.ERROR, "Error reading modules" + toStringWithAncestors()); //$NON-NLS-1$
+		}
+
+		info.setChildren(createChildren(rawPackageInfo));
+		((JarPackageFragmentRootInfo) info).rawPackageInfo = rawPackageInfo;
+		return true;
+	}
+	@Override
+	SourceMapper createSourceMapper(IPath sourcePath, IPath rootPath) throws JavaModelException {
+		IClasspathEntry entry = ((JavaProject) getParent()).getClasspathEntryFor(getPath());
+		String encoding = (entry== null) ? null : ((ClasspathEntry) entry).getSourceAttachmentEncoding();
+		IModule mod = getModule();
+		String modName = mod == null ? null : new String(mod.name());
+		SourceMapper mapper = new SourceMapper(
+			sourcePath,
+			rootPath == null ? modName : rootPath.toOSString(),
+			getJavaProject().getOptions(true),// cannot use workspace options if external jar is 1.5 jar and workspace options are 1.4 options
+			encoding);
+		return mapper;
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (this == o)
+			return true;
+		if (o instanceof JrtPackageFragmentRoot) {
+			JrtPackageFragmentRoot other= (JrtPackageFragmentRoot) o;
+			return this.moduleName.equals(other.moduleName) &&
+					this.jarPath.equals(other.jarPath);
+		}
+		return false;
+	}
+	@Override
+	public String getElementName() {
+		return this.moduleName;
+	}
+	@Override
+	public PackageFragment getPackageFragment(String[] pkgName) {
+		// NOTE: Do we need a different kind of package fragment?
+		return new JarPackageFragment(this, pkgName);
+	}
+	@Override
+	public int hashCode() {
+		return this.jarPath.hashCode() + this.moduleName.hashCode();
+	}
+	@Override
+	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
+		buffer.append(tabString(tab));
+		buffer.append("<module:").append(this.moduleName).append(">"); //$NON-NLS-1$ //$NON-NLS-2$
+		if (info == null) {
+			buffer.append(" (not open)"); //$NON-NLS-1$
+		}
+	}
+
+	@Override
+	public IModule getModule() {
+		IModuleDescription desc = getModuleDescription();
+		if (desc != null) {
+			try {
+				return (IModule)((JavaElement) desc).getElementInfo();
+			} catch (JavaModelException e) {
+				Util.log(e);
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String requestedModuleName) {
+		if (requestedModuleName != null && !requestedModuleName.equals(this.moduleName))
+			return null;
+		if (getPackageFragment(qualifiedPackageName).exists()) {
+			return new char[][] { requestedModuleName.toCharArray() };
+		}
+		return null;
+	}
+	@Override
+	protected boolean ignoreErrorStatus(IStatus status) {
+		if (status.getCode() == IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH
+				&& workingOnOldClasspath.get() == Boolean.TRUE)
+			return true;
+		return false;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.java
index 43951a6..dbee8d8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LRUCacheEnumerator.java
@@ -22,48 +22,49 @@
  *	elements returned from the enumerator could have been closed
  *	by the cache.
  */
-@SuppressWarnings("rawtypes")
-public class LRUCacheEnumerator implements Enumeration {
+public class LRUCacheEnumerator<V> implements Enumeration<V> {
 	/**
 	 *	Current element;
 	 */
-	protected LRUEnumeratorElement elementQueue;
+	protected LRUEnumeratorElement<V> elementQueue;
 
-	public static class LRUEnumeratorElement {
+	public static class LRUEnumeratorElement<V> {
 		/**
 		 *	Value returned by <code>nextElement()</code>;
 		 */
-		public Object value;
+		public V value;
 
 		/**
 		 *	Next element
 		 */
-		public LRUEnumeratorElement next;
+		public LRUEnumeratorElement<V> next;
 
 		/**
 		 * Constructor
 		 */
-		public LRUEnumeratorElement(Object value) {
+		public LRUEnumeratorElement(V value) {
 			this.value = value;
 		}
 	}
 /**
  *	Creates a CacheEnumerator on the list of <code>LRUEnumeratorElements</code>.
  */
-public LRUCacheEnumerator(LRUEnumeratorElement firstElement) {
+public LRUCacheEnumerator(LRUEnumeratorElement<V> firstElement) {
 	this.elementQueue = firstElement;
 }
 /**
  * Returns true if more elements exist.
  */
+@Override
 public boolean hasMoreElements() {
 	return this.elementQueue != null;
 }
 /**
  * Returns the next element.
  */
-public Object nextElement() {
-	Object temp = this.elementQueue.value;
+@Override
+public V nextElement() {
+	V temp = this.elementQueue.value;
 	this.elementQueue = this.elementQueue.next;
 	return temp;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.java
index 4af0b9e..c550313 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaExpression.java
@@ -137,10 +137,12 @@
 		return elementInfo;
 	}
 	
+	@Override
 	protected void closing(Object info) throws JavaModelException {
 		// nothing to do, not backed by model ATM.
 	}
 	
+	@Override
 	public boolean equals(Object o) {
 		if (this == o)
 			return true;
@@ -159,21 +161,22 @@
 		return false;
 	}
 	
+	@Override
 	public int hashCode() {
 		return Util.combineHashCodes(super.hashCode(), this.sourceStart);
 	}
 	
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.elementInfo;
 	}
 
+	@Override
 	protected char getHandleMementoDelimiter() {
 		return JavaElement.JEM_LAMBDA_EXPRESSION;
 	}
 	
-	/*
-	 * @see JavaElement#getHandleMemento(StringBuffer)
-	 */
+	@Override
 	protected void getHandleMemento(StringBuffer buff) {
 		getHandleMemento(buff, true, true);
 		// lambda method and lambda expression cannot share the same memento - add a trailing discriminator.
@@ -196,6 +199,7 @@
 			this.lambdaMethod.getHandleMemento(buff, false);
 	}
 	
+	@Override
 	public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 
 		if (token.charAt(0) != JEM_LAMBDA_METHOD)
@@ -239,14 +243,17 @@
 		}
 	}
 
+	@Override
 	public IJavaElement[] getChildren() throws JavaModelException {
 		return new IJavaElement[] { this.lambdaMethod };
 	}
 
+	@Override
 	public boolean isLocal() {
 		return true;
 	}
 	
+	@Override
 	public JavaElement resolved(Binding binding) {
 		ResolvedLambdaExpression resolvedHandle = new ResolvedLambdaExpression(this.parent, this, new String(binding.computeUniqueKey()));
 		return resolvedHandle;
@@ -266,6 +273,7 @@
 		return false;
 	}
 
+	@Override
 	public void toStringName(StringBuffer buffer) {
 		super.toStringName(buffer);
 		buffer.append("<lambda #"); //$NON-NLS-1$
@@ -290,6 +298,7 @@
 		return this;
 	}
 
+	@Override
 	public String[] getSuperInterfaceTypeSignatures() throws JavaModelException {
 		return new String[] { this.interphase };
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.java
index 19c79ad..0c7d035 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LambdaMethod.java
@@ -39,32 +39,38 @@
 	/**
 	 * @see IMethod
 	 */
+	@Override
 	public String getReturnType() throws JavaModelException {
 		return this.returnTypeString;
 	}
 	/**
 	 * @see IMethod
 	 */
+	@Override
 	public String getSignature() throws JavaModelException {
 		return Signature.createMethodSignature(this.parameterTypes, this.returnTypeString);
 	}
 	/**
 	 * @see IMethod#isLambdaMethod()
 	 */
+	@Override
 	public boolean isLambdaMethod() {
 		return true;
 	}
 	
+	@Override
 	protected void closing(Object info) {
 		// nothing to do.
 	}
 	
+	@Override
 	public boolean equals(Object o) {
 		if (!(o instanceof LambdaMethod)) return false;
 		LambdaMethod that = (LambdaMethod) o;
 		return super.equals(o) && this.sourceStart == that.sourceStart;
 	}
 
+	@Override
 	public Object getElementInfo(IProgressMonitor monitor) throws JavaModelException {
 		return this.elementInfo;
 	}
@@ -93,28 +99,34 @@
 			local.getHandleMemento(buff, false);
 		}
 	}
+	@Override
 	public void getHandleMemento(StringBuffer buff) {
 		getHandleMemento(buff, true);
 		// lambda method and lambda expression cannot share the same memento - add a trailing discriminator.
 		appendEscapedDelimiter(buff, getHandleMementoDelimiter());
 	}
 	
+	@Override
 	protected char getHandleMementoDelimiter() {
 		return JavaElement.JEM_LAMBDA_METHOD;
 	}
 	
+	@Override
 	public String getKey() {
 		return this.key;
 	}
 	
+	@Override
 	public int hashCode() {
 	   return Util.combineHashCodes(super.hashCode(), this.sourceStart);
 	}
 	
+	@Override
 	public boolean isResolved() {
 		return true;  // we maintain enough information so as not to need another layer of abstraction.
 	}
 	
+	@Override
 	public JavaElement resolved(Binding binding) {
 		return this;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.java
index 9a16795..e92a8c4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/LocalVariable.java
@@ -96,15 +96,18 @@
 		}
 	}
 
+	@Override
 	protected void closing(Object info) {
 		// a local variable has no info
 	}
 
+	@Override
 	protected Object createElementInfo() {
 		// a local variable has no info
 		return null;
 	}
 
+	@Override
 	public boolean equals(Object o) {
 		if (!(o instanceof LocalVariable)) return false;
 		LocalVariable other = (LocalVariable)o;
@@ -116,14 +119,17 @@
 			&& super.equals(o);
 	}
 
+	@Override
 	public boolean exists() {
 		return this.parent.exists(); // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=46192
 	}
 
+	@Override
 	protected void generateInfos(Object info, HashMap newElements, IProgressMonitor pm) {
 		// a local variable has no info
 	}
 
+	@Override
 	public IAnnotation getAnnotation(String annotationName) {
 		for (int i = 0, length = this.annotations.length; i < length; i++) {
 			IAnnotation annotation = this.annotations[i];
@@ -133,6 +139,7 @@
 		return super.getAnnotation(annotationName);
 	}
 
+	@Override
 	public IAnnotation[] getAnnotations() throws JavaModelException {
 		return this.annotations;
 	}
@@ -158,15 +165,19 @@
 			public LocalVarAnnotation(JavaElement localVar, String elementName) {
 				super(localVar, elementName);
 			}
+			@Override
 			public IMemberValuePair[] getMemberValuePairs() throws JavaModelException {
 				return this.memberValuePairs;
 			}
+			@Override
 			public ISourceRange getNameRange() throws JavaModelException {
 				return new SourceRange(typeStart, typeEnd - typeStart + 1);
 			}
+			@Override
 			public ISourceRange getSourceRange() throws JavaModelException {
 				return new SourceRange(sourceStart, sourceEnd - sourceStart + 1);
 			}
+			@Override
 			public boolean exists() {
 				return this.parent.exists();
 			}
@@ -254,6 +265,7 @@
 		}
 	}
 
+	@Override
 	public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
 		switch (token.charAt(0)) {
 			case JEM_COUNT:
@@ -262,9 +274,7 @@
 		return this;
 	}
 
-	/*
-	 * @see JavaElement#getHandleMemento(StringBuffer)
-	 */
+	@Override
 	protected void getHandleMemento(StringBuffer buff) {
 		getHandleMemento(buff, true);
 	}
@@ -294,10 +304,12 @@
 		}
 	}
 
+	@Override
 	protected char getHandleMementoDelimiter() {
 		return JavaElement.JEM_LOCALVARIABLE;
 	}
 
+	@Override
 	public IResource getCorrespondingResource() {
 		return null;
 	}
@@ -306,14 +318,17 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public IMember getDeclaringMember() {
 		return (IMember) this.parent;
 	}
 
+	@Override
 	public String getElementName() {
 		return this.name;
 	}
 
+	@Override
 	public int getElementType() {
 		return LOCAL_VARIABLE;
 	}
@@ -322,13 +337,14 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public int getFlags() {
 		if (this.flags == -1) {
 			SourceMapper mapper= getSourceMapper();
 			if (mapper != null) {
 				try {
 					// ensure the class file's buffer is open so that source ranges are computed
-					ClassFile classFile = (ClassFile)getClassFile();
+					IClassFile classFile = getClassFile();
 					if (classFile != null) {
 						classFile.getBuffer();
 						return mapper.getFlags(this);
@@ -345,6 +361,7 @@
 	/**
 	 * @see IMember#getClassFile()
 	 */
+	@Override
 	public IClassFile getClassFile() {
 		IJavaElement element = getParent();
 		while (element instanceof IMember) {
@@ -359,13 +376,14 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public ISourceRange getNameRange() {
 		if (this.nameEnd == -1) {
 			SourceMapper mapper= getSourceMapper();
 			if (mapper != null) {
 				try {
 					// ensure the class file's buffer is open so that source ranges are computed
-					ClassFile classFile = (ClassFile)getClassFile();
+					IClassFile classFile = getClassFile();
 					if (classFile != null) {
 						classFile.getBuffer();
 						return mapper.getNameRange(this);
@@ -379,10 +397,12 @@
 		return new SourceRange(this.nameStart, this.nameEnd-this.nameStart+1);
 	}
 
+	@Override
 	public IPath getPath() {
 		return this.parent.getPath();
 	}
 
+	@Override
 	public IResource resource() {
 		return this.parent.resource();
 	}
@@ -390,6 +410,7 @@
 	/**
 	 * @see ISourceReference
 	 */
+	@Override
 	public String getSource() throws JavaModelException {
 		IOpenable openable = this.parent.getOpenableParent();
 		IBuffer buffer = openable.getBuffer();
@@ -413,12 +434,13 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public ISourceRange getSourceRange() throws JavaModelException {
 		if (this.declarationSourceEnd == -1) {
 			SourceMapper mapper= getSourceMapper();
 			if (mapper != null) {
 				// ensure the class file's buffer is open so that source ranges are computed
-				ClassFile classFile = (ClassFile)getClassFile();
+				IClassFile classFile = getClassFile();
 				if (classFile != null) {
 					classFile.getBuffer();
 					return mapper.getSourceRange(this);
@@ -433,18 +455,22 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public ITypeRoot getTypeRoot() {
 		return this.getDeclaringMember().getTypeRoot();
 	}
 
+	@Override
 	public String getTypeSignature() {
 		return this.typeSignature;
 	}
 
+	@Override
 	public IResource getUnderlyingResource() throws JavaModelException {
 		return this.parent.getUnderlyingResource();
 	}
 
+	@Override
 	public int hashCode() {
 		return Util.combineHashCodes(this.parent.hashCode(), this.nameStart);
 	}
@@ -453,10 +479,12 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public boolean isParameter() {
 		return this.isParameter;
 	}
 
+	@Override
 	public boolean isStructureKnown() throws JavaModelException {
 		return true;
 	}
@@ -487,6 +515,7 @@
 		return null;
 	}
 
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		buffer.append(tabString(tab));
 		if (info != NO_INFO) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Member.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Member.java
index f8512bd..fbd1683 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Member.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Member.java
@@ -121,6 +121,7 @@
 		return result;
 	}
 }
+@Override
 public String[] getCategories() throws JavaModelException {
 	IType type = (IType) getAncestor(IJavaElement.TYPE);
 	if (type == null) return CharOperation.NO_STRINGS;
@@ -138,6 +139,7 @@
 /**
  * @see IMember
  */
+@Override
 public IClassFile getClassFile() {
 	IJavaElement element = getParent();
 	while (element instanceof IMember) {
@@ -151,6 +153,7 @@
 /**
  * @see IMember
  */
+@Override
 public IType getDeclaringType() {
 	JavaElement parentElement = (JavaElement)getParent();
 	if (parentElement.getElementType() == TYPE) {
@@ -161,6 +164,7 @@
 /**
  * @see IMember
  */
+@Override
 public int getFlags() throws JavaModelException {
 	MemberElementInfo info = (MemberElementInfo) getElementInfo();
 	return info.getModifiers();
@@ -168,6 +172,7 @@
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_COUNT:
@@ -257,6 +262,7 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_TYPE;
 }
@@ -287,6 +293,7 @@
 	}
 	return lastLocalContext;
 }
+@Override
 public ISourceRange getJavadocRange() throws JavaModelException {
 	ISourceRange range= getSourceRange();
 	if (range == null) return null;
@@ -339,6 +346,7 @@
 /**
  * @see IMember
  */
+@Override
 public ISourceRange getNameRange() throws JavaModelException {
 	MemberElementInfo info= (MemberElementInfo)getElementInfo();
 	return new SourceRange(info.getNameSourceStart(), info.getNameSourceEnd() - info.getNameSourceStart() + 1);
@@ -346,6 +354,7 @@
 /**
  * @see IMember
  */
+@Override
 public IType getType(String typeName, int count) {
 	if (isBinary()) {
 		throw new IllegalArgumentException("Not a source member " + toStringWithAncestors()); //$NON-NLS-1$
@@ -358,6 +367,7 @@
 /**
  * @see IMember#getTypeRoot()
  */
+@Override
 public ITypeRoot getTypeRoot() {
 	IJavaElement element = getParent();
 	while (element instanceof IMember) {
@@ -368,6 +378,7 @@
 /**
  * @see IMember
  */
+@Override
 public boolean isBinary() {
 	return false;
 }
@@ -390,11 +401,13 @@
 /**
  * @see IJavaElement
  */
+@Override
 public boolean isReadOnly() {
 	return getClassFile() != null;
 }
 /**
  */
+@Override
 public String readableName() {
 
 	IJavaElement declaringType = getDeclaringType();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.java
index 285d583..73ca53f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MemberValuePair.java
@@ -29,6 +29,7 @@
 		this.valueKind = valueKind;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof MemberValuePair)) {
 			return false;
@@ -42,18 +43,22 @@
 				|| (this.value instanceof Object[] && other.value instanceof Object[] && Util.equalArraysOrNull((Object[])this.value, (Object[]) other.value)));
 	}
 
+	@Override
 	public String getMemberName() {
 		return this.memberName;
 	}
 
+	@Override
 	public Object getValue() {
 		return this.value;
 	}
 
+	@Override
 	public int getValueKind() {
 		return this.valueKind;
 	}
 
+	@Override
 	public int hashCode() {
 		final int prime = 31;
 		int result = 1;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.java
new file mode 100644
index 0000000..43ff8a7
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModularClassFile.java
@@ -0,0 +1,301 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.aspectj.org.eclipse.jdt.core.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.model.BinaryModuleDescriptor;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.model.BinaryModuleFactory;
+import org.aspectj.org.eclipse.jdt.internal.core.util.MementoTokenizer;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+/**
+ * A handle to a modular class file.
+ */
+public class ModularClassFile extends AbstractClassFile implements IModularClassFile {
+
+	private BinaryModule binaryModule;
+
+	protected ModularClassFile(PackageFragment parent) {
+		super(parent, TypeConstants.MODULE_INFO_NAME_STRING);
+	}
+
+	/**
+	 * Creates the single child element for this class file adding the resulting 
+	 * new handle (of type {@link IBinaryModule}) and info object to the newElements table.
+	 * Returns true if successful, or false if an error is encountered parsing the class file.
+	 *
+	 * @see Openable
+	 * @see Signature
+	 */
+	@Override
+	protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
+		IBinaryModule moduleInfo = getBinaryModuleInfo();
+		if (moduleInfo == null) {
+			// The structure of a class file is unknown if a class file format errors occurred
+			//during the creation of the diet class file representative of this ClassFile.
+			info.setChildren(JavaElement.NO_ELEMENTS);
+			return false;
+		}
+		
+		// Create & link a handle:	
+		BinaryModule module = new BinaryModule(this, moduleInfo);
+		newElements.put(module, moduleInfo);
+		info.setChildren(new IJavaElement[] {module});
+		this.binaryModule = module;
+		if (info instanceof ClassFileInfo) {
+			((ClassFileInfo) info).setModule(module);
+		}
+		((PackageFragmentRootInfo) getPackageFragmentRoot().getElementInfo()).setModule(module);
+		return true;
+	}
+
+	@Override
+	public void codeComplete(int offset, CompletionRequestor requestor, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
+		String source = getSource();
+		if (source != null) {
+			BasicCompilationUnit cu =
+				new BasicCompilationUnit(
+					getSource().toCharArray(),
+					null,
+					TypeConstants.MODULE_INFO_FILE_NAME_STRING,
+					getJavaProject()); // use project to retrieve corresponding .java IFile
+			codeComplete(cu, cu, offset, requestor, owner, null/*extended context isn't computed*/, monitor);
+		}
+	}
+
+	@Override
+	public IJavaElement[] codeSelect(int offset, int length, WorkingCopyOwner owner) throws JavaModelException {
+		IBuffer buffer = getBuffer();
+		char[] contents;
+		if (buffer != null && (contents = buffer.getCharacters()) != null) {
+			BasicCompilationUnit cu = new BasicCompilationUnit(contents, null, TypeConstants.MODULE_INFO_FILE_NAME_STRING, this);
+			return super.codeSelect(cu, offset, length, owner);
+		} else {
+			// has no associated source
+			return new IJavaElement[] {};
+		}
+	}
+
+	@Override
+	public IType findPrimaryType() {
+		return null;
+	}
+	
+	@Override
+	public boolean isClass() throws JavaModelException {
+		return false;
+	}
+	
+	@Override
+	public boolean isInterface() throws JavaModelException {
+		return false;
+	}
+	
+	@Override
+	public IType getType() {
+		throw new UnsupportedOperationException("IClassFile#getType() cannot be used on an IModularClassFile"); //$NON-NLS-1$
+	}
+
+	/**
+	 * Returns the <code>IBinaryModule</code> specific for this IClassFile, based
+	 * on its underlying resource, or <code>null</code> if unable to create
+	 * the diet class file.
+	 * There are two cases to consider:<ul>
+	 * <li>a class file corresponding to an IFile resource</li>
+	 * <li>a class file corresponding to a zip entry in a JAR</li>
+	 * </ul>
+	 *
+	 * @exception JavaModelException when the IFile resource or JAR is not available
+	 * or when this class file is not present in the JAR
+	 */
+	public IBinaryModule getBinaryModuleInfo() throws JavaModelException {
+		try {
+			IBinaryModule info = getJarBinaryModuleInfo();
+			if (info == null) {
+				throw newNotPresentException();
+			}
+			return info;
+		} catch (ClassFormatException cfe) {
+			//the structure remains unknown
+			if (JavaCore.getPlugin().isDebugging()) {
+				cfe.printStackTrace(System.err);
+			}
+			return null;
+		} catch (IOException ioe) {
+			throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
+		} catch (CoreException e) {
+			if (e instanceof JavaModelException) {
+				throw (JavaModelException)e;
+			} else {
+				throw new JavaModelException(e);
+			}
+		}
+	}
+	
+	private IBinaryModule getJarBinaryModuleInfo() throws CoreException, IOException, ClassFormatException {
+		BinaryModuleDescriptor descriptor = BinaryModuleFactory.createDescriptor(this);
+	
+		if (descriptor == null) {
+			return null;
+		}
+		IBinaryModule result = null;
+		IPackageFragmentRoot root = getPackageFragmentRoot();
+		if (getPackageFragmentRoot() instanceof JarPackageFragmentRoot) {
+			if (root instanceof JrtPackageFragmentRoot || this.name.equals(IModule.MODULE_INFO)) {
+				PackageFragment pkg = (PackageFragment) getParent();
+				JarPackageFragmentRoot jarRoot = (JarPackageFragmentRoot) getPackageFragmentRoot();
+				String entryName = jarRoot.getClassFilePath(Util.concatWith(pkg.names, getElementName(), '/'));
+				byte[] contents = getClassFileContent(jarRoot, entryName);
+				if (contents != null) {
+					String fileName = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName;
+					ClassFileReader classFileReader = new ClassFileReader(contents, fileName.toCharArray(), false);
+					return classFileReader.getModuleDeclaration();
+				}
+			} else {
+				result = BinaryModuleFactory.readModule(descriptor, null);
+			}
+		} else {
+			result = BinaryModuleFactory.readModule(descriptor, null);
+		}
+
+		return result;
+	}
+
+	/**
+	 * @see ITypeRoot
+	 */
+	@Override
+	public IJavaElement getElementAt(int position) throws JavaModelException {
+		IJavaElement parentElement = getParent();
+		while (parentElement.getElementType() != IJavaElement.PACKAGE_FRAGMENT_ROOT) {
+			parentElement = parentElement.getParent();
+		}
+		PackageFragmentRoot root = (PackageFragmentRoot) parentElement;
+		SourceMapper mapper = root.getSourceMapper();
+		if (mapper == null) {
+			return null;
+		} else {
+			// ensure this class file's buffer is open so that source ranges are computed
+			getBuffer();
+
+			IModuleDescription module = getModule();
+			return findElement(module, position, mapper);
+		}
+	}
+	@Override
+	public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
+		switch (token.charAt(0)) {
+			case JEM_MODULE:
+				if (!memento.hasMoreTokens()) return this;
+				String modName = memento.nextToken();
+				JavaElement mod = new BinaryModule(this, modName);
+				return mod.getHandleFromMemento(memento, owner);
+		}
+		return null;
+	}
+	/**
+	 * @see JavaElement#getHandleMemento()
+	 */
+	@Override
+	protected char getHandleMementoDelimiter() {
+		return JavaElement.JEM_MODULAR_CLASSFILE;
+	}
+	@Override
+	protected void escapeMementoName(StringBuffer buffer, String mementoName) {
+		// nop, name is irrelevant
+	}
+	@Override
+	public ICompilationUnit getWorkingCopy(WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
+		CompilationUnit workingCopy = new ClassFileWorkingCopy(this, owner == null ? DefaultWorkingCopyOwner.PRIMARY : owner);
+		JavaModelManager manager = JavaModelManager.getJavaModelManager();
+		JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo =
+			manager.getPerWorkingCopyInfo(workingCopy, false/*don't create*/, true/*record usage*/, null/*not used since don't create*/);
+		if (perWorkingCopyInfo != null) {
+			return perWorkingCopyInfo.getWorkingCopy(); // return existing handle instead of the one created above
+		}
+		BecomeWorkingCopyOperation op = new BecomeWorkingCopyOperation(workingCopy, null);
+		op.runOperation(monitor);
+		return workingCopy;
+	}
+	/**
+	 * Opens and returns buffer on the source code associated with this class file.
+	 * Maps the source code to the children elements of this class file.
+	 * If no source code is associated with this class file,
+	 * <code>null</code> is returned.
+	 *
+	 * @see Openable
+	 */
+	@Override
+	protected IBuffer openBuffer(IProgressMonitor pm, Object info) throws JavaModelException {
+		SourceMapper mapper = getSourceMapper();
+		if (mapper != null) {
+			return mapSource(mapper);
+		}
+		return null;
+	}
+
+	/** Loads the buffer via SourceMapper, and maps it in SourceMapper */
+	private IBuffer mapSource(SourceMapper mapper) throws JavaModelException {
+		char[] contents = mapper.findSource(getModule());
+		if (contents != null) {
+			// create buffer
+			IBuffer buffer = BufferManager.createBuffer(this);
+			if (buffer == null) return null;
+			BufferManager bufManager = getBufferManager();
+			bufManager.addBuffer(buffer);
+
+			// set the buffer source
+			if (buffer.getCharacters() == null){
+				buffer.setContents(contents);
+			}
+
+			// listen to buffer changes
+			buffer.addBufferChangedListener(this);
+
+			// do the source mapping
+			mapper.mapSource((NamedMember) getModule(), contents, null);
+
+			return buffer;
+		} else {
+			// create buffer
+			IBuffer buffer = BufferManager.createNullBuffer(this);
+			if (buffer == null) return null;
+			BufferManager bufManager = getBufferManager();
+			bufManager.addBuffer(buffer);
+
+			// listen to buffer changes
+			buffer.addBufferChangedListener(this);
+			return buffer;
+		}
+	}
+
+	@Override
+	public IModuleDescription getModule() throws JavaModelException {
+		if (this.binaryModule == null) {
+			openWhenClosed(createElementInfo(), false, null);
+			if (this.binaryModule == null)
+				throw newNotPresentException();
+		}
+		return this.binaryModule;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Module.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Module.java
new file mode 100644
index 0000000..d644d38
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Module.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+//import org.aspectj.org.eclipse.jdt.core.IType;
+//import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+//import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+//import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+//import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleDeclaration;
+
+//public class Module implements org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleDeclaration {
+//
+//	public ClassFile binaryDecl;
+//	public IModuleDeclaration declaration = null;
+//	public boolean isBinary = false;
+//	public SourceType sourceDecl;
+//
+//	public Module(SourceType sourceDecl) {
+//		this.sourceDecl = sourceDecl;
+//	}
+//	public Module(ClassFile binaryDecl) {
+//		this.binaryDecl = binaryDecl;
+//		this.isBinary = true;
+//	}
+//	@Override
+//	public char[] name() {
+//		//
+//		IModuleDeclaration decl = getDeclaration();
+//		return decl == null ? CharOperation.NO_CHAR : decl.name();
+//	}
+//	@Override
+//	public IModuleDeclaration getDeclaration() {
+//		// 
+//		if (this.declaration == null) {
+//			try {
+//				if (this.isBinary) {
+//					IType type = this.binaryDecl.getType();
+//					this.declaration = ((ClassFileReader) (((BinaryType)type).getElementInfo())).getModuleDeclaration();
+//				} else {
+//					this.declaration = (ModuleInfo) this.sourceDecl.getElementInfo();
+//				}
+//			}catch (JavaModelException e) {
+//				// do nothing
+//			}
+//		}
+//		return this.declaration;
+//	}
+//	
+//	public String toString() {
+//		return new String(this.name());
+//		
+//	}
+//}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.java
new file mode 100644
index 0000000..f6f5e90
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleDescriptionInfo.java
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExportsStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.OpensStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ProvidesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.RequiresStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UsesStatement;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+
+public class ModuleDescriptionInfo extends AnnotatableInfo implements ISourceModule {
+
+	protected static final char[][] NO_USES = new char[0][0];
+	protected static final ModuleReferenceInfo[] NO_REQUIRES = new ModuleReferenceInfo[0];
+	protected static final PackageExportInfo[] NO_EXPORTS = new PackageExportInfo[0];
+	protected static final ServiceInfo[] NO_PROVIDES = new ServiceInfo[0];
+	protected static final PackageExportInfo[] NO_OPENS = new PackageExportInfo[0];
+
+	protected IJavaElement[] children = JavaElement.NO_ELEMENTS;
+
+	ModuleReferenceInfo[] requires;
+	PackageExportInfo[] exports;
+	ServiceInfo[] services;
+	PackageExportInfo[] opens;
+	char[][] usedServices;
+	IModuleDescription handle;
+	char[] name;
+	private Map<IJavaElement,String[]> categories;
+
+	static class ModuleReferenceInfo extends MemberElementInfo implements IModule.IModuleReference {
+		char[] name;
+		int modifiers;
+		@Override
+		public char[] name() {
+			return this.name;
+		}
+		@Override
+		public int getModifiers() {
+			return this.modifiers;
+		}
+	}
+	static class PackageExportInfo extends MemberElementInfo implements IModule.IPackageExport {
+		char[] pack;
+		char[][] target;
+		@Override
+		public String toString() {
+			StringBuffer buffer = new StringBuffer();
+			buffer.append(this.pack);
+			if (this.target != null) {
+				buffer.append(" to "); //$NON-NLS-1$
+				for (char[] mod : this.target) {
+					buffer.append(mod);
+				}
+			}
+			buffer.append(';');
+			return buffer.toString();
+		}
+
+		@Override
+		public char[] name() {
+			return this.pack;
+		}
+
+		@Override
+		public char[][] targets() {
+			return this.target;
+		}
+	}
+
+	static class ServiceInfo extends MemberElementInfo implements IModule.IService {
+		char[] serviceName;
+		char[][] implNames;
+		@Override
+		public char[] name() {
+			return this.serviceName;
+		}
+		@Override
+		public char[][] with() {
+			return this.implNames;
+		}
+		@Override
+		public String toString() {
+			StringBuffer buffer = new StringBuffer();
+			buffer.append(this.serviceName);
+			buffer.append(" with "); //$NON-NLS-1$
+			for (int i = 0; i < this.implNames.length; i++) {
+				buffer.append(this.implNames[i]);
+				if (i < this.implNames.length - 1)
+					buffer.append(", "); //$NON-NLS-1$
+			}
+			buffer.append(';');
+			return buffer.toString();
+		}
+	}
+
+	public static ModuleDescriptionInfo createModule(ModuleDeclaration module) {
+		ModuleDescriptionInfo mod = new ModuleDescriptionInfo();
+		mod.name = module.moduleName;
+		mod.setFlags(module.modifiers);
+		if (module.requiresCount > 0) {
+			RequiresStatement[] refs = module.requires;
+			mod.requires = new ModuleReferenceInfo[refs.length+1];
+			mod.requires[0] = getJavaBaseReference();
+			for (int i = 0; i < refs.length; i++) {
+				mod.requires[i+1] = new ModuleReferenceInfo();
+				mod.requires[i+1].name = CharOperation.concatWith(refs[i].module.tokens, '.'); // Check why ModuleReference#tokens must be a char[][] and not a char[] or String;
+				mod.requires[i+1].modifiers = refs[i].modifiers;
+			}
+		} else {
+			mod.requires = CharOperation.equals(module.moduleName, TypeConstants.JAVA_BASE) 
+					? NO_REQUIRES 
+					: new ModuleReferenceInfo[] { getJavaBaseReference() };
+		}
+		if (module.exportsCount > 0) {
+			ExportsStatement[] refs = module.exports;
+			mod.exports = new PackageExportInfo[refs.length];
+			for (int i = 0; i < refs.length; i++) {
+				PackageExportInfo exp = createPackageExport(refs[i]);
+				mod.exports[i] = exp;
+			}
+		} else {
+			mod.exports = NO_EXPORTS;
+		}
+		if (module.usesCount > 0) {
+			UsesStatement[] uses = module.uses;
+			mod.usedServices = new char[uses.length][];
+			for (int i = 0; i < uses.length; i++) {
+				mod.usedServices[i] = CharOperation.concatWith(uses[i].serviceInterface.getTypeName(), '.');
+			}
+		} else {
+			mod.usedServices = NO_USES;
+		}
+		if (module.servicesCount > 0) {
+			ProvidesStatement[] provides = module.services;
+			mod.services = new ServiceInfo[provides.length];
+			for (int i = 0; i < provides.length; i++) {
+				mod.services[i] = createService(provides[i]);
+			}
+		} else {
+			mod.services = NO_PROVIDES;
+		}
+		if (module.opensCount > 0) {
+			OpensStatement[] opens = module.opens;
+			mod.opens = new PackageExportInfo[opens.length];
+			for (int i = 0; i < opens.length; i++) {
+				PackageExportInfo op = createOpensInfo(opens[i]);
+				mod.opens[i] = op;
+			}
+		} else {
+			mod.opens = NO_OPENS;
+		}
+		return mod;
+	}
+
+	private static ModuleReferenceInfo getJavaBaseReference() {
+		ModuleReferenceInfo ref = new ModuleReferenceInfo();
+		ref.name = TypeConstants.JAVA_BASE;
+		return ref;
+	}
+
+	private static PackageExportInfo createPackageExport(ExportsStatement ref) {
+		PackageExportInfo exp = new PackageExportInfo();
+		exp.pack = ref.pkgName;
+		ModuleReference[] imp = ref.targets;
+		if (imp != null) {
+			exp.target = new char[imp.length][];
+			for(int j = 0; j < imp.length; j++) {
+				exp.target[j] = imp[j].moduleName;
+			}
+		}
+		return exp;
+	}
+	private static PackageExportInfo createOpensInfo(OpensStatement opens) {
+		PackageExportInfo open = new PackageExportInfo();
+		open.pack = opens.pkgName;
+		ModuleReference[] imp = opens.targets;
+		if (imp != null) {
+			open.target = new char[imp.length][];
+			for(int j = 0; j < imp.length; j++) {
+				open.target[j] = imp[j].moduleName;
+			}
+		}
+		return open;
+	}
+
+	private static ServiceInfo createService(ProvidesStatement provides) {
+		ServiceInfo info = new ServiceInfo();
+		info.serviceName = CharOperation.concatWith(provides.serviceInterface.getTypeName(), '.');
+		TypeReference[] implementations = provides.implementations;
+		info.implNames = new char[implementations.length][];
+		for(int i = 0; i < implementations.length; i++) {
+			info.implNames[i] = CharOperation.concatWith(implementations[i].getTypeName(), '.');
+		}
+		return info;
+	}
+
+	protected void setHandle(IModuleDescription handle) {
+		this.handle = handle;
+	}
+
+	public IModuleDescription getHandle() {
+		return this.handle;
+	}
+
+	@Override
+	public IJavaElement[] getChildren() {
+		return this.children;
+	}
+
+	@Override
+	public ICompilationUnit getCompilationUnit() {
+		IJavaElement parent = this.handle.getParent();
+		if (parent instanceof CompilationUnit)
+			return (CompilationUnit) parent;
+		return null;
+	}
+
+	@Override
+	public boolean isOpen() {
+		return (this.flags & ClassFileConstants.ACC_OPEN) != 0;
+	}
+
+	@Override
+	public char[] name() {
+		return this.name;
+	}
+
+	@Override
+	public IModule.IModuleReference[] requires() {
+		return this.requires;
+	}
+	@Override
+	public IPackageExport[] exports() {
+		return this.exports;
+	}
+
+	@Override
+	public char[][] uses() {
+		return this.usedServices;
+	}
+
+	@Override
+	public IService[] provides() {
+		return this.services;
+	}
+
+	@Override
+	public IPackageExport[] opens() {
+		return this.opens;
+	}
+
+	public void addCategories(IJavaElement element, char[][] elementCategories) {
+		if (elementCategories == null) return;
+		if (this.categories == null)
+			this.categories = new HashMap<>();
+		this.categories.put(element, CharOperation.toStrings(elementCategories));
+	}
+
+	public Map<IJavaElement, String[]> getCategories() {
+		return this.categories;
+	}
+
+	@Override
+	public String toString() {
+		StringBuffer buffer = new StringBuffer(getClass().getName());
+		toStringContent(buffer);
+		return buffer.toString();
+	}
+	protected void toStringContent(StringBuffer buffer) {
+		buffer.append("\n"); //$NON-NLS-1$
+		if (this.isOpen())
+			buffer.append("open "); //$NON-NLS-1$
+		buffer.append("module "); //$NON-NLS-1$
+		buffer.append(this.name).append(' ');
+		buffer.append('{').append('\n');
+		if (this.requires != null && this.requires.length > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.requires.length; i++) {
+				buffer.append("\trequires "); //$NON-NLS-1$
+				if (this.requires[i].isTransitive()) {
+					buffer.append("transitive "); //$NON-NLS-1$
+				}
+				if (this.requires[i].isStatic()) {
+					buffer.append("static "); //$NON-NLS-1$
+				}
+				buffer.append(this.requires[i].name);
+				buffer.append(';').append('\n');
+			}
+		}
+		if (this.exports != null && this.exports.length > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.exports.length; i++) {
+				buffer.append("\texports "); //$NON-NLS-1$
+				buffer.append(this.exports[i].toString()).append('\n');
+			}
+		}
+		if (this.usedServices != null && this.usedServices.length > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.usedServices.length; i++) {
+				buffer.append("\tuses "); //$NON-NLS-1$
+				buffer.append(this.usedServices[i]).append('\n');
+			}
+		}
+		if (this.services != null && this.services.length > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.services.length; i++) {
+				buffer.append("\tprovides "); //$NON-NLS-1$
+				buffer.append(this.services[i].toString()).append('\n');
+			}
+		}
+		if (this.opens != null && this.opens.length > 0) {
+			buffer.append('\n');
+			for(int i = 0; i < this.opens.length; i++) {
+				buffer.append("\topens "); //$NON-NLS-1$
+				buffer.append(this.opens[i].toString()).append('\n');
+			}
+		}
+		buffer.append('\n').append('}').toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.java
new file mode 100644
index 0000000..75d24ca
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainer.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.core.IClasspathAttribute;
+import org.aspectj.org.eclipse.jdt.core.IClasspathContainer;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+
+public class ModulePathContainer implements IClasspathContainer{
+
+	private IJavaProject project;
+
+	public ModulePathContainer(IJavaProject project) {
+		this.project = project;
+	}
+	@Override
+	public IClasspathEntry[] getClasspathEntries() {
+		//
+		List<IClasspathEntry> entries = new ArrayList<>();
+		ModuleSourcePathManager manager = JavaModelManager.getModulePathManager();
+		try {
+			AbstractModule module = (AbstractModule) ((JavaProject)this.project).getModuleDescription();
+			if (module == null)
+				return new IClasspathEntry[0];
+			for (org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference ref : module.getRequiredModules()) {
+				IModulePathEntry entry = manager.getModuleRoot(new String(ref.name()));
+				JavaProject refRoot = null;
+				if (entry instanceof ProjectEntry) {
+					refRoot = ((ProjectEntry) entry).project;
+				}
+				if (refRoot == null)
+					continue;
+				IPath path = refRoot.getPath();
+				IClasspathAttribute moduleAttribute = new ClasspathAttribute(IClasspathAttribute.MODULE, "true"); //$NON-NLS-1$
+				entries.add(JavaCore.newProjectEntry(path, ClasspathEntry.NO_ACCESS_RULES,
+						false,
+						new IClasspathAttribute[] {moduleAttribute}, ref.isTransitive()));
+			}
+		} catch (JavaModelException e) {
+			// ignore
+		}
+		return entries.toArray(new IClasspathEntry[entries.size()]);
+	}
+
+	@Override
+	public String getDescription() {
+		// 
+		return "Module path"; //$NON-NLS-1$
+	}
+
+	@Override
+	public int getKind() {
+		// 
+		return K_APPLICATION;
+	}
+
+	@Override
+	public IPath getPath() {
+		// 
+		return new Path(JavaCore.MODULE_PATH_CONTAINER_ID);
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.java
new file mode 100644
index 0000000..04d2c8c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModulePathContainerInitializer.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.ClasspathContainerInitializer;
+import org.aspectj.org.eclipse.jdt.core.IClasspathContainer;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+public class ModulePathContainerInitializer extends ClasspathContainerInitializer {
+
+	@Override
+	public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
+		//
+		if (isModulePathContainer(containerPath)) {
+			if (project instanceof JavaProject) {
+				// TODO: should project compliance level be checked here?
+				ModulePathContainer container = new ModulePathContainer(project);
+				JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project },
+						new IClasspathContainer[] { container }, null);
+			}
+		} else if (JavaModelManager.CP_RESOLVE_VERBOSE || JavaModelManager.CP_RESOLVE_VERBOSE_FAILURE) {
+			verbose_not_a_module_project(project, containerPath);
+		}
+	}
+	private boolean isModulePathContainer(IPath path) {
+		return path != null && JavaCore.MODULE_PATH_CONTAINER_ID.equals(path.segment(0));
+	}
+	private void verbose_not_a_module_project(IJavaProject project, IPath containerPath) {
+		Util.verbose(
+			"Module path INIT - FAILED (not a module project)\n" + //$NON-NLS-1$
+			"	project: " + project.getElementName() + '\n' + //$NON-NLS-1$
+			"	container path: " + containerPath); //$NON-NLS-1$
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.java
new file mode 100644
index 0000000..3cb7b01
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleSourcePathManager.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+
+public class ModuleSourcePathManager {
+
+	private Map<String, IModulePathEntry> knownModules = new HashMap<String, IModulePathEntry>(11);
+
+	private IModulePathEntry getModuleRoot0(String name) {
+		return this.knownModules.get(name);
+	}
+	public IModulePathEntry getModuleRoot(String name) {
+		IModulePathEntry root = getModuleRoot0(name);
+		if (root == null) {
+			try {
+				seekModule(name.toCharArray(),false, new JavaElementRequestor());
+			} catch (JavaModelException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		root = this.knownModules.get(name);
+		return root;
+	}
+	public void addEntry(IModuleDescription module, JavaProject project) throws JavaModelException {
+		String moduleName = new String(module.getElementName().toCharArray());
+		IModulePathEntry entry = getModuleRoot0(moduleName);
+		if (entry != null) {
+			// TODO : Should we signal error via JavaModelException
+			return;
+		}
+		this.knownModules.put(moduleName, new ProjectEntry(project));
+	}
+
+	public void removeEntry(JavaProject javaProject) {
+		Entry<String, IModulePathEntry> entry = this.knownModules.entrySet().stream()
+			.filter(e -> ProjectEntry.representsProject(e.getValue(), javaProject))
+			.findFirst()
+			.orElse(null);
+
+		String key = entry != null ? entry.getKey() : null;
+		if (key != null) {
+			this.knownModules.remove(key);
+		}
+	}
+	interface IPrefixMatcherCharArray {
+		boolean matches(char[] prefix, char[] name);
+	}
+	public void seekModule(char[] name, boolean prefixMatch, IJavaElementRequestor requestor) throws JavaModelException {
+		if (name == null)
+			return;
+		IPrefixMatcherCharArray prefixMatcher = prefixMatch ? CharOperation.equals(name, CharOperation.ALL_PREFIX) ?
+				(x, y) -> true : CharOperation::prefixEquals : CharOperation :: equals;
+		IJavaProject[] projects = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProjects();
+		for (int i = 0; i < projects.length; i++) {
+			IJavaProject project = projects[i];
+			if (!project.getProject().isAccessible())
+				continue;
+			if (project instanceof JavaProject) {
+				IModuleDescription module = ((JavaProject) project).getModuleDescription();
+				if (module != null) {
+					if (prefixMatcher.matches(name, module.getElementName().toCharArray())) {
+						//addEntry(module, (JavaProject) project);
+						requestor.acceptModule(module);
+					}
+				}
+			}
+		}
+	}
+	public IModule getModule(char[] name) {
+		IModulePathEntry root = getModuleRoot0(CharOperation.charToString(name));
+		if (root != null)
+			try {
+				return root.getModule();
+			} catch (Exception e1) {
+				//
+				return null;
+			}
+		JavaElementRequestor requestor = new JavaElementRequestor();
+		try {
+			seekModule(name, false, requestor);
+		} catch (JavaModelException e) {
+			// 
+		}
+		IModuleDescription[] modules = requestor.getModules();
+		if (modules.length > 0) {
+			IModuleDescription module = modules[0];
+			try {
+				return (IModule) ((JavaElement) module).getElementInfo();
+			} catch (JavaModelException e) {
+				e.printStackTrace();
+			}
+		}
+		return null; 
+	}
+//	public IModuleDeclaration[] getModules() {
+//		if (this.knownModules.size() == 0) {
+//			return new IModuleDeclaration[0];
+//		}
+//		List<IModuleDeclaration> modules = new ArrayList<IModuleDeclaration>();
+//		for (IModulePathEntry val : this.knownModules.values()) {
+//			try {
+//				modules.add(val.getModule());
+//			} catch (Exception e) {
+//				// TODO Auto-generated catch block
+//				e.printStackTrace();
+//			}
+//		}
+//		return modules.toArray(new IModuleDeclaration[modules.size()]);
+//	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.java
new file mode 100644
index 0000000..f0854b6
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ModuleUpdater.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Consumer;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.aspectj.org.eclipse.jdt.core.IClasspathAttribute;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdatesByKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+/**
+ * An instance of this class collects <code>add-exports</code> and <code>add-reads</code> options from
+ * a project's class path entries, and performs the corresponding updates when requested by the compiler.
+ * <p>For <code>patch-module</code> and <code>limit-modules</code> see
+ * org.aspectj.org.eclipse.jdt.internal.core.builder.ModuleEntryProcessor.</p>
+ */
+public class ModuleUpdater {
+
+	private JavaProject javaProoject;
+
+	private Map<String,UpdatesByKind> moduleUpdates = new HashMap<>();
+
+	public ModuleUpdater(JavaProject javaProject) {
+		this.javaProoject = javaProject;
+	}
+
+	/**
+	 * Detects any ADD_EXPORTS or ADD_READS classpath attributes, parses the value,
+	 * and collects the resulting module updates.
+	 * @param entry a classpath entry of the current project.
+	 * @throws JavaModelException 
+	 */
+	public void computeModuleUpdates(IClasspathEntry entry) throws JavaModelException {
+		for (IClasspathAttribute attribute : entry.getExtraAttributes()) {
+			String attributeName = attribute.getName();
+			String values = attribute.getValue(); // the attributes considered here may have multiple values separated by ':'
+			if (attributeName.equals(IClasspathAttribute.ADD_EXPORTS)) {
+				for (String value : values.split(":")) { // format: <source-module>/<package>=<target-module>(,<target-module>)* //$NON-NLS-1$
+					int slash = value.indexOf('/');
+					int equals = value.indexOf('=');
+					if (slash != -1 && equals != -1) {
+						String modName = value.substring(0, slash);
+						char[] packName = value.substring(slash+1, equals).toCharArray();
+						char[][] targets = CharOperation.splitOn(',', value.substring(equals+1).toCharArray());
+						addModuleUpdate(modName, new IUpdatableModule.AddExports(packName, targets), UpdateKind.PACKAGE);
+					} else {
+						Util.log(IStatus.WARNING, "Invalid argument to add-exports: "+value); //$NON-NLS-1$
+					}
+				}
+			} else if (attributeName.equals(IClasspathAttribute.ADD_READS)) {
+				for (String value : values.split(":")) { // format: <source-module>=<target-module> //$NON-NLS-1$
+					int equals = value.indexOf('=');
+					if (equals != -1) {
+						String srcMod = value.substring(0, equals);
+						char[] targetMod = value.substring(equals+1).toCharArray();
+						addModuleUpdate(srcMod, new IUpdatableModule.AddReads(targetMod), UpdateKind.MODULE);
+					} else {
+						Util.log(IStatus.WARNING, "Invalid argument to add-reads: "+value); //$NON-NLS-1$
+					}
+				}
+			} else if (attributeName.equals(IClasspathAttribute.MODULE_MAIN_CLASS)) {
+				IModuleDescription module = this.javaProoject.getModuleDescription();
+				if (module == null)
+					throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST));
+				addModuleUpdate(module.getElementName(), m -> m.setMainClassName(values.toCharArray()), UpdateKind.MODULE);
+			}
+		}
+	}
+
+	public void addModuleUpdate(String moduleName, Consumer<IUpdatableModule> update, UpdateKind kind) {
+		UpdatesByKind updates = this.moduleUpdates.get(moduleName);
+		if (updates == null) {
+			this.moduleUpdates.put(moduleName, updates = new UpdatesByKind());
+		}
+		updates.getList(kind, true).add(update);
+	}
+
+	/**
+	 * @see IModuleAwareNameEnvironment#applyModuleUpdates(IUpdatableModule, UpdateKind)
+	 */
+	public void applyModuleUpdates(IUpdatableModule compilerModule, UpdateKind kind) {
+		char[] name = compilerModule.name();
+		if (name != ModuleBinding.UNNAMED) { // can't update the unnamed module
+			UpdatesByKind updates = this.moduleUpdates.get(String.valueOf(name));
+			if (updates != null) {
+				for (Consumer<IUpdatableModule> update : updates.getList(kind, false))
+					update.accept(compilerModule);
+			}
+		}
+	}
+
+	private static boolean containsNonModularDependency(IClasspathEntry[] entries) {
+		for (IClasspathEntry e : entries) {
+			if (e.getEntryKind() != IClasspathEntry.CPE_SOURCE && !((ClasspathEntry) e).isModular())
+				return true;
+		}
+		return false;
+	}
+
+	// Bug 520713: allow test code to access code on the classpath
+	public void addReadUnnamedForNonEmptyClasspath(JavaProject project, IClasspathEntry[] expandedClasspath)
+			throws JavaModelException {
+		for (String moduleName : determineModulesOfProjectsWithNonEmptyClasspath(project, expandedClasspath)) {
+			addModuleUpdate(moduleName, m -> m.addReads(ModuleBinding.ALL_UNNAMED), UpdateKind.MODULE);
+		}
+	}
+
+	public static Set<String> determineModulesOfProjectsWithNonEmptyClasspath(JavaProject project,
+			IClasspathEntry[] expandedClasspath) throws JavaModelException {
+		LinkedHashSet<String> list = new LinkedHashSet<>();
+		if (containsNonModularDependency(expandedClasspath)) {
+			IModuleDescription moduleDescription = project.getModuleDescription();
+			if (moduleDescription != null) {
+				list.add(moduleDescription.getElementName());
+			}
+		}
+		for (IClasspathEntry e1 : expandedClasspath) {
+			if (e1.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
+				Object target = JavaModel.getTarget(e1.getPath(), true);
+				if (target instanceof IProject) {
+					IProject prereqProject = (IProject) target;
+					if (JavaProject.hasJavaNature(prereqProject)) {
+						JavaProject prereqJavaProject = (JavaProject) JavaCore.create(prereqProject);
+						if (containsNonModularDependency(prereqJavaProject.getResolvedClasspath())) {
+							IModuleDescription prereqModuleDescription = prereqJavaProject.getModuleDescription();
+							if (prereqModuleDescription != null) {
+								list.add(prereqModuleDescription.getElementName());
+							}
+						}
+					}
+				}
+			}
+		}
+		return list;
+	}
+	public UpdatesByKind getUpdates(String moduleName) {
+		return this.moduleUpdates.get(moduleName);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.java
index 3b053c1..f0e9c17 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveElementsOperation.java
@@ -34,12 +34,14 @@
  * Returns the <code>String</code> to use as the main task name
  * for progress monitoring.
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_moveElementProgress;
 }
 /**
  * @see CopyElementsOperation#isMove()
  */
+@Override
 protected boolean isMove() {
 	return true;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.java
index c660bfb..66b348e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MovePackageFragmentRootOperation.java
@@ -116,6 +116,7 @@
 			updateModelFlags,
 			sibling);
 	}
+	@Override
 	protected void executeOperation() throws JavaModelException {
 
 		IPackageFragmentRoot root = (IPackageFragmentRoot) getElementToProcess();
@@ -177,6 +178,7 @@
 			final IFolder destFolder = workspaceRoot.getFolder(this.destination);
 			final IPath[] nestedFolders = getNestedFolders(root);
 			IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+				@Override
 				public boolean visit(IResourceProxy proxy) throws CoreException {
 					if (proxy.getType() == IResource.FOLDER) {
 						IPath path = proxy.requestFullPath();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.java
index 1791d2e..52a1a76 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MoveResourceElementsOperation.java
@@ -33,12 +33,14 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_moveResourceProgress;
 }
 /**
  * @see CopyResourceElementsOperation#isMove()
  */
+@Override
 protected boolean isMove() {
 	return true;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.java
index 0b4029a..e698f15 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/MultiOperation.java
@@ -87,6 +87,7 @@
 	 * If multiple errors occured, the corresponding <code>JavaModelStatus</code> is a
 	 * multi-status. Otherwise, it is a simple one.
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		processElements();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.java
index 6c92e17..d41cda5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NameLookup.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - contribution for bug 337868 - [compiler][model] incomplete support for package-info.java when using SearchableEnvironment
@@ -13,14 +13,20 @@
 
 import java.io.File;
 import java.util.*;
+import java.util.function.Function;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
 import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.core.IField;
+import org.aspectj.org.eclipse.jdt.core.IInitializer;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IType;
@@ -32,10 +38,12 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.AbstractModule.AutoModule;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HashtableOfArrayToObject;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
@@ -58,14 +66,26 @@
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class NameLookup implements SuffixConstants {
+
+	private static IModuleDescription NO_MODULE = new SourceModule(null, "Not a module") { /* empty */ }; //$NON-NLS-1$
+
 	public static class Answer {
 		public IType type;
+		public IModuleDescription module;
 		AccessRestriction restriction;
 		IClasspathEntry entry;
 		Answer(IType type, AccessRestriction restriction, IClasspathEntry entry) {
+			this(type, restriction, entry, null);
+		}
+		Answer(IType type, AccessRestriction restriction, IClasspathEntry entry, IModuleDescription module) {
 			this.type = type;
 			this.restriction = restriction;
 			this.entry = entry;
+			this.module = module;
+		}
+		Answer(IModuleDescription module) {
+			this.module = module;
+			this.restriction = null;
 		}
 		public boolean ignoreIfBetter() {
 			return this.restriction != null && this.restriction.ignoreIfBetter();
@@ -81,6 +101,62 @@
 			return otherAnswer.restriction != null
 				&& this.restriction.getProblemId() < otherAnswer.restriction.getProblemId();
 		}
+		@Override
+		public String toString() {
+			StringBuilder builder = new StringBuilder(this.type.toString());
+			builder.append("from ") //$NON-NLS-1$
+			.append(this.module);
+			return builder.toString();
+		}
+	}
+
+	private class Selector implements IJavaElementRequestor {
+		public List<IPackageFragment> pkgFragments;
+
+		public Selector(String moduleName) {
+			this.pkgFragments = new ArrayList<>();
+		}
+
+		@Override
+		public void acceptField(IField field) {
+			// do nothing
+		}
+
+		@Override
+		public void acceptInitializer(IInitializer initializer) {
+			// do nothing
+		}
+
+		@Override
+		public void acceptMemberType(IType type) {
+			// do nothing
+		}
+
+		@Override
+		public void acceptMethod(IMethod method) {
+			// do nothing
+		}
+
+		@Override
+		public void acceptPackageFragment(IPackageFragment packageFragment) {
+			this.pkgFragments.add(packageFragment);
+		}
+
+		@Override
+		public void acceptType(IType type) {
+			// do nothing
+		}
+
+		@Override
+		public void acceptModule(IModuleDescription module) {
+			// do nothing
+		}
+
+		@Override
+		public boolean isCanceled() {
+			// TODO Auto-generated method stub
+			return false;
+		}
 	}
 
 	// TODO (jerome) suppress the accept flags (qualified name is sufficient to find a type)
@@ -135,7 +211,9 @@
 	 * Reverse map from root path to corresponding resolved CP entry
 	 * (so as to be able to figure inclusion/exclusion rules)
 	 */
-	protected Map rootToResolvedEntries;
+	protected Map<IPackageFragmentRoot,IClasspathEntry> rootToResolvedEntries;
+
+	protected Map<IPackageFragmentRoot,IModuleDescription> rootToModule;
 
 	/**
 	 * A map from package handles to a map from type name to an IType or an IType[].
@@ -159,6 +237,7 @@
 			Util.verbose(" -> working copy size: " + (workingCopies == null ? 0 : workingCopies.length));  //$NON-NLS-1$
 			start = System.currentTimeMillis();
 		}
+		this.rootToModule = new HashMap<>();
 		this.packageFragmentRoots = packageFragmentRoots;
 		if (workingCopies == null) {
 			this.packageFragments = packageFragments;
@@ -591,11 +670,11 @@
 		JavaModelManager manager = JavaModelManager.getJavaModelManager();
 		try {
 			IJavaProject javaProject = project;
-			Map secondaryTypePaths = manager.secondaryTypes(javaProject, waitForIndexes, monitor);
+			Map<String, Map<String, IType>> secondaryTypePaths = manager.secondaryTypes(javaProject, waitForIndexes, monitor);
 			if (secondaryTypePaths.size() > 0) {
-				Map types = (Map) secondaryTypePaths.get(packageName==null?"":packageName); //$NON-NLS-1$
+				Map<String, IType> types = secondaryTypePaths.get(packageName==null?"":packageName); //$NON-NLS-1$
 				if (types != null && types.size() > 0) {
-					IType type = (IType) types.get(typeName);
+					IType type = types.get(typeName);
 					if (type != null) {
 						if (JavaModelManager.VERBOSE) {
 							Util.verbose("NameLookup FIND SECONDARY TYPES:"); //$NON-NLS-1$
@@ -616,6 +695,23 @@
 	}
 
 	/**
+	 * Find type in the given modules considering secondary types but without waiting for indexes.
+	 * It means that secondary types may be not found under certain circumstances...
+	 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=118789"
+	 */
+	public Answer findType(String typeName, String packageName, boolean partialMatch, int acceptFlags, boolean checkRestrictions, IPackageFragmentRoot[] moduleContext) {
+		return findType(typeName,
+			packageName,
+			partialMatch,
+			acceptFlags,
+			true/* consider secondary types */,
+			false/* do NOT wait for indexes */,
+			checkRestrictions,
+			null,
+			moduleContext);
+	}
+
+	/**
 	 * Find type considering secondary types but without waiting for indexes.
 	 * It means that secondary types may be not found under certain circumstances...
 	 * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=118789"
@@ -630,7 +726,6 @@
 			checkRestrictions,
 			null);
 	}
-
 	/**
 	 * Find type. Considering secondary types and waiting for indexes depends on given corresponding parameters.
 	 */
@@ -643,6 +738,30 @@
 			boolean waitForIndexes,
 			boolean checkRestrictions,
 			IProgressMonitor monitor) {
+
+		return findType(typeName,
+				packageName,
+				partialMatch,
+				acceptFlags,
+				considerSecondaryTypes,
+				waitForIndexes,
+				checkRestrictions,
+				monitor,
+				null); // no module
+	}
+	/**
+	 * Find type. Considering secondary types and waiting for indexes depends on given corresponding parameters.
+	 */
+	public Answer findType(
+			String typeName,
+			String packageName,
+			boolean partialMatch,
+			int acceptFlags,
+			boolean considerSecondaryTypes,
+			boolean waitForIndexes,
+			boolean checkRestrictions,
+			IProgressMonitor monitor,
+			IPackageFragmentRoot[] moduleContext) {
 		if (packageName == null || packageName.length() == 0) {
 			packageName= IPackageFragment.DEFAULT_PACKAGE_NAME;
 		} else if (typeName.length() > 0 && ScannerHelper.isLowerCase(typeName.charAt(0))) {
@@ -652,7 +771,7 @@
 
 		// Look for concerned package fragments
 		JavaElementRequestor elementRequestor = new JavaElementRequestor();
-		seekPackageFragments(packageName, false, elementRequestor);
+		seekPackageFragments(packageName, false, elementRequestor, moduleContext);
 		IPackageFragment[] packages= elementRequestor.getPackageFragments();
 
 		// Try to find type in package fragments list
@@ -672,7 +791,8 @@
 						accessRestriction = getViolatedRestriction(typeName, packageName, entry, accessRestriction);
 					}
 				}
-				Answer answer = new Answer(type, accessRestriction, entry);
+				Answer answer = new Answer(type, accessRestriction, entry,
+										getModuleDescription(root, this.rootToModule, this.rootToResolvedEntries::get));
 				if (!answer.ignoreIfBetter()) {
 					if (answer.isBetter(suggestedAnswer))
 						return answer;
@@ -731,6 +851,58 @@
 		return type == null ? null : new Answer(type, null, null);
 	}
 
+	public static IModule getModuleDescriptionInfo(IModuleDescription moduleDesc) {
+		if (moduleDesc != null) {
+			try {
+				if (moduleDesc instanceof AutoModule) {
+					boolean nameFromManifest = ((AutoModule) moduleDesc).isAutoNameFromManifest();
+					return IModule.createAutomatic(moduleDesc.getElementName().toCharArray(), nameFromManifest);
+				} else {
+					return ((AbstractModule) moduleDesc).getModuleInfo();
+				}
+			} catch (JavaModelException e) {
+				if (!e.isDoesNotExist())
+					Util.log(e);
+			}
+		}
+		return null;
+	}
+
+	/** Internal utility, which is able to answer explicit and automatic modules. */
+	static IModuleDescription getModuleDescription(IPackageFragmentRoot root, Map<IPackageFragmentRoot,IModuleDescription> cache, Function<IPackageFragmentRoot,IClasspathEntry> rootToEntry) {
+		IModuleDescription module = cache.get(root);
+		if (module != null)
+			return module != NO_MODULE ? module : null;
+		try {
+			if (root.getKind() == IPackageFragmentRoot.K_SOURCE)
+				module = root.getJavaProject().getModuleDescription(); // from any root in this project
+			else
+				module = root.getModuleDescription();
+		} catch (JavaModelException e) {
+			cache.put(root, NO_MODULE);
+			return null;
+		}
+		if (module == null) {
+			// 2nd attempt: try automatic module:
+			IClasspathEntry classpathEntry = rootToEntry.apply(root);
+			if (classpathEntry instanceof ClasspathEntry) {
+				if (((ClasspathEntry) classpathEntry).isModular()) {
+					// modular but no module-info implies this is an automatic module
+					module = ((PackageFragmentRoot) root).getAutomaticModuleDescription(classpathEntry);
+				}
+			}
+		}
+		cache.put(root, module != null ? module : NO_MODULE);
+		return module;
+	}
+
+	public IModule getModuleDescriptionInfo(PackageFragmentRoot root) {
+		IModuleDescription desc = getModuleDescription(root, this.rootToModule, this.rootToResolvedEntries::get);
+		if (desc != null) {
+			return getModuleDescriptionInfo(desc);
+		}
+		return null;
+	}
 	private AccessRestriction getViolatedRestriction(String typeName, String packageName, ClasspathEntry entry, AccessRestriction accessRestriction) {
 		AccessRuleSet accessRuleSet = entry.getAccessRuleSet();
 		if (accessRuleSet != null) {
@@ -846,6 +1018,24 @@
 		}
 		return findType(className, packageName, partialMatch, acceptFlags, considerSecondaryTypes, waitForIndexes, checkRestrictions, monitor);
 	}
+	public Answer findModule(char[] moduleName) {
+		JavaElementRequestor requestor = new JavaElementRequestor();
+		seekModule(moduleName, false, requestor);
+		IModuleDescription[] modules = requestor.getModules();
+		if (modules.length == 0) {
+			try {
+				// FIXME(SHMOD): only considers source modules?? (MODULEPATH container is only experimental)
+				JavaModelManager.getModulePathManager().seekModule(moduleName, false, requestor);
+				modules = requestor.getModules();
+			} catch (JavaModelException e) {
+				// TODO Auto-generated catch block
+			}
+		}
+		if (modules.length > 0) { // TODO what to do??
+			return new Answer(modules[0]);
+		}
+		return null;
+	}
 
 	private IType getMemberType(IType type, String name, int dot) {
 		while (dot != -1) {
@@ -861,6 +1051,24 @@
 		return this.packageFragments.get(pkgName) != null;
 	}
 
+	public boolean isPackage(String[] pkgName, IPackageFragmentRoot[] moduleContext) {
+		if (moduleContext == null) // includes the case where looking for module UNNAMED or ANY
+			return isPackage(pkgName);
+		
+		for (IPackageFragmentRoot moduleRoot : moduleContext) {
+			if (moduleRoot.getPackageFragment(String.join(".", pkgName)).exists()) //$NON-NLS-1$
+				return true;
+		}
+		return false;
+	}
+
+	private boolean moduleMatches(IPackageFragmentRoot root, IPackageFragmentRoot[] moduleContext) {
+		for (IPackageFragmentRoot moduleRoot : moduleContext)
+			if (moduleRoot.equals(root))
+				return true;
+		return false;
+	}
+
 	/**
 	 * Returns true if the given element's name matches the
 	 * specified <code>searchName</code>, otherwise false.
@@ -907,13 +1115,97 @@
 	 * @param partialMatch partial name matches qualify when <code>true</code>;
 	 *	only exact name matches qualify when <code>false</code>
 	 */
+	public void seekPackageFragments(String name, boolean partialMatch, IJavaElementRequestor requestor, IPackageFragmentRoot[] moduleContext) {
+		if (moduleContext == null) {
+			seekPackageFragments(name, partialMatch, requestor);
+			return;
+		}
+		if (partialMatch) {
+			seekModuleAwarePartialPackageFragments(name, requestor, moduleContext);
+			return;
+		}
+		for (IPackageFragmentRoot moduleRoot : moduleContext) {
+			IPackageFragment fragment = moduleRoot.getPackageFragment(name);
+			if (fragment.exists())
+				requestor.acceptPackageFragment(fragment);
+		}
+	}
+
+	/**
+	 * Notifies the given requestor of all package fragments with the
+	 * given name. Checks the requestor at regular intervals to see if the
+	 * requestor has canceled. The domain of
+	 * the search is bounded by the <code>IJavaProject</code>
+	 * this <code>NameLookup</code> was obtained from.
+	 *
+	 * @param partialMatch partial name matches qualify when <code>true</code>;
+	 *	only exact name matches qualify when <code>false</code>
+	 */
+	public void seekTypes(String pkgName, String name, boolean partialMatch, IJavaElementRequestor requestor, 
+			int acceptFlags, IPackageFragmentRoot[] moduleContext, String moduleName) {
+		Selector selector = new Selector(moduleName);
+		seekPackageFragments(pkgName, true /*partialMatch*/, selector, moduleContext);	
+		if (selector.pkgFragments.size() == 0) return;
+		for (IPackageFragment pkg : selector.pkgFragments) {
+			seekTypes(name, pkg, partialMatch, acceptFlags, requestor);
+		}
+	}
+	
+	private void seekModuleAwarePartialPackageFragments(String name, IJavaElementRequestor requestor, IPackageFragmentRoot[] moduleContext) {
+		boolean allPrefixMatch = CharOperation.equals(name.toCharArray(), CharOperation.ALL_PREFIX);
+		String lName = name.toLowerCase();
+		Arrays.stream(this.packageFragments.keyTable)
+		.filter(k -> k != null)
+		.filter(k -> allPrefixMatch || Util.concatWith((String[])k, '.').toLowerCase().startsWith(lName))
+		.forEach(k -> {
+			checkModulePackages(requestor, moduleContext, this.packageFragments.getIndex(k));
+		});
+	}
+
+	private void checkModulePackages(IJavaElementRequestor requestor, IPackageFragmentRoot[] moduleContext, int pkgIndex) {
+		Object value = this.packageFragments.valueTable[pkgIndex];
+		// reuse existing String[]
+		String[] pkgName = (String[]) this.packageFragments.keyTable[pkgIndex];
+		if (value instanceof PackageFragmentRoot) {
+			PackageFragmentRoot root = (PackageFragmentRoot) value;
+			if (moduleMatches(root, moduleContext))
+				requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
+		} else {
+			IPackageFragmentRoot[] roots = (IPackageFragmentRoot[]) value;
+			if (roots != null) {
+				for (int i = 0, length = roots.length; i < length; i++) {
+					if (requestor.isCanceled())
+						return;
+					PackageFragmentRoot root = (PackageFragmentRoot) roots[i];
+					if (moduleMatches(root, moduleContext))
+						requestor.acceptPackageFragment(root.getPackageFragment(pkgName));
+				}
+			}
+		}
+	}
+
+	@FunctionalInterface
+	interface IPrefixMatcherCharArray { // note the reversal in the order of params wrt to the string version.
+		boolean matches(char[] prefix, char[] name, boolean isCaseSensitive);
+	}
+	/**
+	 * Notifies the given requestor of all package fragments with the
+	 * given name. Checks the requestor at regular intervals to see if the
+	 * requestor has canceled. The domain of
+	 * the search is bounded by the <code>IJavaProject</code>
+	 * this <code>NameLookup</code> was obtained from.
+	 *
+	 * @param partialMatch partial name matches qualify when <code>true</code>;
+	 *	only exact name matches qualify when <code>false</code>
+	 */
 	public void seekPackageFragments(String name, boolean partialMatch, IJavaElementRequestor requestor) {
 /*		if (VERBOSE) {
 			Util.verbose(" SEEKING PACKAGE FRAGMENTS");  //$NON-NLS-1$
 			Util.verbose(" -> name: " + name);  //$NON-NLS-1$
 			Util.verbose(" -> partial match:" + partialMatch);  //$NON-NLS-1$
 		}
-*/		if (partialMatch) {
+*/
+		if (partialMatch) {
 			String[] splittedName = Util.splitOn('.', name, 0, name.length());
 			Object[][] keys = this.packageFragments.keyTable;
 			for (int i = 0, length = keys.length; i < length; i++) {
@@ -964,7 +1256,35 @@
 		seekTypes(name, pkg, partialMatch, acceptFlags, requestor, true);
 	}
 
-	/**
+	public void seekModuleReferences(String name, IJavaElementRequestor requestor, IJavaProject javaProject) {
+		seekModule(name.toCharArray(), true /* prefix */, requestor);
+	}
+	public void seekModule(char[] name, boolean prefixMatch, IJavaElementRequestor requestor) {
+
+		IPrefixMatcherCharArray prefixMatcher = prefixMatch 
+				? CharOperation.equals(name, CharOperation.ALL_PREFIX) 
+						? (x, y, isCaseSensitive) -> true
+						: CharOperation::prefixEquals
+				: CharOperation::equals;
+
+		int count= this.packageFragmentRoots.length;
+		for (int i= 0; i < count; i++) {
+			if (requestor.isCanceled())
+				return;
+			IPackageFragmentRoot root= this.packageFragmentRoots[i];
+			IModuleDescription module = null;
+			if (root instanceof JrtPackageFragmentRoot) {
+				if (!prefixMatcher.matches(name, root.getElementName().toCharArray(), false)) {
+					continue;
+				}
+			}
+			module = getModuleDescription(root, this.rootToModule, this.rootToResolvedEntries::get);
+			if (module != null && prefixMatcher.matches(name, module.getElementName().toCharArray(), false)) {
+				requestor.acceptModule(module);
+			}
+		}
+	}
+/**
 	 * Notifies the given requestor of all types (classes and interfaces) in the
 	 * given package fragment with the given (unqualified) name.
 	 * Checks the requestor at regular intervals to see if the requestor
@@ -1080,11 +1400,13 @@
 					// MatchName will never have the extension ".class" and the elementName always will.
 					String elementName = classFile.getElementName();
 					if (elementName.regionMatches(true /*ignore case*/, 0, name, 0, matchLength)) {
-						IType type = ((ClassFile) classFile).getType();
-						String typeName = type.getElementName();
-						if (typeName.length() > 0 && !Character.isDigit(typeName.charAt(0))) { //not an anonymous type
-							if (nameMatches(unqualifiedName, type, true/*partial match*/) && acceptType(type, acceptFlags, false/*not a source type*/))
-								requestor.acceptType(type);
+						if (classFile instanceof IOrdinaryClassFile) {
+							IType type = ((IOrdinaryClassFile) classFile).getType();
+							String typeName = type.getElementName();
+							if (typeName.length() > 0 && !Character.isDigit(typeName.charAt(0))) { //not an anonymous type
+								if (nameMatches(unqualifiedName, type, true/*partial match*/) && acceptType(type, acceptFlags, false/*not a source type*/))
+									requestor.acceptType(type);
+							}
 						}
 					}
 				}
@@ -1312,4 +1634,24 @@
 		return false;
 	}
 
+	public boolean hasCompilationUnit(char[][] pkgName, IPackageFragmentRoot[] moduleContext) {
+		String packageName = CharOperation.toString(pkgName);
+		if (packageName == null || packageName.length() == 0) {
+			packageName= IPackageFragment.DEFAULT_PACKAGE_NAME;
+		}
+
+		// Look for concerned package fragments
+		JavaElementRequestor elementRequestor = new JavaElementRequestor();
+		seekPackageFragments(packageName, false, elementRequestor, moduleContext);
+		IPackageFragment[] packages= elementRequestor.getPackageFragments();
+		for (IPackageFragment fragment : packages) {
+			try {
+				if (fragment.containsJavaResources())
+					return true;
+			} catch (JavaModelException e) {
+				// silent
+			}
+		}
+		return false;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.java
index 921c00c..4894776 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NamedMember.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2012 IBM Corporation and others.
+ * Copyright (c) 2004, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,6 +16,8 @@
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IMember;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModularClassFile;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.ITypeParameter;
@@ -64,6 +66,7 @@
 		buffer.append('>');
 	}
 
+	@Override
 	public String getElementName() {
 		return this.name;
 	}
@@ -91,8 +94,10 @@
 
 		// selector
 		key.append('.');
-		String selector = method.getElementName();
-		key.append(selector);
+		if (!method.isConstructor()) { // empty selector for ctors, cf. BindingKeyResolver.consumeMethod()
+			String selector = method.getElementName();
+			key.append(selector);
+		}
 
 		// type parameters
 		if (forceOpen) {
@@ -157,6 +162,13 @@
 		key.append(';');
 		return key.toString();
 	}
+	protected String getKey(IModuleDescription module, boolean forceOpen) throws JavaModelException {
+		StringBuffer key = new StringBuffer();
+		key.append('"');
+		String modName = module.getElementName();
+		key.append(modName);
+		return key.toString();
+	}
 
 	protected String getFullyQualifiedParameterizedName(String fullyQualifiedName, String uniqueKey) throws JavaModelException {
 		String[] typeArguments = new BindingKey(uniqueKey).getTypeArguments();
@@ -198,6 +210,8 @@
 				}
 				return this.name;
 			case IJavaElement.CLASS_FILE:
+				if (this.parent instanceof IModularClassFile)
+					return null;
 				String classFileName = this.parent.getElementName();
 				String typeName;
 				if (classFileName.indexOf('$') == -1) {
@@ -262,6 +276,7 @@
 
 		class TypeResolveRequestor implements ISelectionRequestor {
 			String[][] answers = null;
+			@Override
 			public void acceptType(char[] packageName, char[] tName, int modifiers, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 				String[] answer = new String[]  {new String(packageName), new String(tName) };
 				if (this.answers == null) {
@@ -273,24 +288,34 @@
 					this.answers[length] = answer;
 				}
 			}
+			@Override
 			public void acceptError(CategorizedProblem error) {
 				// ignore
 			}
+			@Override
 			public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 				// ignore
 			}
+			@Override
 			public void acceptMethod(char[] declaringTypePackageName, char[] declaringTypeName, String enclosingDeclaringTypeSignature, char[] selector, char[][] parameterPackageNames, char[][] parameterTypeNames, String[] parameterSignatures, char[][] typeParameterNames, char[][][] typeParameterBoundNames, boolean isConstructor, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 				// ignore
 			}
+			@Override
 			public void acceptPackage(char[] packageName){
 				// ignore
 			}
+			@Override
 			public void acceptTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] typeParameterName, boolean isDeclaration, int start, int end) {
 				// ignore
 			}
+			@Override
 			public void acceptMethodTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] selector, int selectorStart, int selcetorEnd, char[] typeParameterName, boolean isDeclaration, int start, int end) {
 				// ignore
 			}
+			@Override
+			public void acceptModule(char[] moduleName, char[] uniqueKey, int start, int end) {
+				// ignore
+			}
 
 		}
 		TypeResolveRequestor requestor = new TypeResolveRequestor();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.java
index 5188b52..b955040 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/NonJavaResource.java
@@ -35,6 +35,7 @@
 		this.resource = resource;
 	}
 
+	@Override
 	public boolean equals(Object obj) {
 		if (! (obj instanceof NonJavaResource))
 			return false;
@@ -42,6 +43,7 @@
 		return this.parent.equals(other.parent) && this.resource.equals(other.resource);
 	}
 
+	@Override
 	public IJarEntryResource[] getChildren() {
 		if (this.resource instanceof IContainer) {
 			IResource[] members;
@@ -63,6 +65,7 @@
 		return NO_CHILDREN;
 	}
 
+	@Override
 	public InputStream getContents() throws CoreException {
 		if (this.resource instanceof IFile)
 			return ((IFile) this.resource).getContents();
@@ -82,14 +85,17 @@
 		return parentEntryName + getName();
 	}
 
+	@Override
 	public IPath getFullPath() {
 		return new Path(getEntryName()).makeAbsolute();
 	}
 
+	@Override
 	public String getName() {
 		return this.resource.getName();
 	}
 
+	@Override
 	public IPackageFragmentRoot getPackageFragmentRoot() {
 		if (this.parent instanceof IPackageFragment) {
 			return (IPackageFragmentRoot) ((IPackageFragment) this.parent).getParent();
@@ -100,22 +106,27 @@
 		}
 	}
 
+	@Override
 	public Object getParent() {
 		return this.parent;
 	}
 
+	@Override
 	public int hashCode() {
 		return Util.combineHashCodes(this.resource.hashCode(), this.parent.hashCode());
 	}
 
+	@Override
 	public boolean isFile() {
 		return this.resource instanceof IFile;
 	}
 
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
 
+	@Override
 	public String toString() {
 		return "NonJavaResource["+getEntryName()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Openable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Openable.java
index 8e616b1..6288322 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Openable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/Openable.java
@@ -45,6 +45,7 @@
  *
  * @see IBufferChangedListener
  */
+@Override
 public void bufferChanged(BufferChangedEvent event) {
 	if (event.getBuffer().isClosed()) {
 		JavaModelManager.getJavaModelManager().getElementsOutOfSynchWithBuffers().remove(this);
@@ -94,6 +95,7 @@
 /**
  * This element is being closed.  Do any necessary cleanup.
  */
+@Override
 protected void closing(Object info) {
 	closeBuffer();
 }
@@ -121,7 +123,7 @@
 		throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.INDEX_OUT_OF_BOUNDS));
 	}
 	JavaProject project = (JavaProject) getJavaProject();
-	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner);
+	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner, requestor.isTestCodeExcluded());
 
 	// set unit to skip
 	environment.unitToSkip = unitToSkip;
@@ -174,12 +176,14 @@
 /*
  * Returns a new element info for this element.
  */
+@Override
 protected Object createElementInfo() {
 	return new OpenableElementInfo();
 }
 /**
  * @see IJavaElement
  */
+@Override
 public boolean exists() {
 	if (JavaModelManager.getJavaModelManager().getInfo(this) != null)
 		return true;
@@ -206,11 +210,13 @@
 	}
 	return validateExistence(resource()).isOK();
 }
+@Override
 public String findRecommendedLineSeparator() throws JavaModelException {
 	IBuffer buffer = getBuffer();
 	String source = buffer == null ? null : buffer.getContents();
 	return Util.getLineSeparator(source, getJavaProject());
 }
+@Override
 protected void generateInfos(Object info, HashMap newElements, IProgressMonitor monitor) throws JavaModelException {
 
 	if (JavaModelCache.VERBOSE){
@@ -243,7 +249,7 @@
 	// validate existence
 	IResource underlResource = resource();
 	IStatus status = validateExistence(underlResource);
-	if (!status.isOK())
+	if (!status.isOK() && !ignoreErrorStatus(status))
 		throw newJavaModelException(status);
 
 	if (monitor != null && monitor.isCanceled())
@@ -270,6 +276,9 @@
 		System.out.println(JavaModelManager.getJavaModelManager().cacheToString("-> ")); //$NON-NLS-1$
 	}
 }
+protected boolean ignoreErrorStatus(IStatus status) {
+	return false;
+}
 /**
  * Note: a buffer with no unsaved changes can be closed by the Java Model
  * since it has a finite number of buffers allowed open at one time. If this
@@ -279,6 +288,7 @@
  *
  * @see IOpenable
  */
+@Override
 public IBuffer getBuffer() throws JavaModelException {
 	if (hasBuffer()) {
 		// ensure element is open
@@ -316,12 +326,14 @@
  *
  * @see IJavaElement
  */
+@Override
 public IResource getCorrespondingResource() throws JavaModelException {
 	return getUnderlyingResource();
 }
 /*
  * @see IJavaElement
  */
+@Override
 public IOpenable getOpenable() {
 	return this;
 }
@@ -331,6 +343,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public IResource getUnderlyingResource() throws JavaModelException {
 	IResource parentResource = this.parent.getUnderlyingResource();
 	if (parentResource == null) {
@@ -360,6 +373,7 @@
 /**
  * @see IOpenable
  */
+@Override
 public boolean hasUnsavedChanges() throws JavaModelException{
 
 	if (isReadOnly() || !isOpen()) {
@@ -395,6 +409,7 @@
  *
  * @see IOpenable
  */
+@Override
 public boolean isConsistent() {
 	return true;
 }
@@ -402,6 +417,7 @@
  *
  * @see IOpenable
  */
+@Override
 public boolean isOpen() {
 	return JavaModelManager.getJavaModelManager().getInfo(this) != null;
 }
@@ -416,12 +432,14 @@
 /**
  * @see IJavaElement
  */
+@Override
 public boolean isStructureKnown() throws JavaModelException {
 	return ((OpenableElementInfo)getElementInfo()).isStructureKnown();
 }
 /**
  * @see IOpenable
  */
+@Override
 public void makeConsistent(IProgressMonitor monitor) throws JavaModelException {
 	// only compilation units can be inconsistent
 	// other openables cannot be inconsistent so default is to do nothing
@@ -429,6 +447,7 @@
 /**
  * @see IOpenable
  */
+@Override
 public void open(IProgressMonitor pm) throws JavaModelException {
 	getElementInfo(pm);
 }
@@ -443,6 +462,7 @@
 	return null;
 }
 
+@Override
 public IResource getResource() {
 	PackageFragmentRoot root = getPackageFragmentRoot();
 	if (root != null) {
@@ -454,6 +474,7 @@
 	return resource(root);
 }
 
+@Override
 public IResource resource() {
 	PackageFragmentRoot root = getPackageFragmentRoot();
 	if (root != null && root.isArchive())
@@ -473,6 +494,7 @@
 /**
  * @see IOpenable
  */
+@Override
 public void save(IProgressMonitor pm, boolean force) throws JavaModelException {
 	if (isReadOnly()) {
 		throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.READ_ONLY, this));
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.java
index 314d9f4..367dea4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OpenableElementInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,9 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+
+
 
 /** Element info for IOpenable elements. */
 public class OpenableElementInfo extends JavaElementInfo {
@@ -22,13 +25,18 @@
 	 * no children.
 	 */
 	protected volatile IJavaElement[] children = JavaElement.NO_ELEMENTS;
-	
+	protected IModuleDescription module;
 	/**
 	 * Is the structure of this element known
 	 * @see IJavaElement#isStructureKnown()
 	 */
 	protected boolean isStructureKnown = false;
 
+	/**
+	 * A array with all the non-java resources contained by this element
+	 */
+	protected Object[] nonJavaResources;
+
 	public void addChild(IJavaElement child) {
 		IJavaElement[] oldChildren = this.children;
 		int length = oldChildren.length;
@@ -46,6 +54,7 @@
 		}
 	}
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
@@ -79,6 +88,12 @@
 		this.children = children;
 	}
 
+	public void setModule(IModuleDescription module) {
+		this.module = module;
+	}
+	public IModuleDescription getModule() {
+		return this.module;
+	}
 	/**
 	 * Sets whether the structure of this element known
 	 * @see IJavaElement#isStructureKnown()
@@ -86,4 +101,10 @@
 	public void setIsStructureKnown(boolean newIsStructureKnown) {
 		this.isStructureKnown = newIsStructureKnown;
 	}
+	/**
+	 * Sets the nonJavaResources
+	 */
+	void setNonJavaResources(Object[] resources) {
+		this.nonJavaResources = resources;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
index 6113025..f49d273 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/OverflowingLRUCache.java
@@ -11,7 +11,8 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import java.util.Enumeration;
-import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Hashtable;
 
 import org.aspectj.org.eclipse.jdt.internal.core.util.LRUCache;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
@@ -26,7 +27,7 @@
  *
  *	<p>If the cache cannot remove enough old elements to add new elements
  *	it will grow beyond <code>fSpaceLimit</code>. Later, it will attempt to
- *	shink back to the maximum space limit.
+ *	shrink back to the maximum space limit.
  *
  *	The method <code>close</code> should attempt to close the element.  If
  *	the element is successfully closed it will return true and the element will
@@ -48,8 +49,7 @@
  *
  *	@see LRUCache
  */
-@SuppressWarnings({ "rawtypes", "unchecked" })
-public abstract class OverflowingLRUCache extends LRUCache {
+public abstract class OverflowingLRUCache<K, V> extends LRUCache<K, V> {
 	/**
 	 * Indicates if the cache has been over filled and by how much.
 	 */
@@ -84,10 +84,11 @@
 	 *
 	 * @return New copy of this object.
 	 */
-	public Object clone() {
+	@Override
+	public OverflowingLRUCache<K, V> clone() {
 
-		OverflowingLRUCache newCache = (OverflowingLRUCache)newInstance(this.spaceLimit, this.overflow);
-		LRUCacheEntry qEntry;
+		OverflowingLRUCache<K, V> newCache = (OverflowingLRUCache<K, V>)newInstance(this.spaceLimit, this.overflow);
+		LRUCacheEntry<K, V> qEntry;
 
 		/* Preserve order of entries by copying from oldest to newest */
 		qEntry = this.entryQueueTail;
@@ -102,39 +103,42 @@
  * removed from the cache, otherwise false.
  *
  * <p>NOTE: this triggers an external remove from the cache
- * by closing the obejct.
+ * by closing the object.
  *
  */
-protected abstract boolean close(LRUCacheEntry entry);
+protected abstract boolean close(LRUCacheEntry<K, V> entry);
 	/**
 	 *	Returns an enumerator of the values in the cache with the most
 	 *	recently used first.
 	 */
-	public Enumeration elements() {
+	public Enumeration<V> elements() {
 		if (this.entryQueue == null)
-			return new LRUCacheEnumerator(null);
-		LRUCacheEnumerator.LRUEnumeratorElement head =
-			new LRUCacheEnumerator.LRUEnumeratorElement(this.entryQueue.value);
-		LRUCacheEntry currentEntry = this.entryQueue.next;
-		LRUCacheEnumerator.LRUEnumeratorElement currentElement = head;
+			return new LRUCacheEnumerator<>(null);
+		LRUCacheEnumerator.LRUEnumeratorElement<V> head =
+			new LRUCacheEnumerator.LRUEnumeratorElement<>(this.entryQueue.value);
+		LRUCacheEntry<K, V> currentEntry = this.entryQueue.next;
+		LRUCacheEnumerator.LRUEnumeratorElement<V> currentElement = head;
 		while(currentEntry != null) {
-			currentElement.next = new LRUCacheEnumerator.LRUEnumeratorElement(currentEntry.value);
+			currentElement.next = new LRUCacheEnumerator.LRUEnumeratorElement<>(currentEntry.value);
 			currentElement = currentElement.next;
 
 			currentEntry = currentEntry.next;
 		}
-		return new LRUCacheEnumerator(head);
+		return new LRUCacheEnumerator<>(head);
 	}
+
+	@Override
 	public double fillingRatio() {
 		return (this.currentSpace + this.overflow) * 100.0 / this.spaceLimit;
 	}
+
 	/**
 	 * For internal testing only.
 	 * This method exposed only for testing purposes!
 	 *
 	 * @return Hashtable of entries
 	 */
-	public java.util.Hashtable getEntryTable() {
+	public Hashtable<K, LRUCacheEntry<K, V>> getEntryTable() {
 		return this.entryTable;
 	}
 /**
@@ -151,6 +155,7 @@
 	public int getOverflow() {
 		return this.overflow;
 	}
+
 	/**
 	 * Ensures there is the specified amount of free space in the receiver,
 	 * by removing old entries if necessary.  Returns true if the requested space was
@@ -159,6 +164,7 @@
 	 *
 	 * @param space Amount of space to free up
 	 */
+	@Override
 	protected boolean makeSpace(int space) {
 
 		int limit = this.spaceLimit;
@@ -170,7 +176,7 @@
 		/* Free up space by removing oldest entries */
 		int spaceNeeded = (int)((1 - this.loadFactor) * limit);
 		spaceNeeded = (spaceNeeded > space) ? spaceNeeded : space;
-		LRUCacheEntry entry = this.entryQueueTail;
+		LRUCacheEntry<K, V> entry = this.entryQueueTail;
 
 		try {
 			// disable timestamps update while making space so that the previous and next links are not changed
@@ -195,16 +201,18 @@
 		this.overflow = this.currentSpace + space - limit;
 		return false;
 	}
+
 	/**
 	 * Returns a new instance of the reciever.
 	 */
-	protected abstract LRUCache newInstance(int size, int newOverflow);
+protected abstract LRUCache<K, V> newInstance(int size, int newOverflow);
+
 /**
  * For testing purposes only
  */
 public void printStats() {
 	int forwardListLength = 0;
-	LRUCacheEntry entry = this.entryQueue;
+	LRUCacheEntry<K, V> entry = this.entryQueue;
 	while(entry != null) {
 		forwardListLength++;
 		entry = entry.next;
@@ -219,34 +227,34 @@
 	}
 	System.out.println("Backward length: " + backwardListLength); //$NON-NLS-1$
 
-	Enumeration keys = this.entryTable.keys();
 	class Temp {
-		public Class clazz;
+		public Class<?> clazz;
 		public int count;
-		public Temp(Class aClass) {
+		public Temp(Class<?> aClass) {
 			this.clazz = aClass;
 			this.count = 1;
 		}
+		@Override
 		public String toString() {
 			return "Class: " + this.clazz + " has " + this.count + " entries."; //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-1$
 		}
 	}
-	java.util.HashMap h = new java.util.HashMap();
-	while(keys.hasMoreElements()) {
-		entry = (LRUCacheEntry)this.entryTable.get(keys.nextElement());
-		Class key = entry.value.getClass();
-		Temp t = (Temp)h.get(key);
+	HashMap<Class<?>, Temp> h = new HashMap<>();
+	for (K k : this.entryTable.keySet()) {
+		entry = this.entryTable.get(k);
+		Class<?> key = entry.value.getClass();
+		Temp t = h.get(key);
 		if (t == null) {
 			h.put(key, new Temp(key));
 		} else {
 			t.count++;
 		}
 	}
-
-	for (Iterator iter = h.values().iterator(); iter.hasNext();){
-		System.out.println(iter.next());
+	for (Temp temp : h.values()) {
+		System.out.println(temp);
 	}
 }
+
 	/**
 	 *	Removes the entry from the entry queue.
 	 *	Calls <code>privateRemoveEntry</code> with the external functionality enabled.
@@ -254,7 +262,8 @@
 	 * @param shuffle indicates whether we are just shuffling the queue
 	 * (in which case, the entry table is not modified).
 	 */
-	protected void privateRemoveEntry (LRUCacheEntry entry, boolean shuffle) {
+	@Override
+	protected void privateRemoveEntry (LRUCacheEntry<K, V> entry, boolean shuffle) {
 		privateRemoveEntry(entry, shuffle, true);
 	}
 /**
@@ -268,7 +277,7 @@
  *	@param shuffle indicates whether we are just shuffling the queue
  *	(in which case, the entry table is not modified).
  */
-protected void privateRemoveEntry(LRUCacheEntry entry, boolean shuffle, boolean external) {
+protected void privateRemoveEntry(LRUCacheEntry<K, V> entry, boolean shuffle, boolean external) {
 
 	if (!shuffle) {
 		if (external) {
@@ -287,8 +296,8 @@
 			}
 		}
 	}
-	LRUCacheEntry previous = entry.previous;
-	LRUCacheEntry next = entry.next;
+	LRUCacheEntry<K, V> previous = entry.previous;
+	LRUCacheEntry<K, V> next = entry.next;
 
 	/* if this was the first entry */
 	if (previous == null) {
@@ -303,21 +312,16 @@
 		next.previous = previous;
 	}
 }
-	/**
-	 * Sets the value in the cache at the given key. Returns the value.
-	 *
-	 * @param key Key of object to add.
-	 * @param value Value of object to add.
-	 * @return added value.
-	 */
-	public Object put(Object key, Object value) {
+
+	@Override
+	public V put(K key, V value) {
 		/* attempt to rid ourselves of the overflow, if there is any */
 		if (this.overflow > 0)
 			shrink();
 
 		/* Check whether there's an entry in the cache */
 		int newSpace = spaceFor(value);
-		LRUCacheEntry entry = (LRUCacheEntry) this.entryTable.get (key);
+		LRUCacheEntry<K, V> entry = this.entryTable.get (key);
 
 		if (entry != null) {
 
@@ -356,7 +360,7 @@
 	 * @param key Key of object to remove from cache.
 	 * @return Value removed from cache.
 	 */
-	public Object remove(Object key) {
+	public V remove(K key) {
 		return removeKey(key);
 	}
 /**
@@ -371,11 +375,8 @@
 	else
 		throw new IllegalArgumentException(Messages.cache_invalidLoadFactor);
 }
-	/**
-	 * Sets the maximum amount of space that the cache can store
-	 *
-	 * @param limit Number of units of cache space
-	 */
+
+	@Override
 	public void setSpaceLimit(int limit) {
 		if (limit < this.spaceLimit) {
 			makeSpace(this.spaceLimit - limit);
@@ -395,6 +396,7 @@
  * Returns a String that represents the value of this object.  This method
  * is for debugging purposes only.
  */
+@Override
 public String toString() {
 	return
 		toStringFillingRation("OverflowingLRUCache ") + //$NON-NLS-1$
@@ -406,7 +408,8 @@
  *
  * <p>This method will do nothing if timestamps have been disabled.
  */
-protected void updateTimestamp(LRUCacheEntry entry) {
+@Override
+protected void updateTimestamp(LRUCacheEntry<K, V> entry) {
 	if (this.timestampsOn) {
 		entry.timestamp = this.timestampCounter++;
 		if (this.entryQueue != entry) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.java
index f9d0709..a438cdc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageDeclaration.java
@@ -24,35 +24,39 @@
 	super(parent);
 	this.name = name;
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof PackageDeclaration)) return false;
 	return super.equals(o);
 }
+@Override
 public String getElementName() {
 	return this.name;
 }
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return PACKAGE_DECLARATION;
 }
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_PACKAGEDECLARATION;
 }
 /**
  * @see IPackageDeclaration#getNameRange()
  */
+@Override
 public ISourceRange getNameRange() throws JavaModelException {
 	AnnotatableInfo info = (AnnotatableInfo) getElementInfo();
 	return info.getNameRange();
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	CompilationUnit cu = (CompilationUnit)getAncestor(COMPILATION_UNIT);
 	if (checkOwner && cu.isPrimary()) return this;
@@ -61,6 +65,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	buffer.append("package "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.java
index 41c222e..cea2106 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.core.resources.IContainer;
@@ -28,6 +29,8 @@
 import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModularClassFile;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IParent;
@@ -35,6 +38,7 @@
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.WorkingCopyOwner;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.PerProjectInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.util.MementoTokenizer;
@@ -50,6 +54,7 @@
 	 * Constant empty list of class files
 	 */
 	protected static final IClassFile[] NO_CLASSFILES = new IClassFile[] {};
+	protected static final IOrdinaryClassFile[] NO_ORDINARY_CLASSFILES = new IOrdinaryClassFile[] {};
 	/**
 	 * Constant empty list of compilation units
 	 */
@@ -67,6 +72,7 @@
 /**
  * @see Openable
  */
+@Override
 protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
 	// add compilation units/class files from resources
 	HashSet vChildren = new HashSet();
@@ -118,12 +124,14 @@
  * Returns true if this fragment contains at least one java resource.
  * Returns false otherwise.
  */
+@Override
 public boolean containsJavaResources() throws JavaModelException {
 	return ((PackageFragmentInfo) getElementInfo()).containsJavaResources();
 }
 /**
  * @see ISourceManipulation
  */
+@Override
 public void copy(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (container == null) {
 		throw new IllegalArgumentException(Messages.operation_nullContainer);
@@ -143,6 +151,7 @@
 /**
  * @see IPackageFragment
  */
+@Override
 public ICompilationUnit createCompilationUnit(String cuName, String contents, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CreateCompilationUnitOperation op= new CreateCompilationUnitOperation(this, cuName, contents, force);
 	op.runOperation(monitor);
@@ -151,16 +160,19 @@
 /**
  * @see JavaElement
  */
+@Override
 protected Object createElementInfo() {
 	return new PackageFragmentInfo();
 }
 /**
  * @see ISourceManipulation
  */
+@Override
 public void delete(boolean force, IProgressMonitor monitor) throws JavaModelException {
 	IJavaElement[] elements = new IJavaElement[] {this};
 	getJavaModel().delete(elements, force, monitor);
 }
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof PackageFragment)) return false;
@@ -169,6 +181,7 @@
 	return Util.equalArraysOrNull(this.names, other.names) &&
 			this.parent.equals(other.parent);
 }
+@Override
 public boolean exists() {
 	// super.exist() only checks for the parent and the resource existence
 	// so also ensure that:
@@ -177,13 +190,17 @@
 	return super.exists() && !Util.isExcluded(this) && isValidPackageName();
 }
 /**
- * @see IPackageFragment#getClassFile(String)
- * @exception IllegalArgumentException if the name does not end with ".class"
+ * @see IPackageFragment#getOrdinaryClassFile(String)
+ * @exception IllegalArgumentException if the name does not end with ".class" or if the name is "module-info.class".
  */
-public IClassFile getClassFile(String classFileName) {
+@Override
+public IOrdinaryClassFile getOrdinaryClassFile(String classFileName) {
 	if (!org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(classFileName)) {
 		throw new IllegalArgumentException(Messages.bind(Messages.element_invalidClassFileName, classFileName));
 	}
+	if (TypeConstants.MODULE_INFO_CLASS_NAME_STRING.equals(classFileName)) {
+		throw new IllegalArgumentException(Messages.element_moduleInfoNotSupported);
+	}
 	// don't hold on the .class file extension to save memory
 	// also make sure to not use substring as the resulting String may hold on the underlying char[] which might be much bigger than necessary
 	int length = classFileName.length() - 6;
@@ -192,13 +209,53 @@
 	return new ClassFile(this, new String(nameWithoutExtension));
 }
 /**
- * Returns a the collection of class files in this - a folder package fragment which has a root
+ * @see IPackageFragment#getClassFile(String)
+ * @exception IllegalArgumentException if the name does not end with ".class".
+ */
+@Override
+public IClassFile getClassFile(String classFileName) {
+	if (TypeConstants.MODULE_INFO_CLASS_NAME_STRING.equals(classFileName))
+		return getModularClassFile();
+	return getOrdinaryClassFile(classFileName);
+}
+@Override
+public IModularClassFile getModularClassFile() {
+	// don't hold on the .class file extension to save memory
+	// also make sure to not use substring as the resulting String may hold on the underlying char[] which might be much bigger than necessary
+	return new ModularClassFile(this);
+}
+
+/**
+ * Returns a collection of ordinary class files in this - a folder package fragment which has a root
  * that has its kind set to <code>IPackageFragmentRoot.K_Source</code> does not
  * recognize class files.
  *
- * @see IPackageFragment#getClassFiles()
+ * @see IPackageFragment#getOrdinaryClassFiles()
  */
-public IClassFile[] getClassFiles() throws JavaModelException {
+@Override
+public IOrdinaryClassFile[] getOrdinaryClassFiles() throws JavaModelException {
+	if (getKind() == IPackageFragmentRoot.K_SOURCE) {
+		return NO_ORDINARY_CLASSFILES;
+	}
+
+	ArrayList list = getChildrenOfType(CLASS_FILE);
+	for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+		if (iterator.next() instanceof ModularClassFile)
+			iterator.remove();
+	}
+	IOrdinaryClassFile[] array= new IOrdinaryClassFile[list.size()];
+	list.toArray(array);
+	return array;
+}
+/**
+ * Returns a collection of all class files in this - a folder package fragment which has a root
+ * that has its kind set to <code>IPackageFragmentRoot.K_Source</code> does not
+ * recognize class files.
+ *
+ * @see IPackageFragment#getAllClassFiles()
+ */
+@Override
+public IClassFile[] getAllClassFiles() throws JavaModelException {
 	if (getKind() == IPackageFragmentRoot.K_SOURCE) {
 		return NO_CLASSFILES;
 	}
@@ -208,10 +265,18 @@
 	list.toArray(array);
 	return array;
 }
+
+@Deprecated
+@Override
+public IClassFile[] getClassFiles() throws JavaModelException {
+	return getOrdinaryClassFiles();
+}
+
 /**
  * @see IPackageFragment#getCompilationUnit(String)
  * @exception IllegalArgumentException if the name does not end with ".java"
  */
+@Override
 public ICompilationUnit getCompilationUnit(String cuName) {
 	if (!org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(cuName)) {
 		throw new IllegalArgumentException(Messages.convention_unit_notJavaName);
@@ -221,6 +286,7 @@
 /**
  * @see IPackageFragment#getCompilationUnits()
  */
+@Override
 public ICompilationUnit[] getCompilationUnits() throws JavaModelException {
 	if (getKind() == IPackageFragmentRoot.K_BINARY) {
 		return NO_COMPILATION_UNITS;
@@ -234,6 +300,7 @@
 /**
  * @see IPackageFragment#getCompilationUnits(WorkingCopyOwner)
  */
+@Override
 public ICompilationUnit[] getCompilationUnits(WorkingCopyOwner owner) {
 	ICompilationUnit[] workingCopies = JavaModelManager.getJavaModelManager().getWorkingCopies(owner, false/*don't add primary*/);
 	if (workingCopies == null) return JavaModelManager.NO_WORKING_COPY;
@@ -251,6 +318,7 @@
 	}
 	return result;
 }
+@Override
 public String getElementName() {
 	if (this.names.length == 0)
 		return DEFAULT_PACKAGE_NAME;
@@ -259,18 +327,23 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return PACKAGE_FRAGMENT;
 }
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
 	switch (token.charAt(0)) {
 		case JEM_CLASSFILE:
 			if (!memento.hasMoreTokens()) return this;
 			String classFileName = memento.nextToken();
-			JavaElement classFile = (JavaElement)getClassFile(classFileName);
+			JavaElement classFile = (JavaElement) getClassFile(classFileName);
+			return classFile.getHandleFromMemento(memento, owner);
+		case JEM_MODULAR_CLASSFILE:
+			classFile = (JavaElement) getModularClassFile();
 			return classFile.getHandleFromMemento(memento, owner);
 		case JEM_COMPILATIONUNIT:
 			if (!memento.hasMoreTokens()) return this;
@@ -283,18 +356,21 @@
 /**
  * @see JavaElement#getHandleMementoDelimiter()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_PACKAGEFRAGMENT;
 }
 /**
  * @see IPackageFragment#getKind()
  */
+@Override
 public int getKind() throws JavaModelException {
 	return ((IPackageFragmentRoot)getParent()).getKind();
 }
 /**
  * Returns an array of non-java resources contained in the receiver.
  */
+@Override
 public Object[] getNonJavaResources() throws JavaModelException {
 	if (isDefaultPackage()) {
 		// We don't want to show non java resources of the default package (see PR #1G58NB8)
@@ -306,6 +382,7 @@
 /**
  * @see IJavaElement#getPath()
  */
+@Override
 public IPath getPath() {
 	PackageFragmentRoot root = getPackageFragmentRoot();
 	if (root.isArchive()) {
@@ -322,6 +399,7 @@
 /**
  * @see JavaElement#resource()
  */
+@Override
 public IResource resource(PackageFragmentRoot root) {
 	int length = this.names.length;
 	if (length == 0) {
@@ -336,6 +414,7 @@
 /**
  * @see IJavaElement#getUnderlyingResource()
  */
+@Override
 public IResource getUnderlyingResource() throws JavaModelException {
 	IResource rootResource = this.parent.getUnderlyingResource();
 	if (rootResource == null) {
@@ -359,6 +438,7 @@
 		return rootResource;
 	}
 }
+@Override
 public int hashCode() {
 	int hash = this.parent.hashCode();
 	for (int i = 0, length = this.names.length; i < length; i++)
@@ -368,12 +448,14 @@
 /**
  * @see IParent
  */
+@Override
 public boolean hasChildren() throws JavaModelException {
 	return getChildren().length > 0;
 }
 /**
  * @see IPackageFragment#hasSubpackages()
  */
+@Override
 public boolean hasSubpackages() throws JavaModelException {
 	IJavaElement[] packages= ((IPackageFragmentRoot)getParent()).getChildren();
 	int namesLength = this.names.length;
@@ -403,6 +485,7 @@
 /**
  * @see IPackageFragment#isDefaultPackage()
  */
+@Override
 public boolean isDefaultPackage() {
 	return this.names.length == 0;
 }
@@ -412,6 +495,7 @@
 /**
  * @see ISourceManipulation#move(IJavaElement, IJavaElement, String, boolean, IProgressMonitor)
  */
+@Override
 public void move(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (container == null) {
 		throw new IllegalArgumentException(Messages.operation_nullContainer);
@@ -431,6 +515,7 @@
 /**
  * @see ISourceManipulation#rename(String, boolean, IProgressMonitor)
  */
+@Override
 public void rename(String newName, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	if (newName == null) {
 		throw new IllegalArgumentException(Messages.element_nullName);
@@ -443,6 +528,7 @@
 /**
  * Debugging purposes
  */
+@Override
 protected void toStringChildren(int tab, StringBuffer buffer, Object info) {
 	if (tab == 0) {
 		super.toStringChildren(tab, buffer, info);
@@ -451,6 +537,7 @@
 /**
  * Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (this.names.length == 0) {
@@ -466,9 +553,8 @@
 		}
 	}
 }
-/*
- * @see IJavaElement#getAttachedJavadoc(IProgressMonitor)
- */
+
+@Override
 public String getAttachedJavadoc(IProgressMonitor monitor) throws JavaModelException {
 	PerProjectInfo projectInfo = JavaModelManager.getJavaModelManager().getPerProjectInfoCheckExistence(getJavaProject().getProject());
 	String cachedJavadoc = null;
@@ -503,6 +589,7 @@
 	return contents;
 }
 
+@Override
 protected IStatus validateExistence(IResource underlyingResource) {
 	// check that the name of the package is valid (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=108456)
 	if (!isValidPackageName())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.java
index 2f1c78b..0c6edc9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,11 +19,6 @@
  */
 class PackageFragmentInfo extends OpenableElementInfo {
 
-	/**
-	 * A array with all the non-java resources contained by this PackageFragment
-	 */
-	protected Object[] nonJavaResources;
-
 /**
  * Create and initialize a new instance of the receiver
  */
@@ -39,25 +34,22 @@
  * Returns an array of non-java resources contained in the receiver.
  */
 Object[] getNonJavaResources(IResource underlyingResource, PackageFragmentRoot rootHandle) {
-	if (this.nonJavaResources == null) {
+	Object[] resources = this.nonJavaResources;
+	if (resources == null) {
 		try {
-			this.nonJavaResources =
+			resources =
 				PackageFragmentRootInfo.computeFolderNonJavaResources(
 					rootHandle,
 					(IContainer)underlyingResource,
 					rootHandle.fullInclusionPatternChars(),
 					rootHandle.fullExclusionPatternChars());
+
 		} catch (JavaModelException e) {
 			// root doesn't exist: consider package has no nonJavaResources
-			this.nonJavaResources = NO_NON_JAVA_RESOURCES;
+			resources = NO_NON_JAVA_RESOURCES;
 		}
+		this.nonJavaResources = resources;
 	}
-	return this.nonJavaResources;
-}
-/**
- * Set the nonJavaResources to res value
- */
-void setNonJavaResources(Object[] resources) {
-	this.nonJavaResources = resources;
+	return resources;
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
index 9666626..751c772 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRoot.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,11 +13,14 @@
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Map;
+import java.util.jar.Manifest;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
 import org.aspectj.org.eclipse.jdt.core.*;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AutomaticModuleNaming;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.util.MementoTokenizer;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
@@ -55,6 +58,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public void attachSource(IPath sourcePath, IPath rootPath, IProgressMonitor monitor) throws JavaModelException {
 	try {
 		verifyAttachSource(sourcePath);
@@ -150,6 +154,7 @@
 /**
  * @see Openable
  */
+@Override
 protected boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, Map newElements, IResource underlyingResource) throws JavaModelException {
 	((PackageFragmentRootInfo) info).setRootKind(determineKind(underlyingResource));
 	return computeChildren(info, underlyingResource);
@@ -166,9 +171,8 @@
 
 	return mapper;
 }
-/*
- * @see org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot#delete
- */
+
+@Override
 public void delete(
 	int updateResourceFlags,
 	int updateModelFlags,
@@ -196,6 +200,12 @@
 			char[][] inclusionPatterns = fullInclusionPatternChars();
 			char[][] exclusionPatterns = fullExclusionPatternChars();
 			computeFolderChildren(rootFolder, !Util.isExcluded(rootFolder, inclusionPatterns, exclusionPatterns), CharOperation.NO_STRINGS, vChildren, inclusionPatterns, exclusionPatterns);
+//			char[] suffix = getKind() == K_SOURCE ? SuffixConstants.SUFFIX_java : SuffixConstants.SUFFIX_class;
+//			char[] moduleInfoName = CharOperation.concat(TypeConstants.MODULE_INFO_NAME, suffix);
+//			IResource module = rootFolder.findMember(String.valueOf(moduleInfoName), true);
+//			if (module != null && module.exists()) {
+//				vChildren.add(new ClassFile(getPackageFragment(CharOperation.NO_STRINGS), String.valueOf(TypeConstants.MODULE_INFO_NAME)));
+//			}
 			IJavaElement[] children = new IJavaElement[vChildren.size()];
 			vChildren.toArray(children);
 			info.setChildren(children);
@@ -209,7 +219,7 @@
 }
 
 /**
- * Starting at this folder, create package fragments and add the fragments that are not exclused
+ * Starting at this folder, create package fragments and add the fragments that are not excluded
  * to the collection of children.
  *
  * @exception JavaModelException  The resource associated with this package fragment does not exist
@@ -271,9 +281,7 @@
 	}
 }
 
-/*
- * @see org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot#copy
- */
+@Override
 public void copy(
 	IPath destination,
 	int updateResourceFlags,
@@ -290,6 +298,7 @@
 /**
  * Returns a new element info for this element.
  */
+@Override
 protected Object createElementInfo() {
 	return new PackageFragmentRootInfo();
 }
@@ -297,6 +306,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public IPackageFragment createPackageFragment(String pkgName, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CreatePackageFragmentOperation op = new CreatePackageFragmentOperation(this, pkgName, force);
 	op.runOperation(monitor);
@@ -324,6 +334,7 @@
  * same parent, same resources, and occurrence count.
  *
  */
+@Override
 public boolean equals(Object o) {
 	if (this == o)
 		return true;
@@ -411,6 +422,7 @@
 		return null;
 	}
 }
+@Override
 public String getElementName() {
 	IResource res = resource();
 	if (res instanceof IFolder)
@@ -420,18 +432,21 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return PACKAGE_FRAGMENT_ROOT;
 }
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_PACKAGEFRAGMENTROOT;
 }
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) {
 	switch (token.charAt(0)) {
 		case JEM_PACKAGEFRAGMENT:
@@ -439,7 +454,7 @@
 			if (memento.hasMoreTokens()) {
 				token = memento.nextToken();
 				char firstChar = token.charAt(0);
-				if (firstChar == JEM_CLASSFILE || firstChar == JEM_COMPILATIONUNIT || firstChar == JEM_COUNT) {
+				if (firstChar == JEM_CLASSFILE || firstChar == JEM_MODULAR_CLASSFILE || firstChar == JEM_COMPILATIONUNIT || firstChar == JEM_COUNT) {
 					pkgName = CharOperation.NO_STRINGS;
 				} else {
 					pkgName = Util.splitOn('.', token, 0, token.length());
@@ -461,6 +476,7 @@
 /**
  * @see JavaElement#getHandleMemento(StringBuffer)
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	IPath path;
 	IResource underlyingResource = getResource();
@@ -478,10 +494,15 @@
 	((JavaElement)getParent()).getHandleMemento(buff);
 	buff.append(getHandleMementoDelimiter());
 	escapeMementoName(buff, path.toString());
+	if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isJrt(path.toOSString())) {
+		buff.append(JavaElement.JEM_MODULE);
+		escapeMementoName(buff, getElementName());
+	}
 }
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public int getKind() throws JavaModelException {
 	return ((PackageFragmentRootInfo)getElementInfo()).getRootKind();
 }
@@ -502,6 +523,7 @@
 /**
  * Returns an array of non-java resources contained in the receiver.
  */
+@Override
 public Object[] getNonJavaResources() throws JavaModelException {
 	return ((PackageFragmentRootInfo) getElementInfo()).getNonJavaResources(getJavaProject(), resource(), this);
 }
@@ -509,6 +531,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public IPackageFragment getPackageFragment(String packageName) {
 	// tolerate package names with spaces (e.g. 'x . y') (http://bugs.eclipse.org/bugs/show_bug.cgi?id=21957)
 	String[] pkgName = Util.getTrimmedSimpleNames(packageName);
@@ -517,6 +540,9 @@
 public PackageFragment getPackageFragment(String[] pkgName) {
 	return new PackageFragment(this, pkgName);
 }
+public PackageFragment getPackageFragment(String[] pkgName, String mod) {
+	return new PackageFragment(this, pkgName); // Overridden in JImageModuleFragmentBridge
+}
 /**
  * Returns the package name for the given folder
  * (which is a decendent of this root).
@@ -539,6 +565,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public IPath getPath() {
 	return internalPath();
 }
@@ -549,6 +576,7 @@
 /*
  * @see IPackageFragmentRoot
  */
+@Override
 public IClasspathEntry getRawClasspathEntry() throws JavaModelException {
 
 	IClasspathEntry rawEntry = null;
@@ -566,6 +594,7 @@
 /*
  * @see IPackageFragmentRoot
  */
+@Override
 public IClasspathEntry getResolvedClasspathEntry() throws JavaModelException {
 	IClasspathEntry resolvedEntry = null;
 	JavaProject project = (JavaProject)getJavaProject();
@@ -581,6 +610,7 @@
 }
 
 
+@Override
 public IResource resource() {
 	if (this.resource != null) // perf improvement to avoid message send in resource()
 		return this.resource;
@@ -589,6 +619,7 @@
 /*
  * @see IJavaElement
  */
+@Override
 public IResource resource(PackageFragmentRoot root) {
 	return this.resource;
 }
@@ -596,6 +627,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public IPath getSourceAttachmentPath() throws JavaModelException {
 	if (getKind() != K_BINARY) return null;
 
@@ -641,6 +673,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public IPath getSourceAttachmentRootPath() throws JavaModelException {
 	if (getKind() != K_BINARY) return null;
 
@@ -674,6 +707,7 @@
 /**
  * @see JavaElement
  */
+@Override
 public SourceMapper getSourceMapper() {
 	SourceMapper mapper;
 	try {
@@ -699,6 +733,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public IResource getUnderlyingResource() throws JavaModelException {
 	if (!exists()) throw newNotPresentException();
 	return resource();
@@ -707,11 +742,13 @@
 /**
  * @see IParent
  */
+@Override
 public boolean hasChildren() throws JavaModelException {
 	// a package fragment root always has the default package as a child
 	return true;
 }
 
+@Override
 public int hashCode() {
 	return resource().hashCode();
 }
@@ -727,6 +764,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public boolean isArchive() {
 	return false;
 }
@@ -734,6 +772,7 @@
 /**
  * @see IPackageFragmentRoot
  */
+@Override
 public boolean isExternal() {
 	return false;
 }
@@ -757,9 +796,8 @@
 	}
 	return new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH, this);
 }
-/*
- * @see org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot#move
- */
+
+@Override
 public void move(
 	IPath destination,
 	int updateResourceFlags,
@@ -776,6 +814,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	IPath path = getPath();
@@ -795,6 +834,7 @@
 	}
 }
 
+@Override
 protected IStatus validateExistence(IResource underlyingResource) {
 	// check whether this pkg fragment root can be opened
 	IStatus status = validateOnClasspath();
@@ -823,5 +863,93 @@
 		throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.RELATIVE_PATH, sourcePath));
 	}
 }
+/**
+ * Returns the relative path within an archive for the given class file name. In certain
+ * kind of archives, such as a JMOD file, class files are stored in a nested folder, as opposed
+ * to directly under the root. It is the responsibility of such package fragment roots to
+ * provide the custom behavior.
+ *
+ * @param classname
+ * @return the relative path for the class file within the archive
+ */
+public String getClassFilePath(String classname) {
+	return classname;
+}
+@Override
+public IModuleDescription getModuleDescription() {
+	try {
+		IJavaElement[] pkgs = getChildren();
+		for (int j = 0, length = pkgs.length; j < length; j++) {
+			// only look in the default package
+			if (pkgs[j].getElementName().length() == 0) {
+				OpenableElementInfo info = null;
+				if (getKind() == IPackageFragmentRoot.K_SOURCE) {
+					ICompilationUnit unit = ((PackageFragment) pkgs[j])
+							.getCompilationUnit(TypeConstants.MODULE_INFO_FILE_NAME_STRING);
+					if (unit instanceof CompilationUnit && unit.exists()) {
+						info = (CompilationUnitElementInfo) ((CompilationUnit) unit)
+								.getElementInfo();
+						if (info != null)
+							return info.getModule();
+					}
+				} else {
+					IModularClassFile classFile = ((IPackageFragment)pkgs[j]).getModularClassFile();
+					if (classFile.exists()) {
+						return classFile.getModule();
+					}
+				}
+				break;
+			}
+		}
+	} catch (JavaModelException e) {
+		Util.log(e);
+	}
+	return null;
+}
 
+public IModuleDescription getAutomaticModuleDescription() throws JavaModelException {
+	return getAutomaticModuleDescription(getResolvedClasspathEntry());
+}
+
+IModuleDescription getAutomaticModuleDescription(IClasspathEntry classpathEntry) {
+	String elementName = getElementName();
+	Manifest manifest = null;
+	switch (classpathEntry.getEntryKind()) {
+		case IClasspathEntry.CPE_SOURCE:
+			manifest = ((JavaProject) getJavaProject()).getManifest();
+			elementName = getJavaProject().getElementName();
+			break;
+		case IClasspathEntry.CPE_LIBRARY:
+			manifest = getManifest();
+			break;
+		case IClasspathEntry.CPE_PROJECT:
+			JavaProject javaProject = (JavaProject) getJavaModel().getJavaProject(classpathEntry.getPath().lastSegment());
+			manifest = javaProject.getManifest();
+			elementName = javaProject.getElementName();
+			break;
+	}
+	boolean nameFromManifest = true;
+	char[] moduleName = AutomaticModuleNaming.determineAutomaticModuleNameFromManifest(manifest);
+	if (moduleName == null) {
+		nameFromManifest = false;
+		moduleName = AutomaticModuleNaming.determineAutomaticModuleNameFromFileName(elementName, true, isArchive());
+	}
+	return new AbstractModule.AutoModule(this, String.valueOf(moduleName), nameFromManifest);
+}
+
+/** @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry#hasCompilationUnit(String, String) */
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	IPackageFragment fragment = getPackageFragment(qualifiedPackageName.replace('/', '.'));
+	try {
+		if (fragment.exists())
+			return fragment.containsJavaResources();
+	} catch (JavaModelException e) {
+		// silent
+	}
+	return false;
+}
+/** Convenience lookup, though currently only JarPackageFragmentRoot is searched for a manifest. */
+public Manifest getManifest() {
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
index a9bb811..31c5a01 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/PackageFragmentRootInfo.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,13 +37,9 @@
 	 */
 	protected int rootKind= IPackageFragmentRoot.K_SOURCE;
 
-	/**
-	 * A array with all the non-java resources contained by this PackageFragment
-	 */
-	protected Object[] nonJavaResources;
-
 	private boolean ignoreOptionalProblems;
 	private boolean initialized;
+
 /**
  * Create and initialize a new instance of the receiver
  */
@@ -150,6 +146,7 @@
 	}
 	return resources;
 }
+
 /**
  * Returns the kind of this root.
  */
@@ -180,12 +177,6 @@
 	return false;
 }
 /**
- * Set the fNonJavaResources to res value
- */
-void setNonJavaResources(Object[] resources) {
-	this.nonJavaResources = resources;
-}
-/**
  * Sets the kind of this root.
  */
 protected void setRootKind(int newRootKind) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.java
new file mode 100644
index 0000000..834ff07
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectEntry.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+
+/**
+ * Represents a project
+ *
+ */
+public class ProjectEntry implements IModulePathEntry {
+
+	static boolean representsProject(IModulePathEntry entry, IJavaProject otherProject) {
+		if (entry instanceof ProjectEntry) {
+			return ((ProjectEntry) entry).project.equals(otherProject);
+		}
+		return false;
+	}
+
+	JavaProject project;
+	
+	public ProjectEntry(JavaProject project) {
+		// 
+		this.project = project;
+	}
+	@Override
+	public IModule getModule() {
+		try {
+			IModuleDescription module = this.project.getModuleDescription();
+			if (module != null) {
+				return (IModule) ((JavaElement) module) .getElementInfo();
+			}
+		} catch (JavaModelException e) {
+			// Proceed with null;
+		}
+		return null;
+	}
+
+	@Override
+	public boolean isAutomaticModule() {
+		return false;
+	}
+
+	@Override
+	public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		// TODO(SHMOD): verify (is unnamed handled correctly?)
+		IModule mod = getModule();
+		if (mod == null) {
+			if (moduleName != null)
+				return null;
+		} else if (!String.valueOf(mod.name()).equals(moduleName)) {
+			return null;
+		}
+		try {
+			IJavaElement element = this.project.findElement(new Path(qualifiedPackageName.replace('.', '/')));
+			if (element instanceof IPackageFragment)
+				return mod != null ? new char[][] { mod.name() } : CharOperation.NO_CHAR_CHAR;
+		} catch (JavaModelException e) {
+			return null;
+		}
+		return null;
+	}
+	@Override
+	public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+		try {
+			for (IPackageFragmentRoot root : this.project.getPackageFragmentRoots()) {
+				if (root instanceof PackageFragmentRoot && ((PackageFragmentRoot) root).hasCompilationUnit(qualifiedPackageName, moduleName))
+					return true;
+			}
+		} catch (JavaModelException e) {
+			// silent
+		}
+		return false;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.java
deleted file mode 100644
index 86ae6c0..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ProjectReferenceChange.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core;
-
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
-import org.aspectj.org.eclipse.jdt.core.JavaModelException;
-import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
-import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
-
-@SuppressWarnings({"rawtypes", "unchecked"})
-public class ProjectReferenceChange {
-
-	private JavaProject project;
-	private IClasspathEntry[] oldResolvedClasspath;
-
-	public ProjectReferenceChange(JavaProject project, IClasspathEntry[] oldResolvedClasspath) {
-		this.project = project;
-		this.oldResolvedClasspath = oldResolvedClasspath;
-	}
-
-	/*
-	 * Update projects references so that the build order is consistent with the classpath
-	 */
-	public void updateProjectReferencesIfNecessary() throws JavaModelException {
-		
-		String[] oldRequired = this.oldResolvedClasspath == null ? CharOperation.NO_STRINGS : this.project.projectPrerequisites(this.oldResolvedClasspath);
-		IClasspathEntry[] newResolvedClasspath = this.project.getResolvedClasspath();
-		String[] newRequired = this.project.projectPrerequisites(newResolvedClasspath);
-		final IProject projectResource = this.project.getProject();
-		
-		try {
-			IProject[] projectReferences = projectResource.getDescription().getDynamicReferences();
-			
-			HashSet oldReferences = new HashSet(projectReferences.length);
-			for (int i = 0; i < projectReferences.length; i++){
-				String projectName = projectReferences[i].getName();
-				oldReferences.add(projectName);
-			}
-			HashSet newReferences = (HashSet)oldReferences.clone();
-	
-			for (int i = 0; i < oldRequired.length; i++){
-				String projectName = oldRequired[i];
-				newReferences.remove(projectName);
-			}
-			for (int i = 0; i < newRequired.length; i++){
-				String projectName = newRequired[i];
-				newReferences.add(projectName);
-			}
-	
-			Iterator iter;
-			int newSize = newReferences.size();
-			
-			checkIdentity: {
-				if (oldReferences.size() == newSize){
-					iter = newReferences.iterator();
-					while (iter.hasNext()){
-						if (!oldReferences.contains(iter.next())){
-							break checkIdentity;
-						}
-					}
-					return;
-				}
-			}
-			String[] requiredProjectNames = new String[newSize];
-			int index = 0;
-			iter = newReferences.iterator();
-			while (iter.hasNext()){
-				requiredProjectNames[index++] = (String)iter.next();
-			}
-			Util.sort(requiredProjectNames); // ensure that if changed, the order is consistent
-			
-			final IProject[] requiredProjectArray = new IProject[newSize];
-			IWorkspaceRoot wksRoot = projectResource.getWorkspace().getRoot();
-			for (int i = 0; i < newSize; i++){
-				requiredProjectArray[i] = wksRoot.getProject(requiredProjectNames[i]);
-			}
-				
-			// ensure that a scheduling rule is used so that the project description is not modified by another thread while we update it
-			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=214981
-			// also ensure that if no change (checkIdentify block returned above) we don't reach here
-			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=241751
-			IWorkspace workspace = projectResource.getWorkspace();
-			ISchedulingRule rule = workspace.getRuleFactory().modifyRule(projectResource); // scheduling rule for modifying the project
-			IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
-				public void run(IProgressMonitor monitor) throws CoreException {
-					IProjectDescription description = projectResource.getDescription();
-					description.setDynamicReferences(requiredProjectArray);
-					projectResource.setDescription(description, IResource.AVOID_NATURE_CONFIG, null);
-				}
-			};
-			workspace.run(runnable, rule, IWorkspace.AVOID_UPDATE, null);
-		} catch(CoreException e){
-			if (!ExternalJavaProject.EXTERNAL_PROJECT_NAME.equals(this.project.getElementName()))
-				throw new JavaModelException(e);
-		}
-	}
-	public String toString() {
-		return "ProjectRefenceChange: " + this.project.getElementName(); //$NON-NLS-1$
-	}
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.java
index 836569c..5494d35 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ReconcileWorkingCopyOperation.java
@@ -66,6 +66,7 @@
 	 * @exception JavaModelException if setting the source
 	 * 	of the original compilation unit fails
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		checkCanceled();
 		try {
@@ -152,9 +153,7 @@
 		return (CompilationUnit)getElementToProcess();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation#isReadOnly()
-	 */
+	@Override
 	public boolean isReadOnly() {
 		return true;
 	}
@@ -243,6 +242,7 @@
 		for (int i = 0, length = participants.length; i < length; i++) {
 			final CompilationParticipant participant = participants[i];
 			SafeRunner.run(new ISafeRunnable() {
+				@Override
 				public void handleException(Throwable exception) {
 					if (exception instanceof Error) {
 						throw (Error) exception; // errors are not supposed to be caught
@@ -254,6 +254,7 @@
 					} else
 						Util.log(exception, "Exception occurred in reconcile participant"); //$NON-NLS-1$
 				}
+				@Override
 				public void run() throws Exception {
 					participant.reconcile(context);
 				}
@@ -261,6 +262,7 @@
 		}
 	}
 
+	@Override
 	protected IJavaModelStatus verify() {
 		IJavaModelStatus status = super.verify();
 		if (!status.isOK()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.java
index b810317..67c30a2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameElementsOperation.java
@@ -41,18 +41,21 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_renameElementProgress;
 }
 /**
  * @see CopyElementsOperation#isRename()
  */
+@Override
 protected boolean isRename() {
 	return true;
 }
 /**
  * @see MultiOperation
  */
+@Override
 protected IJavaModelStatus verify() {
 	IJavaModelStatus status = super.verify();
 	if (! status.isOK())
@@ -64,6 +67,7 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected void verify(IJavaElement element) throws JavaModelException {
 	if (element == null || !element.exists())
 		error(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, element);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.java
index db87033..910771c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/RenameResourceElementsOperation.java
@@ -37,18 +37,21 @@
 /**
  * @see MultiOperation
  */
+@Override
 protected String getMainTaskName() {
 	return Messages.operation_renameResourceProgress;
 }
 /**
  * @see CopyResourceElementsOperation#isRename()
  */
+@Override
 protected boolean isRename() {
 	return true;
 }
 /**
  * @see MultiOperation
  */
+@Override
 protected void verify(IJavaElement element) throws JavaModelException {
 	super.verify(element);
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.java
index 9549b14..ecbc1d7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryField.java
@@ -27,20 +27,17 @@
 		this.uniqueKey = uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.BinaryField#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
 
+	@Override
 	public String getKey(boolean forceOpen) {
 		return this.uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IField#isResolved()
-	 */
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -48,6 +45,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -57,6 +55,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceRefElement handle = new BinaryField(this.parent, this.name);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java
index bb2fc7f..db80ae9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryMethod.java
@@ -28,9 +28,8 @@
 		super(parent, name, parameterTypes);
 		this.uniqueKey = uniqueKey;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.BinaryMethod#getKey()
-	 */
+
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
@@ -40,9 +39,7 @@
 		return this.uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IMethod#isResolved()
-	 */
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -50,6 +47,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -59,6 +57,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceRefElement handle = new BinaryMethod(this.parent, this.name, this.parameterTypes);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.java
index 1520c7c..9ea922f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedBinaryType.java
@@ -29,13 +29,12 @@
 		this.uniqueKey = uniqueKey;
 	}
 
+	@Override
 	public String getFullyQualifiedParameterizedName() throws JavaModelException {
 		return getFullyQualifiedParameterizedName(getFullyQualifiedName('.'), this.uniqueKey);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.BinaryType#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
@@ -45,9 +44,7 @@
 		return this.uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.BinaryType#isResolved()
-	 */
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -55,6 +52,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -64,6 +62,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceRefElement handle = new BinaryType(this.parent, this.name);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.java
index 5524233..d90eda5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedLambdaExpression.java
@@ -23,13 +23,12 @@
 		this.unresolved = unresolved;
 	}
 
+	@Override
 	public String getFullyQualifiedParameterizedName() throws JavaModelException {
 		return getFullyQualifiedParameterizedName(getFullyQualifiedName('.'), this.uniqueKey);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceType#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
@@ -38,10 +37,8 @@
 	public boolean equals(Object o) {
 		return this.unresolved.equals(o);
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceType#isResolved()
-	 */
+
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -49,6 +46,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -58,6 +56,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		return this.unresolved;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.java
index 59e46ec..4286826 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceField.java
@@ -26,16 +26,12 @@
 		this.uniqueKey = uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceField#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IField#isResolved()
-	 */
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -43,6 +39,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -52,6 +49,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceRefElement handle = new SourceField(this.parent, this.name);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java
index aab885b..1e23dbd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceMethod.java
@@ -26,15 +26,12 @@
 		this.uniqueKey = uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceMethod#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IMethod#isResolved()
-	 */
+
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -42,6 +39,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -51,6 +49,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceRefElement handle = new SourceMethod(this.parent, this.name, this.parameterTypes);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.java
index 67a786b..31abc32 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/ResolvedSourceType.java
@@ -28,20 +28,17 @@
 		this.uniqueKey = uniqueKey;
 	}
 
+	@Override
 	public String getFullyQualifiedParameterizedName() throws JavaModelException {
 		return getFullyQualifiedParameterizedName(getFullyQualifiedName('.'), this.uniqueKey);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceType#getKey()
-	 */
+	@Override
 	public String getKey() {
 		return this.uniqueKey;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.core.SourceType#isResolved()
-	 */
+	@Override
 	public boolean isResolved() {
 		return true;
 	}
@@ -49,6 +46,7 @@
 	/**
 	 * @private Debugging purposes
 	 */
+	@Override
 	protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 		super.toStringInfo(tab, buffer, info, showResolvedInfo);
 		if (showResolvedInfo) {
@@ -58,6 +56,7 @@
 		}
 	}
 
+	@Override
 	public JavaElement unresolved() {
 		SourceType handle = new SourceType(this.parent, this.name);
 		handle.occurrenceCount = this.occurrenceCount;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.java
index bd7950f..ef1635c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironment.java
@@ -11,6 +11,15 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -18,13 +27,22 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.search.*;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.ISearchRequestor;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.NameLookup.Answer;
 import org.aspectj.org.eclipse.jdt.internal.core.search.BasicSearchEngine;
 import org.aspectj.org.eclipse.jdt.internal.core.search.IRestrictedAccessConstructorRequestor;
 import org.aspectj.org.eclipse.jdt.internal.core.search.IRestrictedAccessTypeRequestor;
@@ -37,7 +55,7 @@
  *	uses the Java model as a search tool.
  */
 public class SearchableEnvironment
-	implements INameEnvironment, IJavaSearchConstants {
+	implements IModuleAwareNameEnvironment, IJavaSearchConstants {
 
 	public NameLookup nameLookup;
 	protected ICompilationUnit unitToSkip;
@@ -48,24 +66,54 @@
 	protected IJavaSearchScope searchScope;
 
 	protected boolean checkAccessRestrictions;
+	// moduleName -> IPackageFragmentRoot[](lazily populated)
+	private Map<String,IPackageFragmentRoot[]> knownModuleLocations; // null indicates: not using JPMS
+	private boolean excludeTestCode;
 
+	private ModuleUpdater moduleUpdater;
+	private Map<IPackageFragmentRoot,IModuleDescription> rootToModule;
+
+	@Deprecated
+	public SearchableEnvironment(JavaProject project, org.aspectj.org.eclipse.jdt.core.ICompilationUnit[] workingCopies) throws JavaModelException {
+		this(project, workingCopies, false);
+	}
 	/**
 	 * Creates a SearchableEnvironment on the given project
 	 */
-	public SearchableEnvironment(JavaProject project, org.aspectj.org.eclipse.jdt.core.ICompilationUnit[] workingCopies) throws JavaModelException {
+	public SearchableEnvironment(JavaProject project, org.aspectj.org.eclipse.jdt.core.ICompilationUnit[] workingCopies, boolean excludeTestCode) throws JavaModelException {
 		this.project = project;
+		this.excludeTestCode = excludeTestCode;
 		this.checkAccessRestrictions =
 			!JavaCore.IGNORE.equals(project.getOption(JavaCore.COMPILER_PB_FORBIDDEN_REFERENCE, true))
 			|| !JavaCore.IGNORE.equals(project.getOption(JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE, true));
 		this.workingCopies = workingCopies;
-		this.nameLookup = project.newNameLookup(workingCopies);
+		this.nameLookup = project.newNameLookup(workingCopies, excludeTestCode);
+		if (CompilerOptions.versionToJdkLevel(project.getOption(JavaCore.COMPILER_COMPLIANCE, true)) >= ClassFileConstants.JDK9) {
+			for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
+				if (root.getModuleDescription() != null) {
+					this.knownModuleLocations = new HashMap<>();
+					break;
+				}
+			}
+		}
+		if (CompilerOptions.versionToJdkLevel(project.getOption(JavaCore.COMPILER_COMPLIANCE, true)) >= ClassFileConstants.JDK9) {
+			this.moduleUpdater = new ModuleUpdater(project);
+			if (!excludeTestCode) {
+				IClasspathEntry[] expandedClasspath = project.getExpandedClasspath();
+				if(Arrays.stream(expandedClasspath).anyMatch(e -> e.isTest())) {
+					this.moduleUpdater.addReadUnnamedForNonEmptyClasspath(project, expandedClasspath);
+				}
+			}
+			for (IClasspathEntry entry : project.getRawClasspath())
+				if(!excludeTestCode || !entry.isTest())
+					this.moduleUpdater.computeModuleUpdates(entry);
+		}
 	}
-
 	/**
 	 * Creates a SearchableEnvironment on the given project
 	 */
-	public SearchableEnvironment(JavaProject project, WorkingCopyOwner owner) throws JavaModelException {
-		this(project, owner == null ? null : JavaModelManager.getJavaModelManager().getWorkingCopies(owner, true/*add primary WCs*/));
+	public SearchableEnvironment(JavaProject project, WorkingCopyOwner owner, boolean excludeTestCode) throws JavaModelException {
+		this(project, owner == null ? null : JavaModelManager.getJavaModelManager().getWorkingCopies(owner, true/*add primary WCs*/), excludeTestCode);
 		this.owner = owner;
 	}
 
@@ -91,13 +139,18 @@
 	 * Returns the given type in the the given package if it exists,
 	 * otherwise <code>null</code>.
 	 */
-	protected NameEnvironmentAnswer find(String typeName, String packageName) {
+	protected NameEnvironmentAnswer find(String typeName, String packageName, IPackageFragmentRoot[] moduleContext) {
 		if (packageName == null)
 			packageName = IPackageFragment.DEFAULT_PACKAGE_NAME;
 		if (this.owner != null) {
 			String source = this.owner.findSource(typeName, packageName);
 			if (source != null) {
-				ICompilationUnit cu = new BasicCompilationUnit(source.toCharArray(), CharOperation.splitOn('.', packageName.toCharArray()), typeName + Util.defaultJavaExtension());
+				IJavaElement moduleElement = (moduleContext != null && moduleContext.length > 0) ? moduleContext[0] : null;
+				ICompilationUnit cu = new BasicCompilationUnit(
+						source.toCharArray(),
+						CharOperation.splitOn('.', packageName.toCharArray()),
+						typeName + Util.defaultJavaExtension(),
+						moduleElement);
 				return new NameEnvironmentAnswer(cu, null);
 			}
 		}
@@ -107,12 +160,14 @@
 				packageName,
 				false/*exact match*/,
 				NameLookup.ACCEPT_ALL,
-				this.checkAccessRestrictions);
+				this.checkAccessRestrictions,
+				moduleContext);
 		if (answer != null) {
 			// construct name env answer
 			if (answer.type instanceof BinaryType) { // BinaryType
 				try {
-					return new NameEnvironmentAnswer((IBinaryType) ((BinaryType) answer.type).getElementInfo(), answer.restriction);
+					char[] moduleName = answer.module != null ? answer.module.getElementName().toCharArray() : null;
+					return new NameEnvironmentAnswer((IBinaryType) ((BinaryType) answer.type).getElementInfo(), answer.restriction, moduleName);
 				} catch (JavaModelException npe) {
 					// fall back to using owner
 				}
@@ -137,7 +192,8 @@
 						if (!otherType.equals(topLevelType) && index < length) // check that the index is in bounds (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=62861)
 							sourceTypes[index++] = otherType;
 					}
-					return new NameEnvironmentAnswer(sourceTypes, answer.restriction, getExternalAnnotationPath(answer.entry));
+					char[] moduleName = answer.module != null ? answer.module.getElementName().toCharArray() : null;
+					return new NameEnvironmentAnswer(sourceTypes, answer.restriction, getExternalAnnotationPath(answer.entry), moduleName);
 				} catch (JavaModelException jme) {
 					if (jme.isDoesNotExist() && String.valueOf(TypeConstants.PACKAGE_INFO_NAME).equals(typeName)) {
 						// in case of package-info.java the type doesn't exist in the model,
@@ -161,6 +217,17 @@
 	}
 
 	/**
+	 * Find the modules that start with the given prefix.
+	 * A valid prefix is a qualified name separated by periods
+	 * (ex. java.util).
+	 * The packages found are passed to:
+	 *    ISearchRequestor.acceptModule(char[][] moduleName)
+	 */
+	public void findModules(char[] prefix, ISearchRequestor requestor, IJavaProject javaProject) {
+		this.nameLookup.seekModule(prefix, true, new SearchableEnvironmentRequestor(requestor));
+	}
+
+	/**
 	 * Find the packages that start with the given prefix.
 	 * A valid prefix is a qualified name separated by periods
 	 * (ex. java.util).
@@ -175,6 +242,66 @@
 	}
 
 	/**
+	 * Find the packages that start with the given prefix and belong to the given module.
+	 * A valid prefix is a qualified name separated by periods
+	 * (ex. java.util).
+	 * The packages found are passed to:
+	 *    ISearchRequestor.acceptPackage(char[][] packageName)
+	 */
+	public void findPackages(char[] prefix, ISearchRequestor requestor, IPackageFragmentRoot[] moduleContext, boolean followRequires) {
+		this.nameLookup.seekPackageFragments(
+			new String(prefix),
+			true,
+			new SearchableEnvironmentRequestor(requestor), moduleContext);
+	if (followRequires && this.knownModuleLocations != null) {
+		try {
+			boolean isMatchAllPrefix = CharOperation.equals(CharOperation.ALL_PREFIX, prefix);
+			Set<IModuleDescription> modDescs = new HashSet<>();
+			for (IPackageFragmentRoot root : moduleContext) {
+				IModuleDescription desc = root.getJavaProject().getModuleDescription();
+				if (desc instanceof AbstractModule)
+					modDescs.add(desc);
+			}
+			for (IModuleDescription md : modDescs) {
+				IModuleReference[] reqModules = ((AbstractModule) md).getRequiredModules();
+				char[] modName = md.getElementName().toCharArray();
+				for (IModuleReference moduleReference : reqModules) {
+					findPackagesFromRequires(prefix, isMatchAllPrefix, requestor, moduleReference, modName);
+				}
+			}
+		} catch (JavaModelException e) {
+			// silent
+		}
+	}
+}
+
+private void findPackagesFromRequires(char[] prefix, boolean isMatchAllPrefix, ISearchRequestor requestor, IModuleReference moduleReference, char[] clientModuleName) {
+	IPackageFragmentRoot[] fragmentRoots = findModuleContext(moduleReference.name());
+	if (fragmentRoots == null) return;
+	for (IPackageFragmentRoot root : fragmentRoots) {
+		IJavaProject requiredProject = root.getJavaProject();
+		try {
+			IModuleDescription module = requiredProject.getModuleDescription();
+			if (module instanceof AbstractModule) {
+				AbstractModule requiredModule = (AbstractModule) module;
+				for (IPackageExport packageExport : requiredModule.getExportedPackages()) {
+					if (!packageExport.isQualified() || CharOperation.containsEqual(packageExport.targets(), clientModuleName)) {
+						char[] exportName = packageExport.name();
+						if (isMatchAllPrefix || CharOperation.prefixEquals(prefix, exportName))
+							requestor.acceptPackage(exportName);
+					}
+				}
+				for (IModuleReference moduleRef2 : requiredModule.getRequiredModules()) {
+					if (moduleRef2.isTransitive())
+						findPackagesFromRequires(prefix, isMatchAllPrefix, requestor, moduleRef2, clientModuleName);
+				}
+			}
+		} catch (JavaModelException e) {
+			// silent
+		}
+	}
+}
+	/**
 	 * Find the top-level types that are defined
 	 * in the current environment and whose simple name matches the given name.
 	 *
@@ -207,32 +334,41 @@
 
 			IProgressMonitor progressMonitor = new IProgressMonitor() {
 				boolean isCanceled = false;
+				@Override
 				public void beginTask(String n, int totalWork) {
 					// implements interface method
 				}
+				@Override
 				public void done() {
 					// implements interface method
 				}
+				@Override
 				public void internalWorked(double work) {
 					// implements interface method
 				}
+				@Override
 				public boolean isCanceled() {
 					return this.isCanceled;
 				}
+				@Override
 				public void setCanceled(boolean value) {
 					this.isCanceled = value;
 				}
+				@Override
 				public void setTaskName(String n) {
 					// implements interface method
 				}
+				@Override
 				public void subTask(String n) {
 					// implements interface method
 				}
+				@Override
 				public void worked(int work) {
 					// implements interface method
 				}
 			};
 			IRestrictedAccessTypeRequestor typeRequestor = new IRestrictedAccessTypeRequestor() {
+				@Override
 				public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 					if (excludePath != null && excludePath.equals(path))
 						return;
@@ -276,15 +412,41 @@
 	}
 
 	/**
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment#findType(char[][])
+	 * Find a type in the given module or any module read by it.
+	 * Does not check accessibility / unique visibility, but returns the first observable type found.
+	 * @param compoundTypeName name of the sought type
+	 * @param module start into the module graph
+	 * @return the answer :)
 	 */
-	public NameEnvironmentAnswer findType(char[][] compoundTypeName) {
+	public NameEnvironmentAnswer findTypeInModules(char[][] compoundTypeName, ModuleBinding module) {
+		char[] nameForLookup = module.nameForLookup();
+		NameEnvironmentAnswer answer = findType(compoundTypeName, nameForLookup);
+		if (answer != null)
+			return answer;
+		if (LookupStrategy.get(nameForLookup) == LookupStrategy.Named) {
+			for (ModuleBinding required : module.getAllRequiredModules()) {
+				answer = findType(compoundTypeName, required.nameForLookup());
+				if (answer != null)
+					return answer;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment#findType(char[][],char[])
+	 */
+	@Override
+	public NameEnvironmentAnswer findType(char[][] compoundTypeName, char[] moduleName) {
 		if (compoundTypeName == null) return null;
 
+		boolean isNamedStrategy = LookupStrategy.get(moduleName) == LookupStrategy.Named;
+		IPackageFragmentRoot[] moduleLocations = isNamedStrategy ? findModuleContext(moduleName) : null;
+
 		int length = compoundTypeName.length;
 		if (length <= 1) {
 			if (length == 0) return null;
-			return find(new String(compoundTypeName[0]), null);
+			return find(new String(compoundTypeName[0]), null, moduleLocations);
 		}
 
 		int lengthM1 = length - 1;
@@ -293,18 +455,23 @@
 
 		return find(
 			new String(compoundTypeName[lengthM1]),
-			CharOperation.toString(packageName));
+			CharOperation.toString(packageName),
+			moduleLocations);
 	}
 
 	/**
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment#findType(char[], char[][])
+	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment#findType(char[],char[][],char[])
 	 */
-	public NameEnvironmentAnswer findType(char[] name, char[][] packageName) {
+	@Override
+	public NameEnvironmentAnswer findType(char[] name, char[][] packageName, char[] moduleName) {
 		if (name == null) return null;
 
+		boolean isNamedStrategy = LookupStrategy.get(moduleName) == LookupStrategy.Named;
+		IPackageFragmentRoot[] moduleLocations = isNamedStrategy ? findModuleContext(moduleName) : null;
 		return find(
 			new String(name),
-			packageName == null || packageName.length == 0 ? null : CharOperation.toString(packageName));
+			packageName == null || packageName.length == 0 ? null : CharOperation.toString(packageName),
+			moduleLocations);
 	}
 
 	/**
@@ -388,32 +555,41 @@
 
 			IProgressMonitor progressMonitor = new IProgressMonitor() {
 				boolean isCanceled = false;
+				@Override
 				public void beginTask(String name, int totalWork) {
 					// implements interface method
 				}
+				@Override
 				public void done() {
 					// implements interface method
 				}
+				@Override
 				public void internalWorked(double work) {
 					// implements interface method
 				}
+				@Override
 				public boolean isCanceled() {
 					return this.isCanceled;
 				}
+				@Override
 				public void setCanceled(boolean value) {
 					this.isCanceled = value;
 				}
+				@Override
 				public void setTaskName(String name) {
 					// implements interface method
 				}
+				@Override
 				public void subTask(String name) {
 					// implements interface method
 				}
+				@Override
 				public void worked(int work) {
 					// implements interface method
 				}
 			};
 			IRestrictedAccessTypeRequestor typeRequestor = new IRestrictedAccessTypeRequestor() {
+				@Override
 				public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 					if (excludePath != null && excludePath.equals(path))
 						return;
@@ -539,33 +715,42 @@
 
 			IProgressMonitor progressMonitor = new IProgressMonitor() {
 				boolean isCanceled = false;
+				@Override
 				public void beginTask(String name, int totalWork) {
 					// implements interface method
 				}
+				@Override
 				public void done() {
 					// implements interface method
 				}
+				@Override
 				public void internalWorked(double work) {
 					// implements interface method
 				}
+				@Override
 				public boolean isCanceled() {
 					return this.isCanceled;
 				}
+				@Override
 				public void setCanceled(boolean value) {
 					this.isCanceled = value;
 				}
+				@Override
 				public void setTaskName(String name) {
 					// implements interface method
 				}
+				@Override
 				public void subTask(String name) {
 					// implements interface method
 				}
+				@Override
 				public void worked(int work) {
 					// implements interface method
 				}
 			};
 			
 			IRestrictedAccessConstructorRequestor constructorRequestor = new IRestrictedAccessConstructorRequestor() {
+				@Override
 				public void acceptConstructor(
 						int modifiers,
 						char[] simpleTypeName,
@@ -686,31 +871,179 @@
 		if (this.searchScope == null) {
 			// Create search scope with visible entry on the project's classpath
 			if(this.checkAccessRestrictions) {
-				this.searchScope = BasicSearchEngine.createJavaSearchScope(new IJavaElement[] {this.project});
+				this.searchScope = BasicSearchEngine.createJavaSearchScope(this.excludeTestCode, new IJavaElement[] {this.project});
 			} else {
-				this.searchScope = BasicSearchEngine.createJavaSearchScope(this.nameLookup.packageFragmentRoots);
+				this.searchScope = BasicSearchEngine.createJavaSearchScope(this.excludeTestCode, this.nameLookup.packageFragmentRoots);
 			}
 		}
 		return this.searchScope;
 	}
 
 	/**
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment#isPackage(char[][], char[])
+	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment#getModulesDeclaringPackage(char[][], char[], char[])
 	 */
-	public boolean isPackage(char[][] parentPackageName, char[] subPackageName) {
+	@Override
+	public char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] name, char[] moduleName) {
 		String[] pkgName;
 		if (parentPackageName == null)
-			pkgName = new String[] {new String(subPackageName)};
+			pkgName = new String[] {new String(name)};
 		else {
 			int length = parentPackageName.length;
 			pkgName = new String[length+1];
 			for (int i = 0; i < length; i++)
 				pkgName[i] = new String(parentPackageName[i]);
-			pkgName[length] = new String(subPackageName);
+			pkgName[length] = new String(name);
 		}
-		return 
-			(this.owner != null && this.owner.isPackage(pkgName))
-			|| this.nameLookup.isPackage(pkgName);
+		LookupStrategy strategy = LookupStrategy.get(moduleName);
+		switch (strategy) {
+			case Named:
+				if (this.knownModuleLocations != null) {
+					IPackageFragmentRoot[] moduleContext = findModuleContext(moduleName);
+					if (moduleContext != null) {
+						// (this.owner != null && this.owner.isPackage(pkgName)) // TODO(SHMOD) see old isPackage
+						if (this.nameLookup.isPackage(pkgName, moduleContext)) {
+							return new char[][] { moduleName };
+						}
+					}
+				}
+				return null;
+			case Unnamed:
+			case Any:
+				// if in pre-9 mode we may still search the unnamed module 
+				if (this.knownModuleLocations == null) {
+					if ((this.owner != null && this.owner.isPackage(pkgName))
+							|| this.nameLookup.isPackage(pkgName))
+						return new char[][] { ModuleBinding.UNNAMED };
+					return null;
+				}
+				//$FALL-THROUGH$
+			case AnyNamed:
+				char[][] names = CharOperation.NO_CHAR_CHAR;
+				IPackageFragmentRoot[] packageRoots = this.nameLookup.packageFragmentRoots;
+				boolean containsUnnamed = false;
+				for (IPackageFragmentRoot packageRoot : packageRoots) {
+					IPackageFragmentRoot[] singleton = { packageRoot };
+					if (strategy.matches(singleton, locs -> locs[0] instanceof JrtPackageFragmentRoot || getModuleDescription(locs) != null)) {
+						if (this.nameLookup.isPackage(pkgName, singleton)) {
+							IModuleDescription moduleDescription = getModuleDescription(singleton);
+							char[] aName;
+							if (moduleDescription != null) {
+								aName = moduleDescription.getElementName().toCharArray();
+							} else {
+								if (containsUnnamed)
+									continue;
+								containsUnnamed = true;
+								aName = ModuleBinding.UNNAMED;
+							}
+							names = CharOperation.arrayConcat(names, aName);
+						}
+					}
+				}
+				return names == CharOperation.NO_CHAR_CHAR ? null : names;
+			default:
+				throw new IllegalArgumentException("Unexpected LookupStrategy "+strategy); //$NON-NLS-1$
+		}
+	}
+	@Override
+	public boolean hasCompilationUnit(char[][] pkgName, char[] moduleName, boolean checkCUs) {
+		LookupStrategy strategy = LookupStrategy.get(moduleName);
+		switch (strategy) {
+			case Named:
+				if (this.knownModuleLocations != null) {
+					IPackageFragmentRoot[] moduleContext = findModuleContext(moduleName);
+					if (moduleContext != null) {
+						// (this.owner != null && this.owner.isPackage(pkgName)) // TODO(SHMOD) see old isPackage
+						if (this.nameLookup.hasCompilationUnit(pkgName, moduleContext))
+							return true;
+					}
+				}
+				return false;
+			case Unnamed:
+			case Any:
+				// if in pre-9 mode we may still search the unnamed module 
+				if (this.knownModuleLocations == null) {
+					if (this.nameLookup.hasCompilationUnit(pkgName, null))
+						return true;
+				}
+				//$FALL-THROUGH$
+			case AnyNamed:
+				IPackageFragmentRoot[] packageRoots = this.nameLookup.packageFragmentRoots;
+				for (IPackageFragmentRoot packageRoot : packageRoots) {
+					IPackageFragmentRoot[] singleton = { packageRoot };
+					if (strategy.matches(singleton, locs -> locs[0] instanceof JrtPackageFragmentRoot || getModuleDescription(locs) != null)) {
+						if (this.nameLookup.hasCompilationUnit(pkgName, singleton))
+							return true;
+					}
+				}
+				return false;
+			default:
+				throw new IllegalArgumentException("Unexpected LookupStrategy "+strategy); //$NON-NLS-1$
+		}
+	}
+
+	private IModuleDescription getModuleDescription(IPackageFragmentRoot[] roots) {
+		if (this.rootToModule == null) {
+			this.rootToModule = new HashMap<>();
+		}
+		for (IPackageFragmentRoot root : roots) {
+			IModuleDescription moduleDescription = NameLookup.getModuleDescription(root, this.rootToModule, this.nameLookup.rootToResolvedEntries::get);
+			if (moduleDescription != null)
+				return moduleDescription;
+		}
+		return null;
+	}
+
+	private IPackageFragmentRoot[] findModuleContext(char[] moduleName) {
+		IPackageFragmentRoot[] moduleContext = null;
+		if (this.knownModuleLocations != null && moduleName != null && moduleName.length > 0) {
+			moduleContext = this.knownModuleLocations.get(String.valueOf(moduleName));
+			if (moduleContext == null) {
+				Answer moduleAnswer = this.nameLookup.findModule(moduleName);
+				if (moduleAnswer != null) {
+					IProject currentProject = moduleAnswer.module.getJavaProject().getProject();
+					IJavaElement current = moduleAnswer.module.getParent();
+					while (moduleContext == null && current != null) {
+						switch (current.getElementType()) {
+							case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+								if (!((IPackageFragmentRoot) current).isExternal() && !(current instanceof JarPackageFragmentRoot)) {
+									current = current.getJavaProject();
+								} else {
+									moduleContext = new IPackageFragmentRoot[] { (IPackageFragmentRoot) current }; // TODO: validate
+									break;
+								}
+								//$FALL-THROUGH$
+							case IJavaElement.JAVA_PROJECT:
+								try {
+									moduleContext = getOwnedPackageFragmentRoots((IJavaProject) current);
+								} catch (JavaModelException e) {
+									// silent?
+								}
+								break;
+							default:
+								current = current.getParent();
+								if (current != null) {
+									try {
+										// detect when an element refers to a resource owned by another project:
+										IResource resource = current.getUnderlyingResource();
+										if (resource != null) {
+											IProject otherProject = resource.getProject();
+											if (otherProject != null && !otherProject.equals(currentProject)) {
+												IJavaProject otherJavaProject = JavaCore.create(otherProject);
+												if (otherJavaProject.exists())
+													moduleContext = getRootsForOutputLocation(otherJavaProject, resource);
+											}
+										}
+									} catch (JavaModelException e) {
+										Util.log(e, "Failed to find package fragment root for " + current); //$NON-NLS-1$
+									}
+								}
+						}
+					}
+					this.knownModuleLocations.put(String.valueOf(moduleName), moduleContext);
+				}
+			}
+		}
+		return moduleContext;
 	}
 
 	/**
@@ -732,7 +1065,77 @@
 		return result.toString();
 	}
 
+	@Override
 	public void cleanup() {
 		// nothing to do
 	}
+
+	@Override
+	public org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule getModule(char[] name) {
+		NameLookup.Answer answer = this.nameLookup.findModule(name);
+		IModule module = null;
+		if (answer != null) {
+			module = NameLookup.getModuleDescriptionInfo(answer.module);
+		}
+		return module;
+	}
+
+	@Override
+	public char[][] getAllAutomaticModules() {
+		return CharOperation.NO_CHAR_CHAR;
+	}
+
+	@Override
+	public void applyModuleUpdates(IUpdatableModule module, UpdateKind kind) {
+		if (this.moduleUpdater != null)
+			this.moduleUpdater.applyModuleUpdates(module, kind);
+	}
+
+	private IPackageFragmentRoot[] getRootsForOutputLocation(IJavaProject otherJavaProject, IResource outputLocation) throws JavaModelException {
+		IPath outputPath = outputLocation.getFullPath();
+		List<IPackageFragmentRoot> result = new ArrayList<>();
+		if (outputPath.equals(otherJavaProject.getOutputLocation())) {
+			// collect roots reporting to the default output location:
+			for (IClasspathEntry classpathEntry : otherJavaProject.getRawClasspath()) {
+				if (classpathEntry.getOutputLocation() == null) {
+					for (IPackageFragmentRoot root : otherJavaProject.findPackageFragmentRoots(classpathEntry)) {
+						IResource rootResource = root.getResource();
+						if (rootResource == null || !rootResource.getProject().equals(otherJavaProject.getProject()))
+							continue; // outside this project
+						result.add(root);
+					}
+				}
+			}			
+		}
+		if (!result.isEmpty())
+			return result.toArray(new IPackageFragmentRoot[result.size()]);
+		// search an entry that specifically (and exclusively) reports to the output location:
+		for (IClasspathEntry classpathEntry : otherJavaProject.getRawClasspath()) {
+			if (outputPath.equals(classpathEntry.getOutputLocation()))
+				return otherJavaProject.findPackageFragmentRoots(classpathEntry);
+		}
+		return null;
+	}
+
+	public static IPackageFragmentRoot[] getOwnedPackageFragmentRoots(IJavaProject javaProject) throws JavaModelException {
+		IPackageFragmentRoot[] allRoots = javaProject.getPackageFragmentRoots();
+		IPackageFragmentRoot[] sourceRoots = Arrays.copyOf(allRoots, allRoots.length);
+		int count = 0;
+		for (int i = 0; i < allRoots.length; i++) {
+			IPackageFragmentRoot root = allRoots[i];
+			if (root.getKind() == IPackageFragmentRoot.K_BINARY) {
+				if(root instanceof JarPackageFragmentRoot) {
+					// don't treat jars in a project as part of the project's module
+					continue;
+				}
+				IResource resource = root.getResource();
+				if (resource == null || !resource.getProject().equals(javaProject.getProject()))
+					continue; // outside this project
+			}
+			sourceRoots[count++] = root;
+		}
+		if (count < allRoots.length)
+			return Arrays.copyOf(sourceRoots, count);
+		return sourceRoots;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.java
index 4006638..1e527fc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SearchableEnvironmentRequestor.java
@@ -13,6 +13,7 @@
 import org.aspectj.org.eclipse.jdt.core.IInitializer;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
@@ -76,18 +77,25 @@
  *
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptInitializer(IInitializer initializer) {
 	// implements interface method
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptPackageFragment(IPackageFragment packageFragment) {
 	this.requestor.acceptPackage(packageFragment.getElementName().toCharArray());
 }
+@Override
+public void acceptModule(IModuleDescription module) {
+	this.requestor.acceptModule(module.getElementName().toCharArray());
+}
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptType(IType type) {
 	try {
 		if (this.unitToSkip != null && this.unitToSkip.equals(type.getCompilationUnit())){
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.java
index 23557e7..ab02896 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SelectionRequestor.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
+ * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -19,16 +19,19 @@
 import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.ISourceRange;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.ITypeParameter;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.Signature;
-import org.aspectj.org.eclipse.jdt.core.compiler.*;
+import org.aspectj.org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.ISelectionRequestor;
 import org.aspectj.org.eclipse.jdt.internal.codeassist.SelectionEngine;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CastExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
@@ -43,6 +46,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
+import org.aspectj.org.eclipse.jdt.internal.core.NameLookup.Answer;
 import org.aspectj.org.eclipse.jdt.internal.core.util.HandleFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -168,9 +172,15 @@
 		acceptBinaryMethod(type, method, uniqueKey, isConstructor);
 	}
 }
+@Override
+public void acceptModule(char[] moduleName, char[] uniqueKey, int start, int end) {
+	IModuleDescription module = resolveModule(moduleName);
+	addElement(module);
+}
 /**
  * Resolve the type.
  */
+@Override
 public void acceptType(char[] packageName, char[] typeName, int modifiers, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 	int acceptFlags = 0;
 	int kind = modifiers & (ClassFileConstants.AccInterface|ClassFileConstants.AccEnum|ClassFileConstants.AccAnnotation);
@@ -242,12 +252,14 @@
 /**
  * @see ISelectionRequestor#acceptError
  */
+@Override
 public void acceptError(CategorizedProblem error) {
 	// do nothing
 }
 /**
  * Resolve the field.
  */
+@Override
 public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] name, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 	if(isDeclaration) {
 		IType type= resolveTypeByLocation(declaringTypePackageName, declaringTypeName,
@@ -456,6 +468,16 @@
 	}
 	LocalVariable localVar = null;
 	if(parent != null) {
+		String typeSig = null;
+		if (local.type == null || local.type.isTypeNameVar(binding.declaringScope)) {
+			if (local.initialization instanceof CastExpression) {
+				typeSig = Util.typeSignature(((CastExpression) local.initialization).type);
+			} else {
+				typeSig = Signature.createTypeSignature(binding.type.signableName(), true);
+			}
+		} else {
+			typeSig = Util.typeSignature(local.type);
+		}
 		localVar = new LocalVariable(
 				(JavaElement)parent,
 				new String(local.name),
@@ -463,7 +485,7 @@
 				local.declarationSourceEnd,
 				local.sourceStart,
 				local.sourceEnd,
-				local.type == null ? Signature.createTypeSignature(binding.type.signableName(), true) : Util.typeSignature(local.type),
+				typeSig,
 				local.annotations,
 				local.modifiers,
 				local.getKind() == AbstractVariableDeclaration.PARAMETER);
@@ -480,6 +502,7 @@
 /**
  * Resolve the method
  */
+@Override
 public void acceptMethod(
 		char[] declaringTypePackageName,
 		char[] declaringTypeName,
@@ -555,6 +578,7 @@
 /**
  * Resolve the package
  */
+@Override
 public void acceptPackage(char[] packageName) {
 	IPackageFragment[] pkgs = this.nameLookup.findPackageFragments(new String(packageName), false);
 	if (pkgs != null) {
@@ -694,6 +718,7 @@
 	}
 	return;
 }
+@Override
 public void acceptTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] typeParameterName, boolean isDeclaration, int start, int end) {
 	IType type;
 	if(isDeclaration) {
@@ -724,6 +749,7 @@
 		}
 	}
 }
+@Override
 public void acceptMethodTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] selector,int selectorStart, int selectorEnd, char[] typeParameterName, boolean isDeclaration, int start, int end) {
 	IType type = resolveTypeByLocation(declaringTypePackageName, declaringTypeName,
 			NameLookup.ACCEPT_ALL,
@@ -905,6 +931,13 @@
 	}
 	return this.elements;
 }
+protected IModuleDescription resolveModule(char[] moduleName) {
+	Answer answer = this.nameLookup.findModule(moduleName);
+	if (answer != null) {
+		return answer.module;
+	}
+	return null;
+}
 /**
  * Resolve the type
  */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.java
index d713cd1..0a23035 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetClasspathOperation.java
@@ -63,6 +63,7 @@
 	/**
 	 * Sets the classpath of the pre-specified project.
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		checkCanceled();
 		try {
@@ -81,6 +82,7 @@
 		}
 	}
 	
+	@Override
 	protected ISchedulingRule getSchedulingRule() {
 		if (this.canChangeResources) {
 			IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
@@ -95,6 +97,7 @@
 		return super.getSchedulingRule();
 	}
 
+	@Override
 	public String toString(){
 		StringBuffer buffer = new StringBuffer(20);
 		buffer.append("SetClasspathOperation\n"); //$NON-NLS-1$
@@ -110,6 +113,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public IJavaModelStatus verify() {
 		IJavaModelStatus status = super.verify();
 		if (!status.isOK())
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.java
index d4ce94d..46a8a15 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetContainerOperation.java
@@ -36,6 +36,7 @@
 		this.respectiveContainers = respectiveContainers;
 	}
 
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		checkCanceled();
 		try {
@@ -164,12 +165,14 @@
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				this.affectedProjects,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) { return ((IJavaProject) o).getElementName(); }
 				}) +
 			"}\n	values: {\n"  +//$NON-NLS-1$
 			org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.toString(
 				this.respectiveContainers,
 				new org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.Displayable(){
+					@Override
 					public String displayString(Object o) {
 						StringBuffer buffer = new StringBuffer("		"); //$NON-NLS-1$
 						if (o == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.java
index f04bfc4..2919294 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SetVariablesOperation.java
@@ -40,6 +40,7 @@
 		this.updatePreferences = updatePreferences;
 	}
 
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		checkCanceled();
 		try {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.java
index 99c95f7..510602d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SimpleDelta.java
@@ -116,6 +116,7 @@
 		return prev;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		toDebugString(buffer);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.java
index 0ce3d69..1c2150e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SingleTypeRequestor.java
@@ -13,6 +13,7 @@
 import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IInitializer;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IType;
 
@@ -28,36 +29,49 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptField(IField field) {
 	// implements interface method
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptInitializer(IInitializer initializer) {
 	// implements interface method
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptMemberType(IType type) {
 	this.element= type;
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptMethod(IMethod method) {
 	// implements interface method
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
+public void acceptModule(IModuleDescription module) {
+	// implements interface method	
+}
+/**
+ * @see IJavaElementRequestor
+ */
+@Override
 public void acceptPackageFragment(IPackageFragment packageFragment) {
 	// implements interface method
 }
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public void acceptType(IType type) {
 	this.element= type;
 }
@@ -71,6 +85,7 @@
 /**
  * @see IJavaElementRequestor
  */
+@Override
 public boolean isCanceled() {
 	return this.element != null;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.java
index ef8b1dd..5a5345f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SortElementsOperation.java
@@ -95,6 +95,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.core.JavaModelOperation#executeOperation()
 	 */
+	@Override
 	protected void executeOperation() throws JavaModelException {
 		try {
 			beginTask(Messages.operation_sortelements, getMainAmountOfWork());
@@ -189,6 +190,7 @@
 
 	private ASTRewrite sortCompilationUnit(org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit ast, final TextEditGroup group) {
 		ast.accept(new ASTVisitor() {
+			@Override
 			public boolean visit(org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit compilationUnit) {
 				List types = compilationUnit.types();
 				boolean contains_malformed_nodes = false;
@@ -200,6 +202,7 @@
 				compilationUnit.setProperty(CONTAINS_MALFORMED_NODES, contains_malformed_nodes);
 				return true;
 			}
+			@Override
 			public boolean visit(AnnotationTypeDeclaration annotationTypeDeclaration) {
 				List bodyDeclarations = annotationTypeDeclaration.bodyDeclarations();
 				boolean contains_malformed_nodes = false;
@@ -212,6 +215,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(AnonymousClassDeclaration anonymousClassDeclaration) {
 				List bodyDeclarations = anonymousClassDeclaration.bodyDeclarations();
 				boolean contains_malformed_nodes = false;
@@ -224,6 +228,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(TypeDeclaration typeDeclaration) {
 				List bodyDeclarations = typeDeclaration.bodyDeclarations();
 				boolean contains_malformed_nodes = false;
@@ -236,6 +241,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(EnumDeclaration enumDeclaration) {
 				List bodyDeclarations = enumDeclaration.bodyDeclarations();
 				boolean contains_malformed_nodes = false;
@@ -278,6 +284,7 @@
 				}
 			}
 
+			@Override
 			public boolean visit(org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit compilationUnit) {
 				if (checkMalformedNodes(compilationUnit)) {
 					return true; // abort sorting of current element
@@ -287,6 +294,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(AnnotationTypeDeclaration annotationTypeDeclaration) {
 				if (checkMalformedNodes(annotationTypeDeclaration)) {
 					return true; // abort sorting of current element
@@ -296,6 +304,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(AnonymousClassDeclaration anonymousClassDeclaration) {
 				if (checkMalformedNodes(anonymousClassDeclaration)) {
 					return true; // abort sorting of current element
@@ -305,6 +314,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(TypeDeclaration typeDeclaration) {
 				if (checkMalformedNodes(typeDeclaration)) {
 					return true; // abort sorting of current element
@@ -314,6 +324,7 @@
 				return true;
 			}
 
+			@Override
 			public boolean visit(EnumDeclaration enumDeclaration) {
 				if (checkMalformedNodes(enumDeclaration)) {
 					return true; // abort sorting of current element
@@ -339,6 +350,7 @@
 	 * </ul>
 	 * @return IJavaModelStatus
 	 */
+	@Override
 	public IJavaModelStatus verify() {
 		if (this.elementsToProcess.length != 1) {
 			return new JavaModelStatus(IJavaModelStatusConstants.NO_ELEMENTS_TO_PROCESS);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.java
index f278f43..2797a7c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceAnnotationMethodInfo.java
@@ -27,6 +27,7 @@
 
 	public IMemberValuePair defaultValue;
 
+	@Override
 	public boolean isAnnotationMethod() {
 		return true;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.java
index f593519..8b35a6d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorInfo.java
@@ -17,19 +17,23 @@
 
 	private static final char[] RETURN_TYPE_NAME = new char[]{'v', 'o','i', 'd'};
 
+	@Override
 	public boolean isAnnotationMethod() {
 		// a constructor cannot be an annotation method
 		return false;
 	}
 
+	@Override
 	public boolean isConstructor() {
 		return true;
 	}
 
+	@Override
 	public char[] getReturnTypeName() {
 		return RETURN_TYPE_NAME;
 	}
 
+	@Override
 	protected void setReturnType(char[] type) {
 		// ignore (always void)
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.java
index 33bd2d0..69d3bb2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceConstructorWithChildrenInfo.java
@@ -20,6 +20,7 @@
 		this.children = children;
 	}
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceField.java
index 914052d..e2a4834 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceField.java
@@ -26,10 +26,12 @@
 protected SourceField(JavaElement parent, String name) {
 	super(parent, name);
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof SourceField)) return false;
 	return super.equals(o);
 }
+@Override
 public ASTNode findNode(org.aspectj.org.eclipse.jdt.core.dom.CompilationUnit ast) {
 	// For field declarations, a variable declaration fragment is returned
 	// Return the FieldDeclaration instead
@@ -44,6 +46,7 @@
 /**
  * @see IField
  */
+@Override
 public Object getConstant() throws JavaModelException {
 	Object constant = null;
 	SourceFieldElementInfo info = (SourceFieldElementInfo) getElementInfo();
@@ -97,12 +100,12 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return FIELD;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IField#getKey()
- */
+
+@Override
 public String getKey() {
 	try {
 		return getKey(this, false/*don't open*/);
@@ -114,12 +117,12 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_FIELD;
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner) {
 		CompilationUnit cu = (CompilationUnit)getAncestor(COMPILATION_UNIT);
@@ -131,21 +134,22 @@
 /**
  * @see IField
  */
+@Override
 public String getTypeSignature() throws JavaModelException {
 	SourceFieldElementInfo info = (SourceFieldElementInfo) getElementInfo();
 	return info.getTypeSignature();
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IField#isEnumConstant()
- */public boolean isEnumConstant() throws JavaModelException {
+
+@Override
+public boolean isEnumConstant() throws JavaModelException {
 	return Flags.isEnum(getFlags());
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IField#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	SourceRefElement resolvedHandle = new ResolvedSourceField(this.parent, this.name, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -154,6 +158,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.java
index 0fea166..fcfff20 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldElementInfo.java
@@ -33,12 +33,14 @@
  * Returns the initialization source for this field.
  * Returns null if the field is not a constant or if it has no initialization.
  */
+@Override
 public char[] getInitializationSource() {
 	return this.initializationSource;
 }
 /**
  * Returns the type name of the field.
  */
+@Override
 public char[] getTypeName() {
 	return this.typeName;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.java
index b6f4d04..dc257c8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceFieldWithChildrenInfo.java
@@ -20,6 +20,7 @@
 		this.children = children;
 	}
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.java
index c2f575c..bfb03f8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,8 @@
 package org.aspectj.org.eclipse.jdt.internal.core;
 
 import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -35,12 +37,13 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.aspectj.org.eclipse.jdt.core.Flags;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
 import org.aspectj.org.eclipse.jdt.core.IField;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
 import org.aspectj.org.eclipse.jdt.core.IMember;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.ISourceRange;
 import org.aspectj.org.eclipse.jdt.core.IType;
@@ -59,17 +62,21 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.util.ReferenceInfoAdapter;
 
 /**
- * A SourceMapper maps source code in a ZIP file to binary types in
- * a JAR. The SourceMapper uses the fuzzy parser to identify source
- * fragments in a .java file, and attempts to match the source code
- * with children in a binary type. A SourceMapper is associated
- * with a JarPackageFragment by an AttachSourceOperation.
+ * A SourceMapper maps source code in a ZIP file to binary types or
+ * binary modules in a JAR. The SourceMapper uses the fuzzy parser 
+ * to identify source fragments in a .java file, and attempts to match
+ * the source code with children in a binary type.
+ * Since a module has no children in the Java Model no such matching
+ * happens in that case.
+ * A SourceMapper is associated with a JarPackageFragment by an AttachSourceOperation.
  *
  * @see org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragment
  */
@@ -103,6 +110,7 @@
 			this.name = name;
 		}
 
+		@Override
 		public int hashCode() {
 			final int prime = 31;
 			int result = 1;
@@ -111,6 +119,7 @@
 			return result;
 		}
 
+		@Override
 		public boolean equals(Object obj) {
 			if (this == obj)
 				return true;
@@ -131,6 +140,7 @@
 				return false;
 			return true;
 		}
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			buffer.append('(').append(this.parent).append('.').append(this.name).append(')');
@@ -147,9 +157,9 @@
 	protected ArrayList rootPaths;
 
 	/**
-	 * The binary type source is being mapped for
+	 * The binary type or module source is being mapped for
 	 */
-	protected BinaryType binaryType;
+	protected NamedMember binaryTypeOrModule;
 
 	/**
 	 * The location of the zip file containing source.
@@ -228,7 +238,7 @@
 	protected IJavaElement searchedElement;
 
 	/**
-	 * imports references
+	 * imports references (keyed by binaryTypeOrModule)
 	 */
 	private HashMap importsTable;
 	private HashMap importsCounterTable;
@@ -243,6 +253,13 @@
 	int typeDepth;
 
 	/**
+	 * Module information
+	 */
+	SourceRange moduleNameRange;
+	int moduleDeclarationStart;
+	int moduleModifiers;
+	
+	/**
 	 *  Anonymous counter in case we want to map the source of an anonymous class.
 	 */
 	int anonymousCounter;
@@ -281,6 +298,7 @@
 			// use no encoding
 		}
 		if (rootPath != null) {
+			this.rootPath = rootPath;
 			this.rootPaths = new ArrayList();
 			this.rootPaths.add(rootPath);
 		}
@@ -295,6 +313,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void acceptImport(
 			int declarationStart,
 			int declarationEnd,
@@ -303,13 +322,13 @@
 			char[][] tokens,
 			boolean onDemand,
 			int modifiers) {
-		char[][] imports = (char[][]) this.importsTable.get(this.binaryType);
+		char[][] imports = (char[][]) this.importsTable.get(this.binaryTypeOrModule);
 		int importsCounter;
 		if (imports == null) {
 			imports = new char[5][];
 			importsCounter = 0;
 		} else {
-			importsCounter = ((Integer) this.importsCounterTable.get(this.binaryType)).intValue();
+			importsCounter = ((Integer) this.importsCounterTable.get(this.binaryTypeOrModule)).intValue();
 		}
 		if (imports.length == importsCounter) {
 			System.arraycopy(
@@ -327,13 +346,14 @@
 			name[nameLength + 1] = '*';
 		}
 		imports[importsCounter++] = name;
-		this.importsTable.put(this.binaryType, imports);
-		this.importsCounterTable.put(this.binaryType, Integer.valueOf(importsCounter));
+		this.importsTable.put(this.binaryTypeOrModule, imports);
+		this.importsCounterTable.put(this.binaryTypeOrModule, Integer.valueOf(importsCounter));
 	}
 
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void acceptLineSeparatorPositions(int[] positions) {
 		//do nothing
 	}
@@ -341,6 +361,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void acceptPackage(ImportReference importReference) {
 		//do nothing
 	}
@@ -348,6 +369,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void acceptProblem(CategorizedProblem problem) {
 		//do nothing
 	}
@@ -453,11 +475,67 @@
 		return -1;
 	}
 
-	private synchronized void computeAllRootPaths(IType type) {
+	class JrtPackageNamesAdderVisitor implements JRTUtil.JrtFileVisitor<java.nio.file.Path> {
+
+		public final HashSet firstLevelPackageNames;
+		final IPackageFragmentRoot root;
+		public String sourceLevel = null;
+		public String complianceLevel = null;
+		public boolean containsADefaultPackage;
+		public boolean containsJavaSource;
+
+		JrtPackageNamesAdderVisitor(HashSet firstLevelPackageNames, String sourceLevel, String complianceLevel,
+				boolean containsADefaultPackage, boolean containsJavaSource, IPackageFragmentRoot root) {
+			this.firstLevelPackageNames = firstLevelPackageNames;
+			this.root = root;
+			this.sourceLevel = sourceLevel;
+			this.complianceLevel = complianceLevel;
+			this.containsADefaultPackage = containsADefaultPackage;
+			this.containsJavaSource = containsJavaSource;
+		}
+		
+		@Override
+		public FileVisitResult visitPackage(java.nio.file.Path dir, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+		
+		@Override
+		public FileVisitResult visitFile(java.nio.file.Path file, java.nio.file.Path mod, BasicFileAttributes attrs) throws IOException {
+			String entryName = file.toString();
+			if (Util.isClassFileName(entryName)) {
+				int index = entryName.indexOf('/');
+				if (index != -1) {
+					String firstLevelPackageName = entryName.substring(0, index);
+					if (!this.firstLevelPackageNames.contains(firstLevelPackageName)) {
+						if (this.sourceLevel == null) {
+							IJavaProject project = this.root.getJavaProject();
+							this.sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
+							this.complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
+						}
+						IStatus status = JavaConventions.validatePackageName(firstLevelPackageName, this.sourceLevel, this.complianceLevel);
+						if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
+							this.firstLevelPackageNames.add(firstLevelPackageName);
+						}
+					}
+				} else {
+					this.containsADefaultPackage = true;
+				}
+			} else if (!this.containsJavaSource && org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(entryName)) {
+				this.containsJavaSource = true;
+			}
+			return FileVisitResult.CONTINUE;
+		}
+
+		@Override
+		public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	}
+	private synchronized void computeAllRootPaths(IJavaElement typeOrModule) {
 		if (this.areRootPathsComputed) {
 			return;
 		}
-		IPackageFragmentRoot root = (IPackageFragmentRoot) type.getPackageFragment().getParent();
+		IPackageFragmentRoot root = (IPackageFragmentRoot) typeOrModule.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
 		IPath pkgFragmentRootPath = root.getPath();
 		final HashSet tempRoots = new HashSet();
 		long time = 0;
@@ -471,7 +549,22 @@
 
 		String sourceLevel = null;
 		String complianceLevel = null;
-		if (root.isArchive()) {
+		if (Util.isJrt(pkgFragmentRootPath.toOSString())) {
+			try {
+				JrtPackageNamesAdderVisitor jrtPackageNamesAdderVisitor = new JrtPackageNamesAdderVisitor(firstLevelPackageNames, 
+						sourceLevel, complianceLevel, containsADefaultPackage, containsJavaSource, root);
+				org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(root.getPath().toFile(), jrtPackageNamesAdderVisitor, JRTUtil.NOTIFY_FILES);
+				sourceLevel = jrtPackageNamesAdderVisitor.sourceLevel;
+				complianceLevel = jrtPackageNamesAdderVisitor.complianceLevel;
+				containsADefaultPackage = jrtPackageNamesAdderVisitor.containsADefaultPackage;
+				containsJavaSource = jrtPackageNamesAdderVisitor.containsJavaSource;
+			} catch (IOException e) {
+				// We are not reading any specific file, so, move on for now
+				if (VERBOSE) {
+					e.printStackTrace();
+				}
+			}
+		} else if (root.isArchive()) {
 			JavaModelManager manager = JavaModelManager.getJavaModelManager();
 			ZipFile zip = null;
 			try {
@@ -593,6 +686,7 @@
 			ArrayList sortedRoots = new ArrayList(tempRoots);
 			if (size > 1) {
 				Collections.sort(sortedRoots, new Comparator() {
+					@Override
 					public int compare(Object o1, Object o2) {
 						IPath path1 = (IPath) o1;
 						IPath path2 = (IPath) o2;
@@ -659,6 +753,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterType(TypeInfo typeInfo) {
 
 		this.typeDepth++;
@@ -721,7 +816,7 @@
 		if (typeInfo.name.length == 0) {
 			this.anonymousCounter++;
 			if (this.anonymousCounter == this.anonymousClassName) {
-				this.types[this.typeDepth] = getType(this.binaryType.getElementName());
+				this.types[this.typeDepth] = getType(this.binaryTypeOrModule.getElementName());
 			} else {
 				this.types[this.typeDepth] = getType(new String(typeInfo.name));
 			}
@@ -756,10 +851,37 @@
 		// categories
 		addCategories(currentType, typeInfo.categories);
 	}
+	
+	@Override
+	public void enterModule(ModuleInfo moduleInfo) {
+		this.moduleNameRange =
+			new SourceRange(moduleInfo.nameSourceStart, moduleInfo.nameSourceEnd - moduleInfo.nameSourceStart + 1);
+		this.moduleDeclarationStart = moduleInfo.declarationStart;
+	
+	
+		// module type modifiers
+		this.moduleModifiers = moduleInfo.modifiers;
+
+		if (this.binaryTypeOrModule instanceof IModuleDescription) {
+			// categories
+			addCategories(this.binaryTypeOrModule, moduleInfo.categories);
+		}
+	}
+
+	@Override
+	public void exitModule(int declarationEnd) {
+		setSourceRange(
+			this.binaryTypeOrModule,
+			new SourceRange(
+				this.moduleDeclarationStart,
+				declarationEnd - this.moduleDeclarationStart + 1),
+			this.moduleNameRange);
+	}
 
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterCompilationUnit() {
 		// do nothing
 	}
@@ -767,6 +889,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterConstructor(MethodInfo methodInfo) {
 		enterAbstractMethod(methodInfo);
 	}
@@ -774,6 +897,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterField(FieldInfo fieldInfo) {
 		if (this.typeDepth >= 0) {
 			this.memberDeclarationStart[this.typeDepth] = fieldInfo.declarationStart;
@@ -792,6 +916,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterInitializer(
 		int declarationSourceStart,
 		int modifiers) {
@@ -801,6 +926,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void enterMethod(MethodInfo methodInfo) {
 		enterAbstractMethod(methodInfo);
 	}
@@ -817,7 +943,7 @@
 				IType declaringType = currentType.getDeclaringType();
 				String declaringTypeName = declaringType.getElementName();
 				if (declaringTypeName.length() == 0) {
-					IClassFile classFile = declaringType.getClassFile();
+					IOrdinaryClassFile classFile = declaringType.getClassFile();
 					int length = parameterTypes != null ? parameterTypes.length : 0;
 					char[][] newParameterTypes = new char[length+1][];
 					declaringTypeName = classFile.getElementName();
@@ -893,6 +1019,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitType(int declarationEnd) {
 		if (this.typeDepth >= 0) {
 			IType currentType = this.types[this.typeDepth];
@@ -909,6 +1036,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitCompilationUnit(int declarationEnd) {
 		//do nothing
 	}
@@ -916,6 +1044,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitConstructor(int declarationEnd) {
 		exitAbstractMethod(declarationEnd);
 	}
@@ -923,6 +1052,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd) {
 		if (this.typeDepth >= 0) {
 			IType currentType = this.types[this.typeDepth];
@@ -938,6 +1068,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitInitializer(int declarationEnd) {
 		// implements abstract method
 	}
@@ -945,6 +1076,7 @@
 	/**
 	 * @see ISourceElementRequestor
 	 */
+	@Override
 	public void exitMethod(int declarationEnd, Expression defaultValue) {
 		exitAbstractMethod(declarationEnd);
 	}
@@ -992,12 +1124,28 @@
 	 * folder) used to create the given type (e.g. "A.java" for x/y/A$Inner.class)
 	 */
 	public char[] findSource(IType type, String simpleSourceFileName) {
+		PackageFragment pkgFrag = (PackageFragment) type.getPackageFragment();
+		String name = org.aspectj.org.eclipse.jdt.internal.core.util.Util.concatWith(pkgFrag.names, simpleSourceFileName, '/');
+		return internalFindSource((NamedMember) type, name);
+	}
+
+	/**
+	 * Locates and returns source code for the given (binary) module, in this
+	 * SourceMapper's ZIP file, or returns <code>null</code> if source
+	 * code cannot be found.
+	 */
+	public char[] findSource(IModuleDescription module) {
+		if (!module.isBinary()) {
+			return null;
+		}
+		return internalFindSource((NamedMember) module, TypeConstants.MODULE_INFO_FILE_NAME_STRING);
+	}
+
+	private char[] internalFindSource(NamedMember typeOrModule, String name) {
 		long time = 0;
 		if (VERBOSE) {
 			time = System.currentTimeMillis();
 		}
-		PackageFragment pkgFrag = (PackageFragment) type.getPackageFragment();
-		String name = org.aspectj.org.eclipse.jdt.internal.core.util.Util.concatWith(pkgFrag.names, simpleSourceFileName, '/');
 
 		char[] source = null;
 
@@ -1007,19 +1155,25 @@
 
 			if (this.rootPath != null) {
 				source = getSourceForRootPath(this.rootPath, name);
+				if (source == null) {
+					source = getSourceForRootPath("", name); //$NON-NLS-1$
+				}
 			}
-	
-			if (source == null) {
-				computeAllRootPaths(type);
-				if (this.rootPaths != null) {
-					loop: for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext(); ) {
-						String currentRootPath = (String) iterator.next();
-						if (!currentRootPath.equals(this.rootPath)) {
-							source = getSourceForRootPath(currentRootPath, name);
-							if (source != null) {
-								// remember right root path
-								this.rootPath = currentRootPath;
-								break loop;
+
+			if (source == null) { // proceed with automatic root path detection ...
+				// ... but not for multi-module roots
+				if (!(typeOrModule.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT) instanceof JrtPackageFragmentRoot)) {
+					computeAllRootPaths(typeOrModule);
+					if (this.rootPaths != null) {
+						loop: for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext(); ) {
+							String currentRootPath = (String) iterator.next();
+							if (!currentRootPath.equals(this.rootPath)) {
+								source = getSourceForRootPath(currentRootPath, name);
+								if (source != null) {
+									// remember right root path
+									this.rootPath = currentRootPath;
+									break loop;
+								}
 							}
 						}
 					}
@@ -1029,7 +1183,7 @@
 			javaModelManager.flushZipFiles(this); // clean up cached zip files.
 		}
 		if (VERBOSE) {
-			System.out.println("spent " + (System.currentTimeMillis() - time) + "ms for " + type.getElementName()); //$NON-NLS-1$ //$NON-NLS-2$
+			System.out.println("spent " + (System.currentTimeMillis() - time) + "ms for " + typeOrModule.getElementName()); //$NON-NLS-1$ //$NON-NLS-2$
 		}
 		return source;
 	}
@@ -1233,8 +1387,11 @@
 	 * as well.
 	 */
 	protected IType getType(String typeName) {
+		if (!(this.binaryTypeOrModule instanceof IType))
+			return null;
+		IType type = (IType) this.binaryTypeOrModule;
 		if (typeName.length() == 0) {
-			IJavaElement classFile = this.binaryType.getParent();
+			IJavaElement classFile = type.getParent();
 			String classFileName = classFile.getElementName();
 			StringBuffer newClassFileName = new StringBuffer();
 			int lastDollar = classFileName.lastIndexOf('$');
@@ -1243,10 +1400,10 @@
 			newClassFileName.append(Integer.toString(this.anonymousCounter));
 			PackageFragment pkg = (PackageFragment) classFile.getParent();
 			return new BinaryType(new ClassFile(pkg, newClassFileName.toString()), typeName);
-		} else if (this.binaryType.getElementName().equals(typeName))
-			return this.binaryType;
+		} else if (type.getElementName().equals(typeName))
+			return type;
 		else
-			return ((this.typeDepth <= 1) ? this.binaryType : this.types[this.typeDepth - 1]).getType(typeName);
+			return ((this.typeDepth <= 1) ? type : this.types[this.typeDepth - 1]).getType(typeName);
 	}
 
 	/**
@@ -1364,10 +1521,10 @@
 	}
 
 	/**
-	 * Maps the given source code to the given binary type and its children.
+	 * Maps the given source code to the given binary type or module and its children.
 	 */
-	public void mapSource(IType type, char[] contents, IBinaryType info) {
-		this.mapSource(type, contents, info, null);
+	public void mapSource(NamedMember typeOrModule, char[] contents, IBinaryType info) {
+		this.mapSource(typeOrModule, contents, info, null);
 	}
 
 	/**
@@ -1376,18 +1533,18 @@
 	 * given java element without storing it.
 	 */
 	public synchronized ISourceRange mapSource(
-		IType type,
+		NamedMember typeOrModule,
 		char[] contents,
-		IBinaryType info,
+		IBinaryType info, // null for modules
 		IJavaElement elementToFind) {
 
-		this.binaryType = (BinaryType) type;
+		this.binaryTypeOrModule = typeOrModule;
 
 		// check whether it is already mapped
-		if (this.sourceRanges.get(type) != null) return (elementToFind != null) ? getNameRange(elementToFind) : null;
+		if (this.sourceRanges.get(typeOrModule) != null) return (elementToFind != null) ? getNameRange(elementToFind) : null;
 
-		this.importsTable.remove(this.binaryType);
-		this.importsCounterTable.remove(this.binaryType);
+		this.importsTable.remove(this.binaryTypeOrModule);
+		this.importsCounterTable.remove(this.binaryTypeOrModule);
 		this.searchedElement = elementToFind;
 		this.types = new IType[1];
 		this.typeDeclarationStarts = new int[1];
@@ -1408,32 +1565,40 @@
 		try {
 			IProblemFactory factory = new DefaultProblemFactory();
 			SourceElementParser parser = null;
+			boolean doFullParse = false;
 			this.anonymousClassName = 0;
-			if (info == null) {
-				try {
-					info = (IBinaryType) this.binaryType.getElementInfo();
-				} catch(JavaModelException e) {
-					return null;
+			String sourceFileName;
+			if (this.binaryTypeOrModule instanceof BinaryType) {
+				if (info == null) {
+					try {
+						info = (IBinaryType) this.binaryTypeOrModule.getElementInfo();
+					} catch(JavaModelException e) {
+						return null;
+					}
 				}
-			}
-			boolean isAnonymousClass = info.isAnonymous();
-			char[] fullName = info.getName();
-			if (isAnonymousClass) {
-				String eltName = this.binaryType.getParent().getElementName();
-				eltName = eltName.substring(eltName.lastIndexOf('$') + 1, eltName.length());
-				try {
-					this.anonymousClassName = Integer.parseInt(eltName);
-				} catch(NumberFormatException e) {
-					// ignore
+				sourceFileName = ((BinaryType) this.binaryTypeOrModule).sourceFileName(info);
+				boolean isAnonymousClass = info.isAnonymous();
+				
+				char[] fullName = info.getName();
+				if (isAnonymousClass) {
+					String eltName = this.binaryTypeOrModule.getParent().getElementName();
+					eltName = eltName.substring(eltName.lastIndexOf('$') + 1, eltName.length());
+					try {
+						this.anonymousClassName = Integer.parseInt(eltName);
+					} catch(NumberFormatException e) {
+						// ignore
+					}
 				}
+				doFullParse = hasToRetrieveSourceRangesForLocalClass(fullName);
+			} else {
+				sourceFileName = TypeConstants.MODULE_INFO_CLASS_NAME_STRING; 
 			}
-			boolean doFullParse = hasToRetrieveSourceRangesForLocalClass(fullName);
 			parser = new SourceElementParser(this, factory, new CompilerOptions(this.options), doFullParse, true/*optimize string literals*/);
 			parser.javadocParser.checkDocComment = false; // disable javadoc parsing
-			IJavaElement javaElement = this.binaryType.getCompilationUnit();
-			if (javaElement == null) javaElement = this.binaryType.getParent();
+			IJavaElement javaElement = this.binaryTypeOrModule.getCompilationUnit();
+			if (javaElement == null) javaElement = this.binaryTypeOrModule.getParent();
 			parser.parseCompilationUnit(
-				new BasicCompilationUnit(contents, null, this.binaryType.sourceFileName(info), javaElement),
+				new BasicCompilationUnit(contents, null, sourceFileName, javaElement),
 				doFullParse,
 				null/*no progress*/);
 			if (elementToFind != null) {
@@ -1446,7 +1611,7 @@
 			if (elementToFind != null) {
 				this.sourceRanges = oldSourceRanges;
 			}
-			this.binaryType = null;
+			this.binaryTypeOrModule = null;
 			this.searchedElement = null;
 			this.types = null;
 			this.typeDeclarationStarts = null;
@@ -1497,10 +1662,10 @@
 	/**
 	 * Return a char[][] array containing the imports of the attached source for the binary type
 	 */
-	public char[][] getImports(BinaryType type) {
-		char[][] imports = (char[][]) this.importsTable.get(type);
+	public char[][] getImports(Member typeOrModule) {
+		char[][] imports = (char[][]) this.importsTable.get(typeOrModule);
 		if (imports != null) {
-			int importsCounter = ((Integer) this.importsCounterTable.get(type)).intValue();
+			int importsCounter = ((Integer) this.importsCounterTable.get(typeOrModule)).intValue();
 			if (imports.length != importsCounter) {
 				System.arraycopy(
 					imports,
@@ -1509,7 +1674,7 @@
 					0,
 					importsCounter);
 			}
-			this.importsTable.put(type, imports);
+			this.importsTable.put(typeOrModule, imports);
 		}
 		return imports;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.java
index 8dc32cd..1a711bb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethod.java
@@ -38,6 +38,7 @@
 		this.parameterTypes= parameterTypes;
 	}
 }
+@Override
 protected void closing(Object info) throws JavaModelException {
 	super.closing(info);
 	SourceMethodElementInfo elementInfo = (SourceMethodElementInfo) info;
@@ -46,10 +47,12 @@
 		((TypeParameter) typeParameters[i]).close();
 	}
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof SourceMethod)) return false;
 	return super.equals(o) && Util.equalArraysOrNull(this.parameterTypes, ((SourceMethod)o).parameterTypes);
 }
+@Override
 public IMemberValuePair getDefaultValue() throws JavaModelException {
 	SourceMethodElementInfo sourceMethodInfo = (SourceMethodElementInfo) getElementInfo();
 	if (sourceMethodInfo.isAnnotationMethod()) {
@@ -60,12 +63,14 @@
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return METHOD;
 }
 /**
  * @see IMethod
  */
+@Override
 public String[] getExceptionTypes() throws JavaModelException {
 	SourceMethodElementInfo info = (SourceMethodElementInfo) getElementInfo();
 	char[][] exs= info.getExceptionTypeNames();
@@ -74,6 +79,7 @@
 /**
  * @see JavaElement#getHandleMemento(StringBuffer)
  */
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	((JavaElement) getParent()).getHandleMemento(buff);
 	char delimiter = getHandleMementoDelimiter();
@@ -91,12 +97,12 @@
 /**
  * @see JavaElement#getHandleMemento()
  */
+@Override
 protected char getHandleMementoDelimiter() {
 	return JavaElement.JEM_METHOD;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IMethod#getKey()
- */
+
+@Override
 public String getKey() {
 	try {
 		return getKey(this, false/*don't open*/);
@@ -108,12 +114,14 @@
 /**
  * @see IMethod
  */
+@Override
 public int getNumberOfParameters() {
 	return this.parameterTypes == null ? 0 : this.parameterTypes.length;
 }
 /**
  * @see IMethod
  */
+@Override
 public String[] getParameterNames() throws JavaModelException {
 	SourceMethodElementInfo info = (SourceMethodElementInfo) getElementInfo();
 	char[][] names= info.getArgumentNames();
@@ -122,18 +130,22 @@
 /**
  * @see IMethod
  */
+@Override
 public String[] getParameterTypes() {
 	return this.parameterTypes;
 }
 
+@Override
 public ITypeParameter getTypeParameter(String typeParameterName) {
 	return new TypeParameter(this, typeParameterName);
 }
 
+@Override
 public ITypeParameter[] getTypeParameters() throws JavaModelException {
 	SourceMethodElementInfo info = (SourceMethodElementInfo) getElementInfo();
 	return info.typeParameters;
 }
+@Override
 public ILocalVariable[] getParameters() throws JavaModelException {
 	ILocalVariable[] arguments = ((SourceMethodElementInfo) getElementInfo()).arguments;
 	if (arguments == null)
@@ -145,6 +157,7 @@
  * @since 3.0
  * @deprecated
  */
+@Override
 public String[] getTypeParameterSignatures() throws JavaModelException {
 	ITypeParameter[] typeParameters = getTypeParameters();
 	int length = typeParameters.length;
@@ -167,9 +180,7 @@
 	return typeParameterSignatures;
 }
 
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner) {
 		CompilationUnit cu = (CompilationUnit)getAncestor(COMPILATION_UNIT);
@@ -178,12 +189,14 @@
 	IJavaElement primaryParent = this.parent.getPrimaryElement(false);
 	return ((IType)primaryParent).getMethod(this.name, this.parameterTypes);
 }
+@Override
 public String[] getRawParameterNames() throws JavaModelException {
 	return getParameterNames();
 }
 /**
  * @see IMethod
  */
+@Override
 public String getReturnType() throws JavaModelException {
 	SourceMethodElementInfo info = (SourceMethodElementInfo) getElementInfo();
 	return Signature.createTypeSignature(info.getReturnTypeName(), false);
@@ -191,6 +204,7 @@
 /**
  * @see IMethod
  */
+@Override
 public String getSignature() throws JavaModelException {
 	SourceMethodElementInfo info = (SourceMethodElementInfo) getElementInfo();
 	return Signature.createMethodSignature(this.parameterTypes, Signature.createTypeSignature(info.getReturnTypeName(), false));
@@ -198,6 +212,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.core.JavaElement#hashCode()
  */
+@Override
 public int hashCode() {
    int hash = super.hashCode();
 	for (int i = 0, length = this.parameterTypes.length; i < length; i++) {
@@ -208,6 +223,7 @@
 /**
  * @see IMethod
  */
+@Override
 public boolean isConstructor() throws JavaModelException {
 	if (!getElementName().equals(this.parent.getElementName())) {
 		// faster than reaching the info
@@ -219,24 +235,26 @@
 /**
  * @see IMethod#isMainMethod()
  */
+@Override
 public boolean isMainMethod() throws JavaModelException {
 	return this.isMainMethod(this);
 }
 /**
  * @see IMethod#isLambdaMethod()
  */
+@Override
 public boolean isLambdaMethod() {
 	return false;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IMethod#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
 /**
  * @see IMethod#isSimilar(IMethod)
  */
+@Override
 public boolean isSimilar(IMethod method) {
 	return
 		areSimilarMethods(
@@ -247,6 +265,7 @@
 
 /**
  */
+@Override
 public String readableName() {
 
 	StringBuffer buffer = new StringBuffer(super.readableName());
@@ -263,6 +282,7 @@
 	buffer.append(')');
 	return buffer.toString();
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	SourceRefElement resolvedHandle = new ResolvedSourceMethod(this.parent, this.name, this.parameterTypes, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -271,6 +291,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
@@ -291,6 +312,7 @@
 		toStringName(buffer, flags);
 	}
 }
+@Override
 protected void toStringName(StringBuffer buffer) {
 	toStringName(buffer, 0);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
index 50fd48b..253d9d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodElementInfo.java
@@ -46,14 +46,18 @@
 	 */
 	protected ITypeParameter[] typeParameters = TypeParameter.NO_TYPE_PARAMETERS;
 
+@Override
 public char[][] getArgumentNames() {
 	return this.argumentNames;
 }
+@Override
 public char[][] getExceptionTypeNames() {
 	return this.exceptionTypes;
 }
+@Override
 public abstract char[] getReturnTypeName();
 
+@Override
 public char[][][] getTypeParameterBounds() {
 	int length = this.typeParameters.length;
 	char[][][] typeParameterBounds = new char[length][][];
@@ -67,6 +71,7 @@
 	}
 	return typeParameterBounds;
 }
+@Override
 public char[][] getTypeParameterNames() {
 	int length = this.typeParameters.length;
 	if (length == 0) return CharOperation.NO_CHAR_CHAR;
@@ -76,6 +81,7 @@
 	}
 	return typeParameterNames;
 }
+@Override
 public abstract boolean isConstructor();
 public abstract boolean isAnnotationMethod();
 protected void setArgumentNames(char[][] names) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.java
index b693d43..9175d54 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodInfo.java
@@ -21,18 +21,22 @@
 	 */
 	protected char[] returnType;
 
+	@Override
 	public boolean isAnnotationMethod() {
 		return false;
 	}
 
+	@Override
 	public boolean isConstructor() {
 		return false;
 	}
 
+	@Override
 	public char[] getReturnTypeName() {
 		return this.returnType;
 	}
 
+	@Override
 	protected void setReturnType(char[] type) {
 		this.returnType = type;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.java
index 60b33e5..2f66ec5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceMethodWithChildrenInfo.java
@@ -20,6 +20,7 @@
 		this.children = children;
 	}
 
+	@Override
 	public IJavaElement[] getChildren() {
 		return this.children;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.java
new file mode 100644
index 0000000..eaef1fe
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceModule.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2017, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core;
+
+import java.util.Map;
+
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+
+public class SourceModule extends NamedMember implements AbstractModule {
+	public SourceModule(JavaElement parent, String name) {
+		super(parent, name);
+	}
+	@Override
+	public int getFlags() throws JavaModelException {
+		ModuleDescriptionInfo info = (ModuleDescriptionInfo) getElementInfo();
+		return info.getModifiers();
+	}
+	@Override
+	public char getHandleMementoDelimiter() {
+		return JavaElement.JEM_MODULE;
+	}
+	@Override
+	public String[] getCategories() throws JavaModelException {
+		ModuleDescriptionInfo info = (ModuleDescriptionInfo) getElementInfo();
+		Map<IJavaElement,String[]> map = info.getCategories();
+		if (map == null) return CharOperation.NO_STRINGS;
+		String[] categories = map.get(this);
+		if (categories == null) return CharOperation.NO_STRINGS;
+		return categories;
+	}
+	@Override
+	public String toString(String lineDelimiter) {
+		StringBuffer buffer = new StringBuffer();
+		try {
+			toStringContent(buffer, lineDelimiter);
+		} catch (JavaModelException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return buffer.toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.java
index 4898160..84a85be 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceRefElement.java
@@ -42,12 +42,14 @@
 /**
  * This element is being closed.  Do any necessary cleanup.
  */
+@Override
 protected void closing(Object info) throws JavaModelException {
 	// Do any necessary cleanup
 }
 /**
  * Returns a new element info for this element.
  */
+@Override
 protected Object createElementInfo() {
 	return null; // not used for source ref elements
 }
@@ -77,6 +79,7 @@
 	IJavaElement[] elements = new IJavaElement[] {this};
 	getJavaModel().delete(elements, force, monitor);
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof SourceRefElement)) return false;
 	return this.occurrenceCount == ((SourceRefElement)o).occurrenceCount &&
@@ -86,6 +89,7 @@
  * Returns the <code>ASTNode</code> that corresponds to this <code>JavaElement</code>
  * or <code>null</code> if there is no corresponding node.
  */
+@Override
 public ASTNode findNode(CompilationUnit ast) {
 	DOMFinder finder = new DOMFinder(ast, this, false);
 	try {
@@ -95,9 +99,8 @@
 		return null;
 	}
 }
-/*
- * @see JavaElement#generateInfos
- */
+
+@Override
 protected void generateInfos(Object info, HashMap newElements, IProgressMonitor pm) throws JavaModelException {
 	Openable openableParent = (Openable)getOpenableParent();
 	if (openableParent == null) return;
@@ -117,6 +120,7 @@
 /**
  * @see IMember
  */
+@Override
 public ICompilationUnit getCompilationUnit() {
 	return (ICompilationUnit) getAncestor(COMPILATION_UNIT);
 }
@@ -126,6 +130,7 @@
  *
  * @see IJavaElement
  */
+@Override
 public IResource getCorrespondingResource() throws JavaModelException {
 	if (!exists()) throw newNotPresentException();
 	return null;
@@ -133,6 +138,7 @@
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_COUNT:
@@ -140,6 +146,7 @@
 	}
 	return this;
 }
+@Override
 protected void getHandleMemento(StringBuffer buff) {
 	super.getHandleMemento(buff);
 	if (this.occurrenceCount > 1) {
@@ -168,6 +175,7 @@
  * Return the first instance of IOpenable in the hierarchy of this
  * type (going up the hierarchy from this type);
  */
+@Override
 public IOpenable getOpenableParent() {
 	IJavaElement current = getParent();
 	while (current != null){
@@ -181,18 +189,21 @@
 /*
  * @see IJavaElement
  */
+@Override
 public IPath getPath() {
 	return getParent().getPath();
 }
 /*
  * @see IJavaElement
  */
+@Override
 public IResource resource() {
 	return this.parent.resource();
 }
 /**
  * @see ISourceReference
  */
+@Override
 public String getSource() throws JavaModelException {
 	IOpenable openable = getOpenableParent();
 	IBuffer buffer = openable.getBuffer();
@@ -214,6 +225,7 @@
 /**
  * @see ISourceReference
  */
+@Override
 public ISourceRange getSourceRange() throws JavaModelException {
 	SourceRefElementInfo info = (SourceRefElementInfo) getElementInfo();
 	return info.getSourceRange();
@@ -221,6 +233,7 @@
 /**
  * @see IJavaElement
  */
+@Override
 public IResource getUnderlyingResource() throws JavaModelException {
 	if (!exists()) throw newNotPresentException();
 	return getParent().getUnderlyingResource();
@@ -228,12 +241,14 @@
 /**
  * @see IParent
  */
+@Override
 public boolean hasChildren() throws JavaModelException {
 	return getChildren().length > 0;
 }
 /**
  * @see IJavaElement
  */
+@Override
 public boolean isStructureKnown() throws JavaModelException {
 	// structure is always known inside an openable
 	return true;
@@ -269,6 +284,7 @@
 	String[] renamings= new String[] {newName};
 	getJavaModel().rename(elements, dests, renamings, force, monitor);
 }
+@Override
 protected void toStringName(StringBuffer buffer) {
 	super.toStringName(buffer);
 	if (this.occurrenceCount > 1) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceType.java
index 5cc03cc..541cced 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceType.java
@@ -46,6 +46,7 @@
 protected SourceType(JavaElement parent, String name) {
 	super(parent, name);
 }
+@Override
 protected void closing(Object info) throws JavaModelException {
 	super.closing(info);
 	SourceTypeElementInfo elementInfo = (SourceTypeElementInfo) info;
@@ -58,6 +59,7 @@
  * @see IType
  * @deprecated
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,ICompletionRequestor requestor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
@@ -65,6 +67,7 @@
  * @see IType
  * @deprecated
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	if (requestor == null) {
 		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
@@ -75,24 +78,28 @@
 /**
  * @see IType
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
 /**
  * @see IType
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
 /**
  * @see IType
  */
+@Override
 public void codeComplete(char[] snippet,int insertion,int position,char[][] localVariableTypeNames,char[][] localVariableNames,int[] localVariableModifiers,boolean isStatic,CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	codeComplete(snippet, insertion, position, localVariableTypeNames, localVariableNames, localVariableModifiers, isStatic, requestor, owner, null);
 }
 /**
  * @see IType
  */
+@Override
 public void codeComplete(
 		char[] snippet,
 		int insertion,
@@ -109,7 +116,7 @@
 	}
 
 	JavaProject project = (JavaProject) getJavaProject();
-	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner);
+	SearchableEnvironment environment = project.newSearchableNameEnvironment(owner, requestor.isTestCodeExcluded());
 	CompletionEngine engine = new CompletionEngine(environment, requestor, project.getOptions(true), project, owner, monitor);
 
 	String source = getCompilationUnit().getSource();
@@ -138,6 +145,7 @@
 /**
  * @see IType
  */
+@Override
 public IField createField(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CreateFieldOperation op = new CreateFieldOperation(this, contents, force);
 	if (sibling != null) {
@@ -149,6 +157,7 @@
 /**
  * @see IType
  */
+@Override
 public IInitializer createInitializer(String contents, IJavaElement sibling, IProgressMonitor monitor) throws JavaModelException {
 	CreateInitializerOperation op = new CreateInitializerOperation(this, contents);
 	if (sibling != null) {
@@ -160,6 +169,7 @@
 /**
  * @see IType
  */
+@Override
 public IMethod createMethod(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CreateMethodOperation op = new CreateMethodOperation(this, contents, force);
 	if (sibling != null) {
@@ -171,6 +181,7 @@
 /**
  * @see IType
  */
+@Override
 public IType createType(String contents, IJavaElement sibling, boolean force, IProgressMonitor monitor) throws JavaModelException {
 	CreateTypeOperation op = new CreateTypeOperation(this, contents, force);
 	if (sibling != null) {
@@ -179,6 +190,7 @@
 	op.runOperation(monitor);
 	return (IType) op.getResultElements()[0];
 }
+@Override
 public boolean equals(Object o) {
 	if (!(o instanceof SourceType)) return false;
 	if (((SourceType) o).isLambda()) 
@@ -188,6 +200,7 @@
 /*
  * @see IType
  */
+@Override
 public IMethod[] findMethods(IMethod method) {
 	try {
 		return findMethods(method, getMethods());
@@ -196,10 +209,12 @@
 		return null;
 	}
 }
+@Override
 public IAnnotation[] getAnnotations() throws JavaModelException {
 	AnnotatableInfo info = (AnnotatableInfo) getElementInfo();
 	return info.annotations;
 }
+@Override
 public IJavaElement[] getChildrenForCategory(String category) throws JavaModelException {
 	IJavaElement[] children = getChildren();
 	int length = children.length;
@@ -226,6 +241,7 @@
 /**
  * @see IMember
  */
+@Override
 public IType getDeclaringType() {
 	IJavaElement parentElement = getParent();
 	while (parentElement != null) {
@@ -240,21 +256,28 @@
 	}
 	return null;
 }
+@Override
+public IOrdinaryClassFile getClassFile() {
+	return null;
+}
 /**
  * @see IJavaElement
  */
+@Override
 public int getElementType() {
 	return TYPE;
 }
 /**
  * @see IType#getField
  */
+@Override
 public IField getField(String fieldName) {
 	return new SourceField(this, fieldName);
 }
 /**
  * @see IType
  */
+@Override
 public IField[] getFields() throws JavaModelException {
 	ArrayList list = getChildrenOfType(FIELD);
 	IField[] array= new IField[list.size()];
@@ -264,12 +287,14 @@
 /**
  * @see IType#getFullyQualifiedName()
  */
+@Override
 public String getFullyQualifiedName() {
 	return this.getFullyQualifiedName('$');
 }
 /**
  * @see IType#getFullyQualifiedName(char)
  */
+@Override
 public String getFullyQualifiedName(char enclosingTypeSeparator) {
 	try {
 		return getFullyQualifiedName(enclosingTypeSeparator, false/*don't show parameters*/);
@@ -278,9 +303,8 @@
 		return null;
 	}
 }
-/*
- * @see IType#getFullyQualifiedParameterizedName()
- */
+
+@Override
 public String getFullyQualifiedParameterizedName() throws JavaModelException {
 	return getFullyQualifiedName('.', true/*show parameters*/);
 }
@@ -288,12 +312,14 @@
  * For source types, the occurrence count is the one computed in the context of the immediately enclosing type.
  *
  */
+@Override
 protected String getOccurrenceCountSignature() {
 	return Integer.toString(this.localOccurrenceCount);
 }
 /*
  * @see JavaElement
  */
+@Override
 public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
 	switch (token.charAt(0)) {
 		case JEM_COUNT:
@@ -384,21 +410,22 @@
 /**
  * @see IType
  */
+@Override
 public IInitializer getInitializer(int count) {
 	return new Initializer(this, count);
 }
 /**
  * @see IType
  */
+@Override
 public IInitializer[] getInitializers() throws JavaModelException {
 	ArrayList list = getChildrenOfType(INITIALIZER);
 	IInitializer[] array= new IInitializer[list.size()];
 	list.toArray(array);
 	return array;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IType#getKey()
- */
+
+@Override
 public String getKey() {
 	try {
 		return getKey(this, false/*don't open*/);
@@ -410,12 +437,14 @@
 /**
  * @see IType#getMethod
  */
+@Override
 public IMethod getMethod(String selector, String[] parameterTypeSignatures) {
 	return new SourceMethod(this, selector, parameterTypeSignatures);
 }
 /**
  * @see IType
  */
+@Override
 public IMethod[] getMethods() throws JavaModelException {
 	ArrayList list = getChildrenOfType(METHOD);
 	IMethod[] array= new IMethod[list.size()];
@@ -425,6 +454,7 @@
 /**
  * @see IType
  */
+@Override
 public IPackageFragment getPackageFragment() {
 	IJavaElement parentElement = this.parent;
 	while (parentElement != null) {
@@ -438,9 +468,8 @@
 	Assert.isTrue(false);  // should not happen
 	return null;
 }
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
+
+@Override
 public IJavaElement getPrimaryElement(boolean checkOwner) {
 	if (checkOwner) {
 		CompilationUnit cu = (CompilationUnit)getAncestor(COMPILATION_UNIT);
@@ -462,6 +491,7 @@
 /**
  * @see IType
  */
+@Override
 public String getSuperclassName() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	char[] superclassName= info.getSuperclassName();
@@ -475,6 +505,7 @@
  * @see IType#getSuperclassTypeSignature()
  * @since 3.0
  */
+@Override
 public String getSuperclassTypeSignature() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	char[] superclassName= info.getSuperclassName();
@@ -487,6 +518,7 @@
 /**
  * @see IType
  */
+@Override
 public String[] getSuperInterfaceNames() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	char[][] names= info.getInterfaceNames();
@@ -497,6 +529,7 @@
  * @see IType#getSuperInterfaceTypeSignatures()
  * @since 3.0
  */
+@Override
 public String[] getSuperInterfaceTypeSignatures() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	char[][] names= info.getInterfaceNames();
@@ -510,6 +543,7 @@
 	return strings;
 }
 
+@Override
 public ITypeParameter[] getTypeParameters() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	return info.typeParameters;
@@ -519,6 +553,7 @@
  * @see IType#getTypeParameterSignatures()
  * @since 3.0
  */
+@Override
 public String[] getTypeParameterSignatures() throws JavaModelException {
 	ITypeParameter[] typeParameters = getTypeParameters();
 	int length = typeParameters.length;
@@ -544,21 +579,25 @@
 /**
  * @see IType
  */
+@Override
 public IType getType(String typeName) {
 	return new SourceType(this, typeName);
 }
+@Override
 public ITypeParameter getTypeParameter(String typeParameterName) {
 	return new TypeParameter(this, typeParameterName);
 }
 /**
  * @see IType#getTypeQualifiedName()
  */
+@Override
 public String getTypeQualifiedName() {
 	return this.getTypeQualifiedName('$');
 }
 /**
  * @see IType#getTypeQualifiedName(char)
  */
+@Override
 public String getTypeQualifiedName(char enclosingTypeSeparator) {
 	try {
 		return getTypeQualifiedName(enclosingTypeSeparator, false/*don't show parameters*/);
@@ -571,6 +610,7 @@
 /**
  * @see IType
  */
+@Override
 public IType[] getTypes() throws JavaModelException {
 	ArrayList list= getChildrenOfType(TYPE);
 	IType[] array= new IType[list.size()];
@@ -580,6 +620,7 @@
 /**
  * @see IType#isAnonymous()
  */
+@Override
 public boolean isAnonymous() {
 	return this.name.length() == 0;
 }
@@ -587,6 +628,7 @@
 /**
  * @see IType
  */
+@Override
 public boolean isClass() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.CLASS_DECL;
@@ -596,6 +638,7 @@
  * @see IType#isEnum()
  * @since 3.0
  */
+@Override
 public boolean isEnum() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.ENUM_DECL;
@@ -604,6 +647,7 @@
 /**
  * @see IType
  */
+@Override
 public boolean isInterface() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	switch (TypeDeclaration.kind(info.getModifiers())) {
@@ -618,6 +662,7 @@
  * @see IType#isAnnotation()
  * @since 3.0
  */
+@Override
 public boolean isAnnotation() throws JavaModelException {
 	SourceTypeElementInfo info = (SourceTypeElementInfo) getElementInfo();
 	return TypeDeclaration.kind(info.getModifiers()) == TypeDeclaration.ANNOTATION_TYPE_DECL;
@@ -626,6 +671,7 @@
 /**
  * @see IType#isLocal()
  */
+@Override
 public boolean isLocal() {
 	switch (this.parent.getElementType()) {
 		case IJavaElement.METHOD:
@@ -639,18 +685,19 @@
 /**
  * @see IType#isMember()
  */
+@Override
 public boolean isMember() {
 	return getDeclaringType() != null;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.IType#isResolved()
- */
+
+@Override
 public boolean isResolved() {
 	return false;
 }
 /**
  * @see IType
  */
+@Override
 public ITypeHierarchy loadTypeHierachy(InputStream input, IProgressMonitor monitor) throws JavaModelException {
 	return loadTypeHierachy(input, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
@@ -691,12 +738,12 @@
 /**
  * @see IType
  */
+@Override
 public ITypeHierarchy newSupertypeHierarchy(IProgressMonitor monitor) throws JavaModelException {
 	return this.newSupertypeHierarchy(DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- * @see IType#newSupertypeHierarchy(ICompilationUnit[], IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	ICompilationUnit[] workingCopies,
 	IProgressMonitor monitor)
@@ -716,6 +763,7 @@
  * @see IType#newSupertypeHierarchy(IWorkingCopy[], IProgressMonitor)
  * @deprecated
  */
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	IWorkingCopy[] workingCopies,
 	IProgressMonitor monitor)
@@ -733,6 +781,7 @@
 /**
  * @see IType#newSupertypeHierarchy(WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public ITypeHierarchy newSupertypeHierarchy(
 	WorkingCopyOwner owner,
 	IProgressMonitor monitor)
@@ -746,12 +795,14 @@
 /**
  * @see IType
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(IJavaProject project, IProgressMonitor monitor) throws JavaModelException {
 	return newTypeHierarchy(project, DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
 /**
  * @see IType#newTypeHierarchy(IJavaProject, WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(IJavaProject project, WorkingCopyOwner owner, IProgressMonitor monitor) throws JavaModelException {
 	if (project == null) {
 		throw new IllegalArgumentException(Messages.hierarchy_nullProject);
@@ -783,14 +834,14 @@
 /**
  * @see IType
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(IProgressMonitor monitor) throws JavaModelException {
 	// https://bugs.eclipse.org/bugs/show_bug.cgi?id=228845, The new type hierarchy should consider changes in primary
 	// working copy. 
 	return newTypeHierarchy(DefaultWorkingCopyOwner.PRIMARY, monitor);
 }
-/*
- * @see IType#newTypeHierarchy(ICompilationUnit[], IProgressMonitor)
- */
+
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	ICompilationUnit[] workingCopies,
 	IProgressMonitor monitor)
@@ -804,6 +855,7 @@
  * @see IType#newTypeHierarchy(IWorkingCopy[], IProgressMonitor)
  * @deprecated
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	IWorkingCopy[] workingCopies,
 	IProgressMonitor monitor)
@@ -821,6 +873,7 @@
 /**
  * @see IType#newTypeHierarchy(WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public ITypeHierarchy newTypeHierarchy(
 	WorkingCopyOwner owner,
 	IProgressMonitor monitor)
@@ -831,6 +884,7 @@
 	op.runOperation(monitor);
 	return op.getResult();
 }
+@Override
 public JavaElement resolved(Binding binding) {
 	ResolvedSourceType resolvedHandle = new ResolvedSourceType(this.parent, this.name, new String(binding.computeUniqueKey()));
 	resolvedHandle.occurrenceCount = this.occurrenceCount;
@@ -840,6 +894,7 @@
 /**
  * @private Debugging purposes
  */
+@Override
 protected void toStringInfo(int tab, StringBuffer buffer, Object info, boolean showResolvedInfo) {
 	buffer.append(tabString(tab));
 	if (info == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.java
index 7208d74..6d9972b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/SourceTypeElementInfo.java
@@ -22,7 +22,6 @@
 /**
  * Element info for an IType element that originated from source.
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class SourceTypeElementInfo extends AnnotatableInfo implements ISourceType {
 
 	protected static final ISourceImport[] NO_IMPORTS = new ISourceImport[0];
@@ -62,22 +61,23 @@
 	/*
 	 * A map from an IJavaElement (this type or a child of this type) to a String[] (the categories of this element)
 	 */
-	protected HashMap categories;
+	protected HashMap<IJavaElement,String[]> categories;
 
 protected void addCategories(IJavaElement element, char[][] elementCategories) {
 	if (elementCategories == null) return;
 	if (this.categories == null)
-		this.categories = new HashMap();
+		this.categories = new HashMap<>();
 	this.categories.put(element, CharOperation.toStrings(elementCategories));
 }
 
 /*
  * Return a map from an IJavaElement (this type or a child of this type) to a String[] (the categories of this element)
  */
-public HashMap getCategories() {
+public HashMap<IJavaElement, String[]> getCategories() {
 	return this.categories;
 }
 
+@Override
 public IJavaElement[] getChildren() {
 	return this.children;
 }
@@ -86,6 +86,7 @@
  * Returns the ISourceType that is the enclosing type for this
  * type, or <code>null</code> if this type is a top level type.
  */
+@Override
 public ISourceType getEnclosingType() {
 	IJavaElement parent= this.handle.getParent();
 	if (parent != null && parent.getElementType() == IJavaElement.TYPE) {
@@ -101,6 +102,7 @@
 /**
  * @see ISourceType
  */
+@Override
 public ISourceField[] getFields() {
 	SourceField[] fieldHandles = getFieldHandles();
 	int length = fieldHandles.length;
@@ -133,6 +135,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.handle.getPath().toString().toCharArray();
 }
@@ -169,6 +172,7 @@
 /**
  * @see ISourceType
  */
+@Override
 public char[][] getInterfaceNames() {
 	if (isAnonymous()) { // if anonymous type
 		return null;
@@ -179,6 +183,7 @@
 /**
  * @see ISourceType
  */
+@Override
 public ISourceType[] getMemberTypes() {
 	SourceType[] memberTypeHandles = getMemberTypeHandles();
 	int length = memberTypeHandles.length;
@@ -211,6 +216,7 @@
 /**
  * @see ISourceType
  */
+@Override
 public ISourceMethod[] getMethods() {
 	SourceMethod[] methodHandles = getMethodHandles();
 	int length = methodHandles.length;
@@ -244,12 +250,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.ISourceType#getName()
  */
+@Override
 public char[] getName() {
 	return this.handle.getElementName().toCharArray();
 }
 /**
  * @see ISourceType
  */
+@Override
 public char[] getSuperclassName() {
 	if (isAnonymous()) { // if anonymous type
 		char[][] interfaceNames = this.superInterfaceNames;
@@ -259,6 +267,7 @@
 	}
 	return this.superclassName;
 }
+@Override
 public char[][][] getTypeParameterBounds() {
 	int length = this.typeParameters.length;
 	char[][][] typeParameterBounds = new char[length][][];
@@ -272,6 +281,7 @@
 	}
 	return typeParameterBounds;
 }
+@Override
 public char[][] getTypeParameterNames() {
 	int length = this.typeParameters.length;
 	if (length == 0) return CharOperation.NO_CHAR_CHAR;
@@ -284,6 +294,7 @@
 /**
  * @see ISourceType
  */
+@Override
 public boolean isBinaryType() {
 	return false;
 }
@@ -320,6 +331,7 @@
 protected void setSuperInterfaceNames(char[][] superInterfaceNames) {
 	this.superInterfaceNames = superInterfaceNames;
 }
+@Override
 public String toString() {
 	return "Info for " + this.handle.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.java
index 9b3bf30..a863989 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeParameter.java
@@ -26,16 +26,19 @@
 		this.name = name;
 	}
 
+	@Override
 	public boolean equals(Object o) {
 		if (!(o instanceof TypeParameter)) return false;
 		return super.equals(o);
 	}
 
+	@Override
 	public String[] getBounds() throws JavaModelException {
 		TypeParameterElementInfo info = (TypeParameterElementInfo) getElementInfo();
 		return CharOperation.toStrings(info.bounds);
 	}
 	
+	@Override
 	public String[] getBoundsSignatures() throws JavaModelException {
 		
 		String[] boundSignatures = null;
@@ -64,18 +67,22 @@
 		return boundSignatures;
 	}
 	
+	@Override
 	public IMember getDeclaringMember() {
 		return (IMember) getParent();
 	}
 
+	@Override
 	public String getElementName() {
 		return this.name;
 	}
 
+	@Override
 	public int getElementType() {
 		return TYPE_PARAMETER;
 	}
 
+	@Override
 	protected char getHandleMementoDelimiter() {
 		return JavaElement.JEM_TYPE_PARAMETER;
 	}
@@ -99,11 +106,12 @@
 		return buf.toString();
 	}
 
+	@Override
 	public ISourceRange getNameRange() throws JavaModelException {
 		SourceMapper mapper= getSourceMapper();
 		if (mapper != null) {
 			// ensure the class file's buffer is open so that source ranges are computed
-			ClassFile classFile = (ClassFile)getClassFile();
+			IClassFile classFile = getClassFile();
 			if (classFile != null) {
 				classFile.getBuffer();
 				return mapper.getNameRange(this);
@@ -116,11 +124,12 @@
 	/*
 	 * @see ISourceReference
 	 */
+	@Override
 	public ISourceRange getSourceRange() throws JavaModelException {
 		SourceMapper mapper= getSourceMapper();
 		if (mapper != null) {
 			// ensure the class file's buffer is open so that source ranges are computed
-			ClassFile classFile = (ClassFile)getClassFile();
+			IClassFile classFile = getClassFile();
 			if (classFile != null) {
 				classFile.getBuffer();
 				return mapper.getSourceRange(this);
@@ -129,6 +138,7 @@
 		return super.getSourceRange();
 	}
 
+	@Override
 	public IClassFile getClassFile() {
 		return ((JavaElement)getParent()).getClassFile();
 	}
@@ -137,10 +147,12 @@
 	 * {@inheritDoc}
 	 * @since 3.7
 	 */
+	@Override
 	public ITypeRoot getTypeRoot() {
 		return this.getDeclaringMember().getTypeRoot();
 	}
 
+	@Override
 	protected void toStringName(StringBuffer buffer) {
 		buffer.append('<');
 		buffer.append(getElementName());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.java
index d49b82a..af0fdb8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/TypeVector.java
@@ -139,6 +139,7 @@
 	this.elementSet = null;
 	this.size = 0;
 }
+@Override
 public String toString() {
 	StringBuilder buffer = new StringBuilder("["); //$NON-NLS-1$
 	for (int i = 0; i < this.size; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.java
index c011dad..3f5bdac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibrary.java
@@ -69,9 +69,7 @@
 		return this.isSystemLibrary;
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#equals(java.lang.Object)
-	 */
+	@Override
 	public boolean equals(Object obj) {
 		if (obj != null && obj.getClass() == getClass()) {
 			UserLibrary other= (UserLibrary) obj;
@@ -87,9 +85,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#hashCode()
-	 */
+	@Override
 	public int hashCode() {
 		int hashCode= 0;
 		if (this.isSystemLibrary) {
@@ -211,6 +207,7 @@
 		return new UserLibrary(entries, isSystem);
 	}
 
+	@Override
 	public String toString() {
 		if (this.entries == null)
 			return "null"; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.java
index b215255..b84cef3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainer.java
@@ -28,9 +28,7 @@
 		this.name = name;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IClasspathContainer#getClasspathEntries()
-	 */
+	@Override
 	public IClasspathEntry[] getClasspathEntries() {
 		UserLibrary library= getUserLibrary();
 		if (library != null) {
@@ -39,16 +37,12 @@
 		return new IClasspathEntry[0];
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IClasspathContainer#getDescription()
-	 */
+	@Override
 	public String getDescription() {
 		return this.name;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IClasspathContainer#getKind()
-	 */
+	@Override
 	public int getKind() {
 		UserLibrary library= getUserLibrary();
 		if (library != null && library.isSystemLibrary()) {
@@ -57,9 +51,7 @@
 		return K_APPLICATION;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.IClasspathContainer#getPath()
-	 */
+	@Override
 	public IPath getPath() {
 		return new Path(JavaCore.USER_LIBRARY_CONTAINER_ID).append(this.name);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.java
index 9078afc..564b61c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/UserLibraryClasspathContainerInitializer.java
@@ -23,16 +23,12 @@
  */
 public class UserLibraryClasspathContainerInitializer extends ClasspathContainerInitializer {
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.ClasspathContainerInitializer#canUpdateClasspathContainer(org.eclipse.core.runtime.IPath, org.aspectj.org.eclipse.jdt.core.IJavaProject)
-	 */
+	@Override
 	public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
 		return isUserLibraryContainer(containerPath);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.ClasspathContainerInitializer#getComparisonID(org.eclipse.core.runtime.IPath, org.aspectj.org.eclipse.jdt.core.IJavaProject)
-	 */
+	@Override
 	public Object getComparisonID(IPath containerPath, IJavaProject project) {
 		return containerPath;
 	}
@@ -40,6 +36,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.ClasspathContainerInitializer#getDescription(org.eclipse.core.runtime.IPath, org.aspectj.org.eclipse.jdt.core.IJavaProject)
 	 */
+	@Override
 	public String getDescription(IPath containerPath, IJavaProject project) {
 		if (isUserLibraryContainer(containerPath)) {
 			return containerPath.segment(1);
@@ -47,6 +44,7 @@
 		return super.getDescription(containerPath, project);
 	}
 
+	@Override
 	public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
 		if (isUserLibraryContainer(containerPath)) {
 			String userLibName = containerPath.segment(1);
@@ -69,6 +67,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.ClasspathContainerInitializer#requestClasspathContainerUpdate(org.eclipse.core.runtime.IPath, org.aspectj.org.eclipse.jdt.core.IJavaProject, org.aspectj.org.eclipse.jdt.core.IClasspathContainer)
 	 */
+	@Override
 	public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) throws CoreException {
 		if (isUserLibraryContainer(containerPath)) {
 			String name = containerPath.segment(1);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.java
index 010d480..3d66661 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/VerboseElementCache.java
@@ -13,9 +13,12 @@
 import java.text.NumberFormat;
 import java.util.Date;
 
-public class VerboseElementCache extends ElementCache {
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IOpenable;
 
-	private Object beingAdded;
+public class VerboseElementCache<K extends IJavaElement & IOpenable> extends ElementCache<K> {
+
+	private K beingAdded;
 	private String name;
 
 	public VerboseElementCache(int size, String name) {
@@ -23,6 +26,7 @@
 		this.name = name;
 	}
 
+	@Override
 	protected boolean makeSpace(int space) {
 		if (this.beingAdded == null) return super.makeSpace(space);
 		String fillingRatio = toStringFillingRation(this.name);
@@ -37,7 +41,8 @@
 		return result;
 	}
 
-	public Object put(Object key, Object value) {
+	@Override
+	public JavaElementInfo put(K key, JavaElementInfo value) {
 		try {
 			if (this.beingAdded == null)
 				this.beingAdded = key;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java
index bf3a688..f631793 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/AbstractImageBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,6 +24,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.PackageFragment;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
@@ -50,13 +51,13 @@
 
 protected Compiler compiler;
 protected WorkQueue workQueue;
-protected ArrayList problemSourceFiles;
+protected LinkedHashSet<SourceFile> problemSourceFiles;
 protected boolean compiledAllAtOnce;
 
 private boolean inCompiler;
 
 protected boolean keepStoringProblemMarkers;
-protected SimpleSet filesWithAnnotations = null;
+protected Set<SourceFile> filesWithAnnotations = null;
 
 //2000 is best compromise between space used and speed
 public static int MAX_AT_ONCE = Integer.getInteger(JavaModelManager.MAX_COMPILED_UNITS_AT_ONCE, 2000).intValue();
@@ -86,11 +87,13 @@
 public final static Integer P_HIGH = Integer.valueOf(IMarker.PRIORITY_HIGH);
 public final static Integer P_NORMAL = Integer.valueOf(IMarker.PRIORITY_NORMAL);
 public final static Integer P_LOW = Integer.valueOf(IMarker.PRIORITY_LOW);
+private CompilationGroup compilationGroup;
 
-protected AbstractImageBuilder(JavaBuilder javaBuilder, boolean buildStarting, State newState) {
+protected AbstractImageBuilder(JavaBuilder javaBuilder, boolean buildStarting, State newState, CompilationGroup compilationGroup) {
 	// local copies
 	this.javaBuilder = javaBuilder;
-	this.nameEnvironment = javaBuilder.nameEnvironment;
+	this.compilationGroup = compilationGroup;
+	this.nameEnvironment = compilationGroup == CompilationGroup.TEST ? javaBuilder.testNameEnvironment : javaBuilder.nameEnvironment;
 	this.sourceLocations = this.nameEnvironment.sourceLocations;
 	this.notifier = javaBuilder.notifier;
 	this.keepStoringProblemMarkers = true; // may get disabled when missing classfiles are encountered
@@ -99,7 +102,7 @@
 		this.newState = newState == null ? new State(javaBuilder) : newState;
 		this.compiler = newCompiler();
 		this.workQueue = new WorkQueue();
-		this.problemSourceFiles = new ArrayList(3);
+		this.problemSourceFiles = new LinkedHashSet(3);
 
 		if (this.javaBuilder.participants != null) {
 			for (int i = 0, l = this.javaBuilder.participants.length; i < l; i++) {
@@ -107,7 +110,7 @@
 					// initialize this set so the builder knows to gather CUs that define Annotation types
 					// each Annotation processor participant is then asked to process these files AFTER
 					// the compile loop. The normal dependency loop will then recompile all affected types
-					this.filesWithAnnotations = new SimpleSet(1);
+					this.filesWithAnnotations = new HashSet<>(1);
 					break;
 				}
 			}
@@ -115,6 +118,7 @@
 	}
 }
 
+@Override
 public void acceptResult(CompilationResult result) {
 	// In Batch mode, we write out the class files, hold onto the dependency info
 	// & additional types and report problems.
@@ -124,7 +128,13 @@
 	// Before reporting the new problems, we need to update the problem count &
 	// remove the old problems. Plus delete additional class files that no longer exist.
 
-	SourceFile compilationUnit = (SourceFile) result.getCompilationUnit(); // go directly back to the sourceFile
+	ICompilationUnit resultCU = result.getCompilationUnit();
+	if (!(resultCU instanceof SourceFile)) {
+		return; // can happen for secondary module redirected via CompilationUnit
+		// we should never have to report errors etc for those, but this entire construction is a kludge,
+		// working around lack of support for modules in SourceTypeConverter
+	}
+	SourceFile compilationUnit = (SourceFile) resultCU; // go directly back to the sourceFile
 	if (!this.workQueue.isCompiled(compilationUnit)) {
 		this.workQueue.finished(compilationUnit);
 
@@ -137,8 +147,7 @@
 
 		if (result.hasInconsistentToplevelHierarchies)
 			// ensure that this file is always retrieved from source for the rest of the build
-			if (!this.problemSourceFiles.contains(compilationUnit))
-				this.problemSourceFiles.add(compilationUnit);
+			this.problemSourceFiles.add(compilationUnit);
 
 		IType mainType = null;
 		String mainTypeName = null;
@@ -209,8 +218,7 @@
 protected void acceptSecondaryType(ClassFile classFile) {
 	// noop
 }
-
-protected void addAllSourceFiles(final ArrayList sourceFiles) throws CoreException {
+protected void addAllSourceFiles(final LinkedHashSet<SourceFile> sourceFiles) throws CoreException {
 	for (int i = 0, l = this.sourceLocations.length; i < l; i++) {
 		final ClasspathMultiDirectory sourceLocation = this.sourceLocations[i];
 		final char[][] exclusionPatterns = sourceLocation.exclusionPatterns;
@@ -221,6 +229,7 @@
 		final boolean isOutputFolder = sourceLocation.sourceFolder.equals(outputFolder);
 		sourceLocation.sourceFolder.accept(
 			new IResourceProxyVisitor() {
+				@Override
 				public boolean visit(IResourceProxy proxy) throws CoreException {
 					switch(proxy.getType()) {
 						case IResource.FILE :
@@ -229,7 +238,8 @@
 								if (exclusionPatterns != null || inclusionPatterns != null)
 									if (Util.isExcluded(resource.getFullPath(), inclusionPatterns, exclusionPatterns, false))
 										return false;
-								sourceFiles.add(new SourceFile((IFile) resource, sourceLocation));
+								SourceFile unit = new SourceFile((IFile) resource, sourceLocation);
+								sourceFiles.add(unit);
 							}
 							return false;
 						case IResource.FOLDER :
@@ -283,7 +293,7 @@
 * if they are affected by the changes.
 */
 protected void compile(SourceFile[] units) {
-	if (this.filesWithAnnotations != null && this.filesWithAnnotations.elementSize > 0)
+	if (this.filesWithAnnotations != null && this.filesWithAnnotations.size() > 0)
 		// will add files that have annotations in acceptResult() & then processAnnotations() before exitting this method
 		this.filesWithAnnotations.clear();
 
@@ -355,12 +365,17 @@
 			additionalUnits = new SourceFile[toAdd];
 		else
 			System.arraycopy(additionalUnits, 0, additionalUnits = new SourceFile[length + toAdd], 0, length);
+		Iterator<SourceFile> iterator = this.problemSourceFiles.iterator();
 		for (int i = 0; i < toAdd; i++)
-			additionalUnits[length + i] = (SourceFile) this.problemSourceFiles.get(i);
+			additionalUnits[length + i] = iterator.next();
 	}
 	String[] initialTypeNames = new String[units.length];
-	for (int i = 0, l = units.length; i < l; i++)
-		initialTypeNames[i] = units[i].initialTypeName;
+	for (int i = 0, l = units.length; i < l; i++) {
+		char[] moduleName = units[i].getModuleName();
+		initialTypeNames[i] = (moduleName == null)
+				? units[i].initialTypeName
+				: new StringBuilder(60).append(moduleName).append(':').append(units[i].initialTypeName).toString();
+	}
 	this.nameEnvironment.setNames(initialTypeNames, additionalUnits);
 	this.notifier.checkCancel();
 	try {
@@ -427,9 +442,8 @@
 protected SourceFile findSourceFile(IFile file, boolean mustExist) {
 	if (mustExist && !file.exists()) return null;
 
-	// assumes the file exists in at least one of the source folders & is not excluded
-	ClasspathMultiDirectory md = this.sourceLocations[0];
-	if (this.sourceLocations.length > 1) {
+	ClasspathMultiDirectory md = null;
+	if (this.sourceLocations.length > 0) {
 		IPath sourceFileFullPath = file.getFullPath();
 		for (int j = 0, m = this.sourceLocations.length; j < m; j++) {
 			if (this.sourceLocations[j].sourceFolder.getFullPath().isPrefixOf(sourceFileFullPath)) {
@@ -441,7 +455,7 @@
 			}
 		}
 	}
-	return new SourceFile(file, md);
+	return md == null ? null: new SourceFile(file, md);
 }
 
 protected void finishedWith(String sourceLocator, CompilationResult result, char[] mainTypeName, ArrayList definedTypeNames, ArrayList duplicateTypeNames) {
@@ -475,11 +489,7 @@
 	return folder;
 }
 
-
-
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.builder.ICompilationUnitLocator#fromIFile(org.eclipse.core.resources.IFile)
- */
+@Override
 public ICompilationUnit fromIFile(IFile file) {
 	return findSourceFile(file, true);
 }
@@ -487,7 +497,7 @@
 protected void initializeAnnotationProcessorManager(Compiler newCompiler) {
 	AbstractAnnotationProcessorManager annotationManager = JavaModelManager.getJavaModelManager().createAnnotationProcessorManager();
 	if (annotationManager != null) {
-		annotationManager.configureFromPlatform(newCompiler, this, this.javaBuilder.javaProject);
+		annotationManager.configureFromPlatform(newCompiler, this, this.javaBuilder.javaProject, this.compilationGroup == CompilationGroup.TEST);
 		annotationManager.setErr(new PrintWriter(System.err));
 		annotationManager.setOut(new PrintWriter(System.out));
 	}
@@ -560,7 +570,7 @@
 protected CompilationParticipantResult[] notifyParticipants(SourceFile[] unitsAboutToCompile) {
 	CompilationParticipantResult[] results = new CompilationParticipantResult[unitsAboutToCompile.length];
 	for (int i = unitsAboutToCompile.length; --i >= 0;)
-		results[i] = new CompilationParticipantResult(unitsAboutToCompile[i]);
+		results[i] = new CompilationParticipantResult(unitsAboutToCompile[i], this.compilationGroup == CompilationGroup.TEST);
 
 	// TODO (kent) do we expect to have more than one participant?
 	// and if so should we pass the generated files from the each processor to the others to process?
@@ -590,7 +600,7 @@
 						uniqueFiles.add(unitsAboutToCompile[f]);
 				}
 				if (uniqueFiles.addIfNotIncluded(sourceFile) == sourceFile) {
-					CompilationParticipantResult newResult = new CompilationParticipantResult(sourceFile);
+					CompilationParticipantResult newResult = new CompilationParticipantResult(sourceFile, this.compilationGroup == CompilationGroup.TEST);
 					// is there enough room to add all the addedGeneratedFiles.length ?
 					if (toAdd == null) {
 						toAdd = new CompilationParticipantResult[addedGeneratedFiles.length];
@@ -600,6 +610,7 @@
 							System.arraycopy(toAdd, 0, toAdd = new CompilationParticipantResult[length + addedGeneratedFiles.length], 0, length);
 					}
 					toAdd[added++] = newResult;
+					this.workQueue.add(sourceFile);
 				}
 			}
 		}
@@ -621,9 +632,9 @@
 		hasAnnotationProcessor = this.javaBuilder.participants[i].isAnnotationProcessor();
 	if (!hasAnnotationProcessor) return;
 
-	boolean foundAnnotations = this.filesWithAnnotations != null && this.filesWithAnnotations.elementSize > 0;
+	boolean foundAnnotations = this.filesWithAnnotations != null && this.filesWithAnnotations.size() > 0;
 	for (int i = results.length; --i >= 0;)
-		results[i].reset(foundAnnotations && this.filesWithAnnotations.includes(results[i].sourceFile));
+		results[i].reset(foundAnnotations && this.filesWithAnnotations.contains(results[i].sourceFile));
 
 	// even if no files have annotations, must still tell every annotation processor in case the file used to have them
 	for (int i = 0, l = this.javaBuilder.participants.length; i < l; i++)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.java
index 5a8d2b6..c77bd75 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/BatchImageBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerStats;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -27,28 +28,42 @@
 
 	IncrementalImageBuilder incrementalBuilder; // if annotations or secondary types have to be processed after the compile loop
 	ArrayList secondaryTypes; // qualified names for all secondary types found during batch compile
-	StringSet typeLocatorsWithUndefinedTypes; // type locators for all source files with errors that may be caused by 'not found' secondary types
+	Set<String> typeLocatorsWithUndefinedTypes; // type locators for all source files with errors that may be caused by 'not found' secondary types
+	final CompilationGroup compilationGroup;
 
-protected BatchImageBuilder(JavaBuilder javaBuilder, boolean buildStarting) {
-	super(javaBuilder, buildStarting, null);
+protected BatchImageBuilder(JavaBuilder javaBuilder, boolean buildStarting, CompilationGroup compilationGroup) {
+	super(javaBuilder, buildStarting, null, compilationGroup);
+	this.compilationGroup = compilationGroup;
 	this.nameEnvironment.isIncrementalBuild = false;
 	this.incrementalBuilder = null;
 	this.secondaryTypes = null;
 	this.typeLocatorsWithUndefinedTypes = null;
 }
 
+protected BatchImageBuilder(BatchImageBuilder batchImageBuilder, boolean buildStarting, CompilationGroup compilationGroup) {
+	super(batchImageBuilder.javaBuilder, buildStarting, batchImageBuilder.newState, compilationGroup);
+	this.compilationGroup = compilationGroup;
+	this.nameEnvironment.isIncrementalBuild = false;
+	this.incrementalBuilder = null;
+	this.secondaryTypes = null;
+	this.typeLocatorsWithUndefinedTypes = null;
+}
+
+
 public void build() {
 	if (JavaBuilder.DEBUG)
 		System.out.println("FULL build"); //$NON-NLS-1$
 
 	try {
 		this.notifier.subTask(Messages.bind(Messages.build_cleaningOutput, this.javaBuilder.currentProject.getName()));
-		JavaBuilder.removeProblemsAndTasksFor(this.javaBuilder.currentProject);
+		if(this.compilationGroup != CompilationGroup.TEST) {
+			JavaBuilder.removeProblemsAndTasksFor(this.javaBuilder.currentProject);
+		}
 		cleanOutputFolders(true);
 		this.notifier.updateProgressDelta(0.05f);
 
 		this.notifier.subTask(Messages.build_analyzingSources);
-		ArrayList sourceFiles = new ArrayList(33);
+		LinkedHashSet<SourceFile> sourceFiles = new LinkedHashSet<>(33);
 		addAllSourceFiles(sourceFiles);
 		this.notifier.updateProgressDelta(0.10f);
 
@@ -78,6 +93,7 @@
 	}
 }
 
+@Override
 protected void acceptSecondaryType(ClassFile classFile) {
 	if (this.secondaryTypes != null)
 		this.secondaryTypes.add(classFile.fileName());
@@ -87,11 +103,15 @@
 	boolean deleteAll = JavaCore.CLEAN.equals(
 		this.javaBuilder.javaProject.getOption(JavaCore.CORE_JAVA_BUILD_CLEAN_OUTPUT_FOLDER, true));
 	if (deleteAll) {
-		if (this.javaBuilder.participants != null)
-			for (int i = 0, l = this.javaBuilder.participants.length; i < l; i++)
-				this.javaBuilder.participants[i].cleanStarting(this.javaBuilder.javaProject);
+		if (this.compilationGroup != CompilationGroup.TEST) {
+			// CompilationGroup.MAIN is done first, so this notifies the participants only once
+			// calling this for CompilationGroup.TEST could cases generated files for CompilationGroup.MAIN to be deleted. 
+			if (this.javaBuilder.participants != null)
+				for (int i = 0, l = this.javaBuilder.participants.length; i < l; i++)
+					this.javaBuilder.participants[i].cleanStarting(this.javaBuilder.javaProject);
+		}
 
-		ArrayList visited = new ArrayList(this.sourceLocations.length);
+		Set<IContainer> visited = new LinkedHashSet<>(this.sourceLocations.length);
 		for (int i = 0, l = this.sourceLocations.length; i < l; i++) {
 			this.notifier.subTask(Messages.bind(Messages.build_cleaningOutput, this.javaBuilder.currentProject.getName()));
 			ClasspathMultiDirectory sourceLocation = this.sourceLocations[i];
@@ -105,6 +125,7 @@
 						if (!member.isDerived()) {
 							member.accept(
 								new IResourceVisitor() {
+									@Override
 									public boolean visit(IResource resource) throws CoreException {
 										resource.setDerived(true, null);
 										return resource.getType() != IResource.FILE;
@@ -134,6 +155,7 @@
 						: null; // ignore inclusionPatterns if output folder == another source folder... not this one
 				sourceLocation.binaryFolder.accept(
 					new IResourceProxyVisitor() {
+						@Override
 						public boolean visit(IResourceProxy proxy) throws CoreException {
 							if (proxy.getType() == IResource.FILE) {
 								if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(proxy.getName())) {
@@ -174,6 +196,7 @@
 	}
 }
 
+@Override
 protected void cleanUp() {
 	this.incrementalBuilder = null;
 	this.secondaryTypes = null;
@@ -181,6 +204,7 @@
 	super.cleanUp();
 }
 
+@Override
 protected void compile(SourceFile[] units, SourceFile[] additionalUnits, boolean compilingFirstGroup) {
 	if (additionalUnits != null && this.secondaryTypes == null)
 		this.secondaryTypes = new ArrayList(7);
@@ -199,6 +223,7 @@
 	final boolean isAlsoProject = sourceLocation.sourceFolder.equals(this.javaBuilder.currentProject);
 	sourceLocation.sourceFolder.accept(
 		new IResourceProxyVisitor() {
+			@Override
 			public boolean visit(IResourceProxy proxy) throws CoreException {
 				IResource resource = null;
 				switch(proxy.getType()) {
@@ -270,11 +295,12 @@
 	System.out.println(", generate: " + compilerStats.generateTime + " ms (" + ((int) (compilerStats.generateTime * 1000.0 / time)) / 10.0 + "%)"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 }
 
+@Override
 protected void processAnnotationResults(CompilationParticipantResult[] results) {
 	// to compile the compilation participant results, we need to incrementally recompile all affected types
 	// whenever the generated types are initially added or structurally changed
 	if (this.incrementalBuilder == null)
-		this.incrementalBuilder = new IncrementalImageBuilder(this);
+		this.incrementalBuilder = new IncrementalImageBuilder(this, this.compilationGroup);
 	this.incrementalBuilder.processAnnotationResults(results);
 }
 
@@ -283,12 +309,12 @@
 	// compile groups, we need to incrementally recompile all affected types as if the missing
 	// secondary types have just been added, see bug 146324
 	if (this.incrementalBuilder == null)
-		this.incrementalBuilder = new IncrementalImageBuilder(this);
+		this.incrementalBuilder = new IncrementalImageBuilder(this, this.compilationGroup);
 
 	int count = this.secondaryTypes.size();
-	StringSet qualifiedNames = new StringSet(count * 2);
-	StringSet simpleNames = new StringSet(count);
-	StringSet rootNames = new StringSet(3);
+	Set<String> qualifiedNames = new HashSet<>(count * 2);
+	Set<String> simpleNames = new HashSet<>(count);
+	Set<String> rootNames = new HashSet<>(3);
 	while (--count >=0) {
 		char[] secondaryTypeName = (char[]) this.secondaryTypes.get(count);
 		IPath path = new Path(null, new String(secondaryTypeName));
@@ -301,6 +327,7 @@
 		this.typeLocatorsWithUndefinedTypes);
 }
 
+@Override
 protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] problems) throws CoreException {
 	if (sourceFile == null || problems == null || problems.length == 0) return;
 
@@ -308,7 +335,7 @@
 		CategorizedProblem problem = problems[i];
 		if (problem != null && problem.getID() == IProblem.UndefinedType) {
 			if (this.typeLocatorsWithUndefinedTypes == null)
-				this.typeLocatorsWithUndefinedTypes = new StringSet(3);
+				this.typeLocatorsWithUndefinedTypes = new HashSet<>(3);
 			this.typeLocatorsWithUndefinedTypes.add(sourceFile.typeLocator());
 			break;
 		}
@@ -317,6 +344,7 @@
 	super.storeProblemsFor(sourceFile, problems);
 }
 
+@Override
 public String toString() {
 	return "batch image builder for:\n\tnew state: " + this.newState; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.java
index 9b6bca4..dcae32a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathDirectory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,19 +11,26 @@
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
 import java.io.IOException;
+import java.util.function.Predicate;
 import java.util.zip.ZipFile;
 
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
+
 public class ClasspathDirectory extends ClasspathLocation {
 
 IContainer binaryFolder; // includes .class files for a single directory
@@ -34,15 +41,17 @@
 ZipFile annotationZipFile;
 String externalAnnotationPath;
 
-ClasspathDirectory(IContainer binaryFolder, boolean isOutputFolder, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
+ClasspathDirectory(IContainer binaryFolder, boolean isOutputFolder, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean isOnModulePath) {
 	this.binaryFolder = binaryFolder;
 	this.isOutputFolder = isOutputFolder || binaryFolder.getProjectRelativePath().isEmpty(); // if binaryFolder == project, then treat it as an outputFolder
 	this.directoryCache = new SimpleLookupTable(5);
 	this.accessRuleSet = accessRuleSet;
 	if (externalAnnotationPath != null)
 		this.externalAnnotationPath = externalAnnotationPath.toOSString();
+	this.isOnModulePath = isOnModulePath;
 }
 
+@Override
 public void cleanup() {
 	if (this.annotationZipFile != null) {
 		try {
@@ -54,6 +63,33 @@
 	this.directoryCache = null;
 }
 
+IModule initializeModule() {
+	IResource[] members = null;
+	try {
+		members = this.binaryFolder.members();
+		if (members != null) {
+			for (int i = 0, l = members.length; i < l; i++) {
+				IResource m = members[i];
+				String name = m.getName();
+				// Note: Look only inside the default package.
+				if (m.getType() == IResource.FILE && org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(name)) {
+					if (name.equalsIgnoreCase(IModule.MODULE_INFO_CLASS)) {
+						try {
+							ClassFileReader cfr = Util.newClassFileReader(m);
+							return cfr.getModuleDeclaration();
+						} catch (ClassFormatException | IOException e) {
+							// TODO Java 9 Auto-generated catch block
+							e.printStackTrace();
+						}
+					}
+				}
+			}
+		}
+	} catch (CoreException e1) {
+		e1.printStackTrace();
+	}
+	return null;
+}
 String[] directoryList(String qualifiedPackageName) {
 	String[] dirList = (String[]) this.directoryCache.get(qualifiedPackageName);
 	if (dirList == this.missingPackageHolder) return null; // package exists in another classpath directory or jar
@@ -67,9 +103,11 @@
 			int index = 0;
 			for (int i = 0, l = members.length; i < l; i++) {
 				IResource m = members[i];
-				if (m.getType() == IResource.FILE && org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(m.getName()))
+				String name = m.getName();
+				if (m.getType() == IResource.FILE && org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(name)) {
 					// add exclusion pattern check here if we want to hide .class files
-					dirList[index++] = m.getName();
+					dirList[index++] = name;
+				}
 			}
 			if (index < dirList.length)
 				System.arraycopy(dirList, 0, dirList = new String[index], 0, index);
@@ -82,7 +120,6 @@
 	this.directoryCache.put(qualifiedPackageName, this.missingPackageHolder);
 	return null;
 }
-
 boolean doesFileExist(String fileName, String qualifiedPackageName, String qualifiedFullName) {
 	String[] dirList = directoryList(qualifiedPackageName);
 	if (dirList == null) return false; // most common case
@@ -93,6 +130,7 @@
 	return false;
 }
 
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof ClasspathDirectory)) return false;
@@ -101,10 +139,13 @@
 	if (this.accessRuleSet != dir.accessRuleSet)
 		if (this.accessRuleSet == null || !this.accessRuleSet.equals(dir.accessRuleSet))
 			return false;
-	return this.binaryFolder.equals(dir.binaryFolder);
-}
+	if (this.isOnModulePath != dir.isOnModulePath)
+		return false;
 
-public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String qualifiedBinaryFileName) {
+	return this.binaryFolder.equals(dir.binaryFolder) && areAllModuleOptionsEqual(dir);
+}
+@Override
+public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
 	if (!doesFileExist(binaryFileName, qualifiedPackageName, qualifiedBinaryFileName)) return null; // most common case
 
 	IBinaryType reader = null;
@@ -118,6 +159,14 @@
 		return null;
 	}
 	if (reader != null) {
+		char[] modName = this.module == null ? null : this.module.name();
+		if (reader instanceof ClassFileReader) {
+			ClassFileReader cfReader = (ClassFileReader) reader;
+			if (cfReader.moduleName == null)
+				cfReader.moduleName = modName;
+			else
+				modName = cfReader.moduleName;
+		}
 		String fileNameWithoutExtension = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - SuffixConstants.SUFFIX_CLASS.length);
 		if (this.externalAnnotationPath != null) {
 			try {
@@ -132,16 +181,18 @@
 			}
 		}
 		if (this.accessRuleSet == null)
-			return new NameEnvironmentAnswer(reader, null);
-		return new NameEnvironmentAnswer(reader, this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()));
+			return this.module == null ? new NameEnvironmentAnswer(reader, null) : new NameEnvironmentAnswer(reader, null, modName);
+		return new NameEnvironmentAnswer(reader, this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()), modName);
 	}
 	return null;
 }
 
+@Override
 public IPath getProjectRelativePath() {
 	return this.binaryFolder.getProjectRelativePath();
 }
 
+@Override
 public int hashCode() {
 	return this.binaryFolder == null ? super.hashCode() : this.binaryFolder.hashCode();
 }
@@ -150,18 +201,38 @@
 	return false;
 }
 
+@Override
 public boolean isOutputFolder() {
 	return this.isOutputFolder;
 }
 
-public boolean isPackage(String qualifiedPackageName) {
+@Override
+public boolean isPackage(String qualifiedPackageName, String moduleName) {
+	if (moduleName != null) {
+		if (this.module == null || !moduleName.equals(String.valueOf(this.module.name())))
+			return false;
+	}
 	return directoryList(qualifiedPackageName) != null;
 }
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	String[] dirList = directoryList(qualifiedPackageName);
+	if (dirList != null) {
+		for (String entry : dirList) {
+			String entryLC = entry.toLowerCase();
+			if (entryLC.endsWith(SuffixConstants.SUFFIX_STRING_class) || entryLC.endsWith(SuffixConstants.SUFFIX_STRING_java))
+				return true;
+		}
+	}
+	return false;
+}
 
+@Override
 public void reset() {
 	this.directoryCache = new SimpleLookupTable(5);
 }
 
+@Override
 public String toString() {
 	String start = "Binary classpath directory " + this.binaryFolder.getFullPath().toString(); //$NON-NLS-1$
 	if (this.accessRuleSet == null)
@@ -169,9 +240,15 @@
 	return start + " with " + this.accessRuleSet; //$NON-NLS-1$
 }
 
+@Override
 public String debugPathString() {
 	return this.binaryFolder.getFullPath().toString();
 }
 
+@Override
+public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+	// 
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false, null);
+}
 
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.java
new file mode 100644
index 0000000..48efde0
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJMod.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.builder;
+
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.function.Predicate;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+
+public class ClasspathJMod extends ClasspathJar {
+
+	public static char[] CLASSES = "classes".toCharArray(); //$NON-NLS-1$
+	public static char[] CLASSES_FOLDER = "classes/".toCharArray(); //$NON-NLS-1$
+	private static int MODULE_DESCRIPTOR_NAME_LENGTH = IModule.MODULE_INFO_CLASS.length();
+
+	ClasspathJMod(String zipFilename, long lastModified, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
+		super(zipFilename, lastModified, accessRuleSet, externalAnnotationPath, true);
+	}
+	@Override
+	IModule initializeModule() {
+		IModule mod = null;
+		ZipFile file = null;
+		try {
+			file = new ZipFile(this.zipFilename);
+			String fileName = new String(CLASSES_FOLDER) + IModule.MODULE_INFO_CLASS;
+			ClassFileReader classfile = ClassFileReader.read(file, fileName);
+			if (classfile != null) {
+				mod = classfile.getModuleDeclaration();
+			}
+		} catch (ClassFormatException | IOException e) {
+			// do nothing
+		} finally {
+			try {
+				if (file != null)
+					file.close();
+			} catch (IOException e) {
+				// do nothing
+			}
+		}
+		return mod;
+	}
+
+	@Override
+	public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName,
+											boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+		if (!isPackage(qualifiedPackageName, moduleName)) return null; // most common case
+		if (moduleNameFilter != null && this.module != null && !moduleNameFilter.test(String.valueOf(this.module.name())))
+			return null;
+
+		try {
+			qualifiedBinaryFileName = new String(CharOperation.append(CLASSES_FOLDER, qualifiedBinaryFileName.toCharArray()));
+			IBinaryType reader = ClassFileReader.read(this.zipFile, qualifiedBinaryFileName);
+			if (reader != null) {
+				char[] modName = this.module == null ? null : this.module.name();
+				if (reader instanceof ClassFileReader) {
+					ClassFileReader classReader = (ClassFileReader) reader;
+					if (classReader.moduleName == null)
+						classReader.moduleName = modName;
+					else
+						modName = classReader.moduleName;
+				}
+				String fileNameWithoutExtension = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - SuffixConstants.SUFFIX_CLASS.length);
+				if (this.externalAnnotationPath != null) {
+					try {
+						if (this.annotationZipFile == null) {
+							this.annotationZipFile = ExternalAnnotationDecorator
+									.getAnnotationZipFile(this.externalAnnotationPath, null);
+						}
+
+						reader = ExternalAnnotationDecorator.create(reader, this.externalAnnotationPath,
+								fileNameWithoutExtension, this.annotationZipFile);
+					} catch (IOException e) {
+						// don't let error on annotations fail class reading
+					}
+				}
+				if (this.accessRuleSet == null)
+					return new NameEnvironmentAnswer(reader, null, modName);
+				return new NameEnvironmentAnswer(reader, this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()), modName);
+			}
+		} catch (IOException e) { // treat as if class file is missing
+		} catch (ClassFormatException e) { // treat as if class file is missing
+		}
+		return null;
+	}
+	@Override
+	protected String readJarContent(final SimpleSet packageSet) {
+		String modInfo = null;
+		for (Enumeration<? extends ZipEntry> e = this.zipFile.entries(); e.hasMoreElements(); ) {
+			ZipEntry entry = e.nextElement();
+			char[] entryName = entry.getName().toCharArray();
+			int index = CharOperation.indexOf('/', entryName);
+			if (index != -1) {
+				char[] folder = CharOperation.subarray(entryName, 0, index);
+				if (CharOperation.equals(CLASSES, folder)) {
+					char[] fileName = CharOperation.subarray(entryName, index + 1, entryName.length);
+					if (modInfo == null && fileName.length == MODULE_DESCRIPTOR_NAME_LENGTH) {
+						if (CharOperation.equals(fileName, IModule.MODULE_INFO_CLASS.toCharArray())) {
+							modInfo = new String(entryName);
+						}
+					}
+					addToPackageSet(packageSet, new String(fileName), false);
+				}
+			}
+		}
+		return modInfo;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.java
index d4af271..c389f1e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJar.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,18 +17,26 @@
 import java.io.IOException;
 import java.util.Date;
 import java.util.Enumeration;
+import java.util.function.Predicate;
+import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
@@ -49,41 +57,75 @@
 	}
 }
 
-static SimpleLookupTable PackageCache = new SimpleLookupTable();
+protected static SimpleLookupTable PackageCache = new SimpleLookupTable();
+protected static SimpleLookupTable ModuleCache = new SimpleLookupTable();
+
+protected static void addToPackageSet(SimpleSet packageSet, String fileName, boolean endsWithSep) {
+	int last = endsWithSep ? fileName.length() : fileName.lastIndexOf('/');
+	while (last > 0) {
+		// extract the package name
+		String packageName = fileName.substring(0, last);
+		if (packageSet.addIfNotIncluded(packageName) == null)
+			return; // already existed
+		last = packageName.lastIndexOf('/');
+	}
+}
 
 /**
  * Calculate and cache the package list available in the zipFile.
- * @param jar The ClasspathJar to use
  * @return A SimpleSet with the all the package names in the zipFile.
  */
-static SimpleSet findPackageSet(ClasspathJar jar) {
-	String zipFileName = jar.zipFilename;
-	long lastModified = jar.lastModified();
-	long fileSize = new File(zipFileName).length();
+protected SimpleSet findPackageSet() {
+	String zipFileName = this.zipFilename;
 	PackageCacheEntry cacheEntry = (PackageCacheEntry) PackageCache.get(zipFileName);
-	if (cacheEntry != null && cacheEntry.lastModified == lastModified && cacheEntry.fileSize == fileSize)
+	long timestamp = this.lastModified();
+	long fileSize = new File(zipFileName).length();
+	if (cacheEntry != null && cacheEntry.lastModified == timestamp && cacheEntry.fileSize == fileSize) {
 		return cacheEntry.packageSet;
-
-	SimpleSet packageSet = new SimpleSet(41);
-	packageSet.add(""); //$NON-NLS-1$
-	nextEntry : for (Enumeration e = jar.zipFile.entries(); e.hasMoreElements(); ) {
-		String fileName = ((ZipEntry) e.nextElement()).getName();
-
-		// add the package name & all of its parent packages
-		int last = fileName.lastIndexOf('/');
-		while (last > 0) {
-			// extract the package name
-			String packageName = fileName.substring(0, last);
-			if (packageSet.addIfNotIncluded(packageName) == null)
-				continue nextEntry; // already existed
-			last = packageName.lastIndexOf('/');
-		}
 	}
-
-	PackageCache.put(zipFileName, new PackageCacheEntry(lastModified, fileSize, packageSet));
+	final SimpleSet packageSet = new SimpleSet(41);
+	packageSet.add(""); //$NON-NLS-1$
+	readJarContent(packageSet);
+	PackageCache.put(zipFileName, new PackageCacheEntry(timestamp, fileSize, packageSet));
 	return packageSet;
 }
-
+protected String readJarContent(final SimpleSet packageSet) {
+	String modInfo = null;
+	for (Enumeration e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		String fileName = ((ZipEntry) e.nextElement()).getName();
+		if (modInfo == null) {
+			int folderEnd = fileName.lastIndexOf('/');
+			folderEnd += 1;
+			String className = fileName.substring(folderEnd, fileName.length());
+			if (className.equalsIgnoreCase(IModule.MODULE_INFO_CLASS)) {
+				modInfo = fileName;
+			}
+		}
+		addToPackageSet(packageSet, fileName, false);
+	}
+	return modInfo;
+}
+IModule initializeModule() {
+	IModule mod = null;
+	ZipFile file = null;
+	try {
+		file = new ZipFile(this.zipFilename);
+		ClassFileReader classfile = ClassFileReader.read(file, IModule.MODULE_INFO_CLASS); // FIXME: use jar cache
+		if (classfile != null) {
+			mod = classfile.getModuleDeclaration();
+		}
+	} catch (ClassFormatException | IOException e) {
+		// do nothing
+	} finally {
+		try {
+			if (file != null)
+				file.close();
+		} catch (IOException e) {
+			// do nothing
+		}
+	}
+	return mod;
+}
 
 String zipFilename; // keep for equals
 IFile resource;
@@ -91,11 +133,11 @@
 ZipFile annotationZipFile;
 long lastModified;
 boolean closeZipFileAtEnd;
-SimpleSet knownPackageNames;
+private SimpleSet knownPackageNames;
 AccessRuleSet accessRuleSet;
 String externalAnnotationPath;
 
-ClasspathJar(IFile resource, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
+ClasspathJar(IFile resource, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean isOnModulePath) {
 	this.resource = resource;
 	try {
 		java.net.URI location = resource.getLocationURI();
@@ -113,9 +155,10 @@
 	this.accessRuleSet = accessRuleSet;
 	if (externalAnnotationPath != null)
 		this.externalAnnotationPath = externalAnnotationPath.toString();
+	this.isOnModulePath = isOnModulePath;
 }
 
-ClasspathJar(String zipFilename, long lastModified, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
+ClasspathJar(String zipFilename, long lastModified, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean isOnModulePath) {
 	this.zipFilename = zipFilename;
 	this.lastModified = lastModified;
 	this.zipFile = null;
@@ -123,55 +166,89 @@
 	this.accessRuleSet = accessRuleSet;
 	if (externalAnnotationPath != null)
 		this.externalAnnotationPath = externalAnnotationPath.toString();
+	this.isOnModulePath = isOnModulePath;
 }
 
-public ClasspathJar(ZipFile zipFile, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
-	this.zipFilename = zipFile.getName();
+public ClasspathJar(ZipFile zipFile, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean isOnModulePath) {
+	this(zipFile.getName(), accessRuleSet, externalAnnotationPath, isOnModulePath);
 	this.zipFile = zipFile;
-	this.closeZipFileAtEnd = false;
-	this.knownPackageNames = null;
-	this.accessRuleSet = accessRuleSet;
+	this.closeZipFileAtEnd = true;
+}
+
+public ClasspathJar(String fileName, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean isOnModulePath) {
+	this(fileName, 0, accessRuleSet, externalAnnotationPath, isOnModulePath);
 	if (externalAnnotationPath != null)
 		this.externalAnnotationPath = externalAnnotationPath.toString();
 }
 
+@Override
 public void cleanup() {
 	if (this.closeZipFileAtEnd) {
 		if (this.zipFile != null) {
 			try {
 				this.zipFile.close();
+				if (org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.ZIP_ACCESS_VERBOSE) {
+					System.out.println("(" + Thread.currentThread() + ") [ClasspathJar.cleanup()] Closed ZipFile on " + this.zipFilename); //$NON-NLS-1$	//$NON-NLS-2$
+				}
 			} catch(IOException e) { // ignore it
+				JavaCore.getPlugin().getLog().log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, "Error closing " + this.zipFile.getName(), e)); //$NON-NLS-1$
 			}
 			this.zipFile = null;
 		}
 		if (this.annotationZipFile != null) {
 			try {
 				this.annotationZipFile.close();
+				if (org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.ZIP_ACCESS_VERBOSE) {
+					System.out.println("(" + Thread.currentThread() + ") [ClasspathJar.cleanup()] Closed Annotation ZipFile on " + this.zipFilename); //$NON-NLS-1$	//$NON-NLS-2$
+				}
 			} catch(IOException e) { // ignore it
+				JavaCore.getPlugin().getLog().log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, "Error closing " + this.annotationZipFile.getName(), e)); //$NON-NLS-1$
 			}
 			this.annotationZipFile = null;
 		}
+	} else {
+		if (this.zipFile != null && org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.ZIP_ACCESS_VERBOSE) {
+			try {
+				this.zipFile.size();
+				System.out.println("(" + Thread.currentThread() + ") [ClasspathJar.cleanup()] ZipFile NOT closed on " + this.zipFilename); //$NON-NLS-1$	//$NON-NLS-2$
+			} catch (IllegalStateException e) {
+				// OK: the file was already closed
+			}
+		}
 	}
+	this.module = null; // TODO(SHMOD): is this safe?
 	this.knownPackageNames = null;
 }
 
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof ClasspathJar)) return false;
-
 	ClasspathJar jar = (ClasspathJar) o;
 	if (this.accessRuleSet != jar.accessRuleSet)
 		if (this.accessRuleSet == null || !this.accessRuleSet.equals(jar.accessRuleSet))
 			return false;
-	return this.zipFilename.equals(jar.zipFilename) && lastModified() == jar.lastModified();
+	return this.zipFilename.equals(jar.zipFilename) 
+			&& lastModified() == jar.lastModified()
+			&& this.isOnModulePath == jar.isOnModulePath
+			&& areAllModuleOptionsEqual(jar);
 }
 
-public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String qualifiedBinaryFileName) {
-	if (!isPackage(qualifiedPackageName)) return null; // most common case
+@Override
+public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+	if (!isPackage(qualifiedPackageName, moduleName)) return null; // most common case
 
 	try {
 		IBinaryType reader = ClassFileReader.read(this.zipFile, qualifiedBinaryFileName);
 		if (reader != null) {
+			char[] modName = this.module == null ? null : this.module.name();
+			if (reader instanceof ClassFileReader) {
+				ClassFileReader classReader = (ClassFileReader) reader;
+				if (classReader.moduleName == null)
+					classReader.moduleName = modName;
+				else
+					modName = classReader.moduleName;
+				}
 			String fileNameWithoutExtension = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - SuffixConstants.SUFFIX_CLASS.length);
 			if (this.externalAnnotationPath != null) {
 				try {
@@ -185,10 +262,16 @@
 				} catch (IOException e) {
 					// don't let error on annotations fail class reading
 				}
+				if (reader.getExternalAnnotationStatus() == ExternalAnnotationStatus.NOT_EEA_CONFIGURED) {
+					// ensure a reader that answers NO_EEA_FILE
+					reader = new ExternalAnnotationDecorator(reader, null);
+				}
 			}
 			if (this.accessRuleSet == null)
-				return new NameEnvironmentAnswer(reader, null);
-			return new NameEnvironmentAnswer(reader, this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()));
+				return new NameEnvironmentAnswer(reader, null, modName);
+			return new NameEnvironmentAnswer(reader, 
+					this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()), 
+					modName);
 		}
 	} catch (IOException e) { // treat as if class file is missing
 	} catch (ClassFormatException e) { // treat as if class file is missing
@@ -196,19 +279,39 @@
 	return null;
 }
 
+@Override
 public IPath getProjectRelativePath() {
 	if (this.resource == null) return null;
 	return	this.resource.getProjectRelativePath();
 }
 
+@Override
 public int hashCode() {
 	return this.zipFilename == null ? super.hashCode() : this.zipFilename.hashCode();
 }
 
-public boolean isPackage(String qualifiedPackageName) {
-	if (this.knownPackageNames != null)
-		return this.knownPackageNames.includes(qualifiedPackageName);
+@Override
+public boolean isPackage(String qualifiedPackageName, String moduleName) {
+	if (moduleName != null) {
+		if (this.module == null || !moduleName.equals(String.valueOf(this.module.name())))
+			return false;
+	}
+	if (this.knownPackageNames == null)
+		scanContent();
+	return this.knownPackageNames.includes(qualifiedPackageName);
+}
+@Override
+public boolean hasCompilationUnit(String pkgName, String moduleName) {
+	for (Enumeration<? extends ZipEntry> e = this.zipFile.entries(); e.hasMoreElements(); ) {
+		String fileName = e.nextElement().getName();
+		if (fileName.startsWith(pkgName) && fileName.toLowerCase().endsWith(SuffixConstants.SUFFIX_STRING_class))
+			return true;
+	}	
+	return false;
+}
 
+/** Scan the contained packages and try to locate the module descriptor. */
+private boolean scanContent() {
 	try {
 		if (this.zipFile == null) {
 			if (org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager.ZIP_ACCESS_VERBOSE) {
@@ -216,12 +319,15 @@
 			}
 			this.zipFile = new ZipFile(this.zipFilename);
 			this.closeZipFileAtEnd = true;
+			this.knownPackageNames = findPackageSet();
+		} else {
+			this.knownPackageNames = findPackageSet();
 		}
-		this.knownPackageNames = findPackageSet(this);
+		return true;
 	} catch(Exception e) {
 		this.knownPackageNames = new SimpleSet(); // assume for this build the zipFile is empty
+		return false;
 	}
-	return this.knownPackageNames.includes(qualifiedPackageName);
 }
 
 public long lastModified() {
@@ -230,6 +336,7 @@
 	return this.lastModified;
 }
 
+@Override
 public String toString() {
 	String start = "Classpath jar file " + this.zipFilename; //$NON-NLS-1$
 	if (this.accessRuleSet == null)
@@ -237,6 +344,7 @@
 	return start + " with " + this.accessRuleSet; //$NON-NLS-1$
 }
 
+@Override
 public String debugPathString() {
 	long time = lastModified();
 	if (time == 0)
@@ -244,4 +352,28 @@
 	return this.zipFilename + '(' + (new Date(time)) + " : " + time + ')'; //$NON-NLS-1$
 }
 
+@Override
+public IModule getModule() {
+	if (this.knownPackageNames == null)
+		scanContent();
+	return this.module;
+}
+
+@Override
+public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+	// 
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false, null);
+}
+public Manifest getManifest() {
+	if (!scanContent()) // ensure zipFile is initialized
+		return null;
+	ZipEntry entry = this.zipFile.getEntry(TypeConstants.META_INF_MANIFEST_MF);
+	try {
+		if (entry != null)
+			return new Manifest(this.zipFile.getInputStream(entry));
+	} catch (IOException e) {
+		// cannot use manifest
+	}
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java
new file mode 100644
index 0000000..d5bacbe
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathJrt.java
@@ -0,0 +1,428 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2018 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.builder;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileSystemNotFoundException;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IMultiModuleEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+public class ClasspathJrt extends ClasspathLocation implements IMultiModuleEntry {
+
+//private HashMap<String, SimpleSet> packagesInModule = null;
+private static HashMap<String, HashMap<String, SimpleSet>> PackageCache = new HashMap<>();
+private static HashMap<String, Set<IModule>> ModulesCache = new HashMap<>();
+String externalAnnotationPath;
+private ZipFile annotationZipFile;
+String zipFilename; // keep for equals
+AccessRuleSet accessRuleSet;
+String compliance = null;
+String releaseInHex = null;
+private Path releasePath = null;
+private String[] subReleases = null;
+private java.nio.file.FileSystem fs = null;
+
+static final Set<String> NO_LIMIT_MODULES = new HashSet<>();
+
+public ClasspathJrt(String zipFilename, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, String compliance) {
+	this.zipFilename = zipFilename;
+	this.accessRuleSet = accessRuleSet;
+	if (externalAnnotationPath != null)
+		this.externalAnnotationPath = externalAnnotationPath.toString();
+	if (compliance != null && compliance.length() == 0) {
+		this.compliance = null;
+	} else {
+		this.compliance = compliance;
+	}
+	initialize();
+	loadModules(this);
+}
+/**
+ * Calculate and cache the package list available in the zipFile.
+ * @param jrt The ClasspathJar to use
+ * @return A SimpleSet with the all the package names in the zipFile.
+ */
+static HashMap<String, SimpleSet> findPackagesInModules(final ClasspathJrt jrt) {
+	String zipFileName = jrt.zipFilename;
+	HashMap<String, SimpleSet> cache = PackageCache.get(zipFileName);
+	if (cache != null) {
+		return cache;
+	}
+	final HashMap<String, SimpleSet> packagesInModule = new HashMap<>();
+	PackageCache.put(zipFileName, packagesInModule);
+	try {
+		final File imageFile = new File(zipFileName);
+		org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(imageFile,
+				new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<Path>() {
+			SimpleSet packageSet = null;
+			@Override
+			public FileVisitResult visitPackage(Path dir, Path mod, BasicFileAttributes attrs) throws IOException {
+				ClasspathJar.addToPackageSet(this.packageSet, dir.toString(), true);
+				return FileVisitResult.CONTINUE;
+			}
+
+			@Override
+			public FileVisitResult visitFile(Path file, Path mod, BasicFileAttributes attrs) throws IOException {
+				return FileVisitResult.CONTINUE;
+			}
+
+			@Override
+			public FileVisitResult visitModule(Path mod) throws IOException {
+				String name = mod.toString();
+				try {
+					jrt.acceptModule(JRTUtil.getClassfileContent(imageFile, IModule.MODULE_INFO_CLASS, name));
+				} catch (ClassFormatException e) {
+					e.printStackTrace();
+				}
+				this.packageSet = new SimpleSet(41);
+				this.packageSet.add(""); //$NON-NLS-1$
+				packagesInModule.put(name, this.packageSet);
+				return FileVisitResult.CONTINUE;
+			}
+		}, JRTUtil.NOTIFY_PACKAGES | JRTUtil.NOTIFY_MODULES);
+	} catch (IOException e) {
+		// TODO: Java 9 Should report better
+	}
+	return packagesInModule;
+}
+
+public static void loadModules(final ClasspathJrt jrt) {
+	String zipFileName = jrt.zipFilename;
+	Set<IModule> cache = ModulesCache.get(zipFileName);
+
+	if (cache == null) {
+		try {
+			final File imageFile = new File(zipFileName);
+			org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(imageFile,
+					new org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<Path>() {
+				SimpleSet packageSet = null;
+
+				@Override
+				public FileVisitResult visitPackage(Path dir, Path mod, BasicFileAttributes attrs)
+						throws IOException {
+					ClasspathJar.addToPackageSet(this.packageSet, dir.toString(), true);
+					return FileVisitResult.CONTINUE;
+				}
+
+				@Override
+				public FileVisitResult visitFile(Path file, Path mod, BasicFileAttributes attrs)
+						throws IOException {
+					return FileVisitResult.CONTINUE;
+				}
+
+				@Override
+				public FileVisitResult visitModule(Path mod) throws IOException {
+					try {
+						jrt.acceptModule(JRTUtil.getClassfileContent(imageFile, IModule.MODULE_INFO_CLASS, mod.toString()));
+					} catch (ClassFormatException e) {
+						e.printStackTrace();
+					}
+					return FileVisitResult.SKIP_SUBTREE;
+				}
+			}, JRTUtil.NOTIFY_MODULES);
+		} catch (IOException e) {
+			// TODO: Java 9 Should report better
+		}
+	} else {
+//		for (IModuleDeclaration iModule : cache) {
+//			jimage.env.acceptModule(iModule, jimage);
+//		}
+	}
+}
+public void initialize() {
+	if (this.compliance == null) {
+		return;
+	}
+	this.compliance = getReleaseOptionFromCompliance(this.compliance);
+	this.releaseInHex = Integer.toHexString(Integer.parseInt(this.compliance));
+	Path lib = Paths.get(this.zipFilename).getParent();
+	Path filePath = Paths.get(lib.toString(),  "ct.sym"); //$NON-NLS-1$
+	URI t = filePath.toUri();
+	if (!Files.exists(filePath)) {
+		return;
+	}
+	URI uri = URI.create("jar:file:" + t.getRawPath()); //$NON-NLS-1$
+	try {
+		this.fs = FileSystems.getFileSystem(uri);
+	} catch(FileSystemNotFoundException fne) {
+		// Ignore and move on
+	}
+	if (this.fs == null) {
+		HashMap<String, ?> env = new HashMap<>();
+		try {
+			this.fs = FileSystems.newFileSystem(uri, env);
+		} catch (IOException e) {
+			this.compliance = null;
+			return;
+		}
+	}
+	this.releasePath = this.fs.getPath("/"); //$NON-NLS-1$
+	if (!Files.exists(this.fs.getPath(this.releaseInHex))
+			|| Files.exists(this.fs.getPath(this.releaseInHex, "system-modules"))) { //$NON-NLS-1$
+		this.compliance = null;
+	}
+	if (this.compliance != null) {
+		List<String> sub = new ArrayList<>();
+		try (DirectoryStream<java.nio.file.Path> stream = Files.newDirectoryStream(this.releasePath)) {
+			for (final java.nio.file.Path subdir: stream) {
+				String rel = subdir.getFileName().toString();
+				if (rel.contains(this.releaseInHex)) {
+					sub.add(rel);
+				} else {
+					continue;
+				}
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+			// Rethrow
+		}
+		this.subReleases = sub.toArray(new String[sub.size()]);
+	}
+}
+private String getReleaseOptionFromCompliance(String comp) {
+	if (JavaCore.compareJavaVersions(comp, JavaCore.VERSION_1_5) <= 0) {
+		// For a JDK 9 and above, the minimum release we support is "6"
+		return "6"; //$NON-NLS-1$
+	}
+	int index = comp.indexOf("1."); //$NON-NLS-1$
+	if (index != -1) {
+		return comp.substring(index + 2, comp.length());
+	} else {
+		return comp;
+	}
+}
+void acceptModule(byte[] content) {
+	if (content == null)
+		return;
+	ClassFileReader reader = null;
+	try {
+		reader = new ClassFileReader(content, IModule.MODULE_INFO_CLASS.toCharArray());
+	} catch (ClassFormatException e) {
+		e.printStackTrace();
+	}
+	if (reader != null) {
+		IModule moduleDecl = reader.getModuleDeclaration();
+		if (moduleDecl != null) {
+			Set<IModule> cache = ModulesCache.get(this.zipFilename);
+			if (cache == null) {
+				ModulesCache.put(this.zipFilename, cache = new HashSet<IModule>());
+			}
+			cache.add(moduleDecl);
+		}
+	}
+}
+@Override
+public void cleanup() {
+	if (this.annotationZipFile != null) {
+		try {
+			this.annotationZipFile.close();
+		} catch(IOException e) { // ignore it
+		}
+		this.annotationZipFile = null;
+	}
+}
+
+@Override
+public boolean equals(Object o) {
+	if (this == o) return true;
+	if (!(o instanceof ClasspathJrt)) return false;
+	ClasspathJrt jar = (ClasspathJrt) o;
+	if (!Util.equalOrNull(this.compliance, jar.compliance)) {
+		return false;
+	}
+	if (this.accessRuleSet != jar.accessRuleSet)
+		if (this.accessRuleSet == null || !this.accessRuleSet.equals(jar.accessRuleSet))
+			return false;
+	return this.zipFilename.endsWith(jar.zipFilename) && areAllModuleOptionsEqual(jar);
+}
+
+@Override
+public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName,
+										boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+	if (!isPackage(qualifiedPackageName, moduleName)) return null; // most common case
+
+	try {
+		IBinaryType reader = null;
+		byte[] content = null;
+		String fileNameWithoutExtension = qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - SuffixConstants.SUFFIX_CLASS.length);
+		if (this.subReleases != null && this.subReleases.length > 0) {
+			qualifiedBinaryFileName = qualifiedBinaryFileName.replace(".class", ".sig"); //$NON-NLS-1$ //$NON-NLS-2$
+			for (String rel : this.subReleases) {
+				Path p = this.fs.getPath(rel, qualifiedBinaryFileName);
+				if (Files.exists(p)) {
+					content = JRTUtil.safeReadBytes(p);
+					if (content != null) {
+						reader = new ClassFileReader(content, qualifiedBinaryFileName.toCharArray());
+						break;
+					}
+				}
+			}
+		} else {
+			reader = ClassFileReader.readFromModule(new File(this.zipFilename), moduleName, qualifiedBinaryFileName, moduleNameFilter);
+		}
+		if (reader != null) {
+			if (this.externalAnnotationPath != null) {
+				try {
+					if (this.annotationZipFile == null) {
+						this.annotationZipFile = ExternalAnnotationDecorator.getAnnotationZipFile(this.externalAnnotationPath, null);
+					}
+					reader = ExternalAnnotationDecorator.create(reader, this.externalAnnotationPath, fileNameWithoutExtension, this.annotationZipFile);
+				} catch (IOException e) {
+					// don't let error on annotations fail class reading
+				}
+			}
+			if (this.accessRuleSet == null)
+				return new NameEnvironmentAnswer(reader, null, reader.getModule());
+			return new NameEnvironmentAnswer(reader,
+					this.accessRuleSet.getViolatedRestriction(fileNameWithoutExtension.toCharArray()),
+					reader.getModule());
+		}
+	} catch (ClassFormatException e) { // treat as if class file is missing
+	} catch (IOException e) { // treat as if class file is missing
+	}
+	return null;
+}
+
+@Override
+public IPath getProjectRelativePath() {
+	return null;
+}
+
+@Override
+public int hashCode() {
+	return this.zipFilename == null ? super.hashCode() : this.zipFilename.hashCode();
+}
+@Override
+public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+	List<String> moduleNames = JRTUtil.getModulesDeclaringPackage(new File(this.zipFilename), qualifiedPackageName, moduleName);
+	return CharOperation.toCharArrays(moduleNames);
+}
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	return JRTUtil.hasCompilationUnit(new File(this.zipFilename), qualifiedPackageName, moduleName);
+}
+@Override
+public boolean isPackage(String qualifiedPackageName, String moduleName) {
+	return JRTUtil.getModulesDeclaringPackage(new File(this.zipFilename), qualifiedPackageName, moduleName) != null;
+}
+
+@Override
+public String toString() {
+	String start = "Classpath jrt file " + this.zipFilename; //$NON-NLS-1$
+	return start;
+}
+
+@Override
+public String debugPathString() {
+	return this.zipFilename;
+}
+@Override
+public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName,
+		boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+	String fileName = new String(typeName);
+	return findClass(fileName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, asBinaryOnly, moduleNameFilter);
+}
+@Override
+public boolean hasModule() {
+	return true;
+}
+@Override
+public IModule getModule(char[] moduleName) {
+	Set<IModule> modules = ModulesCache.get(this.zipFilename);
+	if (modules != null) {
+		for (IModule mod : modules) {
+			if (CharOperation.equals(mod.name(), moduleName))
+					return mod;
+		}
+	}
+	return null;
+}
+@Override
+public Collection<String> getModuleNames(Collection<String> limitModules) {
+	HashMap<String, SimpleSet> cache = findPackagesInModules(this);
+	if (cache != null)
+		return selectModules(cache.keySet(), limitModules);
+	return Collections.emptyList();
+}
+
+private Collection<String> selectModules(Set<String> keySet, Collection<String> limitModules) {
+	Collection<String> rootModules;
+	if (limitModules == NO_LIMIT_MODULES) {
+		rootModules = new HashSet<>(keySet);
+	} else if (limitModules != null) {
+		Set<String> result = new HashSet<>(keySet);
+		result.retainAll(limitModules);
+		rootModules = result;
+	} else {
+		rootModules = JavaProject.internalDefaultRootModules(keySet, s -> s, m -> getModule(m.toCharArray()));
+	}
+	Set<String> allModules = new HashSet<>(rootModules);
+	for (String mod : rootModules)
+		addRequired(mod, allModules);
+	return allModules;
+}
+
+private void addRequired(String mod, Set<String> allModules) {
+	IModule iMod = getModule(mod.toCharArray());
+	for (IModuleReference requiredRef : iMod.requires()) {
+		IModule reqMod = getModule(requiredRef.name());
+		if (reqMod != null) {
+			String reqModName = String.valueOf(reqMod.name());
+			if (allModules.add(reqModName))
+				addRequired(reqModName, allModules);
+		}
+	}
+}
+@Override
+public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName) {
+	//
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, false, null);
+}
+/** TEST ONLY */
+public static void resetCaches() {
+	PackageCache.clear();
+	ModulesCache.clear();
+}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.java
index 1fb17fc..047da76 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathLocation.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,44 +12,149 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
 
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 
 public abstract class ClasspathLocation {
 
-static ClasspathLocation forSourceFolder(IContainer sourceFolder, IContainer outputFolder, char[][] inclusionPatterns, char[][] exclusionPatterns, boolean ignoreOptionalProblems) {
-	return new ClasspathMultiDirectory(sourceFolder, outputFolder, inclusionPatterns, exclusionPatterns, ignoreOptionalProblems);
+	protected boolean isOnModulePath;
+	protected IModule module;
+	protected IUpdatableModule.UpdatesByKind updates;
+	protected Set<String> limitModuleNames = null;
+	protected String patchModuleName = null;
+	// In the following signatures, passing a null moduleName signals "don't care":
+	abstract public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName);
+	abstract public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName,
+													boolean asBinaryOnly, Predicate<String> moduleNameFilter);
+	abstract public boolean isPackage(String qualifiedPackageName, String moduleName);
+	public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		return singletonModuleNameIf(isPackage(qualifiedPackageName, moduleName));
+	}
+	public boolean hasModule() { return getModule() != null; }
+	abstract public boolean hasCompilationUnit(String pkgName, String moduleName);
+
+	public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName,
+											boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+		String fileName = new String(typeName);
+		return findClass(fileName, qualifiedPackageName, moduleName, qualifiedBinaryFileName, asBinaryOnly, moduleNameFilter);
+	}
+	public void setModule (IModule mod) {
+		this.module = mod;
+	}
+	public IModule getModule() {
+		return this.module;
+	}
+	protected boolean areAllModuleOptionsEqual(ClasspathLocation other) {
+		if (this.patchModuleName != null) {
+			if (other.patchModuleName == null)
+				return false;
+			if (!this.patchModuleName.equals(other.patchModuleName))
+				return false;
+		} else {
+			if (other.patchModuleName != null)
+				return false;
+		}
+		if (this.limitModuleNames != null) {
+			if (other.limitModuleNames == null)
+				return false;
+			if (other.limitModuleNames.size() != this.limitModuleNames.size())
+				return false;
+			if (!this.limitModuleNames.containsAll(other.limitModuleNames))
+				return false;
+		} else {
+			if (other.limitModuleNames != null)
+				return false;
+		}
+		if (this.updates != null) {
+			if (other.updates == null)
+				return false;
+			List<Consumer<IUpdatableModule>> packageUpdates = this.updates.getList(UpdateKind.PACKAGE, false);
+			List<Consumer<IUpdatableModule>> otherPackageUpdates = other.updates.getList(UpdateKind.PACKAGE, false);
+			if (packageUpdates != null) {
+				if (otherPackageUpdates == null)
+					return false;
+				if (packageUpdates.size() != otherPackageUpdates.size())
+					return false;
+				if (!packageUpdates.containsAll(otherPackageUpdates))
+					return false;
+			} else {
+				if (otherPackageUpdates != null)
+					return false;
+			}
+			List<Consumer<IUpdatableModule>> moduleUpdates = this.updates.getList(UpdateKind.MODULE, false);
+			List<Consumer<IUpdatableModule>> otherModuleUpdates = other.updates.getList(UpdateKind.MODULE, false);
+			if (moduleUpdates != null) {
+				if (otherModuleUpdates == null)
+					return false;
+				if (moduleUpdates.size() != otherModuleUpdates.size())
+					return false;
+				if (!moduleUpdates.containsAll(otherModuleUpdates))
+					return false;
+			} else {
+				if (otherModuleUpdates != null)
+					return false;
+			}
+		} else {
+			if (other.updates != null)
+				return false;
+		}
+		return true;
+	}
+	static ClasspathLocation forSourceFolder(IContainer sourceFolder, IContainer outputFolder,
+			char[][] inclusionPatterns, char[][] exclusionPatterns, boolean ignoreOptionalProblems) {
+		return new ClasspathMultiDirectory(sourceFolder, outputFolder, inclusionPatterns, exclusionPatterns,
+				ignoreOptionalProblems);
+	}
+public static ClasspathLocation forBinaryFolder(IContainer binaryFolder, boolean isOutputFolder, AccessRuleSet accessRuleSet, IPath externalAnnotationPath, boolean autoModule) {
+	return new ClasspathDirectory(binaryFolder, isOutputFolder, accessRuleSet, externalAnnotationPath, autoModule);
 }
 
-public static ClasspathLocation forBinaryFolder(IContainer binaryFolder, boolean isOutputFolder, AccessRuleSet accessRuleSet, IPath externalAnnotationPath) {
-	return new ClasspathDirectory(binaryFolder, isOutputFolder, accessRuleSet, externalAnnotationPath);
+static ClasspathLocation forLibrary(String libraryPathname, 
+										long lastModified, 
+										AccessRuleSet accessRuleSet, 
+										IPath annotationsPath,
+										boolean autoModule,
+										String compliance) {
+	return Util.isJrt(libraryPathname) ?
+			new ClasspathJrt(libraryPathname, accessRuleSet, annotationsPath, compliance) :
+				Util.archiveFormat(libraryPathname) == Util.JMOD_FILE ?
+					new ClasspathJMod(libraryPathname, lastModified, accessRuleSet, annotationsPath) :
+			new ClasspathJar(libraryPathname, lastModified, accessRuleSet, annotationsPath, autoModule);
+
+}
+static ClasspathJrt forJrtSystem(String jdkHome, AccessRuleSet accessRuleSet, IPath annotationsPath, String release) {
+	return new ClasspathJrt(jdkHome, accessRuleSet, annotationsPath, release);
 }
 
-static ClasspathLocation forLibrary(String libraryPathname, long lastModified, AccessRuleSet accessRuleSet, IPath annotationsPath) {
-	return new ClasspathJar(libraryPathname, lastModified, accessRuleSet, annotationsPath);
+public static ClasspathLocation forLibrary(String libraryPathname, AccessRuleSet accessRuleSet, IPath annotationsPath,
+											boolean autoModule, String compliance) {
+	return forLibrary(libraryPathname, 0, accessRuleSet, annotationsPath, autoModule, compliance);
 }
 
-static ClasspathLocation forLibrary(String libraryPathname, AccessRuleSet accessRuleSet, IPath annotationsPath) {
-	return forLibrary(libraryPathname, 0, accessRuleSet, annotationsPath);
+static ClasspathLocation forLibrary(IFile library, AccessRuleSet accessRuleSet, IPath annotationsPath,
+										boolean autoModule) {
+	return new ClasspathJar(library, accessRuleSet, annotationsPath, autoModule);
 }
 
-static ClasspathLocation forLibrary(IFile library, AccessRuleSet accessRuleSet, IPath annotationsPath) {
-	return new ClasspathJar(library, accessRuleSet, annotationsPath);
-}
-
-public abstract NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String qualifiedBinaryFileName);
-
 public abstract IPath getProjectRelativePath();
 
 public boolean isOutputFolder() {
 	return false;
 }
 
-public abstract boolean isPackage(String qualifiedPackageName);
-
 public void cleanup() {
 	// free anything which is not required when the state is saved
 }
@@ -59,4 +164,11 @@
 
 public abstract String debugPathString();
 
+public char[][] singletonModuleNameIf(boolean condition) {
+	if (!condition)
+		return null;
+	if (this.module != null)
+		return new char[][] { this.module.name() };
+	return new char[][] { ModuleBinding.UNNAMED };
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.java
index 92272ef..966be5d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ClasspathMultiDirectory.java
@@ -11,8 +11,13 @@
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
 import org.eclipse.core.resources.*;
-
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.batch.BasicModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
 public class ClasspathMultiDirectory extends ClasspathDirectory {
@@ -24,7 +29,7 @@
 public boolean ignoreOptionalProblems;
 
 ClasspathMultiDirectory(IContainer sourceFolder, IContainer binaryFolder, char[][] inclusionPatterns, char[][] exclusionPatterns, boolean ignoreOptionalProblems) {
-	super(binaryFolder, true, null, null);
+	super(binaryFolder, true, null, null, false /* source never an automatic module*/);
 
 	this.sourceFolder = sourceFolder;
 	this.inclusionPatterns = inclusionPatterns;
@@ -39,17 +44,23 @@
 		this.exclusionPatterns = null;
 }
 
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof ClasspathMultiDirectory)) return false;
 
 	ClasspathMultiDirectory md = (ClasspathMultiDirectory) o;
+	// TODO: revisit this - is this really required??
+//	if (this.module != md.module)
+//		if (this.module == null || !this.module.equals(md.module))
+//			return false;
 	return this.ignoreOptionalProblems == md.ignoreOptionalProblems 
 		&& this.sourceFolder.equals(md.sourceFolder) && this.binaryFolder.equals(md.binaryFolder)
 		&& CharOperation.equals(this.inclusionPatterns, md.inclusionPatterns)
 		&& CharOperation.equals(this.exclusionPatterns, md.exclusionPatterns);
 }
 
+@Override
 protected boolean isExcluded(IResource resource) {
 	if (this.exclusionPatterns != null || this.inclusionPatterns != null)
 		if (this.sourceFolder.equals(this.binaryFolder))
@@ -57,8 +68,27 @@
 	return false;
 }
 
+@Override
 public String toString() {
 	return "Source classpath directory " + this.sourceFolder.getFullPath().toString() + //$NON-NLS-1$
 		" with " + super.toString(); //$NON-NLS-1$
 }
+
+public void acceptModuleInfo(ICompilationUnit cu, Parser parser) {
+	CompilationResult compilationResult = new CompilationResult(cu, 0, 1, 10);
+	CompilationUnitDeclaration unit = parser.parse(cu, compilationResult);
+	// Request could also come in when module-info has changed or removed.
+	if (unit.isModuleInfo() && unit.moduleDeclaration != null) {
+		this.module = new BasicModule(unit.moduleDeclaration, null);
+	}
+}
+@Override
+public void setModule(IModule mod) {
+	this.module = mod;
+}
+
+public IModule module() {
+	return this.module;
+}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.java
index 98f7b96..69dba18 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/CompilationParticipantResult.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,9 +22,11 @@
 	protected IFile[] deletedFiles; // previously generated source files that should be deleted
 	protected CategorizedProblem[] problems; // new problems to report against this compilationUnit
 	protected String[] dependencies; // fully-qualified type names of any new dependencies, each name is of the form 'p1.p2.A.B'
+	private boolean isTestCode;
 
-protected CompilationParticipantResult(SourceFile sourceFile) {
+protected CompilationParticipantResult(SourceFile sourceFile, boolean isTestCode) {
 	this.sourceFile = sourceFile;
+	this.isTestCode = isTestCode;
 	this.hasAnnotations = false;
 	this.addedFiles = null;
 	this.deletedFiles = null;
@@ -37,6 +39,7 @@
  *
  * @return the contents of the compilation unit
  */
+@Override
 public char[] getContents() {
 	return this.sourceFile.getContents();
 }
@@ -46,6 +49,7 @@
  *
  * @return the <code>IFile</code> representing the compilation unit
  */
+@Override
 public IFile getFile() {
 	return this.sourceFile.resource;
 }
@@ -57,6 +61,7 @@
  *
  * @return whether the compilation unit contained any annotations when it was compiled
  */
+@Override
 public boolean hasAnnotations() {
 	return this.hasAnnotations; // only set during processAnnotations
 }
@@ -66,6 +71,7 @@
  *
  * @param addedGeneratedFiles the added/changed files
  */
+@Override
 public void recordAddedGeneratedFiles(IFile[] addedGeneratedFiles) {
 	int length2 = addedGeneratedFiles.length;
 	if (length2 == 0) return;
@@ -83,6 +89,7 @@
  *
  * @param deletedGeneratedFiles the files that need to be deleted
  */
+@Override
 public void recordDeletedGeneratedFiles(IFile[] deletedGeneratedFiles) {
 	int length2 = deletedGeneratedFiles.length;
 	if (length2 == 0) return;
@@ -100,6 +107,7 @@
  *
  * @param typeNameDependencies the fully-qualified type names of new dependencies
  */
+@Override
 public void recordDependencies(String[] typeNameDependencies) {
 	int length2 = typeNameDependencies.length;
 	if (length2 == 0) return;
@@ -119,6 +127,7 @@
  *
  * @param newProblems the problems to report
  */
+@Override
 public void recordNewProblems(CategorizedProblem[] newProblems) {
 	int length2 = newProblems.length;
 	if (length2 == 0) return;
@@ -140,8 +149,13 @@
 	this.dependencies = null;
 }
 
+@Override
 public String toString() {
 	return this.sourceFile.toString();
 }
 
+@Override
+public boolean isTestCode() {
+	return this.isTestCode;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.java
index 1fc0f15..d025edd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ImageBuilderInternalException.java
@@ -29,6 +29,7 @@
 	return this.coreException;
 }
 
+@Override
 public void printStackTrace() {
 	if (this.coreException != null) {
 		System.err.println(this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.java
index df1150e..80786d6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/IncrementalImageBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,10 +17,12 @@
 import org.aspectj.org.eclipse.jdt.core.compiler.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Messages;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -34,36 +36,52 @@
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class IncrementalImageBuilder extends AbstractImageBuilder {
 
-protected ArrayList sourceFiles;
-protected ArrayList previousSourceFiles;
-protected StringSet qualifiedStrings;
-protected StringSet simpleStrings;
-protected StringSet rootStrings;
+protected LinkedHashSet<SourceFile> sourceFiles;
+protected LinkedHashSet<SourceFile> previousSourceFiles;
+protected Set<String> qualifiedStrings;
+protected Set<String> simpleStrings;
+protected Set<String> rootStrings;
 protected SimpleLookupTable secondaryTypesToRemove;
 protected boolean hasStructuralChanges;
-protected int compileLoop;
 protected boolean makeOutputFolderConsistent;
 
+private IncrementalImageBuilder testImageBuilder;
+
 public static int MaxCompileLoop = 5; // perform a full build if it takes more than ? incremental compile loops
 
-protected IncrementalImageBuilder(JavaBuilder javaBuilder, State buildState) {
-	super(javaBuilder, true, buildState);
+protected IncrementalImageBuilder(JavaBuilder javaBuilder, State buildState, CompilationGroup compilationGroup) {
+	super(javaBuilder, true, buildState, compilationGroup);
 	this.nameEnvironment.isIncrementalBuild = true;
 	this.makeOutputFolderConsistent = JavaCore.ENABLED.equals(
 		javaBuilder.javaProject.getOption(JavaCore.CORE_JAVA_BUILD_RECREATE_MODIFIED_CLASS_FILES_IN_OUTPUT_FOLDER, true));
+	if (compilationGroup == CompilationGroup.MAIN) {
+		final IncrementalImageBuilder builder = new IncrementalImageBuilder(javaBuilder, this.newState,
+				CompilationGroup.TEST);
+		if (builder.sourceLocations.length > 0) {
+			this.testImageBuilder = builder;
+			this.testImageBuilder.resetCollections();
+		}
+	}
 }
 
 protected IncrementalImageBuilder(JavaBuilder javaBuilder) {
-	this(javaBuilder, null);
+	this(javaBuilder, null, CompilationGroup.MAIN);
 	this.newState.copyFrom(javaBuilder.lastState);
 }
 
-protected IncrementalImageBuilder(BatchImageBuilder batchBuilder) {
-	this(batchBuilder.javaBuilder, batchBuilder.newState);
+protected IncrementalImageBuilder(BatchImageBuilder batchBuilder, CompilationGroup compilationGroup) {
+	this(batchBuilder.javaBuilder, batchBuilder.newState, compilationGroup);
 	resetCollections();
 }
 
 public boolean build(SimpleLookupTable deltas) {
+	if(this.sourceLocations.length == 0) {
+		if (this.testImageBuilder != null) {
+			return this.testImageBuilder.build(deltas);
+		} else {
+			return true;
+		}
+	}
 	// initialize builder
 	// walk this project's deltas, find changed source files
 	// walk prereq projects' deltas, find changed class files & add affected source files
@@ -82,7 +100,7 @@
 
 		this.notifier.subTask(Messages.build_analyzingDeltas);
 		if (this.javaBuilder.hasBuildpathErrors()) {
-			// if a mssing class file was detected in the last build, a build state was saved since its no longer fatal
+			// if a missing class file was detected in the last build, a build state was saved since its no longer fatal
 			// but we need to rebuild every source file since problems were not recorded
 			// AND to avoid the infinite build scenario if this project is involved in a cycle, see bug 160550
 			// we need to avoid unnecessary deltas caused by doing a full build in this case
@@ -93,8 +111,12 @@
 			this.notifier.updateProgressDelta(0.25f);
 		} else {
 			IResourceDelta sourceDelta = (IResourceDelta) deltas.get(this.javaBuilder.currentProject);
-			if (sourceDelta != null)
-				if (!findSourceFiles(sourceDelta)) return false;
+			if (sourceDelta != null) {
+				if (!findSourceFiles(sourceDelta)) return this.testImageBuilder != null ? this.testImageBuilder.build(deltas) : false;
+				if(this.testImageBuilder != null) {
+					this.testImageBuilder.findSourceFiles(sourceDelta);
+				}
+			}
 			this.notifier.updateProgressDelta(0.10f);
 
 			Object[] keyTable = deltas.keyTable;
@@ -115,26 +137,11 @@
 			this.notifier.updateProgressDelta(0.05f);
 		}
 
-		this.compileLoop = 0;
-		float increment = 0.40f;
-		while (this.sourceFiles.size() > 0) { // added to in acceptResult
-			if (++this.compileLoop > MaxCompileLoop) {
-				if (JavaBuilder.DEBUG)
-					System.out.println("ABORTING incremental build... exceeded loop count"); //$NON-NLS-1$
-				return false;
-			}
-			this.notifier.checkCancel();
-
-			SourceFile[] allSourceFiles = new SourceFile[this.sourceFiles.size()];
-			this.sourceFiles.toArray(allSourceFiles);
-			resetCollections();
-
-			this.workQueue.addAll(allSourceFiles);
-			this.notifier.setProgressPerCompilationUnit(increment / allSourceFiles.length);
-			increment = increment / 2;
-			compile(allSourceFiles);
-			removeSecondaryTypes();
-			addAffectedSourceFiles();
+		if (incrementalBuildLoop() == false) {
+			return false;
+		}
+		if (this.testImageBuilder != null && this.testImageBuilder.incrementalBuildLoop() == false) {
+			return false;
 		}
 		if (this.hasStructuralChanges && this.javaBuilder.javaProject.hasCycleMarker())
 			this.javaBuilder.mustPropagateStructuralChanges();
@@ -148,6 +155,34 @@
 		throw internalException(e);
 	} finally {
 		cleanUp();
+		if (this.testImageBuilder != null) {
+			this.testImageBuilder.cleanUp();
+		}
+	}
+	return true;
+}
+
+private boolean incrementalBuildLoop() throws CoreException {
+	int compileLoop = 0;
+	float increment = 0.40f;
+	while (this.sourceFiles.size() > 0) { // added to in acceptResult
+		if (++compileLoop > MaxCompileLoop) {
+			if (JavaBuilder.DEBUG)
+				System.out.println("ABORTING incremental build... exceeded loop count"); //$NON-NLS-1$
+			return false;
+		}
+		this.notifier.checkCancel();
+
+		SourceFile[] allSourceFiles = new SourceFile[this.sourceFiles.size()];
+		this.sourceFiles.toArray(allSourceFiles);
+		resetCollections();
+
+		this.workQueue.addAll(allSourceFiles);
+		this.notifier.setProgressPerCompilationUnit(increment / allSourceFiles.length);
+		increment = increment / 2;
+		compile(allSourceFiles);
+		removeSecondaryTypes();
+		addAffectedSourceFiles();
 	}
 	return true;
 }
@@ -181,20 +216,22 @@
 }
 
 protected void addAffectedSourceFiles() {
-	if (this.qualifiedStrings.elementSize == 0 && this.simpleStrings.elementSize == 0) return;
-
+	if (this.qualifiedStrings.size() == 0 && this.simpleStrings.size() == 0) return;
+	if(this.testImageBuilder != null) {
+		this.testImageBuilder.addAffectedSourceFiles(this.qualifiedStrings, this.simpleStrings, this.rootStrings, null);
+	}
 	addAffectedSourceFiles(this.qualifiedStrings, this.simpleStrings, this.rootStrings, null);
 }
 
-protected void addAffectedSourceFiles(StringSet qualifiedSet, StringSet simpleSet, StringSet rootSet, StringSet affectedTypes) {
+protected void addAffectedSourceFiles(Set<String> qualifiedSet, Set<String> simpleSet, Set<String> rootSet, Set<String> affectedTypes) {
 	// the qualifiedStrings are of the form 'p1/p2' & the simpleStrings are just 'X'
 	char[][][] internedQualifiedNames = ReferenceCollection.internQualifiedNames(qualifiedSet);
 	// if a well known qualified name was found then we can skip over these
-	if (internedQualifiedNames.length < qualifiedSet.elementSize)
+	if (internedQualifiedNames.length < qualifiedSet.size())
 		internedQualifiedNames = null;
 	char[][] internedSimpleNames = ReferenceCollection.internSimpleNames(simpleSet, true);
 	// if a well known name was found then we can skip over these
-	if (internedSimpleNames.length < simpleSet.elementSize)
+	if (internedSimpleNames.length < simpleSet.size())
 		internedSimpleNames = null;
 	char[][] internedRootNames = ReferenceCollection.internSimpleNames(rootSet, false);
 
@@ -203,7 +240,7 @@
 	next : for (int i = 0, l = valueTable.length; i < l; i++) {
 		String typeLocator = (String) keyTable[i];
 		if (typeLocator != null) {
-			if (affectedTypes != null && !affectedTypes.includes(typeLocator)) continue next;
+			if (affectedTypes != null && !affectedTypes.contains(typeLocator)) continue next;
 			ReferenceCollection refs = (ReferenceCollection) valueTable[i];
 			if (refs.includes(internedQualifiedNames, internedSimpleNames, internedRootNames)) {
 				IFile file = this.javaBuilder.currentProject.getFile(typeLocator);
@@ -225,7 +262,7 @@
 	addDependentsOf(path, isStructuralChange, this.qualifiedStrings, this.simpleStrings, this.rootStrings);
 }
 
-protected void addDependentsOf(IPath path, boolean isStructuralChange, StringSet qualifiedNames, StringSet simpleNames, StringSet rootNames) {
+protected void addDependentsOf(IPath path, boolean isStructuralChange, Set<String> qualifiedNames, Set<String> simpleNames, Set<String> rootNames) {
 	path = path.setDevice(null);
 	if (isStructuralChange) {
 		String last = path.lastSegment();
@@ -290,6 +327,7 @@
 	return true;
 }
 
+@Override
 protected void cleanUp() {
 	super.cleanUp();
 
@@ -300,9 +338,9 @@
 	this.rootStrings = null;
 	this.secondaryTypesToRemove = null;
 	this.hasStructuralChanges = false;
-	this.compileLoop = 0;
 }
 
+@Override
 protected void compile(SourceFile[] units, SourceFile[] additionalUnits, boolean compilingFirstGroup) {
 	if (compilingFirstGroup && additionalUnits != null) {
 		// add any source file from additionalUnits to units if it defines secondary types
@@ -330,6 +368,7 @@
 	super.compile(units, additionalUnits, compilingFirstGroup);
 }
 
+@Override
 protected void deleteGeneratedFiles(IFile[] deletedGeneratedFiles) {
 	// delete generated files and recompile any affected source files
 	try {
@@ -418,7 +457,7 @@
 							System.out.println("Skipped dependents of added package " + packageName); //$NON-NLS-1$
 					} else {
 						// see if the package still exists on the classpath
-						if (!this.nameEnvironment.isPackage(packageName)) {
+						if (!this.nameEnvironment.isPackage(packageName, ModuleBinding.ANY)) {
 							if (JavaBuilder.DEBUG)
 								System.out.println("Found removed package " + packageName); //$NON-NLS-1$
 							addDependentsOf(packagePath, false);
@@ -635,7 +674,8 @@
 							return true; // skip it since it really isn't changed
 						if (JavaBuilder.DEBUG)
 							System.out.println("Compile this changed source file " + typeLocator); //$NON-NLS-1$
-						this.sourceFiles.add(new SourceFile((IFile) resource, md, true));
+						SourceFile unit = new SourceFile((IFile) resource, md, true);
+						this.sourceFiles.add(unit);
 				}
 				return true;
 			} else if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(resourceName)) {
@@ -694,6 +734,7 @@
 	return true;
 }
 
+@Override
 protected void finishedWith(String sourceLocator, CompilationResult result, char[] mainTypeName, ArrayList definedTypeNames, ArrayList duplicateTypeNames) {
 	char[][] previousTypeNames = this.newState.getDefinedTypeNamesFor(sourceLocator);
 	if (previousTypeNames == null)
@@ -721,6 +762,7 @@
 	super.finishedWith(sourceLocator, result, mainTypeName, definedTypeNames, duplicateTypeNames);
 }
 
+@Override
 protected void processAnnotationResults(CompilationParticipantResult[] results) {
 	for (int i = results.length; --i >= 0;) {
 		CompilationParticipantResult result = results[i];
@@ -779,15 +821,14 @@
 
 protected void resetCollections() {
 	if (this.sourceFiles == null) {
-		this.sourceFiles = new ArrayList(33);
+		this.sourceFiles = new LinkedHashSet<>(33);
 		this.previousSourceFiles = null;
-		this.qualifiedStrings = new StringSet(3);
-		this.simpleStrings = new StringSet(3);
-		this.rootStrings = new StringSet(3);
+		this.qualifiedStrings = new HashSet<>(3);
+		this.simpleStrings = new HashSet<>(3);
+		this.rootStrings = new HashSet<>(3);
 		this.hasStructuralChanges = false;
-		this.compileLoop = 0;
 	} else {
-		this.previousSourceFiles = this.sourceFiles.isEmpty() ? null : (ArrayList) this.sourceFiles.clone();
+		this.previousSourceFiles = this.sourceFiles.isEmpty() ? null : (LinkedHashSet) this.sourceFiles.clone();
 
 		this.sourceFiles.clear();
 		this.qualifiedStrings.clear();
@@ -797,10 +838,17 @@
 	}
 }
 
+@Override
 protected void updateProblemsFor(SourceFile sourceFile, CompilationResult result) throws CoreException {
 	if (CharOperation.equals(sourceFile.getMainTypeName(), TypeConstants.PACKAGE_INFO_NAME)) {
 		IResource pkgResource = sourceFile.resource.getParent();
-		pkgResource.deleteMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
+		IMarker[] findMarkers = pkgResource.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, false,
+				IResource.DEPTH_ZERO);
+		if (findMarkers.length > 0) {
+			// markers must be from the time when no package-info.java existed.
+			// trigger a full build, so marker is cleared also from packages in other source folders
+			throw new AbortCompilation(true, new AbortIncrementalBuildException(new String(TypeConstants.PACKAGE_INFO_NAME)));
+		}
 	}
 	IMarker[] markers = JavaBuilder.getProblemsFor(sourceFile.resource);
 	CategorizedProblem[] problems = result.getProblems();
@@ -811,6 +859,7 @@
 	storeProblemsFor(sourceFile, problems);
 }
 
+@Override
 protected void updateTasksFor(SourceFile sourceFile, CompilationResult result) throws CoreException {
 	IMarker[] markers = JavaBuilder.getTasksFor(sourceFile.resource);
 	CategorizedProblem[] tasks = result.getTasks();
@@ -823,6 +872,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.core.builder.AbstractImageBuilder#writeClassFileContents(org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile, org.eclipse.core.resources.IFile, java.lang.String, boolean, org.aspectj.org.eclipse.jdt.internal.core.builder.SourceFile)
  */
+@Override
 protected void writeClassFileContents(ClassFile classfile, IFile file, String qualifiedFileName, boolean isTopLevelType, SourceFile compilationUnit) throws CoreException {
 	// Before writing out the class file, compare it to the previous file
 	// If structural changes occurred then add dependent source files
@@ -910,6 +960,7 @@
 	return true;
 }
 
+@Override
 public String toString() {
 	return "incremental image builder for:\n\tnew state: " + this.newState; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
index f531a87..d6aab58 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/JavaBuilder.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,9 +32,11 @@
 JavaProject javaProject;
 IWorkspaceRoot workspaceRoot;
 CompilationParticipant[] participants;
-protected NameEnvironment nameEnvironment; // AspectJ Extension - made protected
+// AspectJ both made protected
+protected NameEnvironment nameEnvironment;
+protected NameEnvironment testNameEnvironment;
 SimpleLookupTable binaryLocationsPerProject; // maps a project to its binary resources (output folders, class folders, zip/jar files)
-public State lastState; // AspectJ Extension - made public
+public State lastState;
 protected BuildNotifier notifier; // AspectJ Extension - made protected
 char[][] extraResourceFileFilters;
 String[] extraResourceFolderFilters;
@@ -47,7 +50,7 @@
  * This list is used to reset the JavaModel.existingExternalFiles cache when a build cycle begins
  * so that deleted external jars are discovered.
  */
-static ArrayList builtProjects = null;
+static LinkedHashSet<String> builtProjects;
 
 public static IMarker[] getProblemsFor(IResource resource) {
 	try {
@@ -154,6 +157,7 @@
 	((State) state).write(out);
 }
 
+@Override
 protected IProject[] build(int kind, Map ignored, IProgressMonitor monitor) throws CoreException {
 	this.currentProject = getProject();
 	if (this.currentProject == null || !this.currentProject.isAccessible()) return new IProject[0];
@@ -184,7 +188,7 @@
 					if (DEBUG)
 						System.out.println("JavaBuilder: Performing full build since classpath has changed"); //$NON-NLS-1$
 					buildAll();
-				} else if (this.nameEnvironment.sourceLocations.length > 0) {
+				} else if (this.nameEnvironment.sourceLocations.length > 0 || this.testNameEnvironment.sourceLocations.length > 0) {
 					// if there is no source to compile & no classpath changes then we are done
 					SimpleLookupTable deltas = findDeltas();
 					if (deltas == null) {
@@ -258,14 +262,24 @@
 	if (DEBUG && this.lastState != null)
 		System.out.println("JavaBuilder: Clearing last state : " + this.lastState); //$NON-NLS-1$
 	clearLastState();
-	BatchImageBuilder imageBuilder = getBatchImageBuilder(this, true); // AspectJ Extension - use factory, was 'new BatchImageBuilder(this,true)'
+	BatchImageBuilder imageBuilder = getBatchImageBuilder(this, true, CompilationGroup.MAIN); // AspectJ Extension - use factory, was 'new BatchImageBuilder(this,true)'
+	BatchImageBuilder testImageBuilder  = getBatchImageBuilder2(imageBuilder, true, CompilationGroup.TEST); // AspectJ Extension - use factory, was new BatchImageBuilder(imageBuilder, true, CompilationGroup.TEST);
 	imageBuilder.build();
+	if (testImageBuilder.sourceLocations.length > 0) {
+		// Note: testImageBuilder *MUST* have a separate output folder, or it will delete the files created by imageBuilder.build() 
+		testImageBuilder.build();
+	} else {
+		testImageBuilder.cleanUp();
+	}
 	recordNewState(imageBuilder.newState);
 }
 
 // AspectJ Extension
-protected BatchImageBuilder getBatchImageBuilder(JavaBuilder instance,boolean b) {
-	return new BatchImageBuilder(instance,b);
+protected BatchImageBuilder getBatchImageBuilder(JavaBuilder instance,boolean b, CompilationGroup compilationGroup) {
+	return new BatchImageBuilder(instance, b, compilationGroup);
+}
+protected BatchImageBuilder getBatchImageBuilder2(BatchImageBuilder instance,boolean b, CompilationGroup compilationGroup) {
+	return new BatchImageBuilder(instance, b, compilationGroup);
 }
 // End AspectJ Extension
 
@@ -290,6 +304,7 @@
 }
 // End AspectJ Extension
 
+@Override
 protected void clean(IProgressMonitor monitor) throws CoreException {
 	this.currentProject = getProject();
 	if (this.currentProject == null || !this.currentProject.isAccessible()) return;
@@ -307,7 +322,8 @@
 			System.out.println("JavaBuilder: Clearing last state as part of clean : " + this.lastState); //$NON-NLS-1$
 		clearLastState();
 		removeProblemsAndTasksFor(this.currentProject);
-		new BatchImageBuilder(this, false).cleanOutputFolders(false);
+		new BatchImageBuilder(this, false, CompilationGroup.MAIN).cleanOutputFolders(false);
+		new BatchImageBuilder(this, false, CompilationGroup.TEST).cleanOutputFolders(false);
 	} catch (CoreException e) {
 		Util.log(e, "JavaBuilder handling CoreException while cleaning: " + this.currentProject.getName()); //$NON-NLS-1$
 		createInconsistentBuildMarker(e);
@@ -346,6 +362,7 @@
 private void cleanup() {
 	this.participants = null;
 	this.nameEnvironment = null;
+	this.testNameEnvironment = null;
 	this.binaryLocationsPerProject = null;
 	this.lastState = null;
 	this.notifier = null;
@@ -448,7 +465,7 @@
 private IProject[] getRequiredProjects(boolean includeBinaryPrerequisites) {
 	if (this.javaProject == null || this.workspaceRoot == null) return new IProject[0];
 
-	ArrayList projects = new ArrayList();
+	LinkedHashSet<IProject> projects = new LinkedHashSet<>();
 	ExternalFoldersManager externalFoldersManager = JavaModelManager.getExternalManager();
 	try {
 		IClasspathEntry[] entries = this.javaProject.getExpandedClasspath();
@@ -495,8 +512,12 @@
 }
 
 private boolean hasClasspathChanged() {
-	ClasspathMultiDirectory[] newSourceLocations = this.nameEnvironment.sourceLocations;
-	ClasspathMultiDirectory[] oldSourceLocations = this.lastState.sourceLocations;
+	return hasClasspathChanged(CompilationGroup.MAIN) || hasClasspathChanged(CompilationGroup.TEST);	
+}
+
+private boolean hasClasspathChanged(CompilationGroup compilationGroup) {
+	ClasspathMultiDirectory[] newSourceLocations = (compilationGroup == CompilationGroup.MAIN ? this.nameEnvironment : this.testNameEnvironment).sourceLocations;
+	ClasspathMultiDirectory[] oldSourceLocations = compilationGroup == CompilationGroup.MAIN ? this.lastState.sourceLocations : this.lastState.testSourceLocations;
 	int newLength = newSourceLocations.length;
 	int oldLength = oldSourceLocations.length;
 	int n, o;
@@ -544,8 +565,8 @@
 		return true;
 	}
 
-	ClasspathLocation[] newBinaryLocations = this.nameEnvironment.binaryLocations;
-	ClasspathLocation[] oldBinaryLocations = this.lastState.binaryLocations;
+	ClasspathLocation[] newBinaryLocations = (compilationGroup == CompilationGroup.MAIN ? this.nameEnvironment : this.testNameEnvironment).binaryLocations;
+	ClasspathLocation[] oldBinaryLocations = compilationGroup == CompilationGroup.MAIN ? this.lastState.binaryLocations : this.lastState.testBinaryLocations;
 	newLength = newBinaryLocations.length;
 	oldLength = oldBinaryLocations.length;
 	for (n = o = 0; n < newLength && o < oldLength; n++, o++) {
@@ -612,13 +633,14 @@
 		// Flush the existing external files cache if this is the beginning of a build cycle
 		String projectName = this.currentProject.getName();
 		if (builtProjects == null || builtProjects.contains(projectName)) {
-			builtProjects = new ArrayList();
+			builtProjects = new LinkedHashSet();
 		}
 		builtProjects.add(projectName);
 	}
 
 	this.binaryLocationsPerProject = new SimpleLookupTable(3);
-	this.nameEnvironment = new NameEnvironment(this.workspaceRoot, this.javaProject, this.binaryLocationsPerProject, this.notifier);
+	this.nameEnvironment = new NameEnvironment(this.workspaceRoot, this.javaProject, this.binaryLocationsPerProject, this.notifier, CompilationGroup.MAIN);
+	this.testNameEnvironment = new NameEnvironment(this.workspaceRoot, this.javaProject, this.binaryLocationsPerProject, this.notifier, CompilationGroup.TEST);
 
 	if (forBuild) {
 		String filterSequence = this.javaProject.getOption(JavaCore.CORE_JAVA_BUILD_RESOURCE_COPY_FILTER, true);
@@ -792,6 +814,7 @@
 /**
  * String representation for debugging purposes
  */
+@Override
 public String toString() {
 	return this.currentProject == null
 		? "JavaBuilder for unknown project" //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.java
new file mode 100644
index 0000000..907455d
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleEntryProcessor.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.builder;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.aspectj.org.eclipse.jdt.core.IClasspathAttribute;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+import org.aspectj.org.eclipse.jdt.internal.core.ClasspathEntry;
+import org.aspectj.org.eclipse.jdt.internal.core.ModuleUpdater;
+
+/** 
+ * Collection of functions to process classpath attributes relating to modules (from JEP 261).
+ * For <code>add-exports</code> and <code>add-reads</code> see {@link ModuleUpdater}.
+ */
+class ModuleEntryProcessor {
+
+	// ------------- patch-module: ---------------
+
+	/**
+	 * Establish that an entry with <code>patch-module</code> appears at position 0, if any.
+	 * This ensures that in the first iteration we find the patchedModule (see e.g., collectModuleEntries()),
+	 * which later can be combined into each src-entry (see {@link #combinePatchIntoModuleEntry(ClasspathLocation, IModule, Map)}).
+	 * @see IClasspathAttribute#PATCH_MODULE
+	 */
+	static String pushPatchToFront(IClasspathEntry[] classpathEntries) {
+		String patchedModule = null;
+		for (int i = 0; i < classpathEntries.length; i++) {
+			IClasspathEntry entry = classpathEntries[i];
+			patchedModule = ClasspathEntry.getExtraAttribute(entry, IClasspathAttribute.PATCH_MODULE);
+			if (patchedModule != null) {
+				if (i > 0) {
+					IClasspathEntry tmp = classpathEntries[0];
+					classpathEntries[0] = entry;
+					classpathEntries[i] = tmp;
+				}
+				return patchedModule;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Given that sourceLocation belongs to the project that patches another module, combine this source location
+	 * into the existing {@link IModulePathEntry} for the module to be patched.
+	 * @param sourceLocation source location of the patch project
+	 * @param patchedModule module defined in the target location
+	 * @param moduleEntries map of known module locations
+	 */
+	static void combinePatchIntoModuleEntry(ClasspathLocation sourceLocation, IModule patchedModule, Map<String, IModulePathEntry> moduleEntries) {
+		sourceLocation.setModule(patchedModule);
+		String patchedModuleName = String.valueOf(patchedModule.name());
+		IModulePathEntry mainEntry = moduleEntries.get(patchedModuleName);
+		ClasspathLocation[] combinedLocations = null;
+		if (mainEntry instanceof ModulePathEntry.Multi) {
+			((ModulePathEntry.Multi) mainEntry).addPatchLocation(sourceLocation);
+			return;
+		} else if (mainEntry instanceof ClasspathJrt) {
+			combinedLocations = new ClasspathLocation[] { (ClasspathLocation) mainEntry, sourceLocation };
+			moduleEntries.put(patchedModuleName, new ModulePathEntry.Multi(null, patchedModule, combinedLocations));
+			return;
+		} else if (mainEntry instanceof ModulePathEntry) {
+			ClasspathLocation[] mainLocs = ((ModulePathEntry) mainEntry).locations;
+			combinedLocations = Arrays.copyOf(mainLocs, mainLocs.length+1);
+			combinedLocations[combinedLocations.length-1] = sourceLocation;
+		} else if (mainEntry instanceof ClasspathLocation) {
+			combinedLocations = new ClasspathLocation[] { (ClasspathLocation) mainEntry, sourceLocation };
+		} else {
+			throw new IllegalStateException("Cannot patch the module of classpath entry "+mainEntry); //$NON-NLS-1$
+		}
+		moduleEntries.put(patchedModuleName, new ModulePathEntry(null, patchedModule, combinedLocations));
+	}
+
+	// ------------- limit-modules: ---------------
+
+	/**
+	 * Reads a <code>limit-modules</code> attribute
+	 * @param entry the classpath entry to process
+	 * @return a set of module names or <code>null</code> if the classpath attribute was not set.
+	 * @see IClasspathAttribute#LIMIT_MODULES
+	 */
+	static Set<String> computeLimitModules(ClasspathEntry entry) {
+		String extraAttribute = ClasspathEntry.getExtraAttribute(entry, IClasspathAttribute.LIMIT_MODULES);
+		if (extraAttribute == null)
+			return null;
+		
+		// collect the transitive closure of modules contained in limitSet
+		return new LinkedHashSet<>(Arrays.asList(extraAttribute.split(","))); //$NON-NLS-1$
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.java
new file mode 100644
index 0000000..a39b0b9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModuleInfoBuilder.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.builder;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.util.IAttributeNamesConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.Compiler;
+import org.aspectj.org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerRequestor;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSetOfCharArray;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelStatus;
+import org.aspectj.org.eclipse.jdt.internal.core.ModuleUpdater;
+
+/** Implementation of {@link org.aspectj.org.eclipse.jdt.core.JavaCore#compileWithAttributes(IModuleDescription, Map)}. */
+public class ModuleInfoBuilder {
+	
+	static class BytecodeCollector implements ICompilerRequestor {
+		byte[] bytes;
+
+		@Override
+		public void acceptResult(CompilationResult result) {
+			assert this.bytes == null : "duplicate result"; //$NON-NLS-1$
+			ClassFile[] classFiles = result.getClassFiles();
+			assert classFiles.length == 1;
+			this.bytes = classFiles[0].getBytes();
+		}
+	}
+	
+	public byte[] compileWithAttributes(IModuleDescription module, Map<String,String> classFileAttributes) throws JavaModelException {
+		IJavaProject javaProject = module.getJavaProject();
+		NameEnvironment nameEnvironment = new NameEnvironment(javaProject, CompilationGroup.MAIN);
+
+		addModuleUpdates(module, nameEnvironment.moduleUpdater, classFileAttributes);
+		
+		ClasspathMultiDirectory sourceLocation = getSourceLocation(javaProject, nameEnvironment, module); 
+		IFile file = (IFile) module.getCompilationUnit().getCorrespondingResource();
+		ICompilationUnit[] sourceUnits = { new SourceFile(file, sourceLocation) };
+		BytecodeCollector collector = new BytecodeCollector();
+		Compiler newCompiler = new Compiler(
+									nameEnvironment,
+									DefaultErrorHandlingPolicies.exitOnFirstError(),
+									new CompilerOptions(javaProject.getOptions(true)),
+									collector,
+									ProblemFactory.getProblemFactory(Locale.getDefault()));
+		newCompiler.compile(sourceUnits);
+		return collector.bytes;
+	}
+
+	private void addModuleUpdates(IModuleDescription module, ModuleUpdater moduleUpdater, Map<String,String> classFileAttributes) {
+		String mainClassName = classFileAttributes.remove(String.valueOf(IAttributeNamesConstants.MODULE_MAIN_CLASS));
+		if (mainClassName != null) {
+			moduleUpdater.addModuleUpdate(module.getElementName(), m -> m.setMainClassName(mainClassName.toCharArray()), UpdateKind.MODULE);
+		}
+		String modulePackageNames = classFileAttributes.remove(String.valueOf(IAttributeNamesConstants.MODULE_PACKAGES));
+		if (modulePackageNames != null) {
+			SimpleSetOfCharArray namesSet = new SimpleSetOfCharArray();
+			String[] providedNames = modulePackageNames.split(","); //$NON-NLS-1$
+			for (int i = 0; i < providedNames.length; i++) {
+				namesSet.add(providedNames[i].trim().toCharArray());
+			}
+			moduleUpdater.addModuleUpdate(module.getElementName(),  m -> m.setPackageNames(namesSet), UpdateKind.MODULE);
+		}
+		if (!classFileAttributes.isEmpty()) {
+			throw new IllegalArgumentException("Unsupported key(s): "+classFileAttributes.keySet().toString()); //$NON-NLS-1$
+		}
+	}
+
+	private ClasspathMultiDirectory getSourceLocation(IJavaProject javaProject, NameEnvironment nameEnvironment, IModuleDescription module)
+			throws JavaModelException {
+		IPackageFragmentRoot root = (IPackageFragmentRoot) module.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+		IResource rootResource = root.getCorrespondingResource(); 
+		for (ClasspathMultiDirectory sourceLocation : nameEnvironment.sourceLocations) {
+			if (sourceLocation.sourceFolder.equals(rootResource)) {
+				return sourceLocation;
+			}
+		}
+		throw new JavaModelException(new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_NOT_ON_CLASSPATH, module));
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.java
new file mode 100644
index 0000000..1f460c0
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ModulePathEntry.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2016, 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.builder;
+
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IMultiModuleEntry;
+
+/**
+ * Represents a project on the module path.
+ */
+public class ModulePathEntry implements IModulePathEntry {
+
+	private IPath path;
+	/*private*/ ClasspathLocation[] locations;
+	IModule module;
+	boolean isAutomaticModule;
+
+	ModulePathEntry(IPath path, IModule module, ClasspathLocation[] locations) {
+		this.path = path;
+		this.locations = locations;
+		this.module = module;
+		this.isAutomaticModule = module.isAutomatic();
+		initializeModule();
+	}
+	public ModulePathEntry(IPath path, ClasspathLocation location) {
+		this.path = path;
+		initModule(location);
+		this.locations = new ClasspathLocation[] {location};
+	}
+	public IPath getPath() {
+		return this.path;
+	}
+	public ClasspathLocation[] getClasspathLocations() {
+		return this.locations;
+	}
+
+	@Override
+	public IModule getModule() {
+		//
+		return this.module;
+	}
+
+	@Override
+	public boolean isAutomaticModule() {
+		return this.isAutomaticModule;
+	}
+	public static IModule getAutomaticModule(ClasspathLocation location) {
+		if (location instanceof ClasspathJar) {
+			ClasspathJar classpathJar = (ClasspathJar) location;
+			return IModule.createAutomatic(classpathJar.zipFilename, true, classpathJar.getManifest());
+		}
+		if (location instanceof ClasspathDirectory) {
+			return IModule.createAutomatic(((ClasspathDirectory) location).binaryFolder.getName(), false, null);
+		}
+		return null;
+	}
+	private void initModule(ClasspathLocation location) {
+		IModule mod = null;
+		if (location instanceof ClasspathJar) {
+			mod = ((ClasspathJar) location).initializeModule();
+		} else if (location instanceof ClasspathDirectory){
+			mod = ((ClasspathDirectory) location).initializeModule();
+		}
+		if (mod != null) {
+			this.module = mod;
+			this.isAutomaticModule = false;
+		} else {
+			this.module = getAutomaticModule(location);
+			this.isAutomaticModule = true;
+		}
+		location.setModule(this.module);
+	}
+
+	// TODO: This is only needed because SourceFile.module() uses the module set on the location
+	// Once we have a mechanism to map a folder to a module path entry, this should no longer be
+	// needed
+	private void initializeModule() {
+		for (int i = 0; i < this.locations.length; i++) {
+			this.locations[i].setModule(this.module);
+		}
+	}
+	@Override
+	public char[][] getModulesDeclaringPackage(String qualifiedPackageName, String moduleName) {
+		if (moduleName != null && ((this.module == null) || !moduleName.equals(String.valueOf(this.module.name()))))
+			return null;
+		// search all locations
+		char[][] names = CharOperation.NO_CHAR_CHAR;
+		for (ClasspathLocation cp : this.locations) {
+			char[][] declaringModules = cp.getModulesDeclaringPackage(qualifiedPackageName, moduleName);
+			if (declaringModules != null)
+				names = CharOperation.arrayConcat(names, declaringModules);
+		}
+		return names == CharOperation.NO_CHAR_CHAR ? null : names;
+	}
+	@Override
+	public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+		for (ClasspathLocation cp : this.locations) {
+			if (cp.hasCompilationUnit(qualifiedPackageName, moduleName))
+				return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Combines an IMultiModuleEntry with further locations in order to support patch-module.
+	 * Implemented by adding IMultiModuleEntry functionality to ModulePathEntry.
+	 */
+	static public class Multi extends ModulePathEntry implements IMultiModuleEntry {
+
+		Multi(IPath path, IModule module, ClasspathLocation[] locations) {
+			super(path, module, locations);
+		}
+
+		void addPatchLocation(ClasspathLocation location) {
+			this.locations = Arrays.copyOf(this.locations, this.locations.length+1);
+			this.locations[this.locations.length-1] = location;
+			location.setModule(this.module);
+		}
+
+		@Override
+		public IModule getModule(char[] name) {
+			for (ClasspathLocation loc : this.locations) {
+				if (loc instanceof IMultiModuleEntry) {
+					IModule mod = ((IMultiModuleEntry) loc).getModule(name);
+					if (mod != null)
+						return mod;
+				} else {
+					IModule mod = loc.getModule();
+					if (CharOperation.equals(mod.name(), name))
+						return mod;
+				}
+			}
+			return null;
+		}
+
+		@Override
+		public Collection<String> getModuleNames(Collection<String> limitModules) {
+			Set<String> result = new HashSet<>();
+			for (ClasspathLocation loc : this.locations) {
+				if (loc instanceof IMultiModuleEntry)
+					result.addAll(((IMultiModuleEntry) loc).getModuleNames(limitModules));
+				else
+					result.add(String.valueOf(loc.getModule().name()));
+			}
+			return result;
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.java
index 32a71ed..1e23eaf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,36 +21,48 @@
 
 import org.aspectj.org.eclipse.jdt.core.*;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.UpdateKind;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.*;
 
 import java.io.*;
 import java.util.*;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
-public class NameEnvironment implements INameEnvironment, SuffixConstants {
+public class NameEnvironment implements IModuleAwareNameEnvironment, SuffixConstants {
 
 boolean isIncrementalBuild;
 ClasspathMultiDirectory[] sourceLocations;
 ClasspathLocation[] binaryLocations;
+Map<String,IModulePathEntry> modulePathEntries; // is null when performing a non-modular compilation
 BuildNotifier notifier;
 
-SimpleSet initialTypeNames; // assumed that each name is of the form "a/b/ClassName"
+SimpleSet initialTypeNames; // assumed that each name is of the form "a/b/ClassName", or, if a module is given: "my.mod:a/b/ClassName"
 SimpleLookupTable additionalUnits;
+private CompilationGroup compilationGroup;
+/** Tasks resulting from add-reads or add-exports classpath attributes. */
+ModuleUpdater moduleUpdater;
 
-NameEnvironment(IWorkspaceRoot root, JavaProject javaProject, SimpleLookupTable binaryLocationsPerProject, BuildNotifier notifier) throws CoreException {
+NameEnvironment(IWorkspaceRoot root, JavaProject javaProject, SimpleLookupTable binaryLocationsPerProject, BuildNotifier notifier, CompilationGroup compilationGroup) throws CoreException {
+	this.compilationGroup = compilationGroup;
 	this.isIncrementalBuild = false;
 	this.notifier = notifier;
 	computeClasspathLocations(root, javaProject, binaryLocationsPerProject);
 	setNames(null, null);
 }
 
-public NameEnvironment(IJavaProject javaProject) {
+public NameEnvironment(IJavaProject javaProject, CompilationGroup compilationGroup) {
 	this.isIncrementalBuild = false;
+	this.compilationGroup = compilationGroup;
 	try {
 		computeClasspathLocations(javaProject.getProject().getWorkspace().getRoot(), (JavaProject) javaProject, null);
 	} catch(CoreException e) {
@@ -97,15 +109,46 @@
 			cycleMarker.setAttribute(IMarker.SEVERITY, severity);
 	}
 
-	IClasspathEntry[] classpathEntries = javaProject.getExpandedClasspath();
+	IClasspathEntry[] classpathEntries = javaProject.getExpandedClasspath(this.compilationGroup == CompilationGroup.MAIN);
 	ArrayList sLocations = new ArrayList(classpathEntries.length);
 	ArrayList bLocations = new ArrayList(classpathEntries.length);
+	ArrayList sLocationsForTest = new ArrayList(classpathEntries.length);
+	Map<String, IModulePathEntry> moduleEntries = null;
+	String compliance = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true);
+	if (CompilerOptions.versionToJdkLevel(compliance) >= ClassFileConstants.JDK9) {
+		moduleEntries = new LinkedHashMap<>(classpathEntries.length);
+		this.moduleUpdater = new ModuleUpdater(javaProject);
+		if (this.compilationGroup == CompilationGroup.TEST) {
+			this.moduleUpdater.addReadUnnamedForNonEmptyClasspath(javaProject, classpathEntries);
+		}
+	}
+	IModuleDescription projectModule = javaProject.getModuleDescription();
+
+	String patchedModuleName = ModuleEntryProcessor.pushPatchToFront(classpathEntries);
+	IModule patchedModule = null;
+
 	nextEntry : for (int i = 0, l = classpathEntries.length; i < l; i++) {
+		if (i == 1) {
+			if (patchedModuleName != null) {
+				// TODO(SHMOD) assert that patchModule has been assigned
+				patchedModuleName = null; // expire, applies to the first entry, only
+			}
+		}
 		ClasspathEntry entry = (ClasspathEntry) classpathEntries[i];
 		IPath path = entry.getPath();
 		Object target = JavaModel.getTarget(path, true);
 		IPath externalAnnotationPath = ClasspathEntry.getExternalAnnotationPath(entry, javaProject.getProject(), true);
 		if (target == null) continue nextEntry;
+		boolean isOnModulePath = isOnModulePath(entry);
+
+		Set<String> limitModules = ModuleEntryProcessor.computeLimitModules(entry);
+		if (patchedModuleName != null &&  limitModules != null && !limitModules.contains(patchedModuleName)) {
+			// TODO(SHMOD) report an error
+			patchedModuleName = null;
+		}
+
+		if (this.moduleUpdater != null && (this.compilationGroup == CompilationGroup.TEST || !entry.isTest()))
+			this.moduleUpdater.computeModuleUpdates(entry);
 
 		switch(entry.getEntryKind()) {
 			case IClasspathEntry.CPE_SOURCE :
@@ -121,8 +164,27 @@
 					if (!outputFolder.exists())
 						createOutputFolder(outputFolder);
 				}
-				sLocations.add(
-					ClasspathLocation.forSourceFolder((IContainer) target, outputFolder, entry.fullInclusionPatternChars(), entry.fullExclusionPatternChars(), entry.ignoreOptionalProblems()));
+				if (this.compilationGroup == CompilationGroup.TEST && !entry.isTest()) {
+					ClasspathLocation bLocation = ClasspathLocation.forBinaryFolder(outputFolder, true, entry.getAccessRuleSet(), externalAnnotationPath, isOnModulePath);
+					bLocations.add(bLocation);
+					sLocationsForTest.add(bLocation);
+					if (patchedModule != null) {
+						ModuleEntryProcessor.combinePatchIntoModuleEntry(bLocation, patchedModule, moduleEntries);
+					}
+					bLocation.patchModuleName = patchedModuleName;
+				} else {
+					ClasspathLocation sourceLocation = ClasspathLocation.forSourceFolder(
+								(IContainer) target, 
+								outputFolder,
+								entry.fullInclusionPatternChars(), 
+								entry.fullExclusionPatternChars(),
+								entry.ignoreOptionalProblems());
+					if (patchedModule != null) {
+						ModuleEntryProcessor.combinePatchIntoModuleEntry(sourceLocation, patchedModule, moduleEntries);
+					}
+					sLocations.add(sourceLocation);
+					sourceLocation.patchModuleName = patchedModuleName;
+				}
 				continue nextEntry;
 
 			case IClasspathEntry.CPE_PROJECT :
@@ -133,9 +195,12 @@
 				JavaProject prereqJavaProject = (JavaProject) JavaCore.create(prereqProject);
 				IClasspathEntry[] prereqClasspathEntries = prereqJavaProject.getRawClasspath();
 				ArrayList seen = new ArrayList();
+				List<ClasspathLocation> projectLocations = new ArrayList<ClasspathLocation>();
 				nextPrereqEntry: for (int j = 0, m = prereqClasspathEntries.length; j < m; j++) {
 					IClasspathEntry prereqEntry = prereqClasspathEntries[j];
 					if (prereqEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+						if ((this.compilationGroup == CompilationGroup.MAIN || entry.isWithoutTestCode()) && prereqEntry.isTest())
+							continue nextPrereqEntry;
 						Object prereqTarget = JavaModel.getTarget(prereqEntry.getPath(), true);
 						if (!(prereqTarget instanceof IContainer)) continue nextPrereqEntry;
 						IPath prereqOutputPath = prereqEntry.getOutputLocation() != null
@@ -146,8 +211,9 @@
 							: (IContainer) root.getFolder(prereqOutputPath);
 						if (binaryFolder.exists() && !seen.contains(binaryFolder)) {
 							seen.add(binaryFolder);
-							ClasspathLocation bLocation = ClasspathLocation.forBinaryFolder(binaryFolder, true, entry.getAccessRuleSet(), externalAnnotationPath);
+							ClasspathLocation bLocation = ClasspathLocation.forBinaryFolder(binaryFolder, true, entry.getAccessRuleSet(), externalAnnotationPath, isOnModulePath);
 							bLocations.add(bLocation);
+							projectLocations.add(bLocation);
 							if (binaryLocationsPerProject != null) { // normal builder mode
 								ClasspathLocation[] existingLocations = (ClasspathLocation[]) binaryLocationsPerProject.get(prereqProject);
 								if (existingLocations == null) {
@@ -162,6 +228,34 @@
 						}
 					}
 				}
+				if (moduleEntries != null && isOnModulePath && projectLocations.size() > 0) {
+					IModule info = null;
+					try {
+						IModuleDescription mod;
+						if ((mod = prereqJavaProject.getModuleDescription()) != null) {
+							AbstractModule aModule = (AbstractModule) mod;
+							info = aModule.getModuleInfo();
+						}
+					} catch (JavaModelException jme) {
+						// do nothing, probably a non module project
+					}
+					if (info == null)
+						info = IModule.createAutomatic(prereqJavaProject.getElementName(), false, prereqJavaProject.getManifest());
+					ModulePathEntry projectEntry = new ModulePathEntry(prereqJavaProject.getPath(), info,
+							projectLocations.toArray(new ClasspathLocation[projectLocations.size()]));
+					String moduleName = String.valueOf(info.name());
+					IUpdatableModule.UpdatesByKind updates = this.moduleUpdater.getUpdates(moduleName);
+					for (ClasspathLocation loc : projectLocations) {
+						loc.limitModuleNames = limitModules;
+						loc.updates = updates;
+						loc.patchModuleName = patchedModuleName;
+					}
+					if (limitModules == null || limitModules.contains(moduleName)) {
+						moduleEntries.put(moduleName, projectEntry);
+						if (moduleName.equals(patchedModuleName))
+							patchedModule = info;
+					}
+				}
 				continue nextEntry;
 
 			case IClasspathEntry.CPE_LIBRARY :
@@ -174,16 +268,22 @@
 							&& JavaCore.IGNORE.equals(javaProject.getOption(JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE, true)))
 								? null
 								: entry.getAccessRuleSet();
-						bLocation = ClasspathLocation.forLibrary((IFile) resource, accessRuleSet, externalAnnotationPath);
+						bLocation = ClasspathLocation.forLibrary((IFile) resource, accessRuleSet, externalAnnotationPath, isOnModulePath);
 					} else if (resource instanceof IContainer) {
 						AccessRuleSet accessRuleSet =
 							(JavaCore.IGNORE.equals(javaProject.getOption(JavaCore.COMPILER_PB_FORBIDDEN_REFERENCE, true))
 							&& JavaCore.IGNORE.equals(javaProject.getOption(JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE, true)))
 								? null
 								: entry.getAccessRuleSet();
-						bLocation = ClasspathLocation.forBinaryFolder((IContainer) target, false, accessRuleSet, externalAnnotationPath);	 // is library folder not output folder
+						bLocation = ClasspathLocation.forBinaryFolder((IContainer) target, false, accessRuleSet, externalAnnotationPath, isOnModulePath);	 // is library folder not output folder
 					}
 					bLocations.add(bLocation);
+					// TODO: Ideally we need to do something like mapToModulePathEntry using the path and if it is indeed
+					// a module path entry, then add the corresponding entry here, but that would need the target platform
+					if (moduleEntries != null) {
+						patchedModule = collectModuleEntries(bLocation, path, isOnModulePath,
+											limitModules, patchedModuleName, patchedModule, moduleEntries);
+					}
 					if (binaryLocationsPerProject != null) { // normal builder mode
 						IProject p = resource.getProject(); // can be the project being built
 						ClasspathLocation[] existingLocations = (ClasspathLocation[]) binaryLocationsPerProject.get(p);
@@ -202,7 +302,16 @@
 							&& JavaCore.IGNORE.equals(javaProject.getOption(JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE, true)))
 								? null
 								: entry.getAccessRuleSet();
-					bLocations.add(ClasspathLocation.forLibrary(path.toString(), accessRuleSet, externalAnnotationPath));
+					if (JavaCore.DISABLED.equals(javaProject.getOption(JavaCore.COMPILER_RELEASE, true))) {
+						compliance = null;
+					}
+					ClasspathLocation bLocation = ClasspathLocation.forLibrary(path.toOSString(), accessRuleSet, externalAnnotationPath, isOnModulePath, compliance);
+					bLocations.add(bLocation);
+					if (moduleEntries != null) {
+						Set<String> libraryLimitModules = (limitModules == null && projectModule != null) ? ClasspathJrt.NO_LIMIT_MODULES : limitModules;
+						patchedModule = collectModuleEntries(bLocation, path, isOnModulePath,
+											libraryLimitModules, patchedModuleName, patchedModule, moduleEntries);
+					}
 				}
 				continue nextEntry;
 		}
@@ -213,7 +322,28 @@
 	this.sourceLocations = new ClasspathMultiDirectory[sLocations.size()];
 	if (!sLocations.isEmpty()) {
 		sLocations.toArray(this.sourceLocations);
-
+		if (moduleEntries != null && projectModule != null) {
+			try {
+				AbstractModule sourceModule = (AbstractModule)projectModule;
+				IModule info = (IModule) sourceModule.getElementInfo();
+				final ClasspathLocation[] sourceLocations2;
+				if(sLocationsForTest.size() == 0) {
+					sourceLocations2 = this.sourceLocations;
+				} else {
+					ArrayList<ClasspathLocation> sourceLocationsForModulePathEntry=new ArrayList<>(sLocations.size()+sLocationsForTest.size());
+					sourceLocationsForModulePathEntry.addAll(sLocations);
+					sourceLocationsForModulePathEntry.addAll(sLocationsForTest);
+					sourceLocations2= sourceLocationsForModulePathEntry
+							.toArray(new ClasspathLocation[sourceLocationsForModulePathEntry.size()]);
+				}
+				ModulePathEntry projectEntry = new ModulePathEntry(javaProject.getPath(), info, sourceLocations2);
+				if (!moduleEntries.containsKey(sourceModule.getElementName())) { // can be registered already, if patching
+					moduleEntries.put(sourceModule.getElementName(), projectEntry);
+				}
+			} catch (JavaModelException jme) {
+				// do nothing, probably a non module project
+			}
+		}
 		// collect the output folders, skipping duplicates
 		next : for (int i = 0, l = this.sourceLocations.length; i < l; i++) {
 			ClasspathMultiDirectory md = this.sourceLocations[i];
@@ -241,8 +371,71 @@
 		this.binaryLocations[index++] = (ClasspathLocation) outputFolders.get(i);
 	for (int i = 0, l = bLocations.size(); i < l; i++)
 		this.binaryLocations[index++] = (ClasspathLocation) bLocations.get(i);
+	
+	if (moduleEntries != null && !moduleEntries.isEmpty())
+		this.modulePathEntries = moduleEntries;
 }
 
+/** Returns the patched module if that is served by the current (binary) location. */
+IModule collectModuleEntries(ClasspathLocation bLocation, IPath path, boolean isOnModulePath, Set<String> limitModules,
+								String patchedModuleName, IModule patchedModule, Map<String, IModulePathEntry> moduleEntries) {
+	if (bLocation instanceof IMultiModuleEntry) {
+		IMultiModuleEntry binaryModulePathEntry = (IMultiModuleEntry) bLocation;
+		bLocation.limitModuleNames = limitModules;
+		bLocation.patchModuleName = patchedModuleName;
+		IUpdatableModule.UpdatesByKind updates = null;//new IUpdatableModule.UpdatesByKind();
+		IUpdatableModule.UpdatesByKind finalUpdates = new IUpdatableModule.UpdatesByKind();
+		List<Consumer<IUpdatableModule>> packageUpdates = null;
+		List<Consumer<IUpdatableModule>> moduleUpdates = null;
+		for (String moduleName : binaryModulePathEntry.getModuleNames(limitModules)) {
+			moduleEntries.put(moduleName, binaryModulePathEntry);
+			updates = this.moduleUpdater.getUpdates(moduleName);
+			if (updates != null) {
+				List<Consumer<IUpdatableModule>> pu = updates.getList(UpdateKind.PACKAGE, false);
+				if (pu != null) {
+					(packageUpdates = finalUpdates.getList(UpdateKind.PACKAGE, true)).addAll(pu);
+				}
+				List<Consumer<IUpdatableModule>> mu = updates.getList(UpdateKind.MODULE, false);
+				if (mu != null) {
+					(moduleUpdates = finalUpdates.getList(UpdateKind.MODULE, true)).addAll(mu);
+				}
+			}
+		}
+		if (packageUpdates != null || moduleUpdates != null) {
+			bLocation.updates = finalUpdates;
+		}
+		if (patchedModuleName != null) {
+			IModule module = binaryModulePathEntry.getModule(patchedModuleName.toCharArray());
+			if (module != null)
+				return module;
+			// TODO(SHMOD): report problem: patchedModuleName didn't match a module from this location
+		}
+	} else if (isOnModulePath) {
+		IModulePathEntry binaryModulePathEntry = new ModulePathEntry(path, bLocation);
+		IModule module = binaryModulePathEntry.getModule();
+		if (module != null) {
+			String moduleName = String.valueOf(module.name());
+			bLocation.updates = this.moduleUpdater.getUpdates(moduleName);
+			bLocation.limitModuleNames = limitModules;
+			bLocation.patchModuleName = patchedModuleName;
+			if (limitModules == null || limitModules == ClasspathJrt.NO_LIMIT_MODULES || limitModules.contains(moduleName)) {
+				moduleEntries.put(moduleName, binaryModulePathEntry);
+				if (patchedModuleName != null) {
+					if (moduleName.equals(patchedModuleName))
+						return module;
+					// TODO(SHMOD): report problem: patchedModuleName didn't match a module from this location
+				}
+			}
+		}
+	}
+	return patchedModule;
+}
+
+protected boolean isOnModulePath(ClasspathEntry entry) {
+	return entry.isModular();
+}
+
+@Override
 public void cleanup() {
 	this.initialTypeNames = null;
 	this.additionalUnits = null;
@@ -250,6 +443,7 @@
 		this.sourceLocations[i].cleanup();
 	for (int i = 0, l = this.binaryLocations.length; i < l; i++)
 		this.binaryLocations[i].cleanup();
+	// assume modulePathEntries are cleaned-up via the corresponding source/binaryLocations
 }
 
 private void createOutputFolder(IContainer outputFolder) throws CoreException {
@@ -264,11 +458,12 @@
 	}
 }
 
-private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName) {
+private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName, LookupStrategy strategy, String moduleName) {
 	if (this.notifier != null)
 		this.notifier.checkCancelWithinCompiler();
 
-	if (this.initialTypeNames != null && this.initialTypeNames.includes(qualifiedTypeName)) {
+	String moduleQualifiedName = moduleName != null ? moduleName+':'+qualifiedTypeName : qualifiedTypeName;
+	if (this.initialTypeNames != null && this.initialTypeNames.includes(moduleQualifiedName)) {
 		if (this.isIncrementalBuild)
 			// catch the case that a type inside a source file has been renamed but other class files are looking for it
 			throw new AbortCompilation(true, new AbortIncrementalBuildException(qualifiedTypeName));
@@ -296,19 +491,37 @@
 	}
 
 	String qBinaryFileName = qualifiedTypeName + SUFFIX_STRING_class;
-	String binaryFileName = qBinaryFileName;
-	String qPackageName =  ""; //$NON-NLS-1$
-	if (qualifiedTypeName.length() > typeName.length) {
-		int typeNameStart = qBinaryFileName.length() - typeName.length - 6; // size of ".class"
-		qPackageName =  qBinaryFileName.substring(0, typeNameStart - 1);
-		binaryFileName = qBinaryFileName.substring(typeNameStart);
-	}
+	String qPackageName =  (qualifiedTypeName.length() == typeName.length) ? Util.EMPTY_STRING :
+		qBinaryFileName.substring(0, qBinaryFileName.length() - typeName.length - 7);
+	char[] binaryFileName = CharOperation.concat(typeName, SUFFIX_class);
 
-	// NOTE: the output folders are added at the beginning of the binaryLocations
+	ClasspathLocation[] relevantLocations;
+	if (moduleName != null && this.modulePathEntries != null) {
+		IModulePathEntry modulePathEntry = this.modulePathEntries.get(moduleName);
+		if (modulePathEntry instanceof ModulePathEntry) {
+			relevantLocations = ((ModulePathEntry) modulePathEntry).getClasspathLocations();
+		} else if (modulePathEntry instanceof ClasspathLocation) {
+			return ((ClasspathLocation) modulePathEntry).findClass(typeName, qPackageName, moduleName, qBinaryFileName, false,
+																	null/*module already checked*/);
+		} else {
+			return null;
+		}
+	} else {
+		relevantLocations = this.binaryLocations;
+	}
 	NameEnvironmentAnswer suggestedAnswer = null;
-	for (int i = 0, l = this.binaryLocations.length; i < l; i++) {
-		NameEnvironmentAnswer answer = this.binaryLocations[i].findClass(binaryFileName, qPackageName, qBinaryFileName);
+	for (ClasspathLocation classpathLocation : relevantLocations) {
+		if (!strategy.matches(classpathLocation, ClasspathLocation::hasModule)) {
+			continue;
+		}
+		NameEnvironmentAnswer answer = classpathLocation.findClass(binaryFileName, qPackageName, moduleName, qBinaryFileName, false,
+																	this.modulePathEntries != null ? this.modulePathEntries::containsKey : null);
 		if (answer != null) {
+			char[] answerMod = answer.moduleName();
+			if (answerMod != null && this.modulePathEntries != null) {
+				if (!this.modulePathEntries.containsKey(String.valueOf(answerMod)))
+					continue; // assumed to be filtered out by --limit-modules
+			}
 			if (!answer.ignoreIfBetter()) {
 				if (answer.isBetter(suggestedAnswer))
 					return answer;
@@ -317,37 +530,151 @@
 				suggestedAnswer = answer;
 		}
 	}
-	if (suggestedAnswer != null)
-		// no better answer was found
-		return suggestedAnswer;
-	return null;
+	return suggestedAnswer;
 }
 
-public NameEnvironmentAnswer findType(char[][] compoundName) {
+@Override
+public NameEnvironmentAnswer findType(char[][] compoundName, char[] moduleName) {
 	if (compoundName != null)
 		return findClass(
-			new String(CharOperation.concatWith(compoundName, '/')),
-			compoundName[compoundName.length - 1]);
+			String.valueOf(CharOperation.concatWith(compoundName, '/')),
+			compoundName[compoundName.length - 1], 
+			LookupStrategy.get(moduleName),
+			LookupStrategy.getStringName(moduleName));
 	return null;
 }
 
-public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
-	if (typeName != null)
-		return findClass(
-			new String(CharOperation.concatWith(packageName, typeName, '/')),
-			typeName);
+@Override
+public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
+	return findClass(
+			String.valueOf(CharOperation.concatWith(packageName, typeName, '/')),
+			typeName,
+			LookupStrategy.get(moduleName),
+			LookupStrategy.getStringName(moduleName));
+}
+
+@Override
+public char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] name, char[] moduleName) {
+	String pkgName = new String(CharOperation.concatWith(parentPackageName, name, '/'));
+	String modName = new String(moduleName);
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	switch (strategy) {
+		// include unnamed (search all locations):
+		case Any:
+		case Unnamed:
+			char[][] names = CharOperation.NO_CHAR_CHAR;
+			for (ClasspathLocation location : this.binaryLocations) {
+				if (strategy.matches(location, ClasspathLocation::hasModule)) {
+					char[][] declaringModules = location.getModulesDeclaringPackage(pkgName, null);
+					if (declaringModules != null)
+						names = CharOperation.arrayConcat(names, declaringModules);
+				}
+			}
+			for (ClasspathLocation location : this.sourceLocations) {
+				if (strategy.matches(location, ClasspathLocation::hasModule)) {
+					char[][] declaringModules = location.getModulesDeclaringPackage(pkgName, null);
+					if (declaringModules != null)
+						names = CharOperation.arrayConcat(names, declaringModules);
+				}
+			}
+			return names == CharOperation.NO_CHAR_CHAR ? null : names;
+
+		// only named (rely on modulePathEntries):
+		case AnyNamed:
+			modName = null;
+			//$FALL-THROUGH$
+		default:
+			if (this.modulePathEntries != null) {
+				names = CharOperation.NO_CHAR_CHAR;
+				for (IModulePathEntry modulePathEntry : this.modulePathEntries.values()) {
+					char[][] declaringModules = modulePathEntry.getModulesDeclaringPackage(pkgName, modName);
+					if (declaringModules != null)
+						names = CharOperation.arrayConcat(names, declaringModules);
+				}
+				return names == CharOperation.NO_CHAR_CHAR ? null : names;
+			}
+	}
 	return null;
 }
 
-public boolean isPackage(char[][] compoundName, char[] packageName) {
-	return isPackage(new String(CharOperation.concatWith(compoundName, packageName, '/')));
+@Override
+public boolean hasCompilationUnit(char[][] qualifiedPackageName, char[] moduleName, boolean checkCUs) {
+	String pkgName = String.valueOf(CharOperation.concatWith(qualifiedPackageName, '/'));
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	String modName = LookupStrategy.getStringName(moduleName);
+	switch (strategy) {
+		// include unnamed (search all locations):
+		case Any:
+		case Unnamed:
+			for (ClasspathLocation location : this.binaryLocations) {
+				if (strategy.matches(location, ClasspathLocation::hasModule))
+					if (location.hasCompilationUnit(pkgName, null))
+						return true;
+			}
+			for (ClasspathLocation location : this.sourceLocations) {
+				if (strategy.matches(location, ClasspathLocation::hasModule))
+					if (location.hasCompilationUnit(pkgName, null))
+						return true;
+			}
+			return false;
+		// only named (rely on modulePathEntries):
+		case Named:
+			if (this.modulePathEntries != null) {
+				IModulePathEntry modulePathEntry = this.modulePathEntries.get(modName);
+				return modulePathEntry != null && modulePathEntry.hasCompilationUnit(pkgName, modName);
+			}
+			return false;
+		case AnyNamed:
+			if (this.modulePathEntries != null) {
+				for (IModulePathEntry modulePathEntry : this.modulePathEntries.values())
+					if (modulePathEntry.hasCompilationUnit(pkgName, modName))
+						return true;
+			}
+			return false;
+		default:
+			throw new IllegalArgumentException("Unexpected LookupStrategy "+strategy); //$NON-NLS-1$
+	}
 }
+public boolean isPackage(String qualifiedPackageName, char[] moduleName) {
+	String stringModuleName = null;
 
-public boolean isPackage(String qualifiedPackageName) {
-	// NOTE: the output folders are added at the beginning of the binaryLocations
-	for (int i = 0, l = this.binaryLocations.length; i < l; i++)
-		if (this.binaryLocations[i].isPackage(qualifiedPackageName))
-			return true;
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	Collection<IModulePathEntry> entries = null;
+	switch (strategy) {
+		case Any:
+		case Unnamed:
+			// NOTE: the output folders are added at the beginning of the binaryLocations
+			for (int i = 0, l = this.binaryLocations.length; i < l; i++) {
+				if (strategy.matches(this.binaryLocations[i], ClasspathLocation::hasModule))
+					if (this.binaryLocations[i].isPackage(qualifiedPackageName, null))
+						return true;
+			}
+			for (int i = 0, l = this.sourceLocations.length; i < l; i++) {
+				if (strategy.matches(this.sourceLocations[i], ClasspathLocation::hasModule))
+					if (this.sourceLocations[i].isPackage(qualifiedPackageName, null))
+						return true;
+			}
+			return false;
+		case AnyNamed:
+			entries = this.modulePathEntries.values();
+			break;
+		default:
+			stringModuleName = String.valueOf(moduleName);
+			IModulePathEntry entry = this.modulePathEntries.get(stringModuleName);
+			if (entry == null)
+				return false;
+			entries = Collections.singletonList(entry);
+	}
+	for (IModulePathEntry modulePathEntry : entries) {
+		if (modulePathEntry instanceof ModulePathEntry) {
+			for (ClasspathLocation classpathLocation : ((ModulePathEntry) modulePathEntry).getClasspathLocations()) {
+				if (classpathLocation.isPackage(qualifiedPackageName, stringModuleName))
+					return true;
+			}
+		} else if (modulePathEntry instanceof ClasspathLocation) {
+			return ((ClasspathLocation) modulePathEntry).isPackage(qualifiedPackageName, stringModuleName);
+		}
+	}
 	return false;
 }
 
@@ -377,4 +704,30 @@
 	for (int i = 0, l = this.binaryLocations.length; i < l; i++)
 		this.binaryLocations[i].reset();
 }
+
+@Override
+public IModule getModule(char[] name) {
+	if (this.modulePathEntries != null) {
+		IModulePathEntry modulePathEntry = this.modulePathEntries.get(String.valueOf(name));
+		if (modulePathEntry instanceof IMultiModuleEntry)
+			return modulePathEntry.getModule(name);
+		else if (modulePathEntry != null)
+			return modulePathEntry.getModule();
+	}
+	return null;
+}
+
+@Override
+public char[][] getAllAutomaticModules() {
+	if (this.modulePathEntries == null)
+		return CharOperation.NO_CHAR_CHAR;
+	Set<char[]> set = this.modulePathEntries.values().stream().filter(m -> m.isAutomaticModule()).map(e -> e.getModule().name())
+			.collect(Collectors.toSet());
+	return set.toArray(new char[set.size()][]);
+}
+@Override
+public void applyModuleUpdates(IUpdatableModule compilerModule, IUpdatableModule.UpdateKind kind) {
+	if (this.moduleUpdater != null)
+		this.moduleUpdater.applyModuleUpdates(compilerModule, kind);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.java
index a54089c..9e801e7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/NameSet.java
@@ -55,6 +55,7 @@
 	this.threshold = newSet.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	char[] name;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
index c32b1e5..605cf2f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/QualifiedNameSet.java
@@ -58,6 +58,7 @@
 	this.threshold = newSet.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	char[][] qualifiedName;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.java
index 82af1bc..c3b42a7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/ReferenceCollection.java
@@ -1,3 +1,4 @@
+// AspectJ
 /*******************************************************************************
  * Copyright (c) 2000, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
@@ -11,6 +12,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
+import java.util.Set;
+
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 
@@ -198,6 +201,20 @@
 		InternedSimpleNames[i] = new NameSet(37);
 }
 
+//TODO: remove once ReferenceCollection.internQualifiedNames(StringSet) is adapted to use java.util.Set, so that git history is preserved
+public static char[][][] internQualifiedNames(Set<String> qualifiedStrings) {
+	if (qualifiedStrings == null) return EmptyQualifiedNames;
+	int length = qualifiedStrings.size();
+	if (length == 0) return EmptyQualifiedNames;
+
+	char[][][] result = new char[length][][];
+	for (String qualifiedString : qualifiedStrings)
+		if (qualifiedString != null)
+			result[--length] = CharOperation.splitOn('/', qualifiedString.toCharArray());
+	return internQualifiedNames(result, false);
+}
+
+//TODO: remove once PDE API Tools has been adapted to also use java.util.Set, so that git history is preserved
 public static char[][][] internQualifiedNames(StringSet qualifiedStrings) {
 	if (qualifiedStrings == null) return EmptyQualifiedNames;
 	int length = qualifiedStrings.elementSize;
@@ -254,10 +271,24 @@
 /**
  * @deprecated
  */
-public static char[][] internSimpleNames(StringSet simpleStrings) {
+public static char[][] internSimpleNames(Set<String> simpleStrings) {
 	return internSimpleNames(simpleStrings, true);
 }
 
+// TODO: remove once ReferenceCollection.internSimpleNames(StringSet, boolean) is adapted to use java.util.Set, so that git history is preserved
+public static char[][] internSimpleNames(Set<String> simpleStrings, boolean removeWellKnown) {
+	if (simpleStrings == null) return EmptySimpleNames;
+	int length = simpleStrings.size();
+	if (length == 0) return EmptySimpleNames;
+
+	char[][] result = new char[length][];
+	for (String simpleString : simpleStrings)
+		if (simpleString != null)
+			result[--length] = simpleString.toCharArray();
+	return internSimpleNames(result, removeWellKnown);
+}
+
+//TODO: adjust to use java.util.Set once PDE API Tools have been adapted to use the set version, so that git history is preserved
 public static char[][] internSimpleNames(StringSet simpleStrings, boolean removeWellKnown) {
 	if (simpleStrings == null) return EmptySimpleNames;
 	int length = simpleStrings.elementSize;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.java
index ae9fb64..6f969d1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/SourceFile.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,6 +16,7 @@
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -39,6 +40,7 @@
 	this.updateClassFile = updateClassFile;
 }
 
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof SourceFile)) return false;
@@ -73,6 +75,7 @@
 	return new String(result);
 }
 
+@Override
 public char[] getContents() {
 
 	try {
@@ -85,24 +88,29 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.resource.getFullPath().toString().toCharArray(); // do not know what you want to return here
 }
 
+@Override
 public char[] getMainTypeName() {
 	char[] typeName = this.initialTypeName.toCharArray();
 	int lastIndex = CharOperation.lastIndexOf('/', typeName);
 	return CharOperation.subarray(typeName, lastIndex + 1, -1);
 }
 
+@Override
 public char[][] getPackageName() {
 	char[] typeName = this.initialTypeName.toCharArray();
 	int lastIndex = CharOperation.lastIndexOf('/', typeName);
 	return CharOperation.splitOn('/', typeName, 0, lastIndex);
 }
+@Override
 public int hashCode() {
 	return this.initialTypeName.hashCode();
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return this.sourceLocation.ignoreOptionalProblems;
 }
@@ -110,8 +118,15 @@
 	return this.resource.getProjectRelativePath().toString();
 }
 
+@Override
 public String toString() {
 	return "SourceFile[" //$NON-NLS-1$
 		+ this.resource.getFullPath() + "]";  //$NON-NLS-1$
 }
+
+@Override
+public char[] getModuleName() {
+	IModule mod = this.sourceLocation.module();
+	return mod == null ? null : mod.name();
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/State.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/State.java
index cf2702b..241fdfe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/State.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/State.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -9,21 +9,26 @@
  *     IBM Corporation - initial API and implementation
  *     Stephan Herrmann - Contribution for
  *								Bug 440477 - [null] Infrastructure for feeding external annotations into compilation
+ *     Karsten Thoms - Bug 532505
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
-
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule.*;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRule;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
-import org.aspectj.org.eclipse.jdt.internal.core.ClasspathAccessRule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 
 import java.io.*;
 import java.util.*;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class State {
@@ -31,7 +36,9 @@
 
 String javaProjectName;
 public ClasspathMultiDirectory[] sourceLocations;
+public ClasspathMultiDirectory[] testSourceLocations;
 ClasspathLocation[] binaryLocations;
+ClasspathLocation[] testBinaryLocations;
 // keyed by the project relative path of the type (i.e. "src1/p1/p2/A.java"), value is a ReferenceCollection or an AdditionalTypeCollection
 SimpleLookupTable references;
 // keyed by qualified type name "p1/p2/A", value is the project relative path which defines this type "src1/p1/p2/A.java"
@@ -47,7 +54,7 @@
 private StringSet structurallyChangedTypes;
 public static int MaxStructurallyChangedTypes = 100; // keep track of ? structurally changed types, otherwise consider all to be changed
 
-public static final byte VERSION = 0x001D;
+public static final byte VERSION = 0x0020;
 
 static final byte SOURCE_FOLDER = 1;
 static final byte BINARY_FOLDER = 2;
@@ -65,6 +72,8 @@
 	this.javaProjectName = javaBuilder.currentProject.getName();
 	this.sourceLocations = javaBuilder.nameEnvironment.sourceLocations;
 	this.binaryLocations = javaBuilder.nameEnvironment.binaryLocations;
+	this.testSourceLocations = javaBuilder.testNameEnvironment.sourceLocations;
+	this.testBinaryLocations = javaBuilder.testNameEnvironment.binaryLocations;
 	this.references = new SimpleLookupTable(7);
 	this.typeLocators = new SimpleLookupTable(7);
 
@@ -135,7 +144,7 @@
 
 public boolean isKnownPackage(String qualifiedPackageName) {
 	if (this.knownPackageNames == null) {
-		ArrayList names = new ArrayList(this.typeLocators.elementSize);
+		LinkedHashSet<String> names = new LinkedHashSet<>(this.typeLocators.elementSize);
 		Object[] keyTable = this.typeLocators.keyTable;
 		for (int i = 0, l = keyTable.length; i < l; i++) {
 			if (keyTable[i] != null) {
@@ -268,13 +277,93 @@
 				IContainer outputFolder = path.segmentCount() == 1
 					? (IContainer) root.getProject(path.toString())
 					: (IContainer) root.getFolder(path);
-				newState.binaryLocations[i] = ClasspathLocation.forBinaryFolder(outputFolder, in.readBoolean(), readRestriction(in), new Path(in.readUTF()));
+					newState.binaryLocations[i] = ClasspathLocation.forBinaryFolder(outputFolder, in.readBoolean(),
+							readRestriction(in), new Path(in.readUTF()), in.readBoolean());
 				break;
 			case EXTERNAL_JAR :
-				newState.binaryLocations[i] = ClasspathLocation.forLibrary(in.readUTF(), in.readLong(), readRestriction(in), new Path(in.readUTF()));
+				String jarPath = in.readUTF();
+				boolean jrt = Util.isJrt(jarPath);
+				newState.binaryLocations[i] = ClasspathLocation.forLibrary(jarPath, in.readLong(),
+							readRestriction(in), new Path(in.readUTF()), jrt ? false : in.readBoolean(), jrt ? in.readUTF() : ""); //$NON-NLS-1$
 				break;
 			case INTERNAL_JAR :
-				newState.binaryLocations[i] = ClasspathLocation.forLibrary(root.getFile(new Path(in.readUTF())), readRestriction(in), new Path(in.readUTF()));
+					newState.binaryLocations[i] = ClasspathLocation.forLibrary(root.getFile(new Path(in.readUTF())),
+							readRestriction(in), new Path(in.readUTF()), in.readBoolean());
+					break;
+		}
+		ClasspathLocation loc = newState.binaryLocations[i];
+		char[] patchName = readName(in);
+		loc.patchModuleName = patchName.length > 0 ? new String(patchName) : null;
+		int limitSize = in.readInt();
+		if (limitSize != 0) {
+			loc.limitModuleNames = new LinkedHashSet<>(limitSize);
+			for (int j = 0; j < limitSize; j++) {
+				loc.limitModuleNames.add(in.readUTF());
+			}
+		} else {
+			loc.limitModuleNames = null;
+		}
+		IUpdatableModule.UpdatesByKind updates = new IUpdatableModule.UpdatesByKind();
+		List<Consumer<IUpdatableModule>> packageUpdates = null;
+		int packageUpdatesSize = in.readInt();
+		if (packageUpdatesSize != 0) {
+			packageUpdates = updates.getList(UpdateKind.PACKAGE, true);
+			for (int j = 0; j < packageUpdatesSize; j++) {
+				char[] pkgName = readName(in);
+				char[][] targets = readNames(in);
+				packageUpdates.add(new AddExports(pkgName, targets));
+			}
+		}
+		List<Consumer<IUpdatableModule>> moduleUpdates = null;
+		int moduleUpdatesSize = in.readInt();
+		if (moduleUpdatesSize != 0) {
+			moduleUpdates = updates.getList(UpdateKind.MODULE, true);
+			char[] modName = readName(in);
+			moduleUpdates.add(new AddReads(modName));
+		}
+		if (packageUpdates != null || moduleUpdates != null)
+			loc.updates = updates;
+	}
+
+	length = in.readInt();
+	newState.testSourceLocations = new ClasspathMultiDirectory[length];
+	for (int i = 0; i < length; i++) {
+		IContainer sourceFolder = project, outputFolder = project;
+		String folderName;
+		if ((folderName = in.readUTF()).length() > 0) sourceFolder = project.getFolder(folderName);
+		if ((folderName = in.readUTF()).length() > 0) outputFolder = project.getFolder(folderName);
+		ClasspathMultiDirectory md =
+			(ClasspathMultiDirectory) ClasspathLocation.forSourceFolder(sourceFolder, outputFolder, readNames(in), readNames(in), in.readBoolean());
+		if (in.readBoolean())
+			md.hasIndependentOutputFolder = true;
+		newState.testSourceLocations[i] = md;
+	}
+
+	length = in.readInt();
+	newState.testBinaryLocations = new ClasspathLocation[length];
+	for (int i = 0; i < length; i++) {
+		switch (in.readByte()) {
+			case SOURCE_FOLDER :
+				newState.testBinaryLocations[i] = newState.testSourceLocations[in.readInt()];
+				break;
+			case BINARY_FOLDER :
+				IPath path = new Path(in.readUTF());
+				IContainer outputFolder = path.segmentCount() == 1
+					? (IContainer) root.getProject(path.toString())
+					: (IContainer) root.getFolder(path);
+					newState.testBinaryLocations[i] = ClasspathLocation.forBinaryFolder(outputFolder, in.readBoolean(),
+							readRestriction(in), new Path(in.readUTF()), in.readBoolean());
+				break;
+			case EXTERNAL_JAR :
+				String jarPath = in.readUTF();
+				boolean jrt = Util.isJrt(jarPath);
+				newState.testBinaryLocations[i] = ClasspathLocation.forLibrary(jarPath, in.readLong(),
+							readRestriction(in), new Path(in.readUTF()), jrt ? false : in.readBoolean(), jrt ? in.readUTF() : ""); //$NON-NLS-1$
+				break;
+			case INTERNAL_JAR :
+					newState.testBinaryLocations[i] = ClasspathLocation.forLibrary(root.getFile(new Path(in.readUTF())),
+							readRestriction(in), new Path(in.readUTF()), in.readBoolean());
+					break;
 		}
 	}
 
@@ -362,7 +451,7 @@
 	for (int i = 0; i < length; i++) {
 		char[] pattern = readName(in);
 		int problemId = in.readInt();
-		accessRules[i] = new ClasspathAccessRule(pattern, problemId);
+		accessRules[i] = (AccessRule) JavaCore.newAccessRule(new Path(new String(pattern)), problemId);
 	}
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	return new AccessRuleSet(accessRules, in.readByte(), manager.intern(in.readUTF()));
@@ -438,14 +527,14 @@
  * String		path(s)
 */
 	out.writeInt(length = this.binaryLocations.length);
-	next : for (int i = 0; i < length; i++) {
+	for (int i = 0; i < length; i++) {
 		ClasspathLocation c = this.binaryLocations[i];
 		if (c instanceof ClasspathMultiDirectory) {
 			out.writeByte(SOURCE_FOLDER);
 			for (int j = 0, m = this.sourceLocations.length; j < m; j++) {
 				if (this.sourceLocations[j] == c) {
 					out.writeInt(j);
-					continue next;
+					//continue next;
 				}
 			}
 		} else if (c instanceof ClasspathDirectory) {
@@ -455,7 +544,8 @@
 			out.writeBoolean(cd.isOutputFolder);
 			writeRestriction(cd.accessRuleSet, out);
 			out.writeUTF(cd.externalAnnotationPath != null ? cd.externalAnnotationPath : ""); //$NON-NLS-1$
-		} else {
+			out.writeBoolean(cd.isOnModulePath);
+		} else if (c instanceof ClasspathJar) {
 			ClasspathJar jar = (ClasspathJar) c;
 			if (jar.resource == null) {
 				out.writeByte(EXTERNAL_JAR);
@@ -467,8 +557,129 @@
 			}
 			writeRestriction(jar.accessRuleSet, out);
 			out.writeUTF(jar.externalAnnotationPath != null ? jar.externalAnnotationPath : ""); //$NON-NLS-1$
+			out.writeBoolean(jar.isOnModulePath);
+		} else {
+			ClasspathJrt jrt = (ClasspathJrt) c;
+			out.writeByte(EXTERNAL_JAR);
+			out.writeUTF(jrt.zipFilename);
+			out.writeLong(-1);
+			writeRestriction(jrt.accessRuleSet, out);
+			out.writeUTF(jrt.externalAnnotationPath != null ? jrt.externalAnnotationPath : ""); //$NON-NLS-1$
+			out.writeUTF(jrt.compliance != null ? jrt.compliance : ""); //$NON-NLS-1$
+		}
+		char[] patchName = c.patchModuleName == null ? CharOperation.NO_CHAR : c.patchModuleName.toCharArray();
+		writeName(patchName, out);
+		if (c.limitModuleNames != null) {
+			out.writeInt(c.limitModuleNames.size());
+			for (String name : c.limitModuleNames) {
+				out.writeUTF(name);
+			}
+		} else {
+			out.writeInt(0);
+		}
+		if (c.updates != null) {
+			List<Consumer<IUpdatableModule>> pu = c.updates.getList(UpdateKind.PACKAGE, false);
+			if (pu != null) {
+				Map<String, List<Consumer<IUpdatableModule>>> map = pu.stream().
+						collect(Collectors.groupingBy(
+								update -> CharOperation.charToString(((IUpdatableModule.AddExports)update).getName())));
+				out.writeInt(map.size());
+				map.entrySet().stream().forEach(entry -> {
+					String pkgName = entry.getKey();
+					try {
+						writeName(pkgName.toCharArray(), out);
+						char[][] targetModules = entry.getValue().stream()
+								.map(consumer -> ((IUpdatableModule.AddExports) consumer).getTargetModules())
+								.filter(targets -> targets != null)
+								.reduce((f,s) -> CharOperation.arrayConcat(f,s))
+								.orElse(null);
+						writeNames(targetModules, out);
+					} catch (IOException e) {
+						// ignore
+					}
+					
+				});
+			} else {
+				out.writeInt(0);
+			}
+			List<Consumer<IUpdatableModule>> mu = c.updates.getList(UpdateKind.MODULE, false);
+			if (mu != null) {
+				out.writeInt(mu.size());
+				for (Consumer<IUpdatableModule> cons : mu) {
+					AddReads m = (AddReads) cons;
+					writeName(m.getTarget(), out);
+				}
+			} else {
+				out.writeInt(0);
+			}
+		} else {
+			out.writeInt(0);
+			out.writeInt(0);
 		}
 	}
+	/*
+	 * ClasspathMultiDirectory[]
+	 * int			id
+	 * String		path(s)
+	*/
+		out.writeInt(length = this.testSourceLocations.length);
+		for (int i = 0; i < length; i++) {
+			ClasspathMultiDirectory md = this.testSourceLocations[i];
+			out.writeUTF(md.sourceFolder.getProjectRelativePath().toString());
+			out.writeUTF(md.binaryFolder.getProjectRelativePath().toString());
+			writeNames(md.inclusionPatterns, out);
+			writeNames(md.exclusionPatterns, out);
+			out.writeBoolean(md.ignoreOptionalProblems);
+			out.writeBoolean(md.hasIndependentOutputFolder);
+		}
+
+	/*
+	 * ClasspathLocation[]
+	 * int			id
+	 * String		path(s)
+	*/
+		out.writeInt(length = this.testBinaryLocations.length);
+		next : for (int i = 0; i < length; i++) {
+			ClasspathLocation c = this.testBinaryLocations[i];
+			if (c instanceof ClasspathMultiDirectory) {
+				out.writeByte(SOURCE_FOLDER);
+				for (int j = 0, m = this.testSourceLocations.length; j < m; j++) {
+					if (this.testSourceLocations[j] == c) {
+						out.writeInt(j);
+						continue next;
+					}
+				}
+			} else if (c instanceof ClasspathDirectory) {
+				out.writeByte(BINARY_FOLDER);
+				ClasspathDirectory cd = (ClasspathDirectory) c;
+				out.writeUTF(cd.binaryFolder.getFullPath().toString());
+				out.writeBoolean(cd.isOutputFolder);
+				writeRestriction(cd.accessRuleSet, out);
+				out.writeUTF(cd.externalAnnotationPath != null ? cd.externalAnnotationPath : ""); //$NON-NLS-1$
+				out.writeBoolean(cd.isOnModulePath);
+			} else if (c instanceof ClasspathJar) {
+				ClasspathJar jar = (ClasspathJar) c;
+				if (jar.resource == null) {
+					out.writeByte(EXTERNAL_JAR);
+					out.writeUTF(jar.zipFilename);
+					out.writeLong(jar.lastModified());
+				} else {
+					out.writeByte(INTERNAL_JAR);
+					out.writeUTF(jar.resource.getFullPath().toString());
+				}
+				writeRestriction(jar.accessRuleSet, out);
+				out.writeUTF(jar.externalAnnotationPath != null ? jar.externalAnnotationPath : ""); //$NON-NLS-1$
+				out.writeBoolean(jar.isOnModulePath);
+			} else {
+				ClasspathJrt jrt = (ClasspathJrt) c;
+				out.writeByte(EXTERNAL_JAR);
+				out.writeUTF(jrt.zipFilename);
+				out.writeLong(-1);
+				writeRestriction(jrt.accessRuleSet, out);
+				out.writeUTF(jrt.externalAnnotationPath != null ? jrt.externalAnnotationPath : ""); //$NON-NLS-1$
+				out.writeUTF(jrt.compliance != null ? jrt.compliance : ""); //$NON-NLS-1$
+			}
+		}
 
 /*
  * Structural build numbers table
@@ -695,6 +906,7 @@
 /**
  * Returns a string representation of the receiver.
  */
+@Override
 public String toString() {
 	return "State for " + this.javaProjectName //$NON-NLS-1$
 		+ " (#" + this.buildNumber //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.java
index 51fb27e..6858b1a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/StringSet.java
@@ -70,6 +70,7 @@
 	this.threshold = newSet.threshold;
 }
 
+@Override
 public String toString() {
 	String s = ""; //$NON-NLS-1$
 	String value;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.java
index 6e1d4b2..45b6d03 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/builder/WorkQueue.java
@@ -10,16 +10,18 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.builder;
 
-import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 
 public class WorkQueue {
 
-private SimpleSet needsCompileList;
-private SimpleSet compiledList;
+private Set<SourceFile> needsCompileList;
+private Set<SourceFile> compiledList;
 
 public WorkQueue() {
-	this.needsCompileList = new SimpleSet();
-	this.compiledList = new SimpleSet();
+	this.needsCompileList = new HashSet<>();
+	this.compiledList = new HashSet<>();
 }
 
 public void add(SourceFile element) {
@@ -27,8 +29,7 @@
 }
 
 public void addAll(SourceFile[] elements) {
-	for (int i = 0, l = elements.length; i < l; i++)
-		add(elements[i]);
+	this.needsCompileList.addAll(Arrays.asList(elements));
 }
 
 public void clear() {
@@ -42,13 +43,14 @@
 }
 
 public boolean isCompiled(SourceFile element) {
-	return this.compiledList.includes(element);
+	return this.compiledList.contains(element);
 }
 
 public boolean isWaiting(SourceFile element) {
-	return this.needsCompileList.includes(element);
+	return this.needsCompileList.contains(element);
 }
 
+@Override
 public String toString() {
 	return "WorkQueue: " + this.needsCompileList; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.java
index 11d6fc3..ee6f357 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/NaiveASTFlattener.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -64,6 +64,22 @@
 	private static final int JLS4 = AST.JLS4;
 
 	/**
+	 * Internal synonym for {@link AST#JLS8}. Use to alleviate
+	 * deprecation warnings.
+	 * @deprecated
+	 * @since 3.14
+	 */
+	private static final int JLS8 = AST.JLS8;
+
+	/**
+	 * Internal synonym for {@link AST#JLS9}. Use to alleviate
+	 * deprecation warnings.
+	 * @deprecated
+	 * @since 3.14
+	 */
+	private static final int JLS9 = AST.JLS9;
+
+	/**
 	 * The string buffer into which the serialized representation of the AST is
 	 * written.
 	 */
@@ -199,11 +215,24 @@
 		}
 	}
 
+	private void printTypes(List<Type> types, String prefix) {
+		if (types.size() > 0) {
+			this.buffer.append(" " + prefix + " ");//$NON-NLS-1$ //$NON-NLS-2$
+			Type type = types.get(0);
+			type.accept(this);
+			for (int i = 1, l = types.size(); i < l; ++i) {
+				this.buffer.append(","); //$NON-NLS-1$
+				type = types.get(0);
+				type.accept(this);
+			}
+		}
+	}
+
 	/**
 	 * reference node helper function that is common to all
 	 * the difference reference nodes.
-	 * 
-	 * @param typeArguments list of type arguments 
+	 *
+	 * @param typeArguments list of type arguments
 	 */
 	private void visitReferenceTypeArguments(List typeArguments) {
 		this.buffer.append("::");//$NON-NLS-1$
@@ -221,7 +250,7 @@
 	}
 	
 	private void visitTypeAnnotations(AnnotatableType node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			visitAnnotationsList(node.annotations());
 		}
 	}
@@ -251,10 +280,7 @@
 		return node.superInterfaces();
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AnnotationTypeDeclaration)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -272,10 +298,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AnnotationTypeMemberDeclaration)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(AnnotationTypeMemberDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -294,9 +317,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AnonymousClassDeclaration)
-	 */
+	@Override
 	public boolean visit(AnonymousClassDeclaration node) {
 		this.buffer.append("{\n");//$NON-NLS-1$
 		this.indent++;
@@ -310,9 +331,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayAccess)
-	 */
+	@Override
 	public boolean visit(ArrayAccess node) {
 		node.getArray().accept(this);
 		this.buffer.append("[");//$NON-NLS-1$
@@ -321,9 +340,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayCreation)
-	 */
+	@Override
 	public boolean visit(ArrayCreation node) {
 		this.buffer.append("new ");//$NON-NLS-1$
 		ArrayType at = node.getType();
@@ -347,9 +364,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayInitializer)
-	 */
+	@Override
 	public boolean visit(ArrayInitializer node) {
 		this.buffer.append("{");//$NON-NLS-1$
 		for (Iterator it = node.expressions().iterator(); it.hasNext(); ) {
@@ -363,11 +378,9 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayType)
-	 */
+	@Override
 	public boolean visit(ArrayType node) {
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8) {
 			visitComponentType(node);
 			this.buffer.append("[]");//$NON-NLS-1$
 		} else {
@@ -382,9 +395,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AssertStatement)
-	 */
+	@Override
 	public boolean visit(AssertStatement node) {
 		printIndent();
 		this.buffer.append("assert ");//$NON-NLS-1$
@@ -397,9 +408,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Assignment)
-	 */
+	@Override
 	public boolean visit(Assignment node) {
 		node.getLeftHandSide().accept(this);
 		this.buffer.append(node.getOperator().toString());
@@ -407,9 +416,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Block)
-	 */
+	@Override
 	public boolean visit(Block node) {
 		this.buffer.append("{\n");//$NON-NLS-1$
 		this.indent++;
@@ -423,19 +430,14 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(BlockComment)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(BlockComment node) {
 		printIndent();
 		this.buffer.append("/* */");//$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(BooleanLiteral)
-	 */
+	@Override
 	public boolean visit(BooleanLiteral node) {
 		if (node.booleanValue() == true) {
 			this.buffer.append("true");//$NON-NLS-1$
@@ -445,9 +447,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(BreakStatement)
-	 */
+	@Override
 	public boolean visit(BreakStatement node) {
 		printIndent();
 		this.buffer.append("break");//$NON-NLS-1$
@@ -459,9 +459,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CastExpression)
-	 */
+	@Override
 	public boolean visit(CastExpression node) {
 		this.buffer.append("(");//$NON-NLS-1$
 		node.getType().accept(this);
@@ -470,9 +468,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CatchClause)
-	 */
+	@Override
 	public boolean visit(CatchClause node) {
 		this.buffer.append("catch (");//$NON-NLS-1$
 		node.getException().accept(this);
@@ -481,17 +477,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CharacterLiteral)
-	 */
+	@Override
 	public boolean visit(CharacterLiteral node) {
 		this.buffer.append(node.getEscapedValue());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ClassInstanceCreation)
-	 */
+	@Override
 	public boolean visit(ClassInstanceCreation node) {
 		if (node.getExpression() != null) {
 			node.getExpression().accept(this);
@@ -530,10 +522,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CompilationUnit)
-	 */
+	@Override
 	public boolean visit(CompilationUnit node) {
+		if (node.getAST().apiLevel() >= JLS9) {
+			if (node.getModule() != null) {
+				node.getModule().accept(this);
+			}
+		}
 		if (node.getPackage() != null) {
 			node.getPackage().accept(this);
 		}
@@ -548,9 +543,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ConditionalExpression)
-	 */
+	@Override
 	public boolean visit(ConditionalExpression node) {
 		node.getExpression().accept(this);
 		this.buffer.append(" ? ");//$NON-NLS-1$
@@ -560,9 +553,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(ConstructorInvocation node) {
 		printIndent();
 		if (node.getAST().apiLevel() >= JLS3) {
@@ -590,9 +581,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ContinueStatement)
-	 */
+	@Override
 	public boolean visit(ContinueStatement node) {
 		printIndent();
 		this.buffer.append("continue");//$NON-NLS-1$
@@ -604,11 +593,7 @@
 		return false;
 	}
 	
-	/*
-	 * @see ASTVisitor#visit(CreationReference)
-	 * 
-	 * @since 3.10
-	 */
+	@Override
 	public boolean visit(CreationReference node) {
 		node.getType().accept(this);
 		visitReferenceTypeArguments(node.typeArguments());
@@ -616,6 +601,7 @@
 		return false;
 	}
 
+	@Override
 	public boolean visit(Dimension node) {
 		List annotations = node.annotations();
 		if (annotations.size() > 0)
@@ -625,9 +611,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(DoStatement)
-	 */
+	@Override
 	public boolean visit(DoStatement node) {
 		printIndent();
 		this.buffer.append("do ");//$NON-NLS-1$
@@ -638,19 +622,14 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EmptyStatement)
-	 */
+	@Override
 	public boolean visit(EmptyStatement node) {
 		printIndent();
 		this.buffer.append(";\n");//$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnhancedForStatement)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(EnhancedForStatement node) {
 		printIndent();
 		this.buffer.append("for (");//$NON-NLS-1$
@@ -662,10 +641,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnumConstantDeclaration)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(EnumConstantDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -690,10 +666,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnumDeclaration)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -736,21 +709,20 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ExpressionMethodReference)
-	 * 
-	 * @since 3.10
-	 */
+	@Override
+	public boolean visit(ExportsDirective node) {
+		return visit(node, "exports"); //$NON-NLS-1$
+	}
+
+	@Override
 	public boolean visit(ExpressionMethodReference node) {
 		node.getExpression().accept(this);
 		visitReferenceTypeArguments(node.typeArguments());
 		node.getName().accept(this);
 		return false;
-	}	
+	}
 
-	/*
-	 * @see ASTVisitor#visit(ExpressionStatement)
-	 */
+	@Override
 	public boolean visit(ExpressionStatement node) {
 		printIndent();
 		node.getExpression().accept(this);
@@ -758,9 +730,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(FieldAccess)
-	 */
+	@Override
 	public boolean visit(FieldAccess node) {
 		node.getExpression().accept(this);
 		this.buffer.append(".");//$NON-NLS-1$
@@ -768,9 +738,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(FieldDeclaration)
-	 */
+	@Override
 	public boolean visit(FieldDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -795,9 +763,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ForStatement)
-	 */
+	@Override
 	public boolean visit(ForStatement node) {
 		printIndent();
 		this.buffer.append("for (");//$NON-NLS-1$
@@ -821,9 +787,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(IfStatement)
-	 */
+	@Override
 	public boolean visit(IfStatement node) {
 		printIndent();
 		this.buffer.append("if (");//$NON-NLS-1$
@@ -837,9 +801,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ImportDeclaration)
-	 */
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		printIndent();
 		this.buffer.append("import ");//$NON-NLS-1$
@@ -856,9 +818,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(InfixExpression)
-	 */
+	@Override
 	public boolean visit(InfixExpression node) {
 		node.getLeftOperand().accept(this);
 		this.buffer.append(' ');  // for cases like x= i - -1; or x= i++ + ++i;
@@ -877,9 +837,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Initializer)
-	 */
+	@Override
 	public boolean visit(Initializer node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -894,9 +852,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(InstanceofExpression)
-	 */
+	@Override
 	public boolean visit(InstanceofExpression node) {
 		node.getLeftOperand().accept(this);
 		this.buffer.append(" instanceof ");//$NON-NLS-1$
@@ -904,10 +860,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(IntersectionType)
-	 * @since 3.7
-	 */
+	@Override
 	public boolean visit(IntersectionType node) {
 		for (Iterator it = node.types().iterator(); it.hasNext(); ) {
 			Type t = (Type) it.next();
@@ -919,9 +872,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Javadoc)
-	 */
+	@Override
 	public boolean visit(Javadoc node) {
 		printIndent();
 		this.buffer.append("/** ");//$NON-NLS-1$
@@ -933,9 +884,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(LabeledStatement)
-	 */
+	@Override
 	public boolean visit(LabeledStatement node) {
 		printIndent();
 		node.getLabel().accept(this);
@@ -944,9 +893,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(LambdaExpression)
-	 */
+	@Override
 	public boolean visit(LambdaExpression node) {
 		boolean hasParentheses = node.hasParentheses();
 		if (hasParentheses)
@@ -965,29 +912,20 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(LineComment)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(LineComment node) {
 		this.buffer.append("//\n");//$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MarkerAnnotation)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(MarkerAnnotation node) {
 		this.buffer.append("@");//$NON-NLS-1$
 		node.getTypeName().accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MemberRef)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(MemberRef node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -997,10 +935,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MemberValuePair)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(MemberValuePair node) {
 		node.getName().accept(this);
 		this.buffer.append("=");//$NON-NLS-1$
@@ -1008,9 +943,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodDeclaration)
-	 */
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -1048,7 +981,7 @@
 		}
 		node.getName().accept(this);
 		this.buffer.append("(");//$NON-NLS-1$
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			Type receiverType = node.getReceiverType();
 			if (receiverType != null) {
 				receiverType.accept(this);
@@ -1073,7 +1006,7 @@
 		}
 		this.buffer.append(")");//$NON-NLS-1$
 		int size = node.getExtraDimensions();
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			List dimensions = node.extraDimensions();
 			for (int i = 0; i < size; i++) {
 				visit((Dimension) dimensions.get(i));
@@ -1083,7 +1016,7 @@
 				this.buffer.append("[]"); //$NON-NLS-1$
 			}
 		}
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8) {
 			if (!thrownExceptions(node).isEmpty()) {
 				this.buffer.append(" throws ");//$NON-NLS-1$
 				for (Iterator it = thrownExceptions(node).iterator(); it.hasNext(); ) {
@@ -1116,9 +1049,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodInvocation)
-	 */
+	@Override
 	public boolean visit(MethodInvocation node) {
 		if (node.getExpression() != null) {
 			node.getExpression().accept(this);
@@ -1150,10 +1081,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodRef)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(MethodRef node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -1172,10 +1100,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodRefParameter)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(MethodRefParameter node) {
 		node.getType().accept(this);
 		if (node.getAST().apiLevel() >= JLS3) {
@@ -1190,19 +1115,54 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Modifier)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(Modifier node) {
 		this.buffer.append(node.getKeyword().toString());
 		return false;
 	}
 
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		if (node.getJavadoc() != null) {
+			node.getJavadoc().accept(this);
+		}
+		printModifiers(node.annotations());
+		if (node.isOpen())
+			this.buffer.append("open "); //$NON-NLS-1$
+		this.buffer.append("module"); //$NON-NLS-1$
+		this.buffer.append(" "); //$NON-NLS-1$
+		node.getName().accept(this);
+		this.buffer.append(" {\n"); //$NON-NLS-1$
+		this.indent++;
+		for (ModuleDirective stmt : (List<ModuleDirective>)node.moduleStatements()) {
+			stmt.accept(this);
+		}
+		this.indent--;
+		this.buffer.append("}"); //$NON-NLS-1$
+		return false;
+	}
+
+	@Override
 	/*
-	 * @see ASTVisitor#visit(NameQualifiedType)
-	 * @since 3.10
+	 * @see ASTVisitor#visit(ModuleModifier)
+	 * @since 3.14
 	 */
+	public boolean visit(ModuleModifier node) {
+		this.buffer.append(node.getKeyword().toString());
+		return false;
+	}
+
+	private boolean visit(ModulePackageAccess node, String keyword) {
+		printIndent();
+		this.buffer.append(keyword);
+		this.buffer.append(" ");//$NON-NLS-1$
+		node.getName().accept(this);
+		printTypes(node.modules(), "to"); //$NON-NLS-1$
+		this.buffer.append(";\n");//$NON-NLS-1$
+		return false;
+	}
+
+	@Override
 	public boolean visit(NameQualifiedType node) {
 		node.getQualifier().accept(this);
 		this.buffer.append('.');
@@ -1211,10 +1171,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NormalAnnotation)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(NormalAnnotation node) {
 		this.buffer.append("@");//$NON-NLS-1$
 		node.getTypeName().accept(this);
@@ -1230,25 +1187,24 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NullLiteral)
-	 */
+	@Override
 	public boolean visit(NullLiteral node) {
 		this.buffer.append("null");//$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NumberLiteral)
-	 */
+	@Override
 	public boolean visit(NumberLiteral node) {
 		this.buffer.append(node.getToken());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PackageDeclaration)
-	 */
+	@Override
+	public boolean visit(OpensDirective node) {
+		return visit(node, "opens"); //$NON-NLS-1$
+	}
+
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		if (node.getAST().apiLevel() >= JLS3) {
 			if (node.getJavadoc() != null) {
@@ -1267,10 +1223,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ParameterizedType)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(ParameterizedType node) {
 		node.getType().accept(this);
 		this.buffer.append("<");//$NON-NLS-1$
@@ -1285,9 +1238,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ParenthesizedExpression)
-	 */
+	@Override
 	public boolean visit(ParenthesizedExpression node) {
 		this.buffer.append("(");//$NON-NLS-1$
 		node.getExpression().accept(this);
@@ -1295,36 +1246,39 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PostfixExpression)
-	 */
+	@Override
 	public boolean visit(PostfixExpression node) {
 		node.getOperand().accept(this);
 		this.buffer.append(node.getOperator().toString());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PrefixExpression)
-	 */
+	@Override
 	public boolean visit(PrefixExpression node) {
 		this.buffer.append(node.getOperator().toString());
 		node.getOperand().accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PrimitiveType)
-	 */
+	@Override
 	public boolean visit(PrimitiveType node) {
 		visitTypeAnnotations(node);
 		this.buffer.append(node.getPrimitiveTypeCode().toString());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(QualifiedName)
-	 */
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		printIndent();
+		this.buffer.append("provides");//$NON-NLS-1$
+		this.buffer.append(" ");//$NON-NLS-1$
+		node.getName().accept(this);
+		printTypes(node.implementations(), "with"); //$NON-NLS-1$
+		this.buffer.append(";\n");//$NON-NLS-1$
+		return false;
+	}
+
+	@Override
 	public boolean visit(QualifiedName node) {
 		node.getQualifier().accept(this);
 		this.buffer.append(".");//$NON-NLS-1$
@@ -1332,10 +1286,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(QualifiedType)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(QualifiedType node) {
 		node.getQualifier().accept(this);
 		this.buffer.append(".");//$NON-NLS-1$
@@ -1344,9 +1295,18 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ReturnStatement)
-	 */
+	@Override
+	public boolean visit(RequiresDirective node) {
+		printIndent();
+		this.buffer.append("requires");//$NON-NLS-1$
+		this.buffer.append(" ");//$NON-NLS-1$
+		printModifiers(node.modifiers());
+		node.getName().accept(this);
+		this.buffer.append(";\n");//$NON-NLS-1$
+		return false;
+	}
+
+	@Override
 	public boolean visit(ReturnStatement node) {
 		printIndent();
 		this.buffer.append("return");//$NON-NLS-1$
@@ -1358,27 +1318,20 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SimpleName)
-	 */
+	@Override
 	public boolean visit(SimpleName node) {
 		this.buffer.append(node.getIdentifier());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SimpleType)
-	 */
+	@Override
 	public boolean visit(SimpleType node) {
 		visitTypeAnnotations(node);
 		node.getName().accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SingleMemberAnnotation)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(SingleMemberAnnotation node) {
 		this.buffer.append("@");//$NON-NLS-1$
 		node.getTypeName().accept(this);
@@ -1388,9 +1341,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SingleVariableDeclaration)
-	 */
+	@Override
 	public boolean visit(SingleVariableDeclaration node) {
 		printIndent();
 		if (node.getAST().apiLevel() == JLS2) {
@@ -1402,7 +1353,7 @@
 		node.getType().accept(this);
 		if (node.getAST().apiLevel() >= JLS3) {
 			if (node.isVarargs()) {
-				if (node.getAST().apiLevel() >= AST.JLS8) {
+				if (node.getAST().apiLevel() >= JLS8) {
 					List annotations = node.varargsAnnotations();
 					if (annotations.size() > 0) {
 						this.buffer.append(' ');
@@ -1415,7 +1366,7 @@
 		this.buffer.append(" ");//$NON-NLS-1$
 		node.getName().accept(this);
 		int size = node.getExtraDimensions();
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			List dimensions = node.extraDimensions();
 			for (int i = 0; i < size; i++) {
 				visit((Dimension) dimensions.get(i));
@@ -1432,17 +1383,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(StringLiteral)
-	 */
+	@Override
 	public boolean visit(StringLiteral node) {
 		this.buffer.append(node.getEscapedValue());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(SuperConstructorInvocation node) {
 		printIndent();
 		if (node.getExpression() != null) {
@@ -1474,9 +1421,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperFieldAccess)
-	 */
+	@Override
 	public boolean visit(SuperFieldAccess node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -1487,9 +1432,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperMethodInvocation)
-	 */
+	@Override
 	public boolean visit(SuperMethodInvocation node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -1527,6 +1470,7 @@
 	 * 
 	 * @since 3.10
 	 */
+	@Override
 	public boolean visit(SuperMethodReference node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -1538,9 +1482,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SwitchCase)
-	 */
+	@Override
 	public boolean visit(SwitchCase node) {
 		if (node.isDefault()) {
 			this.buffer.append("default :\n");//$NON-NLS-1$
@@ -1553,9 +1495,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SwitchStatement)
-	 */
+	@Override
 	public boolean visit(SwitchStatement node) {
 		this.buffer.append("switch (");//$NON-NLS-1$
 		node.getExpression().accept(this);
@@ -1573,9 +1513,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SynchronizedStatement)
-	 */
+	@Override
 	public boolean visit(SynchronizedStatement node) {
 		this.buffer.append("synchronized (");//$NON-NLS-1$
 		node.getExpression().accept(this);
@@ -1584,10 +1522,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TagElement)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(TagElement node) {
 		if (node.isNested()) {
 			// nested tags are always enclosed in braces
@@ -1630,18 +1565,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TextElement)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(TextElement node) {
 		this.buffer.append(node.getText());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ThisExpression)
-	 */
+	@Override
 	public boolean visit(ThisExpression node) {
 		if (node.getQualifier() != null) {
 			node.getQualifier().accept(this);
@@ -1651,9 +1581,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ThrowStatement)
-	 */
+	@Override
 	public boolean visit(ThrowStatement node) {
 		printIndent();
 		this.buffer.append("throw ");//$NON-NLS-1$
@@ -1662,9 +1590,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TryStatement)
-	 */
+	@Override
 	public boolean visit(TryStatement node) {
 		printIndent();
 		this.buffer.append("try ");//$NON-NLS-1$
@@ -1673,7 +1599,7 @@
 			if (!resources.isEmpty()) {
 				this.buffer.append('(');
 				for (Iterator it = resources.iterator(); it.hasNext(); ) {
-					VariableDeclarationExpression variable = (VariableDeclarationExpression) it.next();
+					Expression variable = (Expression) it.next();
 					variable.accept(this);
 					if (it.hasNext()) {
 						this.buffer.append(';');
@@ -1695,9 +1621,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeDeclaration)
-	 */
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		if (node.getJavadoc() != null) {
 			node.getJavadoc().accept(this);
@@ -1772,9 +1696,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(TypeDeclarationStatement node) {
 		if (node.getAST().apiLevel() == JLS2) {
 			getTypeDeclaration(node).accept(this);
@@ -1785,9 +1707,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeLiteral)
-	 */
+	@Override
 	public boolean visit(TypeLiteral node) {
 		node.getType().accept(this);
 		this.buffer.append(".class");//$NON-NLS-1$
@@ -1799,6 +1719,7 @@
 	 * 
 	 * @since 3.10
 	 */
+	@Override
 	public boolean visit(TypeMethodReference node) {
 		node.getType().accept(this);
 		visitReferenceTypeArguments(node.typeArguments());
@@ -1806,12 +1727,9 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeParameter)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(TypeParameter node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			printModifiers(node.modifiers());
 		}
 		node.getName().accept(this);
@@ -1828,10 +1746,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(UnionType)
-	 * @since 3.7
-	 */
+	@Override
 	public boolean visit(UnionType node) {
 		for (Iterator it = node.types().iterator(); it.hasNext(); ) {
 			Type t = (Type) it.next();
@@ -1843,9 +1758,17 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationExpression)
-	 */
+	@Override
+	public boolean visit(UsesDirective node) {
+		printIndent();
+		this.buffer.append("uses");//$NON-NLS-1$
+		this.buffer.append(" ");//$NON-NLS-1$
+		node.getName().accept(this);
+		this.buffer.append(";\n");//$NON-NLS-1$
+		return false;
+	}
+
+	@Override
 	public boolean visit(VariableDeclarationExpression node) {
 		if (node.getAST().apiLevel() == JLS2) {
 			printModifiers(node.getModifiers());
@@ -1865,13 +1788,11 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationFragment)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationFragment node) {
 		node.getName().accept(this);
 		int size = node.getExtraDimensions();
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8) {
 			List dimensions = node.extraDimensions();
 			for (int i = 0; i < size; i++) {
 				visit((Dimension) dimensions.get(i));
@@ -1888,9 +1809,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationStatement node) {
 		printIndent();
 		if (node.getAST().apiLevel() == JLS2) {
@@ -1912,9 +1831,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(WhileStatement)
-	 */
+	@Override
 	public boolean visit(WhileStatement node) {
 		printIndent();
 		this.buffer.append("while (");//$NON-NLS-1$
@@ -1924,10 +1841,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(WildcardType)
-	 * @since 3.1
-	 */
+	@Override
 	public boolean visit(WildcardType node) {
 		visitTypeAnnotations(node);
 		this.buffer.append("?");//$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.java
index e154fa0..2e23218 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/SourceRangeVerifier.java
@@ -47,6 +47,7 @@
 		return buffer.toString();
 	}
 	
+	@Override
 	public boolean preVisit2(ASTNode node) {
 		ASTNode previous = null;
 		
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
index ed89c55..44c5835 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
@@ -1,5 +1,6 @@
+// AspectJ
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -149,6 +150,9 @@
 	private static final SimplePropertyDescriptor INTERNAL_VDS_MODIFIERS_PROPERTY = VariableDeclarationStatement.MODIFIERS_PROPERTY;
 
 	/** @deprecated using deprecated code */
+	private static final ChildListPropertyDescriptor INTERNAL_TRY_STATEMENT_RESOURCES_PROPERTY = TryStatement.RESOURCES_PROPERTY;
+
+	/** @deprecated using deprecated code */
 	private static final int JLS2_INTERNAL = AST.JLS2;
 	
 	/** @deprecated using deprecated code */
@@ -157,6 +161,12 @@
 	/** @deprecated using deprecated code */
 	private static final int JLS4_INTERNAL = AST.JLS4;
 
+	/** @deprecated using deprecated code */
+	private static final int JLS8_INTERNAL = AST.JLS8;
+
+	/** @deprecated using deprecated code */
+	private static final int JLS9_INTERNAL = AST.JLS9;
+
 
 	TextEdit currentEdit;
 	final RewriteEventStore eventStore; // used from inner classes
@@ -833,6 +843,7 @@
 			}
 			return currPos;
 		}
+
 		public final int rewriteList(ASTNode parent, StructuralPropertyDescriptor property, int offset, String keyword) {
 			return rewriteList(parent, property, keyword, null, offset);
 		}
@@ -1072,10 +1083,12 @@
 			this.separatorLines= separator;
 		}
 
+		@Override
 		protected int getInitialIndent() {
 			return this.initialIndent;
 		}
 
+		@Override
 		protected String getSeparatorString(int nodeIndex) {
 			return getSeparatorString(nodeIndex, nodeIndex + 1);
 		}
@@ -1154,6 +1167,7 @@
 			return 0;
 		}
 		
+		@Override
 		protected boolean mustRemoveSeparator(int originalOffset, int nodeIndex) {
 			// Do not remove separator if the previous non removed node is on the same line and the next node is on another line
 			int previousNonRemovedNodeIndex = nodeIndex - 1;
@@ -1353,13 +1367,10 @@
 		}
 	}
 
-	/*
-	 * Next token is a left brace. Returns the offset after the brace. For incomplete code, return the start offset.
-	 */
-	private int getPosAfterLeftBrace(int pos) {
+	private int getPosAfterToken(int pos, int token) {
 		try {
 			int nextToken= getScanner().readNext(pos, true);
-			if (nextToken == TerminalTokens.TokenNameLBRACE) {
+			if (nextToken == token) {
 				return getScanner().getCurrentEndOffset();
 			}
 		} catch (CoreException e) {
@@ -1367,6 +1378,16 @@
 		}
 		return pos;
 	}
+	/*
+	 * Next token is a left brace. Returns the offset after the brace. For incomplete code, return the start offset.
+	 */
+	private int getPosAfterLeftBrace(int pos) {
+		try {
+			return getPosAfterToken(pos, TerminalTokens.TokenNameLBRACE);
+		} catch (IllegalArgumentException e) {
+			return pos;
+		}
+	}
 
 	/*
 	 * Next token is try keyword. Returns the offset after 'try' keyword. For incomplete code, return the start offset.
@@ -1546,9 +1567,7 @@
 			this.annotationSeparation= annotationSeparation;
 		}
 
-		/* (non-Javadoc)
-		 * @see org.aspectj.org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer.ListRewriter#getSeparatorString(int)
-		 */
+		@Override
 		protected String getSeparatorString(int nodeIndex) {
 			ASTNode curr= getNewNode(nodeIndex);
 			if (curr instanceof Annotation) {
@@ -1583,16 +1602,16 @@
 		boolean isAnnotationsProperty = isVarargsAnnotationsProperty 
 				|| node instanceof AnnotatableType && property == ((AnnotatableType) node).getAnnotationsProperty();
 		Prefix formatterPrefix;
-		if (property == SingleVariableDeclaration.MODIFIERS2_PROPERTY || 
+		if (property == SingleVariableDeclaration.MODIFIERS2_PROPERTY ||
 				property == VariableDeclarationExpression.MODIFIERS2_PROPERTY ||
 				property == VariableDeclarationStatement.MODIFIERS2_PROPERTY ||
 				property == TypeParameter.MODIFIERS_PROPERTY || isAnnotationsProperty) {
 			ASTNode parent = node.getParent();
 			if (parent instanceof MethodDeclaration)
-			formatterPrefix= this.formatter.PARAM_ANNOTATION_SEPARATION;
+				formatterPrefix= this.formatter.PARAM_ANNOTATION_SEPARATION;
 			else if (parent instanceof Block || parent instanceof TryStatement || parent instanceof ForStatement)
 				formatterPrefix= this.formatter.LOCAL_ANNOTATION_SEPARATION;
-		else
+			else
 				formatterPrefix= this.formatter.TYPE_ANNOTATION_SEPARATION;
 		} else {
 			formatterPrefix= this.formatter.ANNOTATION_SEPARATION;
@@ -1655,9 +1674,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#postVisit(ASTNode)
-	 */
+	@Override
 	public void postVisit(ASTNode node) {
 		TextEditGroup editGroup= this.eventStore.getTrackedNodeData(node);
 		if (editGroup != null) {
@@ -1667,9 +1684,7 @@
 		doCopySourcePostVisit(node, this.sourceCopyEndNodes);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#preVisit(ASTNode)
-	 */
+	@Override
 	public void preVisit(ASTNode node) {
 		// copies, then range marker
 
@@ -1709,14 +1724,16 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(CompilationUnit)
-	 */
+	@Override
 	public boolean visit(CompilationUnit node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
 
+		if (node.getAST().apiLevel() >= JLS9_INTERNAL && node.getModule() != null) {
+			rewriteNode(node, CompilationUnit.MODULE_PROPERTY, 0, ASTRewriteFormatter.NONE);
+			return false;
+		}
 		int startPos= rewriteNode(node, CompilationUnit.PACKAGE_PROPERTY, 0, ASTRewriteFormatter.NONE);
 
 		if (getChangeKind(node, CompilationUnit.PACKAGE_PROPERTY) == RewriteEvent.INSERTED) {
@@ -1728,10 +1745,7 @@
 		return false;
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(TypeDeclaration)
-	 */
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -1886,7 +1900,7 @@
 	
 	private int rewriteMethodReceiver(MethodDeclaration method, int offset) throws CoreException {
 		offset= getScanner().getTokenEndOffset(TerminalTokens.TokenNameLPAREN, offset);
-		if (method.getAST().apiLevel() < AST.JLS8) {
+		if (method.getAST().apiLevel() < JLS8_INTERNAL) {
 			return offset;
 		}
 
@@ -2002,6 +2016,7 @@
 		return offset;
 	}
 	
+	@Override
 	public boolean visit(Dimension node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2039,9 +2054,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(MethodDeclaration)
-	 */
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2069,9 +2082,9 @@
 			pos= rewriteNodeList(node, MethodDeclaration.PARAMETERS_PROPERTY, pos, Util.EMPTY_STRING, ", "); //$NON-NLS-1$ 
 
 			pos= getScanner().getTokenEndOffset(TerminalTokens.TokenNameRPAREN, pos);
-			ChildListPropertyDescriptor exceptionsProperty = apiLevel < AST.JLS8 ? INTERNAL_METHOD_THROWN_EXCEPTIONS_PROPERTY : MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY;
+			ChildListPropertyDescriptor exceptionsProperty = apiLevel < JLS8_INTERNAL ? INTERNAL_METHOD_THROWN_EXCEPTIONS_PROPERTY : MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY;
 
-			if (apiLevel < AST.JLS8) {
+			if (apiLevel < JLS8_INTERNAL) {
 				int extraDims= rewriteExtraDimensions(node, INTERNAL_METHOD_EXTRA_DIMENSIONS_PROPERTY, pos);
 
 				boolean hasExceptionChanges= isChanged(node, exceptionsProperty);
@@ -2098,9 +2111,44 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(Block)
-	 */
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		int pos= rewriteJavadoc(node, ModuleDeclaration.JAVADOC_PROPERTY);
+		pos= rewriteModifiers2(node, ModuleDeclaration.ANNOTATIONS_PROPERTY, pos);
+
+		RewriteEvent event= getEvent(node, ModuleDeclaration.OPEN_PROPERTY);
+		if (event != null && event.getChangeKind() != RewriteEvent.UNCHANGED) {
+			boolean fakeInModule = getScanner().getScanner().fakeInModule;
+			try {
+				boolean wasOpen= ((Boolean) event.getOriginalValue()).booleanValue();
+				if (wasOpen) {
+					this.tokenScanner.getScanner().fakeInModule = true;
+					int endPos= getScanner().getTokenStartOffset(TerminalTokens.TokenNamemodule, pos);
+					doTextRemove(pos, endPos - pos, getEditGroup(event));
+				} else {
+					doTextInsert(pos, "open ", getEditGroup(event)); //$NON-NLS-1$
+				}
+			} catch (CoreException e) {
+				handleException(e);
+			} finally {
+				this.tokenScanner.getScanner().fakeInModule = fakeInModule;
+			}
+		}
+
+		pos= rewriteRequiredNode(node, ModuleDeclaration.NAME_PROPERTY);
+		int startPos = getPosAfterLeftBrace(pos);
+		int startIndent= getIndent(node.getStartPosition()) + 1;
+		boolean fakeInModule = this.tokenScanner.getScanner().fakeInModule;
+		this.tokenScanner.getScanner().fakeInModule = true;
+		rewriteParagraphList(node, ModuleDeclaration.MODULE_DIRECTIVES_PROPERTY, startPos, startIndent, 0, 1);
+		this.tokenScanner.getScanner().fakeInModule = fakeInModule;
+		return false;
+	}
+
+	@Override
 	public boolean visit(Block node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2117,9 +2165,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ReturnStatement)
-	 */
+	@Override
 	public boolean visit(ReturnStatement node) {
 		try {
 			this.beforeRequiredSpaceIndex = getScanner().getTokenEndOffset(TerminalTokens.TokenNamereturn, node.getStartPosition());
@@ -2137,10 +2183,18 @@
 		return false;
 	}
 
+	@Override
+	public boolean visit(RequiresDirective node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		int pos = getPosAfterToken(node.getStartPosition(), TerminalTokens.TokenNamerequires);
+		rewriteNodeList(node, RequiresDirective.MODIFIERS_PROPERTY, pos, String.valueOf(' '), String.valueOf(' '));
+		rewriteRequiredNode(node, RequiresDirective.NAME_PROPERTY);
+		return false;
+	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(AnonymousClassDeclaration)
-	 */
+	@Override
 	public boolean visit(AnonymousClassDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2152,9 +2206,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ArrayAccess)
-	 */
+	@Override
 	public boolean visit(ArrayAccess node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2165,9 +2217,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ArrayCreation)
-	 */
+	@Override
 	public boolean visit(ArrayCreation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2176,7 +2226,7 @@
 		ArrayType arrayType= (ArrayType) getOriginalValue(node, ArrayCreation.TYPE_PROPERTY);
 		ArrayType replacingType= arrayType;
 		int nOldBrackets= getDimensions(arrayType); // number of total brackets
-		boolean astLevelGTE8 = node.getAST().apiLevel() >= AST.JLS8;
+		boolean astLevelGTE8 = node.getAST().apiLevel() >= JLS8_INTERNAL;
 		boolean typeReplaced = false;
 
 		TextEditGroup editGroup= null;
@@ -2349,7 +2399,7 @@
 	}
 
 	private Type getElementType(ArrayType parent) {
-		if (parent.getAST().apiLevel() >= AST.JLS8) {
+		if (parent.getAST().apiLevel() >= JLS8_INTERNAL) {
 			return (Type) getOriginalValue(parent, ArrayType.ELEMENT_TYPE_PROPERTY);
 		}
 		Type t = (Type) getOriginalValue(parent, INTERNAL_ARRAY_COMPONENT_TYPE_PROPERTY);
@@ -2360,7 +2410,7 @@
 	}
 
 	private int getDimensions(ArrayType parent) {
-		if (parent.getAST().apiLevel() >= AST.JLS8) {
+		if (parent.getAST().apiLevel() >= JLS8_INTERNAL) {
 			return ((List) getOriginalValue(parent, ArrayType.DIMENSIONS_PROPERTY)).size();
 		}
 		Type t = (Type) getOriginalValue(parent, INTERNAL_ARRAY_COMPONENT_TYPE_PROPERTY);
@@ -2372,9 +2422,7 @@
 		return dimensions;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ArrayInitializer)
-	 */
+	@Override
 	public boolean visit(ArrayInitializer node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2389,14 +2437,12 @@
 		return rewriteNodeList(node, ArrayType.DIMENSIONS_PROPERTY, pos, Util.EMPTY_STRING, ""); //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ArrayType)
-	 */
+	@Override
 	public boolean visit(ArrayType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8_INTERNAL) {
 			rewriteRequiredNode(node, INTERNAL_ARRAY_COMPONENT_TYPE_PROPERTY);
 		} else {
 			int pos = rewriteRequiredNode(node, ArrayType.ELEMENT_TYPE_PROPERTY);
@@ -2405,9 +2451,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(AssertStatement)
-	 */
+	@Override
 	public boolean visit(AssertStatement node) {
 		try {
 			this.beforeRequiredSpaceIndex = getScanner().getNextEndOffset(node.getStartPosition(), true);
@@ -2426,9 +2470,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(Assignment)
-	 */
+	@Override
 	public boolean visit(Assignment node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2440,9 +2482,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(BooleanLiteral)
-	 */
+	@Override
 	public boolean visit(BooleanLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2454,9 +2494,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(BreakStatement)
-	 */
+	@Override
 	public boolean visit(BreakStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2471,9 +2509,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(CastExpression)
-	 */
+	@Override
 	public boolean visit(CastExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2484,9 +2520,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(CatchClause)
-	 */
+	@Override
 	public boolean visit(CatchClause node) { // catch (Exception) Block
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2497,9 +2531,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(CharacterLiteral)
-	 */
+	@Override
 	public boolean visit(CharacterLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2511,9 +2543,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ClassInstanceCreation)
-	 */
+	@Override
 	public boolean visit(ClassInstanceCreation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2561,9 +2591,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ConditionalExpression)
-	 */
+	@Override
 	public boolean visit(ConditionalExpression node) { // expression ? thenExpression : elseExpression
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2575,9 +2603,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(ConstructorInvocation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2595,9 +2621,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ContinueStatement)
-	 */
+	@Override
 	public boolean visit(ContinueStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2623,9 +2647,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(CreationReference)
-	 */
+	@Override
 	public boolean visit(CreationReference node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2635,9 +2657,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(DoStatement)
-	 */
+	@Override
 	public boolean visit(DoStatement node) { // do statement while expression
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2663,9 +2683,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(EmptyStatement)
-	 */
+	@Override
 	public boolean visit(EmptyStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2675,9 +2693,18 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ExpressionStatement)
-	 */
+	@Override
+	public boolean visit(ExportsDirective node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		int pos = rewriteRequiredNode(node, ExportsDirective.NAME_PROPERTY);
+		rewriteNodeList(node, ExportsDirective.MODULES_PROPERTY, pos, "to ", ", "); //$NON-NLS-1$ //$NON-NLS-2$ 
+
+		return false;
+	}
+
+	@Override
 	public boolean visit(ExpressionStatement node) { // expression
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2687,9 +2714,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(FieldAccess)
-	 */
+	@Override
 	public boolean visit(FieldAccess node) { // expression.name
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2700,9 +2725,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(FieldDeclaration)
-	 */
+	@Override
 	public boolean visit(FieldDeclaration node) { //{ Modifier } Type VariableDeclarationFragment { ',' VariableDeclarationFragment } ';'
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2721,9 +2744,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ForStatement)
-	 */
+	@Override
 	public boolean visit(ForStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2768,9 +2789,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(IfStatement)
-	 */
+	@Override
 	public boolean visit(IfStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2820,9 +2839,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ImportDeclaration)
-	 */
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2864,12 +2881,7 @@
 		return false;
 	}
 
-
-
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(InfixExpression)
-	 */
+	@Override
 	public boolean visit(InfixExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2945,9 +2957,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(Initializer)
-	 */
+	@Override
 	public boolean visit(Initializer node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -2962,9 +2972,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(InstanceofExpression)
-	 */
+	@Override
 	public boolean visit(InstanceofExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3012,9 +3020,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(IntersectionType)
-	 */
+	@Override
 	public boolean visit(IntersectionType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3022,10 +3028,8 @@
 		rewriteNodeList(node, IntersectionType.TYPES_PROPERTY, node.getStartPosition(), Util.EMPTY_STRING, " & "); //$NON-NLS-1$
 		return false;
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(Javadoc)
-	 */
+
+	@Override
 	public boolean visit(Javadoc node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3037,9 +3041,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(LabeledStatement)
-	 */
+	@Override
 	public boolean visit(LabeledStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3050,9 +3052,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(LambdaExpression)
-	 */
+	@Override
 	public boolean visit(LambdaExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3124,9 +3124,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(MethodInvocation)
-	 */
+	@Override
 	public boolean visit(MethodInvocation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3153,9 +3151,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(NullLiteral)
-	 */
+	@Override
 	public boolean visit(NullLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3165,9 +3161,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(NumberLiteral)
-	 */
+	@Override
 	public boolean visit(NumberLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3178,9 +3172,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(PackageDeclaration)
-	 */
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3194,9 +3186,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ParenthesizedExpression)
-	 */
+	@Override
 	public boolean visit(ParenthesizedExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3206,9 +3196,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(PostfixExpression)
-	 */
+	@Override
 	public boolean visit(PostfixExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3219,9 +3207,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(PrefixExpression)
-	 */
+	@Override
 	public boolean visit(PrefixExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3232,14 +3218,12 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(PrimitiveType)
-	 */
+	@Override
 	public boolean visit(PrimitiveType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			rewriteTypeAnnotations(node, PrimitiveType.ANNOTATIONS_PROPERTY, node.getStartPosition());
 		}
 		PrimitiveType.Code newCode= (PrimitiveType.Code) getNewValue(node, PrimitiveType.PRIMITIVE_TYPE_CODE_PROPERTY);
@@ -3248,9 +3232,17 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(QualifiedName)
-	 */
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		int pos = rewriteRequiredNode(node, ProvidesDirective.NAME_PROPERTY);
+		pos= rewriteNodeList(node, ProvidesDirective.IMPLEMENTATIONS_PROPERTY, pos, " with ", ", "); //$NON-NLS-1$ //$NON-NLS-2$
+		return false;
+	}
+
+	@Override
 	public boolean visit(QualifiedName node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3261,9 +3253,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SimpleName)
-	 */
+	@Override
 	public boolean visit(SimpleName node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3274,23 +3264,19 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SimpleType)
-	 */
+	@Override
 	public boolean visit(SimpleType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			rewriteTypeAnnotations(node, SimpleType.ANNOTATIONS_PROPERTY, node.getStartPosition());
 		}
 		rewriteRequiredNode(node, SimpleType.NAME_PROPERTY);
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SingleVariableDeclaration)
-	 */
+	@Override
 	public boolean visit(SingleVariableDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3307,7 +3293,7 @@
 			if (isChanged(node, SingleVariableDeclaration.VARARGS_PROPERTY)) {
 				TextEditGroup editGroup = getEditGroup(node, SingleVariableDeclaration.VARARGS_PROPERTY);
 				if (getNewValue(node, SingleVariableDeclaration.VARARGS_PROPERTY).equals(Boolean.TRUE)) {
-					if (apiLevel >= AST.JLS8) {
+					if (apiLevel >= JLS8_INTERNAL) {
 						pos= rewriteVarargsAnnotations(node, SingleVariableDeclaration.VARARGS_ANNOTATIONS_PROPERTY, pos);
 					}
 					int indent= getIndent(node.getStartPosition());
@@ -3317,7 +3303,7 @@
 				} else {
 					try {
 						int ellipsisEnd;
-						int noOfAnnotations = apiLevel >= AST.JLS8 ? node.varargsAnnotations().size() : 0;
+						int noOfAnnotations = apiLevel >= JLS8_INTERNAL ? node.varargsAnnotations().size() : 0;
 						if (noOfAnnotations > 0) {
 							Annotation annotation= (Annotation) node.varargsAnnotations().get(noOfAnnotations - 1);
 							int annotationEndPosition= annotation.getStartPosition() + annotation.getLength();
@@ -3331,7 +3317,7 @@
 					}
 				}
 			} else {
-				if (apiLevel >= AST.JLS8 && node.isVarargs()) {
+				if (apiLevel >= JLS8_INTERNAL && node.isVarargs()) {
 					pos = rewriteVarargsAnnotations(node, SingleVariableDeclaration.VARARGS_ANNOTATIONS_PROPERTY, pos);
 				}
 			}
@@ -3343,7 +3329,7 @@
 		}
 
 		pos= rewriteRequiredNode(node, SingleVariableDeclaration.NAME_PROPERTY);
-		if (apiLevel < AST.JLS8) {
+		if (apiLevel < JLS8_INTERNAL) {
 			int extraDims= rewriteExtraDimensions(node, INTERNAL_VARIABLE_EXTRA_DIMENSIONS_PROPERTY, pos);
 
 			if (extraDims > 0) {
@@ -3366,9 +3352,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(StringLiteral)
-	 */
+	@Override
 	public boolean visit(StringLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3380,9 +3364,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SuperConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(SuperConstructorInvocation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3408,9 +3390,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SuperFieldAccess)
-	 */
+	@Override
 	public boolean visit(SuperFieldAccess node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3421,9 +3401,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SuperMethodInvocation)
-	 */
+	@Override
 	public boolean visit(SuperMethodInvocation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3458,9 +3436,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SwitchCase)
-	 */
+	@Override
 	public boolean visit(SwitchCase node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3481,6 +3457,7 @@
 				DefaultCodeFormatterConstants.TRUE.equals(ASTRewriteAnalyzer.this.options.get(DefaultCodeFormatterConstants.FORMATTER_INDENT_SWITCHSTATEMENTS_COMPARE_TO_CASES));
 		}
 
+		@Override
 		protected int getNodeIndent(int nodeIndex) {
 			int indent= getInitialIndent();
 			
@@ -3502,6 +3479,7 @@
 			return indent;
 		}
 		
+		@Override
 		protected String getSeparatorString(int nodeIndex) {
 			int total = this.list.length;
 			
@@ -3515,6 +3493,7 @@
 			return getSeparatorString(nodeIndex, nextNodeIndex);
 		}
 		
+		@Override
 		protected void updateIndent(int prevMark, int originalOffset, int nodeIndex, TextEditGroup editGroup) {
 			if (prevMark != RewriteEvent.UNCHANGED && prevMark != RewriteEvent.REPLACED) return;
 			
@@ -3562,9 +3541,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SwitchStatement)
-	 */
+	@Override
 	public boolean visit(SwitchStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3595,9 +3572,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SynchronizedStatement)
-	 */
+	@Override
 	public boolean visit(SynchronizedStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3608,9 +3583,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ThisExpression)
-	 */
+	@Override
 	public boolean visit(ThisExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3620,9 +3593,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ThrowStatement)
-	 */
+	@Override
 	public boolean visit(ThrowStatement node) {
 		try {
 			this.beforeRequiredSpaceIndex = getScanner().getTokenEndOffset(TerminalTokens.TokenNamethrow, node.getStartPosition());
@@ -3640,22 +3611,22 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(TryStatement)
-	 */
+	@Override
 	public boolean visit(TryStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
 		int pos= node.getStartPosition();
-		if (node.getAST().apiLevel() >= JLS4_INTERNAL) {
-			if (isChanged(node, TryStatement.RESOURCES_PROPERTY)) {
+		int level = node.getAST().apiLevel();
+		if (level >= JLS4_INTERNAL) {
+			StructuralPropertyDescriptor desc = level < JLS9_INTERNAL ? INTERNAL_TRY_STATEMENT_RESOURCES_PROPERTY : TryStatement.RESOURCES2_PROPERTY;
+			if (isChanged(node, desc)) {
 				int indent= getIndent(node.getStartPosition());
 				String prefix= this.formatter.TRY_RESOURCES.getPrefix(indent);
 				String newParen = this.formatter.TRY_RESOURCES_PAREN.getPrefix(indent) + "("; //$NON-NLS-1$
-				pos= rewriteNodeList(node, TryStatement.RESOURCES_PROPERTY, getPosAfterTry(pos), newParen, ")", ";" + prefix); //$NON-NLS-1$ //$NON-NLS-2$
+				pos= rewriteNodeList(node, desc, getPosAfterTry(pos), newParen, ")", ";" + prefix); //$NON-NLS-1$ //$NON-NLS-2$
 			} else {
-				pos= doVisit(node, TryStatement.RESOURCES_PROPERTY, pos);
+				pos= doVisit(node, desc, pos);
 			}
 		}
 
@@ -3672,11 +3643,7 @@
 		return false;
 	}
 
-
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(TypeDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(TypeDeclarationStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3689,9 +3656,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(TypeLiteral)
-	 */
+	@Override
 	public boolean visit(TypeLiteral node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3701,9 +3666,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(UnionType)
-	 */
+	@Override
 	public boolean visit(UnionType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3711,10 +3674,17 @@
 		rewriteNodeList(node, UnionType.TYPES_PROPERTY, node.getStartPosition(), Util.EMPTY_STRING, " | "); //$NON-NLS-1$
 		return false;
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(VariableDeclarationExpression)
-	 */
+
+	@Override
+	public boolean visit(UsesDirective node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		rewriteRequiredNode(node,UsesDirective.NAME_PROPERTY);
+		return false;
+	}
+
+	@Override
 	public boolean visit(VariableDeclarationExpression node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3732,9 +3702,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(VariableDeclarationFragment)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationFragment node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3742,7 +3710,7 @@
 
 		int pos= rewriteRequiredNode(node, VariableDeclarationFragment.NAME_PROPERTY);
 
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8_INTERNAL) {
 			int extraDims= rewriteExtraDimensions(node, INTERNAL_FRAGMENT_EXTRA_DIMENSIONS_PROPERTY, pos);
 			if (extraDims > 0) {
 				int kind= getChangeKind(node, VariableDeclarationFragment.INITIALIZER_PROPERTY);
@@ -3763,9 +3731,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(VariableDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3784,9 +3750,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(WhileStatement)
-	 */
+	@Override
 	public boolean visit(WhileStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3807,9 +3771,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MemberRef)
-	 */
+	@Override
 	public boolean visit(MemberRef node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3820,9 +3782,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MethodRef)
-	 */
+	@Override
 	public boolean visit(MethodRef node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3845,9 +3805,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MethodRefParameter)
-	 */
+	@Override
 	public boolean visit(MethodRefParameter node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3871,9 +3829,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TagElement)
-	 */
+	@Override
 	public boolean visit(TagElement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3920,10 +3876,7 @@
 	    return tagNode.getStartPosition();
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TextElement)
-	 */
+	@Override
 	public boolean visit(TextElement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3934,10 +3887,7 @@
 		return false;
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.AnnotationTypeDeclaration)
-	 */
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3952,9 +3902,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.AnnotationTypeMemberDeclaration)
-	 */
+	@Override
 	public boolean visit(AnnotationTypeMemberDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -3976,9 +3924,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.EnhancedForStatement)
-	 */
+	@Override
 	public boolean visit(EnhancedForStatement node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4001,9 +3947,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.EnumConstantDeclaration)
-	 */
+	@Override
 	public boolean visit(EnumConstantDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4056,9 +4000,8 @@
 		}
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.EnumDeclaration)
-	 */
+
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4131,9 +4074,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(ExpressionMethodReference)
-	 */
+	@Override
 	public boolean visit(ExpressionMethodReference node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4144,9 +4085,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MarkerAnnotation)
-	 */
+	@Override
 	public boolean visit(MarkerAnnotation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4154,9 +4093,8 @@
 		rewriteRequiredNode(node, MarkerAnnotation.TYPE_NAME_PROPERTY);
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MemberValuePair)
-	 */
+
+	@Override
 	public boolean visit(MemberValuePair node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4166,9 +4104,8 @@
 
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.Modifier)
-	 */
+
+	@Override
 	public boolean visit(Modifier node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4178,9 +4115,19 @@
 		doTextReplace(node.getStartPosition(), node.getLength(), newText, group);
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.NormalAnnotation)
-	 */
+
+	@Override
+	public boolean visit(ModuleModifier node) {
+		if (!hasChildrenChanges(node)) {
+			return doVisitUnchangedChildren(node);
+		}
+		String newText= getNewValue(node, ModuleModifier.KEYWORD_PROPERTY).toString(); // type ModuleModifier.ModuleModifierKeyword
+		TextEditGroup group = getEditGroup(node, ModuleModifier.KEYWORD_PROPERTY);
+		doTextReplace(node.getStartPosition(), node.getLength(), newText, group);
+		return false;
+	}
+
+	@Override
 	public boolean visit(NormalAnnotation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4199,9 +4146,8 @@
 		}
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.NameQualifiedType)
-	 */
+
+	@Override
 	public boolean visit(NameQualifiedType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4216,9 +4162,8 @@
 		rewriteRequiredNode(node, NameQualifiedType.NAME_PROPERTY);
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.ParameterizedType)
-	 */
+
+	@Override
 	public boolean visit(ParameterizedType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4237,15 +4182,14 @@
 		}
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.QualifiedType)
-	 */
+
+	@Override
 	public boolean visit(QualifiedType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
 		int pos = rewriteRequiredNode(node, QualifiedType.QUALIFIER_PROPERTY);
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			try {
 				pos = getScanner().getTokenEndOffset(TerminalTokens.TokenNameDOT, pos);
 				rewriteTypeAnnotations(node, QualifiedType.ANNOTATIONS_PROPERTY, pos);
@@ -4256,9 +4200,8 @@
 		rewriteRequiredNode(node, QualifiedType.NAME_PROPERTY);
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.SingleMemberAnnotation)
-	 */
+
+	@Override
 	public boolean visit(SingleMemberAnnotation node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4268,9 +4211,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(SuperMethodReference)
-	 */
+	@Override
 	public boolean visit(SuperMethodReference node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4281,9 +4222,7 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(TypeMethodReference)
-	 */
+	@Override
 	public boolean visit(TypeMethodReference node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
@@ -4294,29 +4233,26 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TypeParameter)
-	 */
+	@Override
 	public boolean visit(TypeParameter node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
 		int pos;
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			pos = rewriteModifiers2(node, TypeParameter.MODIFIERS_PROPERTY, node.getStartPosition());
 		}
 		pos= rewriteRequiredNode(node, TypeParameter.NAME_PROPERTY);
 		rewriteNodeList(node, TypeParameter.TYPE_BOUNDS_PROPERTY, pos, " extends ", " & "); //$NON-NLS-1$ //$NON-NLS-2$
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.WildcardType)
-	 */
+
+	@Override
 	public boolean visit(WildcardType node) {
 		if (!hasChildrenChanges(node)) {
 			return doVisitUnchangedChildren(node);
 		}
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			rewriteTypeAnnotations(node, WildcardType.ANNOTATIONS_PROPERTY, node.getStartPosition());
 		}
 		try {
@@ -4348,4 +4284,5 @@
 	final void handleException(Throwable e) {
 		throw new IllegalArgumentException("Document does not match the AST", e); //$NON-NLS-1$
 	}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java
index 3ad297f..64e1495 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -70,6 +70,9 @@
 	private static final SimplePropertyDescriptor INTERNAL_VDS_MODIFIERS_PROPERTY = VariableDeclarationStatement.MODIFIERS_PROPERTY;
 
 	/** @deprecated using deprecated code */
+	private static final ChildListPropertyDescriptor INTERNAL_TRY_STATEMENT_RESOURCES_PROPERTY = TryStatement.RESOURCES_PROPERTY;
+
+	/** @deprecated using deprecated code */
 	private static final int JLS2_INTERNAL = AST.JLS2;
 
 	/** @deprecated using deprecated code */
@@ -78,6 +81,12 @@
 	/** @deprecated using deprecated code */
 	private static final int JLS4_INTERNAL = AST.JLS4;
 
+	/** @deprecated using deprecated code */
+	private static final int JLS8_INTERNAL = AST.JLS8;
+
+	/** @deprecated using deprecated code */
+	private static final int JLS9_INTERNAL = AST.JLS9;
+
 
 	public static String asString(ASTNode node, RewriteEventStore store) {
 		ASTRewriteFlattener flattener= new ASTRewriteFlattener(store);
@@ -152,6 +161,7 @@
 		}
 	}
 
+
 	protected List getChildList(ASTNode parent, StructuralPropertyDescriptor childProperty) {
 		return (List) getAttribute(parent, childProperty);
 	}
@@ -197,7 +207,7 @@
 	}
 
 	private void visitExtraDimensions(ASTNode node, SimplePropertyDescriptor dimensions, ChildListPropertyDescriptor dimensionsInfo) {
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8_INTERNAL) {
 			int extraDimensions= getIntAttribute(node, dimensions);
 			for (int i = 0; i < extraDimensions; i++) {
 				this.result.append("[]"); //$NON-NLS-1$
@@ -207,9 +217,7 @@
 		}
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AnonymousClassDeclaration)
-	 */
+	@Override
 	public boolean visit(AnonymousClassDeclaration node) {
 		this.result.append('{');
 		visitList(node, AnonymousClassDeclaration.BODY_DECLARATIONS_PROPERTY, null);
@@ -217,9 +225,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayAccess)
-	 */
+	@Override
 	public boolean visit(ArrayAccess node) {
 		getChildNode(node, ArrayAccess.ARRAY_PROPERTY).accept(this);
 		this.result.append('[');
@@ -228,9 +234,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayCreation)
-	 */
+	@Override
 	public boolean visit(ArrayCreation node) {
 		this.result.append("new "); //$NON-NLS-1$
 		ArrayType arrayType= (ArrayType) getChildNode(node, ArrayCreation.TYPE_PROPERTY);
@@ -238,7 +242,7 @@
 		// get the element type and count dimensions
 		Type elementType;
 		int dimensions;
-		boolean astLevelGTE8 = node.getAST().apiLevel() >= AST.JLS8;
+		boolean astLevelGTE8 = node.getAST().apiLevel() >= JLS8_INTERNAL;
 		if (astLevelGTE8) {
 			elementType = (Type) getChildNode(arrayType, ArrayType.ELEMENT_TYPE_PROPERTY);
 			dimensions = getChildList(arrayType, ArrayType.DIMENSIONS_PROPERTY).size();
@@ -283,9 +287,7 @@
 		}
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayInitializer)
-	 */
+	@Override
 	public boolean visit(ArrayInitializer node) {
 		this.result.append('{');
 		visitList(node, ArrayInitializer.EXPRESSIONS_PROPERTY, String.valueOf(','));
@@ -293,11 +295,9 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ArrayType)
-	 */
+	@Override
 	public boolean visit(ArrayType node) {
-		if (node.getAST().apiLevel() < AST.JLS8) {
+		if (node.getAST().apiLevel() < JLS8_INTERNAL) {
 			getChildNode(node, INTERNAL_ARRAY_COMPONENT_TYPE_PROPERTY).accept(this);
 			this.result.append("[]"); //$NON-NLS-1$
 		} else {
@@ -307,9 +307,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AssertStatement)
-	 */
+	@Override
 	public boolean visit(AssertStatement node) {
 		this.result.append("assert "); //$NON-NLS-1$
 		getChildNode(node, AssertStatement.EXPRESSION_PROPERTY).accept(this);
@@ -323,9 +321,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Assignment)
-	 */
+	@Override
 	public boolean visit(Assignment node) {
 		getChildNode(node, Assignment.LEFT_HAND_SIDE_PROPERTY).accept(this);
 		this.result.append(getAttribute(node, Assignment.OPERATOR_PROPERTY).toString());
@@ -333,11 +329,7 @@
 		return false;
 	}
 
-
-
-	/*
-	 * @see ASTVisitor#visit(Block)
-	 */
+	@Override
 	public boolean visit(Block node) {
 		this.result.append('{');
 		visitList(node, Block.STATEMENTS_PROPERTY, null);
@@ -345,9 +337,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(BooleanLiteral)
-	 */
+	@Override
 	public boolean visit(BooleanLiteral node) {
 		if (node.booleanValue() == true) {
 			this.result.append("true"); //$NON-NLS-1$
@@ -357,9 +347,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(BreakStatement)
-	 */
+	@Override
 	public boolean visit(BreakStatement node) {
 		this.result.append("break"); //$NON-NLS-1$
 		ASTNode label= getChildNode(node, BreakStatement.LABEL_PROPERTY);
@@ -371,9 +359,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CastExpression)
-	 */
+	@Override
 	public boolean visit(CastExpression node) {
 		this.result.append('(');
 		getChildNode(node, CastExpression.TYPE_PROPERTY).accept(this);
@@ -382,9 +368,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CatchClause)
-	 */
+	@Override
 	public boolean visit(CatchClause node) {
 		this.result.append("catch ("); //$NON-NLS-1$
 		getChildNode(node, CatchClause.EXCEPTION_PROPERTY).accept(this);
@@ -393,17 +377,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CharacterLiteral)
-	 */
+	@Override
 	public boolean visit(CharacterLiteral node) {
 		this.result.append(getAttribute(node, CharacterLiteral.ESCAPED_VALUE_PROPERTY));
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ClassInstanceCreation)
-	 */
+	@Override
 	public boolean visit(ClassInstanceCreation node) {
 		ASTNode expression= getChildNode(node, ClassInstanceCreation.EXPRESSION_PROPERTY);
 		if (expression != null) {
@@ -428,10 +408,15 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CompilationUnit)
-	 */
+	@Override
 	public boolean visit(CompilationUnit node) {
+		if (node.getAST().apiLevel() >= JLS9_INTERNAL) {
+			ASTNode module= getChildNode(node, CompilationUnit.MODULE_PROPERTY);
+			if (module != null) {
+				module.accept(this);
+			}
+		}
+
 		ASTNode pack= getChildNode(node, CompilationUnit.PACKAGE_PROPERTY);
 		if (pack != null) {
 			pack.accept(this);
@@ -441,9 +426,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ConditionalExpression)
-	 */
+	@Override
 	public boolean visit(ConditionalExpression node) {
 		getChildNode(node, ConditionalExpression.EXPRESSION_PROPERTY).accept(this);
 		this.result.append('?');
@@ -453,9 +436,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(ConstructorInvocation node) {
 		if (node.getAST().apiLevel() >= JLS3_INTERNAL) {
 			visitList(node, ConstructorInvocation.TYPE_ARGUMENTS_PROPERTY, String.valueOf(','), String.valueOf('<'), String.valueOf('>'));
@@ -466,9 +447,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ContinueStatement)
-	 */
+	@Override
 	public boolean visit(ContinueStatement node) {
 		this.result.append("continue"); //$NON-NLS-1$
 		ASTNode label= getChildNode(node, ContinueStatement.LABEL_PROPERTY);
@@ -480,9 +459,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(CreationReference)
-	 */
+	@Override
 	public boolean visit(CreationReference node) {
 		getChildNode(node, CreationReference.TYPE_PROPERTY).accept(this);
 		this.result.append("::"); //$NON-NLS-1$
@@ -491,15 +468,14 @@
 		return false;
 	}
 
+	@Override
 	public boolean visit(Dimension node) {
 		visitList(node, Dimension.ANNOTATIONS_PROPERTY, String.valueOf(' '), String.valueOf(' '), String.valueOf(' '));
 		this.result.append("[]"); //$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(DoStatement)
-	 */
+	@Override
 	public boolean visit(DoStatement node) {
 		this.result.append("do "); //$NON-NLS-1$
 		getChildNode(node, DoStatement.BODY_PROPERTY).accept(this);
@@ -509,26 +485,33 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EmptyStatement)
-	 */
+	@Override
 	public boolean visit(EmptyStatement node) {
 		this.result.append(';');
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ExpressionStatement)
-	 */
+	@Override
+	public boolean visit(ExportsDirective node) {
+		this.result.append("exports "); //$NON-NLS-1$
+		getChildNode(node, ExportsDirective.NAME_PROPERTY).accept(this);
+		List<Name> modules = node.modules();
+		if (modules.size() > 0) {
+			this.result.append(" to "); //$NON-NLS-1$
+			visitList(node, ExportsDirective.MODULES_PROPERTY, Util.COMMA_SEPARATOR, Util.EMPTY_STRING, Util.EMPTY_STRING);
+		}
+		this.result.append(';');
+		return false;
+	}
+
+	@Override
 	public boolean visit(ExpressionStatement node) {
 		getChildNode(node, ExpressionStatement.EXPRESSION_PROPERTY).accept(this);
 		this.result.append(';');
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(FieldAccess)
-	 */
+	@Override
 	public boolean visit(FieldAccess node) {
 		getChildNode(node, FieldAccess.EXPRESSION_PROPERTY).accept(this);
 		this.result.append('.');
@@ -536,9 +519,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(FieldDeclaration)
-	 */
+	@Override
 	public boolean visit(FieldDeclaration node) {
 		ASTNode javadoc= getChildNode(node, FieldDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -556,9 +537,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ForStatement)
-	 */
+	@Override
 	public boolean visit(ForStatement node) {
 		this.result.append("for ("); //$NON-NLS-1$
 		visitList(node, ForStatement.INITIALIZERS_PROPERTY, String.valueOf(','));
@@ -574,9 +553,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(IfStatement)
-	 */
+	@Override
 	public boolean visit(IfStatement node) {
 		this.result.append("if ("); //$NON-NLS-1$
 		getChildNode(node, IfStatement.EXPRESSION_PROPERTY).accept(this);
@@ -590,9 +567,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ImportDeclaration)
-	 */
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		this.result.append("import "); //$NON-NLS-1$
 		if (node.getAST().apiLevel() >= JLS3_INTERNAL) {
@@ -608,11 +583,7 @@
 		return false;
 	}
 
-
-
-	/*
-	 * @see ASTVisitor#visit(InfixExpression)
-	 */
+	@Override
 	public boolean visit(InfixExpression node) {
 		getChildNode(node, InfixExpression.LEFT_OPERAND_PROPERTY).accept(this);
 		this.result.append(' ');
@@ -627,9 +598,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Initializer)
-	 */
+	@Override
 	public boolean visit(Initializer node) {
 		ASTNode javadoc= getChildNode(node, Initializer.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -644,9 +613,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(InstanceofExpression)
-	 */
+	@Override
 	public boolean visit(InstanceofExpression node) {
 		getChildNode(node, InstanceofExpression.LEFT_OPERAND_PROPERTY).accept(this);
 		this.result.append(" instanceof "); //$NON-NLS-1$
@@ -654,17 +621,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(IntersectionType)
-	 */
+	@Override
 	public boolean visit(IntersectionType node) {
 		visitList(node, IntersectionType.TYPES_PROPERTY, " & ", Util.EMPTY_STRING, Util.EMPTY_STRING); //$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(Javadoc)
-	 */
+	@Override
 	public boolean visit(Javadoc node) {
 		this.result.append("/**"); //$NON-NLS-1$
 		List list= getChildList(node, Javadoc.TAGS_PROPERTY);
@@ -676,18 +639,15 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(LabeledStatement)
-	 */
+	@Override
 	public boolean visit(LabeledStatement node) {
 		getChildNode(node, LabeledStatement.LABEL_PROPERTY).accept(this);
 		this.result.append(": "); //$NON-NLS-1$
 		getChildNode(node, LabeledStatement.BODY_PROPERTY).accept(this);
 		return false;
 	}
-	/*
-	 * @see ASTVisitor#visit(LambdaExpression)
-	 */
+
+	@Override
 	public boolean visit(LambdaExpression node) {
 		boolean hasParentheses = getBooleanAttribute(node, LambdaExpression.PARENTHESES_PROPERTY);
 		if (!hasParentheses) {
@@ -705,9 +665,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodDeclaration)
-	 */
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		ASTNode javadoc= getChildNode(node, MethodDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -737,7 +695,7 @@
 		getChildNode(node, MethodDeclaration.NAME_PROPERTY).accept(this);
 		this.result.append('(');
 		// receiver parameter
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			ASTNode receiverType = getChildNode(node, MethodDeclaration.RECEIVER_TYPE_PROPERTY);
 			if (receiverType != null) {
 				receiverType.accept(this);
@@ -758,7 +716,7 @@
 		this.result.append(')');
 		visitExtraDimensions(node, INTERNAL_METHOD_EXTRA_DIMENSIONS_PROPERTY, MethodDeclaration.EXTRA_DIMENSIONS2_PROPERTY);
 
-		ChildListPropertyDescriptor exceptionsProperty = node.getAST().apiLevel() <	AST.JLS8 ? 
+		ChildListPropertyDescriptor exceptionsProperty = node.getAST().apiLevel() <	JLS8_INTERNAL ? 
 				INTERNAL_METHOD_THROWN_EXCEPTIONS_PROPERTY : MethodDeclaration.THROWN_EXCEPTION_TYPES_PROPERTY;
 		visitList(node, exceptionsProperty, String.valueOf(','), " throws ", Util.EMPTY_STRING); //$NON-NLS-1$			
 		ASTNode body= getChildNode(node, MethodDeclaration.BODY_PROPERTY);
@@ -770,9 +728,25 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MethodInvocation)
-	 */
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		ASTNode javadoc= getChildNode(node, ModuleDeclaration.JAVADOC_PROPERTY);
+		if (javadoc != null) {
+			javadoc.accept(this);
+		}
+		visitList(node, ModuleDeclaration.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
+		if (getBooleanAttribute(node, ModuleDeclaration.OPEN_PROPERTY)) {
+			this.result.append("open ");//$NON-NLS-1$
+		}
+		this.result.append("module "); //$NON-NLS-1$
+		getChildNode(node, ModuleDeclaration.NAME_PROPERTY).accept(this);
+		this.result.append('{');
+		visitList(node, ModuleDeclaration.MODULE_DIRECTIVES_PROPERTY, null);
+		this.result.append('}');
+		return false;
+	}
+
+	@Override
 	public boolean visit(MethodInvocation node) {
 		ASTNode expression= getChildNode(node, MethodInvocation.EXPRESSION_PROPERTY);
 		if (expression != null) {
@@ -790,25 +764,19 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NullLiteral)
-	 */
+	@Override
 	public boolean visit(NullLiteral node) {
 		this.result.append("null"); //$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NumberLiteral)
-	 */
+	@Override
 	public boolean visit(NumberLiteral node) {
 		this.result.append(getAttribute(node, NumberLiteral.TOKEN_PROPERTY).toString());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PackageDeclaration)
-	 */
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		if (node.getAST().apiLevel() >= JLS3_INTERNAL) {
 			ASTNode javadoc = getChildNode(node, PackageDeclaration.JAVADOC_PROPERTY);
@@ -823,9 +791,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ParenthesizedExpression)
-	 */
+	@Override
 	public boolean visit(ParenthesizedExpression node) {
 		this.result.append('(');
 		getChildNode(node, ParenthesizedExpression.EXPRESSION_PROPERTY).accept(this);
@@ -833,38 +799,40 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PostfixExpression)
-	 */
+	@Override
 	public boolean visit(PostfixExpression node) {
 		getChildNode(node, PostfixExpression.OPERAND_PROPERTY).accept(this);
 		this.result.append(getAttribute(node, PostfixExpression.OPERATOR_PROPERTY).toString());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PrefixExpression)
-	 */
+	@Override
 	public boolean visit(PrefixExpression node) {
 		this.result.append(getAttribute(node, PrefixExpression.OPERATOR_PROPERTY).toString());
 		getChildNode(node, PrefixExpression.OPERAND_PROPERTY).accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(PrimitiveType)
-	 */
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		this.result.append("provides "); //$NON-NLS-1$
+		getChildNode(node, ProvidesDirective.NAME_PROPERTY).accept(this);
+		this.result.append(" with "); //$NON-NLS-1$
+		visitList(node, ProvidesDirective.IMPLEMENTATIONS_PROPERTY, Util.EMPTY_STRING, Util.COMMA_SEPARATOR, Util.EMPTY_STRING);
+		this.result.append(';');
+		return false;
+	}
+
+	@Override
 	public boolean visit(PrimitiveType node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, PrimitiveType.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		this.result.append(getAttribute(node, PrimitiveType.PRIMITIVE_TYPE_CODE_PROPERTY).toString());
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(QualifiedName)
-	 */
+	@Override
 	public boolean visit(QualifiedName node) {
 		getChildNode(node, QualifiedName.QUALIFIER_PROPERTY).accept(this);
 		this.result.append('.');
@@ -872,9 +840,16 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ReturnStatement)
-	 */
+	@Override
+	public boolean visit(RequiresDirective node) {
+		this.result.append("requires "); //$NON-NLS-1$
+		visitList(node, RequiresDirective.MODIFIERS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
+		getChildNode(node, RequiresDirective.NAME_PROPERTY).accept(this);
+		this.result.append(';');
+		return false;
+	}
+
+	@Override
 	public boolean visit(ReturnStatement node) {
 		this.result.append("return"); //$NON-NLS-1$
 		ASTNode expression= getChildNode(node, ReturnStatement.EXPRESSION_PROPERTY);
@@ -886,28 +861,22 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SimpleName)
-	 */
+	@Override
 	public boolean visit(SimpleName node) {
 		this.result.append(getAttribute(node, SimpleName.IDENTIFIER_PROPERTY));
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SimpleType)
-	 */
+	@Override
 	public boolean visit(SimpleType node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, SimpleType.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		node.getName().accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SingleVariableDeclaration)
-	 */
+	@Override
 	public boolean visit(SingleVariableDeclaration node) {
 		if (node.getAST().apiLevel() == JLS2_INTERNAL) {
 			printModifiers(getIntAttribute(node, INTERNAL_VARIABLE_MODIFIERS_PROPERTY), this.result);
@@ -915,7 +884,7 @@
 			visitList(node, SingleVariableDeclaration.MODIFIERS2_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		getChildNode(node, SingleVariableDeclaration.TYPE_PROPERTY).accept(this);
-		if (node.getAST().apiLevel() >= AST.JLS8  && node.isVarargs()) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL  && node.isVarargs()) {
 			visitList(node, SingleVariableDeclaration.VARARGS_ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		if (node.getAST().apiLevel() >= JLS3_INTERNAL) {
@@ -934,17 +903,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(StringLiteral)
-	 */
+	@Override
 	public boolean visit(StringLiteral node) {
 		this.result.append(getAttribute(node, StringLiteral.ESCAPED_VALUE_PROPERTY));
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperConstructorInvocation)
-	 */
+	@Override
 	public boolean visit(SuperConstructorInvocation node) {
 		ASTNode expression= getChildNode(node, SuperConstructorInvocation.EXPRESSION_PROPERTY);
 		if (expression != null) {
@@ -960,9 +925,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperFieldAccess)
-	 */
+	@Override
 	public boolean visit(SuperFieldAccess node) {
 		ASTNode qualifier= getChildNode(node, SuperFieldAccess.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -974,9 +937,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperMethodInvocation)
-	 */
+	@Override
 	public boolean visit(SuperMethodInvocation node) {
 		ASTNode qualifier= getChildNode(node, SuperMethodInvocation.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -994,9 +955,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SwitchCase)
-	 */
+	@Override
 	public boolean visit(SwitchCase node) {
 		ASTNode expression= getChildNode(node, SwitchCase.EXPRESSION_PROPERTY);
 		if (expression == null) {
@@ -1009,9 +968,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SwitchStatement)
-	 */
+	@Override
 	public boolean visit(SwitchStatement node) {
 		this.result.append("switch ("); //$NON-NLS-1$
 		getChildNode(node, SwitchStatement.EXPRESSION_PROPERTY).accept(this);
@@ -1022,9 +979,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SynchronizedStatement)
-	 */
+	@Override
 	public boolean visit(SynchronizedStatement node) {
 		this.result.append("synchronized ("); //$NON-NLS-1$
 		getChildNode(node, SynchronizedStatement.EXPRESSION_PROPERTY).accept(this);
@@ -1033,9 +988,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ThisExpression)
-	 */
+	@Override
 	public boolean visit(ThisExpression node) {
 		ASTNode qualifier= getChildNode(node, ThisExpression.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -1046,9 +999,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ThrowStatement)
-	 */
+	@Override
 	public boolean visit(ThrowStatement node) {
 		this.result.append("throw "); //$NON-NLS-1$
 		getChildNode(node, ThrowStatement.EXPRESSION_PROPERTY).accept(this);
@@ -1056,13 +1007,13 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TryStatement)
-	 */
+	@Override
 	public boolean visit(TryStatement node) {
 		this.result.append("try "); //$NON-NLS-1$
-		if (node.getAST().apiLevel() >= JLS4_INTERNAL) {
-			visitList(node, TryStatement.RESOURCES_PROPERTY, String.valueOf(';'), String.valueOf('('), String.valueOf(')'));
+		int level = node.getAST().apiLevel();
+		if (level >= JLS4_INTERNAL) {
+			StructuralPropertyDescriptor desc = level < JLS9_INTERNAL ? INTERNAL_TRY_STATEMENT_RESOURCES_PROPERTY : TryStatement.RESOURCES2_PROPERTY;
+			visitList(node, desc, String.valueOf(';'), String.valueOf('('), String.valueOf(')'));
 		}
 		getChildNode(node, TryStatement.BODY_PROPERTY).accept(this);
 		this.result.append(' ');
@@ -1075,9 +1026,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeDeclaration)
-	 */
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		int apiLevel= node.getAST().apiLevel();
 
@@ -1118,9 +1067,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(TypeDeclarationStatement node) {
 		if (node.getAST().apiLevel() == JLS2_INTERNAL) {
 			getChildNode(node, INTERNAL_TDS_TYPE_DECLARATION_PROPERTY).accept(this);
@@ -1130,26 +1077,28 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeLiteral)
-	 */
+	@Override
 	public boolean visit(TypeLiteral node) {
 		getChildNode(node, TypeLiteral.TYPE_PROPERTY).accept(this);
 		this.result.append(".class"); //$NON-NLS-1$
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(UnionType)
-	 */
+	@Override
 	public boolean visit(UnionType node) {
 		visitList(node, UnionType.TYPES_PROPERTY, " | ", Util.EMPTY_STRING, Util.EMPTY_STRING); //$NON-NLS-1$
 		return false;
 	}
-	
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationExpression)
-	 */
+
+	@Override
+	public boolean visit(UsesDirective node) {
+		this.result.append("uses "); //$NON-NLS-1$
+		getChildNode(node, UsesDirective.NAME_PROPERTY).accept(this);
+		this.result.append(';');
+		return false;
+	}
+
+	@Override
 	public boolean visit(VariableDeclarationExpression node) {
 		if (node.getAST().apiLevel() == JLS2_INTERNAL) {
 			printModifiers(getIntAttribute(node, INTERNAL_VDE_MODIFIERS_PROPERTY), this.result);
@@ -1162,9 +1111,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationFragment)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationFragment node) {
 		getChildNode(node, VariableDeclarationFragment.NAME_PROPERTY).accept(this);
 		visitExtraDimensions(node, INTERNAL_FRAGMENT_EXTRA_DIMENSIONS_PROPERTY, VariableDeclarationFragment.EXTRA_DIMENSIONS2_PROPERTY);
@@ -1176,9 +1123,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(VariableDeclarationStatement)
-	 */
+	@Override
 	public boolean visit(VariableDeclarationStatement node) {
 		if (node.getAST().apiLevel() == JLS2_INTERNAL) {
 			printModifiers(getIntAttribute(node, INTERNAL_VDS_MODIFIERS_PROPERTY), this.result);
@@ -1192,9 +1137,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(WhileStatement)
-	 */
+	@Override
 	public boolean visit(WhileStatement node) {
 		this.result.append("while ("); //$NON-NLS-1$
 		getChildNode(node, WhileStatement.EXPRESSION_PROPERTY).accept(this);
@@ -1203,22 +1146,17 @@
 		return false;
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.BlockComment)
-	 */
+	@Override
 	public boolean visit(BlockComment node) {
 		return false; // cant flatten, needs source
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.LineComment)
-	 */
+
+	@Override
 	public boolean visit(LineComment node) {
 		return false; // cant flatten, needs source
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MemberRef)
-	 */
+
+	@Override
 	public boolean visit(MemberRef node) {
 		ASTNode qualifier= getChildNode(node, MemberRef.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -1228,9 +1166,8 @@
 		getChildNode(node, MemberRef.NAME_PROPERTY).accept(this);
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MethodRef)
-	 */
+
+	@Override
 	public boolean visit(MethodRef node) {
 		ASTNode qualifier= getChildNode(node, MethodRef.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -1243,9 +1180,8 @@
 		this.result.append(')');
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.MethodRefParameter)
-	 */
+
+	@Override
 	public boolean visit(MethodRefParameter node) {
 		getChildNode(node, MethodRefParameter.TYPE_PROPERTY).accept(this);
 		if (node.getAST().apiLevel() >= JLS3_INTERNAL) {
@@ -1260,9 +1196,8 @@
 		}
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TagElement)
-	 */
+
+	@Override
 	public boolean visit(TagElement node) {
 		Object tagName= getAttribute(node, TagElement.TAG_NAME_PROPERTY);
 		if (tagName != null) {
@@ -1284,17 +1219,14 @@
 		}
 		return false;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TextElement)
-	 */
+
+	@Override
 	public boolean visit(TextElement node) {
 		this.result.append(getAttribute(node, TextElement.TEXT_PROPERTY));
 		return false;
 	}
-	/*
-	 * @see ASTVisitor#visit(AnnotationTypeDeclaration)
-	 * @since 3.0
-	 */
+
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		ASTNode javadoc= getChildNode(node, AnnotationTypeDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -1309,10 +1241,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(AnnotationTypeMemberDeclaration)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(AnnotationTypeMemberDeclaration node) {
 		ASTNode javadoc= getChildNode(node, AnnotationTypeMemberDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -1332,10 +1261,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnhancedForStatement)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(EnhancedForStatement node) {
 		this.result.append("for (");//$NON-NLS-1$
 		getChildNode(node, EnhancedForStatement.PARAMETER_PROPERTY).accept(this);
@@ -1346,10 +1272,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnumConstantDeclaration)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(EnumConstantDeclaration node) {
 		ASTNode javadoc= getChildNode(node, EnumConstantDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -1365,10 +1288,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(EnumDeclaration)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		ASTNode javadoc= getChildNode(node, EnumDeclaration.JAVADOC_PROPERTY);
 		if (javadoc != null) {
@@ -1386,9 +1306,8 @@
 		this.result.append('}');
 		return false;
 	}
-	/*
-	 * @see ASTVisitor#visit(ExpressionMethodReference)
-	 */
+
+	@Override
 	public boolean visit(ExpressionMethodReference node) {
 		getChildNode(node, ExpressionMethodReference.EXPRESSION_PROPERTY).accept(this);
 		this.result.append("::"); //$NON-NLS-1$
@@ -1397,39 +1316,38 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MarkerAnnotation)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(MarkerAnnotation node) {
 		this.result.append('@');
 		getChildNode(node, MarkerAnnotation.TYPE_NAME_PROPERTY).accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(MemberValuePair)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(MemberValuePair node) {
 		getChildNode(node, MemberValuePair.NAME_PROPERTY).accept(this);
 		this.result.append('=');
 		getChildNode(node, MemberValuePair.VALUE_PROPERTY).accept(this);
 		return false;
 	}
-	/*
-	 * @see ASTVisitor#visit(Modifier)
-	 * @since 3.0
-	 */
+
+	@Override
 	public boolean visit(Modifier node) {
 		this.result.append(getAttribute(node, Modifier.KEYWORD_PROPERTY).toString());
 		return false;
 	}
 
+	@Override
 	/*
-	 * @see ASTVisitor#visit(NormalAnnotation)
-	 * @since 3.0
+	 * @see ASTVisitor#visit(ModuleModifier)
+	 * @since 3.14
 	 */
+	public boolean visit(ModuleModifier node) {
+		this.result.append(getAttribute(node, ModuleModifier.KEYWORD_PROPERTY).toString());
+		return false;
+	}
+
+	@Override
 	public boolean visit(NormalAnnotation node) {
 		this.result.append('@');
 		getChildNode(node, NormalAnnotation.TYPE_NAME_PROPERTY).accept(this);
@@ -1439,24 +1357,18 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(NameQualifiedType)
-	 * @since 3.10
-	 */
+	@Override
 	public boolean visit(NameQualifiedType node) {
 		getChildNode(node, NameQualifiedType.QUALIFIER_PROPERTY).accept(this);
 		this.result.append('.');
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, NameQualifiedType.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		getChildNode(node, NameQualifiedType.NAME_PROPERTY).accept(this);
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(ParameterizedType)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(ParameterizedType node) {
 		getChildNode(node, ParameterizedType.TYPE_PROPERTY).accept(this);
 		this.result.append('<');
@@ -1465,23 +1377,18 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(QualifiedType)
-	 * @since 3.0
-	 */
+	@Override
 	public boolean visit(QualifiedType node) {
 		getChildNode(node, QualifiedType.QUALIFIER_PROPERTY).accept(this);
 		this.result.append('.');
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, QualifiedType.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		getChildNode(node, QualifiedType.NAME_PROPERTY).accept(this);
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.SingleMemberAnnotation)
-	 */
+	@Override
 	public boolean visit(SingleMemberAnnotation node) {
 		this.result.append('@');
 		getChildNode(node, SingleMemberAnnotation.TYPE_NAME_PROPERTY).accept(this);
@@ -1491,9 +1398,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(SuperMethodReference)
-	 */
+	@Override
 	public boolean visit(SuperMethodReference node) {
 		ASTNode qualifier = getChildNode(node, SuperMethodReference.QUALIFIER_PROPERTY);
 		if (qualifier != null) {
@@ -1506,9 +1411,7 @@
 		return false;
 	}
 
-	/*
-	 * @see ASTVisitor#visit(TypeMethodReference)
-	 */
+	@Override
 	public boolean visit(TypeMethodReference node) {
 		getChildNode(node, TypeMethodReference.TYPE_PROPERTY).accept(this);
 		this.result.append("::"); //$NON-NLS-1$
@@ -1517,11 +1420,9 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.TypeParameter)
-	 */
+	@Override
 	public boolean visit(TypeParameter node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, TypeParameter.MODIFIERS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		getChildNode(node, TypeParameter.NAME_PROPERTY).accept(this);
@@ -1529,11 +1430,9 @@
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#visit(org.aspectj.org.eclipse.jdt.core.dom.WildcardType)
-	 */
+	@Override
 	public boolean visit(WildcardType node) {
-		if (node.getAST().apiLevel() >= AST.JLS8) {
+		if (node.getAST().apiLevel() >= JLS8_INTERNAL) {
 			visitList(node, WildcardType.ANNOTATIONS_PROPERTY, String.valueOf(' '), Util.EMPTY_STRING, String.valueOf(' '));
 		}
 		this.result.append('?');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.java
index 8257ead..8aa603e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFormatter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -54,9 +54,7 @@
 			this.positions= new ArrayList();
 		}
 
-		/* (non-Javadoc)
-		 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#preVisit(ASTNode)
-		 */
+		@Override
 		public void preVisit(ASTNode node) {
 			Object trackData= getEventStore().getTrackedNodeData(node);
 			if (trackData != null) {
@@ -68,9 +66,7 @@
 			}
 		}
 
-		/* (non-Javadoc)
-		 * @see org.aspectj.org.eclipse.jdt.core.dom.ASTVisitor#postVisit(ASTNode)
-		 */
+		@Override
 		public void postVisit(ASTNode node) {
 			Object placeholderData= getPlaceholders().getPlaceholderData(node);
 			if (placeholderData != null) {
@@ -82,9 +78,7 @@
 			}
 		}
 
-		/* (non-Javadoc)
-		 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.ASTRewriteFlattener#visit(org.aspectj.org.eclipse.jdt.core.dom.Block)
-		 */
+		@Override
 		public boolean visit(Block node) {
 			if (getPlaceholders().isCollapsed(node)) {
 				visitList(node, Block.STATEMENTS_PROPERTY, null);
@@ -294,6 +288,9 @@
 				case ASTNode.COMPILATION_UNIT:
 					code= CodeFormatter.K_COMPILATION_UNIT;
 					break;
+				case ASTNode.MODULE_DECLARATION:
+					code= CodeFormatter.K_MODULE_INFO;
+					break;
 				case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
 					suffix= ";"; //$NON-NLS-1$
 					code= CodeFormatter.K_STATEMENTS;
@@ -335,6 +332,9 @@
 					suffix= " class x {}"; //$NON-NLS-1$
 					code= CodeFormatter.K_COMPILATION_UNIT;
 					break;
+				case ASTNode.MODULE_MODIFIER:
+					code= CodeFormatter.K_MODULE_INFO;
+					break;
 				case ASTNode.TYPE_PARAMETER:
 					prefix= "class X<"; //$NON-NLS-1$
 					suffix= "> {}"; //$NON-NLS-1$
@@ -415,6 +415,7 @@
 
 				doc.addPositionCategory(POS_CATEGORY);
 				doc.addPositionUpdater(new DefaultPositionUpdater(POS_CATEGORY) {
+					@Override
 					protected boolean notDeleted() {
 						int start= this.fOffset;
 						int end= start + this.fLength;
@@ -456,6 +457,7 @@
 			this.prefix= prefix;
 		}
 
+		@Override
 		public String getPrefix(int indent) {
 			return this.prefix;
 		}
@@ -474,6 +476,7 @@
 			this.kind= kind;
 		}
 
+		@Override
 		public String getPrefix(int indent) {
 			Position pos= new Position(this.start, this.length);
 			String str= this.string;
@@ -494,6 +497,7 @@
 			this.prefix= prefix;
 		}
 
+		@Override
 		public String[] getPrefixAndSuffix(int indent, ASTNode node, RewriteEventStore events) {
 			String nodeString= ASTRewriteFlattener.asString(node, events);
 			String str= this.prefix + nodeString;
@@ -518,6 +522,7 @@
 			this.prefix= prefix;
 		}
 
+		@Override
 		public String[] getPrefixAndSuffix(int indent, ASTNode node, RewriteEventStore events) {
 			String nodeString= ASTRewriteFlattener.asString(node, events);
 			int nodeStart= this.prefix.length();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.java
index 9efc73b..179f0b5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/LineInformation.java
@@ -22,6 +22,7 @@
 
 	public static LineInformation create(final IDocument doc) {
 		return new LineInformation() {
+			@Override
 			public int getLineOfOffset(int offset) {
 				try {
 					return doc.getLineOfOffset(offset);
@@ -30,6 +31,7 @@
 				}
 			}
 
+			@Override
 			public int getLineOffset(int line) {
 				try {
 					return doc.getLineOffset(line);
@@ -42,9 +44,11 @@
 
 	public static LineInformation create(final CompilationUnit astRoot) {
 		return new LineInformation() {
+			@Override
 			public int getLineOfOffset(int offset) {
 				return astRoot.getLineNumber(offset) - 1;
 			}
+			@Override
 			public int getLineOffset(int line) {
 				return astRoot.getPosition(line + 1, 0);
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.java
index b230900..c6a94d9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/ListRewriteEvent.java
@@ -70,9 +70,7 @@
 		return this.listEntries;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.ASTRewriteChange#getChangeKind()
-	 */
+	@Override
 	public int getChangeKind() {
 		if (this.listEntries != null) {
 			for (int i= 0; i < this.listEntries.size(); i++) {
@@ -85,31 +83,23 @@
 		return UNCHANGED;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.ASTRewriteChange#isListChange()
-	 */
+	@Override
 	public boolean isListRewrite() {
 		return true;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#getChildren()
-	 */
+	@Override
 	public RewriteEvent[] getChildren() {
 		List entries= getEntries();
 		return (RewriteEvent[]) entries.toArray(new RewriteEvent[entries.size()]);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#getOriginalNode()
-	 */
+	@Override
 	public Object getOriginalValue() {
 		return this.originalNodes;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#getNewValue()
-	 */
+	@Override
 	public Object getNewValue() {
 		List entries= getEntries();
 		ArrayList res= new ArrayList(entries.size());
@@ -193,9 +183,7 @@
 		return ((NodeRewriteEvent) getEntries().get(index)).getChangeKind();
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		StringBuffer buf= new StringBuffer();
 		buf.append(" [list change\n\t"); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.java
index 7bc9f22..c154888 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeInfoStore.java
@@ -143,6 +143,7 @@
 	// AspectJ extension - raised visibility to public 
 	public /*protected*/ static final class CopyPlaceholderData extends PlaceholderData {
 		public CopySourceInfo copySource;
+		@Override
 		public String toString() {
 			return "[placeholder " + this.copySource +"]";  //$NON-NLS-1$//$NON-NLS-2$
 		}
@@ -151,6 +152,7 @@
     // AspectJ extension - raised visibility to public 
 	public /*protected*/ static final class StringPlaceholderData extends PlaceholderData {
 		public String code;
+		@Override
 		public String toString() {
 			return "[placeholder string: " + this.code +"]"; //$NON-NLS-1$ //$NON-NLS-2$
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.java
index 417a2f7..75d08db 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/NodeRewriteEvent.java
@@ -28,6 +28,7 @@
 	/**
 	 * @return Returns the new value.
 	 */
+	@Override
 	public Object getNewValue() {
 		return this.newValue;
 	}
@@ -35,13 +36,12 @@
 	/**
 	 * @return Returns the original value.
 	 */
+	@Override
 	public Object getOriginalValue() {
 		return this.originalValue;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#getChangeKind()
-	 */
+	@Override
 	public int getChangeKind() {
 		if (this.originalValue == this.newValue) {
 			return UNCHANGED;
@@ -58,10 +58,7 @@
 		return REPLACED;
 	}
 
-
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#isListRewrite()
-	 */
+	@Override
 	public boolean isListRewrite() {
 		return false;
 	}
@@ -74,16 +71,12 @@
 		this.newValue= newValue;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.RewriteEvent#getChildren()
-	 */
+	@Override
 	public RewriteEvent[] getChildren() {
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		StringBuffer buf= new StringBuffer();
 		switch (getChangeKind()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.java
index d1e1c0c..557af09 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/RewriteEventStore.java
@@ -63,6 +63,7 @@
 			return this.property;
 		}
 
+		@Override
 		public boolean equals(Object obj) {
 			if (obj != null && obj.getClass().equals(getClass())) {
 				PropertyLocation other= (PropertyLocation) obj;
@@ -71,6 +72,7 @@
 			return false;
 		}
 
+		@Override
 		public int hashCode() {
 			return getParent().hashCode() + getProperty().hashCode();
 		}
@@ -106,6 +108,7 @@
 			this.event= change;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buf= new StringBuffer();
 			buf.append(this.parent).append(" - "); //$NON-NLS-1$
@@ -130,6 +133,7 @@
 			return this.node;
 		}
 
+		@Override
 		public int compareTo(Object o2) {
 			CopySourceInfo r2= (CopySourceInfo) o2;
 
@@ -144,6 +148,7 @@
 			return 0;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buf= new StringBuffer();
 			if (this.isMove) {
@@ -187,6 +192,7 @@
 			return (Block) this.copyInfo.getNode();
 		}
 
+		@Override
 		public int compareTo(Object o2) {
 			NodeRangeInfo r2= (NodeRangeInfo) o2;
 
@@ -214,6 +220,7 @@
 			internalPlaceholder.setSourceRange(startPos, endPos - startPos);
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buf= new StringBuffer();
 			if (this.first != this.last) {
@@ -262,16 +269,12 @@
 			}
 		}
 
-		/* (non-Javadoc)
-		 * @see java.util.Iterator#hasNext()
-		 */
+		@Override
 		public boolean hasNext() {
 			return this.eventIter.hasNext() || this.sourceNodeIter.hasNext() || this.rangeNodeIter.hasNext() || this.trackedNodeIter.hasNext();
 		}
 
-		/* (non-Javadoc)
-		 * @see java.util.Iterator#next()
-		 */
+		@Override
 		public Object next() {
 			if (this.eventIter.hasNext()) {
 				return this.eventIter.next();
@@ -285,9 +288,7 @@
 			return this.trackedNodeIter.next();
 		}
 
-		/* (non-Javadoc)
-		 * @see java.util.Iterator#remove()
-		 */
+		@Override
 		public void remove() {
 			throw new UnsupportedOperationException();
 		}
@@ -872,6 +873,7 @@
 		}
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buf= new StringBuffer();
 		for (Iterator iter = this.eventLookup.values().iterator(); iter.hasNext();) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.java
index d1addd0..1f50ef0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/SourceModifier.java
@@ -33,11 +33,13 @@
 		this.indentWidth= indentWidth;
 	}
 
+	@Override
 	public ISourceModifier copy() {
 		// We are state less
 		return this;
 	}
 
+	@Override
 	public ReplaceEdit[] getModifications(String source) {
 		List result= new ArrayList();
 		int destIndentLevel= IndentManipulation.measureIndentUnits(this.destinationIndent, this.tabWidth, this.indentWidth);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.java
index cb0c887..a1d4bad 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/TrackedNodePosition.java
@@ -30,9 +30,7 @@
 		this.node= node;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.ITrackedNodePosition#getStartPosition()
-	 */
+	@Override
 	public int getStartPosition() {
 		if (this.group.isEmpty()) {
 			return this.node.getStartPosition();
@@ -44,9 +42,7 @@
 		return coverage.getOffset();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.corext.dom.ITrackedNodePosition#getLength()
-	 */
+	@Override
 	public int getLength() {
 		if (this.group.isEmpty()) {
 			return this.node.getLength();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
index 3377f38..934171d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/dom/rewrite/imports/ImportRewriteAnalyzer.java
@@ -28,6 +28,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.aspectj.org.eclipse.jdt.core.IBuffer;
 import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
@@ -257,7 +258,7 @@
 	}
 
 	private static RewriteSite determineRewriteSite(
-			CompilationUnit compilationUnit, List<OriginalImportEntry> originalImports) {
+			CompilationUnit compilationUnit, List<OriginalImportEntry> originalImports) throws JavaModelException {
 		IRegion importsRegion = determineImportsRegion(originalImports);
 
 		IRegion surroundingRegion = determineSurroundingRegion(compilationUnit, importsRegion);
@@ -298,7 +299,7 @@
 	 * Determines the region to be occupied by imports, their associated comments, and surrounding
 	 * whitespace.
 	 */
-	private static IRegion determineSurroundingRegion(CompilationUnit compilationUnit, IRegion importsRegion) {
+	private static IRegion determineSurroundingRegion(CompilationUnit compilationUnit, IRegion importsRegion) throws JavaModelException {
 		NavigableMap<Integer, ASTNode> nodesTreeMap = mapTopLevelNodes(compilationUnit);
 
 		int surroundingStart;
@@ -326,8 +327,12 @@
 			positionAfterImports = importsRegion.getOffset() + importsRegion.getLength();
 		}
 
-		Integer ceilingKey = nodesTreeMap.ceilingKey(positionAfterImports);
-		int surroundingEnd = ceilingKey != null ? ceilingKey : compilationUnit.getLength();
+		int surroundingEnd = positionAfterImports;
+		IBuffer buffer = compilationUnit.getTypeRoot().getBuffer();
+		int length = buffer.getLength();
+		while (surroundingEnd < length && Character.isWhitespace(buffer.getChar(surroundingEnd))) {
+			surroundingEnd++;
+		}
 
 		return new Region(surroundingStart, surroundingEnd - surroundingStart);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.java
index 508caa9..9b617ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/EvaluationContextWrapper.java
@@ -48,6 +48,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#allVariables()
  */
+@Override
 public IGlobalVariable[] allVariables() {
 	GlobalVariable[] vars = this.context.allVariables();
 	int length = vars.length;
@@ -68,6 +69,7 @@
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, ICompletionRequestor)
  * @deprecated
  */
+@Override
 public void codeComplete(String codeSnippet, int position, ICompletionRequestor requestor) throws JavaModelException {
 	codeComplete(codeSnippet, position, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
@@ -75,6 +77,7 @@
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, ICompletionRequestor, WorkingCopyOwner)
  * @deprecated
  */
+@Override
 public void codeComplete(String codeSnippet, int position, ICompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	if (requestor == null) {
 		throw new IllegalArgumentException("Completion requestor cannot be null"); //$NON-NLS-1$
@@ -84,24 +87,28 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, CompletionRequestor)
  */
+@Override
 public void codeComplete(String codeSnippet, int position, CompletionRequestor requestor) throws JavaModelException {
 	codeComplete(codeSnippet, position, requestor, DefaultWorkingCopyOwner.PRIMARY);
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, CompletionRequestor, IProgressMonitor)
  */
+@Override
 public void codeComplete(String codeSnippet, int position, CompletionRequestor requestor, IProgressMonitor monitor) throws JavaModelException {
 	codeComplete(codeSnippet, position, requestor, DefaultWorkingCopyOwner.PRIMARY, null);
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, CompletionRequestor, WorkingCopyOwner)
  */
+@Override
 public void codeComplete(String codeSnippet, int position, CompletionRequestor requestor, WorkingCopyOwner owner) throws JavaModelException {
 	codeComplete(codeSnippet, position, requestor, owner, null);
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeComplete(String, int, CompletionRequestor, WorkingCopyOwner, IProgressMonitor)
  */
+@Override
 public void codeComplete(
 		String codeSnippet,
 		int position,
@@ -123,12 +130,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeSelect(String, int, int)
  */
+@Override
 public IJavaElement[] codeSelect(String codeSnippet, int offset, int length) throws JavaModelException {
 	return codeSelect(codeSnippet, offset, length, DefaultWorkingCopyOwner.PRIMARY);
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#codeSelect(String, int, int, WorkingCopyOwner)
  */
+@Override
 public IJavaElement[] codeSelect(String codeSnippet, int offset, int length, WorkingCopyOwner owner) throws JavaModelException {
 	SearchableEnvironment environment = this.project.newSearchableNameEnvironment(owner);
 	SelectionRequestor requestor= new SelectionRequestor(environment.nameLookup, null); // null because there is no need to look inside the code snippet itself
@@ -146,6 +155,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#deleteVariable(IGlobalVariable)
  */
+@Override
 public void deleteVariable(IGlobalVariable variable) {
 	if (variable instanceof GlobalVariableWrapper) {
 		GlobalVariableWrapper wrapper = (GlobalVariableWrapper)variable;
@@ -157,6 +167,7 @@
 /**
  * @see IEvaluationContext#evaluateCodeSnippet(String, String[], String[], int[], IType, boolean, boolean, ICodeSnippetRequestor, IProgressMonitor)
  */
+@Override
 public void evaluateCodeSnippet(
 	String codeSnippet,
 	String[] localVariableTypeNames,
@@ -203,7 +214,7 @@
 			}
 		} else {
 			// try to retrieve imports from the source
-			SourceMapper sourceMapper = ((ClassFile) declaringType.getClassFile()).getSourceMapper();
+			SourceMapper sourceMapper = ((AbstractClassFile) declaringType.getClassFile()).getSourceMapper();
 			if (sourceMapper != null) {
 				char[][] imports = sourceMapper.getImports((BinaryType) declaringType);
 				if (imports != null) {
@@ -237,6 +248,7 @@
 /**
  * @see IEvaluationContext#evaluateCodeSnippet(String, ICodeSnippetRequestor, IProgressMonitor)
  */
+@Override
 public void evaluateCodeSnippet(String codeSnippet, ICodeSnippetRequestor requestor, IProgressMonitor progressMonitor) throws JavaModelException {
 
 	checkBuilderState();
@@ -257,6 +269,7 @@
 /**
  * @see IEvaluationContext#evaluateVariable(IGlobalVariable, ICodeSnippetRequestor, IProgressMonitor)
  */
+@Override
 public void evaluateVariable(IGlobalVariable variable, ICodeSnippetRequestor requestor, IProgressMonitor progressMonitor) throws JavaModelException {
 
 	checkBuilderState();
@@ -278,7 +291,7 @@
  * Returns a name environment for the last built state.
  */
 protected INameEnvironment getBuildNameEnvironment() {
-	return new NameEnvironment(getProject());
+	return new NameEnvironment(getProject(), CompilationGroup.TEST);
 }
 public char[] getVarClassName() {
 	return this.context.getVarClassName();
@@ -287,6 +300,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#getImports()
  */
+@Override
 public String[] getImports() {
 	char[][] imports = this.context.getImports();
 	int length = imports.length;
@@ -311,6 +325,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#getPackageName()
  */
+@Override
 public String getPackageName() {
 	return new String(this.context.getPackageName());
 }
@@ -323,6 +338,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#getProject()
  */
+@Override
 public IJavaProject getProject() {
 	return this.project;
 }
@@ -335,6 +351,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#newVariable(String, String, String)
  */
+@Override
 public IGlobalVariable newVariable(String typeName, String name, String initializer) {
 	GlobalVariable newVar =
 		this.context.newVariable(
@@ -348,6 +365,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#setImports(String[])
  */
+@Override
 public void setImports(String[] imports) {
 	int length = imports.length;
 	char[][] result = new char[length][];
@@ -359,12 +377,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IEvaluationContext#setPackageName(String)
  */
+@Override
 public void setPackageName(String packageName) {
 	this.context.setPackageName(packageName.toCharArray());
 }
 /**
  * @see IEvaluationContext#validateImports(ICodeSnippetRequestor)
  */
+@Override
 public void validateImports(ICodeSnippetRequestor requestor) {
 
 	checkBuilderState();
@@ -382,6 +402,7 @@
  * @see IEvaluationContext#codeComplete(String, int, ICodeCompletionRequestor)
  * @deprecated - use codeComplete(String, int, ICompletionRequestor) instead
  */
+@Override
 public void codeComplete(String codeSnippet, int position, final org.aspectj.org.eclipse.jdt.core.ICodeCompletionRequestor requestor) throws JavaModelException {
 
 	if (requestor == null){
@@ -392,47 +413,61 @@
 		codeSnippet,
 		position,
 		new ICompletionRequestor(){
+			@Override
 			public void acceptAnonymousType(char[] superTypePackageName,char[] superTypeName,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
 				// implements interface method
 			}
+			@Override
 			public void acceptClass(char[] packageName, char[] className, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
 				requestor.acceptClass(packageName, className, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptError(IProblem error) {
 				// was disabled in 1.0
 			}
 
+			@Override
 			public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] name, char[] typePackageName, char[] typeName, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) {
 				requestor.acceptField(declaringTypePackageName, declaringTypeName, name, typePackageName, typeName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptInterface(char[] packageName,char[] interfaceName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance) {
 				requestor.acceptInterface(packageName, interfaceName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptKeyword(char[] keywordName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptKeyword(keywordName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptLabel(char[] labelName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptLabel(labelName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptLocalVariable(char[] name,char[] typePackageName,char[] typeName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
+			@Override
 			public void acceptMethod(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// skip parameter names
 				requestor.acceptMethod(declaringTypePackageName, declaringTypeName, selector, parameterPackageNames, parameterTypeNames, returnTypePackageName, returnTypeName, completionName, modifiers, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptMethodDeclaration(char[] declaringTypePackageName,char[] declaringTypeName,char[] selector,char[][] parameterPackageNames,char[][] parameterTypeNames,char[][] parameterNames,char[] returnTypePackageName,char[] returnTypeName,char[] completionName,int modifiers,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
+			@Override
 			public void acceptModifier(char[] modifierName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptModifier(modifierName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptPackage(char[] packageName,char[] completionName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptPackage(packageName, completionName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptType(char[] packageName,char[] typeName,char[] completionName,int completionStart,int completionEnd, int relevance){
 				requestor.acceptType(packageName, typeName, completionName, completionStart, completionEnd);
 			}
+			@Override
 			public void acceptVariableName(char[] typePackageName,char[] typeName,char[] name,char[] completionName,int completionStart,int completionEnd, int relevance){
 				// ignore
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.java
index 97fc02b..a0e92df 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/GlobalVariableWrapper.java
@@ -27,6 +27,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IGlobalVariable#getInitializer
  */
+@Override
 public String getInitializer() {
 	char[] initializer = this.variable.getInitializer();
 	if (initializer != null) {
@@ -38,12 +39,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IGlobalVariable#getName
  */
+@Override
 public String getName() {
 	return new String(this.variable.getName());
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.core.eval.IGlobalVariable#getTypeName
  */
+@Override
 public String getTypeName() {
 	return new String(this.variable.getTypeName());
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.java
index 0a0d66d..14b9fd9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/eval/RequestorWrapper.java
@@ -30,6 +30,7 @@
 /**
  * @see ICodeSnippetRequestor
  */
+@Override
 public boolean acceptClassFiles(ClassFile[] classFiles, char[] codeSnippetClassName) {
 	int length = classFiles.length;
 	byte[][] classFileBytes = new byte[length][];
@@ -50,6 +51,7 @@
 /**
  * @see ICodeSnippetRequestor
  */
+@Override
 public void acceptProblem(CategorizedProblem problem, char[] fragmentSource, int fragmentKind) {
 	try {
 		IMarker marker = ResourcesPlugin.getWorkspace().getRoot().createMarker(IJavaModelMarker.TRANSIENT_PROBLEM);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.java
index a7554d5..dc278df 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/ChangeCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -368,7 +368,8 @@
 	private void getAllTypesFromHierarchy(JavaElement element, ArrayList allTypes) {
 		switch (element.getElementType()) {
 			case IJavaElement.COMPILATION_UNIT:
-				ArrayList types = this.hierarchy.files.get(element);
+				IOpenable o = (IOpenable) element;
+				ArrayList types = this.hierarchy.files.get(o);
 				if (types != null) {
 					allTypes.addAll(types);
 				}
@@ -428,6 +429,7 @@
 		return this.changes.size() != 0;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		Iterator iterator = this.changes.entrySet().iterator();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.java
index 75de558..6f890ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBinaryType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -73,15 +73,18 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType
  */
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return null;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType
  */
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return null;
 }
+@Override
 public char[] getEnclosingMethod() {
 	return null;
 }
@@ -92,21 +95,25 @@
  *
  * For example, java.lang.String is java/lang/String.
  */
+@Override
 public char[] getEnclosingTypeName() {
 	return this.enclosingTypeName;
 }
 /**
  * Answer the receiver's fields or null if the array is empty.
  */
+@Override
 public IBinaryField[] getFields() {
 	return null;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return null;
 }
+@Override
 public char[] getGenericSignature() {
 	if (this.typeParameterSignatures != null && this.genericSignature == null) {
 		StringBuffer buffer = new StringBuffer();
@@ -134,6 +141,7 @@
  *
  * For example, java.lang.String is java/lang/String.
  */
+@Override
 public char[][] getInterfaceNames() {
 	return this.superInterfaces;
 }
@@ -143,12 +151,14 @@
  * This nested type info is extracted from the inner class attributes.
  * Ask the name environment to find a member type using its compound name.
  */
+@Override
 public IBinaryNestedType[] getMemberTypes() {
 	return null;
 }
 /**
  * Answer the receiver's methods or null if the array is empty.
  */
+@Override
 public IBinaryMethod[] getMethods() {
 	return null;
 }
@@ -156,6 +166,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType#getMissingTypeNames()
  */
+@Override
 public char[][][] getMissingTypeNames() {
 	return null;
 }
@@ -164,6 +175,7 @@
  * Answer an int whose bits are set according the access constants
  * defined by the VM spec.
  */
+@Override
 public int getModifiers() {
 	return this.modifiers;
 }
@@ -174,10 +186,12 @@
  *
  * For example, java.lang.String is java/lang/String.
  */
+@Override
 public char[] getName() {
 	return this.name;
 }
 
+@Override
 public char[] getSourceName() {
 	return this.sourceName;
 }
@@ -188,14 +202,17 @@
  *
  * For example, java.lang.String is java/lang/String.
  */
+@Override
 public char[] getSuperclassName() {
 	return this.superclass;
 }
 
 // TODO (jerome) please verify that we don't need the tagbits for the receiver
+@Override
 public long getTagBits() {
 	return 0;
 }
+@Override
 public boolean isAnonymous() {
 	return false; // index did not record this information (since unused for hierarchies)
 }
@@ -203,13 +220,16 @@
  * Answer whether the receiver contains the resolved binary form
  * or the unresolved source form of the type.
  */
+@Override
 public boolean isBinaryType() {
 	return true;
 }
 
+@Override
 public boolean isLocal() {
 	return false;  // index did not record this information (since unused for hierarchies)
 }
+@Override
 public boolean isMember() {
 	return false;  // index did not record this information (since unused for hierarchies)
 }
@@ -258,6 +278,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType
  */
+@Override
 public char[] sourceFileName() {
 	return null;
 }
@@ -297,10 +318,16 @@
 	}
 	return buffer.toString();
 }
+@Override
 public ITypeAnnotationWalker enrichWithExternalAnnotationsFor(ITypeAnnotationWalker walker, Object member, LookupEnvironment environment) {
 	return walker;
 }
 @Override
+public char[] getModule() {
+	// TODO Java 9 Auto-generated method stub
+	return null;
+}
+@Override
 public ExternalAnnotationStatus getExternalAnnotationStatus() {
 	return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
index e15ac21..b900c41 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyBuilder.java
@@ -18,7 +18,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
@@ -273,15 +273,15 @@
 /**
  * Create an ICompilationUnit info from the given compilation unit on disk.
  */
-protected ICompilationUnit createCompilationUnitFromPath(Openable handle, IFile file) {
-	final char[] elementName = handle.getElementName().toCharArray();
-	return new ResourceCompilationUnit(file) {
-		@Override
-		public char[] getFileName() {
-			return elementName;
-		}
-	};
-}
+	protected ICompilationUnit createCompilationUnitFromPath(Openable handle, IFile file) {
+		final char[] elementName = handle.getElementName().toCharArray();
+		return new ResourceCompilationUnit(file, null) {
+			@Override
+			public char[] getFileName() {
+				return elementName;
+			}
+		};
+	}
 	/**
  * Creates the type info from the given class file on disk and
  * adds it to the given list of infos.
@@ -313,7 +313,7 @@
  * Create a type info from the given class file in a jar and adds it to the given list of infos.
  */
 protected IBinaryType createInfoFromClassFileInJar(Openable classFile) {
-	IClassFile cf = (IClassFile)classFile;
+	IOrdinaryClassFile cf = (IOrdinaryClassFile)classFile;
 	IBinaryType info;
 	try {
 		info = BinaryTypeFactory.create(cf, null);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
index f6a788a..c7be1e1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -106,6 +106,7 @@
  * @param binaryType
  * @param packageBinding
  */
+@Override
 public void accept(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 	IProgressMonitor progressMonitor = this.builder.hierarchy.progressMonitor;
 	if (progressMonitor != null && progressMonitor.isCanceled())
@@ -123,6 +124,7 @@
  * Add an additional compilation unit.
  * @param sourceUnit
  */
+@Override
 public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 	//System.out.println("Cannot accept compilation units inside the HierarchyResolver.");
 	this.lookupEnvironment.problemReporter.abortDueToInternalError(
@@ -136,6 +138,7 @@
  * @param sourceTypes
  * @param packageBinding
  */
+@Override
 public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 	IProgressMonitor progressMonitor = this.builder.hierarchy.progressMonitor;
 	if (progressMonitor != null && progressMonitor.isCanceled())
@@ -831,7 +834,6 @@
 						parsedUnit.scope.faultInTypes();
 						parsedUnit.resolve();
 					}
-					
 					rememberAllTypes(parsedUnit, cus[i], containsLocalType);
 				}
 			}
@@ -880,14 +882,14 @@
 	if (compoundName == null || this.lookupEnvironment == null) return null;
 	this.focusType = this.lookupEnvironment.getCachedType(compoundName);
 	if (this.focusType == null) {
-		this.focusType = this.lookupEnvironment.askForType(compoundName);
+		this.focusType = this.lookupEnvironment.askForType(compoundName, this.lookupEnvironment.UnNamedModule);
 		if (this.focusType == null) {
 			int length = compoundName.length;
 			char[] typeName = compoundName[length-1];
 			int firstDollar = CharOperation.indexOf('$', typeName);
 			if (firstDollar != -1) {
 				compoundName[length-1] = CharOperation.subarray(typeName, 0, firstDollar);
-				this.focusType = this.lookupEnvironment.askForType(compoundName);
+				this.focusType = this.lookupEnvironment.askForType(compoundName, this.lookupEnvironment.UnNamedModule);
 				if (this.focusType != null) {
 					char[][] memberTypeNames = CharOperation.splitOn('$', typeName, firstDollar+1, typeName.length);
 					for (int i = 0; i < memberTypeNames.length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.java
index c44add5..82f7d15 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/HierarchyType.java
@@ -45,6 +45,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.typeHandle.getCompilationUnit().getElementName().toCharArray();
 }
@@ -53,6 +54,7 @@
  * Answer an int whose bits are set according the access constants
  * defined by the VM spec.
  */
+@Override
 public int getModifiers() {
 	return this.modifiers;
 }
@@ -60,6 +62,7 @@
  * Answer whether the receiver contains the resolved binary form
  * or the unresolved source form of the type.
  */
+@Override
 public boolean isBinaryType() {
 	return false;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
index 51a1020..e8c06a3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/IndexBasedHierarchyBuilder.java
@@ -119,6 +119,7 @@
 			}
 			return name;
 		}
+		@Override
 		public String toString(){
 			StringBuffer buffer = new StringBuffer("Queue:\n"); //$NON-NLS-1$
 			for (int i = this.start; i <= this.end; i++){
@@ -133,6 +134,7 @@
 	this.binariesFromIndexMatches = new HashMap(10);
 	this.scope = scope;
 }
+@Override
 public void build(boolean computeSubtypes) {
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	try {
@@ -193,6 +195,7 @@
 		}
 		subMonitor.split(1);
 		Arrays.sort(openables, new Comparator() {
+			@Override
 			public int compare(Object a, Object b) {
 				int aIndex = indexes.get(a);
 				int bIndex = indexes.get(b);
@@ -234,7 +237,8 @@
 				// top level or member type
 				if (!inProjectOfFocusType) {
 					char[] typeQualifiedName = focusType.getTypeQualifiedName('.').toCharArray();
-					String[] packageName = ((PackageFragment) focusType.getPackageFragment()).names;
+					PackageFragment fragment = (PackageFragment) focusType.getPackageFragment();
+					String[] packageName = fragment.names;
 					if (searchableEnvironment.findType(typeQualifiedName, Util.toCharArrays(packageName)) == null) {
 						// focus type is not visible in this project: no need to go further
 						return;
@@ -391,11 +395,13 @@
 		SubMonitor.done(monitor);
 	}
 }
+@Override
 protected ICompilationUnit createCompilationUnitFromPath(Openable handle, IFile file) {
 	ICompilationUnit unit = super.createCompilationUnitFromPath(handle, file);
 	this.cuToHandle.put(unit, handle);
 	return unit;
 }
+@Override
 protected IBinaryType createInfoFromClassFile(Openable classFile, IResource file) {
 	String documentPath = classFile.getPath().toString();
 	IBinaryType binaryType = (IBinaryType)this.binariesFromIndexMatches.get(documentPath);
@@ -406,6 +412,7 @@
 		return super.createInfoFromClassFile(classFile, file);
 	}
 }
+@Override
 protected IBinaryType createInfoFromClassFileInJar(Openable classFile) {
 	String filePath = (((ClassFile)classFile).getType().getFullyQualifiedName('$')).replace('.', '/') + SuffixConstants.SUFFIX_STRING_class;
 	IPackageFragmentRoot root = classFile.getPackageFragmentRoot();
@@ -428,6 +435,7 @@
 private String[] determinePossibleSubTypes(final HashSet localTypes, IProgressMonitor monitor) {
 	class PathCollector implements IPathRequestor {
 		HashSet paths = new HashSet(10);
+		@Override
 		public void acceptPath(String path, boolean containsLocalTypes) {
 			this.paths.add(path);
 			if (containsLocalTypes) {
@@ -583,6 +591,7 @@
 
 	/* use a special collector to collect paths and queue new subtype names */
 	IndexQueryRequestor searchRequestor = new IndexQueryRequestor() {
+		@Override
 		public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 			SuperTypeReferencePattern record = (SuperTypeReferencePattern)indexRecord;
 			boolean isLocalOrAnonymous = record.enclosingTypeName == IIndexConstants.ONE_ZERO;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.java
index 4997968..e406bf3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedHierarchyBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -16,10 +16,10 @@
 import java.util.Map;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
 import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IType;
@@ -38,6 +38,7 @@
 		super(hierarchy);
 	}
 
+@Override
 public void build(boolean computeSubtypes) {
 
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -183,7 +184,7 @@
 						openables.add(cus[i]);
 					}
 				} else {
-					IClassFile[] classFiles = packFrag.getClassFiles();
+					IOrdinaryClassFile[] classFiles = packFrag.getOrdinaryClassFiles();
 					for (int i = 0, length = classFiles.length; i < length; i++) {
 						openables.add(classFiles[i]);
 					}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
index f5be3a5..42eea89 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/RegionBasedTypeHierarchy.java
@@ -50,6 +50,7 @@
 /*
  * @see TypeHierarchy#initializeRegions
  */
+@Override
 protected void initializeRegions() {
 	super.initializeRegions();
 	IJavaElement[] roots = this.region.getElements();
@@ -69,10 +70,12 @@
 /**
  * Compute this type hierarchy.
  */
+@Override
 protected void compute() throws JavaModelException, CoreException {
 	HierarchyBuilder builder = new RegionBasedHierarchyBuilder(this);
 	builder.build(this.computeSubtypes);
 }
+@Override
 protected boolean isAffectedByOpenable(IJavaElementDelta delta, IJavaElement element, int eventType) {
 	// change to working copy
 	if (element instanceof CompilationUnit && ((CompilationUnit)element).isWorkingCopy()) {
@@ -89,6 +92,7 @@
 /**
  * Returns the java project this hierarchy was created in.
  */
+@Override
 public IJavaProject javaProject() {
 	return this.project;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
index 8c4f2da..c7afb7b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -238,6 +238,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public synchronized void addTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener) {
 	ArrayList<ITypeHierarchyChangedListener> listeners = this.changeListeners;
 	if (listeners == null) {
@@ -273,6 +274,10 @@
  */
 protected void cacheSuperclass(IType type, IType superclass) {
 	if (superclass != null) {
+		if (superclass.equals(type)) {
+			Util.log(IStatus.ERROR, "Type "+type.getFullyQualifiedName()+" is it's own superclass");  //$NON-NLS-1$//$NON-NLS-2$
+			return; // refuse to enter what could lead to a stackoverflow later
+		}
 		this.classToSuperclass.put(type, superclass);
 		addSubtype(superclass, type);
 	}
@@ -318,6 +323,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public boolean contains(IType type) {
 	// classes
 	if (this.classToSuperclass.get(type) != null) {
@@ -336,6 +342,7 @@
  * Determines if the change affects this hierarchy, and fires
  * change notification if required.
  */
+@Override
 public void elementChanged(ElementChangedEvent event) {
 	// type hierarchy change has already been fired
 	if (this.needsRefresh) return;
@@ -348,6 +355,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public boolean exists() {
 	if (!this.needsRefresh) return true;
 
@@ -373,9 +381,11 @@
 	for (int i= 0; i < listeners.size(); i++) {
 		final ITypeHierarchyChangedListener listener= listeners.get(i);
 		SafeRunner.run(new ISafeRunnable() {
+			@Override
 			public void handleException(Throwable exception) {
 				Util.log(exception, "Exception occurred in listener of Type hierarchy change notification"); //$NON-NLS-1$
 			}
+			@Override
 			public void run() throws Exception {
 				listener.typeHierarchyChanged(TypeHierarchy.this);
 			}
@@ -400,6 +410,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllClasses() {
 
 	TypeVector classes = this.rootClasses.copy();
@@ -411,6 +422,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllInterfaces() {
 	IType[] collection= new IType[this.interfaces.size()];
 	this.interfaces.toArray(collection);
@@ -419,6 +431,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[]  getAllSubtypes(IType type) {
 	return getAllSubtypesForType(type);
 }
@@ -448,6 +461,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllSuperclasses(IType type) {
 	IType superclass = getSuperclass(type);
 	TypeVector supers = new TypeVector();
@@ -460,6 +474,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllSuperInterfaces(IType type) {
 	ArrayList<IType> supers = getAllSuperInterfaces0(type, null);
 	if (supers == null)
@@ -491,6 +506,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllSupertypes(IType type) {
 	ArrayList<IType> supers = getAllSupertypes0(type, null);
 	if (supers == null)
@@ -526,6 +542,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getAllTypes() {
 	IType[] classes = getAllClasses();
 	int classesLength = classes.length;
@@ -540,6 +557,7 @@
 /**
  * @see ITypeHierarchy#getCachedFlags(IType)
  */
+@Override
 public int getCachedFlags(IType type) {
 	Integer flagObject = this.typeFlags.get(type);
 	if (flagObject != null){
@@ -551,6 +569,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getExtendingInterfaces(IType type) {
 	if (!isInterface(type)) return NO_TYPE;
 	return getExtendingInterfaces0(type);
@@ -585,6 +604,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getImplementingClasses(IType type) {
 	if (!isInterface(type)) {
 		return NO_TYPE;
@@ -620,12 +640,14 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getRootClasses() {
 	return this.rootClasses.elements();
 }
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getRootInterfaces() {
 	IType[] allInterfaces = getAllInterfaces();
 	IType[] roots = new IType[allInterfaces.length];
@@ -645,6 +667,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getSubclasses(IType type) {
 	if (isInterface(type)) {
 		return NO_TYPE;
@@ -658,6 +681,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getSubtypes(IType type) {
 	return getSubtypesForType(type);
 }
@@ -674,6 +698,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType getSuperclass(IType type) {
 	if (isInterface(type)) {
 		return null;
@@ -683,6 +708,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getSuperInterfaces(IType type) {
 	IType[] types = this.typeToSuperInterfaces.get(type);
 	if (types == null) {
@@ -693,6 +719,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType[] getSupertypes(IType type) {
 	IType superclass = getSuperclass(type);
 	if (superclass == null) {
@@ -706,6 +733,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public IType getType() {
 	return this.focusType;
 }
@@ -1038,7 +1066,8 @@
 	} else if (element instanceof ClassFile) {
 		switch (delta.getKind()) {
 			case IJavaElementDelta.REMOVED:
-				return this.files.get(element) != null;
+				IOpenable o = (IOpenable) element;
+				return this.files.get(o) != null;
 			case IJavaElementDelta.ADDED:
 				IType type = ((ClassFile)element).getType();
 				String typeName = type.getElementName();
@@ -1263,6 +1292,7 @@
  * TODO (jerome) should use a PerThreadObject to build the hierarchy instead of synchronizing
  * (see also isAffected(IJavaElementDelta))
  */
+@Override
 public synchronized void refresh(IProgressMonitor monitor) throws JavaModelException {
 	try {
 		this.progressMonitor = SubMonitor.convert(monitor,
@@ -1311,6 +1341,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public synchronized void removeTypeHierarchyChangedListener(ITypeHierarchyChangedListener listener) {
 	ArrayList<ITypeHierarchyChangedListener> listeners = this.changeListeners;
 	if (listeners == null) {
@@ -1326,6 +1357,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 @SuppressWarnings("unchecked")
 public void store(OutputStream output, IProgressMonitor monitor) throws JavaModelException {
 	try {
@@ -1506,6 +1538,7 @@
 /**
  * @see ITypeHierarchy
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append("Focus: "); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.java
index db15bba..a61f615 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/DiskIndex.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,7 @@
 package org.aspectj.org.eclipse.jdt.internal.core.index;
 
 import java.io.*;
+import java.util.regex.Pattern;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.search.*;
@@ -46,7 +47,7 @@
 private int streamEnd; // used when writing data from the streamBuffer to the file
 char separator = Index.DEFAULT_SEPARATOR;
 
-public static final String SIGNATURE= "INDEX VERSION 1.129"; //$NON-NLS-1$
+public static final String SIGNATURE= "INDEX VERSION 1.131"; //$NON-NLS-1$
 private static final char[] SIGNATURE_CHARS = SIGNATURE.toCharArray();
 public static boolean DEBUG = false;
 
@@ -210,6 +211,22 @@
 					prevResults = results != null;
 				}
 				break;
+			case SearchPattern.R_REGEXP_MATCH:
+				Pattern pattern = Pattern.compile(new String(key));
+				for (int i = 0, l = categories.length; i < l; i++) {
+					HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], false);
+					if (wordsToDocNumbers != null) {
+						char[][] words = wordsToDocNumbers.keyTable;
+						Object[] values = wordsToDocNumbers.valueTable;
+						for (int j = 0, m = words.length; j < m; j++) {
+							char[] word = words[j];
+							if (word != null && pattern.matcher(new String(word)).matches())
+								results = addQueryResult(results, word, values[j], memoryIndex, prevResults);
+						}
+					}
+					prevResults = results != null;
+				}
+				break;
 			default:
 				for (int i = 0, l = categories.length; i < l; i++) {
 					HashtableOfObject wordsToDocNumbers = readCategoryTable(categories[i], false);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.java
index 98bd737..56f8763 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/FileIndexLocation.java
@@ -37,6 +37,7 @@
 		this.participantIndex = true;
 	}
 
+	@Override
 	public boolean createNewFile() throws IOException {
 		File directory = this.indexFile.getParentFile();
 		if (directory != null && !directory.exists()) {
@@ -46,31 +47,38 @@
 		return this.indexFile.createNewFile();
 	}
 
+	@Override
 	public boolean delete() {
 		return this.indexFile.delete();
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		if (!(other instanceof FileIndexLocation)) return false;
 		return this.indexFile.equals(((FileIndexLocation) other).indexFile);
 	}
 
+	@Override
 	public boolean exists() {
 		return this.indexFile.exists();
 	}
 
+	@Override
 	public String fileName() {
 		return this.indexFile.getName();
 	}
 	
+	@Override
 	public File getIndexFile() {
 		return this.indexFile;
 	}
 
+	@Override
 	InputStream getInputStream() throws IOException {
 		return new FileInputStream(this.indexFile);
 	}
 
+	@Override
 	public String getCanonicalFilePath() {
 		try {
 			return this.indexFile.getCanonicalPath();
@@ -80,18 +88,22 @@
 		return null;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.indexFile.hashCode();
 	}
 
+	@Override
 	public long lastModified() {
 		return this.indexFile.lastModified();
 	}
 
+	@Override
 	public long length() {
 		return this.indexFile.length();
 	}
 
+	@Override
 	public boolean startsWith(IPath path) {
 		try {
 			return path.isPrefixOf(new Path(this.indexFile.getCanonicalPath()));
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/Index.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/Index.java
index f7575e1..4f512f0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/Index.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/Index.java
@@ -192,12 +192,9 @@
 	// must own the write lock of the monitor
 	if (!hasChanged()) return;
 
-	int numberOfChanges = this.memoryIndex.docsToReferences.elementSize;
 	this.diskIndex.separator = this.separator;
 	this.diskIndex = this.diskIndex.mergeWith(this.memoryIndex);
 	this.memoryIndex = new MemoryIndex();
-	if (numberOfChanges > 1000)
-		System.gc(); // reclaim space if the MemoryIndex was very BIG
 }
 public void startQuery() {
 	if (this.diskIndex != null)
@@ -207,6 +204,7 @@
 	if (this.diskIndex != null)
 		this.diskIndex.stopQuery();
 }
+@Override
 public String toString() {
 	return "Index for " + this.containerPath; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.java
index b802fca..8afb58f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/IndexLocation.java
@@ -107,6 +107,7 @@
 		return this.url;
 	}
 
+	@Override
 	public int hashCode() {
 		return this.url.hashCode();
 	}
@@ -127,6 +128,7 @@
 
 	public abstract boolean startsWith(IPath path);
 
+	@Override
 	public String toString() {
 		return this.url.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.java
index 7b2067f..c339d9c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/index/JarIndexLocation.java
@@ -31,10 +31,12 @@
 		this.localUrl = localUrl2;
 	}
 
+	@Override
 	public boolean createNewFile() throws IOException {
 		return false;
 	}
 
+	@Override
 	public void close() {
 		if (this.jarFile != null) {
 			try {
@@ -46,15 +48,18 @@
 		}
 	}
 
+	@Override
 	public boolean delete() {
 		return false;
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		if (!(other instanceof JarIndexLocation)) return false;
 		return this.localUrl.equals(((JarIndexLocation) other).localUrl);
 	}
 
+	@Override
 	public boolean exists() {
 		try {
 			if (this.jarFile == null) {
@@ -71,14 +76,17 @@
 		return true;
 	}
 
+	@Override
 	public String fileName() {
 		return null;
 	}
 
+	@Override
 	public File getIndexFile() {
 		return null;
 	}
 
+	@Override
 	InputStream getInputStream() throws IOException {
 		if (this.jarFile == null) {
 			JarURLConnection connection = (JarURLConnection) this.localUrl.openConnection();
@@ -91,18 +99,22 @@
 		return this.jarFile.getInputStream(this.jarEntry);
 	}
 
+	@Override
 	public String getCanonicalFilePath() {
 		return null;
 	}
 
+	@Override
 	public long lastModified() {
 		return -1;
 	}
 
+	@Override
 	public long length() {
 		return -1;
 	}
 
+	@Override
 	public boolean startsWith(IPath path) {
 		return (path.isPrefixOf(new Path(this.localUrl.getPath())));
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.java
index d2772e5..703e8c3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/AbstractDOMBuilder.java
@@ -184,6 +184,7 @@
 /**
  * @see ILineStartFinder#getLineStart(int)
  */
+@Override
 public int getLineStart(int position) {
 	int lineSeparatorCount = this.fLineStartPositions.length;
 	// reverse traversal intentional.
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.java
index ec3a871..365f879 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/CompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,25 +36,36 @@
 
 	this.fMainTypeName = file.substring(start, end).toCharArray();
 }
+@Override
 public char[] getContents() {
 	return this.fContents;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return this.fFileName;
 }
+@Override
 public char[] getMainTypeName() {
 	return this.fMainTypeName;
 }
+@Override
 public char[][] getPackageName() {
 	return null;
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return false;
 }
+@Override
 public String toString() {
 	return "CompilationUnit[" + new String(this.fFileName) + "]";  //$NON-NLS-2$ //$NON-NLS-1$
 }
+@Override
+public char[] getModuleName() {
+	// TODO Java 9 Auto-generated method stub
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
index 46eee8f..5a0c3f5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMBuilder.java
@@ -63,6 +63,7 @@
 /**
  * @see IDocumentElementRequestor#acceptImport(int, int, int[], char[], int, boolean, int)
  */
+@Override
 public void acceptImport(int declarationStart, int declarationEnd, int[] javaDocPositions, char[] name,
 	int nameStart, boolean onDemand, int modifiers) {
 	int[] sourceRange = {declarationStart, declarationEnd};
@@ -80,6 +81,7 @@
 /**
  * @see IDocumentElementRequestor#acceptInitializer(int declarationStart, int declarationEnd, int[] javaDocPositions, int modifiers, int modifiersStart, int bodyStart, int bodyEnd)
  */
+@Override
 public void acceptInitializer(int declarationStart, int declarationEnd, int[] javaDocPositions, int modifiers,
 	int modifiersStart, int bodyStart, int bodyEnd) {
 	int[] sourceRange = {declarationStart, declarationEnd};
@@ -105,6 +107,7 @@
 /**
  * @see IDocumentElementRequestor#acceptPackage(int declarationStart, int declarationEnd, int[] javaDocPositions, char[] name, int nameStartPosition)
  */
+@Override
 public void acceptPackage(int declarationStart, int declarationEnd, int[] javaDocPositions, char[] name,
 	int nameStartPosition) {
 	int[] sourceRange = null;
@@ -129,6 +132,7 @@
  *
  * @see IDocumentElementRequestor
  */
+@Override
 public void acceptProblem(CategorizedProblem problem){
 	if (this.fBuildingSingleMember && this.fFinishedSingleMember) {
 		return;
@@ -143,6 +147,7 @@
  * <p>NOTE: nodes are added to the JDOM via the method #basicAddChild such that
  * the nodes in the newly created JDOM are not fragmented.
  */
+@Override
 protected void addChild(IDOMNode child) {
 	super.addChild(child);
 	if (this.fStack.isEmpty() && this.fFields != null) {
@@ -158,6 +163,7 @@
 /**
  * @see IDOMFactory#createCompilationUnit(String, String)
  */
+@Override
 public IDOMCompilationUnit createCompilationUnit(ICompilationUnit compilationUnit) {
 	initializeBuild(compilationUnit.getContents(), true, true, false);
 	getParser(this.options).parseCompilationUnit(compilationUnit);
@@ -389,6 +395,7 @@
 	int[] superinterfaceEnds,
 	int bodyStart)
  */
+@Override
 public void enterClass(int declarationStart, int[] javaDocPositions, int modifiers, int modifiersStart, int keywordStart,
 	char[] name, int nameStart, int nameEnd, char[] superclass, int superclassStart,
 	int superclassEnd, char[][] superinterfaces, int[] superinterfaceStarts,
@@ -420,6 +427,7 @@
 	int [] exceptionTypeEnds,
 	int bodyStart)
  */
+@Override
 public void enterConstructor(int declarationStart, int[] javaDocPositions, int modifiers, int modifiersStart,
 	char[] name, int nameStart, int nameEnd, char[][] parameterTypes,
 	int[] parameterTypeStarts, int[] parameterTypeEnds, char[][] parameterNames,
@@ -457,6 +465,7 @@
 	int extendedTypeDimensionCount,
 	int extendedTypeDimensionEnd)
  */
+@Override
 public void enterField(int declarationStart, int[] javaDocPositions, int modifiers, int modifiersStart,
 	char[] type, int typeStart, int typeEnd, int typeDimensionCount, char[] name,
 	int nameStart, int nameEnd, int extendedTypeDimensionCount,
@@ -505,6 +514,7 @@
 	int[] superinterfaceEnds,
 	int bodyStart)
  */
+@Override
 public void enterInterface(int declarationStart, int[] javaDocPositions, int modifiers, int modifiersStart, int keywordStart,
 	char[] name, int nameStart, int nameEnd, char[][] superinterfaces,
 	int[] superinterfaceStarts, int[] superinterfaceEnds, int bodyStart) {
@@ -540,6 +550,7 @@
 	int [] exceptionTypeEnds,
 	int bodyStart)
  */
+@Override
 public void enterMethod(int declarationStart, int[] javaDocPositions, int modifiers, int modifiersStart,
 	char[] returnType, int returnTypeStart, int returnTypeEnd, int returnTypeDimensionCount,
 	char[] name, int nameStart, int nameEnd, char[][] parameterTypes, int[] parameterTypeStarts,
@@ -639,6 +650,7 @@
  *
  * @see IDocumentElementRequestor#exitClass(int, int)
  */
+@Override
 public void exitClass(int bodyEnd, int declarationEnd) {
 	exitType(bodyEnd, declarationEnd);
 }
@@ -648,6 +660,7 @@
  *
  * @see IDocumentElementRequestor#exitConstructor(int, int)
  */
+@Override
 public void exitConstructor(int bodyEnd, int declarationEnd) {
 	exitAbstractMethod(bodyEnd, declarationEnd);
 }
@@ -657,6 +670,7 @@
  *
  * @see IDocumentElementRequestor#exitField(int, int)
  */
+@Override
 public void exitField(int bodyEnd, int declarationEnd) {
 	DOMField field = (DOMField)this.fStack.pop();
 	if (field.getEndPosition() < declarationEnd) {
@@ -684,6 +698,7 @@
  *
  * @see IDocumentElementRequestor#exitInterface(int, int)
  */
+@Override
 public void exitInterface(int bodyEnd, int declarationEnd) {
 	exitType(bodyEnd, declarationEnd);
 }
@@ -693,6 +708,7 @@
  *
  * @see IDocumentElementRequestor#exitMethod(int, int)
  */
+@Override
 public void exitMethod(int bodyEnd, int declarationEnd) {
 	exitAbstractMethod(bodyEnd, declarationEnd);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
index 2355267..b5199b6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMCompilationUnit.java
@@ -58,6 +58,7 @@
 /**
  * @see DOMNode#appendContents(CharArrayBuffer)
  */
+@Override
 protected void appendFragmentedContents(CharArrayBuffer buffer) {
 	buffer.append(getHeader());
 	appendContentsOfChildren(buffer);
@@ -65,18 +66,21 @@
 /**
  * @see IDOMNode#canHaveChildren()
  */
+@Override
 public boolean canHaveChildren() {
 	return true;
 }
 /**
  * @see IDOMCompilationUnit#getHeader()
  */
+@Override
 public String getHeader() {
 	return this.fHeader;
 }
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.PACKAGE_FRAGMENT) {
 		return ((IPackageFragment)parent).getCompilationUnit(getName());
@@ -87,6 +91,7 @@
 /**
  * @see IDOMCompilationUnit#getName()
  */
+@Override
 public String getName() {
 	IDOMType topLevelType= null;
 	IDOMType firstType= null;
@@ -116,6 +121,7 @@
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.COMPILATION_UNIT;
 }
@@ -134,6 +140,7 @@
 /**
  * @see IDOMNode#isAllowableChild(IDOMNode)
  */
+@Override
 public boolean isAllowableChild(IDOMNode node) {
 	if (node != null) {
 		int type= node.getNodeType();
@@ -146,6 +153,7 @@
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMCompilationUnit();
 }
@@ -154,6 +162,7 @@
  * the node on the line on which the node starts, and all whitespace after the node up to
  * the next node's start
  */
+@Override
 void normalize(ILineStartFinder finder) {
 	super.normalize(finder);
 	initalizeHeader();
@@ -161,6 +170,7 @@
 /**
  * @see IDOMCompilationUnit#setHeader(String)
  */
+@Override
 public void setHeader(String comment) {
 	this.fHeader= comment;
 	fragment();
@@ -168,12 +178,14 @@
 /**
  * @see IDOMCompilationUnit#setName(String)
  */
+@Override
 public void setName(String name) {
 	// nothing to do
 }
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	this.fHeader= ((DOMCompilationUnit)node).fHeader;
@@ -181,6 +193,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "COMPILATION_UNIT: " + getName(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.java
index a669745..a7bddd1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMField.java
@@ -153,12 +153,14 @@
  *
  * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberBodyContents(CharArrayBuffer buffer) {
 	// nothing to do
 }
 /**
  * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberDeclarationContents(CharArrayBuffer buffer) {
 
 	if (isVariableDeclarator()) {
@@ -199,6 +201,7 @@
  *
  * @see DOMMember#appendMemberHeaderFragment(CharArrayBuffer)
  */
+@Override
 protected void appendMemberHeaderFragment(CharArrayBuffer buffer) {
 
 	if (isVariableDeclarator()) {
@@ -211,6 +214,7 @@
 /**
  * @see DOMMember#appendSimpleContents(CharArrayBuffer)
  */
+@Override
 protected void appendSimpleContents(CharArrayBuffer buffer) {
 	// append eveything before my name
 	buffer.append(this.fDocument, this.fSourceRange[0], this.fNameRange[0] - this.fSourceRange[0]);
@@ -225,6 +229,7 @@
  * @exception DOMException if unable to generate detailed source indexes
  * 	for this node
  */
+@Override
 protected void becomeDetailed() throws DOMException {
 	if (!isDetailed()) {
 		if (isVariableDeclarator() || hasMultipleVariableDeclarators()) {
@@ -256,6 +261,7 @@
 /**
  * @see IDOMNode#clone()
  */
+@Override
 public Object clone() {
 	if (isVariableDeclarator() || hasMultipleVariableDeclarators()) {
 		return getFactory().createField(new String(getSingleVariableDeclaratorContents()));
@@ -286,6 +292,7 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	if (isVariableDeclarator() || hasMultipleVariableDeclarators()) {
 		return (DOMNode)getFactory().createField(new String(getSingleVariableDeclaratorContents()));
@@ -307,6 +314,7 @@
 /**
  * @see IDOMField#getInitializer()
  */
+@Override
 public String getInitializer() {
 	becomeDetailed();
 	if (hasInitializer()) {
@@ -322,6 +330,7 @@
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.TYPE) {
 		return ((IType)parent).getField(getName());
@@ -346,12 +355,14 @@
 /**
  * @see DOMMember#getMemberDeclarationStartPosition()
  */
+@Override
 protected int getMemberDeclarationStartPosition() {
 	return this.fTypeRange[0];
 }
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.FIELD;
 }
@@ -399,6 +410,7 @@
 /**
  * @see IDOMField#getType()
  */
+@Override
 public String getType() {
 	return this.fType;
 }
@@ -437,6 +449,7 @@
  *
  * @see IDOMNode#insertSibling(IDOMNode)
  */
+@Override
 public void insertSibling(IDOMNode sibling) throws IllegalArgumentException, DOMException {
 	if (isVariableDeclarator()) {
 		expand();
@@ -460,12 +473,14 @@
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMField();
 }
 /**
  * Normalizes this <code>DOMNode</code>'s end position.
  */
+@Override
 void normalizeEndPosition(ILineStartFinder finder, DOMNode next) {
 	if (next == null) {
 		// this node's end position includes all of the characters up
@@ -497,6 +512,7 @@
 /**
  * Normalizes this <code>DOMNode</code>'s start position.
  */
+@Override
 void normalizeStartPosition(int endPosition, ILineStartFinder finder) {
 	if (isVariableDeclarator()) {
 		// start position is end of last element
@@ -508,6 +524,7 @@
 /**
  * Offsets all the source indexes in this node by the given amount.
  */
+@Override
 protected void offset(int offset) {
 	super.offset(offset);
 	offsetRange(this.fInitializerRange, offset);
@@ -522,6 +539,7 @@
  *
  * @see IDOMNode#remove()
  */
+@Override
 public void remove() {
 	expand();
 	super.remove();
@@ -529,6 +547,7 @@
 /**
  * @see IDOMMember#setComment(String)
  */
+@Override
 public void setComment(String comment) {
 	expand();
 	super.setComment(comment);
@@ -536,6 +555,7 @@
 /**
  * @see IDOMMember#setFlags(int)
  */
+@Override
 public void setFlags(int flags) {
 	expand();
 	super.setFlags(flags);
@@ -550,6 +570,7 @@
 /**
  * @see IDOMField#setInitializer(String)
  */
+@Override
 public void setInitializer(String initializer) {
 	becomeDetailed();
 	fragment();
@@ -574,6 +595,7 @@
 /**
  * @see IDOMField#setName(String)
  */
+@Override
 public void setName(String name) throws IllegalArgumentException {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.element_nullName);
@@ -585,6 +607,7 @@
 /**
  * @see IDOMField#setType(String)
  */
+@Override
 public void setType(String typeName) throws IllegalArgumentException {
 	if (typeName == null) {
 		throw new IllegalArgumentException(Messages.element_nullType);
@@ -606,6 +629,7 @@
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	DOMField field= (DOMField)node;
@@ -617,6 +641,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "FIELD: " + getName(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.java
index e88b4d0..a9fb59a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMImport.java
@@ -94,6 +94,7 @@
 /**
  * @see DOMNode#appendFragmentedContents(CharArrayBuffer)
  */
+@Override
 protected void appendFragmentedContents(CharArrayBuffer buffer) {
 	if (this.fNameRange[0] < 0) {
 		buffer
@@ -111,6 +112,7 @@
 /**
  * @see IDOMNode#getContents()
  */
+@Override
 public String getContents() {
 	if (this.fName == null) {
 		return null;
@@ -121,12 +123,14 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	return (DOMNode)getFactory().createImport(getContents());
 }
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) {
 		return ((ICompilationUnit)parent).getImport(getName());
@@ -137,24 +141,28 @@
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.IMPORT;
 }
 /**
  * @see IDOMImport#isOnDemand()
  */
+@Override
 public boolean isOnDemand() {
 	return this.fOnDemand;
 }
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMImport();
 }
 /**
  * @see IDOMNode#setName(String)
  */
+@Override
 public void setName(String name) {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.element_nullName);
@@ -166,6 +174,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "IMPORT: " + getName(); //$NON-NLS-1$
 }
@@ -174,6 +183,7 @@
  * @see IDOMImport#getFlags()
  * @since 3.0
  */
+@Override
 public int getFlags() {
 	return this.fFlags;
 }
@@ -182,6 +192,7 @@
  * @see IDOMImport#setFlags(int)
  * @since 3.0
  */
+@Override
 public void setFlags(int flags) {
 	this.fFlags = flags;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
index 8806c39..04130cf 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMInitializer.java
@@ -102,6 +102,7 @@
 /**
  * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberBodyContents(CharArrayBuffer buffer) {
 	if (hasBody()) {
 		buffer
@@ -114,12 +115,14 @@
 /**
  * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberDeclarationContents(CharArrayBuffer buffer) {
 	// nothing to do
 }
 /**
  * @see DOMMember#appendSimpleContents(CharArrayBuffer)
  */
+@Override
 protected void appendSimpleContents(CharArrayBuffer buffer) {
 	// append eveything before my name
 	buffer.append(this.fDocument, this.fSourceRange[0], this.fNameRange[0] - this.fSourceRange[0]);
@@ -131,6 +134,7 @@
 /**
  * @see IDOMInitializer#getBody()
  */
+@Override
 public String getBody() {
 	becomeDetailed();
 	if (hasBody()) {
@@ -146,12 +150,14 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	return (DOMNode)getFactory().createInitializer(getContents());
 }
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.TYPE) {
 		int count = 1;
@@ -170,12 +176,14 @@
 /**
  * @see DOMMember#getMemberDeclarationStartPosition()
  */
+@Override
 protected int getMemberDeclarationStartPosition() {
 	return this.fBodyRange[0];
 }
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.INITIALIZER;
 }
@@ -185,18 +193,21 @@
  * <p>This method always answers false since an initializer
  * does not have a signature.
  */
+@Override
 public boolean isSignatureEqual(IDOMNode node) {
 	return false;
 }
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMInitializer();
 }
 /**
  * Offsets all the source indexes in this node by the given amount.
  */
+@Override
 protected void offset(int offset) {
 	super.offset(offset);
 	offsetRange(this.fBodyRange, offset);
@@ -204,6 +215,7 @@
 /**
  * @see IDOMInitializer#setBody(String)
  */
+@Override
 public void setBody(String body) {
 	becomeDetailed();
 	this.fBody= body;
@@ -213,12 +225,14 @@
 /**
  * @see IDOMInitializer#setName(String)
  */
+@Override
 public void setName(String name) {
 	// initializers have no name
 }
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	DOMInitializer init= (DOMInitializer)node;
@@ -228,6 +242,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "INITIALIZER"; //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.java
index 4e691cf..9571113 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMember.java
@@ -121,6 +121,7 @@
  *
  * @see DOMNode#appendFragmentedContents(CharArrayBuffer)
  */
+@Override
 protected void appendFragmentedContents(CharArrayBuffer buffer) {
 	if (isDetailed()) {
 		appendMemberHeaderFragment(buffer);
@@ -214,6 +215,7 @@
 /**
  * @see IDOMMember#getComment()
  */
+@Override
 public String getComment() {
 	becomeDetailed();
 	if (hasComment()) {
@@ -229,6 +231,7 @@
 /**
  * @see IDOMMember#getFlags()
  */
+@Override
 public int getFlags() {
 	return this.fFlags;
 }
@@ -268,6 +271,7 @@
 /**
  * Offsets all the source indexes in this node by the given amount.
  */
+@Override
 protected void offset(int offset) {
 	super.offset(offset);
 	offsetRange(this.fCommentRange, offset);
@@ -276,6 +280,7 @@
 /**
  * @see IDOMMember#setComment(String)
  */
+@Override
 public void setComment(String comment) {
 	becomeDetailed();
 	this.fComment= comment;
@@ -291,6 +296,7 @@
 /**
  * @see IDOMMember#setFlags(int)
  */
+@Override
 public void setFlags(int flags) {
 	becomeDetailed();
 	if (Flags.isDeprecated(this.fFlags)) {
@@ -323,6 +329,7 @@
  * Synchronize the start of the comment position with the start of the
  * node.
  */
+@Override
 protected void setStartPosition(int start) {
 	if (this.fCommentRange[0] >= 0) {
 		this.fCommentRange[0]= start;
@@ -332,6 +339,7 @@
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	DOMMember member= (DOMMember)node;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
index 009049f..bac821a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMMethod.java
@@ -244,6 +244,7 @@
 /**
  * @see IDOMMethod#addException(String)
  */
+@Override
 public void addException(String name) throws IllegalArgumentException {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.dom_nullExceptionType);
@@ -259,6 +260,7 @@
 /**
  * @see IDOMMethod#addParameter(String, String)
  */
+@Override
 public void addParameter(String type, String name) throws IllegalArgumentException {
 	if (type == null) {
 		throw new IllegalArgumentException(Messages.dom_nullTypeParameter);
@@ -283,6 +285,7 @@
 /**
  * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberBodyContents(CharArrayBuffer buffer) {
 	if (this.fBody != null) {
 		buffer.append(this.fBody);
@@ -293,6 +296,7 @@
 /**
  * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberDeclarationContents(CharArrayBuffer buffer) {
 
 	if (isConstructor()) {
@@ -354,6 +358,7 @@
 /**
  * @see DOMMember#appendSimpleContents(CharArrayBuffer)
  */
+@Override
 protected void appendSimpleContents(CharArrayBuffer buffer) {
 	// append eveything before my name
 	buffer.append(this.fDocument, this.fSourceRange[0], this.fNameRange[0] - this.fSourceRange[0]);
@@ -369,6 +374,7 @@
 /**
  * @see IDOMMethod#getBody()
  */
+@Override
 public String getBody() {
 	becomeDetailed();
 	if (hasBody()) {
@@ -403,15 +409,18 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	return (DOMNode)getFactory().createMethod(getContents());
 }
 /**
  * @see IDOMMethod#getExceptions()
  */
+@Override
 public String[] getExceptions() {
 	return this.fExceptions;
 }
+@Override
 protected char[] generateFlags() {
 	char[] flags= Flags.toString(getFlags() & ~Flags.AccVarargs).toCharArray();
 	if (flags.length == 0) {
@@ -422,6 +431,7 @@
 }/**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.TYPE) {
 		// translate parameter types to signatures
@@ -447,6 +457,7 @@
 /**
  * @see DOMMember#getMemberDeclarationStartPosition()
  */
+@Override
 protected int getMemberDeclarationStartPosition() {
 	if (this.fReturnTypeRange[0] >= 0) {
 		return this.fReturnTypeRange[0];
@@ -457,6 +468,7 @@
 /**
  * @see IDOMNode#getName()
  */
+@Override
 public String getName() {
 	if (isConstructor()) {
 		return null;
@@ -467,24 +479,28 @@
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.METHOD;
 }
 /**
  * @see IDOMMethod#getParameterNames()
  */
+@Override
 public String[] getParameterNames() {
 	return this.fParameterNames;
 }
 /**
  * @see IDOMMethod#getParameterTypes()
  */
+@Override
 public String[] getParameterTypes() {
 	return this.fParameterTypes;
 }
 /**
  * @see IDOMMethod#getReturnType()
  */
+@Override
 public String getReturnType() {
 	if (isConstructor()) {
 		return null;
@@ -517,6 +533,7 @@
 /**
  * @see IDOMMethod#isConstructor()
  */
+@Override
 public boolean isConstructor() {
 	return getMask(MASK_IS_CONSTRUCTOR);
 }
@@ -533,6 +550,7 @@
  * <p>Two methods have equal signatures if there names are the same
  * and their parameter types are the same.
  */
+@Override
 public boolean isSignatureEqual(IDOMNode node) {
 	boolean ok= node.getNodeType() == getNodeType();
 	if (ok) {
@@ -578,12 +596,14 @@
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMMethod();
 }
 /**
  * Offsets all the source indexes in this node by the given amount.
  */
+@Override
 protected void offset(int offset) {
 	super.offset(offset);
 	offsetRange(this.fBodyRange, offset);
@@ -594,6 +614,7 @@
 /**
  * @see IDOMMethod#setBody
  */
+@Override
 public void setBody(String body) {
 	becomeDetailed();
 	fragment();
@@ -612,6 +633,7 @@
 /**
  * @see IDOMMethod#setConstructor(boolean)
  */
+@Override
 public void setConstructor(boolean b) {
 	becomeDetailed();
 	setMask(MASK_IS_CONSTRUCTOR, b);
@@ -620,6 +642,7 @@
 /**
  * @see IDOMMethod#setExceptions(String[])
  */
+@Override
 public void setExceptions(String[] names) {
 	becomeDetailed();
 	if (names == null || names.length == 0) {
@@ -640,6 +663,7 @@
 /**
  * @see IDOMMethod#setName
  */
+@Override
 public void setName(String name) {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.element_nullName);
@@ -650,6 +674,7 @@
 /**
  * @see IDOMMethod#setParameters(String[], String[])
  */
+@Override
 public void setParameters(String[] types, String[] names) throws IllegalArgumentException {
 	becomeDetailed();
 	if (types== null || names == null) {
@@ -687,6 +712,7 @@
 /**
  * @see IDOMMethod#setReturnType(String)
  */
+@Override
 public void setReturnType(String name) throws IllegalArgumentException {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.dom_nullReturnType);
@@ -705,6 +731,7 @@
 }
 /**
  */
+@Override
 protected void setSourceRangeEnd(int end) {
 	super.setSourceRangeEnd(end);
 	this.fBodyRange[1]= end;
@@ -712,6 +739,7 @@
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	DOMMethod method= (DOMMethod)node;
@@ -730,6 +758,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	if (isConstructor()) {
 		return "CONSTRUCTOR"; //$NON-NLS-1$
@@ -742,6 +771,7 @@
  * @see IDOMMethod#setDefault(java.lang.String)
  * @since 3.0
  */
+@Override
 public void setDefault(String defaultValue) {
 	this.fDefaultValue =  defaultValue;
 }
@@ -750,6 +780,7 @@
  * @see IDOMMethod#getDefault()
  * @since 3.0
  */
+@Override
 public String getDefault() {
 	return this.fDefaultValue;
 }
@@ -758,6 +789,7 @@
  * @see IDOMMethod#getTypeParameters()
  * @since 3.0
  */
+@Override
 public String[] getTypeParameters() {
 	return this.fTypeParameters;
 }
@@ -766,6 +798,7 @@
  * @see IDOMMethod#setTypeParameters(java.lang.String[])
  * @since 3.0
  */
+@Override
 public void setTypeParameters(String[] typeParameters) {
 	this.fTypeParameters = typeParameters;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.java
index e144dd1..56b98c4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMNode.java
@@ -259,6 +259,7 @@
  *
  * @see IDOMNode#addChild(IDOMNode)
  */
+@Override
 public void addChild(IDOMNode child) throws IllegalArgumentException, DOMException {
 	basicAddChild(child);
 
@@ -406,12 +407,14 @@
  *
  * @see IDOMNode#canHaveChildren()
  */
+@Override
 public boolean canHaveChildren() {
 	return false;
 }
 /**
  * @see IDOMNode#clone()
  */
+@Override
 public Object clone() {
 
 	// create a new buffer with all my contents and children contents
@@ -492,6 +495,7 @@
 /**
  * @see IDOMNode#getCharacters()
  */
+@Override
 public char[] getCharacters() {
 	CharArrayBuffer buffer= new CharArrayBuffer();
 	appendContents(buffer);
@@ -500,6 +504,7 @@
 /**
  * @see IDOMNode#getChild(String)
  */
+@Override
 public IDOMNode getChild(String name) {
 	DOMNode child = this.fFirstChild;
 	while (child != null) {
@@ -520,6 +525,7 @@
 /**
  * @see IDOMNode#getChildren()
  */
+@Override
 public Enumeration getChildren() {
 	return new SiblingEnumeration(this.fFirstChild);
 }
@@ -534,6 +540,7 @@
  *
  * @see IDOMNode#getContents()
  */
+@Override
 public String getContents() {
 	CharArrayBuffer buffer= new CharArrayBuffer();
 	appendContents(buffer);
@@ -570,6 +577,7 @@
 /**
  * @see IDOMNode#getFirstChild()
  */
+@Override
 public IDOMNode getFirstChild() {
 	return this.fFirstChild;
 }
@@ -589,6 +597,7 @@
 /**
  * @see IDOMNode#getName()
  */
+@Override
 public String getName() {
 	return this.fName;
 }
@@ -612,12 +621,14 @@
 /**
  * @see IDOMNode#getNextNode()
  */
+@Override
 public IDOMNode getNextNode() {
 	return this.fNextNode;
 }
 /**
  * @see IDOMNode#getParent()
  */
+@Override
 public IDOMNode getParent() {
 	return this.fParent;
 }
@@ -640,6 +651,7 @@
 /**
  * @see IDOMNode#getPreviousNode()
  */
+@Override
 public IDOMNode getPreviousNode() {
 	return this.fPreviousNode;
 }
@@ -663,6 +675,7 @@
 /**
  * @see IDOMNode#insertSibling(IDOMNode)
  */
+@Override
 public void insertSibling(IDOMNode sibling) throws IllegalArgumentException, DOMException {
 	// verify sibling may be added
 	if (sibling == null) {
@@ -714,6 +727,7 @@
 /**
  * @see IDOMNode
  */
+@Override
 public boolean isAllowableChild(IDOMNode node) {
 	return false;
 }
@@ -758,6 +772,7 @@
  * type and names are equal. Node types that have other requirements
  * for equality must override this method.
  */
+@Override
 public boolean isSignatureEqual(IDOMNode node) {
 	return getNodeType() == node.getNodeType() && getName().equals(node.getName());
 }
@@ -866,6 +881,7 @@
  *
  * @see IDOMNode#remove()
  */
+@Override
 public void remove() {
 
 	if (this.fParent != null) {
@@ -907,6 +923,7 @@
 /**
  * @see IDOMNode#setName
  */
+@Override
 public void setName(String name) {
 	this.fName= name;
 	setNameAltered(true);
@@ -966,5 +983,6 @@
 /**
  * Returns a <code>String</code> representing this node - for Debug purposes only.
  */
+@Override
 public abstract String toString();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.java
index 5f5cd2c..54fe3b0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMPackage.java
@@ -75,6 +75,7 @@
 /**
  * @see DOMNode#appendFragmentedContents(CharArrayBuffer)
  */
+@Override
 protected void appendFragmentedContents(CharArrayBuffer buffer) {
 	if (this.fNameRange[0] < 0) {
 		String lineSeparator = Util.getLineSeparator(buffer.toString(), null);
@@ -94,6 +95,7 @@
 /**
  * @see IDOMNode#getContents()
  */
+@Override
 public String getContents() {
 	if (this.fName == null) {
 		return null;
@@ -104,12 +106,14 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	return (DOMNode)getFactory().createPackage(getContents());
 }
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) {
 		return ((ICompilationUnit)parent).getPackageDeclaration(getName());
@@ -120,18 +124,21 @@
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.PACKAGE;
 }
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMPackage();
 }
 /**
  * @see IDOMNode#setName
  */
+@Override
 public void setName(String name) {
 	becomeDetailed();
 	super.setName(name);
@@ -139,6 +146,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "PACKAGE: " + getName(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.java
index be6eb3b..b9f8824 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/DOMType.java
@@ -254,6 +254,7 @@
 /**
  * @see IDOMType#addSuperInterface(String)
  */
+@Override
 public void addSuperInterface(String name) throws IllegalArgumentException {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.dom_addNullInterface);
@@ -269,6 +270,7 @@
 /**
  * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
  */
+@Override
 protected void appendMemberBodyContents(CharArrayBuffer buffer) {
 	buffer.append(this.fDocument, this.fOpenBodyRange[0], this.fOpenBodyRange[1] + 1 - this.fOpenBodyRange[0]);
 	appendContentsOfChildren(buffer);
@@ -278,6 +280,7 @@
 /**
  * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer )
  */
+@Override
 protected void appendMemberDeclarationContents(CharArrayBuffer  buffer) {
 
 	if (this.fTypeKeyword != null) {
@@ -358,6 +361,7 @@
 /**
  * @see DOMMember#appendSimpleContents(CharArrayBuffer)
  */
+@Override
 protected void appendSimpleContents(CharArrayBuffer buffer) {
 	// append eveything before my name
 	buffer.append(this.fDocument, this.fSourceRange[0], this.fNameRange[0] - this.fSourceRange[0]);
@@ -377,6 +381,7 @@
 /**
  * @see IDOMNode#canHaveChildren()
  */
+@Override
 public boolean canHaveChildren() {
 	return true;
 }
@@ -391,12 +396,14 @@
 /**
  * @see DOMNode#getDetailedNode()
  */
+@Override
 protected DOMNode getDetailedNode() {
 	return (DOMNode)getFactory().createType(getContents());
 }
 /**
  * @see DOMNode#getInsertionPosition()
  */
+@Override
 public int getInsertionPosition() {
 	// this should return the position of the end of the last line separator before the closing brace of the type
 	// See PR 1GELSDQ: ITPJUI:WINNT - JDOM: IType.createMethod does not insert nicely for inner types
@@ -405,6 +412,7 @@
 /**
  * @see IDOMNode#getJavaElement
  */
+@Override
 public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
 	switch (parent.getElementType()) {
 		case IJavaElement.COMPILATION_UNIT:
@@ -419,12 +427,14 @@
 /**
  * @see DOMMember#getMemberDeclarationStartPosition()
  */
+@Override
 protected int getMemberDeclarationStartPosition() {
 	return this.fTypeRange[0];
 }
 /**
  * @see IDOMNode#getNodeType()
  */
+@Override
 public int getNodeType() {
 	return IDOMNode.TYPE;
 }
@@ -437,6 +447,7 @@
 /**
  * @see IDOMType#getSuperclass()
  */
+@Override
 public String getSuperclass() {
 	becomeDetailed();
 	if (getMask(MASK_TYPE_HAS_SUPERCLASS)) {
@@ -452,12 +463,14 @@
 /**
  * @see IDOMType#getSuperInterfaces()
  */
+@Override
 public String[] getSuperInterfaces() {
 	return this.fSuperInterfaces;
 }
 /**
  * @see IDOMNode
  */
+@Override
 public boolean isAllowableChild(IDOMNode node) {
 	if (node != null) {
 		int type= node.getNodeType();
@@ -471,12 +484,14 @@
 /**
  * @see IDOMType#isClass()
  */
+@Override
 public boolean isClass() {
 	return getMask(MASK_TYPE_IS_CLASS);
 }
 /**
  * @see DOMNode
  */
+@Override
 protected DOMNode newDOMNode() {
 	return new DOMType();
 }
@@ -485,6 +500,7 @@
  * the node on the line on which the node starts, and all whitespace after the node up to
  * the next node's start
  */
+@Override
 void normalize(ILineStartFinder finder) {
 	// perform final changes to the open and close body ranges
 	int openBodyEnd, openBodyStart, closeBodyStart, closeBodyEnd;
@@ -584,6 +600,7 @@
 /**
  * Normalizes this <code>DOMNode</code>'s end position.
  */
+@Override
 void normalizeEndPosition(ILineStartFinder finder, DOMNode next) {
 	if (next == null) {
 		// this node's end position includes all of the characters up
@@ -605,6 +622,7 @@
 /**
  * Offsets all the source indexes in this node by the given amount.
  */
+@Override
 protected void offset(int offset) {
 	super.offset(offset);
 	offsetRange(this.fCloseBodyRange, offset);
@@ -618,6 +636,7 @@
 /**
  * @see IDOMType#setClass(boolean)
  */
+@Override
 public void setClass(boolean b) {
 	becomeDetailed();
 	fragment();
@@ -650,6 +669,7 @@
  *
  * @see IDOMNode#setName(String)
  */
+@Override
 public void setName(String name) throws IllegalArgumentException {
 	if (name == null) {
 		throw new IllegalArgumentException(Messages.element_nullName);
@@ -678,6 +698,7 @@
 /**
  * @see IDOMType#setSuperclass(String)
  */
+@Override
 public void setSuperclass(String superclassName) {
 	becomeDetailed();
 	fragment();
@@ -687,6 +708,7 @@
 /**
  * @see IDOMType#setSuperInterfaces(String[])
  */
+@Override
 public void setSuperInterfaces(String[] names) {
 	becomeDetailed();
 	if (names == null) {
@@ -719,6 +741,7 @@
 /**
  * @see DOMNode#shareContents(DOMNode)
  */
+@Override
 protected void shareContents(DOMNode node) {
 	super.shareContents(node);
 	DOMType type= (DOMType)node;
@@ -737,6 +760,7 @@
 /**
  * @see IDOMNode#toString()
  */
+@Override
 public String toString() {
 	return "TYPE: " + getName(); //$NON-NLS-1$
 }
@@ -745,6 +769,7 @@
  * @see IDOMType#getTypeParameters()
  * @since 3.0
  */
+@Override
 public String[] getTypeParameters() {
 	return this.fTypeParameters;
 }
@@ -753,6 +778,7 @@
  * @see IDOMType#isEnum()
  * @since 3.0
  */
+@Override
 public boolean isEnum() {
 	return this.fIsEnum;
 }
@@ -761,6 +787,7 @@
  * @see IDOMType#isAnnotation()
  * @since 3.0
  */
+@Override
 public boolean isAnnotation() {
 	return this.fIsAnnotation;
 }
@@ -769,6 +796,7 @@
  * @see IDOMType#setEnum(boolean)
  * @since 3.0
  */
+@Override
 public void setEnum(boolean b) {
 	this.fIsEnum = b;
 	if (this.fIsEnum) {
@@ -782,6 +810,7 @@
  * @see IDOMType#setAnnotation(boolean)
  * @since 3.0
  */
+@Override
 public void setAnnotation(boolean b) {
 	this.fIsAnnotation= b;
 	if (this.fIsAnnotation) {
@@ -796,6 +825,7 @@
  * @see IDOMType#setTypeParameters(java.lang.String[])
  * @since 3.0
  */
+@Override
 public void setTypeParameters(String[] typeParameters) {
 	this.fTypeParameters = typeParameters;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.java
index c5093ab..54e95bb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SiblingEnumeration.java
@@ -41,12 +41,14 @@
 /**
  * @see java.util.Enumeration#hasMoreElements()
  */
+@Override
 public boolean hasMoreElements() {
 	return this.fCurrentElement != null;
 }
 /**
  * @see java.util.Enumeration#nextElement()
  */
+@Override
 public Object nextElement() {
 	IDOMNode curr=  this.fCurrentElement;
 	if (curr != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.java
index f876ced..f1809f6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/jdom/SimpleDOMBuilder.java
@@ -35,10 +35,12 @@
 /**
  * Does nothing.
  */
+@Override
 public void acceptProblem(CategorizedProblem problem) {
 	// nothing to do
 }
 
+@Override
 public void acceptImport(int declarationStart, int declarationEnd, int nameStart, int nameEnd, char[][] tokens, boolean onDemand, int modifiers) {
 	int[] sourceRange = {declarationStart, declarationEnd};
 	String importName = new String(CharOperation.concatWith(tokens, '.'));
@@ -49,6 +51,7 @@
 	this.fNode= new DOMImport(this.fDocument, sourceRange, importName, onDemand, modifiers);
 	addChild(this.fNode);
 }
+@Override
 public void acceptPackage(ImportReference importReference) {
 	int[] sourceRange= new int[] {importReference.declarationSourceStart, importReference.declarationSourceEnd};
 	char[] name = CharOperation.concatWith(importReference.getImportName(), '.');
@@ -64,6 +67,7 @@
 /**
  * @see IDOMFactory#createCompilationUnit(String, String)
  */
+@Override
 public IDOMCompilationUnit createCompilationUnit(ICompilationUnit compilationUnit) {
 	initializeBuild(compilationUnit.getContents(), true, true);
 	getParser(JavaCore.getOptions()).parseCompilationUnit(compilationUnit, false/*diet parse*/, null/*no progress*/);
@@ -88,6 +92,7 @@
 }
 /**
  */
+@Override
 public void enterConstructor(MethodInfo methodInfo) {
 	/* see 1FVIIQZ */
 	String nameString = new String(this.fDocument, methodInfo.nameSourceStart, methodInfo.nameSourceEnd - methodInfo.nameSourceStart);
@@ -99,6 +104,7 @@
 }
 /**
  */
+@Override
 public void enterField(FieldInfo fieldInfo) {
 
 	int[] sourceRange = {fieldInfo.declarationStart, -1};
@@ -115,6 +121,7 @@
 /**
 
  */
+@Override
 public void enterInitializer(int declarationSourceStart, int modifiers) {
 	int[] sourceRange = {declarationSourceStart, -1};
 	this.fNode = new DOMInitializer(this.fDocument, sourceRange, modifiers);
@@ -123,11 +130,13 @@
 }
 /**
  */
+@Override
 public void enterMethod(MethodInfo methodInfo) {
 	enterAbstractMethod(methodInfo);
 }
 /**
  */
+@Override
 public void enterType(TypeInfo typeInfo) {
 	if (this.fBuildingType) {
 		int[] sourceRange = {typeInfo.declarationStart, -1}; // will be fixed in the exit
@@ -146,16 +155,19 @@
  *
  * @see ISourceElementRequestor#exitConstructor(int)
  */
+@Override
 public void exitConstructor(int declarationEnd) {
 	exitMember(declarationEnd);
 }
 /**
  */
+@Override
 public void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd) {
 	exitMember(declarationEnd);
 }
 /**
  */
+@Override
 public void exitInitializer(int declarationEnd) {
 	exitMember(declarationEnd);
 }
@@ -172,6 +184,7 @@
 }
 /**
  */
+@Override
 public void exitMethod(int declarationEnd, Expression defaultValue) {
 	exitMember(declarationEnd);
 }
@@ -181,6 +194,7 @@
  * @param declarationEnd - a source position corresponding to the end of the class
  *		declaration.  This can include whitespace and comments following the closing bracket.
  */
+@Override
 public void exitType(int declarationEnd) {
 	exitType(declarationEnd, declarationEnd);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.java
index e6e4434..f877403 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/DatabaseRef.java
@@ -47,6 +47,7 @@
 	/**
 	 * Returns the referenced object or null if the object is no longer present in the database.
 	 */
+	@Override
 	public T get() {
 		long ndWriteNumber = this.nd.getWriteNumber();
 		if (this.writeCounter == ndWriteNumber) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.java
deleted file mode 100644
index 32bfae1..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdNode.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
-
-/**
- * Interface for all nodes that can be visited by a {@link INdVisitor}.
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface INdNode {
-
-	/**
-	 * Visits the children of this node.
-	 */
-	public void accept(INdVisitor visitor) throws IndexException;
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.java
new file mode 100644
index 0000000..5464587
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdStruct.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd;
+
+/**
+ * Implementations of this interface wrap content in the database as a java object.
+ * All such objects have an address and a pointer to the database.
+ */
+public interface INdStruct {
+	/**
+	 * Returns the database address at which the struct begins.
+	 */
+	public long getAddress();
+
+	/**
+	 * Returns the database backing this struct.
+	 */
+	public Nd getNd();
+
+	/**
+	 * Given a nullable {@link INdStruct}, this returns the address of the struct
+	 * or 0 if the object was null.
+	 */
+	static long addressOf(INdStruct nullable) {
+		if (nullable == null) {
+			return 0;
+		}
+		return nullable.getAddress();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.java
deleted file mode 100644
index bb5a76a..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/INdVisitor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd;
-
-import org.eclipse.core.runtime.CoreException;
-
-public interface INdVisitor {
-
-	/**
-	 * Walk the nodes in a {@link Nd}. Return true to visit the children of
-	 * this node, or false to skip to the next sibling of this node.
-	 * Throw CoreException to stop the visit.
-	 *  
-	 * @param node being visited
-	 * @return whether to visit children
-	 */
-	public boolean visit(INdNode node) throws CoreException;
-	
-	/**
-	 * All children have been visited, about to go back to the parent.
-	 * 
-	 * @param node that has just completed visitation
-	 * @throws CoreException
-	 */
-	public void leave(INdNode node) throws CoreException;
-	
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.java
new file mode 100644
index 0000000..ccc5fb4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/IndexExceptionBuilder.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.MemoryAccessLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.RelatedAddress;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.IField;
+
+/**
+ * Given a set of memory ranges, this class constructs detailed error messages.
+ */
+public final class IndexExceptionBuilder {
+	private final Database db;
+	private final List<RelatedAddress> relatedAddresses = new ArrayList<>();
+
+	/**
+	 * Constructs a new {@link IndexExceptionBuilder}
+	 */
+	public IndexExceptionBuilder(Database db) {
+		this.db = db;
+	}
+
+	/**
+	 * Adds an address range to this problem description, given the first address that may be corrupt,
+	 * the size of the possibly-corrupt address range, and a custom description for the memory at this
+	 * address range.
+	 */
+	public IndexExceptionBuilder addProblemAddress(String description, long dataBlockAddress, int rangeSize) {
+		MemoryAccessLog lastWrite = this.db.getLog().getReportFor(dataBlockAddress, rangeSize);
+		this.relatedAddresses.add(new RelatedAddress(description, dataBlockAddress, rangeSize, lastWrite));
+		return this;
+	}
+
+	/**
+	 * Adds an address range to this problem description, given a field that may be corrupt, the base
+	 * address for its struct, and a custom description for the field.
+	 * 
+	 * @return this
+	 */
+	public IndexExceptionBuilder addProblemAddress(String description, IField field, long address) {
+		long offset = field.getOffset();
+		int size = field.getRecordSize();
+		return addProblemAddress(description, address + offset, size);
+	}
+
+	/**
+	 * Adds an address range to this problem description, given the field that may be corrupt
+	 * and the base address for its struct.
+	 * 
+	 * @return this
+	 */
+	public IndexExceptionBuilder addProblemAddress(IField field, long address) {
+		return addProblemAddress(field.getFieldName(), field, address);
+	}
+
+	/**
+	 * Returns a newly constructed {@link IndexException} containing the given message and all the addresses collected
+	 * by this object.
+	 */
+	public IndexException build(String description) {
+		IndexException toThrow = new IndexException(description);
+		if (this.db.getLog().enabled()) {
+			toThrow.setTime(this.db.getLog().getWriteCount());
+		}
+		attachTo(toThrow);
+		return toThrow;
+	}
+
+	/**
+	 * Attaches the addresses collected by the receiver to the given exception.
+	 */
+	public void attachTo(IndexException exception) {
+		for (RelatedAddress next : this.relatedAddresses) {
+			exception.addRelatedAddress(next);
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.java
index 96132cf..f0ca608 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/Nd.java
@@ -15,6 +15,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Supplier;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
@@ -25,11 +26,19 @@
 /**
  * Network Database for storing semantic information.
  */
-public class Nd {
+public final class Nd {
 	private static final int CANCELLATION_CHECK_INTERVAL = 500;
 	private static final int BLOCKED_WRITE_LOCK_OUTPUT_INTERVAL = 30000;
 	private static final int LONG_WRITE_LOCK_REPORT_THRESHOLD = 1000;
 	private static final int LONG_READ_LOCK_WAIT_REPORT_THRESHOLD = 1000;
+
+	/**
+	 * Controls the number of pages that are allowed to be dirty before a
+	 * flush will occur. Specified as a ratio of the total cache size. For
+	 * example, a ration of 0.5 would mean that a flush is forced if half
+	 * of the cache is dirty.
+	 */
+	private static final double MAX_DIRTY_CACHE_RATIO = 0.25;
 	public static boolean sDEBUG_LOCKS= false;
 	public static boolean DEBUG_DUPLICATE_DELETIONS = false;
 
@@ -37,6 +46,11 @@
 	private final int maxVersion;
 	private final int minVersion;
 
+	/**
+	 * Stores data that has been stored via {@link #setData}. Synchronize on {@link #cookies} before accessing.
+	 */
+	private final Map<Class<?>, Object> cookies = new HashMap<>();
+
 	public static int version(int major, int minor) {
 		return (major << 16) + minor;
 	}
@@ -154,6 +168,45 @@
 	}
 
 	/**
+	 * Inserts a cookie that can be later retrieved via getData(String). 
+	 */
+	public <T> void setData(Class<T> key, T value) {
+		synchronized (this.cookies) {
+			this.cookies.put(key, value);
+		}
+	}
+
+	/**
+	 * Returns a cookie that was previously attached using {@link #setData(Class, Object)}. If no such cookie
+	 * exists, it is computed using the given function and remembered for later. The function may return null.
+	 * If it does, this method will also return null and no cookie will be stored.
+	 */
+	@SuppressWarnings("unchecked")
+	public <T> T getData(Class<T> key, Supplier<T> defaultValue) {
+		T result;
+		synchronized (this.cookies) {
+			result = (T) this.cookies.get(key);
+		}
+
+		if (result == null) {
+			result = defaultValue.get();
+
+			if (result != null) {
+				synchronized (this.cookies) {
+					T newResult = (T) this.cookies.get(key);
+					if (newResult == null) {
+						this.cookies.put(key, result);
+					} else {
+						result = newResult;
+					}
+				}
+			}
+		}
+
+		return result;
+	}
+
+	/**
 	 * Returns whether this {@link Nd} can never be written to. Writable subclasses should return false.
 	 */
 	protected boolean isPermanentlyReadOnly() {
@@ -162,20 +215,19 @@
 
 	private void loadDatabase(File dbPath, ChunkCache cache) throws IndexException {
 		this.fPath= dbPath;
-		final boolean lockDB= this.db == null || this.lockCount != 0;
 
 		clearCaches();
 		this.db = new Database(this.fPath, cache, getDefaultVersion(), isPermanentlyReadOnly());
-
-		this.db.setLocked(lockDB);
+		this.db.setExclusiveLock();
 		if (!isSupportedVersion()) {
 			Package.logInfo("Index database uses the unsupported version " + this.db.getVersion() //$NON-NLS-1$
 				+ ". Deleting and recreating."); //$NON-NLS-1$
 			this.db.close();
 			this.fPath.delete();
 			this.db = new Database(this.fPath, cache, getDefaultVersion(), isPermanentlyReadOnly());
-			this.db.setLocked(lockDB);
+			this.db.setExclusiveLock();
 		}
+		this.db.giveUpExclusiveLock();
 		this.fWriteNumber = this.db.getLong(Database.WRITE_NUMBER_OFFSET);
 		this.db.setLocked(this.lockCount != 0);
 	}
@@ -192,6 +244,7 @@
 	private long lastWriteAccess= 0;
 	//private long lastReadAccess= 0;
 	private long timeWriteLockAcquired;
+	private Thread writeLockOwner;
 
 	public IReader acquireReadLock() {
 		try {
@@ -281,7 +334,7 @@
 
 			// Let the readers go first
 			long start= sDEBUG_LOCKS ? System.currentTimeMillis() : 0;
-			while (this.lockCount > giveupReadLocks || this.waitingReaders > 0) {
+			while (this.lockCount > giveupReadLocks || this.waitingReaders > 0 || (this.lockCount < 0)) {
 				this.mutex.wait(CANCELLATION_CHECK_INTERVAL);
 				if (monitor != null && monitor.isCanceled()) {
 					throw new OperationCanceledException();
@@ -294,42 +347,50 @@
 			if (sDEBUG_LOCKS)
 				this.timeWriteLockAcquired = System.currentTimeMillis();
 			this.db.setExclusiveLock();
+			if (this.writeLockOwner != null && this.writeLockOwner != Thread.currentThread()) {
+				throw new IllegalStateException("We somehow managed to acquire a write lock while another thread already holds it."); //$NON-NLS-1$
+			}
+			this.writeLockOwner = Thread.currentThread();
 		}
 	}
 
 	public final void releaseWriteLock() {
-		releaseWriteLock(0, true);
+		releaseWriteLock(0, false);
 	}
 
 	@SuppressWarnings("nls")
 	public void releaseWriteLock(int establishReadLocks, boolean flush) {
-		boolean wasInterrupted = false;
-		// When all locks are released we can clear the result cache.
-		if (establishReadLocks == 0) {
-			processDeletions();
-			this.db.putLong(Database.WRITE_NUMBER_OFFSET, ++this.fWriteNumber);
-			clearResultCache();
-		}
-		try {
-			wasInterrupted = this.db.giveUpExclusiveLock(flush) || wasInterrupted;
-		} catch (IndexException e) {
-			Package.log(e);
-		}
-		assert this.lockCount == -1;
-		this.lastWriteAccess= System.currentTimeMillis();
 		synchronized (this.mutex) {
-			if (sDEBUG_LOCKS) {
-				long timeHeld = this.lastWriteAccess - this.timeWriteLockAcquired;
-				if (timeHeld >= LONG_WRITE_LOCK_REPORT_THRESHOLD) {
-					System.out.println("Index write lock held for " + timeHeld + " ms");
-				}
-				decWriteLock(establishReadLocks);
+			Thread current = Thread.currentThread();
+			if (current != this.writeLockOwner) {
+				throw new IllegalStateException("Index wasn't locked by this thread!!!");
 			}
-
-			if (this.lockCount < 0)
-				this.lockCount= establishReadLocks;
-			this.mutex.notifyAll();
-			this.db.setLocked(this.lockCount != 0);
+			this.writeLockOwner = null;
+		}
+		RuntimeException exception = null;
+		boolean wasInterrupted = false;
+		try {
+			// When all locks are released we can clear the result cache.
+			if (establishReadLocks == 0) {
+				clearResultCache();
+			}
+			this.db.putLong(Database.WRITE_NUMBER_OFFSET, ++this.fWriteNumber);
+			// Process any outstanding deletions now
+			processDeletions();
+		} catch (RuntimeException e) {
+			exception = e;
+		} finally {
+			this.db.giveUpExclusiveLock();
+			assert this.lockCount == -1;
+			this.lastWriteAccess = System.currentTimeMillis();
+			try {
+				releaseWriteLockAndFlush(establishReadLocks, flush);
+			} catch (RuntimeException e) {
+				if (exception != null) {
+					e.addSuppressed(exception);
+				}
+				throw e;
+			}
 		}
 
 		if (wasInterrupted) {
@@ -337,6 +398,43 @@
 		}
 	}
 
+	private void releaseWriteLockAndFlush(int establishReadLocks, boolean flush) throws AssertionError {
+		int dirtyPages = this.getDB().getDirtyChunkCount();
+
+		// If there are too many dirty pages, force a flush now.
+		int totalCacheSize = (int) (this.db.getCache().getMaxSize() / Database.CHUNK_SIZE);
+		if (dirtyPages > totalCacheSize * MAX_DIRTY_CACHE_RATIO) {
+			flush = true;
+		}
+
+		int initialReadLocks = flush ? establishReadLocks + 1 : establishReadLocks;
+		// Convert this write lock to a read lock while we flush the page cache to disk. That will prevent
+		// other writers from dirtying more pages during the flush but will allow reads to proceed.
+		synchronized (this.mutex) {
+			if (sDEBUG_LOCKS) {
+				long timeHeld = this.lastWriteAccess - this.timeWriteLockAcquired;
+				if (timeHeld >= LONG_WRITE_LOCK_REPORT_THRESHOLD) {
+					System.out.println("Index write lock held for " + timeHeld + " ms");  //$NON-NLS-1$//$NON-NLS-2$
+				}
+				decWriteLock(initialReadLocks);
+			}
+
+			if (this.lockCount < 0) {
+				this.lockCount = initialReadLocks;
+			}
+			this.mutex.notifyAll();
+			this.db.setLocked(initialReadLocks != 0);
+		}
+
+		if (flush) {
+			try {
+				this.db.flush();
+			} finally {
+				releaseReadLock();
+			}
+		}
+	}
+
 	public boolean hasWaitingReaders() {
 		synchronized (this.mutex) {
 			return this.waitingReaders > 0;
@@ -552,7 +650,7 @@
 	/**
 	 * Returns the type ID for the given class
 	 */
-	public short getNodeType(Class<? extends NdNode> toQuery) {
+	public short getNodeType(Class<?> toQuery) {
 		return this.fNodeTypeRegistry.getTypeForClass(toQuery);
 	}
 
@@ -601,6 +699,19 @@
 	}
 
 	public void clear(IProgressMonitor monitor) {
+		this.pendingDeletions.clear();
 		getDB().clear(getDefaultVersion());
 	}
+
+	public boolean isValidAddress(long address) {
+		return address > 0 && address < (long) getDB().getChunkCount() * Database.CHUNK_SIZE;
+	}
+
+	/**
+	 * Creates a {@link IndexExceptionBuilder} object that collects information about database corruption after it is 
+	 * detected.
+	 */
+	public IndexExceptionBuilder describeProblem() {
+		return this.db.describeProblem();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.java
index 99237b1..ddf35cd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdLinkedList.java
@@ -62,7 +62,7 @@
 
 	public static <T> ITypeFactory<NdLinkedList<T>> getFactoryFor(
 			final ITypeFactory<T> elementFactory, final int recordsInFirstBlock, final int recordsInSubsequentBlocks) {
-		return getFactoryFor(elementFactory, recordsInSubsequentBlocks, 0);
+		return getFactoryFor(elementFactory, recordsInFirstBlock, recordsInSubsequentBlocks, 0);
 	}
 
 	public static <T> ITypeFactory<NdLinkedList<T>> getFactoryFor(
@@ -70,6 +70,7 @@
 			final int metadataBitsPerElement) {
 
 		return new AbstractTypeFactory<NdLinkedList<T>>() {
+			@Override
 			public NdLinkedList<T> create(Nd dom, long address) {
 				return new NdLinkedList<T>(dom, address, elementFactory, recordsInFirstBlock, recordsInSubsequentBlocks, metadataBitsPerElement);
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.java
index 3daf4cc..e8a23fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNode.java
@@ -16,29 +16,22 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
 /**
- * This is a basic node in the network database.
+ * This is a basic polymorphic node in the network database. Pointers to NdNode or any of their
+ * subclasses will be resolved to the correct subclass of NdNode such that the correct version of an
+ * overloaded method will be invoked.
  */
-public abstract class NdNode implements IDestructable {
+public abstract class NdNode extends NdStruct implements IDestructable {
 	public static final FieldShort NODE_TYPE;
 
+	@SuppressWarnings("hiding")
 	public static final StructDef<NdNode> type;
 
 	static {
-		type = StructDef.create(NdNode.class);
+		type = StructDef.create(NdNode.class, NdStruct.type);
 		NODE_TYPE = type.addShort();
 		type.done();
 	}
 
-	public final long address;
-	private Nd nd;
-
-	public static long addressOf(NdNode nullable) {
-		if (nullable == null) {
-			return 0;
-		}
-		return nullable.address;
-	}
-
 	/**
 	 * Load a node from the specified address in the given database.  Return null if a node cannot
 	 * be loaded.
@@ -53,23 +46,40 @@
 			return null;
 		}
 
-		return nd.getNode(address, NODE_TYPE.get(nd, address));
+		try {
+			return nd.getNode(address, NODE_TYPE.get(nd, address));
+		} catch (IndexException e) {
+			// Add metadata to the exception describing where we obtained the node type from
+			nd.describeProblem().addProblemAddress(NODE_TYPE, address).attachTo(e);
+			throw e;
+		}
 	}
 
 	@SuppressWarnings("unchecked")
-	public static <T extends NdNode> T load(Nd nd, long address, Class<T> clazz) {
+	public static <T extends INdStruct> T load(Nd nd, long address, StructDef<T> typeToLoad) {
 		if (address == 0) {
 			return null;
 		}
 
-		NdNode result = nd.getNode(address, NODE_TYPE.get(nd, address));
+		NdNode result;
+		try {
+			// Polymorphic types (that subclass NdNode) store a header with their type ID
+			result = nd.getNode(address, NODE_TYPE.get(nd, address));
+		} catch (IndexException e) {
+			// Add metadata to the exception describing where we obtained the node type from
+			nd.describeProblem().addProblemAddress(NODE_TYPE, address).attachTo(e);
+			throw e;
+		}
 
+		Class<T> clazz = typeToLoad.getStructClass();
 		if (!clazz.isAssignableFrom(result.getClass())) {
-			throw new IndexException("Found wrong data type at address " + address + ". Expected a subclass of " +  //$NON-NLS-1$//$NON-NLS-2$
+			throw nd.describeProblem()
+				.addProblemAddress(NODE_TYPE, address)
+				.build("Found wrong data type at address " + address + ". Expected a subclass of " +  //$NON-NLS-1$//$NON-NLS-2$
 					clazz + " but found " + result.getClass()); //$NON-NLS-1$
 		}
 
-		return (T)result;
+		return (T) result;
 	}
 
 	/**
@@ -80,13 +90,12 @@
 	}
 
 	protected NdNode(Nd nd, long address) {
-		this.nd = nd;
-		this.address = address;
+		super(nd, address);
 	}
 
 	protected NdNode(Nd nd) {
+		super(nd, 0);
 		Database db = nd.getDB();
-		this.nd = nd;
 
 		short nodeType = nd.getNodeType(getClass());
 		ITypeFactory<? extends NdNode> factory1 = nd.getTypeFactory(nodeType);
@@ -96,14 +105,6 @@
 		NODE_TYPE.put(nd, this.address, nodeType);
 	}
 
-	protected Database getDB() {
-		return this.nd.getDB();
-	}
-
-	public Nd getNd() {
-		return this.nd;
-	}
-
 	/**
 	 * Return a value to uniquely identify the node within the factory that is responsible for loading
 	 * instances of this node from the {@link Nd}.
@@ -113,6 +114,7 @@
 		return this.nd.getNodeType(getClass());
 	}
 
+	@Override
 	public final long getAddress() {
 		return this.address;
 	}
@@ -138,10 +140,6 @@
 		return (int) (this.address >> Database.BLOCK_SIZE_DELTA_BITS);
 	}
 
-	public void accept(INdVisitor visitor) {
-		// No children here.
-	}
-
 	/**
 	 * Return an value to globally identify the given node within the given linkage.  This value
 	 * can be used for comparison with other {@link NdNode}s.
@@ -178,6 +176,7 @@
 	 * If an external object wants to destroy a node, they should invoke {@link NdNode#delete} rather than this
 	 * method.
 	 */
+	@Override
 	public void destruct() {
 		// Nothing to do by default. Subclasses will provide an implementation if necessary.
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.java
index 7b6df24..810b4e5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdNodeTypeRegistry.java
@@ -36,7 +36,7 @@
 		short shortTypeId = (short)typeId;
 		String fullyQualifiedClassName = toRegister.getElementClass().getName();
 
-		if (this.types.containsKey(typeId) || this.reserved.get(typeId)) {
+		if (this.types.containsKey(shortTypeId) || this.reserved.get(typeId)) {
 			throw new IllegalArgumentException(
 					"The type id " + typeId + " for class " + fullyQualifiedClassName + " is already in use."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		}
@@ -67,10 +67,19 @@
 	public R createNode(Nd nd, long address, short nodeType) throws IndexException {
 		ITypeFactory<? extends R> typeFactory = this.types.get(nodeType);
 
+		if (typeFactory == null) {
+			throw new IndexException("Index corruption detected. Unknown node type: " + nodeType + " at address "  //$NON-NLS-1$//$NON-NLS-2$
+					+ address);
+		}
+
 		return typeFactory.create(nd, address);
 	}
 
-	public short getTypeForClass(Class<? extends R> toQuery) {
+	public boolean isRegisteredClass(Class<?> toQuery) {
+		return this.registeredClasses.containsKey(toQuery);
+	}
+
+	public short getTypeForClass(Class<?> toQuery) {
 		Short classId = this.registeredClasses.get(toQuery);
 
 		if (classId == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.java
new file mode 100644
index 0000000..8ed7dd9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/NdStruct.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
+
+/**
+ * Base class for standard implementations of {@link INdStruct}. Holds the address of the struct
+ * and the pointer to the database.
+ */
+public class NdStruct implements INdStruct {
+	public long address;
+	protected final Nd nd;
+
+	public static final StructDef<NdStruct> type;
+
+	static {
+		type = StructDef.createAbstract(NdStruct.class);
+		type.done();
+	}
+
+	protected NdStruct(Nd nd, long address) {
+		this.nd = nd;
+		this.address = address;
+	}
+
+	@Override
+	public long getAddress() {
+		return this.address;
+	}
+
+	@Override
+	public Nd getNd() {
+		return this.nd;
+	}
+
+	protected final Database getDB() {
+		return this.nd.getDB();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.java
index c11635d..3a8f522 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/RawGrowableArray.java
@@ -14,7 +14,9 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldInt;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldPointer;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldShort;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.util.MathUtils;
 
 /**
  * Implements a growable array of pointers that supports constant-time insertions and removals. Items are inserted at
@@ -108,7 +110,7 @@
 		ARRAY_HEADER_BYTES = type.size();
 	}
 
-	private static final class GrowableBlockHeader {
+	private static class GrowableBlockHeader {
 		public static final FieldInt ARRAY_SIZE;
 		public static final FieldInt ALLOCATED_SIZE;
 		public static final int GROWABLE_BLOCK_HEADER_BYTES;
@@ -131,6 +133,28 @@
 		}
 	}
 
+	@SuppressWarnings("synthetic-access")
+	private static final class MetaBlockHeader extends GrowableBlockHeader {
+		/**
+		 * Holds the number of pages used for the metablock. Note that the start of the metablock array needs to be
+		 * 4-byte aligned. Since all malloc calls are always 2 bytes away from 4-byte alignment, we need to use at
+		 * least one short in this struct. */ 
+		public static final FieldShort METABLOCK_NUM_PAGES;
+		public static final int META_BLOCK_HEADER_BYTES;
+
+		@SuppressWarnings("hiding")
+		private static final StructDef<MetaBlockHeader> type;
+
+		static {
+			type = StructDef.createAbstract(MetaBlockHeader.class, GrowableBlockHeader.type);
+
+			METABLOCK_NUM_PAGES = type.addShort();
+			type.done();
+
+			META_BLOCK_HEADER_BYTES = type.size();
+		}
+	}
+	
 	private final int inlineSize;
 
 	public RawGrowableArray(int inlineRecords) {
@@ -181,10 +205,17 @@
 		int insertionIndex = size(nd, address);
 		int newSize = insertionIndex + 1;
 
-		ensureCapacity(nd, address, newSize);
-		long recordAddress = getAddressOfRecord(nd, address, insertionIndex);
-		db.putRecPtr(recordAddress, value);
-		setSize(nd, address, newSize);
+		try {
+			ensureCapacity(nd, address, newSize);
+			long recordAddress = getAddressOfRecord(nd, address, insertionIndex);
+			db.putRecPtr(recordAddress, value);
+			setSize(nd, address, newSize);
+		} catch (IndexException e) {
+			IndexExceptionBuilder descriptor = nd.describeProblem();
+			addSizeTo(nd, address, descriptor);
+			descriptor.attachTo(e);
+			throw e;
+		}
 		return insertionIndex;
 	}
 
@@ -217,35 +248,57 @@
 			// We need a metablock.
 			long metablockAddress = growableBlockAddress;
 
+			// neededBlockSize should always be a multiple of the max block size when metablocks are in use
+			assert neededBlockSize % GrowableBlockHeader.MAX_GROWABLE_SIZE == 0;
+			// Create extra growable blocks if necessary.
+			int requiredBlockCount = divideRoundingUp(neededBlockSize, GrowableBlockHeader.MAX_GROWABLE_SIZE);
+
+			int neededMetablockPages = computeMetablockPagesForBlocks(requiredBlockCount);
+
+			if (neededMetablockPages > Short.MAX_VALUE) {
+				throw new IndexException("A metablock overflowed. Unable to allocate " + neededMetablockPages //$NON-NLS-1$
+						+ " pages."); //$NON-NLS-1$
+			}
 			if (!(growableBlockCurrentSize > GrowableBlockHeader.MAX_GROWABLE_SIZE)) {
 				// We weren't using a metablock previously
 				int currentSize = size(nd, address);
 				// Need to convert to using metablocks.
 				long firstGrowableBlockAddress = resizeBlock(nd, address, GrowableBlockHeader.MAX_GROWABLE_SIZE);
 
-				metablockAddress = db.malloc(computeBlockBytes(GrowableBlockHeader.MAX_GROWABLE_SIZE), Database.POOL_GROWABLE_ARRAY);
+				metablockAddress = db.malloc(Database.getBytesThatFitInChunks(neededMetablockPages),
+						Database.POOL_GROWABLE_ARRAY);
 				GrowableBlockHeader.ARRAY_SIZE.put(nd, metablockAddress, currentSize);
 				GrowableBlockHeader.ALLOCATED_SIZE.put(nd, metablockAddress,
 						GrowableBlockHeader.MAX_GROWABLE_SIZE);
+				MetaBlockHeader.METABLOCK_NUM_PAGES.put(nd, metablockAddress, (short)neededMetablockPages);
 
 				// Link the first block into the metablock.
-				db.putRecPtr(metablockAddress + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES,
+				db.putRecPtr(metablockAddress + MetaBlockHeader.META_BLOCK_HEADER_BYTES,
 						firstGrowableBlockAddress);
 				GROWABLE_BLOCK_ADDRESS.put(nd, address, metablockAddress);
 			}
 
-			// neededBlockSize should always be a multiple of the max block size when metablocks are in use
-			assert neededBlockSize % GrowableBlockHeader.MAX_GROWABLE_SIZE == 0;
-			// Create extra growable blocks if necessary.
-			int requiredBlockCount = neededBlockSize / GrowableBlockHeader.MAX_GROWABLE_SIZE;
+			short metablockCurrentPages = MetaBlockHeader.METABLOCK_NUM_PAGES.get(nd, metablockAddress);
+			if (metablockCurrentPages < neededMetablockPages) {
+				short newMetablockPages = (short)Math.min(Short.MAX_VALUE, neededMetablockPages * 1.5);
+				long newMetablockAddress = db.malloc(Database.getBytesThatFitInChunks(newMetablockPages),
+						Database.POOL_GROWABLE_ARRAY);
+				int oldNumPages = MetaBlockHeader.METABLOCK_NUM_PAGES.get(nd, metablockAddress);
+				db.memcpy(newMetablockAddress, metablockAddress, (int)Database.getBytesThatFitInChunks(oldNumPages));
+				db.free(metablockAddress, Database.POOL_GROWABLE_ARRAY);
+				metablockAddress = newMetablockAddress;
+				MetaBlockHeader.METABLOCK_NUM_PAGES.put(nd, metablockAddress, newMetablockPages);
+				GROWABLE_BLOCK_ADDRESS.put(nd, address, metablockAddress);
+			}
 			int currentAllocatedSize = GrowableBlockHeader.ALLOCATED_SIZE.get(nd, metablockAddress);
 			assert currentAllocatedSize % GrowableBlockHeader.MAX_GROWABLE_SIZE == 0;
 			int currentBlockCount = currentAllocatedSize / GrowableBlockHeader.MAX_GROWABLE_SIZE;
 
 			for (int nextBlock = currentBlockCount; nextBlock < requiredBlockCount; nextBlock++) {
-				long nextBlockAddress = db.malloc(computeBlockBytes(GrowableBlockHeader.MAX_GROWABLE_SIZE), Database.POOL_GROWABLE_ARRAY);
+				long nextBlockAddress = db.malloc(computeBlockBytes(GrowableBlockHeader.MAX_GROWABLE_SIZE),
+						Database.POOL_GROWABLE_ARRAY);
 
-				db.putRecPtr(metablockAddress + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES
+				db.putRecPtr(metablockAddress + MetaBlockHeader.META_BLOCK_HEADER_BYTES
 						+ nextBlock * Database.PTR_SIZE, nextBlockAddress);
 			}
 
@@ -257,6 +310,15 @@
 		}
 	}
 
+	private static int divideRoundingUp(int neededBlockSize, int maxGrowableSize) {
+		return (neededBlockSize + maxGrowableSize - 1) / maxGrowableSize;
+	}
+
+	private int computeMetablockPagesForBlocks(int requiredBlockCount) {
+		return Database.getChunksNeededForBytes(
+				requiredBlockCount * Database.PTR_SIZE + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES);
+	}
+
 	/**
 	 * Allocates a new normal block, copies the contents of the old block to it, and deletes the old block. Should not
 	 * be used if the array is using metablocks. Returns the address of the newly-allocated block.
@@ -324,12 +386,16 @@
 
 			// We use reads of 1 past the end of the array to handle insertions.
 			if (index > size) {
-				throw new IndexException(
+				IndexExceptionBuilder builder = nd.describeProblem();
+
+				addSizeTo(nd, address, builder);
+
+				builder.addProblemAddress(GROWABLE_BLOCK_ADDRESS, address);
+				throw builder.build(
 						"Record index " + index + " out of range. Array contains " + size + " elements"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			}
 
 			int growableBlockSize = GrowableBlockHeader.ALLOCATED_SIZE.get(nd, growableBlockAddress);
-			long dataStartAddress = growableBlockAddress + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES;
 
 			if (growableBlockSize > GrowableBlockHeader.MAX_GROWABLE_SIZE) {
 				// If this array is so big that it's using a metablock, look up the correct sub-block and use the
@@ -337,11 +403,19 @@
 				int blockRelativeIndex = growableBlockRelativeIndex % GrowableBlockHeader.MAX_GROWABLE_SIZE;
 				int block = growableBlockRelativeIndex / GrowableBlockHeader.MAX_GROWABLE_SIZE;
 
-				dataStartAddress = db.getRecPtr(dataStartAddress + block * Database.PTR_SIZE)
-						+ GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES;
+				long dataBlockAddress = growableBlockAddress + MetaBlockHeader.META_BLOCK_HEADER_BYTES
+						+ block * Database.PTR_SIZE;
+				growableBlockAddress = db.getRecPtr(dataBlockAddress);
+				if (growableBlockAddress == 0) {
+					throw nd.describeProblem()
+						.addProblemAddress("backpointer number " + block, dataBlockAddress, Database.PTR_SIZE) //$NON-NLS-1$
+						.addProblemAddress(GROWABLE_BLOCK_ADDRESS, address)
+						.build("Null data block found in metablock"); //$NON-NLS-1$
+				}
 				growableBlockRelativeIndex = blockRelativeIndex;
 			}
 
+			long dataStartAddress = growableBlockAddress + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES;
 			return dataStartAddress + growableBlockRelativeIndex * Database.PTR_SIZE;
 		} else {
 			// This record is one of the ones inlined in the header
@@ -349,6 +423,13 @@
 		}
 	}
 
+	private void addSizeTo(Nd nd, long address, IndexExceptionBuilder builder) {
+		long growableBlockAddress = GROWABLE_BLOCK_ADDRESS.get(nd, address);
+		if (growableBlockAddress != 0) {
+			builder.addProblemAddress(GrowableBlockHeader.ARRAY_SIZE, growableBlockAddress);
+		}
+	}
+
 	/**
 	 * Removes an entry from the array, given an element index. If the given index is not the last element
 	 * in the list, the last element will have its index swapped with the removed element. If another element
@@ -361,7 +442,9 @@
 
 		Database db = nd.getDB();
 		if (index > lastElementIndex || index < 0) {
-			throw new IndexException("Attempt to remove nonexistent element " + index //$NON-NLS-1$
+			IndexExceptionBuilder descriptor = nd.describeProblem().addProblemAddress(GROWABLE_BLOCK_ADDRESS, address);
+			addSizeTo(nd, address, descriptor);
+			throw descriptor.build("Attempt to remove nonexistent element " + index //$NON-NLS-1$
 					+ " from an array of size " + (lastElementIndex + 1)); //$NON-NLS-1$
 		}
 
@@ -434,7 +517,7 @@
 				return;
 			}
 
-			long metablockRecordsAddress = growableBlockAddress + GrowableBlockHeader.GROWABLE_BLOCK_HEADER_BYTES;
+			long metablockRecordsAddress = growableBlockAddress + MetaBlockHeader.META_BLOCK_HEADER_BYTES;
 			int currentBlock = currentBlockCount;
 			while (--currentBlock >= desiredBlockCount) {
 				long nextAddress = metablockRecordsAddress + currentBlock * Database.PTR_SIZE;
@@ -503,7 +586,7 @@
 
 			// For sizes larger than the max block size, we need to use a metablock. In this case, the allocated size
 			// will be a multiple of the max block size.
-			return roundUpToMultipleOf(GrowableBlockHeader.MAX_GROWABLE_SIZE, growableRegionSize);
+			return MathUtils.roundUpToNearestMultiple(growableRegionSize, GrowableBlockHeader.MAX_GROWABLE_SIZE);
 		}
 
 		return nextGrowableSize;
@@ -536,15 +619,6 @@
 	}
 
 	/**
-	 * Rounds a value up to the nearest multiple of another value
-	 */
-	private static int roundUpToMultipleOf(int unit, int valueToRound) {
-		int numberOfMetablocks = (valueToRound + unit - 1) / unit;
-
-		return numberOfMetablocks * unit;
-	}
-
-	/**
 	 * Returns the record size for a RawGrowableSize with the given number of inline records
 	 */
 	public int getRecordSize() {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.java
index bbd52c1..bc25272 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/BTree.java
@@ -187,6 +187,7 @@
 				// Found it, never mind.
 				return median;
 			} else {
+				chunk.makeDirty();
 				// Split it.
 				// Create the new node and move the larger records over.
 				long newnode = allocateNode();
@@ -211,11 +212,15 @@
 					for (int i = this.maxRecords - 2; i >= iParent; --i) {
 						long r = getRecord(pChunk, parent, i);
 						if (r != 0) {
+							// Re-fetch pChunk since we can only dirty the page that was fetched most recently from
+							// the database (anything fetched earlier may have been paged out)
+							pChunk = pChunk.getWritableChunk();
 							putRecord(pChunk, parent, i + 1, r);
 							putChild(pChunk, parent, i + 2, getChild(pChunk, parent, i + 1));
 						}
 					}
 				}
+				pChunk = pChunk.getWritableChunk();
 				putRecord(pChunk, parent, iParent, median);
 				putChild(pChunk, parent, iParent + 1, newnode);
 
@@ -253,6 +258,9 @@
 				}
 			}
 		}
+
+		// Note that the call to compare, above, may have paged out and reallocated the chunk so fetch it again now.
+		chunk = this.db.getChunk(node);
 		final int i= lower;
 		long child = getChild(chunk, node, i);
 		if (child != 0) {
@@ -318,7 +326,7 @@
 	private class BTNode {
 		final long node;
 		final int keyCount;
-		final Chunk chunk;
+		Chunk chunk;
 
 		BTNode(long node) throws IndexException {
 			this.node = node;
@@ -337,6 +345,10 @@
 			}
 			return null;
 		}
+
+		public void makeWritable() {
+			this.chunk = this.chunk.getWritableChunk();
+		}
 	}
 
 	/**
@@ -391,6 +403,7 @@
 
 				BTNode succ = node.getChild(keyIndexInNode + 1);
 				if (succ != null && succ.keyCount > this.minRecords) {
+					node.makeWritable();
 					/* Case 2a: Delete key by overwriting it with its successor (which occurs in a leaf node) */
 					long subst = deleteImp(-1, succ.node, DELMODE_DELETE_MINIMUM);
 					putRecord(node.chunk, node.node, keyIndexInNode, subst);
@@ -399,6 +412,7 @@
 
 				BTNode pred = node.getChild(keyIndexInNode);
 				if (pred != null && pred.keyCount > this.minRecords) {
+					node.makeWritable();
 					/* Case 2b: Delete key by overwriting it with its predecessor (which occurs in a leaf node) */
 					long subst = deleteImp(-1, pred.node, DELMODE_DELETE_MAXIMUM);
 					putRecord(node.chunk, node.node, keyIndexInNode, subst);
@@ -408,6 +422,9 @@
 				/* Case 2c: Merge successor and predecessor */
 				// assert(pred != null && succ != null);
 				if (pred != null) {
+					succ.makeWritable();
+					node.makeWritable();
+					pred.makeWritable();
 					mergeNodes(succ, node, keyIndexInNode, pred);
 					return deleteImp(key, pred.node, mode);
 				}
@@ -440,8 +457,11 @@
 				if (child.keyCount > this.minRecords) {
 					return deleteImp(key, child.node, mode);
 				} else {
+					child.makeWritable();
+					node.makeWritable();
 					BTNode sibR = node.getChild(subtreeIndex + 1);
 					if (sibR != null && sibR.keyCount > this.minRecords) {
+						sibR.makeWritable();
 						/* Case 3a (i): child will underflow upon deletion, take a key from rightSibling */
 						long rightKey = getRecord(node.chunk, node.node, subtreeIndex);
 						long leftmostRightSiblingKey = getRecord(sibR.chunk, sibR.node, 0);
@@ -453,6 +473,7 @@
 
 					BTNode sibL = node.getChild(subtreeIndex - 1);
 					if (sibL != null && sibL.keyCount > this.minRecords) {
+						sibL.makeWritable();
 						/* Case 3a (ii): child will underflow upon deletion, take a key from leftSibling */
 						long leftKey = getRecord(node.chunk, node.node, subtreeIndex - 1);
 						prepend(child, leftKey, getChild(sibL.chunk, sibL.node, sibL.keyCount));
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.java
index 2781fa6..728f467 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Chunk.java
@@ -23,11 +23,25 @@
 	final private byte[] fBuffer= new byte[Database.CHUNK_SIZE];
 
 	final Database fDatabase;
+	/**
+	 * Holds the database-specific chunk number. This is the index into the database's chunk array and indicates the
+	 * start of the range of addresses held by this chunk. Non-negative. 
+	 */
 	final int fSequenceNumber;
-
-	boolean fCacheHitFlag;
+	/**
+	 * True iff this chunk contains data that hasn't yet been written to disk. This is protected by the write lock
+	 * on the corresponding {@link Database}.
+	 */
 	boolean fDirty;
-	boolean fLocked;	// locked chunks must not be released from cache.
+	/**
+	 * True iff this {@link Chunk} was accessed since the last time it was tested for eviction in the
+	 * {@link ChunkCache}. Protected by synchronizing on the {@link ChunkCache} itself.
+	 */
+	boolean fCacheHitFlag;
+	/**
+	 * Holds the index into the {@link ChunkCache}'s page table, or -1 if this {@link Chunk} isn't present in the page
+	 * table. Protected by synchronizing on the {@link ChunkCache} itself.
+	 */
 	int fCacheIndex= -1;
 
 	Chunk(Database db, int sequenceNumber) {
@@ -35,6 +49,29 @@
 		this.fSequenceNumber= sequenceNumber;
 	}
 
+	public void makeDirty() {
+		if (this.fSequenceNumber >= Database.NUM_HEADER_CHUNKS) {
+			Chunk chunk = this.fDatabase.fChunks[this.fSequenceNumber];
+			if (chunk != this) {
+				throw new IllegalStateException("CHUNK " + this.fSequenceNumber + ": found two copies. Copy 1: " //$NON-NLS-1$ //$NON-NLS-2$
+						+ System.identityHashCode(this) + ", Copy 2: " + System.identityHashCode(chunk)); //$NON-NLS-1$
+			}
+		}
+		if (!this.fDirty) {
+			if (Database.DEBUG_PAGE_CACHE) {
+				System.out.println(
+						"CHUNK " + this.fSequenceNumber + ": dirtied - instance " + System.identityHashCode(this)); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+			if (this.fSequenceNumber >= Database.NUM_HEADER_CHUNKS
+					&& this.fDatabase.fMostRecentlyFetchedChunk != this) {
+				throw new IllegalStateException("CHUNK " + this.fSequenceNumber //$NON-NLS-1$
+						+ " dirtied out of order: Only the most-recently-fetched chunk is allowed to be dirtied"); //$NON-NLS-1$
+			}
+			this.fDirty = true;
+			this.fDatabase.chunkDirtied(this);
+		}
+	}
+
 	void read() throws IndexException {
 		try {
 			final ByteBuffer buf= ByteBuffer.wrap(this.fBuffer);
@@ -49,6 +86,10 @@
 	 * {@link Thread#interrupt()}.
 	 */
 	boolean flush() throws IndexException {
+		if (Database.DEBUG_PAGE_CACHE) {
+			System.out.println(
+					"CHUNK " + this.fSequenceNumber + ": flushing - instance " + System.identityHashCode(this)); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		boolean wasCanceled = false;
 		try {
 			final ByteBuffer buf= ByteBuffer.wrap(this.fBuffer);
@@ -56,24 +97,34 @@
 		} catch (IOException e) {
 			throw new IndexException(new DBStatus(e));
 		}
-		this.fDirty= false;
+		this.fDirty = false;
+		this.fDatabase.chunkCleaned(this);
 		return wasCanceled;
 	}
 
-	private static int recPtrToIndex(final long offset) {
+	static int recPtrToIndex(final long offset) {
 		return (int) (offset & Database.OFFSET_IN_CHUNK_MASK);
 	}
 
 	public void putByte(final long offset, final byte value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		this.fBuffer[recPtrToIndex(offset)]= value;
+		recordWrite(offset, 1);
 	}
 
 	public byte getByte(final long offset) {
 		return this.fBuffer[recPtrToIndex(offset)];
 	}
 
+	/**
+	 * Returns a copy of the entire chunk.
+	 */
+	public byte[] getBytes() {
+		final byte[] bytes = new byte[this.fBuffer.length];
+		System.arraycopy(this.fBuffer, 0, bytes, 0, this.fBuffer.length);
+		return bytes;
+	}
+
 	public byte[] getBytes(final long offset, final int length) {
 		final byte[] bytes = new byte[length];
 		System.arraycopy(this.fBuffer, recPtrToIndex(offset), bytes, 0, length);
@@ -81,16 +132,16 @@
 	}
 
 	public void putBytes(final long offset, final byte[] bytes) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		System.arraycopy(bytes, 0, this.fBuffer, recPtrToIndex(offset), bytes.length);
+		recordWrite(offset, bytes.length);
 	}
 
 	public void putInt(final long offset, final int value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset);
 		putInt(value, this.fBuffer, idx);
+		recordWrite(offset, 4);
 	}
 
 	static final void putInt(final int value, final byte[] buffer, int idx) {
@@ -143,10 +194,10 @@
 	 * This is a pointer to a block + BLOCK_HEADER_SIZE.
 	 */
 	public void putRecPtr(final long offset, final long value) {
-		assert this.fLocked;
-		this.fDirty = true;
+		makeDirty();
 		int idx = recPtrToIndex(offset);
 		Database.putRecPtr(value, this.fBuffer, idx);
+		recordWrite(offset, 4);
 	}
 
 	/**
@@ -154,10 +205,10 @@
 	 * i.e. the pointer is not moved past the BLOCK_HEADER_SIZE.
 	 */
 	public void putFreeRecPtr(final long offset, final long value) {
-		assert this.fLocked;
-		this.fDirty = true;
+		makeDirty();
 		int idx = recPtrToIndex(offset);
 		putInt(compressFreeRecPtr(value), this.fBuffer, idx);
+		recordWrite(offset, 4);
 	}
 
 	public long getRecPtr(final long offset) {
@@ -172,12 +223,12 @@
 	}
 
 	public void put3ByteUnsignedInt(final long offset, final int value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset);
 		this.fBuffer[idx]= (byte) (value >> 16);
 		this.fBuffer[++idx]= (byte) (value >> 8);
 		this.fBuffer[++idx]= (byte) (value);
+		recordWrite(offset, 3);
 	}
 
 	public int get3ByteUnsignedInt(final long offset) {
@@ -188,11 +239,15 @@
 	}
 
 	public void putShort(final long offset, final short value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset);
 		this.fBuffer[idx]= (byte) (value >> 8);
 		this.fBuffer[++idx]= (byte) (value);
+		recordWrite(offset, 2);
+	}
+
+	private void recordWrite(long offset, int size) {
+		this.fDatabase.getLog().recordWrite(offset, size);
 	}
 
 	public short getShort(final long offset) {
@@ -221,8 +276,7 @@
 	}
 
 	public void putLong(final long offset, final long value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset);
 
 		this.fBuffer[idx]=   (byte) (value >> 56);
@@ -233,19 +287,19 @@
 		this.fBuffer[++idx]= (byte) (value >> 16);
 		this.fBuffer[++idx]= (byte) (value >> 8);
 		this.fBuffer[++idx]= (byte) (value);
+		recordWrite(offset, 8);
 	}
 
 	public void putChar(final long offset, final char value) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset);
 		this.fBuffer[idx]= (byte) (value >> 8);
 		this.fBuffer[++idx]= (byte) (value);
+		recordWrite(offset, 2);
 	}
 
 	public void putChars(final long offset, char[] chars, int start, int len) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset)-1;
 		final int end= start + len;
 		for (int i = start; i < end; i++) {
@@ -253,17 +307,18 @@
 			this.fBuffer[++idx]= (byte) (value >> 8);
 			this.fBuffer[++idx]= (byte) (value);
 		}
+		recordWrite(offset, len * 2);
 	}
 
 	public void putCharsAsBytes(final long offset, char[] chars, int start, int len) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx= recPtrToIndex(offset)-1;
 		final int end= start + len;
 		for (int i = start; i < end; i++) {
 			char value= chars[i];
 			this.fBuffer[++idx]= (byte) (value);
 		}
+		recordWrite(offset, len);
 	}
 
 	public void putDouble(final long offset, double value) {
@@ -293,13 +348,17 @@
 	}
 
 	void clear(final long offset, final int length) {
-		assert this.fLocked;
-		this.fDirty= true;
+		makeDirty();
 		int idx = recPtrToIndex(offset);
 		final int end = idx + length;
+		if (end > this.fBuffer.length) {
+			throw new IndexException("Attempting to clear beyond end of chunk. Chunk = " + this.fSequenceNumber //$NON-NLS-1$
+					+ ", offset = " + offset + ", length = " + length); //$NON-NLS-1$//$NON-NLS-2$
+		}
 		for (; idx < end; idx++) {
 			this.fBuffer[idx] = 0;
 		}
+		recordWrite(offset, length);
 	}
 
 	void put(final long offset, final byte[] data, final int len) {
@@ -307,10 +366,10 @@
 	}
 
 	void put(final long offset, final byte[] data, int dataPos, final int len) {
-		assert this.fLocked;
-		this.fDirty = true;
+		makeDirty();
 		int idx = recPtrToIndex(offset);
 		System.arraycopy(data, dataPos, this.fBuffer, idx, len);
+		recordWrite(offset, len);
 	}
 
 	public void get(final long offset, byte[] data) {
@@ -321,4 +380,13 @@
 		int idx = recPtrToIndex(offset);
 		System.arraycopy(this.fBuffer, idx, data, dataPos, len);
 	}
+
+	/**
+	 * Returns a dirtied, writable version of this chunk whose identity won't change until the write lock is released.
+	 */
+	public Chunk getWritableChunk() {
+		Chunk result = this.fDatabase.getChunk((long) this.fSequenceNumber * Database.CHUNK_SIZE);
+		result.makeDirty();
+		return result;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.java
index 962dc95..df8aa91 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkCache.java
@@ -10,13 +10,46 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
 
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+
 public final class ChunkCache {
-	private static ChunkCache sSharedInstance= new ChunkCache();
+	private static ChunkCache sSharedInstance;
 
 	private Chunk[] fPageTable;
 	private boolean fTableIsFull;
 	private int fPointer;
 
+	public static final String CHUNK_CACHE_SIZE_MB = "chunkCacheSizeMb"; //$NON-NLS-1$
+	public static final String CHUNK_CACHE_SIZE_PERCENT = "chunkCacheSizePercent"; //$NON-NLS-1$
+
+	public static final double CHUNK_CACHE_SIZE_MB_DEFAULT = 128.0;
+	public static final double CHUNK_CACHE_SIZE_PERCENT_DEFAULT = 5.0;
+
+	static {
+		IEclipsePreferences node = InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
+		long chunkSize = getChunkCacheSize(node);
+		sSharedInstance= new ChunkCache(chunkSize);
+		node.addPreferenceChangeListener(event -> {
+			String key = event.getKey();
+			if (key.equals(CHUNK_CACHE_SIZE_MB) | key.equals(CHUNK_CACHE_SIZE_PERCENT)) {
+				sSharedInstance.setMaxSize(getChunkCacheSize(node));
+			}
+		});
+	}
+
+	private static long getChunkCacheSize(IEclipsePreferences node) {
+		double maxSizeMb = node.getDouble(CHUNK_CACHE_SIZE_MB, CHUNK_CACHE_SIZE_MB_DEFAULT);
+		double maxSizePercent = node.getDouble(CHUNK_CACHE_SIZE_PERCENT, CHUNK_CACHE_SIZE_PERCENT_DEFAULT);
+
+		maxSizePercent = Math.max(1.0, Math.min(50.0, maxSizePercent));
+		maxSizeMb = Math.max(maxSizeMb, 1.0);
+
+		long m1= (long) (Runtime.getRuntime().maxMemory() / 100.0 * maxSizePercent);
+		return Math.min(m1, (long) (maxSizeMb * 1024.0 * 1024.0));
+	}
+
 	public static ChunkCache getSharedInstance() {
 		return sSharedInstance;
 	}
@@ -29,10 +62,7 @@
 		this.fPageTable= new Chunk[computeLength(maxSize)];
 	}
 
-	public synchronized void add(Chunk chunk, boolean locked) {
-		if (locked) {
-			chunk.fLocked= true;
-		}
+	public synchronized void add(Chunk chunk) {
 		if (chunk.fCacheIndex >= 0) {
 			chunk.fCacheHitFlag= true;
 			return;
@@ -69,11 +99,11 @@
 		while (true) {
 			Chunk chunk = this.fPageTable[this.fPointer];
 			if (chunk.fCacheHitFlag) {
-				chunk.fCacheHitFlag= false;
-				this.fPointer= (this.fPointer + 1) % this.fPageTable.length;
+				chunk.fCacheHitFlag = false;
+				this.fPointer = (this.fPointer + 1) % this.fPageTable.length;
 			} else {
-				chunk.fDatabase.releaseChunk(chunk);
-				chunk.fCacheIndex= -1;
+				chunk.fCacheIndex = -1;
+				chunk.fDatabase.checkIfChunkReleased(chunk);
 				this.fPageTable[this.fPointer] = null;
 				return;
 			}
@@ -119,10 +149,10 @@
 			this.fPointer= oldLength;
 			this.fPageTable= newTable;
 		} else {
-			for (int i= newLength; i < oldLength; i++) {
-				final Chunk chunk= this.fPageTable[i];
-				chunk.fDatabase.releaseChunk(chunk);
-				chunk.fCacheIndex= -1;
+			for (int i = newLength; i < oldLength; i++) {
+				Chunk chunk = this.fPageTable[i];
+				chunk.fCacheIndex = -1;
+				chunk.fDatabase.checkIfChunkReleased(chunk);
 			}
 			Chunk[] newTable= new Chunk[newLength];
 			System.arraycopy(this.fPageTable, 0, newTable, 0, newLength);
@@ -136,4 +166,18 @@
 		long maxLength= Math.min(maxSize / Database.CHUNK_SIZE, Integer.MAX_VALUE);
 		return Math.max(1, (int) maxLength);
 	}
+
+	public synchronized void clear() {
+		for (int i = 0; i < this.fPageTable.length; i++) {
+			Chunk chunk = this.fPageTable[i];
+			if (chunk == null) {
+				continue;
+			}
+			chunk.fCacheIndex = -1;
+			chunk.fDatabase.checkIfChunkReleased(chunk);
+			this.fPageTable[i] = null;
+		}
+		this.fTableIsFull = false;
+		this.fPointer = 0;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.java
new file mode 100644
index 0000000..13804bb
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ChunkWriter.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+
+/**
+ * Combines sequential small writes into larger writes and that ensures that writes don't happen faster than a certain
+ * maximum rate.
+ */
+public class ChunkWriter {
+	private double maxBytesPerMillisecond;
+	private long lastWritePosition;
+	private long bufferStartPosition;
+	private byte[] buffer;
+	private WriteCallback writeCallback;
+	private long bytesWrittenSinceLastSleep;
+	private long totalWriteTimeMs;
+	private long totalBytesWritten;
+	private SleepCallback sleepFunction = Thread::sleep;
+
+	/**
+	 * Interface used to perform the uninterruptable writes when the buffer fills up.
+	 */
+	@FunctionalInterface 
+	public interface WriteCallback {
+		/**
+		 * Performs an uninterruptable write of the given bytes to the given file position.
+		 * 
+		 * @param buffer
+		 *            the bytes to write
+		 * @param position
+		 *            the file position to write them to
+		 * @return true iff an attempt was made to interrupt the write via {@link Thread#interrupt()}. Note that the
+		 *         write must succeed regardless of the return value.
+		 * @throws IOException
+		 *             if unable to perform the write
+		 */
+		boolean write(ByteBuffer buffer, long position) throws IOException;
+	}
+
+	@FunctionalInterface
+	public interface SleepCallback {
+		/**
+		 * Sleeps the caller for the given time (in milliseconds) 
+		 */
+		void sleep(long millisecond) throws InterruptedException;
+	}
+
+	/**
+	 * Constructs a new {@link ChunkWriter}
+	 * 
+	 * @param bufferSize
+	 *            size of the write buffer (the maximum number of bytes that will be written in a single write).
+	 * @param maxBytesPerMillisecond
+	 *            the maximum number of bytes that will be written per second. If an attempt is made to write more
+	 *            rapidly than this, the thread will be put to sleep.
+	 * @param callback
+	 *            will be invoked to perform the writes
+	 */
+	public ChunkWriter(int bufferSize, double maxBytesPerMillisecond, WriteCallback callback) {
+		this.buffer = new byte[bufferSize];
+		this.lastWritePosition = 0;
+		this.bufferStartPosition = 0;
+		this.maxBytesPerMillisecond = maxBytesPerMillisecond;
+		this.writeCallback = callback;
+	}
+
+	/**
+	 * Writes the given bytes to the given file position.
+	 * 
+	 * @return true iff any attempt was made to interrupt the thread using {@link Thread#interrupt()}. The write
+	 *         succeeds regardless of the return value.
+	 * @throws IOException if unable to perform the write
+	 */
+	public boolean write(long position, byte[] data) throws IOException {
+		if (position == this.lastWritePosition) {
+			int bufferPosition = (int) (this.lastWritePosition - this.bufferStartPosition);
+			if (bufferPosition + data.length <= this.buffer.length) {
+				System.arraycopy(data, 0, this.buffer, bufferPosition, data.length);
+				this.lastWritePosition = position + data.length;
+				return false;
+			}
+		}
+
+		boolean wasInterrupted = flush();
+		System.arraycopy(data, 0, this.buffer, 0, data.length);
+		this.bufferStartPosition = position;
+		this.lastWritePosition = position + data.length;
+		return wasInterrupted;
+	}
+
+	/**
+	 * Flushes any outstanding writes to disk immediately.
+	 * 
+	 * @return true iff any attempt was made to interrupt the thread using {@link Thread#interrupt()}. The write
+	 *         succeeds regardless of the return value.
+	 * @throws IOException if unable to perform the write
+	 */
+	public boolean flush() throws IOException {
+		int bytesToWrite = (int) (this.lastWritePosition - this.bufferStartPosition);
+		if (bytesToWrite == 0) {
+			return false;
+		}
+		long startTimeMs = System.currentTimeMillis();
+		boolean result = this.writeCallback.write(ByteBuffer.wrap(this.buffer, 0, bytesToWrite),
+				this.bufferStartPosition);
+		long elapsedTimeMs = System.currentTimeMillis() - startTimeMs;
+
+		this.totalBytesWritten += bytesToWrite;
+		this.totalWriteTimeMs += elapsedTimeMs;
+		this.bytesWrittenSinceLastSleep = Math.max(0,
+				this.bytesWrittenSinceLastSleep + bytesToWrite - (long) (elapsedTimeMs * this.maxBytesPerMillisecond));
+		long desiredSleepTime = (long) (this.bytesWrittenSinceLastSleep / this.maxBytesPerMillisecond);
+
+		// If we're writing too fast, sleep to create backpressure and prevent us from overloading
+		// the disk's I/O bandwidth.
+		if (desiredSleepTime > 0) {
+			try {
+				this.sleepFunction.sleep(desiredSleepTime);
+				this.bytesWrittenSinceLastSleep -= this.maxBytesPerMillisecond * desiredSleepTime;
+			} catch (InterruptedException e) {
+				result = true;
+			}
+		}
+		this.bufferStartPosition = this.lastWritePosition;
+		return result;
+	}
+
+	/**
+	 * Overrides the sleep callback function.
+	 */
+	public void setSleepFunction(SleepCallback callback) {
+		this.sleepFunction = callback;
+	}
+
+	/**
+	 * Returns the total number of bytes written
+	 */
+	public long getBytesWritten() {
+		return this.totalBytesWritten;
+	}
+
+	/**
+	 * Returns the total time spent in calls to {@link WriteCallback#write(ByteBuffer, long)}.
+	 */
+	public long getTotalWriteTimeMs() {
+		return this.totalWriteTimeMs;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.java
index c0c948b..ddd220b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Database.java
@@ -11,6 +11,7 @@
  *     Markus Schorn (Wind River Systems)
  *     IBM Corporation
  *     Sergey Prigogin (Google)
+ *     Stefan Xenos (Google)
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
 
@@ -22,16 +23,29 @@
 import java.nio.channels.ClosedByInterruptException;
 import java.nio.channels.ClosedChannelException;
 import java.nio.channels.FileChannel;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Status;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.IndexExceptionBuilder;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.eclipse.osgi.util.NLS;
 
 /**
  * Database encapsulates access to a flat binary format file with a memory-manager-like API for
  * obtaining and releasing areas of storage (memory).
+ * <p>
+ * Some terminology is used throughout this class: A block is a variable-size piece of
+ * contiguous memory returned by malloc. A chunk is a fixed-size piece of contiguous memory
+ * that is the atomic unit for paging, caching, reads, and writes. A free block is contiguous
+ * variable-length piece of memory that is created by free and is potentially usable by malloc.
+ * Most chunks contain multiple blocks and free blocks, but it is possible for a single block
+ * to use multiple chunks. Such blocks are referred to as "large blocks". A free block is always
+ * smaller than a chunk.
  */
 /*
  * The file encapsulated is divided into Chunks of size CHUNK_SIZE, and a table of contents
@@ -109,6 +123,7 @@
 	public static final int WRITE_NUMBER_OFFSET = FREE_BLOCK_OFFSET + PTR_SIZE;
 	public static final int MALLOC_STATS_OFFSET = WRITE_NUMBER_OFFSET + LONG_SIZE;
 	public static final int DATA_AREA_OFFSET = MALLOC_STATS_OFFSET + MemoryStats.SIZE;
+	public static final int NUM_HEADER_CHUNKS = 1;
 
 	// Malloc pool IDs (used for classifying memory allocations and recording statistics about them)
 	/** Misc pool -- may be used for any purpose that doesn't fit the IDs below. */
@@ -123,6 +138,40 @@
 	/** Id for the first node type. All node types will record their stats in a pool whose ID is POOL_FIRST_NODE_TYPE + node_id*/
 	public static final short POOL_FIRST_NODE_TYPE	= 0x0100;
 
+	public static class ChunkStats {
+		public final int totalChunks;
+		public final int chunksInMemory;
+		public final int dirtyChunks;
+		public final int nonDirtyChunksNotInCache;
+
+		public ChunkStats(int totalChunks, int chunksInMemory, int dirtyChunks, int nonDirtyChunksNotInCache) {
+			this.totalChunks = totalChunks;
+			this.chunksInMemory = chunksInMemory;
+			this.dirtyChunks = dirtyChunks;
+			this.nonDirtyChunksNotInCache = nonDirtyChunksNotInCache;
+		}
+
+		@Override
+		public String toString() {
+			return "Chunks: total = " + this.totalChunks + ", in memory = " + this.chunksInMemory //$NON-NLS-1$//$NON-NLS-2$
+					+ ", dirty = " + this.dirtyChunks + ", not in cache = " + this.nonDirtyChunksNotInCache;  //$NON-NLS-1$//$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * For loops that scan through the chunks list, this imposes a maximum number of iterations before the loop must
+	 * release the chunk cache mutex.
+	 */
+	private static final int MAX_ITERATIONS_PER_LOCK = 256;
+	private static final int WRITE_BUFFER_SIZE = CHUNK_SIZE * 32;
+
+	/**
+	 * True iff large chunk self-diagnostics should be enabled.
+	 */
+	public static boolean DEBUG_FREE_SPACE;
+
+	public static boolean DEBUG_PAGE_CACHE;
+
 	private final File fLocation;
 	private final boolean fReadOnly;
 	private RandomAccessFile fFile;
@@ -132,7 +181,11 @@
 
 	private int fVersion;
 	private final Chunk fHeaderChunk;
-	private Chunk[] fChunks;
+	/**
+	 * Stores the {@link Chunk} associated with each page number or null if the chunk isn't loaded. Synchronize on
+	 * {@link #fCache} before accessing.
+	 */
+	Chunk[] fChunks;
 	private int fChunksUsed;
 	private ChunkCache fCache;
 
@@ -140,8 +193,27 @@
 	private long freed;
 	private long cacheHits;
 	private long cacheMisses;
+	private long bytesWritten;
+	private long totalReadTimeMs;
 
 	private MemoryStats memoryUsage;
+	public Chunk fMostRecentlyFetchedChunk;
+	/**
+	 * Contains the set of Chunks in this Database for which the Chunk.dirty flag is set to true.
+	 * Protected by the database write lock. This set does not contain the header chunk, which is
+	 * always handled as a special case by the code that flushes chunks.
+	 */
+	private HashSet<Chunk> dirtyChunkSet = new HashSet<>();
+	private long totalFlushTime;
+	private long totalWriteTimeMs;
+	private long pageWritesBytes;
+	private long nextValidation;
+	private long validateCounter;
+	public static final double MIN_BYTES_PER_MILLISECOND = 20480.0;
+
+	private final ModificationLog log = new ModificationLog(0);
+	private final Tag mallocTag;
+	private final Tag freeTag;
 
 	/**
 	 * Construct a new Database object, creating a backing file if necessary.
@@ -152,6 +224,8 @@
 	 * @throws IndexException
 	 */
 	public Database(File location, ChunkCache cache, int version, boolean openReadOnly) throws IndexException {
+		this.mallocTag = ModificationLog.createTag("Calling Database.malloc"); //$NON-NLS-1$
+		this.freeTag = ModificationLog.createTag("Calling Database.free"); //$NON-NLS-1$
 		try {
 			this.fLocation = location;
 			this.fReadOnly= openReadOnly;
@@ -160,7 +234,6 @@
 
 			int nChunksOnDisk = (int) (this.fFile.length() / CHUNK_SIZE);
 			this.fHeaderChunk= new Chunk(this, 0);
-			this.fHeaderChunk.fLocked= true;		// Never makes it into the cache, needed to satisfy assertions.
 			if (nChunksOnDisk <= 0) {
 				this.fVersion= version;
 				this.fChunks= new Chunk[1];
@@ -177,7 +250,7 @@
 		this.memoryUsage = new MemoryStats(this.fHeaderChunk, MALLOC_STATS_OFFSET);
 	}
 
-	private static int divideRoundingUp(long num, int den) {
+	private static int divideRoundingUp(long num, long den) {
 		return (int) ((num + den - 1) / den);
 	}
 
@@ -211,6 +284,10 @@
 		} while (true);
 	}
 
+	public ModificationLog getLog() {
+		return this.log;
+	}
+
 	/**
 	 * Attempts to write to the given position in the file. Will retry if interrupted by Thread.interrupt() until,
 	 * the write succeeds. It will return true if any call to Thread.interrupt() was detected.
@@ -219,6 +296,7 @@
 	 * @throws IOException
 	 */
 	boolean write(ByteBuffer buf, long position) throws IOException {
+		this.bytesWritten += buf.limit();
 		return performUninterruptableWrite(() -> {this.fFile.getChannel().write(buf, position);});
 	}
 
@@ -292,17 +370,20 @@
 		boolean wasCanceled = false;
 		removeChunksFromCache();
 
+		this.log.clear();
 		this.fVersion= version;
 		// Clear the first chunk.
 		this.fHeaderChunk.clear(0, CHUNK_SIZE);
 		// Chunks have been removed from the cache, so we may just reset the array of chunks.
 		this.fChunks = new Chunk[] {null};
+		this.dirtyChunkSet.clear();
 		this.fChunksUsed = this.fChunks.length;
 		try {
 			wasCanceled = this.fHeaderChunk.flush() || wasCanceled; // Zero out header chunk.
 			wasCanceled = performUninterruptableWrite(() -> {
 				this.fFile.getChannel().truncate(CHUNK_SIZE);
 			}) || wasCanceled;
+			this.bytesWritten += CHUNK_SIZE;
 		} catch (IOException e) {
 			Package.log(e);
 		}
@@ -323,16 +404,26 @@
 			wasCanceled = flush() || wasCanceled;
 		}
 		this.memoryUsage.refresh();
+		this.fHeaderChunk.makeDirty();
 		return wasCanceled;
 	}
 
 	private void removeChunksFromCache() {
-		synchronized (this.fCache) {
-			for (int i= 1; i < this.fChunks.length; i++) {
-				Chunk chunk= this.fChunks[i];
-				if (chunk != null) {
-					this.fCache.remove(chunk);
-					this.fChunks[i]= null;
+		int scanIndex = NUM_HEADER_CHUNKS;
+		while (scanIndex < this.fChunksUsed) {
+			synchronized (this.fCache) {
+				int countMax = Math.min(MAX_ITERATIONS_PER_LOCK, this.fChunksUsed - scanIndex);
+				for (int count = 0; count < countMax; count++) {
+					Chunk chunk = this.fChunks[scanIndex++];
+					if (chunk != null) {
+						this.fCache.remove(chunk);
+						if (DEBUG_PAGE_CACHE) {
+							System.out.println("CHUNK " + chunk.fSequenceNumber //$NON-NLS-1$
+									+ ": removing from vector in removeChunksFromCache - instance " //$NON-NLS-1$
+									+ System.identityHashCode(chunk));
+						}
+						this.fChunks[chunk.fSequenceNumber] = null;
+					}
 				}
 			}
 		}
@@ -340,34 +431,70 @@
 
 	/**
 	 * Return the Chunk that contains the given offset.
+	 * 
 	 * @throws IndexException
 	 */
 	public Chunk getChunk(long offset) throws IndexException {
+		assert offset >= 0;
 		assertLocked();
 		if (offset < CHUNK_SIZE) {
+			this.fMostRecentlyFetchedChunk = this.fHeaderChunk;
 			return this.fHeaderChunk;
 		}
 		long long_index = offset / CHUNK_SIZE;
 		assert long_index < Integer.MAX_VALUE;
 
+		final int index = (int) long_index;
+		Chunk chunk;
 		synchronized (this.fCache) {
 			assert this.fLocked;
-			final int index = (int) long_index;
 			if (index < 0 || index >= this.fChunks.length) {
 				databaseCorruptionDetected();
 			}
-			Chunk chunk= this.fChunks[index];
-			if (chunk == null) {
+			chunk = this.fChunks[index];
+		}
+
+		long readStartMs = 0;
+		long readEndMs = 0;
+		// Read the new chunk outside of any synchronized block (this allows parallel reads and prevents background
+		// threads from retaining a lock that blocks the UI while the background thread performs I/O).
+		boolean cacheMiss = (chunk == null);
+		if (cacheMiss) {
+			readStartMs = System.currentTimeMillis();
+			chunk = new Chunk(this, index);
+			chunk.read();
+			readEndMs = System.currentTimeMillis();
+		}
+
+		synchronized (this.fCache) {
+			if (cacheMiss) {
 				this.cacheMisses++;
-				chunk = new Chunk(this, index);
-				chunk.read();
-				this.fChunks[index] = chunk;
+				this.totalReadTimeMs += (readEndMs - readStartMs);
 			} else {
 				this.cacheHits++;
 			}
-			this.fCache.add(chunk, this.fExclusiveLock);
-			return chunk;
+			Chunk newChunk = this.fChunks[index];
+			if (newChunk != chunk && newChunk != null) {
+				// Another thread fetched this chunk in the meantime. In this case, we should use the chunk fetched
+				// by the other thread.
+				if (DEBUG_PAGE_CACHE) {
+					System.out.println("CHUNK " + chunk.fSequenceNumber //$NON-NLS-1$
+							+ ": already fetched by another thread - instance " //$NON-NLS-1$
+							+ System.identityHashCode(chunk));
+				}
+				chunk = newChunk;
+			} else if (cacheMiss) {
+				if (DEBUG_PAGE_CACHE) {
+					System.out.println("CHUNK " + chunk.fSequenceNumber + ": inserted into vector - instance " //$NON-NLS-1$//$NON-NLS-2$
+							+ System.identityHashCode(chunk));
+				}
+				this.fChunks[index] = chunk;
+			}
+			this.fCache.add(chunk);
+			this.fMostRecentlyFetchedChunk = chunk;
 		}
+
+		return chunk;
 	}
 
 	public void assertLocked() {
@@ -386,7 +513,8 @@
 	 */
 	public void memcpy(long dest, long source, int numBytes) {
 		assert numBytes >= 0;
-		assert numBytes <= MAX_SINGLE_BLOCK_MALLOC_SIZE;
+		long endAddress = source + numBytes;
+		assert endAddress <= (long) this.fChunksUsed * CHUNK_SIZE;
 		// TODO: make use of lower-level System.arrayCopy
 		for (int count = 0; count < numBytes; count++) {
 			putByte(dest + count, getByte(source + count));
@@ -400,61 +528,86 @@
 		assert this.fExclusiveLock;
 		assert datasize >= 0;
 		assert datasize <= MAX_MALLOC_SIZE;
-
+		
 		long result;
 		int usedSize;
-		if (datasize >= MAX_SINGLE_BLOCK_MALLOC_SIZE) {
-			int newChunkNum = createLargeBlock(datasize);
-			usedSize = Math.abs(getBlockHeaderForChunkNum(newChunkNum)) * CHUNK_SIZE;
-			result = newChunkNum * CHUNK_SIZE + LargeBlock.HEADER_SIZE;
-			// Note that we identify large blocks by setting their block size to 0.
-			clearRange(result, usedSize - LargeBlock.HEADER_SIZE - LargeBlock.FOOTER_SIZE);
-			result = result + BLOCK_HEADER_SIZE;
-		} else {
-			long freeBlock = 0;
-			int needDeltas = divideRoundingUp(datasize + BLOCK_HEADER_SIZE, BLOCK_SIZE_DELTA);
-			if (needDeltas < MIN_BLOCK_DELTAS) {
-				needDeltas = MIN_BLOCK_DELTAS;
-			}
-
-			// Which block size.
-			int useDeltas;
-			for (useDeltas = needDeltas; useDeltas <= MAX_BLOCK_DELTAS; useDeltas++) {
-				freeBlock = getFirstBlock(useDeltas * BLOCK_SIZE_DELTA);
-				if (freeBlock != 0)
-					break;
-			}
-
-			// Get the block.
-			Chunk chunk;
-			if (freeBlock == 0) {
-				// Allocate a new chunk.
-				freeBlock = (long) (createLargeBlock(datasize)) * (long) CHUNK_SIZE + LargeBlock.HEADER_SIZE;
-				useDeltas = MAX_BLOCK_DELTAS;
-				chunk = getChunk(freeBlock);
+		this.log.start(this.mallocTag);
+		try {
+			if (datasize >= MAX_SINGLE_BLOCK_MALLOC_SIZE) {
+				int newChunkNum = createLargeBlock(datasize);
+				usedSize = Math.abs(getBlockHeaderForChunkNum(newChunkNum)) * CHUNK_SIZE;
+				result = (long) newChunkNum * CHUNK_SIZE + LargeBlock.HEADER_SIZE;
+				// Note that we identify large blocks by setting their block size to 0.
+				clearRange(result, usedSize - LargeBlock.HEADER_SIZE - LargeBlock.FOOTER_SIZE);
+				result = result + BLOCK_HEADER_SIZE;
 			} else {
-				chunk = getChunk(freeBlock);
-				removeBlock(chunk, useDeltas * BLOCK_SIZE_DELTA, freeBlock);
+				long freeBlock = 0;
+				int needDeltas = divideRoundingUp(datasize + BLOCK_HEADER_SIZE, BLOCK_SIZE_DELTA);
+				if (needDeltas < MIN_BLOCK_DELTAS) {
+					needDeltas = MIN_BLOCK_DELTAS;
+				}
+	
+				// Which block size.
+				int useDeltas;
+				for (useDeltas = needDeltas; useDeltas <= MAX_BLOCK_DELTAS; useDeltas++) {
+					freeBlock = getFirstBlock(useDeltas * BLOCK_SIZE_DELTA);
+					if (freeBlock != 0)
+						break;
+				}
+	
+				// Get the block.
+				Chunk chunk;
+				if (freeBlock == 0) {
+					// Allocate a new chunk.
+					freeBlock = (long) (createLargeBlock(datasize)) * (long) CHUNK_SIZE + LargeBlock.HEADER_SIZE;
+					useDeltas = MAX_BLOCK_DELTAS;
+					chunk = getChunk(freeBlock);
+				} else {
+					chunk = getChunk(freeBlock);
+					chunk.makeDirty();
+					int blockReportedSize = chunk.getShort(freeBlock);
+					if (blockReportedSize != useDeltas * BLOCK_SIZE_DELTA) {
+						throw describeProblem()
+							.addProblemAddress("block size", freeBlock, SHORT_SIZE) //$NON-NLS-1$
+							.build(
+								"Heap corruption detected in free space list. Block " + freeBlock //$NON-NLS-1$
+								+ " reports a size of " + blockReportedSize + " but was in the list for blocks of size "  //$NON-NLS-1$//$NON-NLS-2$
+								+ useDeltas * BLOCK_SIZE_DELTA);
+					}
+					removeBlock(chunk, useDeltas * BLOCK_SIZE_DELTA, freeBlock);
+				}
+	
+				final int unusedDeltas = useDeltas - needDeltas;
+				if (unusedDeltas >= MIN_BLOCK_DELTAS) {
+					// Add in the unused part of our block.
+					addBlock(chunk, unusedDeltas * BLOCK_SIZE_DELTA, freeBlock + needDeltas * BLOCK_SIZE_DELTA);
+					useDeltas = needDeltas;
+				}
+	
+				// Make our size negative to show in use.
+				usedSize = useDeltas * BLOCK_SIZE_DELTA;
+				chunk.putShort(freeBlock, (short) -usedSize);
+	
+				// Clear out the block, lots of people are expecting this.
+				chunk.clear(freeBlock + BLOCK_HEADER_SIZE, usedSize - BLOCK_HEADER_SIZE);
+				result = freeBlock + BLOCK_HEADER_SIZE;
 			}
-
-			final int unusedDeltas = useDeltas - needDeltas;
-			if (unusedDeltas >= MIN_BLOCK_DELTAS) {
-				// Add in the unused part of our block.
-				addBlock(chunk, unusedDeltas * BLOCK_SIZE_DELTA, freeBlock + needDeltas * BLOCK_SIZE_DELTA);
-				useDeltas = needDeltas;
-			}
-
-			// Make our size negative to show in use.
-			usedSize = useDeltas * BLOCK_SIZE_DELTA;
-			chunk.putShort(freeBlock, (short) -usedSize);
-
-			// Clear out the block, lots of people are expecting this.
-			chunk.clear(freeBlock + BLOCK_HEADER_SIZE, usedSize - BLOCK_HEADER_SIZE);
-			result = freeBlock + BLOCK_HEADER_SIZE;
+		} finally {
+			this.log.end(this.mallocTag);
 		}
 
+		this.log.recordMalloc(result, usedSize - BLOCK_HEADER_SIZE);
 		this.malloced += usedSize;
 		this.memoryUsage.recordMalloc(poolId, usedSize);
+
+		if (DEBUG_FREE_SPACE) {
+			boolean performedValidation = periodicValidateFreeSpace();
+
+			if (performedValidation) {
+				verifyNotInFreeSpaceList(result);
+			}
+		}
+
 		return result;
 	}
 
@@ -464,14 +617,14 @@
 	 * @param startAddress first address to clear
 	 * @param bytesToClear number of addresses to clear
 	 */
-	public void clearRange(long startAddress, int bytesToClear) {
+	public void clearRange(long startAddress, long bytesToClear) {
 		if (bytesToClear == 0) {
 			return;
 		}
 		long endAddress = startAddress + bytesToClear;
-		assert endAddress <= this.fChunksUsed * CHUNK_SIZE;
+		assert endAddress <= (long) this.fChunksUsed * CHUNK_SIZE;
 		int blockNumber = (int) (startAddress / CHUNK_SIZE);
-		int firstBlockBytesToClear = Math.min((int) (((blockNumber + 1) * CHUNK_SIZE) - startAddress), bytesToClear);
+		int firstBlockBytesToClear = (int) Math.min((((long) (blockNumber + 1) * CHUNK_SIZE) - startAddress), bytesToClear);
 
 		Chunk firstBlock = getChunk(startAddress);
 		firstBlock.clear(startAddress, firstBlockBytesToClear);
@@ -486,7 +639,7 @@
 
 		if (bytesToClear > 0) {
 			Chunk nextBlock = getChunk(startAddress);
-			nextBlock.clear(startAddress, bytesToClear);
+			nextBlock.clear(startAddress, (int) bytesToClear);
 		}
 	}
 
@@ -523,6 +676,22 @@
 		} else {
 			numChunks = getBlockHeaderForChunkNum(freeBlockChunkNum);
 
+			if (numChunks < neededChunks) {
+				throw describeProblem()
+					.addProblemAddress("chunk header", (long) freeBlockChunkNum * CHUNK_SIZE, INT_SIZE) //$NON-NLS-1$
+					.build("A block in the free space trie was too small or wasn't actually free. Reported size = " //$NON-NLS-1$
+							+ numChunks + " chunks, requested size = " + neededChunks + " chunks");  //$NON-NLS-1$//$NON-NLS-2$
+			}
+
+			int footer = getBlockFooterForChunkBefore(freeBlockChunkNum + numChunks);
+			if (footer != numChunks) {
+				throw describeProblem()
+					.addProblemAddress("chunk header", (long) freeBlockChunkNum * CHUNK_SIZE, INT_SIZE) //$NON-NLS-1$
+					.addProblemAddress("chunk footer", (long) (freeBlockChunkNum + numChunks) * CHUNK_SIZE - INT_SIZE, INT_SIZE) //$NON-NLS-1$
+					.build("The header and footer didn't match for a block in the free space trie. Expected " //$NON-NLS-1$
+							+ numChunks + " but found " + footer); //$NON-NLS-1$
+			}
+
 			unlinkFreeBlock(freeBlockChunkNum);
 		}
 
@@ -532,7 +701,7 @@
 			// choice of using either half of the block. In the interest of leaving more
 			// opportunities of merging large blocks, we leave the unused half of the block
 			// next to the larger adjacent block.
-			final long nextBlockChunkNum = freeBlockChunkNum + numChunks;
+			final int nextBlockChunkNum = freeBlockChunkNum + numChunks;
 
 			final int nextBlockSize = Math.abs(getBlockHeaderForChunkNum(nextBlockChunkNum));
 			final int prevBlockSize = Math.abs(getBlockFooterForChunkBefore(freeBlockChunkNum));
@@ -545,7 +714,7 @@
 				linkFreeBlockToTrie(freeBlockChunkNum + neededChunks, unusedChunks);
 			} else {
 				// Use the end of the block
-				resultChunkNum = freeBlockChunkNum + neededChunks;
+				resultChunkNum = freeBlockChunkNum + unusedChunks;
 				// Return the first half of the block to the free block pool
 				linkFreeBlockToTrie(freeBlockChunkNum, unusedChunks);
 			}
@@ -565,23 +734,29 @@
 	 * @param freeBlockChunkNum chunk number of the block to be unlinked
 	 */
 	private void unlinkFreeBlock(int freeBlockChunkNum) {
-		long freeBlockAddress = freeBlockChunkNum * CHUNK_SIZE;
+		long freeBlockAddress = (long) freeBlockChunkNum * CHUNK_SIZE;
 		int anotherBlockOfSameSize = 0;
 		int nextBlockChunkNum = getInt(freeBlockAddress + LargeBlock.NEXT_BLOCK_OFFSET);
 		int prevBlockChunkNum = getInt(freeBlockAddress + LargeBlock.PREV_BLOCK_OFFSET);
 		// Relink the linked list
 		if (nextBlockChunkNum != 0) {
 			anotherBlockOfSameSize = nextBlockChunkNum;
-			putInt(nextBlockChunkNum * CHUNK_SIZE + LargeBlock.PREV_BLOCK_OFFSET, prevBlockChunkNum);
+			putInt((long) nextBlockChunkNum * CHUNK_SIZE + LargeBlock.PREV_BLOCK_OFFSET, prevBlockChunkNum);
 		}
 		if (prevBlockChunkNum != 0) {
 			anotherBlockOfSameSize = prevBlockChunkNum;
-			putInt(prevBlockChunkNum * CHUNK_SIZE + LargeBlock.NEXT_BLOCK_OFFSET, nextBlockChunkNum);
+			putInt((long) prevBlockChunkNum * CHUNK_SIZE + LargeBlock.NEXT_BLOCK_OFFSET, nextBlockChunkNum);
 		}
 
+		/**
+		 * True iff this block was a block in the trie. False if it was attached to to the list of siblings but some
+		 * other node in the list is the one in the trie.
+		 */
+		boolean wasInTrie = false;
 		long root = getInt(FREE_BLOCK_OFFSET);
 		if (root == freeBlockChunkNum) {
 			putInt(FREE_BLOCK_OFFSET, 0);
+			wasInTrie = true;
 		}
 
 		int freeBlockSize = getBlockHeaderForChunkNum(freeBlockChunkNum);
@@ -591,20 +766,33 @@
 			int difference = currentSize ^ freeBlockSize;
 			if (difference != 0) {
 				int firstDifference = LargeBlock.SIZE_OF_SIZE_FIELD * 8 - Integer.numberOfLeadingZeros(difference) - 1;
-				long locationOfChildPointer = parentChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET
+				long locationOfChildPointer = (long) parentChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET
 						+ (firstDifference * INT_SIZE);
-				putInt(locationOfChildPointer, 0);
+				int childChunkNum = getInt(locationOfChildPointer);
+				if (childChunkNum == freeBlockChunkNum) {
+					wasInTrie = true;
+					putInt(locationOfChildPointer, 0);
+				}
 			}
 		}
 
-		if (anotherBlockOfSameSize != 0) {
+		// If the removed block was the head of the linked list, we need to reinsert the following entry as the
+		// new head.
+		if (wasInTrie && anotherBlockOfSameSize != 0) {
 			insertChild(parentChunkNum, anotherBlockOfSameSize);
 		}
 
 		int currentParent = parentChunkNum;
 		for (int childIdx = 0; childIdx < LargeBlock.ENTRIES_IN_CHILD_TABLE; childIdx++) {
-			int nextChildChunkNum = getInt(freeBlockAddress + LargeBlock.CHILD_TABLE_OFFSET + (childIdx * INT_SIZE));
+			long childAddress = freeBlockAddress + LargeBlock.CHILD_TABLE_OFFSET + (childIdx * INT_SIZE);
+			int nextChildChunkNum = getInt(childAddress);
 			if (nextChildChunkNum != 0) {
+				if (!wasInTrie) {
+					throw describeProblem()
+						.addProblemAddress("non-null child pointer", childAddress, INT_SIZE) //$NON-NLS-1$
+						.build("All child pointers should be null for a free chunk that is in the sibling list but" //$NON-NLS-1$
+								+ " not part of the trie. Problematic chunk number: " + freeBlockChunkNum); //$NON-NLS-1$
+				}
 				insertChild(currentParent, nextChildChunkNum);
 				// Parent all subsequent children under the child that was most similar to the old parent
 				if (currentParent == parentChunkNum) {
@@ -633,7 +821,7 @@
 
 		// Try not to return the trie node itself if there is a linked list entry available, since unlinking
 		// something from the linked list is faster than unlinking a trie node.
-		int nextResultChunkNum = getInt(resultChunkNum * CHUNK_SIZE + LargeBlock.NEXT_BLOCK_OFFSET);
+		int nextResultChunkNum = getInt((long) resultChunkNum * CHUNK_SIZE + LargeBlock.NEXT_BLOCK_OFFSET);
 		if (nextResultChunkNum != 0) {
 			return nextResultChunkNum;
 		}
@@ -666,7 +854,7 @@
 		for (int testPosition = firstDifference; testPosition < LargeBlock.ENTRIES_IN_CHILD_TABLE; testPosition++) {
 			if (((currentSize & bitMask) != 0) == lookingForSmallerChild) {
 				int nextChildChunkNum = getInt(
-						trieNodeChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET + (testPosition * PTR_SIZE));
+						(long) trieNodeChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET + (testPosition * INT_SIZE));
 				int childResultChunkNum = getSmallestChildNoSmallerThan(nextChildChunkNum, numChunks);
 				if (childResultChunkNum != 0) {
 					return childResultChunkNum;
@@ -691,7 +879,7 @@
 	 */
 	private void linkFreeBlockToTrie(int freeBlockChunkNum, int numChunks) {
 		setBlockHeader(freeBlockChunkNum, numChunks);
-		long freeBlockAddress = freeBlockChunkNum * CHUNK_SIZE;
+		long freeBlockAddress = (long) freeBlockChunkNum * CHUNK_SIZE;
 		Chunk chunk = getChunk(freeBlockAddress);
 		chunk.clear(freeBlockAddress + LargeBlock.HEADER_SIZE,
 				LargeBlock.UNALLOCATED_HEADER_SIZE - LargeBlock.HEADER_SIZE);
@@ -699,6 +887,173 @@
 		insertChild(getInt(FREE_BLOCK_OFFSET), freeBlockChunkNum);
 	}
 
+	public void validateFreeSpace() {
+		validateFreeSpaceLists();
+		validateFreeSpaceTries();
+	}
+
+	/**
+	 * Performs a self-test on the free space lists used by malloc to check for corruption
+	 */
+	private void validateFreeSpaceLists() {
+		int useDeltas;
+		for (useDeltas = MIN_BLOCK_DELTAS; useDeltas <= MAX_BLOCK_DELTAS; useDeltas++) {
+			validateFreeBlocksFor(useDeltas);
+		}
+	}
+
+	private void verifyNotInFreeSpaceList(long result) {
+		int useDeltas;
+		for (useDeltas = MIN_BLOCK_DELTAS; useDeltas <= MAX_BLOCK_DELTAS; useDeltas++) {
+			int correctSize = useDeltas * BLOCK_SIZE_DELTA;
+			long block = getFirstBlock(correctSize);
+			long addressOfPrevBlockPointer = getAddressOfFirstBlockPointer(correctSize);
+			while (block != 0) {
+				if (block == result) {
+					throw describeProblem()
+						.addProblemAddress("incoming pointer", addressOfPrevBlockPointer, PTR_SIZE) //$NON-NLS-1$
+						.build("Block " + result  //$NON-NLS-1$
+							+ " was found in the free space list, even though it wasn't free"); //$NON-NLS-1$
+				}
+				addressOfPrevBlockPointer = block + BLOCK_NEXT_OFFSET;
+				long followingBlock = getFreeRecPtr(addressOfPrevBlockPointer);
+				block = followingBlock;
+			}
+		}
+
+		int currentChunkNum = getInt(FREE_BLOCK_OFFSET);
+
+		if (currentChunkNum == 0) {
+			return;
+		}
+		int targetChunkNum = (int) (result / CHUNK_SIZE);
+
+		if (currentChunkNum == targetChunkNum) {
+			throw describeProblem().build("Block " + result  //$NON-NLS-1$
+					+ " was not supposed to be in the free space list, but was linked as the root of the list"); //$NON-NLS-1$
+		}
+
+		verifyNotInLargeBlockFreeSpaceTrie(targetChunkNum, currentChunkNum, 0);
+	}
+
+	private void verifyNotInLargeBlockFreeSpaceTrie(int targetChunkNum, int chunkNum, int parent) {
+		long chunkStart = (long) chunkNum * CHUNK_SIZE;
+
+		for (int testPosition = 0; testPosition < LargeBlock.ENTRIES_IN_CHILD_TABLE; testPosition++) {
+			long chunkAddress = chunkStart + LargeBlock.CHILD_TABLE_OFFSET + (testPosition * INT_SIZE);
+			int nextChildChunkNum = getInt(chunkAddress);
+
+			if (nextChildChunkNum == 0) {
+				continue;
+			}
+
+			if (nextChildChunkNum == targetChunkNum) {
+				throw describeProblem()
+					.addProblemAddress("trie child address", chunkAddress, INT_SIZE) //$NON-NLS-1$
+					.build("Chunk number " + nextChildChunkNum  //$NON-NLS-1$
+						+ " was found in the free space trie even though it was in use"); //$NON-NLS-1$
+			}
+
+			verifyNotInLargeBlockFreeSpaceTrie(targetChunkNum, nextChildChunkNum, chunkNum);
+		}
+	}
+
+	private void validateFreeBlocksFor(int numberOfDeltas) {
+		int correctSize = numberOfDeltas * BLOCK_SIZE_DELTA;
+		long lastBlock = 0;
+		long block = getFirstBlock(correctSize);
+		long addressOfPrevBlockPointer = getAddressOfFirstBlockPointer(correctSize);
+		while (block != 0) {
+			long measuredLastBlock = getFreeRecPtr(block + BLOCK_PREV_OFFSET);
+			int blockReportedSize = getShort(block);
+			long followingBlock = getFreeRecPtr(block + BLOCK_NEXT_OFFSET);
+			if (measuredLastBlock != lastBlock) {
+				throw describeProblem()
+					.addProblemAddress("last block", block + BLOCK_PREV_OFFSET, PTR_SIZE) //$NON-NLS-1$
+					.addProblemAddress("incoming pointer", addressOfPrevBlockPointer, PTR_SIZE) //$NON-NLS-1$
+					.build("The free space block (" + block //$NON-NLS-1$
+						+ ") of size " + correctSize + " had an incorrect prev pointer to "  //$NON-NLS-1$//$NON-NLS-2$
+						+ measuredLastBlock + ", but it should have been pointing to " //$NON-NLS-1$
+						+ lastBlock);
+			}
+			if (blockReportedSize != correctSize) {
+				throw describeProblem()
+					.addProblemAddress("block size", block, SHORT_SIZE) //$NON-NLS-1$
+					.addProblemAddress("incoming pointer", addressOfPrevBlockPointer, PTR_SIZE) //$NON-NLS-1$
+					.build("A block (" + block + ") of size " + measuredLastBlock //$NON-NLS-1$ //$NON-NLS-2$
+						+ " was in the free space list for blocks of size " + correctSize); //$NON-NLS-1$
+			}
+			addressOfPrevBlockPointer = block + BLOCK_NEXT_OFFSET;
+			lastBlock = block;
+			block = followingBlock;
+		}
+	}
+
+	/**
+	 * Performs a self-test on the free space trie list (used by the large block allocator) to check for corruption
+	 */
+	private void validateFreeSpaceTries() {
+		int currentChunkNum = getInt(FREE_BLOCK_OFFSET);
+
+		if (currentChunkNum == 0) {
+			return;
+		}
+
+		Set<Integer> visited = new HashSet<>();
+		validateFreeSpaceNode(visited, currentChunkNum, 0);
+	}
+
+	private void validateFreeSpaceNode(Set<Integer> visited, int chunkNum, int parent) {
+		if (visited.contains(chunkNum)) {
+			throw describeProblem().build("Chunk " + chunkNum + "(parent = " + parent //$NON-NLS-1$//$NON-NLS-2$
+					+ " appeared twice in the free space tree"); //$NON-NLS-1$
+		}
+
+		long chunkStart = (long) chunkNum * CHUNK_SIZE;
+		int parentChunk = getInt(chunkStart + LargeBlock.PARENT_OFFSET);
+		if (parentChunk != parent) {
+			throw describeProblem()
+				.addProblemAddress("parent pointer", chunkStart + LargeBlock.PARENT_OFFSET, Database.INT_SIZE) //$NON-NLS-1$
+				.build("Chunk " + chunkNum + " has the wrong parent. Expected " + parent  //$NON-NLS-1$//$NON-NLS-2$
+					+ " but found  " + parentChunk); //$NON-NLS-1$
+		}
+
+		visited.add(chunkNum);
+		int numChunks = getBlockHeaderForChunkNum(chunkNum);
+		for (int testPosition = 0; testPosition < LargeBlock.ENTRIES_IN_CHILD_TABLE; testPosition++) {
+			long nextChildChunkNumAddress = chunkStart + LargeBlock.CHILD_TABLE_OFFSET + (testPosition * INT_SIZE);
+			int nextChildChunkNum = getInt(nextChildChunkNumAddress);
+
+			if (nextChildChunkNum == 0) {
+				continue;
+			}
+
+			int nextSize = getBlockHeaderForChunkNum(nextChildChunkNum);
+			int sizeDifference = nextSize ^ numChunks;
+			int firstDifference = LargeBlock.SIZE_OF_SIZE_FIELD * 8 - Integer.numberOfLeadingZeros(
+					Integer.highestOneBit(sizeDifference)) - 1;
+
+			if (firstDifference != testPosition) {
+				IndexExceptionBuilder descriptor = describeProblem();
+				attachBlockHeaderForChunkNum(descriptor, chunkNum);
+				attachBlockHeaderForChunkNum(descriptor, nextChildChunkNum);
+				throw descriptor.build("Chunk " + nextChildChunkNum + " contained an incorrect size of "  //$NON-NLS-1$//$NON-NLS-2$
+						+ nextSize + ". It was at position " + testPosition + " in parent " + chunkNum //$NON-NLS-1$ //$NON-NLS-2$
+						+ " which had size " + numChunks); //$NON-NLS-1$
+			}
+
+			try {
+				validateFreeSpaceNode(visited, nextChildChunkNum, chunkNum);
+			} catch (IndexException e) {
+				describeProblem()
+					.addProblemAddress("child pointer from parent " + chunkNum, nextChildChunkNumAddress,  //$NON-NLS-1$
+							Database.INT_SIZE)
+					.attachTo(e);
+				throw e;
+			}
+		}
+	}
+	
 	/**
 	 * Adds the given child block to the given parent subtree of the free space trie. Any existing
 	 * subtree under the given child block will be retained.
@@ -708,7 +1063,7 @@
 	 */
 	private void insertChild(int parentChunkNum, int newChildChunkNum) {
 		if (parentChunkNum == 0) {
-			putInt(newChildChunkNum * CHUNK_SIZE + LargeBlock.PARENT_OFFSET, parentChunkNum);
+			putInt((long) newChildChunkNum * CHUNK_SIZE + LargeBlock.PARENT_OFFSET, parentChunkNum);
 			putInt(FREE_BLOCK_OFFSET, newChildChunkNum);
 			return;
 		}
@@ -723,12 +1078,12 @@
 			}
 
 			int firstDifference = LargeBlock.SIZE_OF_SIZE_FIELD * 8 - Integer.numberOfLeadingZeros(difference) - 1;
-			long locationOfChildPointer = parentChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET
+			long locationOfChildPointer = (long) parentChunkNum * CHUNK_SIZE + LargeBlock.CHILD_TABLE_OFFSET
 					+ (firstDifference * INT_SIZE);
 			int childChunkNum = getInt(locationOfChildPointer);
 			if (childChunkNum == 0) {
 				putInt(locationOfChildPointer, newChildChunkNum);
-				putInt(newChildChunkNum * CHUNK_SIZE + LargeBlock.PARENT_OFFSET, parentChunkNum);
+				putInt((long) newChildChunkNum * CHUNK_SIZE + LargeBlock.PARENT_OFFSET, parentChunkNum);
 				return;
 			}
 			parentChunkNum = childChunkNum;
@@ -783,20 +1138,28 @@
 		assert headerContent != 0;
 		assert firstChunkNum < this.fChunksUsed;
 		int numBlocks = Math.abs(headerContent);
-		long firstChunkAddress = firstChunkNum * CHUNK_SIZE;
+		long firstChunkAddress = (long) firstChunkNum * CHUNK_SIZE;
 		putInt(firstChunkAddress, headerContent);
-		putInt(firstChunkAddress + (numBlocks * CHUNK_SIZE) - LargeBlock.FOOTER_SIZE, headerContent);
+		putInt(firstChunkAddress + ((long) numBlocks * CHUNK_SIZE) - LargeBlock.FOOTER_SIZE, headerContent);
 	}
 
 	/**
 	 * Returns the size of the block (in number of chunks) starting at the given address. The return value is positive
 	 * if the block is free and negative if the block is allocated.
 	 */
-	private int getBlockHeaderForChunkNum(long firstChunkNum) {
+	private int getBlockHeaderForChunkNum(int firstChunkNum) {
 		if (firstChunkNum >= this.fChunksUsed) {
 			return 0;
 		}
-		return getInt(firstChunkNum * CHUNK_SIZE);
+		return getInt((long) firstChunkNum * CHUNK_SIZE);
+	}
+
+	private void attachBlockHeaderForChunkNum(IndexExceptionBuilder builder, int firstChunkNum) {
+		if (firstChunkNum >= this.fChunksUsed) {
+			return;
+		}
+		builder.addProblemAddress("block header for chunk " + firstChunkNum, ((long) firstChunkNum * CHUNK_SIZE), //$NON-NLS-1$
+				Database.INT_SIZE);
 	}
 
 	/**
@@ -808,7 +1171,7 @@
 			// Don't report the database header as a normal chunk.
 			return 0;
 		}
-		return getInt(chunkNum * CHUNK_SIZE - LargeBlock.FOOTER_SIZE);
+		return getInt((long) chunkNum * CHUNK_SIZE - LargeBlock.FOOTER_SIZE);
 	}
 
 	private int createNewChunks(int numChunks) throws IndexException {
@@ -818,7 +1181,6 @@
 			final int lastChunkIndex = firstChunkIndex + numChunks - 1;
 
 			final Chunk lastChunk = new Chunk(this, lastChunkIndex);
-			lastChunk.fDirty = true;
 
 			if (lastChunkIndex >= this.fChunks.length) {
 				int increment = Math.max(1024, this.fChunks.length / 20);
@@ -829,8 +1191,14 @@
 			}
 
 			this.fChunksUsed = lastChunkIndex + 1;
+			if (DEBUG_PAGE_CACHE) {
+				System.out.println("CHUNK " + lastChunk.fSequenceNumber + ": inserted into vector - instance "  //$NON-NLS-1$//$NON-NLS-2$
+						+ System.identityHashCode(lastChunk));
+			}
 			this.fChunks[lastChunkIndex] = lastChunk;
-			this.fCache.add(lastChunk, true);
+			this.fMostRecentlyFetchedChunk = lastChunk;
+			lastChunk.makeDirty();
+			this.fCache.add(lastChunk);
 			long result = (long) firstChunkIndex * CHUNK_SIZE;
 
 			/*
@@ -839,7 +1207,7 @@
 			 * indexing operation should be stopped. This is desired since generally, once the max size is exceeded,
 			 * there are lots of errors.
 			 */
-			long endAddress = result + (numChunks * CHUNK_SIZE);
+			long endAddress = result + ((long) numChunks * CHUNK_SIZE);
 			if (endAddress > MAX_DB_SIZE) {
 				Object bindings[] = { this.getLocation().getAbsolutePath(), MAX_DB_SIZE };
 				throw new IndexException(new Status(IStatus.ERROR, Package.PLUGIN_ID, Package.STATUS_DATABASE_TOO_LARGE,
@@ -851,21 +1219,26 @@
 		}
 	}
 
-	/**
-	 * @param blocksize (must be a multiple of BLOCK_SIZE_DELTA)
-	 */
-	private long getFirstBlock(int blocksize) throws IndexException {
-		assert this.fLocked;
-		return this.fHeaderChunk.getFreeRecPtr(MALLOC_TABLE_OFFSET + (blocksize / BLOCK_SIZE_DELTA - MIN_BLOCK_DELTAS) * INT_SIZE);
+	private long getAddressOfFirstBlockPointer(int blockSize) {
+		return MALLOC_TABLE_OFFSET + (blockSize / BLOCK_SIZE_DELTA - MIN_BLOCK_DELTAS) * INT_SIZE;
 	}
 
-	private void setFirstBlock(int blocksize, long block) throws IndexException {
+	/**
+	 * @param blockSize (must be a multiple of BLOCK_SIZE_DELTA)
+	 */
+	private long getFirstBlock(int blockSize) throws IndexException {
+		assert this.fLocked;
+		return this.fHeaderChunk.getFreeRecPtr(getAddressOfFirstBlockPointer(blockSize));
+	}
+
+	private void setFirstBlock(int blockSize, long block) throws IndexException {
 		assert this.fExclusiveLock;
-		this.fHeaderChunk.putFreeRecPtr(MALLOC_TABLE_OFFSET + (blocksize / BLOCK_SIZE_DELTA - MIN_BLOCK_DELTAS) * INT_SIZE, block);
+		this.fHeaderChunk.putFreeRecPtr(getAddressOfFirstBlockPointer(blockSize), block);
 	}
 
 	private void removeBlock(Chunk chunk, int blocksize, long block) throws IndexException {
 		assert this.fExclusiveLock;
+
 		long prevblock = chunk.getFreeRecPtr(block + BLOCK_PREV_OFFSET);
 		long nextblock = chunk.getFreeRecPtr(block + BLOCK_NEXT_OFFSET);
 		if (prevblock != 0) {
@@ -901,42 +1274,79 @@
 	 *            the same ID that was previously passed into malloc when allocating this memory address
 	 */
 	public void free(long address, short poolId) throws IndexException {
-		assert this.fExclusiveLock;
-		if (address == 0) {
-			return;
-		}
-		long blockSize;
-		long block = address - BLOCK_HEADER_SIZE;
-		Chunk chunk = getChunk(block);
-		blockSize = -chunk.getShort(block);
-		// We use a block size of 0 to indicate a large block that fills a range of chunks
-		if (blockSize == 0) {
-			int offsetIntoChunk = (int) (address % CHUNK_SIZE);
-			assert offsetIntoChunk == LargeBlock.HEADER_SIZE + BLOCK_HEADER_SIZE;
-			// Deallocating a large block
-			// This was a large block. It uses a sequence of full chunks.
-			int chunkNum = (int) (address / CHUNK_SIZE);
-			int numChunks = -getBlockHeaderForChunkNum(chunkNum);
-			if (numChunks < 0) {
-				// Already freed.
-				throw new IndexException(new Status(IStatus.ERROR, Package.PLUGIN_ID, 0,
-						"Already freed large block " + address, new Exception())); //$NON-NLS-1$
+		getLog().start(this.freeTag);
+		try {
+			assert this.fExclusiveLock;
+			if (address == 0) {
+				return;
 			}
-			blockSize = numChunks * CHUNK_SIZE;
-			freeLargeChunk(chunkNum, numChunks);
-		} else {
-			// Deallocating a normal block
-			// TODO Look for opportunities to merge small blocks
-			if (blockSize < 0) {
-				// Already freed.
-				throw new IndexException(new Status(IStatus.ERROR, Package.PLUGIN_ID, 0,
-						"Already freed record " + address, new Exception())); //$NON-NLS-1$
+			long blockSize;
+			long block = address - BLOCK_HEADER_SIZE;
+			Chunk chunk = getChunk(block);
+			blockSize = -chunk.getShort(block);
+			// We use a block size of 0 to indicate a large block that fills a range of chunks
+			if (blockSize == 0) {
+				int offsetIntoChunk = (int) (address % CHUNK_SIZE);
+				assert offsetIntoChunk == LargeBlock.HEADER_SIZE + BLOCK_HEADER_SIZE;
+				// Deallocating a large block
+				// This was a large block. It uses a sequence of full chunks.
+				int chunkNum = (int) (address / CHUNK_SIZE);
+				int numChunks = -getBlockHeaderForChunkNum(chunkNum);
+				if (numChunks < 0) {
+					IndexExceptionBuilder builder = describeProblem();
+					if (chunkNum < this.fChunksUsed) {
+						builder.addProblemAddress("block header", (long) chunkNum * CHUNK_SIZE, INT_SIZE); //$NON-NLS-1$
+					}
+					throw builder.build("Already freed large block " + address); //$NON-NLS-1$
+				}
+				blockSize = (long) numChunks * CHUNK_SIZE;
+				this.log.recordFree(address, (int)(blockSize - BLOCK_HEADER_SIZE));
+				freeLargeChunk(chunkNum, numChunks);
+			} else {
+				// Deallocating a normal block
+				// TODO Look for opportunities to merge small blocks
+				if (blockSize < 0) {
+					throw describeProblem()
+						.addProblemAddress("block size", block, SHORT_SIZE) //$NON-NLS-1$
+						.build("Already freed record " + address); //$NON-NLS-1$
+				}
+				this.log.recordFree(address, (int)(blockSize - BLOCK_HEADER_SIZE));
+				int offset = Chunk.recPtrToIndex(address);
+				if (offset + blockSize > CHUNK_SIZE) {
+					throw describeProblem()
+						.addProblemAddress("block size", block, SHORT_SIZE) //$NON-NLS-1$
+						.build("Attempting to free chunk of impossible size. The block at address " //$NON-NLS-1$
+								+ address + " in chunk " + chunk.fSequenceNumber + " offset " + offset //$NON-NLS-1$//$NON-NLS-2$
+								+ " can't be as large as " //$NON-NLS-1$
+								+ blockSize + " bytes since that would make it extend beyond the end of the chunk"); //$NON-NLS-1$
+				}
+				addBlock(chunk, (int) blockSize, block);
 			}
-			addBlock(chunk, (int) blockSize, block);
+	
+			if (DEBUG_FREE_SPACE) {
+				periodicValidateFreeSpace();
+			}
+	
+			this.freed += blockSize;
+			this.memoryUsage.recordFree(poolId, blockSize);
+		} finally {
+			getLog().end(this.freeTag);
 		}
+	}
 
-		this.freed += blockSize;
-		this.memoryUsage.recordFree(poolId, blockSize);
+	/**
+	 * Periodically performs validation of the free space in the database. Validation is very expensive, so the
+	 * validation period uses exponential falloff so validations happen less and less frequently over
+	 * time. Returns true iff validation happened on this iteration.
+	 */
+	private boolean periodicValidateFreeSpace() {
+		this.validateCounter++;
+		if (this.validateCounter > this.nextValidation) {
+			validateFreeSpace();
+			this.nextValidation = this.validateCounter * 2;
+			return true;
+		}
+		return false;
 	}
 
 	private void freeLargeChunk(int chunkNum, int numChunks) {
@@ -1104,17 +1514,33 @@
 	}
 
 	public long getDatabaseSize() {
-		return this.fChunksUsed * CHUNK_SIZE;
+		return (long) this.fChunksUsed * CHUNK_SIZE;
+	}
+
+	/**
+	 * Returns the number of bytes freed by {@link #free(long, short)} since this {@link Database} instance was
+	 * instantiated. Intended for use in unit tests.
+	 */
+	public long getBytesFreed() {
+		return this.freed;
+	}
+
+	/**
+	 * Returns the number of bytes allocated by {@link #malloc(long, short)} since this {@link Database} instance was
+	 * instantiated. Intended for use in unit tests.
+	 */
+	public long getBytesAllocated() {
+		return this.malloced;
 	}
 
 	/**
 	 * For debugging purposes, only.
 	 */
 	public void reportFreeBlocks() throws IndexException {
-		System.out.println("Allocated size: " + getDatabaseSize() + " bytes"); //$NON-NLS-1$ //$NON-NLS-2$
-		System.out.println("malloc'ed: " + this.malloced); //$NON-NLS-1$
-		System.out.println("free'd: " + this.freed); //$NON-NLS-1$
-		System.out.println("wasted: " + (getDatabaseSize() - (this.malloced - this.freed))); //$NON-NLS-1$
+		System.out.println("Allocated size: " + formatByteString(getDatabaseSize())); //$NON-NLS-1$
+		System.out.println("malloc'ed: " + formatByteString(this.malloced)); //$NON-NLS-1$
+		System.out.println("free'd: " + formatByteString(this.freed)); //$NON-NLS-1$
+		System.out.println("wasted: " + formatByteString((getDatabaseSize() - (this.malloced - this.freed)))); //$NON-NLS-1$
 		System.out.println("Free blocks"); //$NON-NLS-1$
 		for (int bs = MIN_BLOCK_DELTAS*BLOCK_SIZE_DELTA; bs <= CHUNK_SIZE; bs += BLOCK_SIZE_DELTA) {
 			int count = 0;
@@ -1139,10 +1565,12 @@
 		flush();
 		removeChunksFromCache();
 
+		this.log.clear();
 		// Chunks have been removed from the cache, so we are fine.
 		this.fHeaderChunk.clear(0, CHUNK_SIZE);
 		this.memoryUsage.refresh();
 		this.fHeaderChunk.fDirty= false;
+		this.dirtyChunkSet.clear();
 		this.fChunks= new Chunk[] { null };
 		this.fChunksUsed = this.fChunks.length;
 		try {
@@ -1162,12 +1590,31 @@
 	/**
 	 * Called from any thread via the cache, protected by {@link #fCache}.
 	 */
-	void releaseChunk(final Chunk chunk) {
-		if (!chunk.fLocked) {
+	void checkIfChunkReleased(final Chunk chunk) {
+		if (!chunk.fDirty && chunk.fCacheIndex < 0) {
+			if (DEBUG_PAGE_CACHE) {
+				System.out.println("CHUNK " + chunk.fSequenceNumber //$NON-NLS-1$
+						+ ": removing from vector in releaseChunk - instance " + System.identityHashCode(chunk)); //$NON-NLS-1$
+			}
 			this.fChunks[chunk.fSequenceNumber]= null;
 		}
 	}
 
+	void chunkDirtied(final Chunk chunk) {
+		if (chunk.fSequenceNumber < NUM_HEADER_CHUNKS) {
+			return;
+		}
+		this.dirtyChunkSet.add(chunk);
+	}
+
+	void chunkCleaned(final Chunk chunk) {
+		if (chunk.fSequenceNumber < NUM_HEADER_CHUNKS) {
+			return;
+		}
+		this.dirtyChunkSet.remove(chunk);
+		checkIfChunkReleased(chunk);
+	}
+
 	/**
 	 * Returns the cache used for this database.
 	 * @since 4.0
@@ -1189,72 +1636,30 @@
 		this.fLocked= val;
 	}
 
-	public boolean giveUpExclusiveLock(final boolean flush) throws IndexException {
-		boolean wasInterrupted = false;
-		if (this.fExclusiveLock) {
-			try {
-				ArrayList<Chunk> dirtyChunks= new ArrayList<>();
-				synchronized (this.fCache) {
-					for (int i= 1; i < this.fChunksUsed; i++) {
-						Chunk chunk= this.fChunks[i];
-						if (chunk != null) {
-							if (chunk.fCacheIndex < 0) {
-								// Locked chunk that has been removed from cache.
-								if (chunk.fDirty) {
-									dirtyChunks.add(chunk); // Keep in fChunks until it is flushed.
-								} else {
-									chunk.fLocked= false;
-									this.fChunks[i]= null;
-								}
-							} else if (chunk.fLocked) {
-								// Locked chunk, still in cache.
-								if (chunk.fDirty) {
-									if (flush) {
-										dirtyChunks.add(chunk);
-									}
-								} else {
-									chunk.fLocked= false;
-								}
-							} else {
-								assert !chunk.fDirty; // Dirty chunks must be locked.
-							}
-						}
-					}
-				}
-				// Also handles header chunk.
-				wasInterrupted = flushAndUnlockChunks(dirtyChunks, flush) || wasInterrupted;
-			} finally {
-				this.fExclusiveLock= false;
-			}
-		}
-		return wasInterrupted;
+	public void giveUpExclusiveLock() {
+		this.fExclusiveLock = false;
 	}
 
 	public boolean flush() throws IndexException {
 		boolean wasInterrupted = false;
 		assert this.fLocked;
-		if (this.fExclusiveLock) {
-			try {
-				wasInterrupted = giveUpExclusiveLock(true) || wasInterrupted;
-			} finally {
-				setExclusiveLock();
-			}
-			return wasInterrupted;
-		}
-
-		// Be careful as other readers may access chunks concurrently.
 		ArrayList<Chunk> dirtyChunks= new ArrayList<>();
 		synchronized (this.fCache) {
-			for (int i= 1; i < this.fChunksUsed ; i++) {
-				Chunk chunk= this.fChunks[i];
-				if (chunk != null && chunk.fDirty) {
-					dirtyChunks.add(chunk);
-				}
-			}
+			dirtyChunks.addAll(this.dirtyChunkSet);
 		}
+		sortBySequenceNumber(dirtyChunks);
 
+		long startTime = System.currentTimeMillis();
 		// Also handles header chunk.
-		return flushAndUnlockChunks(dirtyChunks, true) || wasInterrupted;
+		wasInterrupted = flushAndUnlockChunks(dirtyChunks, true) || wasInterrupted;
+		long elapsedTime = System.currentTimeMillis() - startTime;
+		this.totalFlushTime += elapsedTime;
+
+		return wasInterrupted;
+	}
+
+	private void sortBySequenceNumber(ArrayList<Chunk> dirtyChunks) {
+		dirtyChunks.sort((a, b) -> {return a.fSequenceNumber - b.fSequenceNumber;});
 	}
 
 	/**
@@ -1266,35 +1671,56 @@
 	private boolean flushAndUnlockChunks(final ArrayList<Chunk> dirtyChunks, boolean isComplete) throws IndexException {
 		boolean wasInterrupted = false;
 		assert !Thread.holdsLock(this.fCache);
-		synchronized (this.fHeaderChunk) {
-			final boolean haveDirtyChunks = !dirtyChunks.isEmpty();
-			if (haveDirtyChunks || this.fHeaderChunk.fDirty) {
-				wasInterrupted = markFileIncomplete() || wasInterrupted;
+		final boolean haveDirtyChunks = !dirtyChunks.isEmpty();
+		if (haveDirtyChunks || this.fHeaderChunk.fDirty) {
+			wasInterrupted = markFileIncomplete() || wasInterrupted;
+		}
+		if (haveDirtyChunks) {
+			double desiredWriteBytesPerMs = Database.MIN_BYTES_PER_MILLISECOND;
+			synchronized (this.fCache) {
+				if (this.cacheMisses > 100) {
+					double measuredReadBytesPerMs = getAverageReadBytesPerMs();
+					if (measuredReadBytesPerMs > 0) {
+						desiredWriteBytesPerMs = measuredReadBytesPerMs / 2;
+					}
+				}
 			}
-			if (haveDirtyChunks) {
+			desiredWriteBytesPerMs = Math.max(desiredWriteBytesPerMs, Database.MIN_BYTES_PER_MILLISECOND);
+			ChunkWriter writer = new ChunkWriter(WRITE_BUFFER_SIZE, desiredWriteBytesPerMs, this::write);
+			try {
 				for (Chunk chunk : dirtyChunks) {
 					if (chunk.fDirty) {
-						wasInterrupted = chunk.flush() || wasInterrupted;
-					}
-				}
-
-				// Only after the chunks are flushed we may unlock and release them.
-				synchronized (this.fCache) {
-					for (Chunk chunk : dirtyChunks) {
-						chunk.fLocked= false;
-						if (chunk.fCacheIndex < 0) {
-							this.fChunks[chunk.fSequenceNumber]= null;
+						boolean wasCanceled = false;
+						if (DEBUG_PAGE_CACHE) {
+							System.out.println("CHUNK " + chunk.fSequenceNumber + ": flushing - instance " //$NON-NLS-1$//$NON-NLS-2$
+									+ System.identityHashCode(chunk));
 						}
+						byte[] nextBytes;
+						synchronized (this.fCache) {
+							nextBytes = chunk.getBytes();
+							chunk.fDirty = false;
+							chunkCleaned(chunk);
+						}
+						wasCanceled = writer.write((long) chunk.fSequenceNumber * Database.CHUNK_SIZE, nextBytes);
+
+						wasInterrupted = wasCanceled || wasInterrupted;
 					}
 				}
-			}
-
-			if (isComplete) {
-				if (this.fHeaderChunk.fDirty || this.fIsMarkedIncomplete) {
-					this.fHeaderChunk.putInt(VERSION_OFFSET, this.fVersion);
-					wasInterrupted = this.fHeaderChunk.flush() || wasInterrupted;
-					this.fIsMarkedIncomplete= false;
+				writer.flush();
+				synchronized (this.fCache) {
+					this.pageWritesBytes += writer.getBytesWritten();
+					this.totalWriteTimeMs += writer.getTotalWriteTimeMs();
 				}
+			} catch (IOException e) {
+				throw new IndexException(new DBStatus(e));
+			}
+		}
+
+		if (isComplete) {
+			if (this.fHeaderChunk.fDirty || this.fIsMarkedIncomplete) {
+				this.fHeaderChunk.putInt(VERSION_OFFSET, this.fVersion);
+				wasInterrupted = this.fHeaderChunk.flush() || wasInterrupted;
+				this.fIsMarkedIncomplete= false;
 			}
 		}
 		return wasInterrupted;
@@ -1307,6 +1733,7 @@
 			try {
 				final ByteBuffer buf= ByteBuffer.wrap(new byte[4]);
 				wasInterrupted = performUninterruptableWrite(() -> this.fFile.getChannel().write(buf, 0));
+				this.bytesWritten += 4;
 			} catch (IOException e) {
 				throw new IndexException(new DBStatus(e));
 			}
@@ -1315,7 +1742,39 @@
 	}
 
 	public void resetCacheCounters() {
-		this.cacheHits= this.cacheMisses= 0;
+		this.cacheHits = 0;
+		this.cacheMisses = 0;
+		this.bytesWritten = 0;
+		this.totalFlushTime = 0;
+		this.pageWritesBytes = 0;
+		this.totalWriteTimeMs = 0;
+		this.totalReadTimeMs = 0;
+	}
+
+	public long getBytesWritten() {
+		return this.bytesWritten;
+	}
+
+	public double getAverageReadBytesPerMs() {
+		long reads = this.cacheMisses;
+		long time = this.totalReadTimeMs;
+
+		if (time == 0) {
+			return 0;
+		}
+
+		return (double)(reads * CHUNK_SIZE) / (double) time;
+	}
+
+	public double getAverageWriteBytesPerMs() {
+		long time = this.totalWriteTimeMs;
+		long writes = this.pageWritesBytes;
+
+		return ((double) writes / (double) time);
+	}
+
+	public long getBytesRead() {
+		return this.cacheMisses * CHUNK_SIZE;
 	}
 
 	public long getCacheHits() {
@@ -1326,6 +1785,10 @@
 		return this.cacheMisses;
 	}
 
+	public long getCumulativeFlushTimeMs() {
+		return this.totalFlushTime;
+	}
+
 	public long getSizeBytes() throws IOException {
 		return this.fFile.length();
 	}
@@ -1361,7 +1824,7 @@
 	 * Returns the number of bytes that can fit in the payload of the given number of chunks.
 	 */
 	public static long getBytesThatFitInChunks(int numChunks) {
-		return CHUNK_SIZE * numChunks - LargeBlock.HEADER_SIZE - LargeBlock.FOOTER_SIZE - BLOCK_HEADER_SIZE;
+		return CHUNK_SIZE * (long) numChunks - LargeBlock.HEADER_SIZE - LargeBlock.FOOTER_SIZE - BLOCK_HEADER_SIZE;
 	}
 
 	/**
@@ -1371,4 +1834,49 @@
 		return divideRoundingUp(datasize + BLOCK_HEADER_SIZE + LargeBlock.HEADER_SIZE + LargeBlock.FOOTER_SIZE,
 				CHUNK_SIZE);
 	}
+
+	public ChunkCache getCache() {
+		return this.fCache;
+	}
+
+	public int getDirtyChunkCount() {
+		return this.dirtyChunkSet.size();
+	}
+
+	public static String formatByteString(long valueInBytes) {
+		final double MB = 1024 * 1024;
+		double value = valueInBytes;
+		String suffix = "B"; //$NON-NLS-1$
+
+		if (value > 1024) {
+			suffix = "MiB"; //$NON-NLS-1$
+			value /= MB;
+		}
+
+		DecimalFormat mbFormat = new DecimalFormat("#0.###"); //$NON-NLS-1$
+		return mbFormat.format(value) + suffix;
+	}
+
+	public ChunkStats getChunkStats() {
+		synchronized (this.fCache) {
+			int count = 0;
+			int dirtyChunks = 0;
+			int nonDirtyChunksNotInCache = 0;
+			for (Chunk next : this.fChunks) {
+				if (next != null) {
+					count++;
+					if (next.fDirty) {
+						dirtyChunks++;
+					} else if (next.fCacheIndex < 0) {
+						nonDirtyChunksNotInCache++;
+					}
+				}
+			}
+			return new ChunkStats(this.fChunks.length, count, dirtyChunks, nonDirtyChunksNotInCache);
+		}
+	}
+
+	public IndexExceptionBuilder describeProblem() {
+		return new IndexExceptionBuilder(this);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.java
index 5d2cc81..bf9dce5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/IndexException.java
@@ -10,6 +10,9 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 
@@ -19,9 +22,10 @@
 public class IndexException extends RuntimeException {
 
 	private IStatus status;
+	private List<RelatedAddress> relatedAddresses = new ArrayList<>();
+	private long time = -1;
 
 	public IndexException(IStatus status) {
-		super(status.getMessage());
 		this.status = status;
 	}
 
@@ -29,6 +33,16 @@
 		this(new Status(IStatus.ERROR, "org.aspectj.org.eclipse.jdt.core", message)); //$NON-NLS-1$
 	}
 
+	/**
+	 * Sets the time that the exception occurred at (in terms of the write number
+	 * from the modification log)
+	 * 
+	 * @param writeNumber 
+	 */
+	public void setTime(long writeNumber) {
+		this.time = writeNumber;
+	}
+
 	@Override
 	public synchronized Throwable getCause() {
 		return this.status.getException();
@@ -43,4 +57,37 @@
 
 	private static final long serialVersionUID = -6561893929558916225L;
 
+	public void addRelatedAddress(RelatedAddress related) {
+		// Don't include dupes
+		for (RelatedAddress next : this.relatedAddresses) {
+			if (next.isSameAddressAs(related)) {
+				return;
+			}
+		}
+		this.relatedAddresses.add(related);
+	}
+
+	@Override
+	public String getMessage() {
+		StringBuilder result = new StringBuilder();
+		if (this.time != -1) {
+			result.append("(time "); //$NON-NLS-1$
+			result.append(this.time);
+			result.append(") "); //$NON-NLS-1$
+		}
+		result.append(this.status.getMessage());
+
+		if (!this.relatedAddresses.isEmpty()) {
+			boolean isFirst = true;
+			result.append("\nRelated addresses:\n"); //$NON-NLS-1$
+			for (RelatedAddress next : this.relatedAddresses) {
+				if (!isFirst) {
+					result.append("\n"); //$NON-NLS-1$
+				}
+				isFirst = false;
+				result.append(next.toString());
+			}
+		}
+		return result.toString();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.java
index ccb1917..c6a42fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/MemoryStats.java
@@ -90,8 +90,8 @@
 			builder.append(" "); //$NON-NLS-1$
 			builder.append(next.numAllocations);
 			builder.append(" allocations, "); //$NON-NLS-1$
-			builder.append(next.totalSize);
-			builder.append(" bytes\n"); //$NON-NLS-1$
+			builder.append(Database.formatByteString(next.totalSize));
+			builder.append("\n"); //$NON-NLS-1$
 		}
 		System.out.println(builder.toString());
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.java
new file mode 100644
index 0000000..17c1cc2
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/ModificationLog.java
@@ -0,0 +1,472 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Records a record of every modification to the database, in a circular buffer of fixed size. Whenever anything writes
+ * to the database, the log records the address and size of the write, along with a call stack describing what was going
+ * on at the time of the write. The actual bytes written to the database are not recorded. In addition to writes, it
+ * also records every invocation of malloc and free.
+ * <p>
+ * Given a memory address range, we can trace the log backwards to find everything that ever happened to that address
+ * range since the start of the log.
+ * </p>
+ * "call stacks" don't use java call stacks. They use explicit tags that are pushed and popped at the start and
+ * end of operations related to modifying the database.
+ */
+public class ModificationLog {
+	/**
+	 * Used to attach messages to events in the log. Tags should be allocated in static initializers at application
+	 * startup by calling {@link ModificationLog#createTag(String)}. Once allocated, the tag can be pushed and popped on to
+	 * the stack in the log to mark the beginning and end of operations.
+	 */
+	public static class Tag {
+		public final String name;
+		public final int opNum;
+
+		Tag(String name, int opNum) {
+			this.name = name;
+			this.opNum = opNum;
+		}
+
+		@Override
+		public String toString() {
+			return this.opNum + ":" + this.name; //$NON-NLS-1$
+		}
+
+		@Override
+		public int hashCode() {
+			final int prime = 31;
+			int result = 1;
+			result = prime * result + this.opNum;
+			return result;
+		}
+
+		@Override
+		public boolean equals(Object obj) {
+			if (obj == null)
+				return false;
+			if (getClass() != obj.getClass())
+				return false;
+			Tag other = (Tag) obj;
+			if (this.opNum != other.opNum)
+				return false;
+			return true;
+		}
+	}
+
+	/**
+	 * Represents a single entry in a {@link MemoryAccessLog}. That is, a single read, write, malloc, or free event that
+	 * affected the memory range of interest.
+	 */
+	public static class MemoryOperation {
+		private final List<Tag> stack;
+		private final long time;
+		private final long startAddress;
+		private final int addressSize;
+		private final byte operationType;
+
+		public MemoryOperation(byte operationType, long time, long startAddress, int size, List<Tag> stack) {
+			super();
+			this.operationType = operationType;
+			this.time = time;
+			this.startAddress = startAddress;
+			this.addressSize = size;
+			this.stack = stack;
+		}
+
+		public List<Tag> getStack() {
+			return this.stack;
+		}
+
+		public long getTime() {
+			return this.time;
+		}
+
+		public long getStartAddress() {
+			return this.startAddress;
+		}
+
+		public int getSize() {
+			return this.addressSize;
+		}
+
+		public byte getOperationType() {
+			return this.operationType;
+		}
+
+		public void printTo(StringBuilder builder, int indent) {
+			indent(builder, indent);
+			switch (getOperationType()) {
+				case FREE_OPERATION: builder.append("freed"); break; //$NON-NLS-1$
+				case MALLOC_OPERATION: builder.append("malloc'd"); break; //$NON-NLS-1$
+				case WRITE_OPERATION: builder.append("wrote"); break; //$NON-NLS-1$
+			}
+			builder.append(" [address "); //$NON-NLS-1$
+			builder.append(this.startAddress);
+			builder.append(", size "); //$NON-NLS-1$
+			builder.append(this.addressSize);
+			builder.append("] at time "); //$NON-NLS-1$
+			builder.append(this.time);
+			builder.append("\n");  //$NON-NLS-1$
+			List<Tag> theStack = new ArrayList<>();
+			theStack.addAll(getStack());
+			Collections.reverse(theStack);
+			for (Tag next : theStack) {
+				indent(builder, indent + 1);
+				builder.append(next.name + "\n");  //$NON-NLS-1$
+			}
+		}
+	}
+
+	/**
+	 * Contains a log of events related to a specific range of database addresses, in reverse chronological order.
+	 */
+	public static class MemoryAccessLog {
+		private final List<MemoryOperation> operations;
+
+		public MemoryAccessLog(List<MemoryOperation> operations) {
+			super();
+			this.operations = operations;
+		}
+
+		/**
+		 * Returns a list of operations, in reverse order of time.
+		 */
+		public List<MemoryOperation> getOperations() {
+			return this.operations;
+		}
+
+		/**
+		 * Returns true iff this log contains a double malloc or a double free
+		 */
+		public boolean hasInconsistentMemoryAllocation() {
+			boolean known = false;
+			boolean allocated = false;
+			for (MemoryOperation next : this.operations) {
+				boolean newAllocatedState;
+				if (next.getOperationType() == MALLOC_OPERATION) {
+					newAllocatedState = false;
+				} else if (next.getOperationType() == FREE_OPERATION) {
+					newAllocatedState = true;
+				} else {
+					continue;
+				}
+
+				if (!known) {
+					known = true;
+				} else if (allocated == newAllocatedState) {
+					return true;
+				}
+				allocated = newAllocatedState;
+			}
+			return false;
+		}
+
+		/**
+		 * Search for anomalies in the log and produce a reduced report
+		 * 
+		 * @return a log containing the most interesting results
+		 */
+		public MemoryAccessLog reduce(int maxWrites) {
+			boolean includeAllMallocs = hasInconsistentMemoryAllocation();
+			int numWrites = 0;
+
+			List<MemoryOperation> result = new ArrayList<>();
+			for (MemoryOperation next : this.operations) {
+				boolean keepGoing = true;
+				switch (next.getOperationType()) {
+					case MALLOC_OPERATION: {
+						result.add(next);
+						keepGoing = includeAllMallocs;
+						break;
+					}
+					case FREE_OPERATION: {
+						result.add(next);
+						break;
+					}
+					case WRITE_OPERATION: {
+						if (numWrites < maxWrites) {
+							result.add(next);
+						}
+						numWrites++;
+					}
+				}
+				if (!keepGoing) {
+					break;
+				}
+			}
+
+			return new MemoryAccessLog(result);
+		}
+	}
+
+	private static Map<Integer, Tag> activeTags = new HashMap<>();
+	private final ArrayDeque<Tag> operationStack = new ArrayDeque<>();
+	private long[] buffer0;
+	private int[] buffer1;
+	private byte[] operation;
+	private int insertionPosition;
+	private int currentEntries;
+	private long timer;
+
+	public static final byte PUSH_OPERATION = 0;
+	public static final byte POP_OPERATION = 1;
+	public static final byte WRITE_OPERATION = 2;
+	public static final byte MALLOC_OPERATION = 3;
+	public static final byte FREE_OPERATION = 4;
+
+	public ModificationLog(int size) {
+		allocateBuffers(size);
+	}
+
+	public void clear() {
+		this.currentEntries = 0;
+	}
+
+	private void allocateBuffers(int sizeInMegs) {
+		int entries = getBufferEntriesFor(sizeInMegs);
+		if (entries != 0) {
+			this.buffer0 = new long[entries];
+			this.buffer1 = new int[entries];
+			this.operation = new byte[entries];
+		} else {
+			this.buffer0 = null;
+			this.buffer1 = null;
+			this.operation = null;
+		}
+	}
+
+	private static int getBufferEntriesFor(int sizeInMegs) {
+		long sizeOfABufferEntry = 8 + 4 + 1; // size, in bytes, of one long, one int, and one byte 
+		return (int) (sizeInMegs * 1024L * 1024L / sizeOfABufferEntry);
+	}
+
+	public int getBufferEntries() {
+		return this.buffer0 == null ? 0 : this.buffer0.length;
+	}
+
+	public void setBufferSize(int megs) {
+		int oldBufferLength = getBufferEntries();
+		int newBufferLength = getBufferEntriesFor(megs);
+
+		if (oldBufferLength == newBufferLength) {
+			return;
+		}
+
+		long[] oldBuffer0 = this.buffer0;
+		int[] oldBuffer1 = this.buffer1;
+		byte[] oldOperation = this.operation;
+
+		allocateBuffers(megs);
+
+		if (this.buffer0 == null) {
+			this.currentEntries = 0;
+			this.insertionPosition = 0;
+			this.operationStack.clear();
+			return;
+		}
+		int newBufferSize = Math.min(this.buffer0.length, this.currentEntries);
+		if (oldBufferLength > 0) {
+			int readStart = (this.insertionPosition + oldBufferLength - newBufferSize) % oldBufferLength;
+			if (readStart >= this.insertionPosition) {
+				int entriesFromEnd = oldBufferLength - readStart;
+				System.arraycopy(oldBuffer0, readStart, this.buffer0, 0, entriesFromEnd);
+				System.arraycopy(oldBuffer1, readStart, this.buffer1, 0, entriesFromEnd);
+				System.arraycopy(oldOperation, readStart, this.operation, 0, entriesFromEnd);
+
+				System.arraycopy(oldBuffer0, 0, this.buffer0, entriesFromEnd, this.insertionPosition);
+				System.arraycopy(oldBuffer1, 0, this.buffer1, entriesFromEnd, this.insertionPosition);
+				System.arraycopy(oldOperation, 0, this.operation, entriesFromEnd, this.insertionPosition);
+			} else {
+				int entriesToCopy = this.insertionPosition - readStart;
+				System.arraycopy(oldBuffer0, readStart, this.buffer0, 0, entriesToCopy);
+				System.arraycopy(oldBuffer1, readStart, this.buffer1, 0, entriesToCopy);
+				System.arraycopy(oldOperation, readStart, this.operation, 0, entriesToCopy);
+			}
+		}
+
+		this.currentEntries = newBufferSize;
+		this.insertionPosition = newBufferSize % this.buffer0.length;
+	}
+
+	public static void indent(StringBuilder builder, int indent) {
+		for (int count = 0; count < indent; count++) {
+			builder.append("    "); //$NON-NLS-1$
+		}
+	}
+
+	public boolean enabled() {
+		return this.buffer0 != null;
+	}
+
+	public void start(Tag tag) {
+		if (!enabled()) {
+			return;
+		}
+
+		this.operationStack.add(tag);
+		addToQueue(PUSH_OPERATION, 0, tag.opNum);
+	}
+
+	public void end(Tag tag) {
+		if (!enabled()) {
+			return;
+		}
+		if (!this.operationStack.getLast().equals(tag)) {
+			throw new IllegalStateException();
+		}
+		this.operationStack.removeLast();
+		addToQueue(POP_OPERATION, 0, tag.opNum);
+	}
+
+	public void recordWrite(long address, int size) {
+		if (!enabled()) {
+			return;
+		}
+		this.timer++;
+		addToQueue(WRITE_OPERATION, address, size);
+	}
+
+	public void recordMalloc(long address, int size) {
+		if (!enabled()) {
+			return;
+		}
+		this.timer++;
+		addToQueue(MALLOC_OPERATION, address, size);
+	}
+
+	public void recordFree(long address, int size) {
+		if (!enabled()) {
+			return;
+		}
+		this.timer++;
+		addToQueue(FREE_OPERATION, address, size);
+	}
+
+	private void addToQueue(byte opConstant, long arg0, int arg1) {
+		this.buffer0[this.insertionPosition] = arg0;
+		this.buffer1[this.insertionPosition] = arg1;
+		this.operation[this.insertionPosition] = opConstant;
+		this.insertionPosition = (this.insertionPosition + 1) % this.buffer0.length;
+
+		if (this.currentEntries < this.buffer0.length) {
+			this.currentEntries++;
+		}
+	}
+
+	// prints count number of last log records to stdout
+	// may be useful when troubleshooting heap corruption
+	public void printLog(int count) {
+		for (int i = 0; i < count; i++) {
+			int pos = (this.insertionPosition - count + i) % this.buffer0.length;
+			byte opcode = this.operation[pos];
+			switch (opcode) {
+				case FREE_OPERATION:
+					System.out.printf("FREE_OPERATION(address=%x, size=%d)\n", this.buffer0[pos], this.buffer1[pos]); //$NON-NLS-1$
+					break;
+				case MALLOC_OPERATION:
+					System.out.printf("MALLOC_OPERATION(address=%x, size=%d)\n", this.buffer0[pos], this.buffer1[pos]); //$NON-NLS-1$
+					break;
+				case WRITE_OPERATION:
+					System.out.printf("WRITE_OPERATION(address=%x, size=%d)\n", this.buffer0[pos], this.buffer1[pos]); //$NON-NLS-1$
+					break;
+				case PUSH_OPERATION:
+					System.out.printf("PUSH_OPERATION(tag=%s)\n", activeTags.get(this.buffer1[pos])); //$NON-NLS-1$
+					break;
+				case POP_OPERATION:
+					System.out.printf("POP_OPERATION(tag=%s)\n", activeTags.get(this.buffer1[pos])); //$NON-NLS-1$
+					break;
+				default:
+					System.out.printf("UNKNOWN(opcode=%d, arg0=%d, arg1=%d)\n", opcode, this.buffer0[pos], this.buffer1[pos]); //$NON-NLS-1$
+					break;
+			}
+		}
+	}
+
+	public long getWriteCount() {
+		return this.timer;
+	}
+
+	/**
+	 * Returns information about the last write to the given address range
+	 */
+	public MemoryAccessLog getReportFor(long address, int size) {
+		List<Tag> tags = new ArrayList<>();
+		tags.addAll(this.operationStack);
+
+		List<MemoryOperation> operations = new ArrayList<>();
+		if (this.buffer0 != null) {
+			int pointerToStart = (this.insertionPosition + this.buffer0.length - this.currentEntries) % this.buffer0.length;
+			int currentPosition = (this.insertionPosition + this.buffer0.length - 1) % this.buffer0.length;
+			long currentWrite = this.timer;
+			do {
+				long nextAddress = this.buffer0[currentPosition];
+				int nextArgument = this.buffer1[currentPosition];
+				byte nextOp = this.operation[currentPosition];
+	
+				switch (nextOp) {
+					case POP_OPERATION: {
+						tags.add(getTagForId(nextArgument));
+						break;
+					}
+					case PUSH_OPERATION: {
+						tags.remove(tags.size() - 1);
+						break;
+					}
+					default: {
+						boolean isMatch = false;
+						if (address < nextAddress) {
+							long diff = nextAddress - address;
+							if (diff < size) {
+								isMatch = true;
+							}
+						} else {
+							long diff = address - nextAddress;
+							if (diff < nextArgument) {
+								isMatch = true;
+							}
+						}
+	
+						if (isMatch) {
+							List<Tag> stack = new ArrayList<>();
+							stack.addAll(tags);
+							MemoryOperation nextOperation = new MemoryOperation(nextOp, currentWrite, nextAddress,
+									nextArgument, stack);
+							operations.add(nextOperation);
+						}
+	
+						currentWrite--;
+					}
+				}
+				currentPosition = (currentPosition + this.buffer0.length - 1) % this.buffer0.length;
+			} while (currentPosition != pointerToStart);
+		}
+		return new MemoryAccessLog(operations);
+	}
+
+	public static Tag createTag(String tagName) {
+		Tag result = new Tag(tagName, activeTags.size());
+		activeTags.put(activeTags.size(), result);
+		return result;
+	}
+
+	private Tag getTagForId(int nextArgument) {
+		return activeTags.get(nextArgument);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.java
index d2ae1c0..dffa452 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/Package.java
@@ -45,4 +45,8 @@
 	public static void log(IStatus status) {
 		JavaCore.getPlugin().getLog().log(status);
 	}
+
+	public static void logInfo(String string) {
+		log(new Status(IStatus.INFO, PLUGIN_ID, string, null));
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.java
new file mode 100644
index 0000000..ea089d6
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/db/RelatedAddress.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.db;
+
+import java.util.List;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.MemoryAccessLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.MemoryOperation;
+
+/**
+ * Holds information about a memory range that was related to the cause of data corruption.
+ */
+public class RelatedAddress {
+	private final String description;
+	private final long address;
+	private final int size;
+	private final MemoryAccessLog modificationReport;
+
+	public RelatedAddress(String description, long address, int size, MemoryAccessLog lastModification) {
+		this.description = description;
+		this.address = address;
+		this.size = size;
+		this.modificationReport = lastModification;
+	}
+
+	boolean isSameAddressAs(RelatedAddress other) {
+		return other.address == this.address && other.size == this.size;
+	}
+
+	@Override
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		builder.append(this.description);
+		builder.append(" [address "); //$NON-NLS-1$
+		builder.append(this.address);
+		builder.append(", size "); //$NON-NLS-1$
+		builder.append(this.size);
+		builder.append("]: "); //$NON-NLS-1$
+		MemoryAccessLog reducedReport = this.modificationReport.reduce(5);
+		List<MemoryOperation> operations = reducedReport.getOperations();
+		if (operations.isEmpty()) {
+			builder.append("No modification report"); //$NON-NLS-1$
+		} else {
+			builder.append("\n"); //$NON-NLS-1$
+			for (MemoryOperation nextOperation : operations) {
+				nextOperation.printTo(builder, 1);
+			}
+		}
+		return builder.toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.java
new file mode 100644
index 0000000..fbdcda6
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/BaseField.java
@@ -0,0 +1,25 @@
+package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
+
+abstract class BaseField implements IField {
+	protected int offset;
+	private String fieldName;
+
+	protected final void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	@Override
+	public final void setOffset(int offset) {
+		this.offset = offset;
+	}
+
+	@Override
+	public final int getOffset() {
+		return this.offset;
+	}
+
+	@Override
+	public final String getFieldName() {
+		return this.fieldName;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.java
index fed4c29..ab1fdd7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/Field.java
@@ -12,6 +12,7 @@
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.ITypeFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Used to represent a single field of an object stored in the database. Objects 
@@ -28,11 +29,12 @@
  * 
  * @param <T>
  */
-public final class Field<T> implements IField, IDestructableField {
-	private int offset;
+public final class Field<T> extends BaseField implements IDestructableField {
 	public final ITypeFactory<T> factory;
 
-	public Field(ITypeFactory<T> objectFactory) {
+	public Field(ITypeFactory<T> objectFactory, String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
 		this.factory = objectFactory;
 	}
 
@@ -50,12 +52,34 @@
 	}
 
 	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+	public int getRecordSize() {
+		return this.factory.getRecordSize();
 	}
 
 	@Override
-	public int getRecordSize() {
-		return this.factory.getRecordSize();
+	public int getAlignment() {
+		// This sort of field is almost always used for embedding NdStructs within
+		// other data types. Since most NdStructs allow incoming record pointers, they need to
+		// be properly aligned. If we ever want to use this sort of field for other data types
+		// that don't require alignment, we may want to replace this with something smarter
+		// that can figure out the correct alignment based on the requirements of the actual
+		// data type.
+		return Database.BLOCK_SIZE_DELTA;
+	}
+
+	/**
+	 * Creates a new {@link Field} in the given struct with the given type.
+	 *
+	 * @param struct the struct that will contain the newly-created field (must not have had
+	 * {@link StructDef#done()} called on it yet).
+	 * @param fieldType the data type for the contents of the newly created field
+	 * @return the newly-constructed field
+	 */
+	public static <T> Field<T> create(StructDef<?> struct, StructDef<T> fieldType) {
+		Field<T> result = new Field<>(fieldType.getFactory(), struct.getStructName(), struct.getNumFields());
+		struct.add(result);
+		struct.addDestructableField(result);
+		fieldType.addDependency(struct);
+		return result;
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.java
index 5df9c51..32837ec 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldByte.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Declares a Nd field of type byte. Can be used in place of {@link Field}&lt{@link Byte}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldByte implements IField {
-	private int offset;
+public class FieldByte extends BaseField {
+	private final Tag tag;
 
-	public FieldByte() {
+	public FieldByte(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public byte get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, byte newValue) {
-		nd.getDB().putByte(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset; 
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			db.putByte(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.java
index 5ea3f6d..4c47758 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldChar.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Declares a Nd field of type char. Can be used in place of  {@link Field}&lt{@link Character}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldChar implements IField {
-	private int offset;
+public class FieldChar extends BaseField {
+	private final Tag tag;
 
-	public FieldChar() {
+	public FieldChar(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public char get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, char newValue) {
-		nd.getDB().putChar(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset; 
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			nd.getDB().putChar(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.java
index aa5d3a0..241bd0e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldDouble.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 
 /**
- * Declares a Nd field of type double. Can be used in place of  {@link Field}&lt{@link Double}&gt in order to
+ * Declares a Nd field of type double. Can be used in place of {@link Field}&lt{@link Double}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldDouble implements IField {
-	private int offset;
+public class FieldDouble extends BaseField {
+	private final Tag tag;
 
-	public FieldDouble() {
+	public FieldDouble(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName);   //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing "); //$NON-NLS-1$
 	}
 
 	public double get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, double newValue) {
-		nd.getDB().putDouble(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			nd.getDB().putDouble(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.java
index 9260047..15084c9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldFloat.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Declares a Nd field of type float. Can be used in place of  {@link Field}&lt{@link Float}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldFloat implements IField {
-	private int offset;
+public class FieldFloat extends BaseField {
+	private final Tag tag;
 
-	public FieldFloat() {
+	public FieldFloat(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public float get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, float newValue) {
-		nd.getDB().putFloat(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			nd.getDB().putFloat(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.java
index d1401d3..0e8d982 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldInt.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 
 /**
  * Declares a Nd field of type int. Can be used in place of  {@link Field}&lt{@link Integer}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldInt implements IField {
-	private int offset;
+public class FieldInt extends BaseField {
+	private final Tag tag;
 
-	public FieldInt() {
+	public FieldInt(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public int get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, int newValue) {
-		nd.getDB().putInt(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset; 
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			nd.getDB().putInt(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.java
new file mode 100644
index 0000000..c23dd85
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldList.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.ITypeFactory;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.util.MathUtils;
+
+/**
+ * Stores a singly-linked list of blocks, each of which contains a variable number of embedded elements.
+ * Each block contains a header containing the size of the block and pointer to the next block, followed
+ * by the embedded elements themselves.
+ */
+public class FieldList<T> extends BaseField implements IDestructableField {
+	/**
+	 * Pointer to the first block.
+	 */
+	public final static FieldPointer FIRST_BLOCK;
+	/**
+	 * Pointer to the block where insertions are currently happening. This is only null if there are no allocated
+	 * blocks. If there are any blocks containing elements, this points to the last block with a nonzero number of
+	 * elements.
+	 */
+	public final static FieldPointer LAST_BLOCK_WITH_ELEMENTS;
+
+	@SuppressWarnings("rawtypes")
+	private static final StructDef<FieldList> type;
+	private static final int LIST_HEADER_BYTES;
+	private static final long MAX_BYTES_IN_A_CHUNK = Database.getBytesThatFitInChunks(1);
+
+	private final StructDef<T> elementType;
+	private final int elementsPerBlock;
+	private final StructDef<?> ownerType;
+	private final Tag allocateTag;
+	private final Tag appendTag;
+	private final Tag destructTag;
+
+	static {
+		type = StructDef.createAbstract(FieldList.class);
+		FIRST_BLOCK = type.addPointer();
+		LAST_BLOCK_WITH_ELEMENTS = type.addPointer();
+
+		type.done();
+		LIST_HEADER_BYTES = MathUtils.roundUpToNearestMultipleOfPowerOfTwo(type.size(), Database.BLOCK_SIZE_DELTA);
+	}
+
+	private static class BlockHeader {
+		// This points to the next block if there is one, or null if not.
+		public final static FieldPointer NEXT_BLOCK;
+		public final static FieldShort BLOCK_SIZE;
+		public final static FieldShort ELEMENTS_IN_USE;
+		public static final int BLOCK_HEADER_BYTES;
+
+		@SuppressWarnings("hiding")
+		private static final StructDef<BlockHeader> type;
+
+		static {
+			type = StructDef.createAbstract(BlockHeader.class);
+
+			NEXT_BLOCK = type.addPointer();
+			BLOCK_SIZE = type.addShort();
+			ELEMENTS_IN_USE = type.addShort();
+			type.done();
+
+			BLOCK_HEADER_BYTES = MathUtils.roundUpToNearestMultipleOfPowerOfTwo(type.size(), Database.BLOCK_SIZE_DELTA);
+		}
+	}
+
+	private FieldList(StructDef<?> ownerType, StructDef<T> elementType,  int elementsPerBlock) {
+		this.elementType = elementType;
+		this.elementsPerBlock = elementsPerBlock;
+		this.ownerType = ownerType;
+		int fieldNumber = ownerType.getNumFields();
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + ownerType.getStructName());//$NON-NLS-1$
+		this.allocateTag = ModificationLog.createTag("Allocating elements for " + getFieldName()); //$NON-NLS-1$
+		this.appendTag = ModificationLog.createTag("Appending to " + getFieldName()); //$NON-NLS-1$
+		this.destructTag = ModificationLog.createTag("Deallocating " + getFieldName()); //$NON-NLS-1$
+	}
+
+	/**
+	 * Creates a new {@link FieldList} in the given struct which contains elements of the given type. The resulting list
+	 * will grow by 1 element each time it overflows.
+	 * 
+	 * @param ownerStruct
+	 *            the struct to which the new list field will be added. Must not have had {@link StructDef#done()}
+	 *            invoked on it yet.
+	 * @param elementType
+	 *            the type of elements that will be contained in the struct.
+	 * @return a newly-constructed list field in the given struct.
+	 */
+	public static <T> FieldList<T> create(StructDef<?> ownerStruct, StructDef<T> elementType) {
+		return create(ownerStruct, elementType, 1);
+	}
+
+	/**
+	 * Creates a new {@link FieldList} in the given struct which contains elements of the given type. The resulting list
+	 * will grow by the given number of elements each time it overflows.
+	 * 
+	 * @param ownerStruct
+	 *            the struct to which the new list field will be added. Must not have had {@link StructDef#done()}
+	 *            invoked on it yet.
+	 * @param elementType
+	 *            the type of elements that will be contained in the struct.
+	 * @param elementsPerBlock
+	 *            the number of elements that will be allocated each time the list overflows.
+	 * @return a newly-constructed list field in the given struct.
+	 */
+	public static <T> FieldList<T> create(StructDef<?> ownerStruct, StructDef<T> elementType, int elementsPerBlock) {
+		FieldList<T> result = new FieldList<>(ownerStruct, elementType, elementsPerBlock);
+		ownerStruct.add(result);
+		ownerStruct.addDestructableField(result);
+		return result;
+	}
+
+	private int getElementSize() {
+		int recordSize = this.elementType.getFactory().getRecordSize();
+		return MathUtils.roundUpToNearestMultipleOfPowerOfTwo(recordSize, Database.BLOCK_SIZE_DELTA);
+	}
+
+	@Override
+	public int getRecordSize() {
+		return LIST_HEADER_BYTES;
+	}
+
+	/**
+	 * Returns the contents of the receiver as a {@link List}.
+	 * 
+	 * @param nd the database to be queried.
+	 * @param address the address of the parent struct
+	 */
+	public List<T> asList(Nd nd, long address) {
+		long headerStartAddress = address + this.offset;
+		long firstBlockAddress = FIRST_BLOCK.get(nd, headerStartAddress);
+
+		List<T> result = new ArrayList<>();
+
+		long nextBlockAddress = firstBlockAddress;
+		while (nextBlockAddress != 0) {
+			long currentBlockAddress = nextBlockAddress;
+			nextBlockAddress = BlockHeader.NEXT_BLOCK.get(nd, currentBlockAddress);
+			int elementsInBlock = BlockHeader.ELEMENTS_IN_USE.get(nd, currentBlockAddress);
+			long firstElementInBlockAddress = currentBlockAddress + BlockHeader.BLOCK_HEADER_BYTES;
+
+			readElements(result, nd, firstElementInBlockAddress, elementsInBlock);
+		}
+
+		return result;
+	}
+
+	private void readElements(List<T> result, Nd nd, long nextElementAddress, int count) {
+		ITypeFactory<T> factory = this.elementType.getFactory();
+
+		int size = getElementSize();
+		for (; count > 0; count--) {
+			result.add(factory.create(nd, nextElementAddress));
+			nextElementAddress += size;
+		}
+	}
+
+	public T append(Nd nd, long address) {
+		Database db = nd.getDB();
+		db.getLog().start(this.appendTag);
+		try {
+			long headerStartAddress = address + this.offset;
+			long nextBlockAddress = LAST_BLOCK_WITH_ELEMENTS.get(nd, headerStartAddress);
+	
+			// Ensure that there's at least one block
+			long insertionBlockAddress = nextBlockAddress;
+			if (nextBlockAddress == 0) {
+				long newBlockAddress = allocateNewBlock(nd, this.elementsPerBlock);
+				LAST_BLOCK_WITH_ELEMENTS.put(nd, headerStartAddress, newBlockAddress);
+				FIRST_BLOCK.put(nd, headerStartAddress, newBlockAddress);
+				insertionBlockAddress = newBlockAddress;
+			}
+	
+			// Check if there's any free space in this block
+			int elementsInBlock = BlockHeader.ELEMENTS_IN_USE.get(nd, insertionBlockAddress);
+			int blockSize = BlockHeader.BLOCK_SIZE.get(nd, insertionBlockAddress);
+	
+			if (elementsInBlock >= blockSize) {
+				long nextBlock = BlockHeader.NEXT_BLOCK.get(nd, insertionBlockAddress);
+				if (nextBlock == 0) {
+					nextBlock = allocateNewBlock(nd, this.elementsPerBlock);
+					BlockHeader.NEXT_BLOCK.put(nd, insertionBlockAddress, nextBlock);
+				}
+				LAST_BLOCK_WITH_ELEMENTS.put(nd, headerStartAddress, nextBlock);
+				insertionBlockAddress = nextBlock;
+				elementsInBlock = BlockHeader.ELEMENTS_IN_USE.get(nd, insertionBlockAddress); 
+			}
+	
+			BlockHeader.ELEMENTS_IN_USE.put(nd, insertionBlockAddress, (short) (elementsInBlock + 1));
+			int elementSize = getElementSize();
+	
+			long resultAddress = insertionBlockAddress + BlockHeader.BLOCK_HEADER_BYTES + elementsInBlock * elementSize;
+			assert ((resultAddress - Database.BLOCK_HEADER_SIZE) & (Database.BLOCK_SIZE_DELTA - 1)) == 0;
+			return this.elementType.getFactory().create(nd, resultAddress);
+		} finally {
+			db.getLog().end(this.appendTag);
+		}
+	}
+
+	/**
+	 * Ensures that the receiver will have space for the given number of elements without additional
+	 * allocation. Callers should invoke this prior to a sequence of {@link FieldList#append(Nd, long)}
+	 * calls if they know in advance how many elements will be appended. Will create the minimum number
+	 * of extra blocks needed to the given number of additional elements.
+	 */
+	public void allocate(Nd nd, long address, int numElements) {
+		Database db = nd.getDB();
+		db.getLog().start(this.allocateTag);
+		try {
+			if (numElements == 0) {
+				// Not an error, but there's nothing to do if the caller didn't actually ask for anything to be allocated.
+				return;
+			}
+			long headerStartAddress = address + this.offset;
+			long nextBlockAddress = LAST_BLOCK_WITH_ELEMENTS.get(nd, headerStartAddress);
+	
+			int maxBlockSizeThatFitsInAChunk = (int) ((MAX_BYTES_IN_A_CHUNK - BlockHeader.BLOCK_HEADER_BYTES)
+					/ getElementSize());
+
+			// Ensure that there's at least one block
+			if (nextBlockAddress == 0) {
+				int firstAllocation = Math.min(numElements, maxBlockSizeThatFitsInAChunk);
+				nextBlockAddress = allocateNewBlock(nd, firstAllocation);
+				LAST_BLOCK_WITH_ELEMENTS.put(nd, headerStartAddress, nextBlockAddress);
+				FIRST_BLOCK.put(nd, headerStartAddress, nextBlockAddress);
+			}
+	
+			// Check if there's any free space in this block
+			int remainingToAllocate = numElements;
+			while (true) {
+				long currentBlockAddress = nextBlockAddress;
+				nextBlockAddress = BlockHeader.NEXT_BLOCK.get(nd, currentBlockAddress);
+				int elementsInUse = BlockHeader.ELEMENTS_IN_USE.get(nd, currentBlockAddress);
+				int blockSize = BlockHeader.BLOCK_SIZE.get(nd, currentBlockAddress);
+	
+				remainingToAllocate -= (blockSize - elementsInUse);
+				if (remainingToAllocate <= 0) {
+					break;
+				}
+	
+				if (nextBlockAddress == 0) {
+					nextBlockAddress = allocateNewBlock(nd, Math.min(maxBlockSizeThatFitsInAChunk, numElements));
+					BlockHeader.NEXT_BLOCK.put(nd, currentBlockAddress, nextBlockAddress);
+				}
+			}
+		} finally {
+			db.getLog().end(this.allocateTag);
+		}
+	}
+
+	private long allocateNewBlock(Nd nd, int blockSize) {
+		short poolId = getMemoryPoolId(nd);
+		int elementSize = getElementSize();
+		long bytesNeeded = BlockHeader.BLOCK_HEADER_BYTES + blockSize * elementSize;
+		// If we're close enough to filling the chunk that we wouldn't be able to fit any more elements anyway, allocate
+		// the entire chunk. Although it wastes a small amount of space, it ensures that the blocks can be more easily
+		// reused rather than being fragmented. It also allows freed blocks to be merged via the large block allocator.
+		if (MAX_BYTES_IN_A_CHUNK - bytesNeeded < elementSize) {
+			bytesNeeded = MAX_BYTES_IN_A_CHUNK;
+		}
+		long result = nd.getDB().malloc(bytesNeeded, poolId);
+		BlockHeader.BLOCK_SIZE.put(nd, result, (short) blockSize);
+		return result;
+	}
+
+	private short getMemoryPoolId(Nd nd) {
+		short poolId = Database.POOL_LINKED_LIST;
+		if (this.ownerType != null) {
+			Class<?> structClass = this.ownerType.getStructClass();
+			if (nd.getTypeRegistry().isRegisteredClass(structClass)) {
+				poolId = (short) (Database.POOL_FIRST_NODE_TYPE + nd.getNodeType(structClass));
+			}
+		}
+		return poolId;
+	}
+
+	@Override
+	public void destruct(Nd nd, long address) {
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			short poolId = getMemoryPoolId(nd);
+			long headerStartAddress = address + this.offset;
+			long firstBlockAddress = FIRST_BLOCK.get(nd, headerStartAddress);
+	
+			long nextBlockAddress = firstBlockAddress;
+			while (nextBlockAddress != 0) {
+				long currentBlockAddress = nextBlockAddress;
+				nextBlockAddress = BlockHeader.NEXT_BLOCK.get(nd, currentBlockAddress);
+				int elementsInBlock = BlockHeader.ELEMENTS_IN_USE.get(nd, currentBlockAddress);
+				destructElements(nd, currentBlockAddress + BlockHeader.BLOCK_HEADER_BYTES, elementsInBlock);
+				db.free(currentBlockAddress, poolId);
+			}
+	
+			db.clearRange(headerStartAddress, getRecordSize());
+		} finally {
+			db.getLog().end(this.destructTag);
+		} 
+	}
+
+	private void destructElements(Nd nd, long nextElementAddress, int count) {
+		ITypeFactory<T> factory = this.elementType.getFactory();
+
+		int size = getElementSize();
+		while (--count >= 0) {
+			factory.destruct(nd, nextElementAddress);
+			nextElementAddress += size;
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.java
index 2df2b00..4741f0b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldLong.java
@@ -11,16 +11,20 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Declares a Nd field of type long. Can be used in place of  {@link Field}&lt{@link Long}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldLong implements IField {
-	private int offset;
+public class FieldLong extends BaseField {
+	private final Tag tag;
 
-	public FieldLong() {
+	public FieldLong(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() + " in struct " + structName); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+		this.tag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public long get(Nd nd, long address) {
@@ -29,12 +33,13 @@
 	}
 
 	public void put(Nd nd, long address, long newValue) {
-		nd.getDB().putLong(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.tag);
+		try {
+			nd.getDB().putLong(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.tag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.java
index a4ba075..dc8e97e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldManyToOne.java
@@ -10,9 +10,13 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
+import org.aspectj.org.eclipse.jdt.internal.core.nd.INdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.ITypeFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 
 /**
  * Holds the n side of a n..1 relationship. Declares a Nd field which is a pointer of a NdNode of the specified
@@ -20,13 +24,12 @@
  * {@link FieldManyToOne} points to an object, the inverse pointer is automatically inserted into the matching back
  * pointer list.
  */
-public class FieldManyToOne<T extends NdNode> implements IDestructableField, IField, IRefCountedField {
+public class FieldManyToOne<T extends INdStruct> extends BaseField implements IDestructableField, IRefCountedField {
 	public final static FieldPointer TARGET;
 	public final static FieldInt BACKPOINTER_INDEX;
 
-	private int offset;
-	Class<T> targetType;
-	final Class<? extends NdNode> localType;
+	StructDef<T> targetType;
+	final StructDef<? extends INdStruct> localType;
 	FieldOneToMany<?> backPointer;
 	@SuppressWarnings("rawtypes")
 	private final static StructDef<FieldManyToOne> type;
@@ -34,6 +37,9 @@
 	 * True iff the other end of this pointer should delete this object when its end of the pointer is cleared.
 	 */
 	public final boolean pointsToOwner;
+	private final Tag putTag;
+	private final Tag destructTag;
+	private boolean permitsNull = true;
 
 	static {
 		type = StructDef.createAbstract(FieldManyToOne.class);
@@ -43,7 +49,7 @@
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
-	private FieldManyToOne(Class<? extends NdNode> localType, FieldOneToMany<?> backPointer, boolean pointsToOwner) {
+	private FieldManyToOne(StructDef<? extends INdStruct> localType, FieldOneToMany<?> backPointer, boolean pointsToOwner) {
 		this.localType = localType;
 		this.pointsToOwner = pointsToOwner;
 
@@ -53,16 +59,27 @@
 						"Attempted to construct a FieldNodePointer referring to a backpointer list that is already in use" //$NON-NLS-1$
 								+ " by another field"); //$NON-NLS-1$
 			}
-			backPointer.targetType = (Class) localType;
-			this.targetType = (Class) backPointer.localType;
+			backPointer.targetType = (StructDef) localType;
+			this.targetType = (StructDef) backPointer.localType;
 			backPointer.forwardPointer = this;
 		}
 		this.backPointer = backPointer;
+		setFieldName("field " + localType.getNumFields() + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + localType.getStructName()); //$NON-NLS-1$
+		this.putTag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
+		this.destructTag = ModificationLog.createTag("Destructing " + getFieldName()); //$NON-NLS-1$
 	}
 
-	public static <T extends NdNode, B extends NdNode> FieldManyToOne<T> create(StructDef<B> builder,
+	public static <T extends INdStruct, B extends INdStruct> FieldManyToOne<T> createNonNull(StructDef<B> builder,
 			FieldOneToMany<B> forwardPointer) {
-		FieldManyToOne<T> result = new FieldManyToOne<T>(builder.getStructClass(), forwardPointer, false);
+		FieldManyToOne<T> result = create(builder, forwardPointer);
+		result.permitsNull = false;
+		return result;
+	}
+
+	public static <T extends INdStruct, B extends INdStruct> FieldManyToOne<T> create(StructDef<B> builder,
+			FieldOneToMany<B> forwardPointer) {
+		FieldManyToOne<T> result = new FieldManyToOne<T>(builder, forwardPointer, false);
 		builder.add(result);
 		builder.addDestructableField(result);
 		return result;
@@ -76,22 +93,48 @@
 	 * @param forwardPointer the field which holds the pointer in the other direction
 	 * @return a newly constructed field
 	 */
-	public static <T extends NdNode, B extends NdNode> FieldManyToOne<T> createOwner(StructDef<B> builder,
+	public static <T extends INdStruct, B extends INdStruct> FieldManyToOne<T> createOwner(StructDef<B> builder,
 			FieldOneToMany<B> forwardPointer) {
+		// Although it would work to have a non-NdNode owned in this manner, we currently have no legitimate use-cases
+		// for this to occur. If this happens it is almost certainly an accidental copy-paste error where someone
+		// intended to call create but called this method instead. If we ever discover a legitimate use-case for it,
+		// this could be removed and things would probably still work.
+		if (!NdNode.class.isAssignableFrom(builder.getStructClass())) {
+			throw new IllegalArgumentException(FieldManyToOne.class.getSimpleName() + " can't be the owner of " //$NON-NLS-1$
+					+ builder.getStructClass().getSimpleName() + " because the latter isn't a subclass of " //$NON-NLS-1$
+					+ NdNode.class.getSimpleName()); 
+		}
 
-		FieldManyToOne<T> result = new FieldManyToOne<T>(builder.getStructClass(), forwardPointer, true);
+		FieldManyToOne<T> result = new FieldManyToOne<T>(builder, forwardPointer, true);
 		builder.add(result);
 		builder.addDestructableField(result);
 		builder.addOwnerField(result);
 		return result;
 	}
 
+	/**
+	 * Sets whether or not this field permits nulls to be assigned.
+	 * 
+	 * @param permitted true iff the field permits nulls
+	 * @return this
+	 */
+	public FieldManyToOne<T> permitNull(boolean permitted) {
+		this.permitsNull = permitted;
+		return this;
+	}
+
 	public T get(Nd nd, long address) {
 		return NdNode.load(nd, getAddress(nd, address), this.targetType);
 	}
 
 	public long getAddress(Nd nd, long address) {
-		return nd.getDB().getRecPtr(address + this.offset);
+		long result = nd.getDB().getRecPtr(address + this.offset);
+		if (!this.permitsNull && result == 0) {
+			throw nd.describeProblem()
+				.addProblemAddress(this, address)
+				.build("Database contained a null in a non-null field"); //$NON-NLS-1$
+		}
+		return result;
 	}
 
 	/**
@@ -100,34 +143,43 @@
 	 */
 	public void put(Nd nd, long address, T value) {
 		if (value != null) {
-			put(nd, address, value.address);
-		} else {
+			put(nd, address, value.getAddress());
+		} else if (this.permitsNull) {
 			put(nd, address, 0);
+		} else {
+			throw new IllegalArgumentException("Attempted to write a null into a non-null field"); //$NON-NLS-1$
 		}
 	}
 
 	public void put(Nd nd, long address, long newTargetAddress) {
-		long fieldStart = address + this.offset;
-		if (this.backPointer == null) {
-			throw new IllegalStateException("FieldNodePointer must be associated with a FieldBackPointer"); //$NON-NLS-1$
-		}
-		
-		long oldTargetAddress = TARGET.get(nd, fieldStart);
-		if (oldTargetAddress == newTargetAddress) {
-			return;
-		}
-
-		detachFromOldTarget(nd, address, oldTargetAddress);
-
-		TARGET.put(nd, fieldStart, newTargetAddress);
-		if (newTargetAddress != 0) {
-			// Note that newValue is the address of the backpointer list and record (the address of the struct
-			// containing the forward pointer) is the value being inserted into the list.
-			BACKPOINTER_INDEX.put(nd, fieldStart, this.backPointer.add(nd, newTargetAddress, address));
-		} else {
-			if (this.pointsToOwner) {
-				nd.scheduleDeletion(address);
+		Database db = nd.getDB();
+		db.getLog().start(this.putTag);
+		try {
+			long fieldStart = address + this.offset;
+			if (this.backPointer == null) {
+				throw new IllegalStateException(
+						getClass().getSimpleName() + " must be associated with a " + FieldOneToMany.class.getSimpleName()); //$NON-NLS-1$
 			}
+	
+			long oldTargetAddress = TARGET.get(nd, fieldStart);
+			if (oldTargetAddress == newTargetAddress) {
+				return;
+			}
+	
+			detachFromOldTarget(nd, address, oldTargetAddress);
+	
+			TARGET.put(nd, fieldStart, newTargetAddress);
+			if (newTargetAddress != 0) {
+				// Note that newValue is the address of the backpointer list and record (the address of the struct
+				// containing the forward pointer) is the value being inserted into the list.
+				BACKPOINTER_INDEX.put(nd, fieldStart, this.backPointer.add(nd, newTargetAddress, address));
+			} else {
+				if (this.pointsToOwner) {
+					nd.scheduleDeletion(address);
+				}
+			}
+		} finally {
+			db.getLog().end(this.putTag);
 		}
 	}
 
@@ -138,13 +190,14 @@
 
 			this.backPointer.remove(nd, oldTargetAddress, oldIndex);
 
-			short targetTypeId = NdNode.NODE_TYPE.get(nd, oldTargetAddress);
+			if (this.targetType.isNdNode()) {
+				short targetTypeId = NdNode.NODE_TYPE.get(nd, oldTargetAddress);
+				ITypeFactory<? extends NdNode> typeFactory = nd.getTypeFactory(targetTypeId);
 
-			ITypeFactory<T> typeFactory = nd.getTypeFactory(targetTypeId);
-
-			if (typeFactory.getDeletionSemantics() == StructDef.DeletionSemantics.REFCOUNTED 
-					&& typeFactory.isReadyForDeletion(nd, oldTargetAddress)) {
-				nd.scheduleDeletion(oldTargetAddress);
+				if (typeFactory.getDeletionSemantics() == StructDef.DeletionSemantics.REFCOUNTED 
+						&& typeFactory.isReadyForDeletion(nd, oldTargetAddress)) {
+					nd.scheduleDeletion(oldTargetAddress);
+				}
 			}
 		}
 	}
@@ -161,10 +214,16 @@
 
 	@Override
 	public void destruct(Nd nd, long address) {
-		long fieldStart = address + this.offset;
-		long oldTargetAddress = TARGET.get(nd, fieldStart);
-		detachFromOldTarget(nd, address, oldTargetAddress);
-		TARGET.put(nd, fieldStart, 0);
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			long fieldStart = address + this.offset;
+			long oldTargetAddress = TARGET.get(nd, fieldStart);
+			detachFromOldTarget(nd, address, oldTargetAddress);
+			TARGET.put(nd, fieldStart, 0);
+		} finally {
+			db.getLog().end(this.destructTag);
+		}
 	}
 
 	void clearedByBackPointer(Nd nd, long address) {
@@ -174,11 +233,6 @@
 	}
 
 	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
-	}
-
-	@Override
 	public int getRecordSize() {
 		return type.size();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.java
index 058f6eb..35389fc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToMany.java
@@ -13,6 +13,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.aspectj.org.eclipse.jdt.internal.core.nd.INdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.RawGrowableArray;
@@ -21,10 +22,9 @@
  * Holds the 1 side of a 1..n relationship between two objects. FieldNodePointer and FieldBackPointer fields always go
  * together in pairs.
  */
-public class FieldOneToMany<T extends NdNode> implements IDestructableField, IRefCountedField, IField {
-	private int offset;
-	public Class<T> targetType;
-	public final Class<? extends NdNode> localType;
+public class FieldOneToMany<T extends INdStruct> extends BaseField implements IDestructableField, IRefCountedField {
+	public StructDef<T> targetType;
+	public final StructDef<? extends INdStruct> localType;
 	private final RawGrowableArray backPointerArray;
 	FieldManyToOne<?> forwardPointer;
 
@@ -33,7 +33,7 @@
 	}
 
 	@SuppressWarnings({ "rawtypes", "unchecked" })
-	private FieldOneToMany(Class<? extends NdNode> localType, FieldManyToOne<? extends NdNode> forwardPointer,
+	private FieldOneToMany(StructDef<? extends INdStruct> localType, FieldManyToOne<? extends INdStruct> forwardPointer,
 			int inlineElements) {
 		this.localType = localType;
 
@@ -43,11 +43,13 @@
 					"Attempted to construct a FieldBackPointer referring to a forward pointer that is already in use" //$NON-NLS-1$
 						+ " by another field"); //$NON-NLS-1$
 			}
-			forwardPointer.targetType = (Class)localType;
-			this.targetType = (Class)forwardPointer.localType;
+			forwardPointer.targetType = (StructDef) localType;
+			this.targetType = (StructDef) forwardPointer.localType;
 			forwardPointer.backPointer = this;
 		}
 		this.forwardPointer = forwardPointer;
+		setFieldName("field " + localType.getNumFields() + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + localType.getStructName()); //$NON-NLS-1$
 		this.backPointerArray = new RawGrowableArray(inlineElements);
 	}
 
@@ -63,21 +65,20 @@
 	 * offer a performance improvement. For relationships that will normally be empty, this should be 0.
 	 * @return the newly constructed backpointer field
 	 */
-	public static <T extends NdNode, B extends NdNode> FieldOneToMany<T> create(StructDef<B> builder, 
+	public static <T extends INdStruct, B extends INdStruct> FieldOneToMany<T> create(StructDef<B> builder, 
 			FieldManyToOne<B> forwardPointer, int inlineElementCount) {
-		FieldOneToMany<T> result = new FieldOneToMany<T>(builder.getStructClass(), forwardPointer,
-				inlineElementCount);
+		FieldOneToMany<T> result = new FieldOneToMany<T>(builder, forwardPointer, inlineElementCount);
 		builder.add(result);
 		builder.addDestructableField(result);
 		builder.addRefCountedField(result);
 		return result;
 	}
 
-	public static <T extends NdNode, B extends NdNode> FieldOneToMany<T> create(StructDef<B> builder, 
+	public static <T extends INdStruct, B extends INdStruct> FieldOneToMany<T> create(StructDef<B> builder, 
 			FieldManyToOne<B> forwardPointer) {
 		return create(builder, forwardPointer, 0);
 	}
-	
+
 	public void accept(Nd nd, long address, Visitor<T> visitor) {
 		int size = size(nd, address);
 
@@ -113,6 +114,10 @@
 		return NdNode.load(nd, nextPointer, this.targetType);
 	}
 
+	public long getAddressOf(Nd nd, long address, int index) {
+		return this.backPointerArray.get(nd, address + this.offset, index);
+	}
+
 	/**
 	 * Removes the given index from the list. If another element is swapped into the removed element's
 	 * location, that element's index will be updated. The removed element itself will not be modified. The
@@ -140,6 +145,7 @@
 	/**
 	 * Returns the record size of the back pointer list 
 	 */
+	@Override
 	public int getRecordSize() {
 		return this.backPointerArray.getRecordSize();
 	}
@@ -180,9 +186,4 @@
 		}
 		return !isEmpty(nd, address);
 	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
-	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.java
index 7bfd06b..6d89505 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldOneToOne.java
@@ -10,24 +10,28 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
+import org.aspectj.org.eclipse.jdt.internal.core.nd.INdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Represents a 1-to-0..1 relationship in a Nd database.
  */
-public class FieldOneToOne<T extends NdNode> implements IField, IDestructableField, IRefCountedField {
-	private int offset;
-	public final Class<T> nodeType; 
+public class FieldOneToOne<T extends INdStruct> extends BaseField implements IDestructableField, IRefCountedField {
+	public final StructDef<T> nodeType; 
 	FieldOneToOne<?> backPointer;
 	private boolean pointsToOwner;
+	private final Tag putTag;
+	private final Tag destructTag;
 
 	/**
 	 * @param nodeType
 	 * @param backPointer
 	 */
-	private FieldOneToOne(Class<T> nodeType, FieldOneToOne<?> backPointer, boolean pointsToOwner) {
+	private FieldOneToOne(StructDef<T> nodeType, FieldOneToOne<?> backPointer, boolean pointsToOwner) {
 		this.nodeType = nodeType;
 
 		if (backPointer != null) {
@@ -40,10 +44,14 @@
 		}
 		this.backPointer = backPointer;
 		this.pointsToOwner = pointsToOwner;
+		setFieldName("field " + nodeType.getNumFields() + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + nodeType.getStructName()); //$NON-NLS-1$
+		this.putTag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
+		this.destructTag = ModificationLog.createTag("Destructing " + getFieldName()); //$NON-NLS-1$
 	}
 
-	public static <T extends NdNode, B extends NdNode> FieldOneToOne<T> create(StructDef<B> builder,
-			Class<T> nodeType, FieldOneToOne<B> forwardPointer) {
+	public static <T extends INdStruct, B extends INdStruct> FieldOneToOne<T> create(StructDef<B> builder,
+			StructDef<T> nodeType, FieldOneToOne<B> forwardPointer) {
 
 		FieldOneToOne<T> result = new FieldOneToOne<T>(nodeType, forwardPointer, false);
 		builder.add(result);
@@ -51,8 +59,8 @@
 		return result;
 	}
 
-	public static <T extends NdNode, B extends NdNode> FieldOneToOne<T> createOwner(StructDef<B> builder,
-			Class<T> nodeType, FieldOneToOne<B> forwardPointer) {
+	public static <T extends INdStruct, B extends INdStruct> FieldOneToOne<T> createOwner(StructDef<B> builder,
+			StructDef<T> nodeType, FieldOneToOne<B> forwardPointer) {
 
 		FieldOneToOne<T> result = new FieldOneToOne<T>(nodeType, forwardPointer, true);
 		builder.add(result);
@@ -67,16 +75,33 @@
 	}
 
 	public void put(Nd nd, long address, T target) {
-		cleanup(nd, address);
-		nd.getDB().putRecPtr(address + this.offset, target == null ? 0 : target.address);
-		if (target == null && this.pointsToOwner) {
-			nd.scheduleDeletion(address);
+		Database db = nd.getDB();
+		db.getLog().start(this.putTag);
+		try {
+			cleanup(nd, address);
+			if (target == null) {
+				db.putRecPtr(address + this.offset, 0);
+				if (this.pointsToOwner) {
+					nd.scheduleDeletion(address);
+				}
+			} else {
+				db.putRecPtr(address + this.offset, target.getAddress());
+				db.putRecPtr(target.getAddress() + this.backPointer.offset, address);
+			}
+		} finally {
+			db.getLog().end(this.putTag);
 		}
 	}
 
 	@Override
 	public void destruct(Nd nd, long address) {
-		cleanup(nd, address);
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			cleanup(nd, address);
+		} finally {
+			db.getLog().end(this.destructTag);
+		}
 	}
 
 	private void cleanup(Nd nd, long address) {
@@ -92,11 +117,6 @@
 	}
 
 	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
-	}
-
-	@Override
 	public int getRecordSize() {
 		return Database.PTR_SIZE;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.java
index 70058e5..12800de 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldPointer.java
@@ -11,12 +11,17 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
-public class FieldPointer implements IField {
-	private int offset;
+public class FieldPointer extends BaseField {
+	private final Tag putTag;
 
-	public FieldPointer() {
+	public FieldPointer(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
+		this.putTag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public long get(Nd nd, long address) {
@@ -25,12 +30,13 @@
 	}
 
 	public void put(Nd nd, long address, long newValue) {
-		nd.getDB().putRecPtr(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.putTag);
+		try {
+			nd.getDB().putRecPtr(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.putTag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.java
index 6b529ea..394f567 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchIndex.java
@@ -17,6 +17,9 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.BTree;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IBTreeComparator;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IBTreeVisitor;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
@@ -25,10 +28,10 @@
 /**
  * Declares a field representing a case-insensitive search tree over elements which are a subtype of NdNode.
  */
-public class FieldSearchIndex<T extends NdNode> implements IField, IDestructableField {
-	private int offset;
+public class FieldSearchIndex<T extends NdNode> extends BaseField implements IDestructableField {
 	private final ITypeFactory<BTree> btreeFactory;
 	FieldSearchKey<?> searchKey;
+	private final Tag destructTag;
 	private static IResultRank anything = new IResultRank() {
 		@Override
 		public long getRank(Nd nd, long address) {
@@ -163,7 +166,7 @@
 		protected abstract boolean acceptResult(long address);
 	}
 
-	private FieldSearchIndex(FieldSearchKey<?> searchKey) {
+	private FieldSearchIndex(FieldSearchKey<?> searchKey, String structName, int fieldNumber) {
 		this.btreeFactory = BTree.getFactory(new IBTreeComparator() {
 			@Override
 			public int compare(Nd nd, long record1, long record2) {
@@ -188,12 +191,15 @@
 			searchKey.searchIndex = this;
 		}
 		this.searchKey = searchKey;
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
+		this.destructTag = ModificationLog.createTag("Destructing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public static <T extends NdNode, B> FieldSearchIndex<T> create(StructDef<B> builder,
 			final FieldSearchKey<B> searchKey) {
 
-		FieldSearchIndex<T> result = new FieldSearchIndex<T>(searchKey);
+		FieldSearchIndex<T> result = new FieldSearchIndex<T>(searchKey, builder.getStructName(), builder.getNumFields());
 
 		builder.add(result);
 		builder.addDestructableField(result);
@@ -207,12 +213,13 @@
 
 	@Override
 	public void destruct(Nd nd, long address) {
-		this.btreeFactory.destruct(nd, address);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			this.btreeFactory.destruct(nd, address);
+		} finally {
+			db.getLog().end(this.destructTag);
+		}
 	}
 
 	@Override
@@ -274,6 +281,23 @@
 		return result;
 	}
 
+	public List<T> findAll(final Nd nd, long address, final SearchCriteria searchCriteria, final int count) {
+		final List<T> result = new ArrayList<T>();
+		get(nd, address).accept(new SearchCriteriaToBtreeVisitorAdapter(searchCriteria, nd) {
+
+			int remainingCount = count;
+
+			@SuppressWarnings("unchecked")
+			@Override
+			protected boolean acceptResult(long resultAddress) {
+				result.add((T) NdNode.load(nd, resultAddress));
+				this.remainingCount--;
+				return this.remainingCount > 0;
+			}
+		});
+		return result;
+	}
+
 	/**
 	 * Returns the entire contents of the index as a single list.
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.java
index 6e0c4e0..d4954a4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldSearchKey.java
@@ -13,6 +13,8 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.BTree;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.EmptyString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
@@ -20,11 +22,12 @@
 /**
  * Represents a search key into a global search index.
  */
-public class FieldSearchKey<T> implements IField, IDestructableField {
-	private int offset;
+public class FieldSearchKey<T> extends BaseField implements IDestructableField {
 	FieldSearchIndex<?> searchIndex;
+	private final Tag destructTag;
+	private final Tag putTag;
 
-	private FieldSearchKey(FieldSearchIndex<?> searchIndex) {
+	private FieldSearchKey(FieldSearchIndex<?> searchIndex, String structName, int fieldNumber) {
 		if (searchIndex != null) {
 			if (searchIndex.searchKey != null && searchIndex.searchKey != this) {
 				throw new IllegalArgumentException(
@@ -34,6 +37,10 @@
 			searchIndex.searchKey = this;
 		}
 		this.searchIndex = searchIndex;
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
+		this.putTag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
+		this.destructTag = ModificationLog.createTag("Destructing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	/**
@@ -41,7 +48,7 @@
 	 */
 	public static <T, B extends NdNode> FieldSearchKey<T> create(StructDef<B> builder,
 			FieldSearchIndex<B> searchIndex) {
-		FieldSearchKey<T> result = new FieldSearchKey<T>(searchIndex);
+		FieldSearchKey<T> result = new FieldSearchKey<T>(searchIndex, builder.getStructName(), builder.getNumFields());
 
 		builder.add(result);
 		builder.addDestructableField(result);
@@ -57,12 +64,17 @@
 	 * Sets the value of the key and inserts it into the index if it is not already present
 	 */
 	public void put(Nd nd, long address, char[] newString) {
-		cleanup(nd, address);
-
 		Database db = nd.getDB();
-		BTree btree = this.searchIndex.get(nd, Database.DATA_AREA_OFFSET);
-		db.putRecPtr(address + this.offset, db.newString(newString).getRecord());
-		btree.insert(address);
+		db.getLog().start(this.putTag);
+		try {
+			cleanup(nd, address);
+
+			BTree btree = this.searchIndex.get(nd, Database.DATA_AREA_OFFSET);
+			db.putRecPtr(address + this.offset, db.newString(newString).getRecord());
+			btree.insert(address);
+		} finally {
+			db.getLog().end(this.putTag);
+		}
 	}
 
 	public IString get(Nd nd, long address) {
@@ -77,7 +89,13 @@
 
 	@Override
 	public void destruct(Nd nd, long address) {
-		cleanup(nd, address);
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			cleanup(nd, address);
+		} finally {
+			db.getLog().end(this.destructTag);
+		}
 	}
 
 	private void cleanup(Nd nd, long address) {
@@ -112,11 +130,6 @@
 	}
 
 	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
-	}
-
-	@Override
 	public int getRecordSize() {
 		return FieldString.RECORD_SIZE;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.java
index 29d3bb0..679ae48 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldShort.java
@@ -11,16 +11,21 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 
 /**
  * Declares a Nd field of type short. Can be used in place of  {@link Field}&lt{@link Short}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldShort implements IField {
-	private int offset;
+public class FieldShort extends BaseField {
+	private final Tag putTag;
 
-	public FieldShort() {
+	public FieldShort(String structName, int fieldNumber) {
+		setFieldName("field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
+		this.putTag = ModificationLog.createTag("Writing " + getFieldName()); //$NON-NLS-1$
 	}
 
 	public short get(Nd nd, long address) {
@@ -29,12 +34,13 @@
 	}
 
 	public void put(Nd nd, long address, short newValue) {
-		nd.getDB().putShort(address + this.offset, newValue);
-	}
-
-	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+		Database db = nd.getDB();
+		db.getLog().start(this.putTag);
+		try {
+			nd.getDB().putShort(address + this.offset, newValue);
+		} finally {
+			db.getLog().end(this.putTag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.java
index 4c97c46..7781c33 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/FieldString.java
@@ -11,6 +11,8 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.EmptyString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
@@ -19,12 +21,18 @@
  * Declares a Nd field of type string. Can be used in place of  {@link Field}&lt{@link String}&gt in order to
  * avoid extra GC overhead.
  */
-public class FieldString implements IDestructableField, IField {
+public class FieldString extends BaseField implements IDestructableField {
 	public static final int RECORD_SIZE = Database.STRING_SIZE;
 	private static final char[] EMPTY_CHAR_ARRAY = new char[0];
-	private int offset;
+	private final Tag putTag;
+	private final Tag destructTag;
 
-	public FieldString() {
+	public FieldString(String structName, int fieldNumber) {
+		this.putTag = ModificationLog.createTag("Writing field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+				+ " in struct " + structName); //$NON-NLS-1$
+		this.destructTag = ModificationLog
+				.createTag("Destructing field " + fieldNumber + ", a " + getClass().getSimpleName() //$NON-NLS-1$//$NON-NLS-2$
+						+ " in struct " + structName); //$NON-NLS-1$
 	}
 
 	public IString get(Nd nd, long address) {
@@ -38,18 +46,23 @@
 	}
 
 	public void put(Nd nd, long address, char[] newString) {
-		if (newString == null) {
-			newString = EMPTY_CHAR_ARRAY;
-		}
-		final Database db= nd.getDB();
-		IString name= get(nd, address);
-		if (name.compare(newString, true) != 0) {
-			name.delete();
-			if (newString != null && newString.length > 0) {
-				db.putRecPtr(address + this.offset, db.newString(newString).getRecord());
-			} else {
-				db.putRecPtr(address + this.offset, 0);
+		Database db = nd.getDB();
+		db.getLog().start(this.putTag);
+		try {
+			if (newString == null) {
+				newString = EMPTY_CHAR_ARRAY;
 			}
+			IString name= get(nd, address);
+			if (name.compare(newString, true) != 0) {
+				name.delete();
+				if (newString != null && newString.length > 0) {
+					db.putRecPtr(address + this.offset, db.newString(newString).getRecord());
+				} else {
+					db.putRecPtr(address + this.offset, 0);
+				}
+			}
+		} finally {
+			db.getLog().end(this.putTag);
 		}
 	}
 
@@ -57,14 +70,16 @@
 		put(nd, address, newString.toCharArray());
 	}
 
-	public void destruct(Nd nd, long address) {
-		get(nd, address).delete();
-		nd.getDB().putRecPtr(address + this.offset, 0);
-	}
-
 	@Override
-	public void setOffset(int offset) {
-		this.offset = offset;
+	public void destruct(Nd nd, long address) {
+		Database db = nd.getDB();
+		db.getLog().start(this.destructTag);
+		try {
+			get(nd, address).delete();
+			nd.getDB().putRecPtr(address + this.offset, 0);
+		} finally {
+			db.getLog().end(this.destructTag);
+		}
 	}
 
 	@Override
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.java
index 82683d7..6bd62d0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/IField.java
@@ -10,7 +10,47 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.field;
 
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+
+/**
+ * Represents a single field of a struct in the {@link Database}. Holds metadata for that field
+ * and permits laziy initialization of the field offset. Fields are normally instantiated as static
+ * variables. Collectively, they describe the database schema but they are not associated with any
+ * particular instance of data in the database.
+ * <p>
+ * Fields are temporarily mutable. On construction, a number of attributes (such as offset) are
+ * computed in a second pass or are initialized as other fields are constructed. Generally such
+ * attributes can't be computed in the constructor since they depend on knowledge of other fields
+ * that must be instantiated first. However, once {@link StructDef#done()} has been called on the
+ * last {@link StructDef}, fields are immutable and should not ever be modified again.
+ */
 public interface IField {
+	/**
+	 * Sets the field offset (bytes from the start of the struct). This is invoked some time after field construction,
+	 * after the sizes of all preceeding fields are known.
+	 */
 	void setOffset(int offset);
+
+	/**
+	 * Returns the size of the field, in bytes.
+	 */
 	int getRecordSize();
+
+	/**
+	 * Returns the required byte alignment for the field.
+	 */
+	default int getAlignment() {
+		return 1;
+	}
+
+	/**
+	 * Returns the name of the field. This is mainly used for error messages, debug output, and diagnostic tools.
+	 * Meant to be programmer-readable but not user-readable.
+	 */
+	String getFieldName();
+
+	/**
+	 * Returns the field offset, in bytes from the start of the struct.
+	 */
+	int getOffset();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.java
index 63ab94b..6eb225d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/field/StructDef.java
@@ -15,11 +15,18 @@
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.IDestructable;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.ITypeFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ModificationLog.Tag;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.util.MathUtils;
 
 /**
  * Defines a data structure that will appear in the database.
@@ -43,10 +50,11 @@
 public final class StructDef<T> {
 	Class<T> clazz;
 	private StructDef<? super T> superClass;
+	private Set<StructDef<?>> dependencies = new HashSet<>();
 	private List<IField> fields = new ArrayList<>();
 	private boolean doneCalled;
 	private boolean offsetsComputed;
-	private List<StructDef<? extends T>> subClasses = new ArrayList<>();
+	private List<StructDef<? extends T>> dependents = new ArrayList<>();
 	private int size;
 	List<IDestructableField> destructableFields = new ArrayList<>();
 	boolean refCounted;
@@ -56,6 +64,8 @@
 	private ITypeFactory<T> factory;
 	protected boolean hasUserDestructor;
 	private DeletionSemantics deletionSemantics;
+	final Tag destructTag;
+	private boolean isNdNode;
 
 	public static enum DeletionSemantics {
 		EXPLICIT, OWNED, REFCOUNTED
@@ -70,10 +80,12 @@
 	}
 
 	private StructDef(Class<T> clazz, StructDef<? super T> superClass, boolean isAbstract) {
+		this.destructTag = ModificationLog.createTag("Destructing struct " + clazz.getSimpleName()); //$NON-NLS-1$
 		this.clazz = clazz;
+		this.isNdNode = NdNode.class.isAssignableFrom(clazz);
 		this.superClass = superClass;
 		if (this.superClass != null) {
-			this.superClass.subClasses.add(this);
+			addDependency(this.superClass);
 		}
 		this.isAbstract = isAbstract;
 		final String fullyQualifiedClassName = clazz.getName();
@@ -93,6 +105,7 @@
 		this.hasUserDestructor = IDestructable.class.isAssignableFrom(clazz);
 
 		this.factory = new ITypeFactory<T>() {
+			@Override
 			public T create(Nd dom, long address) {
 				if (StructDef.this.isAbstract) {
 					throw new UnsupportedOperationException(
@@ -114,27 +127,38 @@
 				}
 			}
 
+			@Override
 			public int getRecordSize() {
 				return StructDef.this.size();
 			}
 
+			@Override
 			public boolean hasDestructor() {
 				return StructDef.this.hasUserDestructor || hasDestructableFields(); 
 			}
 
+			@Override
 			public Class<?> getElementClass() {
 				return StructDef.this.clazz;
 			}
 
+			@Override
 			public void destruct(Nd nd, long address) {
 				checkNotMutable();
-				if (StructDef.this.hasUserDestructor) {
-					IDestructable destructable = (IDestructable)create(nd, address);
-					destructable.destruct();
+				Database db = nd.getDB();
+				db.getLog().start(StructDef.this.destructTag);
+				try {
+					if (StructDef.this.hasUserDestructor) {
+						IDestructable destructable = (IDestructable)create(nd, address);
+						destructable.destruct();
+					}
+					destructFields(nd, address);
+				} finally {
+					db.getLog().end(StructDef.this.destructTag);
 				}
-				destructFields(nd, address);
 			}
 
+			@Override
 			public void destructFields(Nd dom, long address) {
 				StructDef.this.destructFields(dom, address);
 			}
@@ -151,6 +175,32 @@
 		};
 	}
 
+	public void addDependency(StructDef<?> newDependency) {
+		if (newDependency.hasIndirectDependent(new HashSet<>(), this)) {
+			throw new IllegalArgumentException("Circular dependency detected. Struct " //$NON-NLS-1$
+					+ getStructName() + " and struct " + newDependency.getStructName()  //$NON-NLS-1$
+					+ " both depend on one another"); //$NON-NLS-1$
+		}
+		if (this.dependencies.add(newDependency)) {
+			this.superClass.dependents.add(this);
+		}
+	}
+
+	private boolean hasIndirectDependent(Set<StructDef<?>> visited, StructDef<?> structDef) {
+		for (StructDef<?> next : this.dependents) {
+			if (!visited.add(next)) {
+				continue;
+			}
+			if (next.equals(structDef)) {
+				return true;
+			}
+			if (next.hasIndirectDependent(visited, structDef)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
 	public Class<T> getStructClass() {
 		return this.clazz;
 	}
@@ -206,6 +256,15 @@
 		return this.deletionSemantics;
 	}
 
+	private boolean areAllDependenciesResolved() {
+		for (StructDef<?> next : this.dependencies) {
+			if (!next.areOffsetsComputed()) {
+				return false;
+			}
+		}
+		return true;
+	}
+
 	/**
 	 * Call this once all the fields have been added to the struct definition and it is
 	 * ready to use.
@@ -216,7 +275,7 @@
 		}
 		this.doneCalled = true;
 
-		if (this.superClass == null || this.superClass.areOffsetsComputed()) {
+		if (areAllDependenciesResolved()) {
 			computeOffsets();
 		}
 	}
@@ -275,12 +334,13 @@
 
 	/**
 	 * Invoked on all StructDef after both {@link #done()} has been called on the struct and
-	 * {@link #computeOffsets()} has been called on their base class.
+	 * {@link #computeOffsets()} has been called on every dependency of this struct.
 	 */
 	private void computeOffsets() {
 		int offset = this.superClass == null ? 0 : this.superClass.size();
 
 		for (IField next : this.fields) {
+			offset = MathUtils.roundUpToNearestMultiple(offset, next.getAlignment());
 			next.setOffset(offset);
 			offset += next.getRecordSize();
 		}
@@ -309,7 +369,7 @@
 		
 		this.offsetsComputed = true;
 
-		for (StructDef<? extends T> next : this.subClasses) {
+		for (StructDef<? extends T> next : this.dependents) {
 			if (next.doneCalled) {
 				next.computeOffsets();
 			}
@@ -317,62 +377,66 @@
 	}
 
 	public FieldPointer addPointer() {
-		FieldPointer result = new FieldPointer();
+		FieldPointer result = new FieldPointer(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldShort addShort() {
-		FieldShort result = new FieldShort();
+		FieldShort result = new FieldShort(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldInt addInt() {
-		FieldInt result = new FieldInt();
+		FieldInt result = new FieldInt(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldLong addLong() {
-		FieldLong result = new FieldLong();
+		FieldLong result = new FieldLong(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldString addString() {
-		FieldString result = new FieldString();
+		FieldString result = new FieldString(getStructName(), this.fields.size());
 		add(result);
 		addDestructableField(result);
 		return result;
 	}
 
 	public FieldDouble addDouble() {
-		FieldDouble result = new FieldDouble();
+		FieldDouble result = new FieldDouble(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldFloat addFloat() {
-		FieldFloat result = new FieldFloat();
+		FieldFloat result = new FieldFloat(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
+	public String getStructName() {
+		return this.clazz.getSimpleName();
+	}
+
 	public FieldByte addByte() {
-		FieldByte result = new FieldByte();
+		FieldByte result = new FieldByte(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public FieldChar addChar() {
-		FieldChar result = new FieldChar();
+		FieldChar result = new FieldChar(getStructName(), this.fields.size());
 		add(result);
 		return result;
 	}
 
 	public <F> Field<F> add(ITypeFactory<F> factory1) {
-		Field<F> result = new Field<>(factory1);
+		Field<F> result = new Field<>(factory1, getStructName(), this.fields.size());
 		add(result);
 		if (result.factory.hasDestructor()) {
 			this.destructableFields.add(result);
@@ -394,5 +458,11 @@
 		}
 	}
 
-	
+	public boolean isNdNode() {
+		return this.isNdNode;
+	}
+
+	public int getNumFields() {
+		return this.fields.size();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.java
deleted file mode 100644
index cfa7cf3..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/BindingToIndexConverter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.indexer;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.aspectj.org.eclipse.jdt.core.dom.IAnnotationBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.IBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.IMemberValuePairBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.IMethodBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.IPackageBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.ITypeBinding;
-import org.aspectj.org.eclipse.jdt.core.dom.IVariableBinding;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaNames;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTreeNode;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdType;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeId;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeInterface;
-
-public class BindingToIndexConverter {
-	private static final boolean ENABLE_LOGGING = false;
-	private JavaIndex index;
-	private NdResourceFile resource;
-
-	public BindingToIndexConverter(NdResourceFile resource) {
-		this.resource = resource;
-		this.index = JavaIndex.getIndex(resource.getNd());
-	}
-
-	public void addBinding(NdTreeNode parent, IBinding binding, IProgressMonitor monitor) {
-		switch (binding.getKind()) {
-			case IBinding.TYPE:
-				addType((ITypeBinding) binding, monitor);
-				break;
-			case IBinding.ANNOTATION:
-				addAnnotation(parent, (IAnnotationBinding) binding, monitor);
-				break;
-			case IBinding.METHOD:
-				addMethod(parent, (IMethodBinding) binding, monitor);
-				break;
-			case IBinding.VARIABLE:
-				addVariable(parent, (IVariableBinding) binding, monitor);
-				break;
-			case IBinding.PACKAGE:
-				addPackage(parent, (IPackageBinding) binding, monitor);
-				break;
-			case IBinding.MEMBER_VALUE_PAIR:
-				addMemberValuePair(parent, (IMemberValuePairBinding) binding, monitor);
-				break;
-			default:
-				Package.log("Encountered unknown binding type: " + binding.getKind(), null); //$NON-NLS-1$
-		}
-	}
-
-	public void addMemberValuePair(NdTreeNode parent, IMemberValuePairBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding member value pair: " + binding.getName()); //$NON-NLS-1$
-	}
-
-	public void addPackage(NdTreeNode parent, IPackageBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding package: " + binding.getName()); //$NON-NLS-1$
-	}
-
-	public void addVariable(NdTreeNode parent, IVariableBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding variable: " + binding.getName()); //$NON-NLS-1$
-	}
-
-	public void addMethod(NdTreeNode parent, IMethodBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding method: " + binding.getName()); //$NON-NLS-1$
-	}
-
-	public void addAnnotation(NdTreeNode parent, IAnnotationBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding annotation: " + binding.getName()); //$NON-NLS-1$
-	}
-
-	public NdType addType(ITypeBinding binding, IProgressMonitor monitor) {
-		logInfo("Adding type: " + binding.getBinaryName()); //$NON-NLS-1$
-
-		NdTypeId name = makeTypeId(binding);
-		NdType type = name.findTypeByResourceAddress(this.resource.address);
-
-		if (type == null) {
-			type = new NdType(getNd(), this.resource);
-		}
-
-		type.setTypeId(name);
-
-		ITypeBinding superclass = binding.getSuperclass();
-
-		if (superclass != null) {
-			type.setSuperclass(makeTypeId(superclass));
-		}
-
-		for (ITypeBinding next : binding.getInterfaces()) {
-			new NdTypeInterface(getNd(), type, makeTypeId(next));
-		}
-
-		return type;
-	}
-
-	private void logInfo(String string) {
-		if (ENABLE_LOGGING) {
-			Package.logInfo(string);
-		}
-	}
-
-	private NdTypeId makeTypeId(ITypeBinding forBinding) {
-		return this.index.createTypeId(JavaNames.binaryNameToFieldDescriptor(forBinding.getBinaryName().toCharArray()));
-	}
-
-	private Nd getNd() {
-		return this.resource.getNd();
-	}
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.java
index 1aa5fce..f8ced7a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/ClassFileToIndexConverter.java
@@ -12,6 +12,7 @@
 
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.eclipse.core.runtime.CoreException;
@@ -33,15 +34,9 @@
 import org.aspectj.org.eclipse.jdt.internal.core.Openable;
 import org.aspectj.org.eclipse.jdt.internal.core.PackageFragment;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaNames;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationInConstant;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationInMethod;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationInMethodParameter;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationInType;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationInVariable;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdAnnotationValuePair;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdBinding;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdComplexTypeSignature;
@@ -51,17 +46,11 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdConstantClass;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdConstantEnum;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethod;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodException;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodId;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodParameter;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdType;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeAnnotation;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeAnnotationInMethod;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeAnnotationInType;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeAnnotationInVariable;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeArgument;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeBound;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeId;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeInterface;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeParameter;
@@ -78,7 +67,7 @@
 	private static final char[] COMMA = new char[]{','};
 	private static final char[][] EMPTY_CHAR_ARRAY_ARRAY = new char[0][];
 	private static final boolean ENABLE_LOGGING = false;
-	private static final char[] EMPTY_CHAR_ARRAY = new char[0];
+	static final char[] EMPTY_CHAR_ARRAY = new char[0];
 	private static final char[] PATH_SEPARATOR = new char[]{'/'};
 	private static final char[] ARRAY_FIELD_DESCRIPTOR_PREFIX = new char[] { '[' };
 	private NdResourceFile resource;
@@ -136,8 +125,9 @@
 
 		IBinaryTypeAnnotation[] typeAnnotations = binaryType.getTypeAnnotations();
 		if (typeAnnotations != null) {
+			type.allocateTypeAnnotations(typeAnnotations.length);
 			for (IBinaryTypeAnnotation typeAnnotation : typeAnnotations) {
-				NdTypeAnnotationInType annotation = new NdTypeAnnotationInType(getNd(), type);
+				NdTypeAnnotation annotation = type.createTypeAnnotation();
 
 				initTypeAnnotation(annotation, typeAnnotation);
 			}
@@ -190,11 +180,12 @@
 		IBinaryAnnotation[] annotations = binaryType.getAnnotations();
 		attachAnnotations(type, annotations);
 
-		type.setDeclaringMethod(createMethodId(binaryType.getEnclosingTypeName(), binaryType.getEnclosingMethod()));
+		type.setDeclaringMethod(binaryType.getEnclosingMethod());
 
 		IBinaryField[] fields = binaryType.getFields();
 
 		if (fields != null) {
+			type.allocateVariables(fields.length);
 			for (IBinaryField nextField : fields) {
 				addField(type, nextField);
 			}
@@ -203,8 +194,26 @@
 		IBinaryMethod[] methods = binaryType.getMethods();
 
 		if (methods != null) {
-			for (IBinaryMethod next : methods) {
-				addMethod(type, next, binaryType);
+			char[][] methodNames = new char[methods.length][];
+			Integer[] sortedElementIndices = new Integer[methods.length];
+
+			for (int idx = 0; idx < sortedElementIndices.length; idx++) {
+				sortedElementIndices[idx] = idx;
+				methodNames[idx] = getSelectorAndDescriptor(methods[idx]);
+			}
+
+			Arrays.sort(sortedElementIndices, (Integer i1, Integer i2) -> {
+				return CharArrayUtils.compare(methodNames[i1], methodNames[i2]);
+			});
+
+			type.allocateMethods(methods.length);
+			for (int idx = 0; idx < methods.length; idx++) {
+				NdMethod newMethod = type.createMethod();
+				int position = sortedElementIndices[idx];
+				newMethod.setDeclarationPosition(position);
+				newMethod.setMethodName(methodNames[position]);
+				IBinaryMethod nextMethod = methods[position];
+				addMethod(newMethod, nextMethod, binaryType);
 			}
 		}
 
@@ -222,6 +231,10 @@
 		return type;
 	}
 
+	private char[] getSelectorAndDescriptor(IBinaryMethod binaryMethod) {
+		return CharArrayUtils.concat(binaryMethod.getSelector(), binaryMethod.getMethodDescriptor());
+	}
+
 	private static char[] getMissingTypeString(char[][][] missingTypeNames) {
 		char[] missingTypeString = null;
 		if (missingTypeNames != null) {
@@ -252,8 +265,9 @@
 
 	private void attachAnnotations(NdMethod method, IBinaryAnnotation[] annotations) {
 		if (annotations != null) {
+			method.allocateAnnotations(annotations.length);
 			for (IBinaryAnnotation next : annotations) {
-				NdAnnotationInMethod annotation = new NdAnnotationInMethod(getNd(), method);
+				NdAnnotation annotation = method.createAnnotation();
 				initAnnotation(annotation, next);
 			}
 		}
@@ -261,8 +275,9 @@
 
 	private void attachAnnotations(NdType type, IBinaryAnnotation[] annotations) {
 		if (annotations != null) {
+			type.allocateAnnotations(annotations.length);
 			for (IBinaryAnnotation next : annotations) {
-				NdAnnotationInType annotation = new NdAnnotationInType(getNd(), type);
+				NdAnnotation annotation = type.createAnnotation();
 				initAnnotation(annotation, next);
 			}
 		}
@@ -270,8 +285,9 @@
 
 	private void attachAnnotations(NdVariable variable, IBinaryAnnotation[] annotations) {
 		if (annotations != null) {
+			variable.allocateAnnotations(annotations.length);
 			for (IBinaryAnnotation next : annotations) {
-				NdAnnotationInVariable annotation = new NdAnnotationInVariable(getNd(), variable);
+				NdAnnotation annotation = variable.createAnnotation();
 				initAnnotation(annotation, next);
 			}
 		}
@@ -279,8 +295,9 @@
 
 	private void attachAnnotations(NdMethodParameter variable, IBinaryAnnotation[] annotations) {
 		if (annotations != null) {
+			variable.allocateAnnotations(annotations.length);
 			for (IBinaryAnnotation next : annotations) {
-				NdAnnotationInMethodParameter annotation = new NdAnnotationInMethodParameter(getNd(), variable);
+				NdAnnotation annotation = variable.createAnnotation();
 				initAnnotation(annotation, next);
 			}
 		}
@@ -291,10 +308,9 @@
 	 *
 	 * @throws CoreException
 	 */
-	private void addMethod(NdType type, IBinaryMethod next, IBinaryType binaryType)
+	private void addMethod(NdMethod method, IBinaryMethod next, IBinaryType binaryType)
 			throws CoreException {
 		int flags = 0;
-		NdMethod method = new NdMethod(type);
 
 		attachAnnotations(method, next.getAnnotations());
 
@@ -307,8 +323,9 @@
 
 		IBinaryTypeAnnotation[] typeAnnotations = next.getTypeAnnotations();
 		if (typeAnnotations != null) {
+			method.allocateTypeAnnotations(typeAnnotations.length);
 			for (IBinaryTypeAnnotation typeAnnotation : typeAnnotations) {
-				NdTypeAnnotationInMethod annotation = new NdTypeAnnotationInMethod(getNd(), method);
+				NdTypeAnnotation annotation = method.createTypeAnnotation();
 
 				initTypeAnnotation(annotation, typeAnnotation);
 			}
@@ -350,6 +367,10 @@
 
 		int parameterNameIdx = 0;
 		int annotatedParametersCount = next.getAnnotatedParametersCount();
+		int namedParameterCount = parameterNames == null ? 0 : parameterNames.length;
+		int estimatedParameterCount = Math.max(Math.max(Math.max(numArgumentsInGenericSignature, namedParameterCount),
+				annotatedParametersCount), parameterFieldDescriptors.size());
+		method.allocateParameters(estimatedParameterCount);
 
 		short descriptorParameterIdx = 0;
 		char[] binaryTypeName = binaryType.getName();
@@ -368,8 +389,8 @@
 			if (isCompilerDefined && !compilerDefinedParametersAreIncludedInSignature) {
 				nextFieldSignature = new SignatureWrapper(nextFieldDescriptor);
 			}
-			NdMethodParameter parameter = new NdMethodParameter(method,
-					createTypeSignature(nextFieldSignature, nextFieldDescriptor));
+			NdMethodParameter parameter = method.createNewParameter();
+			parameter.setType(createTypeSignature(nextFieldSignature, nextFieldDescriptor));
 
 			parameter.setCompilerDefined(isCompilerDefined);
 
@@ -379,7 +400,7 @@
 
 				attachAnnotations(parameter, parameterAnnotations);
 			}
-			if (!isCompilerDefined && parameterNames != null && parameterNames.length > parameterNameIdx) {
+			if (!isCompilerDefined && namedParameterCount > parameterNameIdx) {
 				parameter.setName(parameterNames[parameterNameIdx++]);
 			}
 			descriptorParameterIdx++;
@@ -394,11 +415,12 @@
 		if (exceptionTypes == null) {
 			exceptionTypes = CharArrayUtils.EMPTY_ARRAY_OF_CHAR_ARRAYS;
 		}
+		method.allocateExceptions(exceptionTypes.length);
 		int throwsIdx = 0;
 		if (hasExceptionsInSignature) {
 			while (hasAnotherException(signature)) {
 				signature.start++;
-				new NdMethodException(method, createTypeSignature(signature,
+				method.createException(createTypeSignature(signature,
 						JavaNames.binaryNameToFieldDescriptor(exceptionTypes[throwsIdx])));
 				throwsIdx++;
 			}
@@ -406,7 +428,7 @@
 			for (;throwsIdx < exceptionTypes.length; throwsIdx++) {
 				char[] fieldDescriptor = JavaNames.binaryNameToFieldDescriptor(exceptionTypes[throwsIdx]);
 				SignatureWrapper convertedWrapper = new SignatureWrapper(fieldDescriptor);
-				new NdMethodException(method, createTypeSignature(convertedWrapper,
+				method.createException(createTypeSignature(convertedWrapper,
 						JavaNames.binaryNameToFieldDescriptor(exceptionTypes[throwsIdx])));
 			}
 		}
@@ -420,7 +442,6 @@
 			method.setDefaultValue(createConstantFromMixedType(defaultValue));
 		}
 
-		method.setMethodId(createMethodId(binaryType.getName(), next.getSelector(), next.getMethodDescriptor()));
 		method.setModifiers(next.getModifiers());
 		method.setTagBits(next.getTagBits());
 		method.setFlags(flags);
@@ -440,7 +461,7 @@
 	 * Adds the given field to the given type
 	 */
 	private void addField(NdType type, IBinaryField nextField) throws CoreException {
-		NdVariable variable = new NdVariable(type);
+		NdVariable variable = type.createVariable();
 
 		variable.setName(nextField.getName());
 
@@ -456,18 +477,23 @@
 
 		IBinaryTypeAnnotation[] typeAnnotations = nextField.getTypeAnnotations();
 		if (typeAnnotations != null) {
+			variable.allocateTypeAnnotations(typeAnnotations.length);
 			for (IBinaryTypeAnnotation next : typeAnnotations) {
-				NdTypeAnnotationInVariable annotation = new NdTypeAnnotationInVariable(getNd(), variable);
+				NdTypeAnnotation annotation = variable.createTypeAnnotation();
 	
 				initTypeAnnotation(annotation, next);
 			}
 		}
 		variable.setType(createTypeSignature(nextTypeSignature, nextField.getTypeName()));
 		variable.setTagBits(nextField.getTagBits());
+	}
 
-		// char[] fieldDescriptor = nextField.getTypeName();
-		// // DO NOT SUBMIT:
-		// IBinaryField bf = IndexBinaryType.createBinaryField(variable);
+	private static class TypeParameter {
+		public TypeParameter() {
+		}
+		public List<NdTypeSignature> bounds = new ArrayList<>();
+		public char[] identifier = ClassFileToIndexConverter.EMPTY_CHAR_ARRAY;
+		public boolean firstBoundIsClass;
 	}
 
 	/**
@@ -483,31 +509,46 @@
 			return;
 		}
 
+		List<TypeParameter> typeParameters = new ArrayList<>();
+
 		int indexOfClosingBracket = wrapper.skipAngleContents(wrapper.start) - 1;
 		wrapper.start++;
-		NdTypeParameter parameter = null;
+		TypeParameter parameter = null;
 		while (wrapper.start < indexOfClosingBracket) {
 			int colonPos = CharOperation.indexOf(':', genericSignature, wrapper.start, indexOfClosingBracket);
 
 			if (colonPos > wrapper.start) {
 				char[] identifier = CharOperation.subarray(genericSignature, wrapper.start, colonPos);
-				parameter = new NdTypeParameter(type, identifier);
+				parameter = new TypeParameter();
+				typeParameters.add(parameter);
+				parameter.identifier = identifier;
 				wrapper.start = colonPos + 1;
 				// The first bound is a class as long as it doesn't start with a double-colon
-				parameter.setFirstBoundIsClass(wrapper.charAtStart() != ':');
+				parameter.firstBoundIsClass = (wrapper.charAtStart() != ':');
 			}
 
 			skipChar(wrapper, ':');
 
 			NdTypeSignature boundSignature = createTypeSignature(wrapper, JAVA_LANG_OBJECT_FIELD_DESCRIPTOR);
 
-			new NdTypeBound(parameter, boundSignature);
+			parameter.bounds.add(boundSignature);
+		}
+
+		type.allocateTypeParameters(typeParameters.size());
+		for (TypeParameter param : typeParameters) {
+			NdTypeParameter ndParam = type.createTypeParameter();
+			ndParam.setIdentifier(param.identifier);
+			ndParam.setFirstBoundIsClass(param.firstBoundIsClass);
+			ndParam.allocateBounds(param.bounds.size());
+			for (NdTypeSignature bound : param.bounds) {
+				ndParam.createBound(bound);
+			}
 		}
 
 		skipChar(wrapper, '>');
 	}
 
-	private char[] readNextFieldDescriptor(SignatureWrapper genericSignature) {
+	private char[] readNextFieldDescriptor(SignatureWrapper genericSignature) throws CoreException {
 		int endPosition = findEndOfFieldDescriptor(genericSignature);
 
 		char[] result = CharArrayUtils.subarray(genericSignature.signature, genericSignature.start, endPosition);
@@ -515,7 +556,7 @@
 		return result;
 	}
 
-	private int findEndOfFieldDescriptor(SignatureWrapper genericSignature) {
+	private int findEndOfFieldDescriptor(SignatureWrapper genericSignature) throws CoreException {
 		char[] signature = genericSignature.signature;
 
 		if (signature == null || signature.length == 0) {
@@ -544,7 +585,7 @@
 				case 'Z':
 					return current + 1;
 				default:
-					throw new IndexException(Package.createStatus("Field descriptor starts with unknown character: " //$NON-NLS-1$
+					throw new CoreException(Package.createStatus("Field descriptor starts with unknown character: " //$NON-NLS-1$
 							+ genericSignature.toString()));
 			}
 		}
@@ -785,30 +826,6 @@
 		return this.index.createTypeId(typeName);
 	}
 
-	/**
-	 * Creates a method ID given a method selector, method descriptor, and binary type name
-	 */
-	private NdMethodId createMethodId(char[] binaryTypeName, char[] methodSelector, char[] methodDescriptor) {
-		if (methodSelector == null || binaryTypeName == null || methodDescriptor == null) {
-			return null;
-		}
-
-		char[] methodId = JavaNames.getMethodId(binaryTypeName, methodSelector, methodDescriptor);
-		return this.index.createMethodId(methodId);
-	}
-
-	/**
-	 * Creates a method ID given a method name (which is a method selector followed by a method descriptor.
-	 */
-	private NdMethodId createMethodId(char[] binaryTypeName, char[] methodName) {
-		if (methodName == null || binaryTypeName == null) {
-			return null;
-		}
-
-		char[] methodId = JavaNames.getMethodId(binaryTypeName, methodName);
-		return this.index.createMethodId(methodId);
-	}
-
 	private void initTypeAnnotation(NdTypeAnnotation annotation, IBinaryTypeAnnotation next) {
 		int[] typePath = next.getTypePath();
 		if (typePath != null && typePath.length > 0) {
@@ -855,8 +872,9 @@
 		IBinaryElementValuePair[] pairs = next.getElementValuePairs();
 
 		if (pairs != null) {
+			annotation.allocateValuePairs(pairs.length);
 			for (IBinaryElementValuePair element : pairs) {
-				NdAnnotationValuePair nextPair = new NdAnnotationValuePair(annotation, element.getName());
+				NdAnnotationValuePair nextPair = annotation.createValuePair(element.getName());
 				nextPair.setValue(createConstantFromMixedType(element.getValue()));
 			}
 		}
@@ -895,9 +913,9 @@
 		} else if (value instanceof IBinaryAnnotation) {
 			IBinaryAnnotation binaryAnnotation = (IBinaryAnnotation) value;
 
-			NdAnnotationInConstant annotation = new NdAnnotationInConstant(getNd());
-			initAnnotation(annotation, binaryAnnotation);
-			return NdConstantAnnotation.create(getNd(), annotation);
+			NdConstantAnnotation constant = new NdConstantAnnotation(getNd());
+			initAnnotation(constant.getValue(), binaryAnnotation);
+			return constant;
 		} else if (value instanceof Object[]) {
 			NdConstantArray result = new NdConstantArray(getNd());
 			Object[] array = (Object[]) value;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.java
new file mode 100644
index 0000000..9b586e4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/FileStateCache.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.indexer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+
+/**
+ * Holds a cache that maps filenames (absolute paths on the local filesystem) to "up to date" states.
+ * A file is "up to date" if its content is known to be in sync with the index. A file
+ * is not up to date if there is any possibility that its content might be out of sync with the
+ * index.
+ */
+public class FileStateCache {
+	private final Map<String, Boolean> fileStateCache = new HashMap<>();
+
+	/**
+	 * Returns true if the file at the given path is in sync with the index. Returns false if the file has already
+	 * been tested and might be out-of-sync. Returns null if its status is unknown and needs to be tested.
+	 *
+	 * @param location an absolute path on the filesystem
+	 */
+	public Boolean isUpToDate(String location) {
+		synchronized (this.fileStateCache) {
+			return this.fileStateCache.get(location);
+		}
+	}
+
+	/**
+	 * Returns the cache for the given {@link Nd} instance.
+	 *
+	 * @return the cache for the given {@link Nd}. Creates one if it doesn't exist yet.
+	 */
+	public static FileStateCache getCache(Nd nd) {
+		return nd.getData(FileStateCache.class, FileStateCache::create);
+	}
+
+	/**
+	 * Creates a new instance of {@link FileStateCache}.
+	 */
+	private static FileStateCache create() {
+		return new FileStateCache();
+	}
+
+	/**
+	 * Inserts a new entry into the cache.
+	 * 
+	 * @param location absolute filesystem path to the file
+	 * @param result true if the file is definitely in sync with the index, false if there is any possibility of it
+	 * being out of sync.
+	 */
+	public void put(String location, boolean result) {
+		synchronized (this.fileStateCache) {
+			this.fileStateCache.put(location, result);
+		}
+	}
+
+	/**
+	 * Clears the entire cache.
+	 */
+	public void clear() {
+		synchronized (this.fileStateCache) {
+			this.fileStateCache.clear();
+		}
+	}
+
+	/**
+	 * Removes a single entry from the cache.
+	 * 
+	 * @param location absolute filesystem path to the file.
+	 */
+	public void remove(String location) {
+		synchronized (this.fileStateCache) {
+			this.fileStateCache.remove(location);
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.java
index 76a68e7..cf51742 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/HierarchicalASTVisitor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -1135,5 +1135,86 @@
 	}
 
 //---- End VariableDeclaration Hierarchy -----------------------------
+//---- Begin Module Hierarchy -----------------------------------------
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		return visit((ASTNode) node);
+	}
+
+	@Override
+	public void endVisit(ModuleDeclaration node) {
+		endVisit((ASTNode) node);
+	}
+
+	@Override
+	public boolean visit(ModuleModifier node) {
+		return visit((ASTNode) node);
+	}
+
+	@Override
+	public void endVisit(ModuleModifier node) {
+		endVisit((ASTNode) node);
+	}
+
+	public boolean visit(ModuleDirective node) {
+		return visit((ASTNode) node);
+	}
+
+	public void endVisit(ModuleDirective node) {
+		endVisit((ASTNode) node);
+	}
+
+	@Override
+	public boolean visit(ExportsDirective node) {
+		return visit((ModuleDirective) node);
+	}
+
+	@Override
+	public void endVisit(ExportsDirective node) {
+		endVisit((ModuleDirective) node);
+	}
+
+	@Override
+	public boolean visit(OpensDirective node) {
+		return visit((ModuleDirective) node);
+	}
+
+	@Override
+	public void endVisit(OpensDirective node) {
+		endVisit((ModuleDirective) node);
+	}
+
+	@Override
+	public boolean visit(RequiresDirective node) {
+		return visit((ModuleDirective) node);
+	}
+
+	@Override
+	public void endVisit(RequiresDirective node) {
+		endVisit((ModuleDirective) node);
+	}
+
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		return visit((ModuleDirective) node);
+	}
+
+	@Override
+	public void endVisit(ProvidesDirective node) {
+		endVisit((ModuleDirective) node);
+	}
+
+	@Override
+	public boolean visit(UsesDirective node) {
+		return visit((ModuleDirective) node);
+	}
+
+	@Override
+	public void endVisit(UsesDirective node) {
+		endVisit((ModuleDirective) node);
+	}
+
+//---- End Module Hierarchy -------------------------------------------
+
 //---- End ASTNode Hierarchy -----------------------------------------
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
index 239da98..16f9500 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/Indexer.java
@@ -10,27 +10,30 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.indexer;
 
+import static org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.UTF_8;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsCharArray;
+
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.util.ArrayDeque;
+import java.io.InputStream;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Objects;
 import java.util.Set;
 import java.util.WeakHashMap;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipException;
 import java.util.zip.ZipFile;
 
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
@@ -44,19 +47,22 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.core.runtime.jobs.JobGroup;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
-import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaElementDelta;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.aspectj.org.eclipse.jdt.core.IParent;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaElementDelta;
@@ -64,11 +70,13 @@
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.IReader;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.ChunkCache;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.FileFingerprint;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.FileFingerprint.FingerprintTestResult;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaNames;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdBinding;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdType;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeId;
@@ -87,11 +95,30 @@
 	public static boolean DEBUG;
 	public static boolean DEBUG_ALLOCATIONS;
 	public static boolean DEBUG_TIMING;
+	public static boolean DEBUG_SCHEDULING;
 	public static boolean DEBUG_INSERTIONS;
 	public static boolean DEBUG_SELFTEST;
+	public static int DEBUG_LOG_SIZE_MB;
+	private static IPreferenceChangeListener listener = new IPreferenceChangeListener() {
+		@Override
+		public void preferenceChange(PreferenceChangeEvent event) {
+			if (JavaIndex.ENABLE_NEW_JAVA_INDEX.equals(event.getKey())) {
+				if (JavaIndex.isEnabled()) {
+					getInstance().rescanAll();
+				} else {
+					ChunkCache.getSharedInstance().clear();
+				}
+			}
+		}
+	};
+
+	// This is an arbitrary constant that is larger than the maximum number of ticks
+	// reported by SubMonitor and small enough that it won't overflow a long when multiplied by a large
+	// database size.
+	private final static int TOTAL_TICKS_TO_REPORT_DURING_INDEXING = 1000;
 
 	/**
-	 * True iff automatic reindexing (that is, the {@link #rescanAll()} method) is disabled Synchronize on
+	 * True iff automatic reindexing (that is, the {@link #rescanAll()} method) is disabled. Synchronize on
 	 * {@link #automaticIndexingMutex} while accessing.
 	 */
 	private boolean enableAutomaticIndexing = true;
@@ -102,13 +129,8 @@
 	private boolean indexerDirtiedWhileDisabled = false;
 	private final Object automaticIndexingMutex = new Object();
 
-	/**
-	 * Enable this to index the content of output folders, in cases where that content exists and is up-to-date. This is
-	 * much faster than indexing source files directly.
-	 */
-	public static boolean EXPERIMENTAL_INDEX_OUTPUT_FOLDERS;
+	private final FileStateCache fileStateCache;
 	private static final Object mutex = new Object();
-	private static final long MS_TO_NS = 1000000;
 
 	private Object listenersMutex = new Object();
 	/**
@@ -119,7 +141,14 @@
 	private JobGroup group = new JobGroup(Messages.Indexer_updating_index_job_name, 1, 1);
 
 	private Job rescanJob = Job.create(Messages.Indexer_updating_index_job_name, monitor -> {
-		rescan(monitor);
+		SubMonitor subMonitor = SubMonitor.convert(monitor);
+		try {
+			rescan(subMonitor);
+		} catch (IndexException e) {
+			Package.log("Database corruption detected during indexing. Deleting and rebuilding the index.", e); //$NON-NLS-1$
+			// If we detect corruption during indexing, delete and rebuild the entire index
+			rebuildIndex(subMonitor);
+		}
 	});
 
 	private Job rebuildIndexJob = Job.create(Messages.Indexer_updating_index_job_name, monitor -> {
@@ -134,6 +163,8 @@
 		synchronized (mutex) {
 			if (indexer == null) {
 				indexer = new Indexer(JavaIndex.getGlobalNd(), ResourcesPlugin.getWorkspace().getRoot());
+				IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(JavaCore.PLUGIN_ID);
+				preferences.addPreferenceChangeListener(listener);
 			}
 			return indexer;
 		}
@@ -163,18 +194,20 @@
 			}
 		}
 
-		if (runRescan) {
-			// Force a rescan when re-enabling automatic indexing since we may have missed an update
-			this.rescanJob.schedule();
-		}
-
-		if (!enabled) {
-			// Wait for any existing indexing operations to finish when disabling automatic indexing since
-			// we only want explicitly-triggered indexing operations to run after the method returns
-			try {
-				this.rescanJob.join(0, null);
-			} catch (OperationCanceledException | InterruptedException e) {
-				// Don't care
+		if (JavaIndex.isEnabled()) {
+			if (runRescan) {
+				// Force a rescan when re-enabling automatic indexing since we may have missed an update
+				this.rescanJob.schedule();
+			}
+	
+			if (!enabled) {
+				// Wait for any existing indexing operations to finish when disabling automatic indexing since
+				// we only want explicitly-triggered indexing operations to run after the method returns
+				try {
+					this.rescanJob.join(0, null);
+				} catch (OperationCanceledException | InterruptedException e) {
+					// Don't care
+				}
 			}
 		}
 	}
@@ -204,59 +237,69 @@
 
 	public void rescan(IProgressMonitor monitor) throws CoreException {
 		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
+		Database db = this.nd.getDB();
+		db.resetCacheCounters();
+		db.getLog().setBufferSize(DEBUG_LOG_SIZE_MB);
 
 		synchronized (this.automaticIndexingMutex) {
 			this.indexerDirtiedWhileDisabled = false;
 		}
 
-		long startTimeNs = System.nanoTime();
 		long currentTimeMs = System.currentTimeMillis();
 		if (DEBUG) {
 			Package.logInfo("Indexer running rescan"); //$NON-NLS-1$
 		}
 
-		// Gather all the IPackageFragmentRoots in the workspace
-		List<IJavaElement> unfilteredIndexables = getAllIndexableObjectsInWorkspace(subMonitor.split(3));
+		this.fileStateCache.clear();
+		WorkspaceSnapshot snapshot = WorkspaceSnapshot.create(this.root, subMonitor.split(1));
+		Set<IPath> locations = snapshot.allLocations();
 
-		int totalIndexables = unfilteredIndexables.size();
-		// Remove all duplicate indexables (jars which are referenced by more than one project)
-		Map<IPath, List<IJavaElement>> allIndexables = removeDuplicatePaths(unfilteredIndexables);
-
-		long startGarbageCollectionNs = System.nanoTime();
+		long startGarbageCollectionMs = System.currentTimeMillis();
 
 		// Remove all files in the index which aren't referenced in the workspace
-		int gcFiles = cleanGarbage(currentTimeMs, allIndexables.keySet(), subMonitor.split(4));
+		int gcFiles = cleanGarbage(currentTimeMs, locations, subMonitor.split(1));
 
-		long startFingerprintTestNs = System.nanoTime();
+		long startFingerprintTestMs = System.currentTimeMillis();
 
-		Map<IPath, FingerprintTestResult> fingerprints = testFingerprints(allIndexables.keySet(), subMonitor.split(7));
+		Map<IPath, FingerprintTestResult> fingerprints = testFingerprints(locations, subMonitor.split(1));
 		Set<IPath> indexablesWithChanges = new HashSet<>(
-				getIndexablesThatHaveChanged(allIndexables.keySet(), fingerprints));
+				getIndexablesThatHaveChanged(locations, fingerprints));
 
-		long startIndexingNs = System.nanoTime();
+		// Compute the total number of bytes to be read in and indexed
+		long startIndexingMs = System.currentTimeMillis();
+		long totalSizeToIndex = 0;
+		for (IPath next : indexablesWithChanges) {
+			FingerprintTestResult nextFingerprint = fingerprints.get(next);
+			totalSizeToIndex += nextFingerprint.getNewFingerprint().getSize();
+		}
+		double tickCoefficient = totalSizeToIndex == 0 ? 0.0
+				: (double) TOTAL_TICKS_TO_REPORT_DURING_INDEXING / (double) totalSizeToIndex;
 
 		int classesIndexed = 0;
-		SubMonitor loopMonitor = subMonitor.split(80).setWorkRemaining(indexablesWithChanges.size());
+		SubMonitor loopMonitor = subMonitor.split(94).setWorkRemaining(TOTAL_TICKS_TO_REPORT_DURING_INDEXING);
 		for (IPath next : indexablesWithChanges) {
-			classesIndexed += rescanArchive(currentTimeMs, next, allIndexables.get(next),
-					fingerprints.get(next).getNewFingerprint(), loopMonitor.split(1));
+			FingerprintTestResult nextFingerprint = fingerprints.get(next);
+			int ticks = (int) (nextFingerprint.getNewFingerprint().getSize() * tickCoefficient);
+
+			classesIndexed += rescanArchive(currentTimeMs, next, snapshot.get(next),
+					fingerprints.get(next).getNewFingerprint(), loopMonitor.split(ticks));
 		}
 
-		long endIndexingNs = System.nanoTime();
+		long endIndexingMs = System.currentTimeMillis();
 
 		Map<IPath, List<IJavaElement>> pathsToUpdate = new HashMap<>();
 
-		for (IPath next : allIndexables.keySet()) {
+		for (IPath next : locations) {
 			if (!indexablesWithChanges.contains(next)) {
-				pathsToUpdate.put(next, allIndexables.get(next));
+				pathsToUpdate.put(next, snapshot.get(next));
 				continue;
 			}
 		}
 
-		updateResourceMappings(pathsToUpdate, subMonitor.split(5));
+		updateResourceMappings(pathsToUpdate, subMonitor.split(1));
 
 		// Flush the database to disk
-		this.nd.acquireWriteLock(subMonitor.split(4));
+		this.nd.acquireWriteLock(subMonitor.split(1));
 		try {
 			this.nd.getDB().flush();
 		} finally {
@@ -269,29 +312,71 @@
 			Package.logInfo("Rescan finished"); //$NON-NLS-1$
 		}
 
-		long endResourceMappingNs = System.nanoTime();
+		long endResourceMappingMs = System.currentTimeMillis();
 
-		long fingerprintTimeMs = (startIndexingNs - startFingerprintTestNs) / MS_TO_NS;
-		long locateIndexablesTimeMs = (startGarbageCollectionNs - startTimeNs) / MS_TO_NS;
-		long garbageCollectionMs = (startFingerprintTestNs - startGarbageCollectionNs) / MS_TO_NS;
-		long indexingTimeMs = (endIndexingNs - startIndexingNs) / MS_TO_NS;
-		long resourceMappingTimeMs = (endResourceMappingNs - endIndexingNs) / MS_TO_NS;
+		long locateIndexablesTimeMs = startGarbageCollectionMs - currentTimeMs;
+		long garbageCollectionMs = startFingerprintTestMs - startGarbageCollectionMs;
+		long fingerprintTimeMs = startIndexingMs - startFingerprintTestMs;
+		long indexingTimeMs = endIndexingMs - startIndexingMs;
+		long resourceMappingTimeMs = endResourceMappingMs - endIndexingMs;
 
 		double averageGcTimeMs = gcFiles == 0 ? 0 : (double) garbageCollectionMs / (double) gcFiles;
 		double averageIndexTimeMs = classesIndexed == 0 ? 0 : (double) indexingTimeMs / (double) classesIndexed;
-		double averageFingerprintTimeMs = allIndexables.size() == 0 ? 0
-				: (double) fingerprintTimeMs / (double) allIndexables.size();
+		double averageFingerprintTimeMs = locations.size() == 0 ? 0
+				: (double) fingerprintTimeMs / (double) locations.size();
 		double averageResourceMappingMs = pathsToUpdate.size() == 0 ? 0
 				: (double) resourceMappingTimeMs / (double) pathsToUpdate.size();
 
 		if (DEBUG_TIMING) {
-			Package.logInfo(
-					"Indexing done.\n" //$NON-NLS-1$
-					+ "  Located " + totalIndexables + " indexables in " + locateIndexablesTimeMs + "ms\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					+ "  Collected garbage from " + gcFiles + " files in " +  garbageCollectionMs + "ms, average time = " + averageGcTimeMs + "ms\n" //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
-					+ "  Tested " + allIndexables.size() + " fingerprints in " + fingerprintTimeMs + "ms, average time = " + averageFingerprintTimeMs + "ms\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					+ "  Indexed " + classesIndexed + " classes in " + indexingTimeMs + "ms, average time = " + averageIndexTimeMs + "ms\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					+ "  Updated " + pathsToUpdate.size() + " paths in " + resourceMappingTimeMs + "ms, average time = " + averageResourceMappingMs + "ms\n"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
+			DecimalFormat msFormat = new DecimalFormat("#0.###"); //$NON-NLS-1$
+			DecimalFormat percentFormat = new DecimalFormat("#0.###"); //$NON-NLS-1$
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS\n"); //$NON-NLS-1$
+			System.out.println("Indexing done at " + format.format(new Date(endResourceMappingMs)) //$NON-NLS-1$
+					+ "  Located " + locations.size() + " indexables in " + locateIndexablesTimeMs + "ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			if (gcFiles != 0) {
+				System.out.println("  Collected garbage from " + gcFiles + " files in " + garbageCollectionMs //$NON-NLS-1$//$NON-NLS-2$
+						+ "ms, average time = " + msFormat.format(averageGcTimeMs) + "ms"); //$NON-NLS-1$//$NON-NLS-2$
+			}
+			System.out.println("  Tested " + locations.size() + " fingerprints in " + fingerprintTimeMs //$NON-NLS-1$ //$NON-NLS-2$
+					+ "ms, average time = " + msFormat.format(averageFingerprintTimeMs) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
+			if (classesIndexed != 0) {
+				System.out.println("  Indexed " + classesIndexed + " classes (from " + indexablesWithChanges.size() //$NON-NLS-1$//$NON-NLS-2$
+						+ " files containing " + Database.formatByteString(totalSizeToIndex) + ") in " + indexingTimeMs //$NON-NLS-1$ //$NON-NLS-2$
+						+ "ms, average time per class = " + msFormat.format(averageIndexTimeMs) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+			if (pathsToUpdate.size() != 0) {
+				System.out.println("  Updated " + pathsToUpdate.size() + " paths in " + resourceMappingTimeMs //$NON-NLS-1$//$NON-NLS-2$
+						+ "ms, average time = " + msFormat.format(averageResourceMappingMs) + "ms"); //$NON-NLS-1$//$NON-NLS-2$
+			}
+			System.out.println("  " + db.getChunkStats()); //$NON-NLS-1$
+			long cacheHits = db.getCacheHits();
+			long cacheMisses = db.getCacheMisses();
+			long totalReads = cacheMisses + cacheHits;
+			double cacheMissPercent = totalReads == 0 ? 0 : (cacheMisses * 100.0) / totalReads;
+			System.out.println("  Cache misses = " + cacheMisses + " (" //$NON-NLS-1$//$NON-NLS-2$
+					+ percentFormat.format(cacheMissPercent) + "%)"); //$NON-NLS-1$
+
+			long bytesRead = db.getBytesRead();
+			long bytesWritten = db.getBytesWritten();
+			double totalTimeMs = endResourceMappingMs - currentTimeMs;
+			long flushTimeMs = db.getCumulativeFlushTimeMs();
+			double flushPercent = totalTimeMs == 0 ? 0 : flushTimeMs * 100.0 / totalTimeMs;
+			System.out.println("  Reads = " + Database.formatByteString(bytesRead) + ", writes = " + Database.formatByteString(bytesWritten)); //$NON-NLS-1$//$NON-NLS-2$
+			double averageReadBytesPerSecond = db.getAverageReadBytesPerMs() * 1000;
+			double averageWriteBytesPerSecond = db.getAverageWriteBytesPerMs() * 1000;
+			if (bytesRead > Database.CHUNK_SIZE * 100) {
+				System.out.println(
+						"  Read speed = " + Database.formatByteString((long) averageReadBytesPerSecond) + "/s"); //$NON-NLS-1$//$NON-NLS-2$
+			}
+			if (bytesWritten > Database.CHUNK_SIZE * 100) {
+				System.out.println(
+						"  Write speed = " + Database.formatByteString((long) averageWriteBytesPerSecond) + "/s"); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+
+			System.out.println("  Time spent performing flushes = " //$NON-NLS-1$
+					+ msFormat.format(flushTimeMs) + "ms (" //$NON-NLS-1$
+					+ percentFormat.format(flushPercent) + "%)"); //$NON-NLS-1$
+			System.out.println("  Total indexing time = " + msFormat.format(totalTimeMs) + "ms"); //$NON-NLS-1$//$NON-NLS-2$
 		}
 
 		if (DEBUG_ALLOCATIONS) {
@@ -470,19 +555,16 @@
 					break;
 				}
 		
-				int numChildren = toDelete.getBindingCount();
+				int numChildren = toDelete.getTypeCount();
 				deletionMonitor.setWorkRemaining(numChildren + 1);
 				if (numChildren == 0) {
 					break;
 				}
 
-				NdBinding nextDeletion = toDelete.getBinding(numChildren - 1);
+				NdType nextDeletion = toDelete.getType(numChildren - 1);
 				if (DEBUG_INSERTIONS) {
-					if (nextDeletion instanceof NdType) {
-						NdType type = (NdType)nextDeletion;
-						Package.logInfo("Deleting " + type.getTypeId().getFieldDescriptor().getString() + " from "  //$NON-NLS-1$//$NON-NLS-2$
-								+ new String(toDelete.getLocation().getString()) + " " + toDelete.address); //$NON-NLS-1$
-					}
+					Package.logInfo("Deleting " + nextDeletion.getTypeId().getFieldDescriptor().getString() + " from "  //$NON-NLS-1$//$NON-NLS-2$
+							+ new String(toDelete.getLocation().getString()) + " " + toDelete.address); //$NON-NLS-1$
 				}
 				nextDeletion.delete();
 			} finally {
@@ -500,45 +582,6 @@
 		}
 	}
 
-	private Map<IPath, List<IJavaElement>> removeDuplicatePaths(List<IJavaElement> allIndexables) {
-		Map<IPath, List<IJavaElement>> paths = new HashMap<>();
-
-		HashSet<IPath> workspacePaths = new HashSet<IPath>();
-		for (IJavaElement next : allIndexables) {
-			IPath nextPath = JavaIndex.getLocationForElement(next);
-			IPath workspacePath = getWorkspacePathForRoot(next);
-
-			List<IJavaElement> value = paths.get(nextPath);
-
-			if (value == null) {
-				value = new ArrayList<IJavaElement>();
-				paths.put(nextPath, value);
-			} else {
-				if (workspacePath != null) {
-					if (workspacePaths.contains(workspacePath)) {
-						continue;
-					}
-					if (!workspacePath.isEmpty()) {
-						Package.logInfo("Found duplicate workspace path for " + workspacePath.toString()); //$NON-NLS-1$
-					}
-					workspacePaths.add(workspacePath);
-				}
-			}
-
-			value.add(next);
-		}
-
-		return paths;
-	}
-
-	private IPath getWorkspacePathForRoot(IJavaElement next) {
-		IResource resource = next.getResource();
-		if (resource != null) {
-			return resource.getFullPath();
-		}
-		return Path.EMPTY;
-	}
-
 	private Map<IPath, FingerprintTestResult> testFingerprints(Collection<IPath> allIndexables,
 			IProgressMonitor monitor) throws CoreException {
 		SubMonitor subMonitor = SubMonitor.convert(monitor, allIndexables.size());
@@ -557,12 +600,12 @@
 	 */
 	private int rescanArchive(long currentTimeMillis, IPath thePath, List<IJavaElement> elementsMappingOntoLocation,
 			FileFingerprint fingerprint, IProgressMonitor monitor) throws JavaModelException {
+		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
 		if (elementsMappingOntoLocation.isEmpty()) {
 			return 0;
 		}
 
 		IJavaElement element = elementsMappingOntoLocation.get(0);
-		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
 
 		String pathString = thePath.toString();
 		JavaIndex javaIndex = JavaIndex.getIndex(this.nd);
@@ -627,6 +670,10 @@
 			if (resourceFile.isInIndex()) {
 				resourceFile.setFingerprint(fingerprint);
 				allResourcesWithThisPath = javaIndex.findResourcesWithPath(pathString);
+				// Remove this file from the file state cache, since the act of indexing it may have changed its
+				// up-to-date status. Note that it isn't necessarily up-to-date now -- it may have changed again
+				// while we were indexing it.
+				this.fileStateCache.remove(resourceFile.getLocation().getString());
 			}
 		} finally {
 			this.nd.releaseWriteLock();
@@ -678,16 +725,47 @@
 				}
 				subMonitor.setWorkRemaining(zipFile.size());
 
+				// Preallocate memory for the zipfile entries
+				this.nd.acquireWriteLock(subMonitor.split(5));
+				try {
+					resourceFile.allocateZipEntries(zipFile.size());
+				} finally {
+					this.nd.releaseWriteLock();
+				}
 				for (Enumeration<? extends ZipEntry> e = zipFile.entries(); e.hasMoreElements();) {
 					SubMonitor nextEntry = subMonitor.split(1).setWorkRemaining(2);
 					ZipEntry member = e.nextElement();
+					String fileName = member.getName();
+					boolean classFileName = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(fileName);
+					if (member.isDirectory() || !classFileName) {
+						this.nd.acquireWriteLock(subMonitor.split(5));
+						try {
+							if (resourceFile.isInIndex()) {
+								if (DEBUG_INSERTIONS) {
+									Package.logInfo("Inserting non-class file " + fileName + " into " //$NON-NLS-1$//$NON-NLS-2$
+											+ resourceFile.getLocation().getString() + " " + resourceFile.address); //$NON-NLS-1$
+								}
+								resourceFile.addZipEntry(fileName);
+
+								if (fileName.equals(TypeConstants.META_INF_MANIFEST_MF)) {
+									try (InputStream inputStream = zipFile.getInputStream(member)) {
+										char[] chars = getInputStreamAsCharArray(inputStream, -1, UTF_8);
+
+										resourceFile.setManifestContent(chars);
+									}
+								}
+							}
+						} finally {
+							this.nd.releaseWriteLock();
+						}
+					}
 					if (member.isDirectory()) {
+						// Note that non-empty directories are stored implicitly (as the parent directory of a file
+						// or class within the jar). Empty directories are not currently stored in the index.
 						continue;
 					}
 					nextEntry.split(1);
-					String fileName = member.getName();
 
-					boolean classFileName = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(fileName);
 					if (classFileName) {
 						String binaryName = fileName.substring(0,
 								fileName.length() - SuffixConstants.SUFFIX_STRING_class.length());
@@ -712,6 +790,14 @@
 			} catch (ZipException e) {
 				Package.log("The zip file " + jarRoot.getPath() + " was corrupt", e);  //$NON-NLS-1$//$NON-NLS-2$
 				// Indicates a corrupt zip file. Treat this like an empty zip file.
+				this.nd.acquireWriteLock(null);
+				try {
+					if (resourceFile.isInIndex()) {
+						resourceFile.setFlags(NdResourceFile.FLG_CORRUPT_ZIP_FILE);
+					}
+				} finally {
+					this.nd.releaseWriteLock();
+				}
 			} catch (FileNotFoundException e) {
 				throw e;
 			} catch (IOException ioException) {
@@ -724,8 +810,8 @@
 				Package.logInfo("The path " + element.getPath() + " contained no class files"); //$NON-NLS-1$ //$NON-NLS-2$
 			}
 			return classesIndexed;
-		} else if (element instanceof IClassFile) {
-			IClassFile classFile = (IClassFile)element;
+		} else if (element instanceof IOrdinaryClassFile) {
+			IOrdinaryClassFile classFile = (IOrdinaryClassFile) element;
 
 			SubMonitor iterationMonitor = subMonitor.split(1);
 			BinaryTypeDescriptor descriptor = BinaryTypeFactory.createDescriptor(classFile);
@@ -762,6 +848,7 @@
 							+ resourceFile.getLocation().getString() + " " + resourceFile.address); //$NON-NLS-1$
 				}
 				converter.addType(binaryType, fieldDescriptor, subMonitor.split(45));
+				resourceFile.setJdkLevel(binaryType.getVersion());
 				indexed = true;
 			}
 		} finally {
@@ -800,140 +887,6 @@
 		return indexed;
 	}
 
-	private List<IJavaElement> getAllIndexableObjectsInWorkspace(IProgressMonitor monitor) throws CoreException {
-		SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
-		List<IJavaElement> allIndexables = new ArrayList<>();
-		IProject[] projects = this.root.getProjects();
-
-		List<IProject> projectsToScan = new ArrayList<>();
-
-		for (IProject next : projects) {
-			if (next.isOpen()) {
-				projectsToScan.add(next);
-			}
-		}
-
-		Set<IPath> scannedPaths = new HashSet<>();
-		Set<IResource> resourcesToScan = new HashSet<>();
-		SubMonitor projectLoopMonitor = subMonitor.split(1).setWorkRemaining(projectsToScan.size());
-		for (IProject project : projectsToScan) {
-			SubMonitor iterationMonitor = projectLoopMonitor.split(1);
-			try {
-				if (project.isOpen() && project.isNatureEnabled(JavaCore.NATURE_ID)) {
-					IJavaProject javaProject = JavaCore.create(project);
-
-					IClasspathEntry[] entries = javaProject.getRawClasspath();
-
-					if (EXPERIMENTAL_INDEX_OUTPUT_FOLDERS) {
-						IPath defaultOutputLocation = javaProject.getOutputLocation();
-						for (IClasspathEntry next : entries) {
-							IPath nextOutputLocation = next.getOutputLocation();
-	
-							if (nextOutputLocation == null) {
-								nextOutputLocation = defaultOutputLocation;
-							}
-	
-							IResource resource = this.root.findMember(nextOutputLocation);
-							if (resource != null) {
-								resourcesToScan.add(resource);
-							}
-						}
-					}
-
-					IPackageFragmentRoot[] projectRoots = javaProject.getAllPackageFragmentRoots();
-					SubMonitor rootLoopMonitor = iterationMonitor.setWorkRemaining(projectRoots.length);
-					for (IPackageFragmentRoot nextRoot : projectRoots) {
-						rootLoopMonitor.split(1);
-						if (!nextRoot.exists()) {
-							continue;
-						}
-						IPath filesystemPath = JavaIndex.getLocationForElement(nextRoot);
-						if (scannedPaths.contains(filesystemPath)) {
-							continue;
-						}
-						scannedPaths.add(filesystemPath);
-						if (nextRoot.getKind() == IPackageFragmentRoot.K_BINARY) {
-							if (nextRoot.isArchive()) {
-								allIndexables.add(nextRoot);
-							} else {
-								collectAllClassFiles(allIndexables, nextRoot);
-							}
-						} else {
-							collectAllClassFiles(allIndexables, nextRoot);
-						}
-					}
-				}
-			} catch (CoreException e) {
-				Package.log(e);
-			}
-		}
-
-		collectAllClassFiles(allIndexables, resourcesToScan, subMonitor.split(1));
-		return allIndexables;
-	}
-
-	private void collectAllClassFiles(List<? super IClassFile> result, Collection<? extends IResource> toScan,
-			IProgressMonitor monitor) {
-		SubMonitor subMonitor = SubMonitor.convert(monitor);
-
-		ArrayDeque<IResource> resources = new ArrayDeque<>();
-		resources.addAll(toScan);
-
-		while (!resources.isEmpty()) {
-			subMonitor.setWorkRemaining(Math.max(resources.size(), 3000)).split(1);
-			IResource next = resources.removeFirst();
-
-			if (next instanceof IContainer) {
-				IContainer container = (IContainer)next;
-
-				try {
-					for (IResource nextChild : container.members()) {
-						resources.addLast(nextChild);
-					}
-				} catch (CoreException e) {
-					// If an error occurs in one resource, skip it and move on to the next
-					Package.log(e);
-				}
-			} else if (next instanceof IFile) {
-				IFile file = (IFile) next;
-
-				String extension = file.getFileExtension();
-				if (Objects.equals(extension, "class")) { //$NON-NLS-1$
-					IJavaElement element = JavaCore.create(file);
-
-					if (element instanceof IClassFile) {
-						result.add((IClassFile)element);
-					}
-				}
-			}
-		}
-	}
-
-	private void collectAllClassFiles(List<? super IClassFile> result, IParent nextRoot) throws CoreException {
-		for (IJavaElement child : nextRoot.getChildren()) {
-			try {
-				int type = child.getElementType();
-				if (!child.exists()) {
-					continue;
-				}
-				if (type == IJavaElement.COMPILATION_UNIT) {
-					continue;
-				}
-
-				if (type == IJavaElement.CLASS_FILE) {
-					result.add((IClassFile)child);
-				} else if (child instanceof IParent) {
-					IParent parent = (IParent) child;
-
-					collectAllClassFiles(result, parent);
-				}
-			} catch (CoreException e) {
-				// Log exceptions, then continue with the next child
-				Package.log(e);
-			}
-		}
-	}
-
 	/**
 	 * Given a list of fragment roots, returns the subset of roots that have changed since the last time they were
 	 * indexed.
@@ -987,6 +940,7 @@
 				this.nd.releaseWriteLock();
 			}
 		}
+
 		return result;
 	}
 
@@ -997,10 +951,11 @@
 		this.rescanJob.setJobGroup(this.group);
 		this.rebuildIndexJob.setSystem(true);
 		this.rebuildIndexJob.setJobGroup(this.group);
+		this.fileStateCache = FileStateCache.getCache(toPopulate);
 	}
 
 	public void rescanAll() {
-		if (DEBUG) {
+		if (DEBUG_SCHEDULING) {
 			Package.logInfo("Scheduling rescanAll now"); //$NON-NLS-1$
 		}
 		synchronized (this.automaticIndexingMutex) {
@@ -1011,6 +966,9 @@
 				return;
 			}
 		}
+		if (!JavaIndex.isEnabled()) {
+			return;
+		}
 		this.rescanJob.schedule();
 	}
 
@@ -1068,6 +1026,9 @@
 	}
 
 	public void waitForIndex(int waitingPolicy, IProgressMonitor monitor) {
+		if (!JavaIndex.isEnabled()) {
+			return;
+		}
 		switch (waitingPolicy) {
 			case IJob.ForceImmediate: {
 				break;
@@ -1088,16 +1049,57 @@
 	public void rebuildIndex(IProgressMonitor monitor) throws CoreException {
 		SubMonitor subMonitor = SubMonitor.convert(monitor, 100);
 
+		this.rescanJob.cancel();
+		try {
+			this.rescanJob.join(0, subMonitor.split(1));
+		} catch (InterruptedException e) {
+			// Nothing to do.
+		}
 		this.nd.acquireWriteLock(subMonitor.split(1));
 		try {
 			this.nd.clear(subMonitor.split(2));
+			this.nd.getDB().flush();
 		} finally {
 			this.nd.releaseWriteLock();
 		}
-		rescan(subMonitor.split(98));
+		if (!JavaIndex.isEnabled()) {
+			return;
+		}
+		rescan(subMonitor.split(97));
 	}
 
 	public void requestRebuildIndex() {
 		this.rebuildIndexJob.schedule();
 	}
+
+	/**
+	 * Dirties the given filesystem location. This must point to a single file (not a folder) that needs to be
+	 * rescanned. The file may have been added, removed, or changed.
+	 * 
+	 * @param location an absolute filesystem location
+	 */
+	public void makeDirty(IPath location) {
+		this.fileStateCache.remove(location.toString());
+		rescanAll();
+	}
+
+	/**
+	 * Schedules a rescan of the given project.
+	 */
+	public void makeDirty(IProject project) {
+		this.fileStateCache.clear();
+		rescanAll();
+	}
+
+	/**
+	 * Schedules a rescan of the given path (which may be either a workspace path or an absolute path on the local
+	 * filesystem). This may point to either a single file or a folder that needs to be rescanned. Any resource that
+	 * has this path as a prefix will be rescanned.
+	 * 
+	 * @param pathToRescan
+	 */
+	public void makeWorkspacePathDirty(IPath pathToRescan) {
+		this.fileStateCache.clear();
+		rescanAll();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.java
new file mode 100644
index 0000000..105835c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/indexer/WorkspaceSnapshot.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.indexer;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.SubMonitor;
+import org.aspectj.org.eclipse.jdt.core.IClassFile;
+import org.aspectj.org.eclipse.jdt.core.IClasspathEntry;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.IParent;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
+
+/**
+ * Represents a snapshot of all the indexable objects in the workspace at a given moment in time.
+ */
+public final class WorkspaceSnapshot {
+	private Map<IPath, List<IJavaElement>> allIndexables;
+
+	/**
+	 * Enable this to index the content of output folders, in cases where that content exists and is up-to-date. This is
+	 * much faster than indexing source files directly.
+	 */
+	public static boolean EXPERIMENTAL_INDEX_OUTPUT_FOLDERS;
+
+	private WorkspaceSnapshot(Map<IPath, List<IJavaElement>> allIndexables) {
+		this.allIndexables = allIndexables;
+	}
+
+	public Map<IPath, List<IJavaElement>> getAllIndexables() {
+		return this.allIndexables;
+	}
+
+	public Set<IPath> allLocations() {
+		return this.allIndexables.keySet();
+	}
+
+	public List<IJavaElement> get(IPath next) {
+		List<IJavaElement> result = this.allIndexables.get(next);
+		if (result == null) {
+			return Collections.emptyList();
+		}
+		return result;
+	}
+
+	public static WorkspaceSnapshot create(IWorkspaceRoot root, IProgressMonitor monitor) throws CoreException {
+		SubMonitor subMonitor = SubMonitor.convert(monitor);
+
+		List<IJavaElement> unfilteredIndexables = getAllIndexableObjectsInWorkspace(root, subMonitor.split(3));
+
+		// Remove all duplicate indexables (jars which are referenced by more than one project)
+		Map<IPath, List<IJavaElement>> allIndexables = removeDuplicatePaths(unfilteredIndexables);
+
+		return new WorkspaceSnapshot(allIndexables);
+	}
+
+	private static IPath getWorkspacePathForRoot(IJavaElement next) {
+		IResource resource = next.getResource();
+		if (resource != null) {
+			return resource.getFullPath();
+		}
+		return Path.EMPTY;
+	}
+
+	private static Map<IPath, List<IJavaElement>> removeDuplicatePaths(List<IJavaElement> allIndexables) {
+		Map<IPath, List<IJavaElement>> paths = new HashMap<>();
+
+		HashSet<IPath> workspacePaths = new HashSet<IPath>();
+		for (IJavaElement next : allIndexables) {
+			IPath nextPath = JavaIndex.getLocationForElement(next);
+			IPath workspacePath = getWorkspacePathForRoot(next);
+
+			List<IJavaElement> value = paths.get(nextPath);
+
+			if (value == null) {
+				value = new ArrayList<IJavaElement>();
+				paths.put(nextPath, value);
+			} else {
+				if (workspacePath != null) {
+					if (workspacePaths.contains(workspacePath)) {
+						continue;
+					}
+					if (!workspacePath.isEmpty()) {
+						Package.logInfo("Found duplicate workspace path for " + workspacePath.toString()); //$NON-NLS-1$
+					}
+					workspacePaths.add(workspacePath);
+				}
+			}
+
+			value.add(next);
+		}
+
+		return paths;
+	}
+
+	private static List<IJavaElement> getAllIndexableObjectsInWorkspace(IWorkspaceRoot root, IProgressMonitor monitor)
+			throws CoreException {
+		SubMonitor subMonitor = SubMonitor.convert(monitor, 2);
+		List<IJavaElement> allIndexables = new ArrayList<>();
+		IProject[] projects = root.getProjects();
+
+		List<IProject> projectsToScan = new ArrayList<>();
+
+		for (IProject next : projects) {
+			if (next.isOpen()) {
+				projectsToScan.add(next);
+			}
+		}
+
+		Set<IPath> scannedPaths = new HashSet<>();
+		Set<IResource> resourcesToScan = new HashSet<>();
+		SubMonitor projectLoopMonitor = subMonitor.split(1).setWorkRemaining(projectsToScan.size());
+		for (IProject project : projectsToScan) {
+			SubMonitor iterationMonitor = projectLoopMonitor.split(1);
+			try {
+				if (project.isOpen() && project.isNatureEnabled(JavaCore.NATURE_ID)) {
+					IJavaProject javaProject = JavaCore.create(project);
+
+					IClasspathEntry[] entries = javaProject.getRawClasspath();
+
+					if (EXPERIMENTAL_INDEX_OUTPUT_FOLDERS) {
+						IPath defaultOutputLocation = javaProject.getOutputLocation();
+						for (IClasspathEntry next : entries) {
+							IPath nextOutputLocation = next.getOutputLocation();
+	
+							if (nextOutputLocation == null) {
+								nextOutputLocation = defaultOutputLocation;
+							}
+	
+							IResource resource = root.findMember(nextOutputLocation);
+							if (resource != null) {
+								resourcesToScan.add(resource);
+							}
+						}
+					}
+
+					IPackageFragmentRoot[] projectRoots = javaProject.getAllPackageFragmentRoots();
+					SubMonitor rootLoopMonitor = iterationMonitor.setWorkRemaining(projectRoots.length);
+					for (IPackageFragmentRoot nextRoot : projectRoots) {
+						rootLoopMonitor.split(1);
+						if (!nextRoot.exists()) {
+							continue;
+						}
+						IPath filesystemPath = JavaIndex.getLocationForElement(nextRoot);
+						if (scannedPaths.contains(filesystemPath)) {
+							continue;
+						}
+						scannedPaths.add(filesystemPath);
+						if (nextRoot.getKind() == IPackageFragmentRoot.K_BINARY) {
+							if (nextRoot.isArchive()) {
+								allIndexables.add(nextRoot);
+							} else {
+								collectAllClassFiles(root, allIndexables, nextRoot);
+							}
+						} else {
+							collectAllClassFiles(root, allIndexables, nextRoot);
+						}
+					}
+				}
+			} catch (CoreException e) {
+				Package.log(e);
+			}
+		}
+
+		collectAllClassFiles(root, allIndexables, resourcesToScan, subMonitor.split(1));
+		return allIndexables;
+	}
+
+	private static void collectAllClassFiles(IWorkspaceRoot root, List<? super IClassFile> result, 
+			Collection<? extends IResource> toScan, IProgressMonitor monitor) {
+		SubMonitor subMonitor = SubMonitor.convert(monitor);
+
+		ArrayDeque<IResource> resources = new ArrayDeque<>();
+		resources.addAll(toScan);
+
+		while (!resources.isEmpty()) {
+			subMonitor.setWorkRemaining(Math.max(resources.size(), 3000)).split(1);
+			IResource next = resources.removeFirst();
+
+			if (next instanceof IContainer) {
+				IContainer container = (IContainer)next;
+
+				try {
+					for (IResource nextChild : container.members()) {
+						resources.addLast(nextChild);
+					}
+				} catch (CoreException e) {
+					// If an error occurs in one resource, skip it and move on to the next
+					Package.log(e);
+				}
+			} else if (next instanceof IFile) {
+				IFile file = (IFile) next;
+
+				String extension = file.getFileExtension();
+				if (Objects.equals(extension, "class")) { //$NON-NLS-1$
+					IJavaElement element = JavaCore.create(file);
+
+					if (element instanceof IClassFile) {
+						result.add((IClassFile)element);
+					}
+				}
+			}
+		}
+	}
+
+	private static void collectAllClassFiles(IWorkspaceRoot root, List<? super IClassFile> result,
+			IParent nextRoot) throws CoreException {
+		for (IJavaElement child : nextRoot.getChildren()) {
+			try {
+				int type = child.getElementType();
+				if (type == IJavaElement.COMPILATION_UNIT) {
+					continue;
+				}
+				if (!child.exists()) {
+					continue;
+				}
+
+				if (type == IJavaElement.CLASS_FILE) {
+					result.add((IClassFile)child);
+				} else if (child instanceof IParent) {
+					IParent parent = (IParent) child;
+
+					collectAllClassFiles(root, result, parent);
+				}
+			} catch (CoreException e) {
+				// Log exceptions, then continue with the next child
+				Package.log(e);
+			}
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.java
index a573690..37cdf08 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaIndex.java
@@ -14,6 +14,8 @@
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
@@ -21,6 +23,7 @@
 import org.eclipse.core.runtime.preferences.IPreferencesService;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNodeTypeRegistry;
@@ -30,20 +33,22 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex.IResultRank;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex.SearchCriteria;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.FileStateCache;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
 
 public class JavaIndex {
 	// Version constants
-	static final int CURRENT_VERSION = Nd.version(1, 38);
-	static final int MAX_SUPPORTED_VERSION = Nd.version(1, 38);
-	static final int MIN_SUPPORTED_VERSION = Nd.version(1, 38);
+	static final int CURRENT_VERSION = Nd.version(1, 49);
+	static final int MAX_SUPPORTED_VERSION = Nd.version(1, 49);
+	static final int MIN_SUPPORTED_VERSION = Nd.version(1, 49);
+
+	public static final String ENABLE_NEW_JAVA_INDEX = "enableNewJavaIndex"; //$NON-NLS-1$
+	public static final boolean ENABLE_NEW_JAVA_INDEX_DEFAULT = false;
 
 	// Fields for the search header
 	public static final FieldSearchIndex<NdResourceFile> FILES;
 	public static final FieldSearchIndex<NdTypeId> SIMPLE_INDEX;
 	public static final FieldSearchIndex<NdTypeId> TYPES;
-	public static final FieldSearchIndex<NdMethodId> METHODS;
-
 	public static final StructDef<JavaIndex> type;
 
 	static {
@@ -51,7 +56,6 @@
 		FILES = FieldSearchIndex.create(type, NdResourceFile.FILENAME);
 		SIMPLE_INDEX = FieldSearchIndex.create(type, NdTypeId.SIMPLE_NAME);
 		TYPES = FieldSearchIndex.create(type, NdTypeId.FIELD_DESCRIPTOR);
-		METHODS = FieldSearchIndex.create(type, NdMethodId.METHOD_NAME);
 		type.done();
 
 		// This struct needs to fit within the first database chunk.
@@ -96,28 +100,33 @@
 
 	/**
 	 * Returns true iff the given resource file is up-to-date with the filesystem. Returns false
-	 * if the argument is out-of-date with the file system or null.
+	 * if the argument is null or there is a possibility it being out-of-date with the file system.
 	 * 
 	 * @param file the index file to look up or null
 	 * @throws CoreException 
 	 */
 	public boolean isUpToDate(NdResourceFile file) throws CoreException {
 		if (file != null && file.isDoneIndexing()) {
-			// TODO(sxenos): It would be much more efficient to mark files as being in one
-			// of three states: unknown, dirty, or clean. Files would start in the unknown
-			// state and move into the dirty state when we see them in a java model change
-			// event. They would move into the clean state after passing this sort of
-			// fingerprint test... but by caching the state of all tested files (in memory),
-			// it would eliminate the vast majority of these (slow) fingerprint tests.
-			
-			Path locationPath = new Path(file.getLocation().getString());
-			if (file.getFingerprint().test(locationPath, null).matches()) {
-				return true;
+			String location = file.getLocation().getString();
+
+			FileStateCache cache = FileStateCache.getCache(getNd());
+			Boolean cachedResult = cache.isUpToDate(location);
+			if (cachedResult != null) {
+				return cachedResult;
 			}
+
+			Path locationPath = new Path(location);
+			boolean result = file.getFingerprint().test(locationPath, null).matches();
+			cache.put(location, result);
+			return result;
 		}
 		return false;
 	}
 
+	public void dirty(String location) {
+		FileStateCache.getCache(getNd()).clear();
+	}
+
 	public List<NdResourceFile> findResourcesWithPath(String thePath) {
 		return FILES.findAll(this.nd, this.address, FieldSearchIndex.SearchCriteria.create(thePath.toCharArray()));
 	}
@@ -131,6 +140,16 @@
 		return TYPES.findBest(this.nd, this.address, searchCriteria, this.anyResult);
 	}
 
+	public List<NdTypeId> findTypesBySimpleName(char[] query) {
+		SearchCriteria searchCriteria = SearchCriteria.create(query).prefix(true);
+		return SIMPLE_INDEX.findAll(this.nd, this.address, searchCriteria);
+	}
+
+	public List<NdTypeId> findTypesBySimpleName(char[] query, int count) {
+		SearchCriteria searchCriteria = SearchCriteria.create(query).prefix(true);
+		return SIMPLE_INDEX.findAll(this.nd, this.address, searchCriteria, count);
+	}
+
 	public boolean visitFieldDescriptorsStartingWith(char[] fieldDescriptorPrefix, FieldSearchIndex.Visitor<NdTypeId> visitor) {
 		SearchCriteria searchCriteria = SearchCriteria.create(fieldDescriptorPrefix).prefix(true);
 		return TYPES.visitAll(this.nd, this.address, searchCriteria, visitor);
@@ -166,30 +185,36 @@
 		return this.nd;
 	}
 
-	public NdMethodId findMethodId(char[] methodId) {
-		SearchCriteria searchCriteria = SearchCriteria.create(methodId);
+	/**
+	 * Converts a JDT-style path (which may be a resource-relative path or absolute filesystem location) into a location
+	 * (which is unconditionally a filesystem location) or null if none.
+	 * <p>
+	 * The logic used in {@link #getLocationForPath(IPath)}, {@link #getLocationForElement(IJavaElement)}, and
+	 * {@link JavaModelManager#getLocalFile(IPath)} should be equivalent.
+	 */
+	public static IPath getLocationForPath(IPath path) {
+		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
 
-		return METHODS.findBest(this.nd, this.address, searchCriteria, this.anyResult);
-	}
+		IResource resource = root.findMember(path);
 
-	public NdMethodId createMethodId(char[] methodId) {
-		NdMethodId existingMethod = findMethodId(methodId);
-
-		if (existingMethod != null) {
-			return existingMethod;
+		if (resource != null) {
+			return resource.getLocation();
 		}
 
-		return new NdMethodId(this.nd, methodId);
+		return path;
 	}
 
 	/**
-	 * Returns the absolute filesystem location of the given element or null if none
+	 * Returns the absolute filesystem location of the given element or the empty path if none
+	 * <p>
+	 * The logic used in {@link #getLocationForPath(IPath)}, {@link #getLocationForElement(IJavaElement)}, and
+	 * {@link JavaModelManager#getLocalFile(IPath)} should be equivalent.
 	 */
 	public static IPath getLocationForElement(IJavaElement next) {
 		IResource resource = next.getResource();
 
 		if (resource != null) {
-			return resource.getLocation() == null ? new Path("") : resource.getLocation(); //$NON-NLS-1$
+			return resource.getLocation() == null ? Path.EMPTY : resource.getLocation();
 		}
 
 		return next.getPath();
@@ -200,7 +225,7 @@
 		if (preferenceService == null) {
 			return true;
 		}
-		return !preferenceService.getBoolean(JavaCore.PLUGIN_ID, "disableNewJavaIndex", false, //$NON-NLS-1$
+		return preferenceService.getBoolean(JavaCore.PLUGIN_ID, ENABLE_NEW_JAVA_INDEX, ENABLE_NEW_JAVA_INDEX_DEFAULT,
 				null);
 	}
 
@@ -248,13 +273,7 @@
 
 	static NdNodeTypeRegistry<NdNode> createTypeRegistry() {
 		NdNodeTypeRegistry<NdNode> registry = new NdNodeTypeRegistry<>();
-		registry.register(0x0001, NdAnnotation.type.getFactory());
-		registry.register(0x0004, NdAnnotationInConstant.type.getFactory());
-		registry.register(0x0008, NdAnnotationInMethod.type.getFactory());
-		registry.register(0x000c, NdAnnotationInMethodParameter.type.getFactory());
-		registry.register(0x0010, NdAnnotationInType.type.getFactory());
-		registry.register(0x0014, NdAnnotationInVariable.type.getFactory());
-		registry.register(0x0020, NdAnnotationValuePair.type.getFactory());
+
 		registry.register(0x0028, NdBinding.type.getFactory());
 		registry.register(0x0030, NdComplexTypeSignature.type.getFactory());
 		registry.register(0x0038, NdConstant.type.getFactory());
@@ -272,20 +291,11 @@
 		registry.register(0x00F0, NdConstantShort.type.getFactory());
 		registry.register(0x0100, NdConstantString.type.getFactory());
 		registry.register(0x0110, NdMethod.type.getFactory());
-		registry.register(0x0120, NdMethodException.type.getFactory());
-		registry.register(0x0130, NdMethodId.type.getFactory());
-		registry.register(0x0140, NdMethodParameter.type.getFactory());
+		registry.register(0x0118, NdMethodAnnotationData.type.getFactory());
 		registry.register(0x0150, NdResourceFile.type.getFactory());
-		registry.register(0x0160, NdTreeNode.type.getFactory());
 		registry.register(0x0170, NdType.type.getFactory());
-		registry.register(0x0180, NdTypeAnnotation.type.getFactory());
-		registry.register(0x0184, NdTypeAnnotationInMethod.type.getFactory());
-		registry.register(0x0188, NdTypeAnnotationInType.type.getFactory());
-		registry.register(0x018c, NdTypeAnnotationInVariable.type.getFactory());
 		registry.register(0x0190, NdTypeArgument.type.getFactory());
-		registry.register(0x0194, NdTypeBound.type.getFactory());
 		registry.register(0x01A0, NdTypeInterface.type.getFactory());
-		registry.register(0x01B0, NdTypeParameter.type.getFactory());
 		registry.register(0x01C0, NdTypeSignature.type.getFactory());
 		registry.register(0x01D0, NdTypeId.type.getFactory());
 		registry.register(0x01E0, NdTypeInterface.type.getFactory());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.java
index dd0b02e..9c773eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/JavaNames.java
@@ -151,12 +151,12 @@
 	}
 
 	/**
-	 * Returns a method id (suitable for constructing a {@link NdMethodId}) given a field descriptor for its parent type
+	 * Returns a method id given a field descriptor for its parent type
 	 * and a combined method selector and method descriptor for the method
 	 *
 	 * @param parentTypeBinaryName a field descriptor of the sort returned by the other *ToFieldDescriptor methods.
 	 * @param methodSelectorAndDescriptor a method selector and descriptor of the form returned by {@link IBinaryType#getEnclosingMethod()}
-	 * @return a method id suitable for looking up a {@link NdMethodId}
+	 * @return a method id
 	 */
 	public static char[] getMethodId(char[] parentTypeBinaryName, char[] methodSelectorAndDescriptor) {
 		return CharArrayUtils.concat(FIELD_DESCRIPTOR_PREFIX, parentTypeBinaryName, METHOD_ID_SEPARATOR,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.java
index 237d436..ceef6f9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotation.java
@@ -13,22 +13,22 @@
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
-public class NdAnnotation extends NdNode {
+public class NdAnnotation extends NdStruct {
 	public static final FieldManyToOne<NdTypeSignature> ANNOTATION_TYPE;
-	public static final FieldOneToMany<NdAnnotationValuePair> ELEMENT_VALUE_PAIRS;
+	public static final FieldList<NdAnnotationValuePair> ELEMENT_VALUE_PAIRS;
 
 	@SuppressWarnings("hiding")
 	public static final StructDef<NdAnnotation> type;
 
 	static {
-		type = StructDef.create(NdAnnotation.class, NdNode.type);
+		type = StructDef.create(NdAnnotation.class, NdStruct.type);
 		ANNOTATION_TYPE = FieldManyToOne.create(type, NdTypeSignature.ANNOTATIONS_OF_THIS_TYPE);
-		ELEMENT_VALUE_PAIRS = FieldOneToMany.create(type, NdAnnotationValuePair.APPLIES_TO);
+		ELEMENT_VALUE_PAIRS = FieldList.create(type, NdAnnotationValuePair.type);
 		type.done();
 	}
 
@@ -36,10 +36,6 @@
 		super(nd, address);
 	}
 
-	public NdAnnotation(Nd nd) {
-		super(nd);
-	}
-
 	public NdTypeSignature getType() {
 		return ANNOTATION_TYPE.get(getNd(), this.address);
 	}
@@ -51,4 +47,14 @@
 	public List<NdAnnotationValuePair> getElementValuePairs() {
 		return ELEMENT_VALUE_PAIRS.asList(getNd(), this.address);
 	}
+
+	public NdAnnotationValuePair createValuePair(char[] name) {
+		NdAnnotationValuePair result = ELEMENT_VALUE_PAIRS.append(getNd(), getAddress());
+		result.setName(name);
+		return result;
+	}
+
+	public void allocateValuePairs(int length) {
+		ELEMENT_VALUE_PAIRS.allocate(getNd(), getAddress(), length);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.java
deleted file mode 100644
index 308f368..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInConstant.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdAnnotationInConstant extends NdAnnotation {
-	public static final FieldOneToOne<NdConstantAnnotation> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdAnnotationInConstant> type;
-
-	static {
-		type = StructDef.create(NdAnnotationInConstant.class, NdAnnotation.type);
-		OWNER = FieldOneToOne.createOwner(type, NdConstantAnnotation.class, NdConstantAnnotation.VALUE);
-		type.done();
-	}
-
-	public NdAnnotationInConstant(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdAnnotationInConstant(Nd nd) {
-		super(nd);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.java
deleted file mode 100644
index 877d046..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethod.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdAnnotationInMethod extends NdAnnotation {
-	public static final FieldManyToOne<NdMethod> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdAnnotationInMethod> type;
-
-	static {
-		type = StructDef.create(NdAnnotationInMethod.class, NdAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdMethod.ANNOTATIONS);
-		type.done();
-	}
-
-	public NdAnnotationInMethod(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdAnnotationInMethod(Nd nd, NdMethod owner) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, owner);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.java
deleted file mode 100644
index 8339929..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInMethodParameter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdAnnotationInMethodParameter extends NdAnnotation {
-	public static final FieldManyToOne<NdMethodParameter> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdAnnotationInMethodParameter> type;
-
-	static {
-		type = StructDef.create(NdAnnotationInMethodParameter.class, NdAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdMethodParameter.ANNOTATIONS);
-		type.done();
-	}
-
-	public NdAnnotationInMethodParameter(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdAnnotationInMethodParameter(Nd nd, NdMethodParameter owner) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, owner);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.java
deleted file mode 100644
index fd942c8..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdAnnotationInType extends NdAnnotation {
-	public static final FieldManyToOne<NdType> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdAnnotationInType> type;
-
-	static {
-		type = StructDef.create(NdAnnotationInType.class, NdAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdType.ANNOTATIONS);
-		type.done();
-	}
-
-	public NdAnnotationInType(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdAnnotationInType(Nd nd, NdType owner) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, owner);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.java
deleted file mode 100644
index 8adc693..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationInVariable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdAnnotationInVariable extends NdAnnotation {
-	public static final FieldManyToOne<NdVariable> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdAnnotationInVariable> type;
-
-	static {
-		type = StructDef.create(NdAnnotationInVariable.class, NdAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdVariable.ANNOTATIONS);
-		type.done();
-	}
-
-	public NdAnnotationInVariable(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdAnnotationInVariable(Nd nd, NdVariable owner) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, owner);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.java
index dd1b6d7..3910c01 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdAnnotationValuePair.java
@@ -11,15 +11,13 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
-public class NdAnnotationValuePair extends NdNode {
-	public static final FieldManyToOne<NdAnnotation> APPLIES_TO;
+public class NdAnnotationValuePair extends NdStruct {
 	public static final FieldString NAME;
 	public static final FieldOneToOne<NdConstant> VALUE;
 
@@ -27,10 +25,9 @@
 	public static final StructDef<NdAnnotationValuePair> type;
 
 	static {
-		type = StructDef.create(NdAnnotationValuePair.class, NdNode.type);
-		APPLIES_TO = FieldManyToOne.createOwner(type, NdAnnotation.ELEMENT_VALUE_PAIRS);
+		type = StructDef.create(NdAnnotationValuePair.class, NdStruct.type);
 		NAME = type.addString();
-		VALUE = FieldOneToOne.create(type, NdConstant.class, NdConstant.PARENT_ANNOTATION_VALUE);
+		VALUE = FieldOneToOne.create(type, NdConstant.type, NdConstant.PARENT_ANNOTATION_VALUE);
 		type.done();
 	}
 
@@ -38,22 +35,11 @@
 		super(nd, address);
 	}
 
-	public NdAnnotationValuePair(NdAnnotation annotation, char[] name) {
-		super(annotation.getNd());
-		Nd nd = annotation.getNd();
-		APPLIES_TO.put(nd, this.address, annotation);
-		NAME.put(nd, this.address, name);
-	}
-
-	public NdAnnotation getAnnotation() {
-		return APPLIES_TO.get(getNd(), this.address);
-	}
-
 	public IString getName() {
 		return NAME.get(getNd(), this.address);
 	}
 
-	public void setName(String name) {
+	public void setName(char[] name) {
 		NAME.put(getNd(), this.address, name);
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.java
index 1d9c52e..bcab113 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdBinding.java
@@ -17,8 +17,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldInt;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
 
@@ -27,9 +26,7 @@
  */
 public abstract class NdBinding extends NdNode implements IAdaptable {
 	public static final FieldInt MODIFIERS;
-	public static final FieldOneToMany<NdTypeParameter> TYPE_PARAMETERS;
-	public static final FieldManyToOne<NdResourceFile> FILE;
-	public static final FieldOneToMany<NdVariable> VARIABLES;
+	public static final FieldList<NdTypeParameter> TYPE_PARAMETERS;
 
 	@SuppressWarnings("hiding")
 	public static final StructDef<NdBinding> type;
@@ -37,9 +34,7 @@
 	static {
 		type = StructDef.create(NdBinding.class, NdNode.type);
 		MODIFIERS = type.addInt();
-		TYPE_PARAMETERS = FieldOneToMany.create(type, NdTypeParameter.PARENT);
-		FILE = FieldManyToOne.createOwner(type, NdResourceFile.ALL_NODES);
-		VARIABLES = FieldOneToMany.create(type, NdVariable.PARENT);
+		TYPE_PARAMETERS = FieldList.create(type, NdTypeParameter.type);
 		type.done();
 	}
 
@@ -47,14 +42,8 @@
 		super(nd, address);
 	}
 
-	public NdBinding(Nd nd, NdResourceFile resource) {
+	public NdBinding(Nd nd) {
 		super(nd);
-
-		FILE.put(nd, this.address, resource);
-	}
-
-	public List<NdVariable> getVariables() {
-		return VARIABLES.asList(getNd(), this.address);
 	}
 
 	/**
@@ -88,14 +77,6 @@
 		return getNodeType();
 	}
 
-	public void setFile(NdResourceFile file) {
-		FILE.put(getNd(), this.address, file);
-	}
-
-	public NdResourceFile getFile() {
-		return FILE.get(getNd(), this.address);
-	}
-
 	public char[][] getTypeParameterSignatures() {
 		List<NdTypeParameter> parameters = getTypeParameters();
 		char[][] result = new char[parameters.size()][];
@@ -119,4 +100,12 @@
 	public List<NdTypeParameter> getTypeParameters() {
 		return TYPE_PARAMETERS.asList(getNd(), this.address);
 	}
+
+	public NdTypeParameter createTypeParameter() {
+		return TYPE_PARAMETERS.append(getNd(), getAddress());
+	}
+
+	public void allocateTypeParameters(int elements) {
+		TYPE_PARAMETERS.allocate(getNd(), getAddress(), elements);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.java
index 490e1ec..d0ed695 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdComplexTypeSignature.java
@@ -16,7 +16,6 @@
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
@@ -107,7 +106,9 @@
 			long size = TYPE_ARGUMENTS.size(getNd(), this.address);
 
 			if (size != 1) {
-				throw new IndexException("Array types should have exactly one argument"); //$NON-NLS-1$
+				throw getNd().describeProblem()
+					.addProblemAddress(TYPE_ARGUMENTS, this.address)
+					.build("Array types should have exactly one argument"); //$NON-NLS-1$
 			}
 
 			return TYPE_ARGUMENTS.get(getNd(), this.address, 0).getType();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.java
index 8a3e832..c693178 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstant.java
@@ -33,10 +33,10 @@
 	static {
 		type = StructDef.createAbstract(NdConstant.class, NdNode.type);
 		PARENT_ARRAY = FieldManyToOne.createOwner(type, NdConstantArray.ELEMENTS);
-		PARENT_ANNOTATION_VALUE = FieldOneToOne.createOwner(type, NdAnnotationValuePair.class,
+		PARENT_ANNOTATION_VALUE = FieldOneToOne.createOwner(type, NdAnnotationValuePair.type,
 				NdAnnotationValuePair.VALUE);
-		PARENT_VARIABLE = FieldOneToOne.createOwner(type, NdVariable.class, NdVariable.CONSTANT);
-		PARENT_METHOD = FieldOneToOne.createOwner(type, NdMethod.class, NdMethod.DEFAULT_VALUE);
+		PARENT_VARIABLE = FieldOneToOne.createOwner(type, NdVariable.type, NdVariable.CONSTANT);
+		PARENT_METHOD = FieldOneToOne.createOwner(type, NdMethod.type, NdMethod.DEFAULT_VALUE);
 		type.done();
 	}
 
@@ -87,6 +87,7 @@
 	 */
 	public abstract Constant getConstant();
 
+	@Override
 	public String toString() {
 		try {
 			return getConstant().toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.java
index 028c852..986d20a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdConstantAnnotation.java
@@ -12,18 +12,18 @@
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.Field;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
 public final class NdConstantAnnotation extends NdConstant {
-	public static final FieldOneToOne<NdAnnotationInConstant> VALUE;
+	public static final Field<NdAnnotation> VALUE;
 
 	@SuppressWarnings("hiding")
 	public static StructDef<NdConstantAnnotation> type;
 
 	static {
 		type = StructDef.create(NdConstantAnnotation.class, NdConstant.type);
-		VALUE = FieldOneToOne.create(type, NdAnnotationInConstant.class, NdAnnotationInConstant.OWNER);
+		VALUE = Field.create(type, NdAnnotation.type);
 		type.done();
 	}
 
@@ -31,20 +31,10 @@
 		super(nd, address);
 	}
 
-	protected NdConstantAnnotation(Nd nd) {
+	public NdConstantAnnotation(Nd nd) {
 		super(nd);
 	}
 
-	public static NdConstantAnnotation create(Nd nd, NdAnnotationInConstant value) {
-		NdConstantAnnotation result = new NdConstantAnnotation(nd);
-		result.setValue(value);
-		return result;
-	}
-
-	public void setValue(NdAnnotationInConstant value) {
-		VALUE.put(getNd(), this.address, value);
-	}
-
 	public NdAnnotation getValue() {
 		return VALUE.get(getNd(), this.address);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.java
index 90bc3f5..ee9302b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethod.java
@@ -10,47 +10,47 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
+import java.util.Collections;
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldLong;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldInt;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldShort;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
 
 public class NdMethod extends NdBinding {
-	public static final FieldManyToOne<NdMethodId> METHOD_ID;
+	public static final FieldString METHOD_NAME;
 	public static final FieldShort METHOD_FLAGS;
-	public static final FieldManyToOne<NdType> PARENT;
 	public static final FieldOneToMany<NdVariable> DECLARED_VARIABLES;
-	public static final FieldOneToMany<NdMethodParameter> PARAMETERS;
+	public static final FieldList<NdMethodParameter> PARAMETERS;
 	public static final FieldOneToOne<NdConstant> DEFAULT_VALUE;
-	public static final FieldOneToMany<NdMethodException> EXCEPTIONS;
+	public static final FieldList<NdMethodException> EXCEPTIONS;
 	public static final FieldManyToOne<NdTypeSignature> RETURN_TYPE;
-	public static final FieldLong TAG_BITS;
-	public static final FieldOneToMany<NdAnnotationInMethod> ANNOTATIONS;
-	public static final FieldOneToMany<NdTypeAnnotationInMethod> TYPE_ANNOTATIONS;
+	public static final FieldOneToOne<NdMethodAnnotationData> ANNOTATION_DATA;
+	public static final FieldInt DECLARATION_POSITION;
 
 	@SuppressWarnings("hiding")
 	public static final StructDef<NdMethod> type;
 
 	static {
 		type = StructDef.create(NdMethod.class, NdBinding.type);
-		METHOD_ID = FieldManyToOne.create(type, NdMethodId.METHODS);
+		METHOD_NAME = type.addString();
 		METHOD_FLAGS = type.addShort();
-		PARENT = FieldManyToOne.create(type, NdType.METHODS);
-		PARAMETERS = FieldOneToMany.create(type, NdMethodParameter.PARENT);
+		PARAMETERS = FieldList.create(type, NdMethodParameter.type);
 		DECLARED_VARIABLES = FieldOneToMany.create(type, NdVariable.DECLARING_METHOD);
-		DEFAULT_VALUE = FieldOneToOne.create(type, NdConstant.class, NdConstant.PARENT_METHOD);
-		EXCEPTIONS = FieldOneToMany.create(type, NdMethodException.PARENT);
+		DEFAULT_VALUE = FieldOneToOne.create(type, NdConstant.type, NdConstant.PARENT_METHOD);
+		EXCEPTIONS = FieldList.create(type, NdMethodException.type);
 		RETURN_TYPE = FieldManyToOne.create(type, NdTypeSignature.USED_AS_RETURN_TYPE);
-		TAG_BITS = type.addLong();
-		ANNOTATIONS = FieldOneToMany.create(type, NdAnnotationInMethod.OWNER);
-		TYPE_ANNOTATIONS = FieldOneToMany.create(type, NdTypeAnnotationInMethod.OWNER);
+		ANNOTATION_DATA = FieldOneToOne.create(type, NdMethodAnnotationData.type, NdMethodAnnotationData.METHOD);
+		DECLARATION_POSITION = type.addInt();
 		type.done();
 	}
 
@@ -61,14 +61,20 @@
 		super(nd, address);
 	}
 
-	public NdMethod(NdType parent) {
-		super(parent.getNd(), parent.getFile());
-
-		PARENT.put(getNd(), this.address, parent);
+	public NdMethodParameter createNewParameter() {
+		return PARAMETERS.append(getNd(), getAddress());
 	}
 
-	public NdMethodId getMethodId() {
-		return METHOD_ID.get(getNd(), this.address);
+	public void allocateParameters(int numParameters) {
+		PARAMETERS.allocate(this.nd, this.address, numParameters);
+	}
+
+	public IString getMethodName() {
+		return METHOD_NAME.get(getNd(), this.address);
+	}
+
+	public void setMethodName(char[] selectorAndDescriptor) {
+		METHOD_NAME.put(getNd(), getAddress(), selectorAndDescriptor);
 	}
 
 	/**
@@ -94,8 +100,12 @@
 		return PARAMETERS.asList(getNd(), this.address);
 	}
 
-	public List<NdAnnotationInMethod> getAnnotations() {
-		return ANNOTATIONS.asList(getNd(), this.address);
+	public List<NdAnnotation> getAnnotations() {
+		NdMethodAnnotationData annotationData = getAnnotationData();
+		if (annotationData != null) {
+			return annotationData.getAnnotations();
+		}
+		return Collections.emptyList();
 	}
 
 	public void setDefaultValue(NdConstant value) {
@@ -110,12 +120,12 @@
 		RETURN_TYPE.put(getNd(), this.address, createTypeSignature);
 	}
 
-	public void setMethodId(NdMethodId methodId) {
-		METHOD_ID.put(getNd(), this.address, methodId);
-	}
-
-	public List<NdTypeAnnotationInMethod> getTypeAnnotations() {
-		return TYPE_ANNOTATIONS.asList(getNd(), this.address);
+	public List<NdTypeAnnotation> getTypeAnnotations() {
+		NdMethodAnnotationData annotationData = getAnnotationData();
+		if (annotationData != null) {
+			return annotationData.getTypeAnnotations();
+		}
+		return Collections.emptyList();
 	}
 
 	public List<NdMethodException> getExceptions() {
@@ -144,17 +154,29 @@
 	}
 
 	public void setTagBits(long bits) {
-		TAG_BITS.put(getNd(), this.address, bits);
+		if (bits != 0) {
+			createAnnotationData().setTagBits(bits);
+		} else {
+			NdMethodAnnotationData annotationData = getAnnotationData();
+			if (annotationData != null) {
+				annotationData.setTagBits(bits);
+			}
+		}
 	}
 
 	public long getTagBits() {
-		return TAG_BITS.get(getNd(), this.address);
+		NdMethodAnnotationData annotations = getAnnotationData();
+		if (annotations == null) {
+			return 0;
+		}
+		return annotations.getTagBits();
 	}
 
+	@Override
 	public String toString() {
 		try {
 			CharArrayBuffer arrayBuffer = new CharArrayBuffer();
-			arrayBuffer.append(getMethodId().getSelector());
+			arrayBuffer.append(getSelector());
 			getGenericSignature(arrayBuffer, true);
 			return arrayBuffer.toString();
 		} catch (RuntimeException e) {
@@ -164,6 +186,24 @@
 		}
 	}
 
+	public char[] getSelector() {
+		IString methodName = METHOD_NAME.get(getNd(), getAddress());
+		char[] methodNameString = methodName.getChars();
+		int bracketIndex = CharArrayUtils.indexOf('(', methodNameString);
+		if (bracketIndex == -1) {
+			bracketIndex = methodNameString.length;
+		}
+		return CharArrayUtils.subarray(methodNameString, 0, bracketIndex);
+	}
+
+	public boolean isConstructor() {
+		return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isConstructor(getSelector());
+	}
+
+	public boolean isClInit() {
+		return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isClinit(getSelector());
+	}
+
 	public void getGenericSignature(CharArrayBuffer result, boolean includeExceptions) {
 		NdTypeParameter.getSignature(result, getTypeParameters());
 
@@ -189,4 +229,68 @@
 			}
 		}
 	}
+
+	/**
+	 * Creates the {@link NdMethodAnnotationData} struct for this method if it does not already exist. Returns
+	 * the existing or newly-created struct. 
+	 */
+	public NdMethodAnnotationData createAnnotationData() {
+		NdMethodAnnotationData result = getAnnotationData();
+		if (result == null) {
+			result = new NdMethodAnnotationData(this);
+		}
+		return result;
+	}
+
+	private NdMethodAnnotationData getAnnotationData() {
+		return ANNOTATION_DATA.get(getNd(), getAddress());
+	}
+
+	public NdMethodException createException(NdTypeSignature createTypeSignature) {
+		NdMethodException result = EXCEPTIONS.append(getNd(), getAddress());
+		result.setExceptionType(createTypeSignature);
+		return result;
+	}
+
+	public void allocateExceptions(int length) {
+		EXCEPTIONS.allocate(this.nd, this.address, length);
+	}
+
+	public NdAnnotation createAnnotation() {
+		return createAnnotationData().createAnnotation();
+	}
+
+	public NdTypeAnnotation createTypeAnnotation() {
+		return createAnnotationData().createTypeAnnotation();
+	}
+
+	public void allocateAnnotations(int length) {
+		if (length > 0) {
+			createAnnotationData().allocateAnnotations(length);
+		}
+	}
+
+	public void allocateTypeAnnotations(int length) {
+		if (length > 0) {
+			createAnnotationData().allocateTypeAnnotations(length);
+		}
+	}
+
+	public void setDeclarationPosition(int position) {
+		DECLARATION_POSITION.put(getNd(), getAddress(), position);
+	}
+
+	/**
+	 * Returns the unique 0-based position of the method within the class it was
+	 * declared in.
+	 */
+	public int getDeclarationPosition() {
+		return DECLARATION_POSITION.get(getNd(), getAddress());
+	}
+
+	public char[] getMethodDescriptor() {
+		char[] name = getMethodName().getChars();
+		int descriptorStart = CharArrayUtils.indexOf('(', name, 0, name.length);
+		return CharArrayUtils.subarray(name, descriptorStart, name.length);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.java
new file mode 100644
index 0000000..e9b1d4b
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodAnnotationData.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
+
+import java.util.List;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldLong;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
+
+/**
+ * Stores all annotation-related information for a single method. This is stored separately from the rest of the
+ * {@link NdMethod} structure in order to save space in the common case where a method has no annotations.
+ */
+public class NdMethodAnnotationData extends NdNode {
+	public static final FieldOneToOne<NdMethod> METHOD;
+	public static final FieldLong TAG_BITS;
+	public static final FieldList<NdAnnotation> ANNOTATIONS;
+	public static final FieldList<NdTypeAnnotation> TYPE_ANNOTATIONS;
+
+	@SuppressWarnings("hiding")
+	public static final StructDef<NdMethodAnnotationData> type;
+
+	static {
+		type = StructDef.create(NdMethodAnnotationData.class, NdNode.type);
+		METHOD = FieldOneToOne.createOwner(type, NdMethod.type, NdMethod.ANNOTATION_DATA);
+		TAG_BITS = type.addLong();
+		ANNOTATIONS = FieldList.create(type, NdAnnotation.type);
+		TYPE_ANNOTATIONS = FieldList.create(type, NdTypeAnnotation.type);
+		type.done();
+	}
+
+	public NdMethodAnnotationData(Nd nd, long address) {
+		super(nd, address);
+	}
+
+	public NdMethodAnnotationData(NdMethod method) {
+		super(method.getNd());
+
+		METHOD.put(getNd(), this.address, method);
+	}
+
+	public void setTagBits(long bits) {
+		TAG_BITS.put(getNd(), this.address, bits);
+	}
+
+	public long getTagBits() {
+		return TAG_BITS.get(getNd(), this.address);
+	}
+
+	public List<NdTypeAnnotation> getTypeAnnotations() {
+		return TYPE_ANNOTATIONS.asList(getNd(), this.address);
+	}
+
+	public List<NdAnnotation> getAnnotations() {
+		return ANNOTATIONS.asList(getNd(), this.address);
+	}
+
+	public NdAnnotation createAnnotation() {
+		return ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateAnnotations(int length) {
+		ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
+
+	public NdTypeAnnotation createTypeAnnotation() {
+		return TYPE_ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateTypeAnnotations(int length) {
+		TYPE_ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.java
index fbdeb95..18b4795 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodException.java
@@ -11,21 +11,19 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
-public class NdMethodException extends NdNode {
+public class NdMethodException extends NdStruct {
 
-	public static final FieldManyToOne<NdMethod> PARENT;
 	public static final FieldManyToOne<NdTypeSignature> EXCEPTION_TYPE;
 
 	@SuppressWarnings("hiding")
 	public static StructDef<NdMethodException> type;
 
 	static {
-		type = StructDef.create(NdMethodException.class, NdNode.type);
-		PARENT = FieldManyToOne.createOwner(type, NdMethod.EXCEPTIONS);
+		type = StructDef.create(NdMethodException.class);
 		EXCEPTION_TYPE = FieldManyToOne.create(type, NdTypeSignature.USED_AS_EXCEPTION);
 		type.done();
 	}
@@ -34,21 +32,15 @@
 		super(nd, address);
 	}
 
-	public NdMethodException(NdMethod method, NdTypeSignature createTypeSignature) {
-		super(method.getNd());
-
-		PARENT.put(getNd(), this.address, method);
-		EXCEPTION_TYPE.put(getNd(), this.address, createTypeSignature);
+	public void setExceptionType(NdTypeSignature signature) {
+		EXCEPTION_TYPE.put(getNd(), this.address, signature);
 	}
 
 	public NdTypeSignature getExceptionType() {
 		return EXCEPTION_TYPE.get(getNd(), this.address);
 	}
 
-	public NdMethod getParent() {
-		return PARENT.get(getNd(), this.address);
-	}
-
+	@Override
 	public String toString() {
 		try {
 			return getExceptionType().toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.java
deleted file mode 100644
index 04c8870..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodId.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import java.util.List;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchKey;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
-
-/**
- * Represents the fully-qualified signature a method. Holds back-pointers to all the entities that refer to the name,
- * along with pointers to all methods that have this fully-qualified name. Note that this isn't the class declaration
- * itself. If there are multiple jar files containing a class of the same fully-qualified name, there may also be
- * multiple methods with the same method ID.
- */
-public class NdMethodId extends NdNode {
-	public static final FieldSearchKey<JavaIndex> METHOD_NAME;
-	public static final FieldOneToMany<NdMethod> METHODS;
-	public static final FieldOneToMany<NdType> DECLARED_TYPES;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdMethodId> type;
-
-	static {
-		type = StructDef.create(NdMethodId.class, NdNode.type);
-		METHOD_NAME = FieldSearchKey.create(type, JavaIndex.METHODS);
-		METHODS = FieldOneToMany.create(type, NdMethod.METHOD_ID, 2);
-		DECLARED_TYPES = FieldOneToMany.create(type, NdType.DECLARING_METHOD);
-
-		type.useStandardRefCounting().done();
-	}
-
-	public NdMethodId(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	/**
-	 *
-	 * @param nd
-	 * @param methodIdentifier a field descriptor for the method type followed by a "#" followed by a method selector
-	 *  followed by method descriptor. For example, "Lorg/eclipse/MyClass#foo()Ljava/lang/Object;V"
-	 */
-	public NdMethodId(Nd nd, char[] methodIdentifier) {
-		super(nd);
-
-		METHOD_NAME.put(nd, this.address, methodIdentifier);
-	}
-
-	public List<NdType> getDeclaredTypes() {
-		return DECLARED_TYPES.asList(getNd(), this.address);
-	}
-
-	/**
-	 * Returns the field descriptor for the type (without a trailing ';') followed by a # followed by the method
-	 * selector followed by the method descriptor. For example, "Lorg/eclipse/MyClass#foo()Ljava/lang/Object;V"
-	 */
-	public IString getMethodName() {
-		return METHOD_NAME.get(getNd(), this.address);
-	}
-
-	public char[] getSelector() {
-		char[] name = getMethodName().getChars();
-		int selectorStart = CharArrayUtils.indexOf('#', name) + 1;
-		int selectorEnd = CharArrayUtils.indexOf('(', name, selectorStart, name.length);
-		if (selectorEnd == -1) {
-			selectorEnd = name.length;
-		}
-		return CharArrayUtils.subarray(name, selectorStart, selectorEnd);
-	}
-
-	public boolean isConstructor() {
-		return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isConstructor(getSelector());
-	}
-
-	public char[] getMethodDescriptor() {
-		char[] name = getMethodName().getChars();
-		int descriptorStart = CharArrayUtils.indexOf('(', name, 0, name.length);
-		return CharArrayUtils.subarray(name, descriptorStart, name.length);
-	}
-
-	public boolean isClInit() {
-		return org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.JavaBinaryNames.isClinit(getSelector());
-	}
-
-	public String toString() {
-		try {
-			return new String(getSelector());
-		} catch (RuntimeException e) {
-			// This is called most often from the debugger, so we want to return something meaningful even
-			// if the code is buggy, the database is corrupt, or we don't have a read lock.
-			return super.toString();
-		}
-	}
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.java
index dd18223..6e2e1e3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdMethodParameter.java
@@ -13,20 +13,19 @@
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldByte;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
 
-public class NdMethodParameter extends NdNode {
-	public static final FieldManyToOne<NdMethod> PARENT;
+public class NdMethodParameter extends NdStruct {
 	public static final FieldManyToOne<NdTypeSignature> ARGUMENT_TYPE;
 	public static final FieldString NAME;
-	public static final FieldOneToMany<NdAnnotationInMethodParameter> ANNOTATIONS;
+	public static final FieldList<NdAnnotation> ANNOTATIONS;
 	public static final FieldByte FLAGS;
 
 	private static final byte FLG_COMPILER_DEFINED = 0x01;
@@ -35,11 +34,10 @@
 	public static StructDef<NdMethodParameter> type;
 
 	static {
-		type = StructDef.create(NdMethodParameter.class, NdNode.type);
-		PARENT = FieldManyToOne.create(type, NdMethod.PARAMETERS);
+		type = StructDef.create(NdMethodParameter.class);
 		ARGUMENT_TYPE = FieldManyToOne.create(type, NdTypeSignature.USED_AS_METHOD_ARGUMENT);
 		NAME = type.addString();
-		ANNOTATIONS = FieldOneToMany.create(type, NdAnnotationInMethodParameter.OWNER);
+		ANNOTATIONS = FieldList.create(type, NdAnnotation.type);
 		FLAGS = type.addByte();
 		type.done();
 	}
@@ -48,10 +46,7 @@
 		super(nd, address);
 	}
 
-	public NdMethodParameter(NdMethod parent, NdTypeSignature argumentType) {
-		super(parent.getNd());
-
-		PARENT.put(getNd(), this.address, parent);
+	public void setType(NdTypeSignature argumentType) {
 		ARGUMENT_TYPE.put(getNd(), this.address, argumentType);
 	}
 
@@ -67,7 +62,7 @@
 		return NAME.get(getNd(), this.address);
 	}
 
-	public List<NdAnnotationInMethodParameter> getAnnotations() {
+	public List<NdAnnotation> getAnnotations() {
 		return ANNOTATIONS.asList(getNd(), this.address);
 	}
 
@@ -89,6 +84,7 @@
 		return getFlag(FLG_COMPILER_DEFINED);
 	}
 
+	@Override
 	public String toString() {
 		try {
 			CharArrayBuffer buf = new CharArrayBuffer();
@@ -102,4 +98,12 @@
 			return super.toString();
 		}
 	}
+
+	public NdAnnotation createAnnotation() {
+		return ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateAnnotations(int length) {
+		ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.java
index 72ebf91..580a527 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdResourceFile.java
@@ -18,57 +18,128 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldLong;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany.Visitor;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex.IResultRank;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex.SearchCriteria;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldSearchKey;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldShort;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
 /**
  * Represents a source of java classes (such as a .jar or .class file).
  */
-public class NdResourceFile extends NdTreeNode {
+public class NdResourceFile extends NdNode {
 	public static final FieldSearchKey<JavaIndex> FILENAME;
-	public static final FieldOneToMany<NdBinding> ALL_NODES;
+	public static final FieldOneToMany<NdType> TYPES;
 	public static final FieldLong TIME_LAST_USED;
 	public static final FieldLong TIME_LAST_SCANNED;
 	public static final FieldLong SIZE_LAST_SCANNED;
 	public static final FieldLong HASHCODE_LAST_SCANNED;
 	public static final FieldOneToMany<NdWorkspaceLocation> WORKSPACE_MAPPINGS;
 	public static final FieldString JAVA_ROOT;
+	public static final FieldLong JDK_LEVEL;
+	public static final FieldList<NdZipEntry> ZIP_ENTRIES;
+	public static final FieldString MANIFEST_CONTENT;
+	public static final FieldShort FILE_FLAGS;
+
+	/**
+	 * Flag indicating that this is a corrupted zip file.
+	 */
+	public static final int FLG_CORRUPT_ZIP_FILE = 0x0001;
 
 	@SuppressWarnings("hiding")
 	public static final StructDef<NdResourceFile> type;
 
 	static {
-		type = StructDef.create(NdResourceFile.class, NdTreeNode.type);
+		type = StructDef.create(NdResourceFile.class, NdNode.type);
 		FILENAME = FieldSearchKey.create(type, JavaIndex.FILES);
-		ALL_NODES = FieldOneToMany.create(type, NdBinding.FILE, 16);
+		TYPES = FieldOneToMany.create(type, NdType.FILE, 16);
 		TIME_LAST_USED = type.addLong();
 		TIME_LAST_SCANNED = type.addLong();
 		SIZE_LAST_SCANNED = type.addLong();
 		HASHCODE_LAST_SCANNED = type.addLong();
 		WORKSPACE_MAPPINGS = FieldOneToMany.create(type, NdWorkspaceLocation.RESOURCE);
 		JAVA_ROOT = type.addString();
+		JDK_LEVEL = type.addLong();
+		ZIP_ENTRIES = FieldList.create(type, NdZipEntry.type, 1);
+		MANIFEST_CONTENT = type.addString();
+		FILE_FLAGS = type.addShort();
+
 		type.done();
 	}
 
+	private long jdkLevel; 
+
 	public NdResourceFile(Nd dom, long address) {
 		super(dom, address);
 	}
 
 	public NdResourceFile(Nd nd) {
-		super(nd, null);
+		super(nd);
 	}
 
-	public List<NdTreeNode> getChildren() {
-		return CHILDREN.asList(this.getNd(), this.address);
+	public boolean isCorruptedZipFile() {
+		return hasAllFlags(FLG_CORRUPT_ZIP_FILE);
+	}
+
+	public int getFlags() {
+		return FILE_FLAGS.get(getNd(), this.address);
+	}
+
+	public boolean hasAllFlags(int flags) {
+		int ourFlags = getFlags();
+
+		return (ourFlags & flags) == flags;
+	}
+
+	public void setFlags(int flags) {
+		FILE_FLAGS.put(getNd(), this.address, (short) (getFlags() | flags));
+	}
+
+	/**
+	 * Returns the set of all leaf zip entries that are not .class files. Does not include non-empty directories
+	 * or .class files, but will contain all other zip entries from the original jar file. Returns the empty list
+	 * for non-jar files.
+	 */
+	public List<NdZipEntry> getZipEntries() {
+		return ZIP_ENTRIES.asList(getNd(), getAddress());
+	}
+
+	/**
+	 * Returns the content of the JAR's MANIFEST.MF file, or null if either this isn't a .JAR file or it didn't contain
+	 * a MANIFEST.MF file.
+	 */
+	public IString getManifestContent() {
+		return MANIFEST_CONTENT.get(getNd(), getAddress());
+	}
+
+	/**
+	 * Stores the content of the JAR's MANIFEST.MF file. This should only be invoked on resources that correspond to JAR
+	 * files.
+	 */
+	public void setManifestContent(char[] newContent) {
+		MANIFEST_CONTENT.put(getNd(), getAddress(), newContent);
+	}
+
+	public long getJdkLevel() {
+		if (this.jdkLevel == 0) {
+			this.jdkLevel = JDK_LEVEL.get(getNd(), this.address);
+		}
+		return this.jdkLevel;
+	}
+
+	public void setJdkLevel(long jdkLevel) {
+		if (getJdkLevel() != jdkLevel) {
+			JDK_LEVEL.put(getNd(), this.address, jdkLevel);
+		}
 	}
 
 	/**
@@ -78,16 +149,16 @@
 	 */
 	public boolean isInIndex() {
 		try {
-			Nd nd = getNd();
 			// In the common case where the resource file was deleted and the memory hasn't yet been reused,
 			// this will fail.
-			if (NODE_TYPE.get(nd, this.address) != nd.getNodeType(getClass())) {
+			if (!this.nd.isValidAddress(this.address)
+					|| NODE_TYPE.get(this.nd, this.address) != this.nd.getNodeType(getClass())) {
 				return false;
 			}
 
 			char[] filename = FILENAME.get(getNd(), this.address).getChars();
 
-			NdResourceFile result = JavaIndex.FILES.findBest(nd, Database.DATA_AREA_OFFSET,
+			NdResourceFile result = JavaIndex.FILES.findBest(this.nd, Database.DATA_AREA_OFFSET,
 					SearchCriteria.create(filename), new IResultRank() {
 						@Override
 						public long getRank(Nd testNd, long testAddress) {
@@ -236,18 +307,19 @@
 		TIME_LAST_SCANNED.put(getNd(), this.address, 0);
 	}
 
-	public int getBindingCount() {
-		return ALL_NODES.size(getNd(), this.address);
+	public int getTypeCount() {
+		return TYPES.size(getNd(), this.address);
 	}
 
-	public List<NdBinding> getBindings() {
-		return ALL_NODES.asList(getNd(), this.address);
+	public List<NdType> getTypes() {
+		return TYPES.asList(getNd(), this.address);
 	}
 
-	public NdBinding getBinding(int index) {
-		return ALL_NODES.get(getNd(), this.address, index);
+	public NdType getType(int index) {
+		return TYPES.get(getNd(), this.address, index);
 	}
 
+	@Override
 	public String toString() {
 		try {
 			return FILENAME.get(getNd(), this.address).toString();
@@ -257,4 +329,14 @@
 			return super.toString();
 		}
 	}
+
+	public void allocateZipEntries(int expectedNumberOfZipEntries) {
+		ZIP_ENTRIES.allocate(this.nd, this.address, expectedNumberOfZipEntries);
+	}
+
+	public NdZipEntry addZipEntry(String fileName) {
+		NdZipEntry result = ZIP_ENTRIES.append(getNd(), getAddress());
+		result.setFilename(fileName);
+		return result;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.java
deleted file mode 100644
index 8ea72b7..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTreeNode.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-/**
- * {@link NdTreeNode} elements form a tree of nodes rooted at a {@link NdResourceFile}. Each node contains a list of
- * children which it declares and has a pointer to the most specific node which declares it.
- */
-public abstract class NdTreeNode extends NdNode {
-	public static final FieldManyToOne<NdTreeNode> PARENT;
-	public static final FieldOneToMany<NdTreeNode> CHILDREN;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdTreeNode> type;
-
-	static {
-		type = StructDef.create(NdTreeNode.class, NdNode.type);
-		PARENT = FieldManyToOne.create(type, null);
-		CHILDREN = FieldOneToMany.create(type, PARENT, 16);
-		type.done();
-	}
-
-	public NdTreeNode(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	protected NdTreeNode(Nd nd, NdTreeNode parent) {
-		super(nd);
-
-		PARENT.put(nd, this.address, parent == null ? 0 : parent.address);
-	}
-
-	public int getChildrenCount() {
-		return CHILDREN.size(getNd(), this.address);
-	}
-
-	public NdTreeNode getChild(int index) {
-		return CHILDREN.get(getNd(), this.address, index);
-	}
-
-	/**
-	 * Returns the closest ancestor of the given type, or null if none. Note that
-	 * this looks for an exact match. It will not return subtypes of the given type.
-	 */
-	@SuppressWarnings("unchecked")
-	public <T extends NdTreeNode> T getAncestorOfType(Class<T> ancestorType) {
-		long targetType = getNd().getNodeType(ancestorType);
-
-		Nd nd = getNd();
-		long current = PARENT.getAddress(nd, this.address);
-
-		while (current != 0) {
-			short currentType = NODE_TYPE.get(nd, current);
-
-			if (currentType == targetType) {
-				NdNode result = load(nd, current);
-
-				if (ancestorType.isInstance(result)) {
-					return (T) result;
-				} else {
-					throw new IndexException("The node at address " + current +  //$NON-NLS-1$
-							" should have been an instance of " + ancestorType.getName() +  //$NON-NLS-1$
-							" but was an instance of " + result.getClass().getName()); //$NON-NLS-1$
-				}
-			}
-
-			current = PARENT.getAddress(nd, current);
-		}
-
-		return null;
-	}
-
-	NdTreeNode getParentNode() {
-		return PARENT.get(getNd(), this.address);
-	}
-
-	public NdBinding getParentBinding() throws IndexException {
-		NdNode parent= getParentNode();
-		if (parent instanceof NdBinding) {
-			return (NdBinding) parent;
-		}
-		return null;
-	}
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.java
index e558aaf..0ab032f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdType.java
@@ -10,13 +10,13 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
+import java.util.Arrays;
 import java.util.List;
 
-import org.eclipse.core.runtime.CoreException;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.INdVisitor;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldByte;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldLong;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
@@ -25,19 +25,21 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
 
 public class NdType extends NdBinding {
+	public static final FieldManyToOne<NdResourceFile> FILE;
 	public static final FieldManyToOne<NdTypeId> TYPENAME;
 	public static final FieldManyToOne<NdTypeSignature> SUPERCLASS;
 	public static final FieldOneToMany<NdTypeInterface> INTERFACES;
 	public static final FieldManyToOne<NdTypeId> DECLARING_TYPE;
-	public static final FieldManyToOne<NdMethodId> DECLARING_METHOD;
-	public static final FieldOneToMany<NdMethod> METHODS;
-	public static final FieldOneToMany<NdTypeAnnotationInType> TYPE_ANNOTATIONS;
-	public static final FieldOneToMany<NdAnnotationInType> ANNOTATIONS;
+	public static final FieldList<NdMethod> METHODS;
+	public static final FieldList<NdTypeAnnotation> TYPE_ANNOTATIONS;
+	public static final FieldList<NdAnnotation> ANNOTATIONS;
+	public static final FieldList<NdVariable> VARIABLES;
 	public static final FieldString MISSING_TYPE_NAMES;
 	public static final FieldString SOURCE_FILE_NAME;
 	public static final FieldString INNER_CLASS_SOURCE_NAME;
 	public static final FieldByte FLAGS;
 	public static final FieldLong TAG_BITS;
+	public static final FieldString ENCLOSING_METHOD;
 	/**
 	 * Binary name that was recorded in the .class file if different from the binary
 	 * name that was determined by the .class's name and location. This is only set for
@@ -50,20 +52,22 @@
 
 	static {
 		type = StructDef.create(NdType.class, NdBinding.type);
+		FILE = FieldManyToOne.createOwner(type, NdResourceFile.TYPES);
 		TYPENAME = FieldManyToOne.create(type, NdTypeId.TYPES);
 		DECLARING_TYPE = FieldManyToOne.create(type, NdTypeId.DECLARED_TYPES);
 		INTERFACES = FieldOneToMany.create(type, NdTypeInterface.APPLIES_TO);
 		SUPERCLASS = FieldManyToOne.create(type, NdTypeSignature.SUBCLASSES);
-		DECLARING_METHOD = FieldManyToOne.create(type, NdMethodId.DECLARED_TYPES);
-		METHODS = FieldOneToMany.create(type, NdMethod.PARENT, 6);
-		TYPE_ANNOTATIONS = FieldOneToMany.create(type, NdTypeAnnotationInType.OWNER);
-		ANNOTATIONS = FieldOneToMany.create(type, NdAnnotationInType.OWNER);
+		METHODS = FieldList.create(type, NdMethod.type);
+		TYPE_ANNOTATIONS = FieldList.create(type, NdTypeAnnotation.type);
+		ANNOTATIONS = FieldList.create(type, NdAnnotation.type);
+		VARIABLES = FieldList.create(type, NdVariable.type);
 		MISSING_TYPE_NAMES = type.addString();
 		SOURCE_FILE_NAME = type.addString();
 		INNER_CLASS_SOURCE_NAME = type.addString();
 		FLAGS = type.addByte();
 		TAG_BITS = type.addLong();
 		FIELD_DESCRIPTOR_FROM_CLASS = type.addString();
+		ENCLOSING_METHOD = type.addString();
 		type.done();
 	}
 
@@ -77,14 +81,9 @@
 	}
 
 	public NdType(Nd nd, NdResourceFile resource) {
-		super(nd, resource);
-	}
+		super(nd);
 
-	/**
-	 * Called to populate the cache for the bindings in the class scope.
-	 */
-	public void acceptUncached(INdVisitor visitor) throws CoreException {
-		super.accept(visitor);
+		FILE.put(nd, this.address, resource);
 	}
 
 	public NdTypeId getTypeId() {
@@ -95,6 +94,14 @@
 		TYPENAME.put(getNd(), this.address, typeId);
 	}
 
+	public void setFile(NdResourceFile file) {
+		FILE.put(getNd(), this.address, file);
+	}
+
+	public NdResourceFile getFile() {
+		return FILE.get(getNd(), this.address);
+	}
+
 	/**
 	 * Sets the source name for this type.
 	 */
@@ -129,10 +136,6 @@
 		return FILE.get(getNd(), this.address);
 	}
 
-	public void setDeclaringMethod(NdMethodId createMethodId) {
-		DECLARING_METHOD.put(getNd(), this.address, createMethodId);
-	}
-
 	/**
 	 * @param createTypeIdFromBinaryName
 	 */
@@ -209,8 +212,8 @@
 		return JavaNames.simpleNameToSourceName(simpleName);
 	}
 
-	public NdMethodId getDeclaringMethod() {
-		return DECLARING_METHOD.get(getNd(), this.address);
+	public List<NdVariable> getVariables() {
+		return VARIABLES.asList(getNd(), this.address);
 	}
 
 	@Override
@@ -218,18 +221,59 @@
 		return TYPE_PARAMETERS.asList(getNd(), this.address);
 	}
 
-	public List<NdTypeAnnotationInType> getTypeAnnotations() {
+	public List<NdTypeAnnotation> getTypeAnnotations() {
 		return TYPE_ANNOTATIONS.asList(getNd(), this.address);
 	}
 
-	public List<NdAnnotationInType> getAnnotations() {
+	public List<NdAnnotation> getAnnotations() {
 		return ANNOTATIONS.asList(getNd(), this.address);
 	}
 
+	public NdAnnotation createAnnotation() {
+		return ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateAnnotations(int length) {
+		ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
+
+	/**
+	 * Returns the list of methods, sorted by ascending method name (selector + descriptor).
+	 */
 	public List<NdMethod> getMethods() {
 		return METHODS.asList(getNd(), this.address);
 	}
 
+	/**
+	 * Returns the list of methods, in declaration order.
+	 */
+	public List<NdMethod> getMethodsInDeclarationOrder() {
+		List<NdMethod> unsorted = getMethods();
+		NdMethod[] sorted = new NdMethod[unsorted.size()];
+		for (NdMethod next : unsorted) {
+			int pos = next.getDeclarationPosition();
+
+			if (pos < 0 || pos >= sorted.length) {
+				throw getNd().describeProblem()
+					.addProblemAddress(NdMethod.DECLARATION_POSITION, next.getAddress())
+					.build("Method " + next.getMethodName().getString() + " reports invalid position of " + pos); //$NON-NLS-1$//$NON-NLS-2$
+			}
+
+			NdMethod oldMethodAtThisPosition = sorted[pos];
+			if (oldMethodAtThisPosition != null) {
+				throw getNd().describeProblem()
+					.addProblemAddress(NdMethod.DECLARATION_POSITION, next.getAddress())
+					.addProblemAddress(NdMethod.DECLARATION_POSITION, oldMethodAtThisPosition.getAddress())
+					.build("Method " + oldMethodAtThisPosition.getMethodName().getString()  //$NON-NLS-1$
+							+ " and method " + next.getMethodName().getString() + " both claim to be at position "  //$NON-NLS-1$//$NON-NLS-2$
+							+ pos);
+			}
+			sorted[pos] = next;
+		}
+
+		return Arrays.asList(sorted);
+	}
+
 	@Override
 	public String toString() {
 		try {
@@ -263,4 +307,36 @@
 		}
 		return descriptorFromClass;
 	}
+
+	public NdTypeAnnotation createTypeAnnotation() {
+		return TYPE_ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateTypeAnnotations(int length) {
+		TYPE_ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
+
+	public NdVariable createVariable() {
+		return VARIABLES.append(getNd(), getAddress());
+	}
+
+	public void allocateVariables(int length) {
+		VARIABLES.allocate(getNd(), getAddress(), length);
+	}
+
+	public void allocateMethods(int length) {
+		METHODS.allocate(getNd(), getAddress(), length);
+	}
+
+	public NdMethod createMethod() {
+		return METHODS.append(getNd(), getAddress());
+	}
+
+	public void setDeclaringMethod(char[] enclosingMethod) {
+		ENCLOSING_METHOD.put(getNd(), getAddress(), enclosingMethod);
+	}
+
+	public IString getDeclaringMethod() {
+		return ENCLOSING_METHOD.get(getNd(), getAddress());
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.java
index a9c4d3d..59f5c41 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotation.java
@@ -11,13 +11,14 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.codegen.AnnotationTargetTypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.IDestructable;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.Database;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldByte;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldPointer;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 
-public class NdTypeAnnotation extends NdAnnotation {
+public class NdTypeAnnotation extends NdAnnotation implements IDestructable {
 	public static final FieldByte TARGET_TYPE;
 	public static final FieldByte TARGET_ARG0;
 	public static final FieldByte TARGET_ARG1;
@@ -43,18 +44,13 @@
 		super(nd, address);
 	}
 
-	public NdTypeAnnotation(Nd nd) {
-		super(nd);
-	}
-
 	public void setPath(byte[] path) {
 		freePath();
-		Nd nd = getNd();
-		PATH_LENGTH.put(nd, this.address, (byte)path.length);
+		PATH_LENGTH.put(this.nd, this.address, (byte) path.length);
 		if (path.length > 0) {
-			long pathArray = nd.getDB().malloc(path.length, Database.POOL_MISC);
-			PATH.put(nd, this.address, pathArray);
-			nd.getDB().putBytes(pathArray, path, path.length);
+			long pathArray = this.nd.getDB().malloc(path.length, Database.POOL_MISC);
+			PATH.put(this.nd, this.address, pathArray);
+			this.nd.getDB().putBytes(pathArray, path, path.length);
 		}
 	}
 
@@ -111,12 +107,10 @@
 	@Override
 	public void destruct() {
 		freePath();
-		super.destruct();
 	}
 
 	private void freePath() {
-		Nd nd = getNd();
-		long pathPointer = PATH.get(nd, this.address);
-		nd.getDB().free(pathPointer, Database.POOL_MISC);
+		long pathPointer = PATH.get(this.nd, this.address);
+		this.nd.getDB().free(pathPointer, Database.POOL_MISC);
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.java
deleted file mode 100644
index b599dfc..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInMethod.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdTypeAnnotationInMethod extends NdTypeAnnotation {
-	public static final FieldManyToOne<NdMethod> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdTypeAnnotationInMethod> type;
-
-	static {
-		type = StructDef.create(NdTypeAnnotationInMethod.class, NdTypeAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdMethod.TYPE_ANNOTATIONS);
-		type.done();
-	}
-
-	public NdTypeAnnotationInMethod(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdTypeAnnotationInMethod(Nd nd, NdMethod variable) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, variable);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.java
deleted file mode 100644
index 6b4635a..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInType.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdTypeAnnotationInType extends NdTypeAnnotation {
-	public static final FieldManyToOne<NdType> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdTypeAnnotationInType> type;
-
-	static {
-		type = StructDef.create(NdTypeAnnotationInType.class, NdTypeAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdType.TYPE_ANNOTATIONS);
-		type.done();
-	}
-
-	public NdTypeAnnotationInType(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdTypeAnnotationInType(Nd nd, NdType type) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, type);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.java
deleted file mode 100644
index 8ce06c1..0000000
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeAnnotationInVariable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Stefan Xenos (Google) - Initial implementation
- *******************************************************************************/
-package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
-
-import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
-
-public class NdTypeAnnotationInVariable extends NdTypeAnnotation {
-	public static final FieldManyToOne<NdVariable> OWNER;
-
-	@SuppressWarnings("hiding")
-	public static final StructDef<NdTypeAnnotationInVariable> type;
-
-	static {
-		type = StructDef.create(NdTypeAnnotationInVariable.class, NdTypeAnnotation.type);
-		OWNER = FieldManyToOne.createOwner(type, NdVariable.TYPE_ANNOTATIONS);
-		type.done();
-	}
-
-	public NdTypeAnnotationInVariable(Nd nd, long address) {
-		super(nd, address);
-	}
-
-	public NdTypeAnnotationInVariable(Nd nd, NdVariable variable) {
-		super(nd);
-
-		OWNER.put(getNd(), this.address, variable);
-	}
-
-}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.java
index b4a89ff..479a3d3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeBound.java
@@ -11,7 +11,7 @@
 package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
@@ -20,16 +20,14 @@
  * Represents the bound on a generic parameter (a ClassBound or InterfaceBound in
  * the sense of the Java VM spec Java SE 8 Edition, section 4.7.9.1).
  */
-public class NdTypeBound extends NdNode {
-	public static final FieldManyToOne<NdTypeParameter> PARENT;
+public class NdTypeBound extends NdStruct {
 	public static final FieldManyToOne<NdTypeSignature> TYPE;
 
 	@SuppressWarnings("hiding")
 	public static final StructDef<NdTypeBound> type;
 
 	static {
-		type = StructDef.create(NdTypeBound.class, NdNode.type);
-		PARENT = FieldManyToOne.createOwner(type, NdTypeParameter.BOUNDS);
+		type = StructDef.create(NdTypeBound.class, NdStruct.type);
 		TYPE = FieldManyToOne.create(type, NdTypeSignature.USED_AS_TYPE_BOUND);
 
 		type.done();
@@ -39,17 +37,10 @@
 		super(nd, address);
 	}
 
-	public NdTypeBound(NdTypeParameter parent, NdTypeSignature signature) {
-		super(parent.getNd());
-
-		PARENT.put(getNd(), this.address, parent);
+	public void setType(NdTypeSignature signature) {
 		TYPE.put(getNd(), this.address, signature);
 	}
 
-	public NdTypeParameter getParent() {
-		return PARENT.get(getNd(), this.address);
-	}
-
 	public NdTypeSignature getType() {
 		return TYPE.get(getNd(), this.address);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.java
index 6d6e834..ea41f6b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeId.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
+ * Copyright (c) 2016, 2017 Google, Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -128,7 +128,7 @@
 		if (this.fName != null)
 			return this.fName.equals(name);
 
-		return getSimpleName().equals(name);
+		return getSimpleName().toString().equals(name);
 	}
 
 	public void setSimpleName(String name) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.java
index 6c699fa..9b6c7d2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeParameter.java
@@ -13,10 +13,9 @@
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.NdNode;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldByte;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
@@ -24,10 +23,9 @@
 /**
  * Represents a TypeParameter, as described in Section 4.7.9.1 of the java VM specification, Java SE 8 edititon.
  */
-public class NdTypeParameter extends NdNode {
-	public static final FieldManyToOne<NdBinding> PARENT;
+public class NdTypeParameter extends NdStruct {
 	public static final FieldString IDENTIFIER;
-	public static final FieldOneToMany<NdTypeBound> BOUNDS;
+	public static final FieldList<NdTypeBound> BOUNDS;
 	public static final FieldByte TYPE_PARAMETER_FLAGS;
 
 	public static final byte FLG_FIRST_BOUND_IS_A_CLASS = 0x01;
@@ -36,10 +34,9 @@
 	public static final StructDef<NdTypeParameter> type;
 
 	static {
-		type = StructDef.create(NdTypeParameter.class, NdNode.type);
-		PARENT = FieldManyToOne.createOwner(type, NdBinding.TYPE_PARAMETERS);
+		type = StructDef.create(NdTypeParameter.class, NdStruct.type);
 		IDENTIFIER = type.addString();
-		BOUNDS = FieldOneToMany.create(type, NdTypeBound.PARENT);
+		BOUNDS = FieldList.create(type, NdTypeBound.type);
 		TYPE_PARAMETER_FLAGS = type.addByte();
 
 		type.done();
@@ -49,10 +46,7 @@
 		super(nd, address);
 	}
 
-	public NdTypeParameter(NdBinding parent, char[] identifier) {
-		super(parent.getNd());
-
-		PARENT.put(getNd(), this.address, parent);
+	public void setIdentifier(char[] identifier) {
 		IDENTIFIER.put(getNd(), this.address, identifier);
 	}
 
@@ -108,4 +102,12 @@
 			buffer.append('>');
 		}
 	}
+
+	public void createBound(NdTypeSignature boundSignature) {
+		BOUNDS.append(getNd(), getAddress()).setType(boundSignature);
+	}
+
+	public void allocateBounds(int numBounds) {
+		BOUNDS.allocate(getNd(), getAddress(), numBounds);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.java
index c0a3bcc..5634f5b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdTypeSignature.java
@@ -143,6 +143,7 @@
 	 */
 	public abstract List<NdTypeArgument> getTypeArguments();
 
+	@Override
 	public String toString() {
 		try {
 			CharArrayBuffer result = new CharArrayBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.java
index 03f2b25..1c8290a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdVariable.java
@@ -16,9 +16,9 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldByte;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldInt;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldList;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldLong;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldManyToOne;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToMany;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldOneToOne;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
@@ -27,13 +27,12 @@
 	public static final FieldManyToOne<NdTypeSignature> TYPE;
 	public static final FieldInt VARIABLE_ID;
 	public static final FieldManyToOne<NdMethod> DECLARING_METHOD;
-	public static final FieldManyToOne<NdBinding> PARENT;
 	public static final FieldString NAME;
 	public static final FieldOneToOne<NdConstant> CONSTANT;
 	public static final FieldLong TAG_BITS;
 	public static final FieldByte VARIABLE_FLAGS;
-	public static final FieldOneToMany<NdAnnotationInVariable> ANNOTATIONS;
-	public static final FieldOneToMany<NdTypeAnnotationInVariable> TYPE_ANNOTATIONS;
+	public static final FieldList<NdAnnotation> ANNOTATIONS;
+	public static final FieldList<NdTypeAnnotation> TYPE_ANNOTATIONS;
 
 	@SuppressWarnings("hiding")
 	public static StructDef<NdVariable> type;
@@ -45,13 +44,12 @@
 		TYPE = FieldManyToOne.create(type, NdTypeSignature.VARIABLES_OF_TYPE);
 		VARIABLE_ID = type.addInt();
 		DECLARING_METHOD = FieldManyToOne.create(type, NdMethod.DECLARED_VARIABLES);
-		PARENT = FieldManyToOne.create(type, NdBinding.VARIABLES);
 		NAME = type.addString();
-		CONSTANT = FieldOneToOne.create(type, NdConstant.class, NdConstant.PARENT_VARIABLE);
+		CONSTANT = FieldOneToOne.create(type, NdConstant.type, NdConstant.PARENT_VARIABLE);
 		TAG_BITS = type.addLong();
 		VARIABLE_FLAGS = type.addByte();
-		ANNOTATIONS = FieldOneToMany.create(type, NdAnnotationInVariable.OWNER);
-		TYPE_ANNOTATIONS = FieldOneToMany.create(type, NdTypeAnnotationInVariable.OWNER);
+		ANNOTATIONS = FieldList.create(type, NdAnnotation.type);
+		TYPE_ANNOTATIONS = FieldList.create(type, NdTypeAnnotation.type);
 		type.done();
 	}
 
@@ -59,12 +57,6 @@
 		super(nd, bindingRecord);
 	}
 
-	public NdVariable(NdBinding parent) {
-		super(parent.getNd(), parent.getFile());
-
-		PARENT.put(getNd(), this.address, parent);
-	}
-
 	public boolean hasVariableFlag(int toTest) {
 		return (VARIABLE_FLAGS.get(getNd(), this.address) & toTest) != 0;
 	}
@@ -106,14 +98,23 @@
 		TAG_BITS.put(getNd(), this.address, tagBits);
 	}
 
-	public List<NdTypeAnnotationInVariable> getTypeAnnotations() {
+	public List<NdTypeAnnotation> getTypeAnnotations() {
 		return TYPE_ANNOTATIONS.asList(getNd(), this.address);
 	}
 
-	public List<NdAnnotationInVariable> getAnnotations() {
+	public List<NdAnnotation> getAnnotations() {
 		return ANNOTATIONS.asList(getNd(), this.address);
 	}
 
+	public NdAnnotation createAnnotation() {
+		return ANNOTATIONS.append(this.getNd(), this.getAddress());
+	}
+
+	public void allocateAnnotations(int length) {
+		ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
+
+	@Override
 	public String toString() {
 		try {
 			StringBuilder result = new StringBuilder();
@@ -138,4 +139,12 @@
 			return super.toString();
 		}
 	}
+
+	public NdTypeAnnotation createTypeAnnotation() {
+		return TYPE_ANNOTATIONS.append(getNd(), getAddress());
+	}
+
+	public void allocateTypeAnnotations(int length) {
+		TYPE_ANNOTATIONS.allocate(getNd(), getAddress(), length);
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.java
index 15956b8..ef866f0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdWorkspaceLocation.java
@@ -54,6 +54,7 @@
 		return RESOURCE.get(getNd(), this.address);
 	}
 
+	@Override
 	public String toString() {
 		try {
 			return getPath().toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.java
new file mode 100644
index 0000000..ae7969e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/NdZipEntry.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.java;
+
+import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.NdStruct;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IString;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.FieldString;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.field.StructDef;
+
+/**
+ * Stores a (non-class) file within a .jar file.
+ */
+public class NdZipEntry extends NdStruct {
+	public static final FieldString FILE_NAME;
+
+	@SuppressWarnings("hiding")
+	public static final StructDef<NdZipEntry> type;
+
+	static {
+		type = StructDef.create(NdZipEntry.class, NdStruct.type);
+		FILE_NAME = type.addString();
+
+		type.done();
+	}
+
+	public NdZipEntry(Nd nd, long address) {
+		super(nd, address);
+	}
+
+	public void setFilename(String filename) {
+		FILE_NAME.put(this.nd, this.address, filename);
+	}
+
+	public IString getFileName() {
+		return FILE_NAME.get(this.nd, this.address);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.java
index 93a0694..04b2916 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/TagTreeReader.java
@@ -37,6 +37,7 @@
 			// Nothing to do by default
 		}
 
+		@Override
 		public final T read(Nd nd, long address, TagTreeReader reader, int[] bytesRead) {
 			bytesRead[0] = getSize();
 			return read(nd, address);
@@ -78,7 +79,9 @@
 		readAddress += Database.BYTE_SIZE;
 		TagHandler<?> reader = this.readers[nextByte];
 		if (reader == null) {
-			throw new IndexException("Found unknown tag with value " + nextByte + " at address " + address); //$NON-NLS-1$//$NON-NLS-2$
+			throw nd.describeProblem()
+				.addProblemAddress("tag", address, 1) //$NON-NLS-1$
+				.build("Found unknown tag with value " + nextByte + " at address " + address); //$NON-NLS-1$//$NON-NLS-2$
 		}
 
 		return reader.read(nd, readAddress, this, bytesRead);
@@ -98,7 +101,7 @@
 		TagHandler handler = this.readers[key];
 
 		if (handler == null) {
-			throw new IndexException("Invalid key " + key + " returned from getKeyFor(...)"); //$NON-NLS-1$//$NON-NLS-2$
+			throw nd.describeProblem().build("Invalid key " + key + " returned from getKeyFor(...)"); //$NON-NLS-1$//$NON-NLS-2$
 		}
 
 		handler.write(nd, address, this, toWrite, bytesWritten);
@@ -112,7 +115,9 @@
 
 		TagHandler<?> handler = this.readers[nextByte];
 		if (handler == null) {
-			throw new IndexException("Found unknown tag with value " + nextByte + " at address " + address); //$NON-NLS-1$//$NON-NLS-2$
+			throw nd.describeProblem()
+				.addProblemAddress("tag", address, 1) //$NON-NLS-1$
+				.build("Found unknown tag with value " + nextByte + " at address " + address); //$NON-NLS-1$//$NON-NLS-2$
 		}
 
 		handler.destruct(nd, readAddress, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.java
new file mode 100644
index 0000000..c5894e2
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleDescriptor.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.java.model;
+
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
+
+/**
+ * Holds a lightweight identifier for an IBinaryModule, with sufficient information to either read it from
+ * disk or read it from the index.
+ */
+public class BinaryModuleDescriptor {
+	public final char[] indexPath;
+	public final char[] moduleName; // TODO: not sure if this will be needed once wired to the index?
+	public final char[] location;
+	public final char[] workspacePath;
+
+	/**
+	 * Constructs a new descriptor
+	 * 
+	 * @param location
+	 *            location where the archive (.jar or .class) can be found in the local filesystem
+	 * @param moduleName
+	 *            name of the module
+	 * @param workspacePath
+	 *            location where the archive (.jar or class) can be found in the workspace. If it is not in the
+	 *            workspace, this is the path where it can be found on the local filesystem.
+	 * @param indexPath
+	 *            index path for the new module (workspace-or-local path to jar optionally followed by a | and a relative
+	 *            path within the .jar)
+	 */
+	public BinaryModuleDescriptor(char[] location, char[] moduleName, char[] workspacePath, char[] indexPath) {
+		super();
+		this.location = location;
+		this.moduleName = moduleName;
+		this.indexPath = indexPath;
+		this.workspacePath = workspacePath;
+	}
+
+	public boolean isInJarFile() {
+		return CharArrayUtils.indexOf(IDependent.JAR_FILE_ENTRY_SEPARATOR, this.indexPath) != -1;
+	}
+
+	/**
+	 * For debugging purposes only.
+	 */
+	@Override
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		builder.append(this.workspacePath);
+		builder.append('|');
+		builder.append(this.moduleName);
+		return builder.toString();
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.java
new file mode 100644
index 0000000..be7b3cb
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryModuleFactory.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2017 GK Software AG, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Stephan Herrmann - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.java.model;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResourceStatus;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
+import org.aspectj.org.eclipse.jdt.internal.core.JrtPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.internal.core.ModularClassFile;
+import org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
+
+/**
+ * <strong>FIXME:</strong> this class is a stub as of now, it does not support modules in the new index.
+ */
+public class BinaryModuleFactory {
+
+	public static BinaryModuleDescriptor createDescriptor(ModularClassFile modularClassFile) {
+		return createDescriptor(modularClassFile.getPackageFragmentRoot(), modularClassFile);
+	}
+
+	/**
+	 * Returns a descriptor for the given class within the given package fragment, or null if the fragment doesn't have
+	 * a location on the filesystem.
+	 */
+	private static BinaryModuleDescriptor createDescriptor(PackageFragmentRoot root, ModularClassFile classFile) {
+		IPath location = JavaIndex.getLocationForElement(root);
+		if (location == null) {
+			return null;
+		}
+		String entryName = TypeConstants.MODULE_INFO_CLASS_NAME_STRING;
+		IPath workspacePath = root.getPath();
+		String indexPath;
+		char[] moduleName = null;
+
+		if (root instanceof JarPackageFragmentRoot) {
+			entryName = ((JarPackageFragmentRoot) root).getClassFilePath(entryName);
+			indexPath = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName;
+			// see additional comments in BinaryTypeFactor.createDescriptor()
+			if (root instanceof JrtPackageFragmentRoot) {
+				moduleName = root.getElementName().toCharArray();
+			}
+		} else {
+			location = location.append(entryName);
+			indexPath = workspacePath.append(entryName).toString();
+			workspacePath = classFile.resource().getFullPath();
+		}
+
+		return new BinaryModuleDescriptor(location.toString().toCharArray(), moduleName, // TODO: module name only known for JRT
+				workspacePath.toString().toCharArray(), indexPath.toCharArray());
+	}
+
+	/**
+	 * Reads the given binary module. If the module can be found in the index with a fingerprint that exactly matches
+	 * the file on disk, the type is read from the index. Otherwise the type is read from disk. Returns null if
+	 * no such type exists.
+	 * <strong>caveat</strong> modules are not yet supported in the index.
+	 * 
+	 * @throws ClassFormatException 
+	 */
+	public static IBinaryModule readModule(BinaryModuleDescriptor descriptor, IProgressMonitor monitor) throws JavaModelException, ClassFormatException {
+// FIXME: support module in the new index
+//		if (JavaIndex.isEnabled()) {
+//			try {
+//				return readFromIndex(JavaIndex.getIndex(), descriptor, monitor);
+//			} catch (NotInIndexException e) {
+//				// fall back to reading the zip file, below
+//			}
+//		}
+		return rawReadModule(descriptor, true);
+	}
+	
+	public static IBinaryModule rawReadModule(BinaryModuleDescriptor descriptor, boolean fullyInitialize) throws JavaModelException, ClassFormatException {
+		try {
+			return rawReadModuleTestForExists(descriptor, fullyInitialize, true);
+		} catch (FileNotFoundException e) {
+			throw new JavaModelException(e, IJavaModelStatusConstants.IO_EXCEPTION);
+		}
+	}
+
+	/**
+	 * Read the class file from disk, circumventing the index's cache. This should only be used by callers
+	 * that need to read information from the class file which aren't present in the index (such as method bodies).
+	 * 
+	 * @return the newly-created IBinaryModule or null if the given class file does not exist.
+	 * @throws ClassFormatException if the class file existed but was corrupt
+	 * @throws JavaModelException if unable to read the class file due to a transient failure
+	 * @throws FileNotFoundException if the file does not exist
+	 */
+	public static IBinaryModule rawReadModuleTestForExists(BinaryModuleDescriptor descriptor, boolean fullyInitialize,
+			boolean useInvalidArchiveCache) throws JavaModelException, ClassFormatException, FileNotFoundException {
+		if (descriptor == null) {
+			return null;
+		}
+		if (descriptor.isInJarFile()) {
+			ZipFile zip = null;
+			try {
+				zip = JavaModelManager.getJavaModelManager().getZipFile(new Path(new String(descriptor.workspacePath)),
+						useInvalidArchiveCache);
+				String entryName = TypeConstants.MODULE_INFO_CLASS_NAME_STRING;
+				ZipEntry ze = zip.getEntry(entryName);
+				if (ze != null) {
+					byte contents[];
+					try {
+						contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
+					} catch (IOException ioe) {
+						throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
+					}
+					ClassFileReader classFileReader = new ClassFileReader(contents, descriptor.indexPath, fullyInitialize);
+					return classFileReader.getModuleDeclaration();
+				}
+			} catch (CoreException e) {
+				throw new JavaModelException(e);
+			} finally {
+				JavaModelManager.getJavaModelManager().closeZipFile(zip);
+			}
+		} else {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(new String(descriptor.workspacePath)));
+			byte[] contents;
+			try (InputStream stream = file.getContents(true)) {
+				contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getInputStreamAsByteArray(stream, -1);
+			} catch (CoreException e) {
+				IStatus status = e.getStatus();
+				if (status.getCode() == IResourceStatus.RESOURCE_NOT_FOUND) {
+					throw new FileNotFoundException();
+				}
+				throw new JavaModelException(e);
+			} catch (IOException e) {
+				throw new JavaModelException(e, IJavaModelStatusConstants.IO_EXCEPTION);
+			}
+			ClassFileReader classFileReader = new ClassFileReader(contents, file.getFullPath().toString().toCharArray(), fullyInitialize);
+			return classFileReader.getModuleDeclaration();
+		}
+		return null;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.java
index 122ce2e..f646158 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeDescriptor.java
@@ -48,4 +48,16 @@
 	public boolean isInJarFile() {
 		return CharArrayUtils.indexOf(IDependent.JAR_FILE_ENTRY_SEPARATOR, this.indexPath) != -1;
 	}
+
+	/**
+	 * For debugging purposes only.
+	 */
+	@Override
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		builder.append(this.workspacePath);
+		builder.append('|');
+		builder.append(this.fieldDescriptor);
+		return builder.toString();
+	}
 }
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.java
index 06daa3b..a2bf3ca 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/BinaryTypeFactory.java
@@ -24,11 +24,11 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
-import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
@@ -38,6 +38,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.PackageFragment;
+import org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.IReader;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.Nd;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.db.IndexException;
@@ -57,8 +58,6 @@
 		public NotInIndexException() {
 		}
 	}
-	
-	private final static char[] PACKAGE_INFO = "package-info".toCharArray(); //$NON-NLS-1$
 
 	/**
 	 * Returns a descriptor for the given class within the given package fragment, or null if the fragment doesn't have
@@ -66,19 +65,20 @@
 	 */
 	private static BinaryTypeDescriptor createDescriptor(PackageFragment pkg, ClassFile classFile) {
 		String name = classFile.getName();
-		IJavaElement root = pkg.getParent();
+		PackageFragmentRoot root = (PackageFragmentRoot) pkg.getParent();
 		IPath location = JavaIndex.getLocationForElement(root);
-		String entryName = Util.concatWith(pkg.names, classFile.getElementName(), '/');
-		char[] fieldDescriptor = CharArrayUtils.concat(new char[] { 'L' },
-				Util.concatWith(pkg.names, name, '/').toCharArray(), new char[] { ';' });
-		IPath workspacePath = root.getPath();
-		String indexPath;
-
 		if (location == null) {
 			return null;
 		}
+		name = root.getClassFilePath(Util.concatWith(pkg.names, name, '/'));
+		String entryName = Util.concatWith(pkg.names, classFile.getElementName(), '/');
+		char[] fieldDescriptor = CharArrayUtils.concat(new char[] { 'L' },
+				name.toCharArray(), new char[] { ';' });
+		IPath workspacePath = root.getPath();
+		String indexPath;
 
 		if (root instanceof JarPackageFragmentRoot) {
+			entryName = ((JarPackageFragmentRoot) root).getClassFilePath(entryName);
 			// The old version returned this, but it doesn't conform to the spec on IBinaryType.getFileName():
 			indexPath = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName;
 			// Version that conforms to the JavaDoc spec on IBinaryType.getFileName() -- note that this breaks
@@ -94,7 +94,7 @@
 				workspacePath.toString().toCharArray(), indexPath.toCharArray());
 	}
 
-	public static BinaryTypeDescriptor createDescriptor(IClassFile classFile) {
+	public static BinaryTypeDescriptor createDescriptor(IOrdinaryClassFile classFile) {
 		ClassFile concreteClass = (ClassFile)classFile;
 		PackageFragment parent = (PackageFragment) classFile.getParent();
 
@@ -105,7 +105,7 @@
 		return createDescriptor(type.getClassFile());
 	}
 
-	public static IBinaryType create(IClassFile classFile, IProgressMonitor monitor) throws JavaModelException, ClassFormatException {
+	public static IBinaryType create(IOrdinaryClassFile classFile, IProgressMonitor monitor) throws JavaModelException, ClassFormatException {
 		BinaryTypeDescriptor descriptor = createDescriptor(classFile);
 		return readType(descriptor, monitor);
 	}
@@ -152,27 +152,29 @@
 			return null;
 		}
 		if (descriptor.isInJarFile()) {
-			ZipFile zip = null;
-			try {
-				zip = JavaModelManager.getJavaModelManager().getZipFile(new Path(new String(descriptor.workspacePath)),
-						useInvalidArchiveCache);
-				char[] entryNameCharArray = CharArrayUtils.concat(
-						JavaNames.fieldDescriptorToBinaryName(descriptor.fieldDescriptor), SuffixConstants.SUFFIX_class);
-				String entryName = new String(entryNameCharArray);
-				ZipEntry ze = zip.getEntry(entryName);
-				if (ze != null) {
-					byte contents[];
-					try {
-						contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
-					} catch (IOException ioe) {
-						throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
+			if (CharOperation.indexOf("jrt-fs.jar".toCharArray(), descriptor.location, false) == -1) { //$NON-NLS-1$
+				ZipFile zip = null;
+				try {
+					zip = JavaModelManager.getJavaModelManager().getZipFile(new Path(new String(descriptor.workspacePath)),
+							useInvalidArchiveCache);
+					char[] entryNameCharArray = CharArrayUtils.concat(
+							JavaNames.fieldDescriptorToBinaryName(descriptor.fieldDescriptor), SuffixConstants.SUFFIX_class);
+					String entryName = new String(entryNameCharArray);
+					ZipEntry ze = zip.getEntry(entryName);
+					if (ze != null) {
+						byte contents[];
+						try {
+							contents = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
+						} catch (IOException ioe) {
+							throw new JavaModelException(ioe, IJavaModelStatusConstants.IO_EXCEPTION);
+						}
+						return new ClassFileReader(contents, descriptor.indexPath, fullyInitialize);
 					}
-					return new ClassFileReader(contents, descriptor.indexPath, fullyInitialize);
+				} catch (CoreException e) {
+					throw new JavaModelException(e);
+				} finally {
+					JavaModelManager.getJavaModelManager().closeZipFile(zip);
 				}
-			} catch (CoreException e) {
-				throw new JavaModelException(e);
-			} finally {
-				JavaModelManager.getJavaModelManager().closeZipFile(zip);
 			}
 		} else {
 			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(new String(descriptor.workspacePath)));
@@ -201,54 +203,49 @@
 	 * able to determine that the requested class does not exist in that file.
 	 */
 	public static IBinaryType readFromIndex(JavaIndex index, BinaryTypeDescriptor descriptor, IProgressMonitor monitor) throws JavaModelException, NotInIndexException {
-		char[] className = JavaNames.fieldDescriptorToSimpleName(descriptor.fieldDescriptor);
-
 		// If the new index is enabled, check if we have this class file cached in the index already		
 		char[] fieldDescriptor = descriptor.fieldDescriptor;
 
-		if (!CharArrayUtils.equals(PACKAGE_INFO, className)) {
-			Nd nd = index.getNd();
+		Nd nd = index.getNd();
 
-			// We don't currently cache package-info files in the index
-			if (descriptor.location != null) {
-				// Acquire a read lock on the index
-				try (IReader lock = nd.acquireReadLock()) {
-					try {
-						TypeRef typeRef = TypeRef.create(nd, descriptor.location, fieldDescriptor);
-						NdType type = typeRef.get();
+		if (descriptor.location != null) {
+			// Acquire a read lock on the index
+			try (IReader lock = nd.acquireReadLock()) {
+				try {
+					TypeRef typeRef = TypeRef.create(nd, descriptor.location, fieldDescriptor);
+					NdType type = typeRef.get();
 
-						if (type == null) {
-							// If we couldn't find the type in the index, determine whether the cause is
-							// that the type is known not to exist or whether the resource just hasn't
-							// been indexed yet
+					if (type == null) {
+						// If we couldn't find the type in the index, determine whether the cause is
+						// that the type is known not to exist or whether the resource just hasn't
+						// been indexed yet
 
-							NdResourceFile resourceFile = index.getResourceFile(descriptor.location);
-							if (index.isUpToDate(resourceFile)) {
-								return null;
-							}
-							throw new NotInIndexException();
-						}
-						NdResourceFile resourceFile = type.getResourceFile();
+						NdResourceFile resourceFile = index.getResourceFile(descriptor.location);
 						if (index.isUpToDate(resourceFile)) {
-							IndexBinaryType result = new IndexBinaryType(typeRef, descriptor.indexPath);
-
-							// We already have the database lock open and have located the element, so we may as
-							// well prefetch the inexpensive attributes.
-							result.initSimpleAttributes();
-
-							return result;
+							return null;
 						}
 						throw new NotInIndexException();
-					} catch (CoreException e) {
-						throw new JavaModelException(e);
 					}
-				} catch (IndexException e) {
-					Package.log("Index corruption detected. Rebuilding index.", e); //$NON-NLS-1$
-					Indexer.getInstance().requestRebuildIndex();
+					NdResourceFile resourceFile = type.getResourceFile();
+					if (index.isUpToDate(resourceFile)) {
+						IndexBinaryType result = new IndexBinaryType(typeRef, descriptor.indexPath);
+
+						// We already have the database lock open and have located the element, so we may as
+						// well prefetch the inexpensive attributes.
+						result.initSimpleAttributes();
+
+						return result;
+					}
+					throw new NotInIndexException();
+				} catch (CoreException e) {
+					throw new JavaModelException(e);
 				}
+			} catch (IndexException e) {
+				Package.log("Index corruption detected. Rebuilding index.", e); //$NON-NLS-1$
+				Indexer.getInstance().requestRebuildIndex();
 			}
 		}
-		
+
 		throw new NotInIndexException();
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.java
index 089a8c2..365d3c6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/java/model/IndexBinaryType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2016 Google, Inc and others.
+ * Copyright (c) 2016, 2017 Google, Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -42,7 +42,6 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdConstantEnum;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethod;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodException;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodId;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdMethodParameter;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdResourceFile;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdType;
@@ -53,7 +52,6 @@
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdTypeSignature;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.NdVariable;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.java.TypeRef;
-import org.aspectj.org.eclipse.jdt.internal.core.nd.util.CharArrayUtils;
 import org.aspectj.org.eclipse.jdt.internal.core.util.CharArrayBuffer;
 
 /**
@@ -264,7 +262,7 @@
 		try (IReader rl = this.typeRef.lock()) {
 			NdType type = this.typeRef.get();
 			if (type != null) {
-				List<NdMethod> methods = type.getMethods();
+				List<NdMethod> methods = type.getMethodsInDeclarationOrder();
 
 				if (methods.isEmpty()) {
 					return null;
@@ -381,17 +379,15 @@
 	}
 
 	private IBinaryMethod createBinaryMethod(NdMethod ndMethod) {
-		NdMethodId methodId = ndMethod.getMethodId();
-
 		return IndexBinaryMethod.create().setAnnotations(toAnnotationArray(ndMethod.getAnnotations()))
-				.setModifiers(ndMethod.getModifiers()).setIsConstructor(methodId.isConstructor())
+				.setModifiers(ndMethod.getModifiers()).setIsConstructor(ndMethod.isConstructor())
 				.setArgumentNames(getArgumentNames(ndMethod)).setDefaultValue(unpackValue(ndMethod.getDefaultValue()))
 				.setExceptionTypeNames(getExceptionTypeNames(ndMethod))
 				.setGenericSignature(getGenericSignatureFor(ndMethod))
-				.setMethodDescriptor(methodId.getMethodDescriptor())
+				.setMethodDescriptor(ndMethod.getMethodDescriptor())
 				.setParameterAnnotations(getParameterAnnotations(ndMethod))
-				.setSelector(ndMethod.getMethodId().getSelector()).setTagBits(ndMethod.getTagBits())
-				.setIsClInit(methodId.isClInit()).setTypeAnnotations(createBinaryTypeAnnotations(ndMethod.getTypeAnnotations()));
+				.setSelector(ndMethod.getSelector()).setTagBits(ndMethod.getTagBits())
+				.setIsClInit(ndMethod.isClInit()).setTypeAnnotations(createBinaryTypeAnnotations(ndMethod.getTypeAnnotations()));
 	}
 
 	private static IBinaryTypeAnnotation[] createBinaryTypeAnnotations(List<? extends NdTypeAnnotation> typeAnnotations) {
@@ -423,7 +419,7 @@
 				case AnnotationTargetTypeConstants.METHOD_RECEIVER:
 					break;
 				case AnnotationTargetTypeConstants.METHOD_FORMAL_PARAMETER :
-					info = next.getTargetInfoArg0();
+					info = next.getTarget();
 					break;
 				case AnnotationTargetTypeConstants.THROWS :
 					info = next.getTarget();
@@ -593,13 +589,12 @@
 			try (IReader rl = this.typeRef.lock()) {
 				NdType type = this.typeRef.get();
 				if (type != null) {
-					NdMethodId methodId = type.getDeclaringMethod();
+					IString declaringMethod = type.getDeclaringMethod();
 
-					if (methodId != null) {
-						char[] methodName = methodId.getMethodName().getChars();
-						int startIdx = CharArrayUtils.lastIndexOf('#', methodName);
-						this.enclosingMethod = CharArrayUtils.subarray(methodName, startIdx + 1);
-						this.enclosingType = CharArrayUtils.subarray(methodName, 1, startIdx);
+					if (declaringMethod.length() != 0) {
+						char[] methodName = declaringMethod.getChars();
+						this.enclosingMethod = methodName;
+						this.enclosingType = type.getDeclaringType().getBinaryName();
 					} else {
 						NdTypeId typeId = type.getDeclaringType();
 
@@ -669,4 +664,10 @@
 	public ExternalAnnotationStatus getExternalAnnotationStatus() {
 		return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
 	}
+
+	@Override
+	public char[] getModule() {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.java
new file mode 100644
index 0000000..3dcb353
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/MathUtils.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.nd.util;
+
+public class MathUtils {
+	/**
+	 * Rounds the one number up to the nearest multiple of another
+	 *
+	 * @param numberToRound
+	 *            number to round
+	 * @param toMultipleOfThis the result will be divisible by this number
+	 * @return the result will be the smallest multiple of toMultipleOfThis that is no smaller than numberToRound
+	 */
+	public static int roundUpToNearestMultiple(int numberToRound, int toMultipleOfThis) {
+		return ((numberToRound + toMultipleOfThis - 1) / toMultipleOfThis) * toMultipleOfThis;
+	}
+
+	/**
+	 * Rounds the one number up to the nearest multiple of another, where the second number is a power of two.
+	 *
+	 * @param numberToRound
+	 *            number to round
+	 * @param aPowerOfTwo
+	 *            the result will be divisible by this
+	 * @return the result will be the smallest multiple of aPowerOfTwo that is no smaller than numberToRound
+	 */
+	public static int roundUpToNearestMultipleOfPowerOfTwo(int numberToRound, int aPowerOfTwo) {
+		return ((numberToRound + aPowerOfTwo - 1) & ~(aPowerOfTwo - 1));
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.java
index c6d4fc9..c33041a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/nd/util/PathMap.java
@@ -60,6 +60,10 @@
 			return next;
 		}
 
+		/**
+		 * Returns this node or one of its descendants whose path is the longest-possible prefix of the given key (or
+		 * equal to it).
+		 */
 		public Node<T> getMostSpecificNode(IPath key) {
 			if (this.depth == key.segmentCount()) {
 				return this;
@@ -144,6 +148,7 @@
 			return super.createChild(nextSegment);
 		}
 
+		@Override
 		Node<T> getChild(String nextSegment) {
 			if (nextSegment == null) {
 				return this.noDevice;
@@ -222,4 +227,12 @@
 		this.root.toString(builder, Path.EMPTY);
 		return builder.toString();
 	}
+
+	/**
+	 * Returns true iff this map contains any key that starts with the given prefix.
+	 */
+	public boolean containsKeyStartingWith(IPath next) {
+		Node<T> node = this.root.getMostSpecificNode(next);
+		return node.depth == next.segmentCount();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.java
index b0ed33f..317cd9f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/AbstractSearchScope.java
@@ -19,6 +19,7 @@
  * @see IJavaSearchScope#includesBinaries()
  * @deprecated
  */
+@Override
 public boolean includesBinaries() {
 	return true;
 }
@@ -27,6 +28,7 @@
  * @see IJavaSearchScope#includesClasspaths()
  * @deprecated
  */
+@Override
 public boolean includesClasspaths() {
 	return true;
 }
@@ -41,6 +43,7 @@
  * @see IJavaSearchScope#setIncludesBinaries(boolean)
  * @deprecated
  */
+@Override
 public void setIncludesBinaries(boolean includesBinaries) {
 	// implements interface method
 }
@@ -49,6 +52,7 @@
  * @see IJavaSearchScope#setIncludesClasspaths(boolean)
  * @deprecated
  */
+@Override
 public void setIncludesClasspaths(boolean includesClasspaths) {
 	// implements interface method
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
index ab502be..bbd515c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
@@ -12,6 +12,7 @@
 package org.aspectj.org.eclipse.jdt.internal.core.search;
 
 import java.util.*;
+import java.util.regex.Pattern;
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
@@ -120,24 +121,34 @@
 	 * @see SearchEngine#createJavaSearchScope(IJavaElement[]) for detailed comment.
 	 */
 	public static IJavaSearchScope createJavaSearchScope(IJavaElement[] elements) {
-		return createJavaSearchScope(elements, true);
+		return createJavaSearchScope(false, elements, true);
 	}
 
-	/**
-	 * @see SearchEngine#createJavaSearchScope(IJavaElement[], boolean) for detailed comment.
-	 */
+	public static IJavaSearchScope createJavaSearchScope(boolean excludeTestCode, IJavaElement[] elements) {
+		return createJavaSearchScope(excludeTestCode, elements, true);
+	}
+
 	public static IJavaSearchScope createJavaSearchScope(IJavaElement[] elements, boolean includeReferencedProjects) {
+		return createJavaSearchScope(false, elements, includeReferencedProjects);
+	}
+	/**
+	 * @see SearchEngine#createJavaSearchScope(boolean, IJavaElement[], boolean) for detailed comment.
+	 */
+	public static IJavaSearchScope createJavaSearchScope(boolean excludeTestCode, IJavaElement[] elements, boolean includeReferencedProjects) {
 		int includeMask = IJavaSearchScope.SOURCES | IJavaSearchScope.APPLICATION_LIBRARIES | IJavaSearchScope.SYSTEM_LIBRARIES;
 		if (includeReferencedProjects) {
 			includeMask |= IJavaSearchScope.REFERENCED_PROJECTS;
 		}
-		return createJavaSearchScope(elements, includeMask);
+		return createJavaSearchScope(excludeTestCode, elements, includeMask);
 	}
-
-	/**
-	 * @see SearchEngine#createJavaSearchScope(IJavaElement[], int) for detailed comment.
-	 */
+	
 	public static IJavaSearchScope createJavaSearchScope(IJavaElement[] elements, int includeMask) {
+		return createJavaSearchScope(false, elements, includeMask);
+	}
+	/**
+	 * @see SearchEngine#createJavaSearchScope(boolean, IJavaElement[], int) for detailed comment.
+	 */
+	public static IJavaSearchScope createJavaSearchScope(boolean excludeTestCode, IJavaElement[] elements, int includeMask) {
 		HashSet projectsToBeAdded = new HashSet(2);
 		for (int i = 0, length = elements.length; i < length; i++) {
 			IJavaElement element = elements[i];
@@ -145,7 +156,7 @@
 				projectsToBeAdded.add(element);
 			}
 		}
-		JavaSearchScope scope = new JavaSearchScope();
+		JavaSearchScope scope = new JavaSearchScope(excludeTestCode);
 		for (int i = 0, length = elements.length; i < length; i++) {
 			IJavaElement element = elements[i];
 			if (element != null) {
@@ -491,8 +502,7 @@
 				case SearchPattern.R_PATTERN_MATCH :
 					return CharOperation.match(patternTypeName, typeName, isCaseSensitive);
 				case SearchPattern.R_REGEXP_MATCH :
-					// TODO (frederic) implement regular expression match
-					break;
+					return Pattern.matches(new String(patternTypeName), new String(typeName));
 				case SearchPattern.R_CAMELCASE_MATCH:
 					if (matchFirstChar && CharOperation.camelCaseMatch(patternTypeName, typeName, false)) {
 						return true;
@@ -523,8 +533,7 @@
 				case SearchPattern.R_PATTERN_MATCH :
 					return CharOperation.match(patternName, name, isCaseSensitive);
 				case SearchPattern.R_REGEXP_MATCH :
-					// TODO implement regular expression match
-					break;
+					return Pattern.matches(new String(patternName), new String(name));
 				case SearchPattern.R_CAMELCASE_MATCH:
 					if (matchFirstChar && CharOperation.camelCaseMatch(patternName, name, false)) {
 						return true;
@@ -638,6 +647,7 @@
 	
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					// Filter unexpected types
 					ConstructorDeclarationPattern record = (ConstructorDeclarationPattern)indexRecord;
@@ -819,10 +829,12 @@
 									this.declaringTypesPtr--;
 								}
 								
+								@Override
 								public void endVisit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									endVisit(typeDeclaration);
 								}
 								
+								@Override
 								public void endVisit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									endVisit(memberTypeDeclaration);
 								}
@@ -838,6 +850,7 @@
 									
 									return false;
 								}
+								@Override
 								public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope classScope) {
 									TypeDeclaration typeDeclaration = this.declaringTypes[this.declaringTypesPtr];
 									if (match(NoSuffix, packageName, pkgMatchRule, typeName, validatedTypeMatchRule, 0/*no kind*/, packageDeclaration, typeDeclaration.name)) {
@@ -881,6 +894,7 @@
 									}
 									return false; // no need to find constructors from local/anonymous type
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 									return false; 
 								}
@@ -894,10 +908,12 @@
 									return true;
 								}
 								
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									return visit(typeDeclaration);
 								}
 								
+								@Override
 								public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									return visit(memberTypeDeclaration);
 								}
@@ -973,6 +989,7 @@
 
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					MethodDeclarationPattern record = (MethodDeclarationPattern)indexRecord;
 					
@@ -1130,12 +1147,15 @@
 									boolean visitMethods = match(qualifier, qualifierMatchRule, q);
 									this.typeInfoStack.push(new TypeInfo(typeDeclaration, visitMethods, enclosingTypeName));
 								}
+								@Override
 								public void endVisit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									this.typeInfoStack.pop();
 								}
+								@Override
 								public void endVisit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									this.typeInfoStack.pop();
 								}
+								@Override
 								public boolean visit(MethodDeclaration methodDeclaration, ClassScope classScope) {
 									TypeInfo typeInfo = this.typeInfoStack.peek();
 									if (typeInfo.visitMethods &&
@@ -1150,13 +1170,16 @@
 									
 									return false; // no need to find methods from local/anonymous type
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 									return false; // do not visit local/anonymous types
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									addStackEntry(typeDeclaration, CharOperation.NO_CHAR);
 									return true;
 								}
+								@Override
 								public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									TypeInfo typeInfo = this.typeInfoStack.peek();
 									addStackEntry(memberTypeDeclaration, typeInfo.enclosingTypeName == CharOperation.NO_CHAR ? typeInfo.typeDecl.name :
@@ -1236,6 +1259,7 @@
 
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					MethodDeclarationPattern record = (MethodDeclarationPattern)indexRecord;
 					
@@ -1396,12 +1420,15 @@
 											match(declaringSimpleName, declSimpleNameMatchRule, typeDeclaration.name);
 									this.typeInfoStack.push(new TypeInfo(typeDeclaration, visitMethods, enclosingTypeName));
 								}
+								@Override
 								public void endVisit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									this.typeInfoStack.pop();
 								}
+								@Override
 								public void endVisit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									this.typeInfoStack.pop();
 								}
+								@Override
 								public boolean visit(MethodDeclaration methodDeclaration, ClassScope classScope) {
 									TypeInfo typeInfo = this.typeInfoStack.peek();
 									if (typeInfo.visitMethods &&
@@ -1416,13 +1443,16 @@
 									
 									return false; // no need to find methods from local/anonymous type
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 									return false; // do not visit local/anonymous types
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope s) {
 									addStackEntry(typeDeclaration, CharOperation.NO_CHAR);
 									return true;
 								}
+								@Override
 								public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope s) {
 									TypeInfo typeInfo = this.typeInfoStack.peek();
 									addStackEntry(memberTypeDeclaration, typeInfo.enclosingTypeName == CharOperation.NO_CHAR ? typeInfo.typeDecl.name :
@@ -1585,6 +1615,7 @@
 	
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					// Filter unexpected types
 					TypeDeclarationPattern record = (TypeDeclarationPattern)indexRecord;
@@ -1760,6 +1791,7 @@
 	
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					// Filter unexpected types
 					TypeDeclarationPattern record = (TypeDeclarationPattern)indexRecord;
@@ -1874,9 +1906,11 @@
 						if (parsedUnit != null) {
 							final char[] packageDeclaration = parsedUnit.currentPackage == null ? CharOperation.NO_CHAR : CharOperation.concatWith(parsedUnit.currentPackage.getImportName(), '.');
 							class AllTypeDeclarationsVisitor extends ASTVisitor {
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 									return false; // no local/anonymous type
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope compilationUnitScope) {
 									if (match(typeSuffix, packageName, packageMatchRule, typeName, validatedTypeMatchRule, TypeDeclaration.kind(typeDeclaration.modifiers), packageDeclaration, typeDeclaration.name)) {
 										if (nameRequestor instanceof TypeNameMatchRequestorWrapper) {
@@ -1888,6 +1922,7 @@
 									}
 									return true;
 								}
+								@Override
 								public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope classScope) {
 									if (match(typeSuffix, packageName, packageMatchRule, typeName, validatedTypeMatchRule, TypeDeclaration.kind(memberTypeDeclaration.modifiers), packageDeclaration, memberTypeDeclaration.name)) {
 										// compute enclosing type names
@@ -2005,6 +2040,7 @@
 	
 			// Index requestor
 			IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+				@Override
 				public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 					// Filter unexpected types
 					QualifiedTypeDeclarationPattern record = (QualifiedTypeDeclarationPattern) indexRecord;
@@ -2114,9 +2150,11 @@
 								? CharOperation.NO_CHAR
 								: CharOperation.concatWith(parsedUnit.currentPackage.getImportName(), '.');
 							class AllTypeDeclarationsVisitor extends ASTVisitor {
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, BlockScope blockScope) {
 									return false; // no local/anonymous type
 								}
+								@Override
 								public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope compilationUnitScope) {
 									SearchPattern decodedPattern =
 										new QualifiedTypeDeclarationPattern(packageDeclaration, typeDeclaration.name, convertTypeKind(TypeDeclaration.kind(typeDeclaration.modifiers)), matchRule);
@@ -2125,6 +2163,7 @@
 									}
 									return true;
 								}
+								@Override
 								public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope classScope) {
 									// compute enclosing type names
 									char[] qualification = packageDeclaration;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.java
index 4b2b4f6..da67612 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/HierarchyScope.java
@@ -257,9 +257,8 @@
 			}
 		}
 	}
-	/* (non-Javadoc)
-	 * @see IJavaSearchScope#encloses(String)
-	 */
+
+	@Override
 	public boolean encloses(String resourcePath) {
 		return encloses(resourcePath, null);
 	}
@@ -312,9 +311,8 @@
 			return true; // no fine grained checking requested
 		return encloses(element, null);
 	}
-	/* (non-Javadoc)
-	 * @see IJavaSearchScope#encloses(IJavaElement)
-	 */
+
+	@Override
 	public boolean encloses(IJavaElement element) {
 		return encloses(element, null);
 	}
@@ -414,6 +412,7 @@
 	 * @see IJavaSearchScope#enclosingProjectsAndJars()
 	 * @deprecated
 	 */
+	@Override
 	public IPath[] enclosingProjectsAndJars() {
 		if (this.needsRefresh) {
 			try {
@@ -443,9 +442,8 @@
 		}
 		buildResourceVector();
 	}
-	/*
-	 * @see AbstractSearchScope#processDelta(IJavaElementDelta)
-	 */
+
+	@Override
 	public void processDelta(IJavaElementDelta delta, int eventType) {
 		if (this.needsRefresh) return;
 		this.needsRefresh = this.hierarchy == null ? false : ((TypeHierarchy)this.hierarchy).isAffected(delta, eventType);
@@ -458,6 +456,7 @@
 			initialize(progressMonitor);
 		}
 	}
+	@Override
 	public String toString() {
 		return "HierarchyScope on " + ((JavaElement)this.focusType).toStringWithAncestors(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.java
index b0cf44f..01fc6d0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/IndexSelector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,6 +31,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.IndexManager;
 import org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator;
 import org.aspectj.org.eclipse.jdt.internal.core.search.matching.MethodPattern;
+import org.aspectj.org.eclipse.jdt.internal.core.search.matching.ModulePattern;
 
 /**
  * Selects the indexes that correspond to projects in a given search scope
@@ -200,7 +201,7 @@
 	IndexManager manager = JavaModelManager.getIndexManager();
 	// use a linked set to preserve the order during search: see bug 348507
 	LinkedHashSet locations = new LinkedHashSet();
-	IJavaElement focus = MatchLocator.projectOrJarFocus(this.pattern);
+	IJavaElement focus = this.pattern instanceof ModulePattern ? null : MatchLocator.projectOrJarFocus(this.pattern);
 	if (focus == null) {
 		for (int i = 0; i < projectsAndJars.length; i++) {
 			IPath path = projectsAndJars[i];
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.java
index 22b4bcd..b36e947 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchDocument.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2015 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,10 +32,15 @@
 		super(documentPath, participant);
 	}
 	public JavaSearchDocument(java.util.zip.ZipEntry zipEntry, IPath zipFilePath, byte[] contents, SearchParticipant participant) {
-		super(zipFilePath + IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR + zipEntry.getName(), participant);
+		this(zipFilePath + IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR + zipEntry.getName(), contents, participant);
+	}
+
+	public JavaSearchDocument(String documentPath, byte[] contents, SearchParticipant participant) {
+		super(documentPath, participant);
 		this.byteContents = contents;
 	}
 
+	@Override
 	public byte[] getByteContents() {
 		if (this.byteContents != null) return this.byteContents;
 		try {
@@ -47,6 +52,7 @@
 			return null;
 		}
 	}
+	@Override
 	public char[] getCharContents() {
 		if (this.charContents != null) return this.charContents;
 		try {
@@ -58,6 +64,7 @@
 			return null;
 		}
 	}
+	@Override
 	public String getEncoding() {
 		// Return the encoding of the associated file
 		IFile resource = getFile();
@@ -80,6 +87,7 @@
 			this.file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(getPath()));
 		return this.file;
 	}
+	@Override
 	public String toString() {
 		return "SearchDocument for " + getPath(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.java
index 8fa943c..67aadc2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchMethodNameMatch.java
@@ -48,6 +48,7 @@
 		this.accessibility = accessibility;
 	}
 	
+	@Override
 	public String toString() {
 		return this.method == null ? super.toString() : this.method.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java
index 5d7f7d6..e316155 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchParticipant.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,8 +12,10 @@
 
 import org.eclipse.core.runtime.*;
 import org.aspectj.org.eclipse.jdt.core.search.*;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.index.IndexLocation;
 import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.BinaryIndexer;
+import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.ManifestIndexer;
 import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.SourceIndexer;
 import org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator;
 
@@ -33,39 +35,29 @@
 	private ThreadLocal indexSelector = new ThreadLocal();
 	private SourceIndexer sourceIndexer;
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#beginSearching()
-	 */
+	@Override
 	public void beginSearching() {
 		super.beginSearching();
 		this.indexSelector.set(null);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#doneSearching()
-	 */
+	@Override
 	public void doneSearching() {
 		this.indexSelector.set(null);
 		super.doneSearching();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#getName()
-	 */
+	@Override
 	public String getDescription() {
 		return "Java"; //$NON-NLS-1$
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#getDocument(String)
-	 */
+	@Override
 	public SearchDocument getDocument(String documentPath) {
 		return new JavaSearchDocument(documentPath, this);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#indexDocument(SearchDocument)
-	 */
+	@Override
 	public void indexDocument(SearchDocument document, IPath indexPath) {
 		// TODO must verify that the document + indexPath match, when this is not called from scheduleDocumentIndexing
 		document.removeAllIndexEntries(); // in case the document was already indexed
@@ -76,12 +68,11 @@
 			this.sourceIndexer.indexDocument();
 		} else if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(documentPath)) {
 			new BinaryIndexer(document).indexDocument();
+		} else if (documentPath.endsWith(TypeConstants.AUTOMATIC_MODULE_NAME)) {
+			new ManifestIndexer(document).indexDocument();
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#indexResolvedDocument(SearchDocument, IPath)
-	 */
 	@Override
 	public void indexResolvedDocument(SearchDocument document, IPath indexPath) {
 		String documentPath = document.getPath();
@@ -92,9 +83,7 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#resolveDocument(SearchDocument document)
-	 */
+	@Override
 	public void resolveDocument(SearchDocument document) {
 		String documentPath = document.getPath();
 		if (org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(documentPath)) {
@@ -102,10 +91,8 @@
 				this.sourceIndexer.resolveDocument();
 		}
 	}
-	
-	/* (non-Javadoc)
-	 * @see SearchParticipant#locateMatches(SearchDocument[], SearchPattern, IJavaSearchScope, SearchRequestor, IProgressMonitor)
-	 */
+
+	@Override
 	public void locateMatches(SearchDocument[] indexMatches, SearchPattern pattern,
 			IJavaSearchScope scope, SearchRequestor requestor, IProgressMonitor monitor) throws CoreException {
 
@@ -122,9 +109,7 @@
 		matchLocator.locateMatches(indexMatches);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.search.SearchParticipant#selectIndexes(org.aspectj.org.eclipse.jdt.core.search.SearchQuery, org.aspectj.org.eclipse.jdt.core.search.SearchContext)
-	 */
+	@Override
 	public IPath[] selectIndexes(SearchPattern pattern, IJavaSearchScope scope) {
 		IndexSelector selector = (IndexSelector) this.indexSelector.get();
 		if (selector == null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.java
index 6f7b529..6213d86 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchScope.java
@@ -64,11 +64,14 @@
 	private IPath[] enclosingProjectsAndJars;
 	public final static AccessRuleSet NOT_ENCLOSED = new AccessRuleSet(null, (byte) 0, null);
 
-public JavaSearchScope() {
-	this(5);
+	private final boolean excludeTestCode;
+
+public JavaSearchScope(boolean excludeTestCode) {
+	this(5, excludeTestCode);
 }
 
-private JavaSearchScope(int size) {
+private JavaSearchScope(int size, boolean excludeTestCode) {
+	this.excludeTestCode = excludeTestCode;
 	initialize(size);
 
 	//disabled for now as this could be expensive
@@ -121,6 +124,9 @@
 	JavaModelManager.PerProjectInfo perProjectInfo = javaProject.getPerProjectInfo();
 	for (int i = 0, length = entries.length; i < length; i++) {
 		IClasspathEntry entry = entries[i];
+		if (this.excludeTestCode && entry.isTest()) {
+			continue;
+		}
 		AccessRuleSet access = null;
 		ClasspathEntry cpEntry = (ClasspathEntry) entry;
 		if (referringEntry != null) {
@@ -335,6 +341,7 @@
  *
  * @see IJavaSearchScope#encloses(String)
  */
+@Override
 public boolean encloses(String resourcePathString) {
 	int separatorIndex = resourcePathString.indexOf(JAR_FILE_ENTRY_SEPARATOR);
 	if (separatorIndex != -1) {
@@ -435,9 +442,7 @@
 	return false;
 }
 
-/* (non-Javadoc)
- * @see IJavaSearchScope#encloses(IJavaElement)
- */
+@Override
 public boolean encloses(IJavaElement element) {
 	if (this.elements != null) {
 		for (int i = 0, length = this.elements.size(); i < length; i++) {
@@ -464,9 +469,7 @@
 	return indexOf(fullResourcePathString) >= 0;
 }
 
-/* (non-Javadoc)
- * @see IJavaSearchScope#enclosingProjectsAndJars()
- */
+@Override
 public IPath[] enclosingProjectsAndJars() {
 	return this.enclosingProjectsAndJars;
 }
@@ -491,12 +494,7 @@
 	}
 }
 
-/**
- * Get access rule set corresponding to a given path.
- * @param relativePath The path user want to have restriction access
- * @return The access rule set for given path or null if none is set for it.
- * 	Returns specific uninit access rule set when scope does not enclose the given path.
- */
+@Override
 public AccessRuleSet getAccessRuleSet(String relativePath, String containerPath) {
 	int index = indexOf(containerPath, relativePath);
 	if (index == -1) {
@@ -537,9 +535,7 @@
 	return path;
 }
 
-/*
- * @see AbstractSearchScope#processDelta(IJavaElementDelta)
- */
+@Override
 public void processDelta(IJavaElementDelta delta, int eventType) {
 	switch (delta.getKind()) {
 		case IJavaElementDelta.CHANGED:
@@ -581,6 +577,7 @@
 /**
  * @see AbstractJavaSearchScope#packageFragmentRoot(String, int, String)
  */
+@Override
 public IPackageFragmentRoot packageFragmentRoot(String resourcePathString, int jarSeparatorIndex, String jarPath) {
 	int index = -1;
 	boolean isJarFile = jarSeparatorIndex != -1;
@@ -617,7 +614,7 @@
 }
 
 private void rehash() {
-	JavaSearchScope newScope = new JavaSearchScope(this.pathsCount * 2);		// double the number of expected elements
+	JavaSearchScope newScope = new JavaSearchScope(this.pathsCount * 2, this.excludeTestCode);		// double the number of expected elements
 	newScope.projectPaths.ensureCapacity(this.projectPaths.size());
 	String currentPath;
 	for (int i=0, length=this.relativePaths.length; i<length; i++)
@@ -636,6 +633,7 @@
 	this.threshold = newScope.threshold;
 }
 
+@Override
 public String toString() {
 	StringBuffer result = new StringBuffer("JavaSearchScope on "); //$NON-NLS-1$
 	if (this.elements != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.java
index 3e18f8a..1faea03 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaSearchTypeNameMatch.java
@@ -37,6 +37,7 @@
  * Returns whether the matched type is equals to the given object or not.
  * @see java.lang.Object#equals(java.lang.Object)
  */
+@Override
 public boolean equals(Object obj) {
 	if (obj == this) return true; // avoid unnecessary calls for identical objects
 	if (obj instanceof TypeNameMatch) {
@@ -49,16 +50,12 @@
 	return false;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.search.TypeNameMatch#getAccessibility()
- */
+@Override
 public int getAccessibility() {
 	return this.accessibility;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.search.TypeNameMatch#getModifiers()
- */
+@Override
 public int getModifiers() {
 	return this.modifiers;
 }
@@ -68,6 +65,7 @@
  * from up-to-date index file.
  * @see org.aspectj.org.eclipse.jdt.core.search.TypeNameMatch#getType()
  */
+@Override
 public IType getType() {
 	return this.type;
 }
@@ -76,6 +74,7 @@
  * Returns the hash code of the matched type.
  * @see java.lang.Object#hashCode()
  */
+@Override
 public int hashCode() {
 	if (this.type == null) return this.modifiers;
 	return this.type.hashCode();
@@ -112,6 +111,7 @@
  * Returns the string of the matched type.
  * @see java.lang.Object#toString()
  */
+@Override
 public String toString() {
 	if (this.type == null) return super.toString();
 	return this.type.toString();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.java
index 7098803..4f212d8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/JavaWorkspaceScope.java
@@ -11,8 +11,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.search;
 
-import java.util.HashMap;
 import java.util.LinkedHashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.resources.IFolder;
@@ -27,6 +27,7 @@
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRuleSet;
 import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor;
+import org.aspectj.org.eclipse.jdt.internal.core.DeltaProcessor.RootInfo;
 import org.aspectj.org.eclipse.jdt.internal.core.ExternalFoldersManager;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModel;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
@@ -38,7 +39,6 @@
  * The scope can be configured to not search binaries. By default, binaries
  * are included.
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
 public class JavaWorkspaceScope extends AbstractJavaSearchScope {
 
 	private IPath[] enclosingPaths = null;
@@ -47,6 +47,7 @@
 	// As nothing is stored in the JavaWorkspaceScope now, no initialization is longer needed
 }
 
+@Override
 public boolean encloses(IJavaElement element) {
 	/*A workspace scope encloses all java elements (this assumes that the index selector
 	 * and thus enclosingProjectAndJars() returns indexes on the classpath only and that these
@@ -55,6 +56,7 @@
 	 */
 	return true;
 }
+@Override
 public boolean encloses(String resourcePathString) {
 	/*A workspace scope encloses all resources (this assumes that the index selector
 	 * and thus enclosingProjectAndJars() returns indexes on the classpath only and that these
@@ -63,9 +65,8 @@
 	 */
 	return true;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars()
- */
+
+@Override
 public IPath[] enclosingProjectsAndJars() {
 	IPath[] result = this.enclosingPaths;
 	if (result != null) {
@@ -75,7 +76,7 @@
 	try {
 		IJavaProject[] projects = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProjects();
 		// use a linked set to preserve the order during search: see bug 348507
-		Set paths = new LinkedHashSet(projects.length * 2);
+		Set<IPath> paths = new LinkedHashSet<>(projects.length * 2);
 		for (int i = 0, length = projects.length; i < length; i++) {
 			JavaProject javaProject = (JavaProject) projects[i];
 
@@ -119,15 +120,18 @@
 	}
 }
 
+@Override
 public boolean equals(Object o) {
   return o == this; // use the singleton pattern
 }
 
+@Override
 public AccessRuleSet getAccessRuleSet(String relativePath, String containerPath) {
 	// Do not consider access rules on workspace scope
 	return null;
 }
 
+@Override
 public int hashCode() {
 	return JavaWorkspaceScope.class.hashCode();
 }
@@ -135,23 +139,24 @@
 /**
  * @see AbstractJavaSearchScope#packageFragmentRoot(String, int, String)
  */
+@Override
 public IPackageFragmentRoot packageFragmentRoot(String resourcePathString, int jarSeparatorIndex, String jarPath) {
-	HashMap rootInfos = JavaModelManager.getDeltaState().roots;
+	Map<IPath, RootInfo> rootInfos = JavaModelManager.getDeltaState().roots;
 	DeltaProcessor.RootInfo rootInfo = null;
 	if (jarPath != null) {
 		IPath path = new Path(jarPath);
-		rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(path);
+		rootInfo = rootInfos.get(path);
 	} else {
 		IPath path = new Path(resourcePathString);
 		if (ExternalFoldersManager.isInternalPathForExternalFolder(path)) {
 			IResource resource = JavaModel.getWorkspaceTarget(path.uptoSegment(2/*linked folders for external folders are always of size 2*/));
 			if (resource != null)
-				rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(resource.getLocation());
+				rootInfo = rootInfos.get(resource.getLocation());
 		} else {
-			rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(path);
+			rootInfo = rootInfos.get(path);
 			while (rootInfo == null && path.segmentCount() > 0) {
 				path = path.removeLastSegments(1);
-				rootInfo = (DeltaProcessor.RootInfo) rootInfos.get(path);
+				rootInfo = rootInfos.get(path);
 			}
 		}
 	}
@@ -160,6 +165,7 @@
 	return rootInfo.getPackageFragmentRoot(null/*no resource hint*/);
 }
 
+@Override
 public void processDelta(IJavaElementDelta delta, int eventType) {
 	if (this.enclosingPaths == null) return;
 	IJavaElement element = delta.getElement();
@@ -213,6 +219,7 @@
 }
 
 
+@Override
 public String toString() {
 	StringBuffer result = new StringBuffer("JavaWorkspaceScope on "); //$NON-NLS-1$
 	IPath[] paths = enclosingProjectsAndJars();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.java
index fcfbb3e..0cf2917 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/NameMatchRequestorWrapper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,10 +12,10 @@
 package org.aspectj.org.eclipse.jdt.internal.core.search;
 
 import org.eclipse.core.runtime.Path;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
 import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.IType;
@@ -66,22 +66,19 @@
 		if (this.handleFactory != null) {
 			Openable openable = this.handleFactory.createOpenable(path, this.scope);
 			if (openable == null) return type;
-			switch (openable.getElementType()) {
-				case IJavaElement.COMPILATION_UNIT:
-					ICompilationUnit cu = (ICompilationUnit) openable;
-					if (enclosingTypeNames != null && enclosingTypeNames.length > 0) {
-						type = cu.getType(new String(enclosingTypeNames[0]));
-						for (int j=1, l=enclosingTypeNames.length; j<l; j++) {
-							type = type.getType(new String(enclosingTypeNames[j]));
-						}
-						type = type.getType(new String(simpleTypeName));
-					} else {
-						type = cu.getType(new String(simpleTypeName));
+			if (openable instanceof ICompilationUnit) {
+				ICompilationUnit cu = (ICompilationUnit) openable;
+				if (enclosingTypeNames != null && enclosingTypeNames.length > 0) {
+					type = cu.getType(new String(enclosingTypeNames[0]));
+					for (int j=1, l=enclosingTypeNames.length; j<l; j++) {
+						type = type.getType(new String(enclosingTypeNames[j]));
 					}
-					break;
-				case IJavaElement.CLASS_FILE:
-					type = ((IClassFile)openable).getType();
-					break;
+					type = type.getType(new String(simpleTypeName));
+				} else {
+					type = cu.getType(new String(simpleTypeName));
+				}
+			} else if (openable instanceof IOrdinaryClassFile) {
+				type = ((IOrdinaryClassFile)openable).getType();
 			}
 		} else {
 			int separatorIndex= path.indexOf(IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR);
@@ -110,6 +107,9 @@
 	}
 	// create handle
 	String classFilePath= resourcePath.substring(separatorIndex + 1);
+	int actualClassIndexSeparator = classFilePath.indexOf(IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR);
+	String moduleName = actualClassIndexSeparator == -1 ? null : classFilePath.substring(0, actualClassIndexSeparator);
+	classFilePath = moduleName != null ? classFilePath.substring(actualClassIndexSeparator + 1, classFilePath.length()) : classFilePath;
 	String[] simpleNames = new Path(classFilePath).segments();
 	String[] pkgName;
 	int length = simpleNames.length-1;
@@ -121,7 +121,7 @@
 	}
 	IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName);
 	if (pkgFragment == null) {
-		pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName);
+		pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName, moduleName); //BUG 478143
 		// filter org.apache.commons.lang.enum package for projects above 1.5 
 		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264
 		if (length == 5 && pkgName[4].equals("enum")) { //$NON-NLS-1$
@@ -136,7 +136,7 @@
 		} 
 		this.packageHandles.put(pkgName, pkgFragment);
 	}
-	return pkgFragment.getClassFile(simpleNames[length]).getType();
+	return pkgFragment.getOrdinaryClassFile(simpleNames[length]).getType();
 }
 private IType createTypeFromPath(String resourcePath, String simpleTypeName, char[][] enclosingTypeNames) throws JavaModelException {
 	// path to a file in a directory
@@ -181,7 +181,7 @@
 		}
 		return type;
 	} else if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(simpleName)){
-		IClassFile classFile= pkgFragment.getClassFile(simpleName);
+		IOrdinaryClassFile classFile= pkgFragment.getOrdinaryClassFile(simpleName);
 		return classFile.getType();
 	}
 	return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.java
index 409ea1e..2b17e17 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PathCollector.java
@@ -25,9 +25,7 @@
 	/* a set of resource paths */
 	public HashSet paths = new HashSet(5);
 
-	/* (non-Javadoc)
-	 * @see IndexQueryRequestor#acceptIndexMatch(String, SearchPattern, SearchParticipant, AccessRuleSet)
-	 */
+	@Override
 	public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 		this.paths.add(documentPath);
 		return true;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
index a23d899..795dc3d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/PatternSearchJob.java
@@ -42,16 +42,20 @@
 	this.scope = scope;
 	this.requestor = requestor;
 }
+@Override
 public boolean belongsTo(String jobFamily) {
 	return true;
 }
+@Override
 public void cancel() {
 	// search job is cancelled through progress
 }
+@Override
 public void ensureReadyToRun() {
 	if (!this.areIndexesReady)
 		getIndexes(null/*progress*/); // may trigger some index recreation
 }
+@Override
 public boolean execute(IProgressMonitor progressMonitor) {
 	SubMonitor subMonitor = SubMonitor.convert(progressMonitor, 3);
 
@@ -90,6 +94,12 @@
 	this.areIndexesReady = indexes.length == length;
 	return indexes;
 }
+
+@Override
+public boolean waitNeeded() {
+	return true;
+}
+@Override
 public String getJobFamily() {
 	return ""; //$NON-NLS-1$
 }
@@ -112,6 +122,7 @@
 		monitor.exitRead(); // finished reading
 	}
 }
+@Override
 public String toString() {
 	return "searching " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.java
index 30e958e..3ffb3e7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/SubTypeSearchJob.java
@@ -28,6 +28,7 @@
 		if (values[i] != null)
 			((Index) values[i]).stopQuery();
 }
+@Override
 public Index[] getIndexes(IProgressMonitor progressMonitor) {
 	if (this.indexes.elementSize == 0) {
 		return super.getIndexes(progressMonitor);
@@ -37,6 +38,7 @@
 	this.indexes.asArray(values);
 	return values;
 }
+@Override
 public boolean search(Index index, IProgressMonitor progressMonitor) {
 	if (index == null) return COMPLETE;
 	if (this.indexes.addIfNotIncluded(index) == index)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java
index 3d15642..57cd25e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java
@@ -50,9 +50,7 @@
 	this.requestor = requestor;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.IRestrictedAccessTypeRequestor#acceptType(int, char[], char[], char[][], java.lang.String, org.aspectj.org.eclipse.jdt.internal.compiler.env.AccessRestriction)
- */
+@Override
 public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 
 	// Get type
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.java
index 795637e..2fb7c59 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/TypeNameRequestorWrapper.java
@@ -41,6 +41,7 @@
 	public TypeNameRequestorWrapper(TypeNameRequestor requestor) {
 		this.requestor = requestor;
 	}
+	@Override
 	public void acceptType(int modifiers, char[] packageName, char[] simpleTypeName, char[][] enclosingTypeNames, String path, AccessRestriction access) {
 		this.requestor.acceptType(modifiers, packageName, simpleTypeName, enclosingTypeNames, path);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
index 631755b..33fdfd0 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AbstractIndexer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -212,6 +212,17 @@
 	public void addMethodReference(char[] methodName, int argCount) {
 		addIndexEntry(METHOD_REF, MethodPattern.createIndexKey(methodName, argCount));
 	}
+	public void addModuleDeclaration(char[] moduleName) {
+		addIndexEntry(MODULE_DECL, ModulePattern.createIndexKey(moduleName));
+	}
+	public void addModuleExportedPackages(char[] packageName) {
+		char[][] tokens = CharOperation.splitOn('.', packageName);
+		for (int i = 0, l = tokens.length; i < l; ++i)
+			addNameReference(tokens[i]);
+	}
+	public void addModuleReference(char[] moduleName) {
+		addIndexEntry(MODULE_REF, ModulePattern.createIndexKey(moduleName));
+	}
 	public void addNameReference(char[] name) {
 		addIndexEntry(REF, name);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.java
index d87aa9a..fd0b5aa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddFolderToIndex.java
@@ -37,6 +37,7 @@
 		this.inclusionPatterns = inclusionPatterns;
 		this.exclusionPatterns = exclusionPatterns;
 	}
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -59,6 +60,7 @@
 			if (this.exclusionPatterns == null && this.inclusionPatterns == null) {
 				folder.accept(
 					new IResourceProxyVisitor() {
+						@Override
 						public boolean visit(IResourceProxy proxy) /* throws CoreException */{
 							if (proxy.getType() == IResource.FILE) {
 								if (org.aspectj.org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(proxy.getName()))
@@ -73,6 +75,7 @@
 			} else {
 				folder.accept(
 					new IResourceProxyVisitor() {
+						@Override
 						public boolean visit(IResourceProxy proxy) /* throws CoreException */{
 							switch(proxy.getType()) {
 								case IResource.FILE :
@@ -106,6 +109,7 @@
 		}
 		return true;
 	}
+	@Override
 	public String toString() {
 		return "adding " + this.folderPath + " to index " + this.containerPath; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.java
index 37ae352..3f220b1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJarFileToIndex.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
+import java.nio.charset.Charset;
 import java.util.Enumeration;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipError;
@@ -23,15 +24,13 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchScope;
 import org.aspectj.org.eclipse.jdt.core.search.SearchEngine;
 import org.aspectj.org.eclipse.jdt.core.search.SearchParticipant;
-import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
-import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
-import org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.AutomaticModuleNaming;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
-import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.index.Index;
@@ -40,11 +39,10 @@
 import org.aspectj.org.eclipse.jdt.internal.core.search.processing.JobManager;
 
 @SuppressWarnings("rawtypes")
-class AddJarFileToIndex extends IndexRequest {
+class AddJarFileToIndex extends BinaryContainer {
 
 	private static final char JAR_SEPARATOR = IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR.charAt(0);
 	IFile resource;
-	Scanner scanner;
 	private IndexLocation indexFileURL;
 	private final boolean forceIndexUpdate;
 
@@ -66,6 +64,7 @@
 		this.indexFileURL = indexFile;
 		this.forceIndexUpdate = updateIndex;
 	}
+	@Override
 	public boolean equals(Object o) {
 		if (o instanceof AddJarFileToIndex) {
 			if (this.resource != null)
@@ -75,6 +74,7 @@
 		}
 		return false;
 	}
+	@Override
 	public int hashCode() {
 		if (this.resource != null)
 			return this.resource.hashCode();
@@ -82,6 +82,7 @@
 			return this.containerPath.hashCode();
 		return -1;
 	}
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -141,6 +142,8 @@
 							org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + location.getPath() + " because the file could not be fetched"); //$NON-NLS-1$ //$NON-NLS-2$
 						return false;
 					}
+					if (JavaModelManager.ZIP_ACCESS_VERBOSE)
+						System.out.println("(" + Thread.currentThread() + ") [AddJarFileToIndex.execute()] Creating ZipFile on " + this.containerPath); //$NON-NLS-1$	//$NON-NLS-2$
 					zip = new ZipFile(file);
 					zipFilePath = (Path) this.resource.getFullPath().makeRelative();
 					// absolute path relative to the workspace
@@ -180,7 +183,7 @@
 						// iterate each entry to index it
 						ZipEntry ze = (ZipEntry) e.nextElement();
 						String zipEntryName = ze.getName();
-						if (Util.isClassFileName(zipEntryName) && isValidPackageNameForClass(zipEntryName))
+						if (Util.isClassFileName(zipEntryName) && isValidPackageNameForClassOrisModule(zipEntryName))
 								// the class file may not be there if the package name is not valid
 							indexedFileNames.put(zipEntryName, EXISTS);
 					}
@@ -218,6 +221,7 @@
 				if ((indexLocation = index.getIndexLocation()) != null) {
 					indexPath = new Path(indexLocation.getCanonicalFilePath());
 				}
+				boolean hasModuleInfoClass = false;
 				for (Enumeration e = zip.entries(); e.hasMoreElements();) {
 					if (this.isCancelled) {
 						if (JobManager.VERBOSE)
@@ -229,13 +233,30 @@
 					ZipEntry ze = (ZipEntry) e.nextElement();
 					String zipEntryName = ze.getName();
 					if (Util.isClassFileName(zipEntryName) && 
-							isValidPackageNameForClass(zipEntryName)) {
+							isValidPackageNameForClassOrisModule(zipEntryName)) {
+						hasModuleInfoClass |= zipEntryName.contains(TypeConstants.MODULE_INFO_NAME_STRING);
 						// index only classes coming from valid packages - https://bugs.eclipse.org/bugs/show_bug.cgi?id=293861
 						final byte[] classFileBytes = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip);
 						JavaSearchDocument entryDocument = new JavaSearchDocument(ze, zipFilePath, classFileBytes, participant);
 						this.manager.indexDocument(entryDocument, participant, index, indexPath);
 					}
 				}
+				if (!hasModuleInfoClass) {
+					String s;
+					try {
+						s = this.resource == null ? this.containerPath.toOSString() :
+							JavaModelManager.getLocalFile(this.resource.getFullPath()).toPath().toAbsolutePath().toString();
+						char[] autoModuleName = AutomaticModuleNaming.determineAutomaticModuleName(s);
+						final char[] contents = CharOperation.append(CharOperation.append(TypeConstants.AUTOMATIC_MODULE_NAME.toCharArray(), ':'), autoModuleName);
+						// adding only the automatic module entry here - can be extended in the future to include other fields.
+						ZipEntry ze = new ZipEntry(TypeConstants.AUTOMATIC_MODULE_NAME);
+						JavaSearchDocument entryDocument = new JavaSearchDocument(ze, zipFilePath, new String(contents).getBytes(Charset.defaultCharset()), participant);
+						this.manager.indexDocument(entryDocument, participant, index, indexPath);
+					} catch (CoreException e) {
+						// TODO Auto-generated catch block
+//						e.printStackTrace();
+					}
+				}
 				if(this.forceIndexUpdate) {
 					this.manager.savePreBuiltIndex(index);
 				}
@@ -249,19 +270,12 @@
 			} finally {
 				if (zip != null) {
 					if (JavaModelManager.ZIP_ACCESS_VERBOSE)
-						System.out.println("(" + Thread.currentThread() + ") [AddJarFileToIndex.execute()] Closing ZipFile " + zip); //$NON-NLS-1$	//$NON-NLS-2$
+						System.out.println("(" + Thread.currentThread() + ") [AddJarFileToIndex.execute()] Closing ZipFile " + this.containerPath); //$NON-NLS-1$	//$NON-NLS-2$
 					zip.close();
 				}
 				monitor.exitWrite(); // free write lock
 			}
-		} catch (IOException e) {
-			if (JobManager.VERBOSE) {
-				org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + this.containerPath + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
-				e.printStackTrace();
-			}
-			this.manager.removeIndex(this.containerPath);
-			return false;
-		} catch (ZipError e) { // merge with the code above using '|' when we move to 1.7
+		} catch (IOException | ZipError e) {
 			if (JobManager.VERBOSE) {
 				org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + this.containerPath + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
 				e.printStackTrace();
@@ -271,48 +285,13 @@
 		}
 		return true;
 	}
+	@Override
 	public String getJobFamily() {
 		if (this.resource != null)
 			return super.getJobFamily();
 		return this.containerPath.toOSString(); // external jar
 	}	
-	private boolean isIdentifier() throws InvalidInputException {
-		switch(this.scanner.scanIdentifier()) {
-			// assert and enum will not be recognized as java identifiers 
-			// in 1.7 mode, which are in 1.3.
-			case TerminalTokens.TokenNameIdentifier:
-			case TerminalTokens.TokenNameassert:
-			case TerminalTokens.TokenNameenum:
-				return true;
-			default:
-				return false;
-		}
-	}
-	private  boolean isValidPackageNameForClass(String className) {
-		char[] classNameArray = className.toCharArray();
-		// use 1.7 as the source level as there are more valid identifiers in 1.7 mode
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=376673
-		if (this.scanner == null)
-			this.scanner = new Scanner(false /* comment */, true /* whitespace */, false /* nls */,
-					ClassFileConstants.JDK1_7/* sourceLevel */, null/* taskTag */, null/* taskPriorities */, true /* taskCaseSensitive */);
-		
-		this.scanner.setSource(classNameArray); 
-		this.scanner.eofPosition = classNameArray.length - SuffixConstants.SUFFIX_CLASS.length;
-		try {
-			if (isIdentifier()) {
-				while (this.scanner.eofPosition > this.scanner.currentPosition) {
-					if (this.scanner.getNextChar() != '/' || this.scanner.eofPosition <= this.scanner.currentPosition) {
-						return false;
-					}
-					if (!isIdentifier()) return false;
-				}
-				return true;
-			}
-		} catch (InvalidInputException e) {
-			// invalid class name
-		}
-		return false;
-	}
+	@Override
 	protected Integer updatedIndexState() {
 
 		Integer updateState = null;
@@ -324,6 +303,7 @@
 		}
 		return updateState;
 	}
+	@Override
 	public String toString() {
 		return "indexing " + this.containerPath.toString(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java
new file mode 100644
index 0000000..e23ba7c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/AddJrtToIndex.java
@@ -0,0 +1,317 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.search.indexing;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.nio.file.FileVisitResult;
+import java.nio.file.attribute.BasicFileAttributes;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.aspectj.org.eclipse.jdt.core.search.SearchEngine;
+import org.aspectj.org.eclipse.jdt.core.search.SearchParticipant;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
+import org.aspectj.org.eclipse.jdt.internal.core.index.Index;
+import org.aspectj.org.eclipse.jdt.internal.core.index.IndexLocation;
+import org.aspectj.org.eclipse.jdt.internal.core.search.JavaSearchDocument;
+import org.aspectj.org.eclipse.jdt.internal.core.search.processing.JobManager;
+
+public class AddJrtToIndex extends BinaryContainer {
+
+	IFile resource;
+	private IndexLocation indexFileURL;
+	private final boolean forceIndexUpdate;
+	static final char JAR_SEPARATOR = IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR.charAt(0);
+	
+	enum FILE_INDEX_STATE {
+		EXISTS,
+		DELETED
+	}
+
+	public AddJrtToIndex(IFile resource, IndexLocation indexFile, IndexManager manager, final boolean updateIndex) {
+		super(resource.getFullPath(), manager);
+		this.resource = resource;
+		this.indexFileURL = indexFile;
+		this.forceIndexUpdate = updateIndex;
+	}
+	public AddJrtToIndex(IPath jrtPath, IndexLocation indexFile, IndexManager manager, final boolean updateIndex) {
+		// external JAR scenario - no resource
+		super(jrtPath, manager);
+		this.indexFileURL = indexFile;
+		this.forceIndexUpdate = updateIndex;
+	}
+	@Override
+	public boolean equals(Object o) {
+		if (o instanceof AddJrtToIndex) {
+			if (this.resource != null)
+				return this.resource.equals(((AddJrtToIndex) o).resource);
+			if (this.containerPath != null)
+				return this.containerPath.equals(((AddJrtToIndex) o).containerPath);
+		}
+		return false;
+	}
+	@Override
+	public int hashCode() {
+		if (this.resource != null)
+			return this.resource.hashCode();
+		if (this.containerPath != null)
+			return this.containerPath.hashCode();
+		return -1;
+	}
+	
+	private class JrtTraverser implements org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.JrtFileVisitor<java.nio.file.Path> {
+		
+		SimpleLookupTable indexedFileNames;
+		public JrtTraverser() {
+		}
+		public JrtTraverser(SimpleLookupTable indexedFileNames) {
+			this.indexedFileNames = indexedFileNames;
+		}
+
+		@Override
+		public FileVisitResult visitPackage(java.nio.file.Path dir, java.nio.file.Path mod, BasicFileAttributes attrs)
+				throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+
+		@Override
+		public FileVisitResult visitFile(java.nio.file.Path path, java.nio.file.Path mod, BasicFileAttributes attrs)
+				throws IOException {
+			String name = path.getFileName().toString();
+			if (Util.isClassFileName(name) && 
+					isValidPackageNameForClassOrisModule(name)) {
+				this.indexedFileNames.put(name, FILE_INDEX_STATE.EXISTS);
+			}
+			return FileVisitResult.CONTINUE;
+		}
+		@Override
+		public FileVisitResult visitModule(java.nio.file.Path mod) throws IOException {
+			return FileVisitResult.CONTINUE;
+		}
+	}
+	
+	private class JrtIndexer extends JrtTraverser {
+		final SearchParticipant participant;
+		final IPath indexPath;
+		final IndexManager indexManager;
+		final IPath container;
+		final Index index;
+		final File jrt;
+
+		public JrtIndexer(File jrt, SearchParticipant participant, Index index, IPath container, IndexManager indexManager) {
+			this.jrt = jrt;
+			this.participant = (participant != null) ? participant : SearchEngine.getDefaultSearchParticipant();
+			this.index = index;
+			IndexLocation indexLocation = index.getIndexLocation();
+			this.indexPath = indexLocation != null ? new Path(indexLocation.getCanonicalFilePath()) : null;
+			this.container = container;
+			this.indexManager = indexManager;
+		}
+
+		@Override
+		public FileVisitResult visitFile(java.nio.file.Path path, java.nio.file.Path mod, BasicFileAttributes attrs)
+				throws IOException {
+			String name = path.getFileName().toString();
+			if (Util.isClassFileName(name) && 
+					isValidPackageNameForClassOrisModule(name)) {
+				try {
+					String fullPath = path.toString();
+					byte[] classFileBytes;
+					classFileBytes = JRTUtil.getClassfileContent(this.jrt, fullPath, mod.toString());
+					String docFullPath =  this.container.toString() + JAR_SEPARATOR + mod.toString() + JAR_SEPARATOR + fullPath;
+					JavaSearchDocument entryDocument = new JavaSearchDocument(docFullPath, classFileBytes, this.participant);
+					this.indexManager.indexDocument(entryDocument, this.participant, this.index, this.indexPath);
+				} catch (IOException | ClassFormatException e) {
+					e.printStackTrace();
+				}
+			}
+			return FileVisitResult.CONTINUE;
+		}
+	}
+
+	@Override
+	public boolean execute(IProgressMonitor progressMonitor) {
+
+		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
+
+		if (hasPreBuiltIndex()) {
+			boolean added = this.manager.addIndex(this.containerPath, this.indexFileURL);
+			if (added) return true;	
+			this.indexFileURL = null;
+		}
+
+		try {
+			// if index is already cached, then do not perform any check
+			// MUST reset the IndexManager if a jar file is changed
+			if (this.manager.getIndexForUpdate(this.containerPath, false, /*do not reuse index file*/ false /*do not create if none*/) != null) {
+				if (JobManager.VERBOSE)
+					org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> no indexing required (index already exists) for " + this.containerPath); //$NON-NLS-1$
+				return true;
+			}
+
+			final Index index = this.manager.getIndexForUpdate(this.containerPath, true, /*reuse index file*/ true /*create if none*/);
+			if (index == null) {
+				if (JobManager.VERBOSE)
+					org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> index could not be created for " + this.containerPath); //$NON-NLS-1$
+				return true;
+			}
+			index.separator = JAR_SEPARATOR;
+			ReadWriteMonitor monitor = index.monitor;
+			if (monitor == null) {
+				if (JobManager.VERBOSE)
+					org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> index for " + this.containerPath + " just got deleted"); //$NON-NLS-1$//$NON-NLS-2$
+				return true; // index got deleted since acquired
+			}
+			try {
+				final String fileName;
+				final IPath container;
+				monitor.enterWrite(); // ask permission to write
+
+				if (this.resource != null) {
+					URI location = this.resource.getLocationURI();
+					if (location == null) return false;
+					if (JavaModelManager.JRT_ACCESS_VERBOSE)
+						System.out.println("(" + Thread.currentThread() + ") [AddJrtFileToIndex.execute()] Creating ZipFile on " + location.getPath()); //$NON-NLS-1$	//$NON-NLS-2$
+					File file = null;
+					try {
+						file = org.aspectj.org.eclipse.jdt.internal.core.util.Util.toLocalFile(location, progressMonitor);
+					} catch (CoreException e) {
+						if (JobManager.VERBOSE) {
+							org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + location.getPath() + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
+							e.printStackTrace();
+						}
+					}
+					if (file == null) {
+						if (JobManager.VERBOSE)
+							org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + location.getPath() + " because the file could not be fetched"); //$NON-NLS-1$ //$NON-NLS-2$
+						return false;
+					}
+					fileName = file.getAbsolutePath();
+					container =  this.resource.getFullPath().makeRelative();
+					// absolute path relative to the workspace
+				} else {
+					
+					fileName = this.containerPath.toOSString();
+					container = this.containerPath;
+				}
+
+
+				if (JobManager.VERBOSE)
+					org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> indexing " + fileName); //$NON-NLS-1$
+				long initialTime = System.currentTimeMillis();
+				String[] paths = index.queryDocumentNames(""); // all file names //$NON-NLS-1$
+				if (paths != null) {
+					int max = paths.length;
+					/* check integrity of the existing index file
+					 * if the length is equal to 0, we want to index the whole jrt again
+					 * If not, then we want to check that there is no missing entry, if
+					 * one entry is missing then we recreate the index
+					 */
+					
+					final SimpleLookupTable indexedFileNames = new SimpleLookupTable(max == 0 ? 33 : max + 11);
+					for (int i = 0; i < max; i++)
+						indexedFileNames.put(paths[i], FILE_INDEX_STATE.DELETED);
+					
+					org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(new File(fileName), 
+							new JrtTraverser(indexedFileNames), JRTUtil.NOTIFY_FILES);
+
+					boolean needToReindex = indexedFileNames.elementSize != max; // a new file was added
+					if (!needToReindex) {
+						Object[] valueTable = indexedFileNames.valueTable;
+						for (int i = 0, l = valueTable.length; i < l; i++) {
+							if (valueTable[i] == FILE_INDEX_STATE.DELETED) {
+								needToReindex = true; // a file was deleted so re-index
+								break;
+							}
+						}
+						if (!needToReindex) {
+							if (JobManager.VERBOSE)
+								org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> no indexing required (index is consistent with library) for " //$NON-NLS-1$
+								+ fileName + " (" //$NON-NLS-1$
+								+ (System.currentTimeMillis() - initialTime) + "ms)"); //$NON-NLS-1$
+							this.manager.saveIndex(index); // to ensure its placed into the saved state
+							return true;
+						}
+					}
+				}
+
+				// Index the jrt for the first time or reindex the jrt in case the previous index file has been corrupted
+				// index already existed: recreate it so that we forget about previous entries
+				if (!this.manager.resetIndex(this.containerPath)) {
+					// failed to recreate index, see 73330
+					this.manager.removeIndex(this.containerPath);
+					return false;
+				}
+				
+				File jrt = new File(fileName);
+				org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(jrt, 
+						new JrtIndexer(jrt, SearchEngine.getDefaultSearchParticipant(), index, container, this.manager), JRTUtil.NOTIFY_FILES);
+
+				if(this.forceIndexUpdate) {
+					this.manager.savePreBuiltIndex(index);
+				}
+				else {
+					this.manager.saveIndex(index);
+				}
+				if (JobManager.VERBOSE)
+					org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> done indexing of " //$NON-NLS-1$
+						+ fileName + " (" //$NON-NLS-1$
+						+ (System.currentTimeMillis() - initialTime) + "ms)"); //$NON-NLS-1$
+			} finally {
+				monitor.exitWrite();
+			}
+		} catch (IOException e ) {
+			if (JobManager.VERBOSE) {
+				org.aspectj.org.eclipse.jdt.internal.core.util.Util.verbose("-> failed to index " + this.containerPath + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
+				e.printStackTrace();
+			}
+			this.manager.removeIndex(this.containerPath);
+			return false;
+		}
+		return true;
+	}
+	@Override
+	public String getJobFamily() {
+		if (this.resource != null)
+			return super.getJobFamily();
+		return this.containerPath.toOSString(); // external jar
+	}	
+	@Override
+	protected Integer updatedIndexState() {
+
+		Integer updateState = null;
+		if(hasPreBuiltIndex()) {
+			updateState = IndexManager.REUSE_STATE;
+		}
+		else {
+			updateState = IndexManager.REBUILDING_STATE;
+		}
+		return updateState;
+	}
+	@Override
+	public String toString() {
+		return "indexing " + this.containerPath.toString(); //$NON-NLS-1$
+	}
+
+	protected boolean hasPreBuiltIndex() {
+		return !this.forceIndexUpdate && (this.indexFileURL != null && this.indexFileURL.exists());
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.java
new file mode 100644
index 0000000..2c4f8c9
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryContainer.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2016 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.search.indexing;
+
+import org.eclipse.core.runtime.IPath;
+import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
+import org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
+
+public abstract class BinaryContainer extends IndexRequest {
+
+	Scanner scanner;
+	public BinaryContainer(IPath containerPath, IndexManager manager) {
+		super(containerPath, manager);
+	}
+
+	private boolean isIdentifier() throws InvalidInputException {
+		switch(this.scanner.scanIdentifier()) {
+			// assert and enum will not be recognized as java identifiers 
+			// in 1.7 mode, which are in 1.3.
+			case TerminalTokens.TokenNameIdentifier:
+			case TerminalTokens.TokenNameassert:
+			case TerminalTokens.TokenNameenum:
+				return true;
+			default:
+				return false;
+		}
+	}
+	protected boolean isValidPackageNameForClassOrisModule(String className) {
+		if (className.substring(0, className.length() - (SuffixConstants.SUFFIX_CLASS.length)).equals(new String(IIndexConstants.MODULE_INFO))) 
+			return true;
+		char[] classNameArray = className.toCharArray();
+		// use 1.7 as the source level as there are more valid identifiers in 1.7 mode
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=376673
+		if (this.scanner == null)
+			this.scanner = new Scanner(false /* comment */, true /* whitespace */, false /* nls */,
+					ClassFileConstants.JDK1_7/* sourceLevel */, null/* taskTag */, null/* taskPriorities */, true /* taskCaseSensitive */);
+		
+		this.scanner.setSource(classNameArray); 
+		this.scanner.eofPosition = classNameArray.length - SuffixConstants.SUFFIX_CLASS.length;
+		try {
+			if (isIdentifier()) {
+				while (this.scanner.eofPosition > this.scanner.currentPosition) {
+					if (this.scanner.getNextChar() != '/' || this.scanner.eofPosition <= this.scanner.currentPosition) {
+						return false;
+					}
+					if (!isIdentifier()) return false;
+				}
+				return true;
+			}
+		} catch (InvalidInputException e) {
+			// invalid class name
+		}
+		return false;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.java
index e86f091..1c24b7e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/BinaryIndexer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,8 @@
 package org.aspectj.org.eclipse.jdt.internal.core.search.indexing;
 
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.Signature;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
 import org.aspectj.org.eclipse.jdt.core.search.SearchDocument;
@@ -25,6 +27,10 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.EnumConstantSignature;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryAnnotation;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryElementValuePair;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IService;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TagBits;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
@@ -145,6 +151,13 @@
 			}
 			addFieldReference(TypeConstants.TYPE);
 		}
+		if ((bits & TagBits.AnnotationForModule) != 0) {
+			if (compoundName == null) {
+				compoundName = TypeConstants.JAVA_LANG_ANNOTATION_ELEMENTTYPE;
+				addTypeReference(compoundName[compoundName.length-1]);
+			}
+			addFieldReference(TypeConstants.UPPER_MODULE);
+		}
 	}
 	private void addBinaryRetentionAnnotation(long bits) {
 		char[][] compoundName = TypeConstants.JAVA_LANG_ANNOTATION_RETENTIONPOLICY;
@@ -186,6 +199,7 @@
 			}
 		}
 	}
+	@Override
 	public void addTypeReference(char[] typeName) {
 		int length = typeName.length;
 		if (length > 2 && typeName[length - 2] == '$') {
@@ -624,6 +638,7 @@
 		int utf8Offset = constantPoolOffsets[reader.u2At(constantPoolOffsets[constantPoolIndex] + 3)];
 		return reader.utf8At(utf8Offset + 3, reader.u2At(utf8Offset + 1));
 	}
+	@Override
 	public void indexDocument() {
 		try {
 			final byte[] contents = this.document.getByteContents();
@@ -632,6 +647,12 @@
 			if (contents == null) return;
 			final String path = this.document.getPath();
 			ClassFileReader reader = new ClassFileReader(contents, path == null ? null : path.toCharArray());
+			
+			IModule module = reader.getModuleDeclaration();
+			if (module != null) {
+				indexModule(module);
+				return;
+			}
 
 			// first add type references
 			char[] className = replace('/', '.', reader.getName()); // looks like java/lang/String
@@ -815,16 +836,72 @@
 		} catch (ClassFormatException e) {
 			// ignore
 			this.document.removeAllIndexEntries();
-			Util.log(IStatus.WARNING, "The Java indexing could not index " + this.document.getPath() + ". This .class file doesn't follow the class file format specification. Please report this issue against the .class file vendor"); //$NON-NLS-1$ //$NON-NLS-2$
+			Util.log(new Status(IStatus.WARNING,
+					JavaCore.PLUGIN_ID,
+					"The Java indexing could not index " + this.document.getPath() + ". This .class file doesn't follow the class file format specification. Please report this issue against the .class file vendor", //$NON-NLS-1$ //$NON-NLS-2$
+					e));
 		} catch (RuntimeException e) {
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=182154
 			// logging the entry that could not be indexed and continue with the next one
 			// we remove all entries relative to the boggus document
 			this.document.removeAllIndexEntries();
-			Util.log(IStatus.WARNING, "The Java indexing could not index " + this.document.getPath() + ". This .class file doesn't follow the class file format specification. Please report this issue against the .class file vendor"); //$NON-NLS-1$ //$NON-NLS-2$
+			Util.log(new Status(IStatus.WARNING,
+					JavaCore.PLUGIN_ID,
+					"The Java indexing could not index " + this.document.getPath() + ". This .class file doesn't follow the class file format specification. Please report this issue against the .class file vendor", //$NON-NLS-1$ //$NON-NLS-2$
+					e));
 		}
 	}
 	
+	private void indexModule(IModule module) {
+		addModuleDeclaration(module.name());
+		IModuleReference[] requiredModules = module.requires();
+		if (requiredModules != null) {
+			for (IModuleReference req : requiredModules) {
+				addModuleReference(req.name());
+			}
+		}
+		indexPackageVisibilityDirective(module.exports());
+		indexPackageVisibilityDirective(module.opens());
+		char[][] refUsed = module.uses();
+		if (refUsed != null) {
+			for (char[] ref : refUsed) {
+				indexTypeReference(ref);
+			}
+		}
+		IService[] services = module.provides();
+		if (services != null) {
+			for (IService service : services) {
+				indexTypeReference(service.name());
+				indexTypeReferences(service.with());
+			}
+		}
+	}
+	private void indexPackageVisibilityDirective(IPackageExport[] exportedPackages) {
+		if (exportedPackages != null) {
+			for (IPackageExport pack : exportedPackages) {
+				addModuleExportedPackages(pack.name());
+				char[][] tgts = pack.targets();
+				if (tgts == null || tgts == CharOperation.NO_CHAR_CHAR) continue;
+				for (char[] tgt : tgts) {
+					if (tgt != null && tgt != CharOperation.NO_CHAR)
+						addModuleReference(tgt);
+				}
+			}
+		}
+	}
+	private void indexTypeReferences(char[][] ref) {
+		if (ref == null || ref == CharOperation.NO_CHAR_CHAR)
+			return;
+		for (int i = 0; i < ref.length; i++) {
+			addTypeReference(ref[i]);
+		}
+	}
+	private void indexTypeReference(char[] ref) {
+		if (ref == null || ref == CharOperation.NO_CHAR)
+			return;
+		addTypeReference(ref);
+	}
+	
 	private char[] removeFirstSyntheticParameter(char[] descriptor) {
 		if (descriptor == null) return null;
 		if (descriptor.length < 3) return descriptor;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java
index 7b95441..d345f41 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IIndexConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -25,7 +25,10 @@
 	char[] METHOD_DECL_PLUS= "methodDeclPlus".toCharArray(); //$NON-NLS-1$
 	char[] CONSTRUCTOR_DECL= "constructorDecl".toCharArray(); //$NON-NLS-1$
 	char[] FIELD_DECL= "fieldDecl".toCharArray(); //$NON-NLS-1$
+	char[] MODULE_DECL= "moduleDecl".toCharArray(); //$NON-NLS-1$
+	char[] MODULE_REF= "moduleRef".toCharArray(); //$NON-NLS-1$
 	char[] OBJECT = "Object".toCharArray(); //$NON-NLS-1$
+	char[] MODULE_INFO = "module-info".toCharArray(); ////$NON-NLS-1$
 	char[][] COUNTS=
 		new char[][] { new char[] {'/', '0'}, new char[] {'/', '1'}, new char[] {'/', '2'}, new char[] {'/', '3'}, new char[] {'/', '4'},
 			new char[] {'/', '5'}, new char[] {'/', '6'}, new char[] {'/', '7'}, new char[] {'/', '8'}, new char[] {'/', '9'}
@@ -64,4 +67,5 @@
 	int TYPE_PARAM_PATTERN = 0x0400;
 	int AND_PATTERN = 0x0800;
 	int ANNOT_REF_PATTERN = 0x1000;
+	int MODULE_PATTERN = 0x2000;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.java
index 2321104..b49b936 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexAllProject.java
@@ -42,6 +42,7 @@
 		super(project.getFullPath(), manager);
 		this.project = project;
 	}
+	@Override
 	public boolean equals(Object o) {
 		if (o instanceof IndexAllProject)
 			return this.project.equals(((IndexAllProject) o).project);
@@ -52,6 +53,7 @@
 	 * and discover resources which have either been changed, added or deleted
 	 * since the index was produced.
 	 */
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -137,6 +139,7 @@
 					if (max == 0) {
 						sourceFolder.accept(
 							new IResourceProxyVisitor() {
+								@Override
 								public boolean visit(IResourceProxy proxy) {
 									if (IndexAllProject.this.isCancelled) return false;
 									switch(proxy.getType()) {
@@ -166,6 +169,7 @@
 					} else {
 						sourceFolder.accept(
 							new IResourceProxyVisitor() {
+								@Override
 								public boolean visit(IResourceProxy proxy) throws CoreException {
 									if (IndexAllProject.this.isCancelled) return false;
 									switch(proxy.getType()) {
@@ -241,12 +245,15 @@
 		}
 		return true;
 	}
+	@Override
 	public int hashCode() {
 		return this.project.hashCode();
 	}
+	@Override
 	protected Integer updatedIndexState() {
 		return IndexManager.REBUILDING_STATE;
 	}
+	@Override
 	public String toString() {
 		return "indexing project " + this.project.getFullPath(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.java
index 9323db8..ac7d143 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexBinaryFolder.java
@@ -33,6 +33,7 @@
 		super(folder.getFullPath(), manager);
 		this.folder = folder;
 	}
+	@Override
 	public boolean equals(Object o) {
 		if (o instanceof IndexBinaryFolder)
 			return this.folder.equals(((IndexBinaryFolder) o).folder);
@@ -43,6 +44,7 @@
 	 * and discover resources which have either been changed, added or deleted
 	 * since the index was produced.
 	 */
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -63,6 +65,7 @@
 			final String DELETED = "DELETED"; //$NON-NLS-1$
 			if (paths == null) {
 				this.folder.accept(new IResourceProxyVisitor() {
+					@Override
 					public boolean visit(IResourceProxy proxy) {
 						if (IndexBinaryFolder.this.isCancelled) return false;
 						if (proxy.getType() == IResource.FILE) {
@@ -83,6 +86,7 @@
 				final long indexLastModified = index.getIndexLastModified();
 				this.folder.accept(
 					new IResourceProxyVisitor() {
+						@Override
 						public boolean visit(IResourceProxy proxy) throws CoreException {
 							if (IndexBinaryFolder.this.isCancelled) return false;
 							if (proxy.getType() == IResource.FILE) {
@@ -147,12 +151,15 @@
 		}
 		return true;
 	}
+	@Override
 	public int hashCode() {
 		return this.folder.hashCode();
 	}
+	@Override
 	protected Integer updatedIndexState() {
 		return IndexManager.REBUILDING_STATE;
 	}
+	@Override
 	public String toString() {
 		return "indexing binary folder " + this.folder.getFullPath(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
index dfceeda..88651fe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexManager.java
@@ -42,6 +42,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.SourceElementParser;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.JRTUtil;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
 import org.aspectj.org.eclipse.jdt.internal.core.ClasspathEntry;
@@ -53,6 +54,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.index.Index;
 import org.aspectj.org.eclipse.jdt.internal.core.index.IndexLocation;
 import org.aspectj.org.eclipse.jdt.internal.core.nd.indexer.Indexer;
+import org.aspectj.org.eclipse.jdt.internal.core.nd.java.JavaIndex;
 import org.aspectj.org.eclipse.jdt.internal.core.search.BasicSearchEngine;
 import org.aspectj.org.eclipse.jdt.internal.core.search.PatternSearchJob;
 import org.aspectj.org.eclipse.jdt.internal.core.search.processing.IJob;
@@ -69,6 +71,11 @@
 	// key = indexLocation path, value = an index
 	private SimpleLookupTable indexes = new SimpleLookupTable();
 
+	/**
+	 * The new indexer
+	 */
+	private Indexer indexer = Indexer.getInstance();
+
 	/* need to save ? */
 	private boolean needToSave = false;
 	private IPath javaPluginLocation = null;
@@ -77,7 +84,6 @@
 	// key = indexLocation path, value = index state integer
 	private SimpleLookupTable indexStates = null;
 	private File indexNamesMapFile = new File(getSavedIndexesDirectory(), "indexNamesMap.txt"); //$NON-NLS-1$
-	private File savedIndexNamesFile = new File(getSavedIndexesDirectory(), "savedIndexNames.txt"); //$NON-NLS-1$
 	private File participantIndexNamesFile = new File(getSavedIndexesDirectory(), "participantsIndexNames.txt"); //$NON-NLS-1$
 	private boolean javaLikeNamesChanged = true;
 	public static final Integer SAVED_STATE = 0;
@@ -85,7 +91,9 @@
 	public static final Integer UNKNOWN_STATE = 2;
 	public static final Integer REBUILDING_STATE = 3;
 	public static final Integer REUSE_STATE = 4;
-	
+
+	private final IndexNamesRegistry nameRegistry = new IndexNamesRegistry(new File(getSavedIndexesDirectory(), 
+			"savedIndexNames.txt"), getJavaPluginWorkingLocation()); //$NON-NLS-1$
 	// search participants who register indexes with the index manager
 	private SimpleLookupTable participantsContainers = null;
 	private boolean participantUpdated = false;
@@ -99,8 +107,6 @@
 
 
 public synchronized void aboutToUpdateIndex(IPath containerPath, Integer newIndexState) {
-	// TODO(sxenos): Find a more appropriate and more specific place to trigger re-indexing
-	Indexer.getInstance().rescanAll();
 	// newIndexState is either UPDATING_STATE or REBUILDING_STATE
 	// must tag the index as inconsistent, in case we exit before the update job is started
 	IndexLocation indexLocation = computeIndexLocation(containerPath);
@@ -222,7 +228,7 @@
 public void deleteIndexFiles(IProgressMonitor monitor) {
 	if (DEBUG)
 		Util.verbose("Deleting index files"); //$NON-NLS-1$
-	this.savedIndexNamesFile.delete(); // forget saved indexes & delete each index file
+	this.nameRegistry.delete(); // forget saved indexes & delete each index file
 	deleteIndexFiles(null, monitor);
 }
 private void deleteIndexFiles(SimpleSet pathsToKeep, IProgressMonitor monitor) {
@@ -246,6 +252,7 @@
  * Creates an empty index at the given location, for the given container path, if none exist.
  */
 public synchronized void ensureIndexExists(IndexLocation indexLocation, IPath containerPath) {
+	this.indexer.makeWorkspacePathDirty(containerPath);
 	SimpleLookupTable states = getIndexStates();
 	Object state = states.get(indexLocation);
 	if (state == null) {
@@ -451,7 +458,7 @@
 
 	this.indexStates = new SimpleLookupTable();
 	File indexesDirectoryPath = getSavedIndexesDirectory();
-	char[][] savedNames = readIndexState(getJavaPluginWorkingLocation().toOSString());
+	char[][] savedNames = this.nameRegistry.read(null);
 	if (savedNames != null) {
 		for (int i = 1, l = savedNames.length; i < l; i++) { // first name is saved signature, see readIndexState()
 			char[] savedName = savedNames[i];
@@ -557,6 +564,7 @@
  * Note: the actual operation is performed in background
  */
 public void indexAll(IProject project) {
+	this.indexer.makeDirty(project);
 	if (JavaCore.getPlugin() == null) return;
 
 	// Also request indexing of binaries on the classpath
@@ -585,11 +593,20 @@
 	this.indexLibrary(path, requestingProject, indexURL, false);
 }
 
+private IndexRequest getRequest(Object target, IPath jPath, IndexLocation indexFile, IndexManager manager, boolean updateIndex) {
+	return isJrt(((File) target).getName()) ? new AddJrtToIndex(jPath, indexFile, this, updateIndex) :
+		new AddJarFileToIndex(jPath, indexFile, this, updateIndex);
+}
+
+private boolean isJrt(String fileName) {
+	return fileName != null && fileName.endsWith(JRTUtil.JRT_FS_JAR);
+}
 /**
  * Trigger addition of a library to an index
  * Note: the actual operation is performed in background
  */
 public void indexLibrary(IPath path, IProject requestingProject, URL indexURL, final boolean updateIndex) {
+	this.indexer.makeWorkspacePathDirty(path);
 	// requestingProject is no longer used to cancel jobs but leave it here just in case
 	IndexLocation indexFile = null;
 	boolean forceIndexUpdate = false;
@@ -611,9 +628,11 @@
 	IndexRequest request = null;
 	Object target = JavaModel.getTarget(path, true);
 	if (target instanceof IFile) {
-		request = new AddJarFileToIndex((IFile) target, indexFile, this, forceIndexUpdate);
+		request = isJrt(((IFile) target).getFullPath().toOSString()) ? 
+				new AddJrtToIndex((IFile) target, indexFile, this, forceIndexUpdate) :
+					new AddJarFileToIndex((IFile) target, indexFile, this, forceIndexUpdate);
 	} else if (target instanceof File) {
-		request = new AddJarFileToIndex(path, indexFile, this, forceIndexUpdate);
+		request = getRequest(target, path, indexFile, this, forceIndexUpdate);
 	} else if (target instanceof IContainer) {
 		request = new IndexBinaryFolder((IContainer) target, this);
 	} else {
@@ -643,6 +662,7 @@
  */
 public void indexSourceFolder(JavaProject javaProject, IPath sourceFolder, char[][] inclusionPatterns, char[][] exclusionPatterns) {
 	IProject project = javaProject.getProject();
+	this.indexer.makeWorkspacePathDirty(sourceFolder);
 	if (this.jobEnd > this.jobStart) {
 		// skip it if a job to index the project is already in the queue
 		IndexRequest request = new IndexAllProject(project, this);
@@ -664,6 +684,7 @@
  * Advance to the next available job, once the current one has been completed.
  * Note: clients awaiting until the job count is zero are still waiting at this point.
  */
+@Override
 protected synchronized void moveToNextJob() {
 	// remember that one job was executed, and we will need to save indexes at some point
 	this.needToSave = true;
@@ -672,12 +693,14 @@
 /**
  * No more job awaiting.
  */
+@Override
 protected void notifyIdle(long idlingTime){
 	if (idlingTime > 1000 && this.needToSave) saveIndexes();
 }
 /**
  * Name of the background process
  */
+@Override
 public String processName(){
 	return Messages.process_name;
 }
@@ -702,6 +725,7 @@
 	rebuildIndex(indexLocation, containerPath, false);
 }
 private void rebuildIndex(IndexLocation indexLocation, IPath containerPath, final boolean updateIndex) {
+	this.indexer.makeWorkspacePathDirty(containerPath);
 	Object target = JavaModel.getTarget(containerPath, true);
 	if (target == null) return;
 
@@ -717,9 +741,11 @@
 	} else if (target instanceof IFolder) {
 		request = new IndexBinaryFolder((IFolder) target, this);
 	} else if (target instanceof IFile) {
-		request = new AddJarFileToIndex((IFile) target, null, this, updateIndex);
+		request = isJrt(((IFile) target).getFullPath().toOSString()) ? 
+				new AddJrtToIndex((IFile) target, null, this, updateIndex) :
+					new AddJarFileToIndex((IFile) target, null, this, updateIndex);
 	} else if (target instanceof File) {
-		request = new AddJarFileToIndex(containerPath, null, this, updateIndex);
+		request = getRequest(target, containerPath, null, this, updateIndex);
 	}
 	if (request != null)
 		request(request);
@@ -758,6 +784,7 @@
  * Note: the actual operation is performed in background
  */
 public void remove(String containerRelativePath, IPath indexedContainer){
+	this.indexer.makeWorkspacePathDirty(indexedContainer);
 	request(new RemoveFromIndex(containerRelativePath, indexedContainer, this));
 }
 /**
@@ -767,6 +794,7 @@
 public synchronized void removeIndex(IPath containerPath) {
 	if (VERBOSE || DEBUG)
 		Util.verbose("removing index " + containerPath); //$NON-NLS-1$
+	this.indexer.makeWorkspacePathDirty(containerPath);
 	IndexLocation indexLocation = computeIndexLocation(containerPath);
 	Index index = getIndex(indexLocation);
 	File indexFile = null;
@@ -796,6 +824,7 @@
 public synchronized void removeIndexPath(IPath path) {
 	if (VERBOSE || DEBUG)
 		Util.verbose("removing index path " + path); //$NON-NLS-1$
+	this.indexer.makeWorkspacePathDirty(path);
 	Object[] keyTable = this.indexes.keyTable;
 	Object[] valueTable = this.indexes.valueTable;
 	IndexLocation[] locations = null;
@@ -842,6 +871,7 @@
  * Removes all indexes whose paths start with (or are equal to) the given path.
  */
 public synchronized void removeIndexFamily(IPath path) {
+	this.indexer.makeWorkspacePathDirty(path);
 	// only finds cached index files... shutdown removes all non-cached index files
 	ArrayList toRemove = null;
 	Object[] containerPaths = this.indexLocations.keyTable;
@@ -862,6 +892,7 @@
  * Remove the content of the given source folder from the index.
  */
 public void removeSourceFolderFromIndex(JavaProject javaProject, IPath sourceFolder, char[][] inclusionPatterns, char[][] exclusionPatterns) {
+	this.indexer.makeWorkspacePathDirty(sourceFolder);
 	IProject project = javaProject.getProject();
 	if (this.jobEnd > this.jobStart) {
 		// skip it if a job to index the project is already in the queue
@@ -874,6 +905,7 @@
 /**
  * Flush current state
  */
+@Override
 public void reset() {
 	super.reset();
 	synchronized (this) {
@@ -1003,7 +1035,10 @@
 	this.needToSave = !allSaved;
 }
 public void scheduleDocumentIndexing(final SearchDocument searchDocument, IPath container, final IndexLocation indexLocation, final SearchParticipant searchParticipant) {
+	IPath targetLocation = JavaIndex.getLocationForPath(new Path(searchDocument.getPath()));
+	this.indexer.makeDirty(targetLocation);
 	request(new IndexRequest(container, this) {
+		@Override
 		public boolean execute(IProgressMonitor progressMonitor) {
 			if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
 
@@ -1024,12 +1059,18 @@
 			}
 			return true;
 		}
+		@Override
 		public String toString() {
 			return "indexing " + searchDocument.getPath(); //$NON-NLS-1$
 		}
+		@Override
+		public boolean waitNeeded() {
+			return false;
+		}
 	});
 }
 
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer(10);
 	buffer.append(super.toString());
@@ -1066,24 +1107,6 @@
 	}
 	return;
 }
-private char[][] readIndexState(String dirOSString) {
-	try {
-		char[] savedIndexNames = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.getFileCharContent(this.savedIndexNamesFile, null);
-		if (savedIndexNames.length > 0) {
-			char[][] names = CharOperation.splitOn('\n', savedIndexNames);
-			if (names.length > 1) {
-				// First line is DiskIndex signature + saved plugin working location (see writeSavedIndexNamesFile())
-				String savedSignature = DiskIndex.SIGNATURE + "+" + dirOSString; //$NON-NLS-1$
-				if (savedSignature.equals(new String(names[0])))
-					return names;
-			}
-		}
-	} catch (IOException ignored) {
-		if (VERBOSE)
-			Util.verbose("Failed to read saved index file names"); //$NON-NLS-1$
-	}
-	return null;
-}
 private void readParticipantsIndexNamesFile() {
 	SimpleLookupTable containers = new SimpleLookupTable(3);
 	try {
@@ -1263,33 +1286,23 @@
 	}
 }
 private void writeSavedIndexNamesFile() {
-	BufferedWriter writer = null;
-	try {
-		writer = new BufferedWriter(new FileWriter(this.savedIndexNamesFile));
-		writer.write(DiskIndex.SIGNATURE);
-		writer.write('+');
-		writer.write(getJavaPluginWorkingLocation().toOSString());
-		writer.write('\n');
-		Object[] keys = this.indexStates.keyTable;
-		Object[] states = this.indexStates.valueTable;
-		for (int i = 0, l = states.length; i < l; i++) {
-			IndexLocation key = (IndexLocation) keys[i];
-			if (key != null && states[i] == SAVED_STATE) {
-				writer.write(key.fileName());
-				writer.write('\n');
-			}
-		}
-	} catch (IOException ignored) {
-		if (VERBOSE)
-			Util.verbose("Failed to write saved index file names", System.err); //$NON-NLS-1$
-	} finally {
-		if (writer != null) {
-			try {
-				writer.close();
-			} catch (IOException e) {
-				// ignore
-			}
+	Object[] keys = this.indexStates.keyTable;
+	Object[] states = this.indexStates.valueTable;
+	int numToSave = 0;
+	for (int i = 0, l = states.length; i < l; i++) {
+		IndexLocation key = (IndexLocation) keys[i];
+		if (key != null && states[i] == SAVED_STATE) {
+			numToSave++;
 		}
 	}
+	char[][] arrays = new char[numToSave][];
+	int idx = 0;
+	for (int i = 0, l = states.length; i < l; i++) {
+		IndexLocation key = (IndexLocation) keys[i];
+		if (key != null && states[i] == SAVED_STATE) {
+			arrays[idx++] = key.fileName().toCharArray();
+		}
+	}
+	this.nameRegistry.write(arrays);
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.java
new file mode 100644
index 0000000..7b19194
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexNamesRegistry.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Google, Inc and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Stefan Xenos (Google) - Initial implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.search.indexing;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.Job;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.core.index.DiskIndex;
+import org.aspectj.org.eclipse.jdt.internal.core.search.processing.JobManager;
+import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
+
+public class IndexNamesRegistry {
+	private final File savedIndexNamesFile;
+	private final Job writeJob;
+	private final IPath javaPluginWorkingLocation;
+
+	private final Object queueMutex = new Object();
+	/**
+	 * Outstanding write that is waiting to be processed. Null if there are no outstanding writes. Synchronize on
+	 * queueMutex before accessing.
+	 */
+	private char[][] pendingWrite;
+
+	public IndexNamesRegistry(File savedIndexNamesFile, IPath javaPluginWorkingLocation) {
+		super();
+		this.savedIndexNamesFile = savedIndexNamesFile;
+		this.writeJob = Job.create("Updating index names", this::save); //$NON-NLS-1$
+		this.writeJob.setSystem(true);
+		this.javaPluginWorkingLocation = javaPluginWorkingLocation;
+	}
+
+	public void write(char[][] newContents) {
+		synchronized (this.queueMutex) {
+			this.pendingWrite = newContents;
+		}
+		this.writeJob.schedule();
+	}
+
+	/**
+	 * Returns the contents of the index names registry.
+	 */
+	public char[][] read(IProgressMonitor monitor) {
+		// If there is currently a write in progress, return the contents that are about to be written to disk.
+		char[][] newContents;
+		synchronized (this.queueMutex) {
+			newContents = this.pendingWrite;
+		}
+
+		if (newContents != null) {
+			return newContents;
+		}
+
+		// Otherwise, read fresh contents from disk
+		try {
+			char[] savedIndexNames = org.aspectj.org.eclipse.jdt.internal.compiler.util.Util
+					.getFileCharContent(this.savedIndexNamesFile, null);
+			if (savedIndexNames.length > 0) {
+				char[][] names = CharOperation.splitOn('\n', savedIndexNames);
+				if (names.length > 1) {
+					// First line is DiskIndex signature + saved plugin working location (see writeSavedIndexNamesFile())
+					String savedSignature = DiskIndex.SIGNATURE + "+" + this.javaPluginWorkingLocation.toOSString(); //$NON-NLS-1$
+					if (savedSignature.equals(new String(names[0])))
+						return names;
+				}
+			}
+		} catch (IOException ignored) {
+			if (JobManager.VERBOSE)
+				Util.verbose("Failed to read saved index file names"); //$NON-NLS-1$
+		}
+		return null;
+	}
+
+	private void save(IProgressMonitor monitor) {
+		SubMonitor subMonitor = SubMonitor.convert(monitor);
+		char[][] newContents;
+		synchronized (this.queueMutex) {
+			newContents = this.pendingWrite;
+		}
+
+		if (newContents == null) {
+			return;
+		}
+
+		subMonitor.setWorkRemaining(newContents.length);
+		
+		try (BufferedWriter writer = new BufferedWriter(new FileWriter(this.savedIndexNamesFile))) {
+			writer.write(DiskIndex.SIGNATURE);
+			writer.write('+');
+			writer.write(this.javaPluginWorkingLocation.toOSString());
+			writer.write('\n');
+			for (char[] next : newContents) {
+				subMonitor.split(1);
+				writer.write(next);
+				writer.write('\n');
+			}
+		} catch (IOException ignored) {
+			if (JobManager.VERBOSE)
+				Util.verbose("Failed to write saved index file names", System.err); //$NON-NLS-1$
+		}
+
+		synchronized (this.queueMutex) {
+			if (this.pendingWrite == newContents) {
+				this.pendingWrite = null;
+			}
+		}
+	}
+
+	public void delete() {
+		synchronized (this.queueMutex) {
+			this.pendingWrite = null;
+		}
+		this.writeJob.cancel();
+		try {
+			this.writeJob.join();
+		} catch (InterruptedException e) {
+			// Nothing to do
+		}
+		synchronized (this.queueMutex) {
+			this.pendingWrite = null;
+		}
+		this.savedIndexNamesFile.delete(); 
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.java
index c2ae14c..a9d66ff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexRequest.java
@@ -22,24 +22,32 @@
 		this.containerPath = containerPath;
 		this.manager = manager;
 	}
+	@Override
 	public boolean belongsTo(String projectNameOrJarPath) {
 		// used to remove pending jobs because the project was deleted... not to delete index files
 		// can be found either by project name or JAR path name
 		return projectNameOrJarPath.equals(this.containerPath.segment(0))
 			|| projectNameOrJarPath.equals(this.containerPath.toString());
 	}
+	@Override
 	public void cancel() {
 		this.manager.jobWasCancelled(this.containerPath);
 		this.isCancelled = true;
 	}
+	@Override
 	public void ensureReadyToRun() {
 		// tag the index as inconsistent
 		this.manager.aboutToUpdateIndex(this.containerPath, updatedIndexState());
 	}
+	@Override
 	public String getJobFamily() {
 		return this.containerPath.toString();
 	}
 	protected Integer updatedIndexState() {
 		return IndexManager.UPDATING_STATE;
 	}
+	@Override
+	public boolean waitNeeded() {
+		return true;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.java
index c112fd8..0a26c61 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/IndexingParser.java
@@ -33,6 +33,7 @@
 				optimizeStringLiterals, useSourceJavadocParser);
 	}
 
+	@Override
 	protected ImportReference newImportReference(char[][] tokens, long[] sourcePositions, boolean onDemand, int mod) {
 		ImportReference ref = this.importReference;
 		ref.tokens = tokens;
@@ -46,6 +47,7 @@
 		return ref;
 	}
 
+	@Override
 	protected SingleNameReference newSingleNameReference(char[] source, long positions) {
 		SingleNameReference ref = this.singleNameReference;
 		ref.token = source;
@@ -54,6 +56,7 @@
 		return ref;
 	}
 
+	@Override
 	protected QualifiedNameReference newQualifiedNameReference(char[][] tokens, long[] positions, int sourceStart, int sourceEnd) {
 		QualifiedNameReference ref = this.qualifiedNameReference;
 		ref.tokens = tokens;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.java
new file mode 100644
index 0000000..333229e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ManifestIndexer.java
@@ -0,0 +1,25 @@
+package org.aspectj.org.eclipse.jdt.internal.core.search.indexing;
+
+import java.nio.charset.Charset;
+import org.aspectj.org.eclipse.jdt.core.search.SearchDocument;
+
+public class ManifestIndexer extends AbstractIndexer {
+
+	private static final String AUTOMATIC_MODULE_NAME = "Automatic-Module-Name"; //$NON-NLS-1$
+
+	public ManifestIndexer(SearchDocument document) {
+		super(document);
+	}
+
+	@Override
+	public void indexDocument() {
+		byte[] entry = this.document.getByteContents();
+		String text = new String(entry, Charset.defaultCharset());
+		String[] kv = new String(text).split(":"); //$NON-NLS-1$
+		if (kv != null && kv.length > 1 && kv[0] != null && kv[1] != null) {
+			if (kv[0].equals(AUTOMATIC_MODULE_NAME)) {
+				addModuleDeclaration(kv[1].toCharArray());
+			}
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.java
index 9d7d24c..2b236b4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/ReadWriteMonitor.java
@@ -94,6 +94,7 @@
 	exitWrite();
 	enterRead();
 }
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	if (this.status == 0) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.java
index e60cc63..486d358 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFolderFromIndex.java
@@ -31,6 +31,7 @@
 		this.inclusionPatterns = inclusionPatterns;
 		this.exclusionPatterns = exclusionPatterns;
 	}
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -70,6 +71,7 @@
 		}
 		return true;
 	}
+	@Override
 	public String toString() {
 		return "removing " + this.folderPath + " from index " + this.containerPath; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.java
index b3cdc72..5315171 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/RemoveFromIndex.java
@@ -21,6 +21,7 @@
 		super(containerPath, manager);
 		this.resourceName = resourceName;
 	}
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -39,6 +40,7 @@
 		}
 		return true;
 	}
+	@Override
 	public String toString() {
 		return "removing " + this.resourceName + " from index " + this.containerPath; //$NON-NLS-1$ //$NON-NLS-2$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.java
index 144a003..5022568 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SaveIndex.java
@@ -25,6 +25,7 @@
 	public SaveIndex(IPath containerPath, IndexManager manager) {
 		super(containerPath, manager);
 	}
+	@Override
 	public boolean execute(IProgressMonitor progressMonitor) {
 
 		if (this.isCancelled || progressMonitor != null && progressMonitor.isCanceled()) return true;
@@ -49,6 +50,7 @@
 		}
 		return true;
 	}
+	@Override
 	public String toString() {
 		return "saving index for " + this.containerPath; //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.java
index cf67dc9..724498b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexer.java
@@ -84,6 +84,7 @@
 		super(document);
 		this.requestor = new SourceIndexerRequestor(this);
 	}
+	@Override
 	public void indexDocument() {
 		// Create a new Parser
 		String documentPath = this.document.getPath();
@@ -117,10 +118,12 @@
 		}
 	}
 	
+	@Override
 	public void accept(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		this.lookupEnvironment.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction);
 	}
 
+	@Override
 	public void accept(ICompilationUnit unit, AccessRestriction accessRestriction) {
 		CompilationResult unitResult = new CompilationResult(unit, 1, 1, this.options.maxProblemsPerUnit);
 		CompilationUnitDeclaration parsedUnit = this.basicParser.dietParse(unit, unitResult);
@@ -128,6 +131,7 @@
 		this.lookupEnvironment.completeTypeBindings(parsedUnit, true);
 	}
 
+	@Override
 	public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 		ISourceType sourceType = sourceTypes[0];
 		while (sourceType.getEnclosingType() != null)
@@ -157,7 +161,7 @@
 			this.basicParser.reportOnlyOneSyntaxError = true;
 			this.basicParser.scanner.taskTags = null;
 			this.cud = this.basicParser.parse(this.compilationUnit, new CompilationResult(this.compilationUnit, 0, 0, this.options.maxProblemsPerUnit));
-
+			JavaModelManager.getJavaModelManager().cacheZipFiles(this); // use model only for caching
 			// Use a non model name environment to avoid locks, monitors and such.
 			INameEnvironment nameEnvironment = IndexBasedJavaSearchEnvironment.create(Collections.singletonList((IJavaProject)javaProject), JavaModelManager.getJavaModelManager().getWorkingCopies(DefaultWorkingCopyOwner.PRIMARY, true/*add primary WCs*/));
 			this.lookupEnvironment = new LookupEnvironment(this, this.options, problemReporter, nameEnvironment);
@@ -170,6 +174,8 @@
 			if (JobManager.VERBOSE) {
 				e.printStackTrace();
 			}
+		} finally {
+			JavaModelManager.getJavaModelManager().flushZipFiles(this);
 		}
 	}
 
@@ -199,6 +205,7 @@
 				purgeMethodStatements(memberTypes[i]);
 	}
 
+	@Override
 	public void indexResolvedDocument() {
 		try {
 			if (DEBUG) System.out.println(new String(this.cud.compilationResult.fileName) + ':');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.java
index a29d123..864e0f2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/indexing/SourceIndexerRequestor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,6 +41,7 @@
 /**
  * @see ISourceElementRequestor#acceptAnnotationTypeReference(char[][], int, int)
  */
+@Override
 public void acceptAnnotationTypeReference(char[][] typeName, int sourceStart, int sourceEnd) {
 	int length = typeName.length;
 	for (int i = 0; i < length - 1; i++)
@@ -50,12 +51,14 @@
 /**
  * @see ISourceElementRequestor#acceptAnnotationTypeReference(char[], int)
  */
+@Override
 public void acceptAnnotationTypeReference(char[] simpleTypeName, int sourcePosition) {
 	this.indexer.addAnnotationTypeReference(simpleTypeName);
 }
 /**
  * @see ISourceElementRequestor#acceptConstructorReference(char[], int, int)
  */
+@Override
 public void acceptConstructorReference(char[] typeName, int argCount, int sourcePosition) {
 	if (CharOperation.indexOf(Signature.C_GENERIC_START, typeName) > 0) {
 		typeName = Signature.toCharArray(Signature.getTypeErasure(Signature.createTypeSignature(typeName, false)).toCharArray());
@@ -72,42 +75,49 @@
 /**
  * @see ISourceElementRequestor#acceptFieldReference(char[], int)
  */
+@Override
 public void acceptFieldReference(char[] fieldName, int sourcePosition) {
 	this.indexer.addFieldReference(fieldName);
 }
 /**
  * @see ISourceElementRequestor#acceptImport(int, int, int, int, char[][], boolean, int)
  */
+@Override
 public void acceptImport(int declarationStart, int declarationEnd, int nameStart, int nameEnd, char[][] tokens, boolean onDemand, int modifiers) {
 	// imports have already been reported while creating the ImportRef node (see SourceElementParser#comsume*ImportDeclarationName() methods)
 }
 /**
  * @see ISourceElementRequestor#acceptLineSeparatorPositions(int[])
  */
+@Override
 public void acceptLineSeparatorPositions(int[] positions) {
 	// implements interface method
 }
 /**
  * @see ISourceElementRequestor#acceptMethodReference(char[], int, int)
  */
+@Override
 public void acceptMethodReference(char[] methodName, int argCount, int sourcePosition) {
 	this.indexer.addMethodReference(methodName, argCount);
 }
 /**
  * @see ISourceElementRequestor#acceptPackage(ImportReference)
  */
+@Override
 public void acceptPackage(ImportReference importReference) {
 	this.packageName = CharOperation.concatWith(importReference.getImportName(), '.');
 }
 /**
  * @see ISourceElementRequestor#acceptProblem(CategorizedProblem)
  */
+@Override
 public void acceptProblem(CategorizedProblem problem) {
 	// implements interface method
 }
 /**
  * @see ISourceElementRequestor#acceptTypeReference(char[][], int, int)
  */
+@Override
 public void acceptTypeReference(char[][] typeName, int sourceStart, int sourceEnd) {
 	int length = typeName.length;
 	for (int i = 0; i < length - 1; i++)
@@ -117,12 +127,14 @@
 /**
  * @see ISourceElementRequestor#acceptTypeReference(char[], int)
  */
+@Override
 public void acceptTypeReference(char[] simpleTypeName, int sourcePosition) {
 	this.indexer.addTypeReference(simpleTypeName);
 }
 /**
  * @see ISourceElementRequestor#acceptUnknownReference(char[][], int, int)
  */
+@Override
 public void acceptUnknownReference(char[][] name, int sourceStart, int sourceEnd) {
 	for (int i = 0; i < name.length; i++) {
 		acceptUnknownReference(name[i], 0);
@@ -131,6 +143,7 @@
 /**
  * @see ISourceElementRequestor#acceptUnknownReference(char[], int)
  */
+@Override
 public void acceptUnknownReference(char[] name, int sourcePosition) {
 	this.indexer.addNameReference(name);
 }
@@ -221,12 +234,14 @@
 /**
  * @see ISourceElementRequestor#enterCompilationUnit()
  */
+@Override
 public void enterCompilationUnit() {
 	// implements interface method
 }
 /**
  * @see ISourceElementRequestor#enterConstructor(ISourceElementRequestor.MethodInfo)
  */
+@Override
 public void enterConstructor(MethodInfo methodInfo) {
 	int argCount = methodInfo.parameterTypes == null ? 0 : methodInfo.parameterTypes.length;
 	this.indexer.addConstructorDeclaration(
@@ -263,6 +278,7 @@
 /**
  * @see ISourceElementRequestor#enterField(ISourceElementRequestor.FieldInfo)
  */
+@Override
 public void enterField(FieldInfo fieldInfo) {
 	this.indexer.addFieldDeclaration(fieldInfo.type, fieldInfo.name);
 	this.methodDepth++;
@@ -270,6 +286,7 @@
 /**
  * @see ISourceElementRequestor#enterInitializer(int, int)
  */
+@Override
 public void enterInitializer(int declarationSourceStart, int modifiers) {
 	this.methodDepth++;
 }
@@ -299,14 +316,46 @@
 	addDefaultConstructorIfNecessary(typeInfo);
 	pushTypeName(typeInfo.name);
 }
+
+@Override
+public void enterModule(ModuleInfo moduleInfo) {
+	this.indexer.addModuleDeclaration(moduleInfo.moduleName);
+	if (moduleInfo.requires != null) {
+		for (ISourceElementRequestor.RequiresInfo req : moduleInfo.requires) {
+			if (req == null || req.moduleName == null || req.moduleName == CharOperation.NO_CHAR) continue;
+			this.indexer.addModuleReference(req.moduleName);
+		}
+	}
+	enterPackageVisibilityInfo(moduleInfo.exports);
+	enterPackageVisibilityInfo(moduleInfo.opens); 
+	/* note: provides and uses directives processed automatically on IParser (SEParser) */
+}
+private void enterPackageVisibilityInfo(ISourceElementRequestor.PackageExportInfo[] packInfos) {
+	if (packInfos == null)
+		return;
+	for (ISourceElementRequestor.PackageExportInfo packInfo : packInfos) {
+		if (packInfo == null || packInfo.pkgName == null || packInfo.pkgName == CharOperation.NO_CHAR) continue;
+		this.indexer.addModuleExportedPackages(packInfo.pkgName);
+		char[][] tgts = packInfo.targets;
+		if (tgts == null || tgts == CharOperation.NO_CHAR_CHAR) continue;
+		for (char[] tgt : tgts) {
+			if (tgt != null && tgt != CharOperation.NO_CHAR)
+				this.indexer.addModuleReference(tgt);
+		}
+}
+}
 /**
  * @see ISourceElementRequestor#enterMethod(ISourceElementRequestor.MethodInfo)
  */
+@Override
 public void enterMethod(MethodInfo methodInfo) {
 	this.indexer.addMethodDeclaration(methodInfo.name, methodInfo.parameterTypes, methodInfo.returnType, methodInfo.exceptionTypes);
 	int argCount = methodInfo.parameterTypes == null ? 0 : methodInfo.parameterTypes.length;
 	char[] typeName = methodInfo.enclosingType != null ? methodInfo.enclosingType.name : null;
-	if (typeName == null || typeName.length == 0) return;
+	if (typeName == null || typeName.length == 0)  {
+		this.methodDepth++;
+		return;
+	}
 	this.indexer.addMethodDeclaration(
 			typeName,
 			getDeclaringQualification(methodInfo.enclosingType),
@@ -356,6 +405,7 @@
 /**
  * @see ISourceElementRequestor#enterType(ISourceElementRequestor.TypeInfo)
  */
+@Override
 public void enterType(TypeInfo typeInfo) {
 	// TODO (jerome) might want to merge the 4 methods
 	switch (TypeDeclaration.kind(typeInfo.modifiers)) {
@@ -377,36 +427,42 @@
 /**
  * @see ISourceElementRequestor#exitCompilationUnit(int)
  */
+@Override
 public void exitCompilationUnit(int declarationEnd) {
 	// implements interface method
 }
 /**
  * @see ISourceElementRequestor#exitConstructor(int)
  */
+@Override
 public void exitConstructor(int declarationEnd) {
 	this.methodDepth--;
 }
 /**
  * @see ISourceElementRequestor#exitField(int, int, int)
  */
+@Override
 public void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd) {
 	this.methodDepth--;
 }
 /**
  * @see ISourceElementRequestor#exitInitializer(int)
  */
+@Override
 public void exitInitializer(int declarationEnd) {
 	this.methodDepth--;
 }
 /**
  * @see ISourceElementRequestor#exitMethod(int, Expression)
  */
+@Override
 public void exitMethod(int declarationEnd, Expression defaultValue) {
 	this.methodDepth--;
 }
 /**
  * @see ISourceElementRequestor#exitType(int)
  */
+@Override
 public void exitType(int declarationEnd) {
 	popTypeName();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.java
index 3a803c5..957cdd1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndLocator.java
@@ -50,11 +50,13 @@
 	}
 	this.patternLocators = locators;
 }
+@Override
 public void initializePolymorphicSearch(MatchLocator locator) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
 		this.patternLocators[i].initializePolymorphicSearch(locator);
 	}
 }
+@Override
 public int match(Annotation node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -66,6 +68,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -77,6 +80,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -88,6 +92,7 @@
 	}
 	return level;
 }
+@Override
 public int match(Expression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -99,6 +104,7 @@
 	}
 	return level;
 }
+@Override
 public int match(FieldDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -110,6 +116,7 @@
 	}
 	return level;
 }
+@Override
 public int match(LambdaExpression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -121,6 +128,7 @@
 	}
 	return level;
 }
+@Override
 public int match(LocalDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -132,6 +140,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MethodDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -143,6 +152,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -154,6 +164,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MessageSend node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -165,6 +176,7 @@
 	}
 	return level;
 }
+@Override
 public int match(Reference node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -176,6 +188,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ReferenceExpression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -187,6 +200,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -198,6 +212,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeParameter node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -209,6 +224,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeReference node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -220,6 +236,7 @@
 	}
 	return level;
 }
+@Override
 protected int matchContainer() {
 	int result = ALL_CONTAINER;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -227,6 +244,7 @@
 	}
 	return result;
 }
+@Override
 protected void matchReportImportRef(ImportReference importRef, Binding binding, IJavaElement element, int accuracy, MatchLocator locator) throws CoreException {
 	PatternLocator weakestPattern = null;
 	int level = IMPOSSIBLE_MATCH;
@@ -240,6 +258,7 @@
 	}
 	weakestPattern.matchReportImportRef(importRef, binding, element, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	PatternLocator weakestPattern = null;
 	int level = IMPOSSIBLE_MATCH;
@@ -254,9 +273,11 @@
 	}
 	weakestPattern.matchReportReference(reference, element, localElement, otherElements, elementBinding, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	int level = ACCURATE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -269,6 +290,7 @@
 	}
 	return level;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	int level = ACCURATE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -281,14 +303,14 @@
 	}
 	return level;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#setFlavors(int)
- */
+
+@Override
 void setFlavors(int flavors) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
 		this.patternLocators[i].setFlavors(flavors);
 	}
 }
+@Override
 public void recordResolution(QualifiedTypeReference typeReference, TypeBinding resolution) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
 		this.patternLocators[i].recordResolution(typeReference, resolution);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.java
index dbb79ce..778fe27 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/AndPattern.java
@@ -59,17 +59,17 @@
 	this.current = 0;
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.InternalSearchPattern#currentPattern()
- */
+@Override
 public SearchPattern currentPattern() {
 	return this.patterns[this.current++];
 }
 
+@Override
 protected boolean hasNextQuery() {
 	return this.current < (this.patterns.length-1);
 }
 
+@Override
 protected void resetQuery() {
 	this.current = 0;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.java
index fc5c427..474b56b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClassFileMatchLocator.java
@@ -31,7 +31,8 @@
 	TagBits.AnnotationForLocalVariable |
 	TagBits.AnnotationForField |
 	TagBits.AnnotationForConstructor |
-	TagBits.AnnotationForAnnotationType;
+	TagBits.AnnotationForAnnotationType |
+	TagBits.AnnotationForModule;
 private static final char[] JAVA_LANG_ANNOTATION_ELEMENTTYPE = CharOperation.concatWith(TypeConstants.JAVA_LANG_ANNOTATION_ELEMENTTYPE, '.');
 public static char[] convertClassFileFormat(char[] name) {
 	return CharOperation.replaceOnCopy(name, '/', '.');
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java
index 5adb31e..8d8f176 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ClasspathSourceDirectory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
 
 import java.util.Iterator;
 import java.util.Map;
+import java.util.function.Predicate;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
@@ -23,14 +24,14 @@
 import org.aspectj.org.eclipse.jdt.core.IType;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModulePathEntry;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleLookupTable;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.ClasspathLocation;
 import org.aspectj.org.eclipse.jdt.internal.core.util.ResourceCompilationUnit;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
-@SuppressWarnings("rawtypes")
-public class ClasspathSourceDirectory extends ClasspathLocation {
+public class ClasspathSourceDirectory extends ClasspathLocation implements IModulePathEntry {
 
 	IContainer sourceFolder;
 	SimpleLookupTable directoryCache;
@@ -45,6 +46,7 @@
 	this.fulInclusionPatternChars = fulInclusionPatternChars;
 }
 
+@Override
 public void cleanup() {
 	this.directoryCache = null;
 }
@@ -74,13 +76,13 @@
 			}
 			// look for secondary types, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=382778
 			IJavaProject project = JavaCore.create(container.getProject());
-			Map secondaryTypePaths = JavaModelManager.getJavaModelManager().secondaryTypes(project, false, null);
+			Map<String, Map<String, IType>> secondaryTypePaths = JavaModelManager.getJavaModelManager().secondaryTypes(project, false, null);
 			if (secondaryTypePaths.size() > 0) {
-				Map typesInPackage = (Map) secondaryTypePaths.get(qualifiedPackageName.replace('/', '.'));
+				Map<String, IType> typesInPackage = secondaryTypePaths.get(qualifiedPackageName.replace('/', '.'));
 				if (typesInPackage != null && typesInPackage.size() > 0) {
-					for (Iterator j = typesInPackage.keySet().iterator(); j.hasNext();) {
-						String secondaryTypeName = (String) j.next();
-						IType secondaryType = (IType) typesInPackage.get(secondaryTypeName);
+					for (Iterator<String> j = typesInPackage.keySet().iterator(); j.hasNext();) {
+						String secondaryTypeName = j.next();
+						IType secondaryType = typesInPackage.get(secondaryTypeName);
 						IJavaElement parent = secondaryType.getParent();
 						String fullPath = parent.getResource().getFullPath().toString();
 						if (!org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isExcluded(fullPath.toCharArray(), this.fulInclusionPatternChars, this.fullExclusionPatternChars, false/*not a folder path*/)) {
@@ -99,6 +101,7 @@
 	return null;
 }
 
+@Override
 public boolean equals(Object o) {
 	if (this == o) return true;
 	if (!(o instanceof ClasspathSourceDirectory)) return false;
@@ -106,39 +109,61 @@
 	return this.sourceFolder.equals(((ClasspathSourceDirectory) o).sourceFolder);
 }
 
-public NameEnvironmentAnswer findClass(String sourceFileWithoutExtension, String qualifiedPackageName, String qualifiedSourceFileWithoutExtension) {
+@Override
+public NameEnvironmentAnswer findClass(String typeName, String qualifiedPackageName, String moduleName, String qualifiedBinaryFileName, boolean asBinaryOnly, Predicate<String> moduleNameFilter) {
+	return findClass(typeName, qualifiedPackageName, moduleName, qualifiedBinaryFileName);
+}
+@Override
+public NameEnvironmentAnswer findClass(String sourceFileWithoutExtension, String qualifiedPackageName, String moduleName, String qualifiedSourceFileWithoutExtension) {
 	SimpleLookupTable dirTable = directoryTable(qualifiedPackageName);
 	if (dirTable != null && dirTable.elementSize > 0) {
 		IFile file = (IFile) dirTable.get(sourceFileWithoutExtension);
 		if (file != null) {
-			return new NameEnvironmentAnswer(new ResourceCompilationUnit(file), null /* no access restriction */);
+			return new NameEnvironmentAnswer(new ResourceCompilationUnit(file,
+					this.module == null ? null : this.module.name()), null /* no access restriction */);
 		}
 	}
 	return null;
 }
 
+@Override
 public IPath getProjectRelativePath() {
 	return this.sourceFolder.getProjectRelativePath();
 }
 
+@Override
 public int hashCode() {
 	return this.sourceFolder == null ? super.hashCode() : this.sourceFolder.hashCode();
 }
 
-public boolean isPackage(String qualifiedPackageName) {
+@Override
+public boolean isPackage(String qualifiedPackageName, String moduleName) {
+	if (moduleName != null) {
+		if (this.module == null || !moduleName.equals(String.valueOf(this.module.name())))
+			return false;
+	}
 	return directoryTable(qualifiedPackageName) != null;
 }
+@Override
+public boolean hasCompilationUnit(String qualifiedPackageName, String moduleName) {
+	SimpleLookupTable dirTable = directoryTable(qualifiedPackageName);
+	if (dirTable != null && dirTable.elementSize > 0)
+		return true;
+	return false;
+}
 
+@Override
 public void reset() {
 	this.directoryCache = new SimpleLookupTable(5);
 }
 
+@Override
 public String toString() {
 	return "Source classpath directory " + this.sourceFolder.getFullPath().toString(); //$NON-NLS-1$
 }
 
+@Override
 public String debugPathString() {
 	return this.sourceFolder.getFullPath().toString();
 }
-
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.java
index bc19d3d..237b648 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorDeclarationPattern.java
@@ -39,6 +39,7 @@
 ConstructorDeclarationPattern(int matchRule) {
 	super(matchRule);
 }
+@Override
 public void decodeIndexKey(char[] key) {
 	int last = key.length - 1;
 	int slash = CharOperation.indexOf(SEPARATOR, key, 0);
@@ -129,12 +130,15 @@
 	removeInternalFlags(); // remove internal flags
 }
 
+@Override
 public SearchPattern getBlankPattern() {
 	return new ConstructorDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	return DECL_CATEGORIES;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	ConstructorDeclarationPattern pattern = (ConstructorDeclarationPattern) decodedPattern;
 	
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.java
index cba93d2..465fa52 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorLocator.java
@@ -33,9 +33,11 @@
 
 	this.pattern = pattern;
 }
+@Override
 protected int fineGrain() {
 	return this.pattern.fineGrain;
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) { // interested in ExplicitConstructorCall
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 	if (!(node instanceof ExplicitConstructorCall)) return IMPOSSIBLE_MATCH;
@@ -44,6 +46,7 @@
 
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
+@Override
 public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) {
 	if (this.pattern.fineGrain != 0 && !this.pattern.findDeclarations) return IMPOSSIBLE_MATCH;
 	int referencesLevel = this.pattern.findReferences ? matchLevelForReferences(node) : IMPOSSIBLE_MATCH;
@@ -51,6 +54,7 @@
 
 	return nodeSet.addMatch(node, referencesLevel >= declarationsLevel ? referencesLevel : declarationsLevel); // use the stronger match
 }
+@Override
 public int match(Expression node, MatchingNodeSet nodeSet) { // interested in AllocationExpression
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 	if (!(node instanceof AllocationExpression)) return IMPOSSIBLE_MATCH;
@@ -65,6 +69,7 @@
 
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
+@Override
 public int match(FieldDeclaration field, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 	// look only for enum constant
@@ -85,6 +90,7 @@
  * Special case for message send in javadoc comment. They can be in fact bound to a constructor.
  * @see "http://bugs.eclipse.org/bugs/show_bug.cgi?id=83285"
  */
+@Override
 public int match(MessageSend msgSend, MatchingNodeSet nodeSet)  {
 	if ((msgSend.bits & ASTNode.InsideJavadoc) == 0) return IMPOSSIBLE_MATCH;
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
@@ -93,12 +99,14 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int match(ReferenceExpression node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences || node.isMethodReference()) return IMPOSSIBLE_MATCH;
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
 
 //public int match(Reference node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(TypeDeclaration node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 
@@ -140,6 +148,7 @@
 	}
 	return level;
 }
+@Override
 protected int matchContainer() {
 	if (this.pattern.findReferences) return ALL_CONTAINER; // handles both declarations + references & just references
 	// COMPILATION_UNIT_CONTAINER - implicit constructor call: case of Y extends X and Y doesn't define any constructor
@@ -193,6 +202,7 @@
 	}
 	return true;
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 
 	MethodBinding constructorBinding = null;
@@ -277,6 +287,7 @@
 	}
 	locator.report(this.match);
 }
+@Override
 public SearchMatch newDeclarationMatch(ASTNode reference, IJavaElement element, Binding binding, int accuracy, int length, MatchLocator locator) {
 	this.match = null;
 	int offset = reference.sourceStart;
@@ -304,6 +315,7 @@
 	// super implementation...
     return locator.newDeclarationMatch(element, binding, accuracy, reference.sourceStart, length);
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	if (this.pattern.findReferences) {
 		if (node instanceof AllocationExpression)
@@ -325,6 +337,7 @@
 		return resolveLevel((ConstructorDeclaration) node, true);
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.METHOD;
 }
@@ -345,6 +358,7 @@
 
 	return resolveLevel(((AllocationExpression)field.initialization).binding);
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof MethodBinding)) return IMPOSSIBLE_MATCH;
@@ -391,6 +405,7 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.java
index 4d21022..b661d7f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ConstructorPattern.java
@@ -454,6 +454,7 @@
 	if (hasConstructorArguments())  this.mustResolve = true;
 }
 
+@Override
 public void decodeIndexKey(char[] key) {
 	int last = key.length - 1;
 	int slash = CharOperation.indexOf(SEPARATOR, key, 0);
@@ -481,9 +482,11 @@
 		}
 	}
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new ConstructorPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	if (this.findReferences)
 		return this.findDeclarations ? REF_AND_DECL_CATEGORIES : REF_CATEGORIES;
@@ -497,6 +500,7 @@
 boolean hasConstructorParameters() {
 	return this.constructorParameters;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	ConstructorPattern pattern = (ConstructorPattern) decodedPattern;
 
@@ -513,6 +517,7 @@
 			if (this.parameterQualifications[i] != null) return true;
 	return this.findReferences; // need to check resolved default constructors and explicit constructor calls
 }
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	char[] key = this.declaringSimpleName; // can be null
 	int matchRule = getMatchRule();
@@ -549,6 +554,7 @@
 
 	return index.query(getIndexCategories(), key, matchRule); // match rule is irrelevant when the key is null
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	if (this.findDeclarations) {
 		output.append(this.findReferences
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java
index 8c545a8..53c0c28 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java
@@ -30,9 +30,11 @@
 
 	this.isDeclarationOfAccessedFieldsPattern = this.pattern instanceof DeclarationOfAccessedFieldsPattern;
 }
+@Override
 protected int fineGrain() {
 	return this.pattern.fineGrain;
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) {
 	int declarationsLevel = IMPOSSIBLE_MATCH;
 	if (this.pattern.findReferences) {
@@ -54,6 +56,7 @@
 	return nodeSet.addMatch(node, declarationsLevel);
 }
 //public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(FieldDeclaration node, MatchingNodeSet nodeSet) {
 	int referencesLevel = IMPOSSIBLE_MATCH;
 	if (this.pattern.findReferences)
@@ -80,6 +83,7 @@
 //public int match(TypeDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(TypeReference node, MatchingNodeSet nodeSet) - SKIP IT
 
+@Override
 protected int matchContainer() {
 	if (this.pattern.findReferences || this.pattern.fineGrain != 0) {
 		// need to look everywhere to find in javadocs and static import
@@ -123,11 +127,13 @@
  * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchLevelAndReportImportRef(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
  * Accept to report match of static field on static import
  */
+@Override
 protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
 	if (importRef.isStatic() && binding instanceof FieldBinding) {
 		super.matchLevelAndReportImportRef(importRef, binding, locator);
 	}
 }
+@Override
 protected int matchReference(Reference node, MatchingNodeSet nodeSet, boolean writeOnlyAccess) {
 	if (node instanceof FieldReference) {
 		if (matchesName(this.pattern.name, ((FieldReference) node).token))
@@ -136,9 +142,11 @@
 	}
 	return super.matchReference(node, nodeSet, writeOnlyAccess);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements,Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	if (this.isDeclarationOfAccessedFieldsPattern) {
 		// need exact match to be able to open on type ref
@@ -241,6 +249,7 @@
  * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#updateMatch(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding, char[][][], org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
  *
  */
+@Override
 protected void updateMatch(ParameterizedTypeBinding parameterizedBinding, char[][][] patternTypeArguments, MatchLocator locator) {
 	// We can only refine if locator has an unit scope.
 	if (locator.unitScope == null) return;
@@ -293,9 +302,11 @@
 		}
 	}
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.FIELD;
 }
+@Override
 public int resolveLevel(ASTNode possiblelMatchingNode) {
 	if (this.pattern.findReferences || this.pattern.fineGrain != 0) {
 		if (possiblelMatchingNode instanceof FieldReference)
@@ -307,6 +318,7 @@
 		return matchField(((FieldDeclaration) possiblelMatchingNode).binding, true);
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof FieldBinding)) return IMPOSSIBLE_MATCH;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.java
index ecbc8ee..9d08c78 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/FieldPattern.java
@@ -72,15 +72,19 @@
 		setTypeArguments(Util.getAllTypeArguments(this.typeSignatures));
 	}
 }
+@Override
 public void decodeIndexKey(char[] key) {
 	this.name = key;
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new FieldPattern(null, null, null, null, null, 0, R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[] getIndexKey() {
 	return this.name;
 }
+@Override
 public char[][] getIndexCategories() {
 	if (this.findReferences || this.fineGrain != 0)
 		return this.findDeclarations || this.writeAccess ? REF_AND_DECL_CATEGORIES : REF_CATEGORIES;
@@ -88,15 +92,18 @@
 		return DECL_CATEGORIES;
 	return CharOperation.NO_CHAR_CHAR;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	return true; // index key is not encoded so query results all match
 }
+@Override
 protected boolean mustResolve() {
 	if (this.declaringSimpleName != null || this.declaringQualification != null) return true;
 	if (this.typeSimpleName != null || this.typeQualification != null) return true;
 
 	return super.mustResolve();
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	if (this.findDeclarations) {
 		output.append(this.findReferences
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.java
index da5613e..28ed05a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ImportMatchLocatorParser.java
@@ -21,24 +21,28 @@
 	super(problemReporter, locator);
 	this.reportImportMatch = this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.IMPORT_DECLARATION_TYPE_REFERENCE) != 0;
 }
+@Override
 protected void consumeStaticImportOnDemandDeclarationName() {
 	super.consumeStaticImportOnDemandDeclarationName();
 	if (this.reportImportMatch) {
 		this.patternLocator.match(this.astStack[this.astPtr], this.nodeSet);
 	}
 }
+@Override
 protected void consumeSingleStaticImportDeclarationName() {
 	super.consumeSingleStaticImportDeclarationName();
 	if (this.reportImportMatch) {
 		this.patternLocator.match(this.astStack[this.astPtr], this.nodeSet);
 	}
 }
+@Override
 protected void consumeSingleTypeImportDeclarationName() {
 	super.consumeSingleTypeImportDeclarationName();
 	if (this.reportImportMatch) {
 		this.patternLocator.match(this.astStack[this.astPtr], this.nodeSet);
 	}
 }
+@Override
 protected void consumeTypeImportOnDemandDeclarationName() {
 	super.consumeTypeImportOnDemandDeclarationName();
 	if (this.reportImportMatch) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.java
index 3870d95..ade9aab 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015, 2016 Google, Inc and others.
+ * Copyright (c) 2015, 2018 Google, Inc and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -195,7 +195,10 @@
 					answer = location.findClass(
 						sourceFileName, // doesn't include the file extension
 						qPackageName,
-						qSourceFileName);  // doesn't include the file extension
+						null, // TODO(SHMOD): don't have a module name, but while looking in unindexed classpath locations, this is probably OK
+						qSourceFileName,  // doesn't include the file extension
+						false,
+						null /*no module filtering on source dir*/);
 				}
 			} else {
 				if (binaryFileName == null) {
@@ -212,7 +215,10 @@
 					location.findClass(
 						binaryFileName,
 						qPackageName,
-						qBinaryFileName);
+						null,  // TODO(SHMOD): don't have a module name, but while looking in unindexed classpath locations, this is probably OK
+						qBinaryFileName,
+						false,
+						null /*no module filtering, this env is not module aware*/);
 			}
 			if (answer != null) {
 				if (!answer.ignoreIfBetter()) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
index 8dbf056..6a8fb71 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/IntersectingPattern.java
@@ -27,6 +27,7 @@
 public IntersectingPattern(int patternKind, int matchRule) {
 	super(patternKind, matchRule);
 }
+@Override
 public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) throws IOException {
 	if (progressMonitor != null && progressMonitor.isCanceled()) throw new OperationCanceledException();
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.java
index 0b37a23..553dbd3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,35 +15,52 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IPackageDeclaration;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
-import org.aspectj.org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.ClasspathEntry;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaElement;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaElementRequestor;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModel;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
 import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
+import org.aspectj.org.eclipse.jdt.internal.core.JrtPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.internal.core.NameLookup;
 import org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.ClasspathJar;
+import org.aspectj.org.eclipse.jdt.internal.core.builder.ClasspathJrt;
 import org.aspectj.org.eclipse.jdt.internal.core.builder.ClasspathLocation;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
 /*
  * A name environment based on the classpath of a Java project.
  */
-public class JavaSearchNameEnvironment implements INameEnvironment, SuffixConstants {
+public class JavaSearchNameEnvironment implements IModuleAwareNameEnvironment, SuffixConstants {
 
 	LinkedHashSet<ClasspathLocation> locationSet;
+	Map<String, IModuleDescription> modules;
+	private boolean modulesComputed = false;
+	Map<String,ClasspathLocation> moduleLocations;
+	Map<String,LinkedHashSet<ClasspathLocation>> moduleToClassPathLocations;
 
 	/*
 	 * A map from the fully qualified slash-separated name of the main type (String) to the working copy
@@ -51,6 +68,11 @@
 	Map<String, org.aspectj.org.eclipse.jdt.core.ICompilationUnit> workingCopies;
 
 public JavaSearchNameEnvironment(IJavaProject javaProject, org.aspectj.org.eclipse.jdt.core.ICompilationUnit[] copies) {
+	if (CompilerOptions.versionToJdkLevel(javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true)) >= ClassFileConstants.JDK9) {
+		this.moduleLocations = new HashMap<>();
+		this.moduleToClassPathLocations = new HashMap<>();
+	}
+	this.modules = new HashMap<>();
 	this.locationSet = computeClasspathLocations((JavaProject) javaProject);
 	this.workingCopies = getWorkingCopyMap(copies);
 }
@@ -69,6 +91,7 @@
 				String mainTypeName = Util.getNameWithoutJavaLikeExtension(cuName);
 				String qualifiedMainTypeName = pkg.length() == 0 ? mainTypeName : pkg.replace('.', '/') + '/' + mainTypeName;
 				result.put(qualifiedMainTypeName, workingCopy);
+				// TODO : JAVA 9 - module-info.java has the same name across modules - Any issues here?
 			}
 		}
 	} catch (JavaModelException e) {
@@ -77,6 +100,7 @@
 	return result;
 }
 
+@Override
 public void cleanup() {
 	this.locationSet.clear();
 }
@@ -94,23 +118,54 @@
 	} catch (JavaModelException e) {
 		return null;// project doesn't exist
 	}
+	IModuleDescription imd = null;
+	try {
+		imd = javaProject.getModuleDescription();
+	} catch (JavaModelException e) {
+		// e.printStackTrace(); // ignore
+	}
+
 	LinkedHashSet<ClasspathLocation> locations = new LinkedHashSet<ClasspathLocation>();
 	int length = roots.length;
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	for (int i = 0; i < length; i++) {
-		ClasspathLocation cp = mapToClassPathLocation(manager, (PackageFragmentRoot) roots[i]);
+		ClasspathLocation cp = mapToClassPathLocation(manager, (PackageFragmentRoot) roots[i], imd);
 		if (cp != null) locations.add(cp);
 	}
 	return locations;
 }
 
-private ClasspathLocation mapToClassPathLocation( JavaModelManager manager, PackageFragmentRoot root) {
+private void computeModules() {
+	if (!this.modulesComputed) {
+		this.modulesComputed = true;
+		JavaElementRequestor requestor = new JavaElementRequestor();
+		try {
+			JavaModelManager.getModulePathManager().seekModule(CharOperation.ALL_PREFIX, true, requestor);
+			IModuleDescription[] mods = requestor.getModules();
+			for (IModuleDescription mod : mods) {
+				this.modules.putIfAbsent(mod.getElementName(), mod);
+			}
+		} catch (JavaModelException e) {
+			// do nothing
+		}
+	}
+}
+
+private ClasspathLocation mapToClassPathLocation(JavaModelManager manager, PackageFragmentRoot root, IModuleDescription defaultModule) {
 	ClasspathLocation cp = null;
 	IPath path = root.getPath();
 	try {
 		if (root.isArchive()) {
 			ClasspathEntry rawClasspathEntry = (ClasspathEntry) root.getRawClasspathEntry();
-			cp = new ClasspathJar(manager.getZipFile(path), rawClasspathEntry.getAccessRuleSet(), ClasspathEntry.getExternalAnnotationPath(rawClasspathEntry, ((IJavaProject)root.getParent()).getProject(), true));
+			IJavaProject project = (IJavaProject) root.getParent();
+			String compliance = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
+			cp = (root instanceof JrtPackageFragmentRoot) ? 
+					new ClasspathJrt(path.toOSString(), rawClasspathEntry.getAccessRuleSet(), 
+							ClasspathEntry.getExternalAnnotationPath(rawClasspathEntry, project.getProject(), true), compliance) :
+						new ClasspathJar(manager.getZipFile(path), rawClasspathEntry.getAccessRuleSet(),
+								ClasspathEntry.getExternalAnnotationPath(rawClasspathEntry,
+										((IJavaProject) root.getParent()).getProject(), true),
+								rawClasspathEntry.isModular());
 		} else {
 			Object target = JavaModel.getTarget(path, true);
 			if (target != null) {
@@ -119,7 +174,8 @@
 				} else {
 					ClasspathEntry rawClasspathEntry = (ClasspathEntry) root.getRawClasspathEntry();
 					cp = ClasspathLocation.forBinaryFolder((IContainer) target, false, rawClasspathEntry.getAccessRuleSet(),
-														ClasspathEntry.getExternalAnnotationPath(rawClasspathEntry, ((IJavaProject)root.getParent()).getProject(), true));
+														ClasspathEntry.getExternalAnnotationPath(rawClasspathEntry, ((IJavaProject)root.getParent()).getProject(), true),
+														rawClasspathEntry.isModular());
 				}
 			}
 		}
@@ -127,18 +183,53 @@
 		// problem opening zip file or getting root kind
 		// consider root corrupt and ignore
 	}
+	IModuleDescription imd = root.getModuleDescription();
+	if (imd != null) {
+		String moduleName = addModuleClassPathInfo(cp, imd);
+		if (moduleName != null)
+			this.modules.put(moduleName, imd);
+		if (this.moduleLocations != null)
+			this.moduleLocations.put(moduleName, cp);
+	} else if (defaultModule != null) {
+		addModuleClassPathInfo(cp, defaultModule);
+	}
 	return cp;
 }
+private String addModuleClassPathInfo(ClasspathLocation cp, IModuleDescription imd) {
+	IModule mod = NameLookup.getModuleDescriptionInfo(imd);
+	String moduleName = null;
+	if (mod != null) {
+		char[] name = mod.name();
+		if (name != null) {
+			moduleName = new String(name);
+			cp.setModule(mod);
+			addClassPathToModule(moduleName, cp);
+		}
+	}
+	return moduleName;
+}
+private void addClassPathToModule(String moduleName, ClasspathLocation cp) {
+	if (this.moduleToClassPathLocations != null) {
+		LinkedHashSet<ClasspathLocation> l = this.moduleToClassPathLocations.get(moduleName);
+		if (l == null) {
+			l = new LinkedHashSet<>();
+			this.moduleToClassPathLocations.put(moduleName, l);
+		}
+		l.add(cp);
+	}
+}
 
-private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName) {
+private NameEnvironmentAnswer findClass(String qualifiedTypeName, char[] typeName, LookupStrategy strategy, /*@Nullable*/String moduleName) {
 	String
 		binaryFileName = null, qBinaryFileName = null,
 		sourceFileName = null, qSourceFileName = null,
 		qPackageName = null;
 	NameEnvironmentAnswer suggestedAnswer = null;
-	Iterator <ClasspathLocation> iter = this.locationSet.iterator();
+	Iterator<ClasspathLocation> iter = getLocationsFor(moduleName);
 	while (iter.hasNext()) {
 		ClasspathLocation location = iter.next();
+		if (!strategy.matches(location, ClasspathLocation::hasModule))
+			continue;
 		NameEnvironmentAnswer answer;
 		if (location instanceof ClasspathSourceDirectory) {
 			if (sourceFileName == null) {
@@ -158,7 +249,10 @@
 				answer = location.findClass(
 					sourceFileName, // doesn't include the file extension
 					qPackageName,
-					qSourceFileName);  // doesn't include the file extension
+					moduleName,
+					qSourceFileName,  // doesn't include the file extension
+					false,
+					null /*no module filtering on source dir*/);
 			}
 		} else {
 			if (binaryFileName == null) {
@@ -175,7 +269,10 @@
 				location.findClass(
 					binaryFileName,
 					qPackageName,
-					qBinaryFileName);
+					moduleName,
+					qBinaryFileName,
+					false,
+					this.moduleLocations != null ? this.moduleLocations::containsKey : null);
 		}
 		if (answer != null) {
 			if (!answer.ignoreIfBetter()) {
@@ -192,32 +289,109 @@
 	return null;
 }
 
-public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
+private Iterator<ClasspathLocation> getLocationsFor(/*@Nullable*/String moduleName) {
+	if (moduleName != null) {
+		LinkedHashSet<ClasspathLocation> l = this.moduleToClassPathLocations.get(moduleName);
+		if (l != null && l.size() > 0)
+			return l.iterator();
+	}
+	return this.locationSet.iterator();
+}
+
+@Override
+public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
 	if (typeName != null)
 		return findClass(
 			new String(CharOperation.concatWith(packageName, typeName, '/')),
-			typeName);
+			typeName,
+			LookupStrategy.get(moduleName),
+			LookupStrategy.getStringName(moduleName));
 	return null;
 }
 
-public NameEnvironmentAnswer findType(char[][] compoundName) {
+@Override
+public NameEnvironmentAnswer findType(char[][] compoundName, char[] moduleName) {
 	if (compoundName != null)
 		return findClass(
 			new String(CharOperation.concatWith(compoundName, '/')),
-			compoundName[compoundName.length - 1]);
+			compoundName[compoundName.length - 1],
+			LookupStrategy.get(moduleName),
+			LookupStrategy.getStringName(moduleName));
 	return null;
 }
 
-public boolean isPackage(char[][] compoundName, char[] packageName) {
-	return isPackage(new String(CharOperation.concatWith(compoundName, packageName, '/')));
+@Override
+public char[][] getModulesDeclaringPackage(char[][] parentPackageName, char[] packageName, char[] moduleName) {
+	String qualifiedPackageName = String.valueOf(CharOperation.concatWith(parentPackageName, packageName, '/'));
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	if (strategy == LookupStrategy.Named) {
+		if (this.moduleToClassPathLocations != null) {
+			String moduleNameString = String.valueOf(moduleName);
+			LinkedHashSet<ClasspathLocation> cpl = this.moduleToClassPathLocations.get(moduleNameString);
+			List<ClasspathLocation> l = cpl != null ? cpl.stream().collect(Collectors.toList()): null;
+			if (l != null) {
+				for (ClasspathLocation cp : l) {
+					if (cp.isPackage(qualifiedPackageName, moduleNameString))
+						return new char[][] { moduleName };
+				}
+			}
+		}
+		return null;
+	}
+	char[][] moduleNames = CharOperation.NO_CHAR_CHAR;
+	for (ClasspathLocation location : this.locationSet) {
+		if (strategy.matches(location, ClasspathLocation::hasModule) ) {
+			if (location.isPackage(qualifiedPackageName, null)) {
+				char[][] mNames = location.getModulesDeclaringPackage(qualifiedPackageName, null);
+				if (mNames == null || mNames.length == 0) continue;
+				moduleNames = CharOperation.arrayConcat(moduleNames, mNames);
+			}
+		}
+	}
+	return moduleNames == CharOperation.NO_CHAR_CHAR ? null : moduleNames;
 }
 
-public boolean isPackage(String qualifiedPackageName) {
-	Iterator<ClasspathLocation> iter = this.locationSet.iterator();
-	while (iter.hasNext()) {
-		if (iter.next().isPackage(qualifiedPackageName)) return true;
+@Override
+public boolean hasCompilationUnit(char[][] qualifiedPackageName, char[] moduleName, boolean checkCUs) {
+	String qualifiedPackageNameString = String.valueOf(CharOperation.concatWith(qualifiedPackageName, '/'));
+	LookupStrategy strategy = LookupStrategy.get(moduleName);
+	String moduleNameString = LookupStrategy.getStringName(moduleName);
+	if (strategy == LookupStrategy.Named) {
+		if (this.moduleLocations != null) {
+			ClasspathLocation location = this.moduleLocations.get(moduleNameString);
+			if (location != null)
+				return location.hasCompilationUnit(qualifiedPackageNameString, moduleNameString);
+		}
+	} else {
+		for (ClasspathLocation location : this.locationSet) {
+			if (strategy.matches(location, ClasspathLocation::hasModule) )
+				if (location.hasCompilationUnit(qualifiedPackageNameString, moduleNameString))
+					return true;
+		}
 	}
 	return false;
 }
 
+@Override
+public IModule getModule(char[] moduleName) {
+	computeModules();
+	IModuleDescription moduleDesc = this.modules.get(new String(moduleName));
+	IModule module = null;
+	try {
+		if (moduleDesc != null)
+			module =  (IModule)((JavaElement) moduleDesc).getElementInfo();
+	} catch (JavaModelException e) {
+		// do nothing
+	}
+	return module;
+}
+
+@Override
+public char[][] getAllAutomaticModules() {
+	if (this.moduleLocations == null || this.moduleLocations.size() == 0)
+		return CharOperation.NO_CHAR_CHAR;
+	Set<char[]> set = this.moduleLocations.values().stream().map(e -> e.getModule()).filter(m -> m != null && m.isAutomatic())
+			.map(m -> m.name()).collect(Collectors.toSet());
+	return set.toArray(new char[set.size()][]);
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.java
index d049f15..ac7f467 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/JavaSearchPattern.java
@@ -165,6 +165,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public SearchPattern getBlankPattern() {
 		return null;
 	}
@@ -443,6 +444,7 @@
 			setTypeArguments(typeParameters);
 		}
 	}
+	@Override
 	public final String toString() {
 		return print(new StringBuffer(30)).toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.java
index 6211ced..cc73e79 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariableLocator.java
@@ -22,6 +22,7 @@
 public LocalVariableLocator(LocalVariablePattern pattern) {
 	super(pattern);
 }
+@Override
 public int match(LocalDeclaration node, MatchingNodeSet nodeSet) {
 	int referencesLevel = IMPOSSIBLE_MATCH;
 	if (this.pattern.findReferences)
@@ -41,6 +42,7 @@
 private LocalVariable getLocalVariable() {
 	return ((LocalVariablePattern) this.pattern).localVariable;
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	int offset = -1;
 	int length = -1;
@@ -66,6 +68,7 @@
 		locator.report(this.match);
 	}
 }
+@Override
 protected int matchContainer() {
 	return METHOD_CONTAINER;
 }
@@ -78,9 +81,11 @@
 		? ACCURATE_MATCH
 		: IMPOSSIBLE_MATCH;
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.LOCAL_VARIABLE;
 }
+@Override
 public int resolveLevel(ASTNode possiblelMatchingNode) {
 	if (this.pattern.findReferences || this.pattern.fineGrain != 0)
 		if (possiblelMatchingNode instanceof NameReference)
@@ -89,6 +94,7 @@
 		return matchLocalVariable(((LocalDeclaration) possiblelMatchingNode).binding, true);
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof LocalVariableBinding)) return IMPOSSIBLE_MATCH;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.java
index 266a9aa..bd9d0fd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/LocalVariablePattern.java
@@ -31,6 +31,7 @@
 	super(LOCAL_VAR_PATTERN, localVariable.getElementName().toCharArray(), limitTo, matchRule);
 	this.localVariable = localVariable;
 }
+@Override
 public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) {
     IPackageFragmentRoot root = (IPackageFragmentRoot)this.localVariable.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
 	String documentPath;
@@ -59,6 +60,7 @@
 			throw new OperationCanceledException();
 	}
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	if (this.findDeclarations) {
 		output.append(this.findReferences
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
index 81948ea..05b6576 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -21,6 +22,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 import java.util.zip.ZipFile;
 
 import org.eclipse.core.resources.IResource;
@@ -28,17 +30,20 @@
 import org.aspectj.org.eclipse.jdt.core.Flags;
 import org.aspectj.org.eclipse.jdt.core.IAnnotatable;
 import org.aspectj.org.eclipse.jdt.core.IAnnotation;
-import org.aspectj.org.eclipse.jdt.core.IClassFile;
 import org.aspectj.org.eclipse.jdt.core.IJavaElement;
 import org.aspectj.org.eclipse.jdt.core.IJavaModelStatusConstants;
 import org.aspectj.org.eclipse.jdt.core.IJavaProject;
 import org.aspectj.org.eclipse.jdt.core.IMember;
 import org.aspectj.org.eclipse.jdt.core.IMethod;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.IOpenable;
+import org.aspectj.org.eclipse.jdt.core.IOrdinaryClassFile;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.core.ISourceRange;
 import org.aspectj.org.eclipse.jdt.core.IType;
+import org.aspectj.org.eclipse.jdt.core.ITypeRoot;
+import org.aspectj.org.eclipse.jdt.core.JavaCore;
 import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.Signature;
 import org.aspectj.org.eclipse.jdt.core.compiler.*;
@@ -61,6 +66,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SimpleSet;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.SuffixConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver;
+import org.aspectj.org.eclipse.jdt.internal.core.AbstractModule;
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryMember;
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryMethod;
 import org.aspectj.org.eclipse.jdt.internal.core.BinaryType;
@@ -72,6 +78,7 @@
 import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
 import org.aspectj.org.eclipse.jdt.internal.core.LambdaFactory;
 import org.aspectj.org.eclipse.jdt.internal.core.LocalVariable;
+import org.aspectj.org.eclipse.jdt.internal.core.ModularClassFile;
 import org.aspectj.org.eclipse.jdt.internal.core.NameLookup;
 import org.aspectj.org.eclipse.jdt.internal.core.Openable;
 import org.aspectj.org.eclipse.jdt.internal.core.PackageFragment;
@@ -118,6 +125,7 @@
 public SearchRequestor requestor;
 public IJavaSearchScope scope;
 public IProgressMonitor progressMonitor;
+private IJavaSearchScope subScope = null;
 
 public org.aspectj.org.eclipse.jdt.core.ICompilationUnit[] workingCopies;
 public HandleFactory handleFactory;
@@ -140,6 +148,7 @@
 public PossibleMatch[] matchesToProcess;
 public PossibleMatch currentPossibleMatch;
 
+/* package */HashMap<SearchMatch, Binding> matchBinding = new HashMap<>();
 /*
  * Time spent in the IJavaSearchResultCollector
  */
@@ -169,6 +178,7 @@
 		this.charContents = ((CompilationUnit)workingCopy).getContents();
 		this.workingCopy = workingCopy;
 	}
+	@Override
 	public String toString() {
 		return "WorkingCopyDocument for " + getPath(); //$NON-NLS-1$
 	}
@@ -240,7 +250,7 @@
 }
 
 public static IBinaryType classFileReader(IType type) {
-	IClassFile classFile = type.getClassFile();
+	IOrdinaryClassFile classFile = type.getClassFile();
 	JavaModelManager manager = JavaModelManager.getJavaModelManager();
 	if (classFile.isOpen())
 		return (IBinaryType)manager.getInfo(type);
@@ -251,24 +261,27 @@
 		if (!root.isArchive())
 			return Util.newClassFileReader(((JavaElement) type).resource());
 
-		ZipFile zipFile = null;
-		try {
-			IPath zipPath = root.getPath();
-			if (JavaModelManager.ZIP_ACCESS_VERBOSE)
-				System.out.println("(" + Thread.currentThread() + ") [MatchLocator.classFileReader()] Creating ZipFile on " + zipPath); //$NON-NLS-1$	//$NON-NLS-2$
-			zipFile = manager.getZipFile(zipPath);
+		String rootPath = root.getPath().toOSString();
+		if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isJrt(rootPath)) {
 			String classFileName = classFile.getElementName();
 			String path = Util.concatWith(pkg.names, classFileName, '/');
-			return ClassFileReader.read(zipFile, path);
-		} finally {
-			manager.closeZipFile(zipFile);
+			return ClassFileReader.readFromJrt(new File(rootPath), null, path);
+		} else {
+			ZipFile zipFile = null;
+			try {
+				IPath zipPath = root.getPath();
+				if (JavaModelManager.ZIP_ACCESS_VERBOSE)
+					System.out.println("(" + Thread.currentThread() + ") [MatchLocator.classFileReader()] Creating ZipFile on " + zipPath); //$NON-NLS-1$	//$NON-NLS-2$
+				zipFile = manager.getZipFile(zipPath);
+				String classFileName = classFile.getElementName();
+				String path = Util.concatWith(pkg.names, classFileName, '/');
+				return ClassFileReader.read(zipFile, path);
+			} finally {
+				manager.closeZipFile(zipFile);
+			}
 		}
-	} catch (ClassFormatException e) {
+	} catch (ClassFormatException | CoreException | IOException e) {
 		// invalid class file: return null
-	} catch (CoreException e) {
-		// cannot read class file: return null
-	} catch (IOException e) {
-		// cannot read class file: return null
 	}
 	return null;
 }
@@ -330,6 +343,7 @@
 /**
  * Add an additional binary type
  */
+@Override
 public void accept(IBinaryType binaryType, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 	this.lookupEnvironment.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction);
 }
@@ -337,6 +351,7 @@
  * Add an additional compilation unit into the loop
  *  ->  build compilation unit declarations, their bindings and record their results.
  */
+@Override
 public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) {
 	// Switch the current policy and compilation result for this unit to the requested one.
 	CompilationResult unitResult = new CompilationResult(sourceUnit, 1, 1, this.options.maxProblemsPerUnit);
@@ -363,6 +378,7 @@
 /**
  * Add additional source types
  */
+@Override
 public void accept(ISourceType[] sourceTypes, PackageBinding packageBinding, AccessRestriction accessRestriction) {
 	// case of SearchableEnvironment of an IJavaProject is used
 	ISourceType sourceType = sourceTypes[0];
@@ -735,6 +751,8 @@
 	if (openable instanceof CompilationUnit)
 		return ((CompilationUnit) openable).getImport(new String(importName));
 
+	if (openable instanceof ModularClassFile)
+		return openable;
 	// binary types do not contain import statements so just answer the top-level type as the element
 	IType binaryType = ((ClassFile) openable).getType();
 	String typeName = binaryType.getElementName();
@@ -770,7 +788,7 @@
 
 	// type name may be null for anonymous (see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=164791)
 	String classFileName = simpleTypeName.length() == 0 ? binaryTypeQualifiedName : simpleTypeName;
-	IClassFile classFile = binaryType.getPackageFragment().getClassFile(classFileName + SuffixConstants.SUFFIX_STRING_class);
+	IOrdinaryClassFile classFile = binaryType.getPackageFragment().getOrdinaryClassFile(classFileName + SuffixConstants.SUFFIX_STRING_class);
 	return classFile.getType();
 }
 protected boolean encloses(IJavaElement element) {
@@ -922,7 +940,7 @@
 	TypeBinding typeBinding = this.unitScope.getType(compoundName, compoundName.length);
 	this.unitScopeTypeBinding = typeBinding; //cache.
 	if (typeBinding == null || !typeBinding.isValidBinding()) {
-		typeBinding = this.lookupEnvironment.getType(compoundName);
+		typeBinding = this.lookupEnvironment.getType(compoundName, this.unitScope.module());
 	}
 	this.bindings.put(typeKey, typeBinding);
 	return typeBinding != null && typeBinding.isValidBinding() ? typeBinding : null;
@@ -1104,6 +1122,13 @@
 	this.bindings.put(methodPattern, result != null ? result : new ProblemMethodBinding(methodPattern.selector, null, ProblemReasons.NotFound));
 	return result;
 }
+private boolean matchParams(MethodPattern methodPattern, int index, TypeBinding binding) {
+	char[] qualifier = CharOperation.concat(methodPattern.parameterQualifications[index], methodPattern.parameterSimpleNames[index], '.');
+	int offset = (qualifier.length > 0 && qualifier[0] == '*') ? 1 : 0;
+	String s1 = new String(qualifier, offset, qualifier.length - offset);
+	char[] s2 = CharOperation.concat(binding.qualifiedPackageName(), binding.qualifiedSourceName(), '.');
+	return new String(s2).endsWith(s1);
+}
 
 private MethodBinding getMethodBinding(MethodPattern methodPattern, TypeBinding declaringTypeBinding) {
 	MethodBinding result;
@@ -1124,7 +1149,8 @@
 		boolean found = false;
 		if (methodParameters != null && paramLength == paramTypeslength) {
 			for (int p=0; p<paramLength; p++) {
-				if (CharOperation.equals(methodParameters[p].sourceName(), parameterTypes[p])) {
+				TypeBinding parameter = methodParameters[p];
+				if (matchParams(methodPattern, p, parameter)) {
 					// param erasure match
 					found = true;
 				} else {
@@ -1217,6 +1243,14 @@
 
 	this.lookupEnvironment.addResolutionListener(this.patternLocator);
 }
+private boolean skipMatch(JavaProject javaProject, PossibleMatch possibleMatch) {
+	if (this.options.sourceLevel >= ClassFileConstants.JDK9) {
+		char[] pModuleName = possibleMatch.getModuleName();
+		if (pModuleName != null && this.lookupEnvironment.getModule(pModuleName) == null)
+			return true;
+	}
+	return false;
+}
 protected void locateMatches(JavaProject javaProject, PossibleMatch[] possibleMatches, int start, int length) throws CoreException {
 	initialize(javaProject, length);
 
@@ -1228,6 +1262,7 @@
 	try {
 		for (int i = start, maxUnits = start + length; i < maxUnits; i++) {
 			PossibleMatch possibleMatch = possibleMatches[i];
+			if (skipMatch(javaProject, possibleMatch)) continue;
 			try {
 				if (!parseAndBuildBindings(possibleMatch, mustResolvePattern)) continue;
 				// Currently we only need to resolve over pattern flag if there's potential parameterized types
@@ -1395,6 +1430,7 @@
 		JavaProject previousJavaProject = null;
 		PossibleMatchSet matchSet = new PossibleMatchSet();
 		Util.sort(searchDocuments, new Util.Comparer() {
+			@Override
 			public int compare(Object a, Object b) {
 				return ((SearchDocument)a).getPath().compareTo(((SearchDocument)b).getPath());
 			}
@@ -1443,6 +1479,7 @@
 
 			// create new parser and lookup environment if this is a new project
 			IResource resource = null;
+			openable = getCloserOpenable(openable, pathString);
 			JavaProject javaProject = (JavaProject) openable.getJavaProject();
 			resource = workingCopy != null ? workingCopy.getResource() : openable.getResource();
 			if (resource == null)
@@ -1460,7 +1497,15 @@
 				}
 				previousJavaProject = javaProject;
 			}
-			matchSet.add(new PossibleMatch(this, resource, openable, searchDocument,this.pattern.mustResolve));
+			PossibleMatch possibleMatch = new PossibleMatch(this, resource, openable, searchDocument,this.pattern.mustResolve);
+			matchSet.add(possibleMatch);
+			if (pathString.endsWith(TypeConstants.AUTOMATIC_MODULE_NAME)) {
+				IPath path = resource.getFullPath();
+				String s = (pathString.contains(path.lastSegment())) ?
+						JavaModelManager.getLocalFile(path).toPath().toAbsolutePath().toString() :
+						pathString.split(Pattern.quote("|"))[0]; //$NON-NLS-1$
+				possibleMatch.autoModuleName = new String(AutomaticModuleNaming.determineAutomaticModuleName(s));
+			}			
 		}
 
 		// last project
@@ -1486,6 +1531,42 @@
 		this.bindings = null;
 	}
 }
+private IJavaSearchScope getSubScope(String optionString, long value, boolean ref) {
+	if (this.subScope != null)
+		return this.subScope;
+	IPath[] enclosingProjectsAndJars = this.scope.enclosingProjectsAndJars();
+	JavaModelManager manager = JavaModelManager.getJavaModelManager();
+	HashSet<IJavaProject> set = new HashSet<>();
+	for (int i = 0, l = enclosingProjectsAndJars.length; i < l; i++) {
+		IPath path = enclosingProjectsAndJars[i];
+		if (path.segmentCount() == 1) {
+			IJavaProject p = manager.getJavaModel().getJavaProject(path.segment(0));
+			if (p == null) continue;
+			if (CompilerOptions.versionToJdkLevel(p.getOption(optionString, true)) >= value) {
+				set.add(p);
+			}
+		}
+	}
+	return this.subScope = BasicSearchEngine.createJavaSearchScope(set.toArray(new IJavaProject[0]), ref);
+}
+private Openable getCloserOpenable(Openable openable, String pathString) {
+	if (this.pattern instanceof TypeDeclarationPattern &&
+			((TypeDeclarationPattern) this.pattern).moduleNames != null) {
+		JavaProject javaProject = (JavaProject) openable.getJavaProject();
+		PackageFragmentRoot root = openable.getPackageFragmentRoot();
+		if (root instanceof JarPackageFragmentRoot) {
+			JarPackageFragmentRoot jpkf = (JarPackageFragmentRoot) root;
+			if (jpkf.getModuleDescription() != null &&
+					CompilerOptions.versionToJdkLevel(javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true)) <
+					ClassFileConstants.JDK9) {
+				openable = this.handleFactory.createOpenable(pathString, 
+						getSubScope(JavaCore.COMPILER_COMPLIANCE, ClassFileConstants.JDK9, false));
+			}
+		}
+	}
+	return openable;
+}
+
 /**
  * Locates the package declarations corresponding to this locator's pattern.
  */
@@ -1643,6 +1724,10 @@
 			return new PackageDeclarationMatch(element, accuracy, offset, length, participant, resource);
 		case IJavaElement.TYPE_PARAMETER:
 			return new TypeParameterDeclarationMatch(element, accuracy, offset, length, participant, resource);
+		case IJavaElement.JAVA_MODULE:
+			ModuleDeclarationMatch match = new ModuleDeclarationMatch(binding == null ? element : ((JavaElement) element).resolved(binding), accuracy, offset, length, participant, resource);
+			this.matchBinding.put(match, binding);
+			return match;
 		default:
 			return null;
 	}
@@ -1748,7 +1833,7 @@
 		ASTNode reference) {
 	SearchParticipant participant = getParticipant();
 	IResource resource = this.currentPossibleMatch.resource;
-	boolean insideDocComment = (reference.bits & ASTNode.InsideJavadoc) != 0;
+	boolean insideDocComment = reference != null && (reference.bits & ASTNode.InsideJavadoc) != 0;
 	return new PackageReferenceMatch(enclosingElement, accuracy, offset, length, insideDocComment, participant, resource);
 }
 
@@ -1774,7 +1859,7 @@
 		ASTNode reference) {
 	SearchParticipant participant = getParticipant();
 	IResource resource = this.currentPossibleMatch.resource;
-	boolean insideDocComment = (reference.bits & ASTNode.InsideJavadoc) != 0;
+	boolean insideDocComment = reference != null && (reference.bits & ASTNode.InsideJavadoc) != 0;
 	if (enclosingBinding != null)
 		enclosingElement = ((JavaElement) enclosingElement).resolved(enclosingBinding);
 	return new TypeReferenceMatch(enclosingElement, accuracy, offset, length, insideDocComment, participant, resource);
@@ -1788,6 +1873,28 @@
 	return newTypeReferenceMatch(enclosingElement, enclosingBinding, accuracy, reference.sourceStart, reference.sourceEnd-reference.sourceStart+1, reference);
 }
 
+public ModuleReferenceMatch newModuleReferenceMatch(
+		IJavaElement enclosingElement,
+		Binding enclosingBinding,
+		int accuracy,
+		int offset,
+		int length,
+		ASTNode reference) {
+	SearchParticipant participant = getParticipant();
+	IResource resource = this.currentPossibleMatch.resource;
+	boolean insideDocComment = reference != null ? (reference.bits & ASTNode.InsideJavadoc) != 0 : false;
+	if (enclosingBinding != null)
+		enclosingElement = ((JavaElement) enclosingElement).resolved(enclosingBinding);
+	return new ModuleReferenceMatch(enclosingElement, accuracy, offset, length, insideDocComment, participant, resource);
+}
+
+public ModuleReferenceMatch newModuleReferenceMatch(
+		IJavaElement enclosingElement,
+		Binding enclosingBinding,
+		int accuracy,
+		ASTNode reference) {
+	return newModuleReferenceMatch(enclosingElement, enclosingBinding, accuracy, reference.sourceStart, reference.sourceEnd-reference.sourceStart+1, reference);
+}
 /**
  * Add the possibleMatch to the loop
  *  ->  build compilation unit declarations, their bindings and record their results.
@@ -1804,7 +1911,11 @@
 		CompilationResult unitResult = new CompilationResult(possibleMatch, 1, 1, this.options.maxProblemsPerUnit);
 		CompilationUnitDeclaration parsedUnit = this.parser.dietParse(possibleMatch, unitResult);
 		if (parsedUnit != null) {
-			if (!parsedUnit.isEmpty()) {
+			if (parsedUnit.isModuleInfo()) {
+				if (mustResolve) {
+					this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
+				}				
+			} else if (!parsedUnit.isEmpty()) {
 				if (mustResolve) {
 					this.lookupEnvironment.buildTypeBindings(parsedUnit, null /*no access restriction*/);
 				}
@@ -1856,8 +1967,20 @@
 						this.patternLocator.mayBeGeneric = mayBeGeneric;
 					}
 				}
+			} else if (this.currentPossibleMatch.openable instanceof ModularClassFile &&
+					unit.moduleDeclaration == null) { // no source
+				boolean mayBeGeneric = this.patternLocator.mayBeGeneric;
+				this.patternLocator.mayBeGeneric = false; // there's no longer generic in class files
+				try {
+					new ModularClassFileMatchLocator().locateMatches(this, (ModularClassFile) this.currentPossibleMatch.openable);
+				}
+				finally {
+					this.patternLocator.mayBeGeneric = mayBeGeneric;
+				}
+				return;
 			}
-			return;
+			if (!unit.isModuleInfo())
+				return;
 		}
 		if (hasAlreadyDefinedType(unit)) return; // skip type has it is hidden so not visible
 
@@ -1882,6 +2005,13 @@
 				if (BasicSearchEngine.VERBOSE)
 					System.out.println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$
 				unit.resolve();
+			} else if (unit.isModuleInfo()) {
+				if (BasicSearchEngine.VERBOSE)
+					System.out.println("Resolving " + this.currentPossibleMatch.openable.toStringWithAncestors()); //$NON-NLS-1$
+				this.lookupEnvironment.unitBeingCompleted = unit;
+				if (unit.scope != null && unit.moduleDeclaration != null) {
+					unit.moduleDeclaration.resolveTypeDirectives(unit.scope);
+				}
 			}
 		}
 		reportMatching(unit, mustResolve);
@@ -2335,7 +2465,6 @@
 	SearchMatch match = newDeclarationMatch(binaryMember, binaryMemberBinding, accuracy, range.getOffset(), range.getLength(), getParticipant(), resource);
 	report(match);
 }
-
 protected void reportMatching(LambdaExpression lambdaExpression,  IJavaElement parent, int accuracy, MatchingNodeSet nodeSet, boolean typeInHierarchy) throws CoreException {
 	IJavaElement enclosingElement = null;
 	// Report the lambda declaration itself.
@@ -2631,10 +2760,16 @@
 				if (this.hierarchyResolver != null) continue;
 
 				ImportReference importRef = (ImportReference) node;
-				Binding binding = (importRef.bits & ASTNode.OnDemand) != 0
+				boolean inModule = (importRef.bits & ASTNode.inModule) != 0;
+				boolean getOnDemand = (importRef.bits & ASTNode.OnDemand) != 0 || inModule;
+				Binding binding = getOnDemand
 					? this.unitScope.getImport(CharOperation.subarray(importRef.tokens, 0, importRef.tokens.length), true, importRef.isStatic())
 					: this.unitScope.getImport(importRef.tokens, false, importRef.isStatic());
-				this.patternLocator.matchLevelAndReportImportRef(importRef, binding, this);
+				if (inModule) {
+					nodeSet.addMatch(node, this.patternLocator.resolveLevel(binding)); // report all module-info together
+				} else {
+					this.patternLocator.matchLevelAndReportImportRef(importRef, binding, this);
+				}
 			} else {
 				nodeSet.addMatch(node, this.patternLocator.resolveLevel(node));
 			}
@@ -2706,6 +2841,11 @@
 			this.inTypeOccurrencesCounts = new HashtableOfIntValues();
 			reportMatching(type, null, accuracy, nodeSet, 1);
 		}
+	} else if (unit.moduleDeclaration != null) {
+		ModuleDeclaration mod = unit.moduleDeclaration;
+		Integer level = (Integer) nodeSet.matchingNodes.removeKey(mod);
+		int accuracy = (level != null && matchedUnitContainer) ? level.intValue() : -1;
+		reportMatching(mod, null, accuracy, nodeSet, 1);
 	}
 
 	// Clear handle cache
@@ -2842,6 +2982,119 @@
 	}
 }
 /**
+ * Visit the given module declaration and report the nodes that match exactly the
+ * search pattern (i.e. the ones in the matching nodes set)
+ */
+protected void reportMatching(ModuleDeclaration module, IJavaElement parent, int accuracy, MatchingNodeSet nodeSet, int occurrenceCount) throws CoreException {
+	if (this.currentPossibleMatch.autoModuleName != null && accuracy > -1) {
+		reportMatchingAutoModule(module, parent, accuracy);
+		return;
+	}
+	IModuleDescription moduleDesc =  null;
+	Openable openable = this.currentPossibleMatch.openable;
+	if (openable instanceof ITypeRoot) {
+		ITypeRoot typeRoot = (ITypeRoot) openable;
+		try {
+			moduleDesc =  typeRoot.getModule();
+		} catch (JavaModelException e) {
+			// do nothing
+		}
+	}
+	if (moduleDesc == null) // could theoretically happen if openable is ICompilationUnit, but logically having a module should prevent this from happening
+		return;
+	reportMatching(module.annotations, moduleDesc, null, module.binding, nodeSet, true, true);
+	if (accuracy > -1) { // report module declaration
+		SearchMatch match = this.patternLocator.newDeclarationMatch(module, moduleDesc, module.binding, accuracy, module.moduleName.length, this);
+		report(match);
+	}
+	reportMatching(module.requires, module,  nodeSet, moduleDesc);
+	reportMatching(module.exports, nodeSet, moduleDesc);
+	reportMatching(module.opens, nodeSet, moduleDesc);
+	reportMatching(module.services, module, nodeSet, moduleDesc);
+	reportMatching(module.uses, module, nodeSet, moduleDesc);
+}
+private void reportMatchingAutoModule(ModuleDeclaration module, IJavaElement parent, int accuracy) throws CoreException {
+	IModuleDescription autoModule = new AbstractModule.AutoModule( this.currentPossibleMatch.openable, this.currentPossibleMatch.autoModuleName, true);
+	SearchMatch match = this.patternLocator.newDeclarationMatch(module, autoModule, module.binding, accuracy, module.moduleName.length, this);
+	report(match);
+}
+
+private void reportMatching(RequiresStatement[] reqs, ModuleDeclaration module, MatchingNodeSet nodeSet, IModuleDescription moduleDesc) {
+	if (reqs == null || reqs.length == 0)
+		return;
+	try {
+		for (RequiresStatement req : reqs) {
+			Integer level = (Integer) nodeSet.matchingNodes.removeKey(req.module);
+			if (level != null) {
+				this.patternLocator.matchReportReference(req.module, moduleDesc, req.resolvedBinding, level.intValue(), this);
+			}
+		}
+	} catch (CoreException e) {
+		// do nothing
+	}
+}
+
+private void reportMatching(PackageVisibilityStatement[] psvs, MatchingNodeSet nodeSet, IModuleDescription moduleDesc)
+		throws JavaModelException, CoreException {
+	if (psvs != null && psvs.length > 0) {
+		for (PackageVisibilityStatement psv : psvs) {
+			ImportReference importRef = psv.pkgRef;
+			Integer level = (Integer) nodeSet.matchingNodes.removeKey(importRef);
+			if (level != null) {
+				Binding binding = this.unitScope.getImport(CharOperation.subarray(importRef.tokens, 0, importRef.tokens.length), true, false);
+				this.patternLocator.matchReportImportRef(importRef, binding, moduleDesc, level.intValue(), this);
+			}
+			ModuleReference[] tgts = psv.targets;
+			if (tgts == null || tgts.length == 0) continue;
+			for (ModuleReference tgt : tgts) {
+				level = (Integer) nodeSet.matchingNodes.removeKey(tgt);
+				if (level != null) {
+					this.patternLocator.matchReportReference(tgt, moduleDesc, tgt.resolve(this.unitScope), level.intValue(), this);
+				}
+			}
+		}
+	}
+}
+private void reportMatching(ProvidesStatement[] provides, ModuleDeclaration module, MatchingNodeSet nodeSet, IModuleDescription moduleDesc) throws JavaModelException, CoreException {
+	if (provides != null && provides.length > 0) {
+		for (ProvidesStatement service : provides) {
+			TypeReference intf = service.serviceInterface;
+			if (intf != null) {
+				Integer level = (Integer) nodeSet.matchingNodes.removeKey(intf);
+				if (level != null)
+					this.patternLocator.matchReportReference(intf, moduleDesc, null, null, module.binding, level.intValue(), this);
+			}
+			TypeReference[] impls = service.implementations;
+			for (TypeReference impl : impls) {
+				if (impl != null) {
+					Integer level = (Integer) nodeSet.matchingNodes.removeKey(impl);
+					if (level != null)
+						this.patternLocator.matchReportReference(impl, moduleDesc, null, null, module.binding, level.intValue(), this);
+				}
+			}
+		}
+	}
+}
+private void reportMatching(UsesStatement[] uses, ModuleDeclaration module, MatchingNodeSet nodeSet, IModuleDescription moduleDesc) {
+	if (uses != null && uses.length > 0) {
+		try {
+			for (UsesStatement service : uses) {
+				TypeReference intf = service.serviceInterface;
+				if (intf != null) {
+					Integer level = (Integer) nodeSet.matchingNodes.removeKey(intf);
+					if (level != null) {
+						this.patternLocator.matchReportReference(intf, moduleDesc, null, null, module.binding, level.intValue(), this);
+					}
+				}
+			}
+		} catch (CoreException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+}
+
+/**
  * Visit the given type declaration and report the nodes that match exactly the
  * search pattern (i.e. the ones in the matching nodes set)
  */
@@ -2863,7 +3116,7 @@
 				if ((type.bits & ASTNode.IsAnonymousType) != 0) {
 					if (fileName != null) {
 						if (fileName.endsWith("jar") || fileName.endsWith(SuffixConstants.SUFFIX_STRING_class)) { //$NON-NLS-1$
-							IClassFile classFile= binaryType.getPackageFragment().getClassFile(binaryType.getTypeQualifiedName() + 
+							IOrdinaryClassFile classFile= binaryType.getPackageFragment().getOrdinaryClassFile(binaryType.getTypeQualifiedName() + 
 									"$" + Integer.toString(occurrenceCount) + SuffixConstants.SUFFIX_STRING_class);//$NON-NLS-1$
 							anonType =  classFile.getType();
 						}
@@ -2872,7 +3125,7 @@
 					}
 				}
 			}
-			enclosingElement = anonType != null ? anonType : ((IClassFile)this.currentPossibleMatch.openable).getType() ;
+			enclosingElement = anonType != null ? anonType : ((IOrdinaryClassFile)this.currentPossibleMatch.openable).getType() ;
 		} else {
 			enclosingElement = member.getType(new String(type.name), occurrenceCount);
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
index b60c7e3..16fbaa6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchLocatorParser.java
@@ -1,10 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- * 
+ *
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
@@ -38,52 +38,64 @@
  * An ast visitor that visits local type declarations.
  */
 public class NoClassNoMethodDeclarationVisitor extends ASTVisitor {
+	@Override
 	public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 		return (constructorDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
+	@Override
 	public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) {
 		return (fieldDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type;
 	}
+	@Override
 	public boolean visit(Initializer initializer, MethodScope scope) {
 		return (initializer.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
+	@Override
 	public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 		return (methodDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
 }
 public class MethodButNoClassDeclarationVisitor extends NoClassNoMethodDeclarationVisitor {
+	@Override
 	public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope scope) {
 		MatchLocatorParser.this.patternLocator.match(localTypeDeclaration, MatchLocatorParser.this.nodeSet);
 		return true;
 	}
 }
 public class ClassButNoMethodDeclarationVisitor extends ASTVisitor {
+	@Override
 	public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 		MatchLocatorParser.this.patternLocator.match(constructorDeclaration, MatchLocatorParser.this.nodeSet);
 		return (constructorDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
+	@Override
 	public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) {
 		MatchLocatorParser.this.patternLocator.match(fieldDeclaration, MatchLocatorParser.this.nodeSet);
 		return (fieldDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type;
 	}
+	@Override
 	public boolean visit(Initializer initializer, MethodScope scope) {
 		MatchLocatorParser.this.patternLocator.match(initializer, MatchLocatorParser.this.nodeSet);
 		return (initializer.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
+	@Override
 	public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) {
 		MatchLocatorParser.this.patternLocator.match(memberTypeDeclaration, MatchLocatorParser.this.nodeSet);
 		return true;
 	}
+	@Override
 	public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 		MatchLocatorParser.this.patternLocator.match(methodDeclaration, MatchLocatorParser.this.nodeSet);
 		return (methodDeclaration.bits & ASTNode.HasLocalType) != 0; // continue only if it has local type
 	}
+	@Override
 	public boolean visit(AnnotationMethodDeclaration methodDeclaration, ClassScope scope) {
 		MatchLocatorParser.this.patternLocator.match(methodDeclaration, MatchLocatorParser.this.nodeSet);
 		return false; // no local type for annotation type members
 	}
 }
 public class ClassAndMethodDeclarationVisitor extends ClassButNoMethodDeclarationVisitor {
+	@Override
 	public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope scope) {
 		MatchLocatorParser.this.patternLocator.match(localTypeDeclaration, MatchLocatorParser.this.nodeSet);
 		return true;
@@ -105,6 +117,7 @@
 	}
 	this.patternFineGrain = this.patternLocator.fineGrain();
 }
+@Override
 public void checkComment() {
 	super.checkComment();
 	if (this.javadocParser.checkDocComment && this.javadoc != null && this.patternFineGrain == 0 /* there's no fine grain concerning Javadoc*/) {
@@ -184,6 +197,7 @@
 	}
 }
 
+@Override
 protected void classInstanceCreation(boolean alwaysQualified) {
 	super.classInstanceCreation(alwaysQualified);
 	if (this.patternFineGrain == 0) {
@@ -194,6 +208,7 @@
 	}
 }
 
+@Override
 protected void consumeAdditionalBound() {
 	super.consumeAdditionalBound();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_VARIABLE_BOUND_TYPE_REFERENCE) != 0) {
@@ -202,6 +217,7 @@
 	}
 }
 
+@Override
 protected void consumeAssignment() {
 	super.consumeAssignment();
 	if (this.patternFineGrain == 0) {
@@ -209,6 +225,7 @@
 	}
 }
 
+@Override
 protected void consumeCastExpressionLL1() {
 	super.consumeCastExpressionLL1();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -216,6 +233,7 @@
 		this.patternLocator.match(castExpression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeCastExpressionLL1WithBounds() {
 	super.consumeCastExpressionLL1WithBounds();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -225,6 +243,7 @@
 			this.patternLocator.match(typeReferences[i], this.nodeSet);
 	}
 }
+@Override
 protected void consumeCastExpressionWithGenericsArray() {
 	super.consumeCastExpressionWithGenericsArray();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -232,6 +251,7 @@
 		this.patternLocator.match(castExpression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeCastExpressionWithNameArray() {
 	super.consumeCastExpressionWithNameArray();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -239,6 +259,7 @@
 		this.patternLocator.match(castExpression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeCastExpressionWithPrimitiveType() {
 	super.consumeCastExpressionWithPrimitiveType();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -246,6 +267,7 @@
 		this.patternLocator.match(castExpression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeCastExpressionWithQualifiedGenericsArray() {
 	super.consumeCastExpressionWithQualifiedGenericsArray();
 	if ((this.patternFineGrain & IJavaSearchConstants.CAST_TYPE_REFERENCE) != 0) {
@@ -253,11 +275,13 @@
 		this.patternLocator.match(castExpression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeCatchFormalParameter() {
 	super.consumeCatchFormalParameter();
 	this.patternLocator.match((LocalDeclaration) this.astStack[this.astPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeClassHeaderExtends() {
 	this.patternLocator.setFlavors(PatternLocator.SUPERTYPE_REF_FLAVOR);
 	super.consumeClassHeaderExtends();
@@ -268,6 +292,7 @@
 	this.patternLocator.setFlavors(PatternLocator.NO_FLAVOR);
 }
 
+@Override
 protected void consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() {
 	super.consumeClassInstanceCreationExpressionWithTypeArguments();
 	if (this.patternFineGrain == 0) {
@@ -278,6 +303,7 @@
 	}
 }
 
+@Override
 protected void consumeClassInstanceCreationExpressionWithTypeArguments() {
 	super.consumeClassInstanceCreationExpressionWithTypeArguments();
 	if (this.patternFineGrain == 0) {
@@ -288,12 +314,14 @@
 	}
 }
 
+@Override
 protected void consumeEnterAnonymousClassBody(boolean qualified) {
 	this.patternLocator.setFlavors(PatternLocator.SUPERTYPE_REF_FLAVOR);
 	super.consumeEnterAnonymousClassBody(qualified);
 	this.patternLocator.setFlavors(PatternLocator.NO_FLAVOR);
 }
 
+@Override
 protected void consumeEnterVariable() {
 	boolean isLocalDeclaration = this.nestedMethod[this.nestedType] != 0;
 	super.consumeEnterVariable();
@@ -310,14 +338,22 @@
 	}
 }
 
+@Override
 protected void consumeExplicitConstructorInvocation(int flag, int recFlag) {
 	super.consumeExplicitConstructorInvocation(flag, recFlag);
 	this.patternLocator.match(this.astStack[this.astPtr], this.nodeSet);
 }
+@Override
 protected void consumeExplicitConstructorInvocationWithTypeArguments(int flag, int recFlag) {
 	super.consumeExplicitConstructorInvocationWithTypeArguments(flag, recFlag);
 	this.patternLocator.match(this.astStack[this.astPtr], this.nodeSet);
 }
+@Override
+protected void consumeExportsHeader() {
+	super.consumeExportsHeader();
+	this.patternLocator.match(((ExportsStatement) this.astStack[this.astPtr]).pkgRef, this.nodeSet);
+}
+@Override
 protected void consumeFieldAccess(boolean isSuperAccess) {
 	super.consumeFieldAccess(isSuperAccess);
 
@@ -328,11 +364,13 @@
 	}
 }
 
+@Override
 protected void consumeFormalParameter(boolean isVarArgs) {
 	super.consumeFormalParameter(isVarArgs);
 	this.patternLocator.match((LocalDeclaration) this.astStack[this.astPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeInstanceOfExpression() {
 	super.consumeInstanceOfExpression();
 	if ((this.patternFineGrain & IJavaSearchConstants.INSTANCEOF_TYPE_REFERENCE) != 0) {
@@ -340,6 +378,7 @@
 		this.patternLocator.match(expression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeInstanceOfExpressionWithName() {
 	super.consumeInstanceOfExpressionWithName();
 	if ((this.patternFineGrain & IJavaSearchConstants.INSTANCEOF_TYPE_REFERENCE) != 0) {
@@ -347,6 +386,7 @@
 		this.patternLocator.match(expression.type, this.nodeSet);
 	}
 }
+@Override
 protected void consumeInterfaceType() {
 	this.patternLocator.setFlavors(PatternLocator.SUPERTYPE_REF_FLAVOR);
 	super.consumeInterfaceType();
@@ -363,11 +403,13 @@
 	this.patternLocator.match((LambdaExpression) this.expressionStack[this.expressionPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeLocalVariableDeclaration() {
 	super.consumeLocalVariableDeclaration();
 	this.patternLocator.match((LocalDeclaration) this.astStack[this.astPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeMarkerAnnotation(boolean isTypeAnnotation) {
 	super.consumeMarkerAnnotation(isTypeAnnotation);
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE) != 0) {
@@ -375,6 +417,7 @@
 		this.patternLocator.match(annotation, this.nodeSet);
 	}
 }
+@Override
 protected void consumeMemberValuePair() {
 	super.consumeMemberValuePair();
 	if ((this.patternFineGrain & ~IJavaSearchConstants.METHOD_REFERENCE_EXPRESSION) != 0) {
@@ -382,6 +425,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodHeaderName(boolean isAnnotationMethod) {
 	super.consumeMethodHeaderName(isAnnotationMethod);
 	if ((this.patternFineGrain & IJavaSearchConstants.RETURN_TYPE_REFERENCE) != 0) {
@@ -390,6 +434,7 @@
 		this.patternLocator.match(methodDeclaration.returnType, this.nodeSet);
 	}
 }
+@Override
 protected void consumeMethodHeaderRightParen() {
 	super.consumeMethodHeaderRightParen();
 	if ((this.patternFineGrain & IJavaSearchConstants.PARAMETER_DECLARATION_TYPE_REFERENCE) != 0) {
@@ -404,6 +449,7 @@
 		}
 	}
 }
+@Override
 protected void consumeMethodHeaderThrowsClause() {
 	super.consumeMethodHeaderThrowsClause();
 	if ((this.patternFineGrain & IJavaSearchConstants.THROWS_CLAUSE_TYPE_REFERENCE) != 0) {
@@ -419,6 +465,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationName() {
 	super.consumeMethodInvocationName();
 	MessageSend messageSend = (MessageSend) this.expressionStack[this.expressionPtr];
@@ -437,6 +484,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationNameWithTypeArguments() {
 	super.consumeMethodInvocationNameWithTypeArguments();
 	MessageSend messageSend = (MessageSend) this.expressionStack[this.expressionPtr];
@@ -455,6 +503,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationPrimary() {
 	super.consumeMethodInvocationPrimary();
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.THIS_REFERENCE) != 0) {
@@ -462,6 +511,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationPrimaryWithTypeArguments() {
 	super.consumeMethodInvocationPrimaryWithTypeArguments();
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.THIS_REFERENCE) != 0) {
@@ -469,6 +519,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationSuper() {
 	super.consumeMethodInvocationSuper();
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.SUPER_REFERENCE) != 0) {
@@ -476,6 +527,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationSuperWithTypeArguments() {
 	super.consumeMethodInvocationSuperWithTypeArguments();
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.SUPER_REFERENCE) != 0) {
@@ -483,6 +535,12 @@
 	}
 }
 
+@Override
+protected void consumeModuleHeader() {
+	super.consumeModuleHeader();
+	this.patternLocator.match(((ModuleDeclaration) this.astStack[this.astPtr]), this.nodeSet);
+}
+@Override
 protected void consumeNormalAnnotation(boolean isTypeAnnotation) {
 	super.consumeNormalAnnotation(isTypeAnnotation);
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE) != 0) {
@@ -492,6 +550,7 @@
 	}
 }
 
+@Override
 protected void consumeOnlyTypeArguments() {
 	super.consumeOnlyTypeArguments();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -504,7 +563,27 @@
 		}
 	}
 }
-
+@Override
+protected void consumeOpensHeader() {
+	super.consumeOpensHeader();
+	this.patternLocator.match(((OpensStatement) this.astStack[this.astPtr]).pkgRef, this.nodeSet);
+}
+@Override
+protected void consumeProvidesInterface() {
+	super.consumeProvidesInterface();
+	ProvidesStatement ref = (ProvidesStatement) this.astStack[this.astPtr];
+	this.patternLocator.match(ref.serviceInterface, this.nodeSet);
+}
+@Override
+protected void consumeProvidesStatement() {
+	super.consumeProvidesStatement();
+	ProvidesStatement ref = (ProvidesStatement) this.astStack[this.astPtr];
+	TypeReference[] impls = ref.implementations;
+	for (TypeReference impl : impls) {
+		this.patternLocator.match(impl, this.nodeSet);
+	}
+}
+@Override
 protected void consumePrimaryNoNewArrayWithName() {
 	// PrimaryNoNewArray ::=  PushLPAREN Expression PushRPAREN
 	pushOnExpressionStack(getUnspecifiedReferenceOptimized());
@@ -536,6 +615,7 @@
 	}
 }
 
+@Override
 protected void consumeSingleMemberAnnotation(boolean isTypeAnnotation) {
 	super.consumeSingleMemberAnnotation(isTypeAnnotation);
 	if (this.patternFineGrain == 0 || (this.patternFineGrain & IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE) != 0) {
@@ -544,7 +624,26 @@
 		this.patternLocator.match(annotation, this.nodeSet);
 	}
 }
+@Override
+protected void consumeSingleRequiresModuleName() {
+	super.consumeSingleRequiresModuleName();
+	RequiresStatement req = (RequiresStatement) this.astStack[this.astPtr];
+	this.patternLocator.match(req.module, this.nodeSet);
+}
+private void setTarget(boolean flag) {
+	if (this.patternLocator instanceof ModuleLocator) {
+		((ModuleLocator) this.patternLocator).target = flag;
+	}
+}
+@Override
+protected void consumeSingleTargetModuleName() {
+	super.consumeSingleTargetModuleName();
+	setTarget(true);
+	this.patternLocator.match((ModuleReference)this.astStack[this.astPtr], this.nodeSet);
+	setTarget(false);
+}
 
+@Override
 protected void consumeStatementCatch() {
 	super.consumeStatementCatch();
 	if ((this.patternFineGrain & IJavaSearchConstants.CATCH_TYPE_REFERENCE) != 0) {
@@ -561,6 +660,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArgumentList1() {
 	super.consumeTypeArgumentList1();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -573,6 +673,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArgumentList2() {
 	super.consumeTypeArgumentList2();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -585,6 +686,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArgumentList3() {
 	super.consumeTypeArgumentList3();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -597,6 +699,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArgumentReferenceType1() {
 	super.consumeTypeArgumentReferenceType1();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -621,6 +724,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArgumentReferenceType2() {
 	super.consumeTypeArgumentReferenceType2();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -645,6 +749,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeArguments() {
 	super.consumeTypeArguments();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_ARGUMENT_TYPE_REFERENCE) != 0) {
@@ -658,11 +763,13 @@
 	}
 }
 
+@Override
 protected void consumeTypeElidedLambdaParameter(boolean parenthesized) {
 	super.consumeTypeElidedLambdaParameter(parenthesized);
 	this.patternLocator.match((LocalDeclaration) this.astStack[this.astPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeTypeParameter1WithExtends() {
 	super.consumeTypeParameter1WithExtends();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_VARIABLE_BOUND_TYPE_REFERENCE) != 0) {
@@ -671,6 +778,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeParameter1WithExtendsAndBounds() {
 	super.consumeTypeParameter1WithExtendsAndBounds();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_VARIABLE_BOUND_TYPE_REFERENCE) != 0) {
@@ -679,11 +787,13 @@
 	}
 }
 
+@Override
 protected void consumeTypeParameterHeader() {
 	super.consumeTypeParameterHeader();
 	this.patternLocator.match((TypeParameter)this.genericsStack[this.genericsPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeTypeParameterWithExtends() {
 	super.consumeTypeParameterWithExtends();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_VARIABLE_BOUND_TYPE_REFERENCE) != 0) {
@@ -692,6 +802,7 @@
 	}
 }
 
+@Override
 protected void consumeTypeParameterWithExtendsAndBounds() {
 	super.consumeTypeParameterWithExtendsAndBounds();
 	if ((this.patternFineGrain & IJavaSearchConstants.TYPE_VARIABLE_BOUND_TYPE_REFERENCE) != 0) {
@@ -700,11 +811,13 @@
 	}
 }
 
+@Override
 protected void consumeUnaryExpression(int op, boolean post) {
 	super.consumeUnaryExpression(op, post);
 	this.patternLocator.match(this.expressionStack[this.expressionPtr], this.nodeSet);
 }
 
+@Override
 protected void consumeWildcardBounds1Extends() {
 	super.consumeWildcardBounds1Extends();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -713,6 +826,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBounds1Super() {
 	super.consumeWildcardBounds1Super();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -721,6 +835,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBounds2Extends() {
 	super.consumeWildcardBounds2Extends();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -729,6 +844,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBounds2Super() {
 	super.consumeWildcardBounds2Super();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -737,6 +853,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBounds3Extends() {
 	super.consumeWildcardBounds3Extends();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -745,6 +862,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBounds3Super() {
 	super.consumeWildcardBounds3Super();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -753,6 +871,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBoundsExtends() {
 	super.consumeWildcardBoundsExtends();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -761,6 +880,7 @@
 	}
 }
 
+@Override
 protected void consumeWildcardBoundsSuper() {
 	super.consumeWildcardBoundsSuper();
 	if ((this.patternFineGrain & IJavaSearchConstants.WILDCARD_BOUND_TYPE_REFERENCE) != 0) {
@@ -769,6 +889,7 @@
 	}
 }
 
+@Override
 protected TypeReference augmentTypeWithAdditionalDimensions(TypeReference typeRef, int additionalDimensions, Annotation [][] additionalAnnotations, boolean isVarargs) {
 	TypeReference result = super.augmentTypeWithAdditionalDimensions(typeRef, additionalDimensions, additionalAnnotations, isVarargs);
 	 if (this.nodeSet.removePossibleMatch(typeRef) != null)
@@ -777,6 +898,7 @@
 		this.nodeSet.addTrustedMatch(result, true);
 	return result;
 }
+@Override
 protected TypeReference getTypeReference(int dim) {
 	TypeReference typeRef = super.getTypeReference(dim);
 	if (this.patternFineGrain == 0) {
@@ -784,6 +906,7 @@
 	}
 	return typeRef;
 }
+@Override
 protected NameReference getUnspecifiedReference(boolean rejectTypeAnnotations) {
 	NameReference nameRef = super.getUnspecifiedReference(rejectTypeAnnotations);
 	if (this.patternFineGrain == 0) {
@@ -799,6 +922,7 @@
 	}
 	return nameRef;
 }
+@Override
 protected NameReference getUnspecifiedReferenceOptimized() {
 	NameReference nameRef = super.getUnspecifiedReferenceOptimized();
 	if (this.patternFineGrain == 0) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.java
index c6e7cd7..b60203f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MatchingNodeSet.java
@@ -149,6 +149,7 @@
 
 	// sort nodes by source starts
 	Util.Comparer comparer = new Util.Comparer() {
+		@Override
 		public int compare(Object o1, Object o2) {
 			return ((ASTNode) o1).sourceStart - ((ASTNode) o2).sourceStart;
 		}
@@ -172,6 +173,7 @@
 	this.matchingNodesKeys.put(key, null);
 	return this.matchingNodes.removeKey(node);
 }
+@Override
 public String toString() {
 	// TODO (jerome) should show both tables
 	StringBuffer result = new StringBuffer();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.java
index 208f101..3561fa3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MemberDeclarationVisitor.java
@@ -77,18 +77,23 @@
 		}
 	}
 }
+@Override
 public void endVisit(Argument argument, BlockScope scope) {
     this.localDeclaration = null;
 }
+@Override
 public void endVisit(LocalDeclaration declaration, BlockScope scope) {
     this.localDeclaration = null;
 }
+@Override
 public void endVisit(MarkerAnnotation markerAnnotation, BlockScope unused) {
 	this.annotation = null;
 }
+@Override
 public void endVisit(NormalAnnotation normalAnnotation, BlockScope unused) {
 	this.annotation = null;
 }
+@Override
 public void endVisit(SingleMemberAnnotation singleMemberAnnotation, BlockScope unused) {
 	this.annotation = null;
 }
@@ -206,10 +211,12 @@
     	}
     }
 }
+@Override
 public boolean visit(Argument argument, BlockScope scope) {
     this.localDeclaration = argument;
     return true;
 }
+@Override
 public boolean visit(LambdaExpression lambdaExpression, BlockScope scope) {
 	Integer level = (Integer) this.nodeSet.matchingNodes.removeKey(lambdaExpression);
 	try {
@@ -223,18 +230,22 @@
 	}
 	return false; // Don't visit the children as they get traversed under control of reportMatching.
 }
+@Override
 public boolean visit(LocalDeclaration declaration, BlockScope scope) {
     this.localDeclaration = declaration;
     return true;
 }
+@Override
 public boolean visit(MarkerAnnotation markerAnnotation, BlockScope unused) {
 	this.annotation = markerAnnotation;
 	return true;
 }
+@Override
 public boolean visit(NormalAnnotation normalAnnotation, BlockScope unused) {
 	this.annotation = normalAnnotation;
 	return true;
 }
+@Override
 public boolean visit(QualifiedNameReference nameReference, BlockScope unused) {
 	if (this.nodesCount > 0){
 		int idx = matchNode(nameReference);
@@ -244,6 +255,7 @@
 	}
 	return false;
 }
+@Override
 public boolean visit(QualifiedTypeReference typeReference, BlockScope unused) {
 	if (this.nodesCount > 0){
 		int idx = matchNode(typeReference);
@@ -253,10 +265,12 @@
 	}
 	return false;
 }
+@Override
 public boolean visit(SingleMemberAnnotation singleMemberAnnotation, BlockScope unused) {
 	this.annotation = singleMemberAnnotation;
 	return true;
 }
+@Override
 public boolean visit(SingleNameReference nameReference, BlockScope unused) {
 	if (this.nodesCount > 0){
 		int idx = matchNode(nameReference);
@@ -266,6 +280,7 @@
 	}
 	return false;
 }
+@Override
 public boolean visit(SingleTypeReference typeReference, BlockScope unused) {
 	if (this.nodesCount > 0){
 		int idx = matchNode(typeReference);
@@ -289,6 +304,7 @@
 	}
 	return ret;
 }
+@Override
 public boolean visit(TypeDeclaration typeDeclaration, BlockScope unused) {
 	try {
 		char[] simpleName;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.java
index c7ca706..4a0c26c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodDeclarationPattern.java
@@ -173,6 +173,7 @@
 	super(matchRule);
 }
 
+@Override
 public void decodeIndexKey(char[] key) {
 	
 	int start = 0;
@@ -262,10 +263,12 @@
 	removeInternalFlags(); // remove internal flags
 }
 
+	@Override
 	public SearchPattern getBlankPattern() {
 		return new MethodDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 	}
 
+	@Override
 	public char[][] getIndexCategories() {
 		return new char[][] { METHOD_DECL_PLUS };
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java
index 695d294..eb5c7eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java
@@ -58,9 +58,11 @@
 /*
  * Clear caches
  */
+@Override
 protected void clear() {
 	this.methodDeclarationsWithInvalidParam = new HashMap();
 }
+@Override
 protected int fineGrain() {
 	return this.pattern.fineGrain;
 }
@@ -105,6 +107,7 @@
 	return null;
 }
 
+@Override
 public void initializePolymorphicSearch(MatchLocator locator) {
 	long start = 0;
 	if (BasicSearchEngine.VERBOSE) {
@@ -167,6 +170,7 @@
 	
 	return null;
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) {
 	int declarationsLevel = IMPOSSIBLE_MATCH;
 	if (this.pattern.findReferences) {
@@ -187,6 +191,7 @@
 	return nodeSet.addMatch(node, declarationsLevel);
 }
 
+@Override
 public int match(LambdaExpression node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findDeclarations) return IMPOSSIBLE_MATCH;
 	if (this.pattern.parameterSimpleNames != null && this.pattern.parameterSimpleNames.length != node.arguments().length) return IMPOSSIBLE_MATCH;
@@ -198,6 +203,7 @@
 //public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(Expression node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(FieldDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(MethodDeclaration node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findDeclarations) return IMPOSSIBLE_MATCH;
 
@@ -237,6 +243,7 @@
 	// Method declaration may match pattern
 	return nodeSet.addMatch(node, resolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
+@Override
 public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 
@@ -244,6 +251,7 @@
 
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
+@Override
 public int match(MessageSend node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 
@@ -258,6 +266,7 @@
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
 
+@Override
 public int match(ReferenceExpression node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 	if (!matchesName(this.pattern.selector, node.selector)) return IMPOSSIBLE_MATCH;
@@ -267,6 +276,7 @@
 	return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
 }
 
+@Override
 public int match(Annotation node, MatchingNodeSet nodeSet) {
 	if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
 	MemberValuePair[] pairs = node.memberValuePairs();
@@ -286,6 +296,7 @@
 //public int match(TypeDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(TypeReference node, MatchingNodeSet nodeSet) - SKIP IT
 
+@Override
 protected int matchContainer() {
 	if (this.pattern.findReferences) {
 		// need to look almost everywhere to find in javadocs and static import
@@ -297,6 +308,7 @@
  * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchLevelAndReportImportRef(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
  * Accept to report match of static field on static import
  */
+@Override
 protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
 	if (importRef.isStatic() && binding instanceof MethodBinding) {
 		super.matchLevelAndReportImportRef(importRef, binding, locator);
@@ -439,12 +451,14 @@
 	}
 	return false;
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchReportReference(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode, org.aspectj.org.eclipse.jdt.core.IJavaElement, Binding, int, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
  */
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	MethodBinding methodBinding = (reference instanceof MessageSend) ? ((MessageSend)reference).binding: ((elementBinding instanceof MethodBinding) ? (MethodBinding) elementBinding : null);
 	if (this.isDeclarationOfReferencedMethodsPattern) {
@@ -598,6 +612,7 @@
 	}
 	return true;
 }
+@Override
 public SearchMatch newDeclarationMatch(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, int length, MatchLocator locator) {
 	if (elementBinding != null) {
 		MethodBinding methodBinding = (MethodBinding) elementBinding;
@@ -632,6 +647,7 @@
 	}
 	return super.newDeclarationMatch(reference, element, elementBinding, accuracy, length, locator);
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.METHOD;
 }
@@ -692,6 +708,7 @@
 		}
 	}
 }
+@Override
 public int resolveLevel(ASTNode possibleMatchingNode) {
 	if (this.pattern.findReferences) {
 		if (possibleMatchingNode instanceof MessageSend) {
@@ -719,6 +736,7 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof MethodBinding)) return IMPOSSIBLE_MATCH;
@@ -942,6 +960,7 @@
 	}
 	return false;
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.java
index 63b9dcb..103b28d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MethodPattern.java
@@ -257,6 +257,7 @@
 	this.methodArguments = arguments;
 	if (hasMethodArguments())  this.mustResolve = true;
 }
+@Override
 public void decodeIndexKey(char[] key) {
 	int last = key.length - 1;
 	this.parameterCount = 0;
@@ -275,9 +276,11 @@
 		}
 	}
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new MethodPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	if (this.findReferences)
 		return this.findDeclarations ? REF_AND_DECL_CATEGORIES : REF_CATEGORIES;
@@ -291,9 +294,11 @@
 boolean hasMethodParameters() {
 	return this.methodParameters;
 }
+@Override
 public boolean isPolymorphicSearch() {
 	return this.findReferences;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	MethodPattern pattern = (MethodPattern) decodedPattern;
 
@@ -319,6 +324,7 @@
 			if (this.parameterQualifications[i] != null) return true;
 	return false;
 }
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	char[] key = this.selector; // can be null
 	int matchRule = getMatchRule();
@@ -353,6 +359,7 @@
 
 	return index.query(getIndexCategories(), key, matchRule); // match rule is irrelevant when the key is null
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	if (this.findDeclarations) {
 		output.append(this.findReferences
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.java
new file mode 100644
index 0000000..26df57f
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModularClassFileMatchLocator.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * Copyright (c)  2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
+
+import org.eclipse.core.runtime.CoreException;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
+import org.aspectj.org.eclipse.jdt.core.search.ModuleReferenceMatch;
+import org.aspectj.org.eclipse.jdt.core.search.PackageReferenceMatch;
+import org.aspectj.org.eclipse.jdt.core.search.SearchMatch;
+import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
+import org.aspectj.org.eclipse.jdt.core.search.TypeReferenceMatch;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryModule;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule.IPackageExport;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.PackageBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.core.ModularClassFile;
+import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
+
+public class ModularClassFileMatchLocator implements IIndexConstants {
+
+	private IBinaryModule binaryModule;
+	private ModularClassFile modularClassFile;
+	private IModuleDescription moduleDesc;
+	private char[] moduleName;
+	private ModuleBinding module;
+
+	public void locateMatches(MatchLocator locator, ModularClassFile mClassFile) throws CoreException {
+		SearchPattern pattern = locator.pattern;
+		this.modularClassFile = mClassFile;
+		this.binaryModule = this.modularClassFile.getBinaryModuleInfo();
+		if (this.binaryModule == null) return;
+
+		// cache all the details
+		this.moduleDesc = mClassFile.getModule();
+		this.moduleName = this.binaryModule.name();
+		this.module = locator.lookupEnvironment.getModule(this.moduleName);
+
+		matchModuleDeclaration(pattern, locator);
+		matchModuleReferences(pattern, locator);
+		matchPackageReferences(pattern, locator);
+		matchTypeReferences(pattern, locator);
+	}
+	private void matchModuleDeclaration(SearchPattern pattern, MatchLocator locator) throws CoreException {
+		switch (pattern.kind) {
+			case MODULE_PATTERN:
+				break;
+			case OR_PATTERN:
+				SearchPattern[] patterns = ((OrPattern) pattern).patterns;
+				for (int i = 0, length = patterns.length; i < length; i++) {
+					SearchPattern p = patterns[i];
+					if (p.kind == MODULE_PATTERN)
+						matchModuleReferences(patterns[i], locator);
+				}
+				// $FALL-THROUGH$ - fall through default to return
+			default:
+				return;
+		}
+		ModulePattern modulePattern  = (ModulePattern) pattern;
+		if (!locator.patternLocator.matchesName(modulePattern.name, this.moduleName))
+			return;
+		ModuleBinding moduleBinding = null;
+		int level = PatternLocator.ACCURATE_MATCH;
+		if (locator.patternLocator.mustResolve) {
+			moduleBinding = locator.lookupEnvironment.getModule(this.moduleName);
+			level = locator.patternLocator.resolveLevel(moduleBinding);
+		}
+		if (level == PatternLocator.IMPOSSIBLE_MATCH)
+			return;
+		int accuracy = level == PatternLocator.ACCURATE_MATCH ? SearchMatch.A_ACCURATE : SearchMatch.A_INACCURATE;
+		SearchMatch match = locator.newDeclarationMatch(this.moduleDesc, moduleBinding, accuracy, -1, 0);
+		locator.report(match);
+	}
+	private void matchModuleReferences(SearchPattern pattern, MatchLocator locator) throws CoreException {
+		// Only process Module patterns
+		switch (pattern.kind) {
+			case MODULE_PATTERN:
+				break;
+			case OR_PATTERN:
+				SearchPattern[] patterns = ((OrPattern) pattern).patterns;
+				for (int i = 0, length = patterns.length; i < length; i++) {
+					SearchPattern p = patterns[i];
+					if (p.kind == MODULE_PATTERN)
+						matchModuleReferences(patterns[i], locator);
+				}
+				// $FALL-THROUGH$ - fall through default to return
+			default:
+				return;
+		}
+		ModulePattern modulePattern  = (ModulePattern) pattern;
+		matchModuleReferences(locator, modulePattern, this.binaryModule.exports());
+		matchModuleReferences(locator, modulePattern, this.binaryModule.opens());
+		matchModuleReferences(locator, modulePattern, this.module.getAllRequiredModules());
+	}
+	private void matchModuleReference(MatchLocator locator, ModulePattern modulePattern,
+			char[][] modules, boolean isTarget) throws CoreException {
+		if (modules == null)
+			return;
+		for (char[] module1 : modules) {
+			if (module1 == null || module1.length == 0) continue;
+			if (!locator.patternLocator.matchesName(modulePattern.name, module1)) continue;
+			// no resolve for target modules - report accurate match else resolve
+			ModuleReferenceMatch match = locator.newModuleReferenceMatch(this.moduleDesc, null, isTarget ? SearchMatch.A_ACCURATE : SearchMatch.A_INACCURATE, -1, 0, null);
+			locator.report(match);
+		}
+	}
+	private void matchModuleReferences(MatchLocator locator, ModulePattern modulePattern,
+			IPackageExport[] pvs) throws CoreException {
+		if (pvs == null) return;
+		for (IPackageExport pv : pvs) {
+			matchModuleReference(locator, modulePattern, pv.targets(), true /* isTarget */);
+		}
+	}
+	private void matchModuleReferences(MatchLocator locator, ModulePattern modulePattern,
+			ModuleBinding[] refs) throws CoreException {
+		if (refs == null) return;
+		for (ModuleBinding ref : refs) {
+			char[] name = ref.name();
+			if (name == null) continue;
+			int level =  locator.patternLocator.resolveLevel(ref);
+			if (level == PatternLocator.IMPOSSIBLE_MATCH) continue;
+			int accuracy = level == PatternLocator.ACCURATE_MATCH ? SearchMatch.A_ACCURATE : SearchMatch.A_INACCURATE;
+			ModuleReferenceMatch match = locator.newModuleReferenceMatch(this.moduleDesc, null, accuracy, -1, 0, null);
+			locator.report(match);
+		}
+	}
+	private void matchPackageReferences(SearchPattern pattern, MatchLocator locator) throws CoreException {
+		// Only process PackageReference patterns
+		switch (pattern.kind) {
+			case PKG_REF_PATTERN:
+				break;
+			case OR_PATTERN:
+				SearchPattern[] patterns = ((OrPattern) pattern).patterns;
+				for (int i = 0, length = patterns.length; i < length; i++) {
+					SearchPattern p = patterns[i];
+					if (p.kind == PKG_REF_PATTERN)
+						matchPackageReferences(patterns[i], locator);
+				}
+				// $FALL-THROUGH$ - fall through default to return
+			default:
+				return;
+		}
+		matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getExports());
+		matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getOpens());
+		matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getUses());
+		TypeBinding[] services = this.module.getServices();
+		if (services != null) {
+			matchPackReferences(locator, (PackageReferencePattern) pattern, services);
+			for (TypeBinding service : services) {
+				matchPackReferences(locator, (PackageReferencePattern) pattern, this.module.getImplementations(service));
+			}
+		}
+	}
+	private void matchPackReferences(MatchLocator locator, PackageReferencePattern packReferencePattern,
+			PackageBinding[] packBindings) throws CoreException {
+		if (packBindings == null) return;
+		for (PackageBinding pb : packBindings) {
+			reportPackageMatch(locator, pb);
+		}
+	}
+	private void reportPackageMatch(MatchLocator locator, PackageBinding packageBinding) throws CoreException{
+		if (packageBinding == null) return;
+		int level =  locator.patternLocator.resolveLevel(packageBinding);
+		if (level == PatternLocator.IMPOSSIBLE_MATCH) return;
+		int accuracy = level == PatternLocator.ACCURATE_MATCH ? SearchMatch.A_ACCURATE : SearchMatch.A_INACCURATE;
+		PackageReferenceMatch match = locator.newPackageReferenceMatch(this.moduleDesc, accuracy, -1, 0, null);
+		locator.report(match);
+	}
+	private void matchPackReferences(MatchLocator locator, PackageReferencePattern packReferencePattern,
+			TypeBinding[] types) throws CoreException {
+		if (types == null) return;
+		for (TypeBinding type : types) {
+			reportPackageMatch(locator, type.getPackage());
+		}
+	}
+	private void matchTypeReferences(SearchPattern pattern, MatchLocator locator) throws CoreException {
+		// Only process TypeReference patterns
+		switch (pattern.kind) {
+			case TYPE_REF_PATTERN:
+				break;
+			case OR_PATTERN:
+				SearchPattern[] patterns = ((OrPattern) pattern).patterns;
+				for (int i = 0, length = patterns.length; i < length; i++) {
+					SearchPattern p = patterns[i];
+					if (p.kind == TYPE_REF_PATTERN)
+						matchTypeReferences(patterns[i], locator);
+				}
+				// $FALL-THROUGH$ - fall through default to return
+			default:
+				return;
+		}
+		matchTypeReferences(locator, (TypeReferencePattern) pattern, this.module.getUses());
+		TypeBinding[] services = this.module.getServices();
+		if (services != null) {
+			matchTypeReferences(locator, (TypeReferencePattern) pattern, services);
+			for (TypeBinding service : services) {
+				matchTypeReferences(locator, (TypeReferencePattern) pattern, this.module.getImplementations(service));
+			}
+		}
+	}
+	private void matchTypeReferences(MatchLocator locator, TypeReferencePattern typeReferencePattern,
+			TypeBinding[] types) throws CoreException {
+		if (types == null) 	return;
+		for (TypeBinding type : types) {
+			int level =  locator.patternLocator.resolveLevel(type);
+			if (level == PatternLocator.IMPOSSIBLE_MATCH) continue;
+			int accuracy = level == PatternLocator.ACCURATE_MATCH ? SearchMatch.A_ACCURATE : SearchMatch.A_INACCURATE;
+			TypeReferenceMatch match = locator.newTypeReferenceMatch(this.moduleDesc, null, accuracy, -1, 0, null);
+			locator.report(match);
+		}
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.java
new file mode 100644
index 0000000..555cd43
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModuleLocator.java
@@ -0,0 +1,86 @@
+package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
+
+import org.eclipse.core.runtime.CoreException;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.search.SearchMatch;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ModuleReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ModuleBinding;
+
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *     
+ *******************************************************************************/
+public class ModuleLocator extends PatternLocator {
+
+	private ModulePattern pattern;
+	/* package */ boolean target = false;
+
+	public ModuleLocator(ModulePattern pattern) {
+		super(pattern);
+		this.pattern = pattern;
+	}
+	@Override
+	public int match(ModuleDeclaration node, MatchingNodeSet nodeSet) {
+		if (!this.pattern.findDeclarations) return IMPOSSIBLE_MATCH;
+		if (!matchesName(this.pattern.name, node.moduleName)) return IMPOSSIBLE_MATCH;
+		nodeSet.mustResolve = true;
+		return nodeSet.addMatch(node, POSSIBLE_MATCH);
+	}
+	@Override
+	protected int match(ModuleReference node, MatchingNodeSet nodeSet) {
+		if (!this.pattern.findReferences) return IMPOSSIBLE_MATCH;
+		if (!matchesName(this.pattern.name, node.moduleName)) return IMPOSSIBLE_MATCH;
+		if (this.target) {
+			return nodeSet.addMatch(node, ACCURATE_MATCH);
+		}
+		nodeSet.mustResolve = true;
+		return nodeSet.addMatch(node, POSSIBLE_MATCH);
+	}
+	@Override
+	protected int matchContainer() {
+		return COMPILATION_UNIT_CONTAINER;
+	}
+	@Override
+	public int resolveLevel(ASTNode possibleMatchingNode) {
+		if (this.pattern.findDeclarations && possibleMatchingNode instanceof ModuleDeclaration) {
+			return resolveLevel(((ModuleDeclaration) possibleMatchingNode).binding);
+		}
+		if (this.pattern.findReferences && possibleMatchingNode instanceof ModuleReference) {
+			return resolveLevel(((ModuleReference) possibleMatchingNode).resolve(null));
+		}
+		return IMPOSSIBLE_MATCH;
+	}
+	@Override
+	protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
+		super.matchReportReference(reference, element, elementBinding, accuracy, locator);
+	}
+	@Override
+	protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
+		matchReportReference(reference, element, elementBinding, accuracy, locator);
+	}
+
+	@Override
+	public SearchMatch newDeclarationMatch(ASTNode node, IJavaElement element, Binding elementBinding, int accuracy, int length, MatchLocator locator) {
+		return super.newDeclarationMatch(node, element, elementBinding, accuracy, length, locator);
+	}
+	@Override
+	protected int referenceType() {
+		return IJavaElement.JAVA_MODULE;
+	}
+	@Override
+	public int resolveLevel(Binding binding) {
+		if (binding == null) return INACCURATE_MATCH;
+		if (!(binding instanceof ModuleBinding)) return IMPOSSIBLE_MATCH;
+		return (matchesName(this.pattern.name, binding.readableName())) ? ACCURATE_MATCH : IMPOSSIBLE_MATCH;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.java
new file mode 100644
index 0000000..5972bb7
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/ModulePattern.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
+
+import java.io.IOException;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
+import org.aspectj.org.eclipse.jdt.internal.core.index.EntryResult;
+import org.aspectj.org.eclipse.jdt.internal.core.index.Index;
+
+public class ModulePattern extends JavaSearchPattern {
+
+	boolean findDeclarations = true; /* package visible */
+	boolean findReferences = true; /* package visible */
+	char[] name; /* package visible */
+
+	protected static char[][] REF_CATEGORIES = { MODULE_REF };
+	protected static char[][] REF_AND_DECL_CATEGORIES = { MODULE_REF, MODULE_DECL };
+	protected static char[][] DECL_CATEGORIES = { MODULE_DECL };
+	private static char[] regexPrefix = {'/','r',' '};
+
+	public static char[] createIndexKey(char[] name) {
+		return name; // until a need arises, let the name itself be the index key.
+	}
+	protected ModulePattern(int matchRule) {
+		super(MODULE_PATTERN, matchRule);
+	}
+	public ModulePattern(char[] name, int limitTo, int matchRule) {
+		this(ModulePattern.trapDoorRegexMatchRule(name, matchRule));
+		this.name = trapDoorRegexExtractModuleName(name);
+		switch (limitTo & 0xF) {
+			case IJavaSearchConstants.DECLARATIONS :
+				this.findReferences = false;
+				break;
+			case IJavaSearchConstants.REFERENCES :
+				this.findDeclarations = false;
+				break;
+			case IJavaSearchConstants.ALL_OCCURRENCES :
+				if ((getMatchRule() & SearchPattern.R_REGEXP_MATCH) != 0)
+					this.findReferences = false; //regex implemented only for module declarations.
+				break;
+		}
+		this.mustResolve = mustResolve();
+	}
+	/*
+	 * Trap door method for implicitly triggering a regex search.
+	 * if the module name starts with regex: (case insensitive),
+	 * the rest of the characters are taken as a regular expression
+	 * for the module name.
+	 */
+	private static char[] trapDoorRegexExtractModuleName(char[] name2) {
+		int index = CharOperation.indexOf(regexPrefix, name2, false);
+		return index >= 0 ? CharOperation.subarray(name2, index + regexPrefix.length, name2.length) : name2;
+	}
+	/*
+	 * Sets the match rule to regular expression search as well.
+	 */
+	private static int trapDoorRegexMatchRule(char[] name2, int matchRule) {
+		return CharOperation.indexOf(regexPrefix, name2, false) == 0 ?
+				SearchPattern.R_REGEXP_MATCH : matchRule;
+	}
+	@Override
+	public void decodeIndexKey(char[] key) {
+		this.name = key;
+	}
+	@Override
+	public SearchPattern getBlankPattern() {
+		return new ModulePattern(R_EXACT_MATCH);
+	}
+	@Override
+	public char[][] getIndexCategories() {
+		if (this.findReferences)
+			return this.findDeclarations ? REF_AND_DECL_CATEGORIES : REF_CATEGORIES;
+		if (this.findDeclarations)
+			return DECL_CATEGORIES;
+		return CharOperation.NO_CHAR_CHAR;
+	}
+	@Override
+	public boolean matchesDecodedKey(SearchPattern decodedPattern) {
+		return matchesName(this.name, ((ModulePattern) decodedPattern).name);
+	}
+	@Override
+	public EntryResult[] queryIn(Index index) throws IOException {
+		char[] key = this.name; // can be null
+		int matchRule = getMatchRule();
+
+		switch(getMatchMode()) {
+			case R_EXACT_MATCH :
+				if (this.name != null) {
+					key = createIndexKey(this.name);
+				} else { // do a prefix query with the selector
+					matchRule &= ~R_EXACT_MATCH;
+					matchRule |= R_PREFIX_MATCH;
+				}
+				break;
+			case R_PREFIX_MATCH :
+				// do a prefix query with the selector
+				break;
+			case R_PATTERN_MATCH :
+				if (this.name != null) {
+					key = createIndexKey(this.name);
+				}
+				// else do a pattern query with just the selector
+				break;
+			case R_REGEXP_MATCH :
+				// nothing to do here for the regex match
+				break;
+			case R_CAMELCASE_MATCH:
+			case R_CAMELCASE_SAME_PART_COUNT_MATCH:
+				// do a prefix query with the selector
+				break;
+		}
+
+		return index.query(getIndexCategories(), key, matchRule); // match rule is irrelevant when the key is null
+	}
+
+	protected boolean mustResolve() {
+		return true;
+	}
+	@Override
+	protected StringBuffer print(StringBuffer output) {
+		if (this.findDeclarations) {
+			output.append(this.findReferences
+				? "ModuleCombinedPattern: " //$NON-NLS-1$
+				: "ModuleDeclarationPattern: "); //$NON-NLS-1$
+		} else {
+			output.append("ModuleReferencePattern: "); //$NON-NLS-1$
+		}
+		output.append("module "); //$NON-NLS-1$
+		output.append(this.name);
+		return super.print(output);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.java
index cebf72a..87fe7d9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/MultiTypeDeclarationPattern.java
@@ -64,12 +64,15 @@
 MultiTypeDeclarationPattern(int matchRule) {
 	super(TYPE_DECL_PATTERN, matchRule);
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new QualifiedTypeDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	return CATEGORIES;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	QualifiedTypeDeclarationPattern pattern = (QualifiedTypeDeclarationPattern) decodedPattern;
 
@@ -104,6 +107,7 @@
 			break;
 	return count < max;
 }
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	if (this.simpleNames == null) {
 		// if no simple names then return all possible ones from index
@@ -160,6 +164,7 @@
 	}
 	return allEntries;
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	switch (this.typeSuffix){
 		case CLASS_SUFFIX :
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.java
index f955176..8960167 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrLocator.java
@@ -50,10 +50,12 @@
 	for (int i = 0; i < length; i++)
 		this.patternLocators[i] = PatternLocator.patternLocator(patterns[i]);
 }
+@Override
 public void initializePolymorphicSearch(MatchLocator locator) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++)
 		this.patternLocators[i].initializePolymorphicSearch(locator);
 }
+@Override
 public int match(Annotation node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -65,6 +67,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -76,6 +79,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ConstructorDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -87,6 +91,7 @@
 	}
 	return level;
 }
+@Override
 public int match(Expression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -98,6 +103,7 @@
 	}
 	return level;
 }
+@Override
 public int match(FieldDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -109,6 +115,7 @@
 	}
 	return level;
 }
+@Override
 public int match(LambdaExpression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -120,6 +127,7 @@
 	}
 	return level;
 }
+@Override
 public int match(LocalDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -131,6 +139,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MethodDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -142,6 +151,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -153,6 +163,7 @@
 	}
 	return level;
 }
+@Override
 public int match(MessageSend node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -164,6 +175,7 @@
 	}
 	return level;
 }
+@Override
 public int match(Reference node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -175,6 +187,7 @@
 	}
 	return level;
 }
+@Override
 public int match(ReferenceExpression node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -186,6 +199,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeDeclaration node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -197,6 +211,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeParameter node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -208,6 +223,7 @@
 	}
 	return level;
 }
+@Override
 public int match(TypeReference node, MatchingNodeSet nodeSet) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -219,12 +235,14 @@
 	}
 	return level;
 }
+@Override
 protected int matchContainer() {
 	int result = 0;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++)
 		result |= this.patternLocators[i].matchContainer();
 	return result;
 }
+@Override
 protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
 
 	// for static import, binding can be a field binding or a member type binding
@@ -261,6 +279,7 @@
 		closestPattern.matchLevelAndReportImportRef(importRef, binding, locator);
 	}
 }
+@Override
 protected void matchReportImportRef(ImportReference importRef, Binding binding, IJavaElement element, int accuracy, MatchLocator locator) throws CoreException {
 	PatternLocator closestPattern = null;
 	int level = IMPOSSIBLE_MATCH;
@@ -275,6 +294,7 @@
 	if (closestPattern != null)
 		closestPattern.matchReportImportRef(importRef, binding, element, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	PatternLocator closestPattern = null;
 	int level = IMPOSSIBLE_MATCH;
@@ -290,9 +310,11 @@
 	if (closestPattern != null)
 		closestPattern.matchReportReference(reference, element, localElement, otherElements, elementBinding, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
+@Override
 public SearchMatch newDeclarationMatch(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, int length, MatchLocator locator) {
 	PatternLocator closestPattern = null;
 	int level = IMPOSSIBLE_MATCH;
@@ -311,6 +333,7 @@
 	// super implementation...
     return locator.newDeclarationMatch(element, elementBinding, accuracy, reference.sourceStart, length);
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -322,6 +345,7 @@
 	}
 	return level;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	int level = IMPOSSIBLE_MATCH;
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
@@ -333,14 +357,14 @@
 	}
 	return level;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#setFlavors(int)
- */
+
+@Override
 void setFlavors(int flavors) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
 		this.patternLocators[i].setFlavors(flavors);
 	}
 }
+@Override
 public void recordResolution(QualifiedTypeReference typeReference, TypeBinding resolution) {
 	for (int i = 0, length = this.patternLocators.length; i < length; i++) {
 		this.patternLocators[i].recordResolution(typeReference, resolution);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.java
index c02bf7c..2444d13 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/OrPattern.java
@@ -53,6 +53,7 @@
 			this.matchCompatibility |= ((JavaSearchPattern) this.patterns[i]).matchCompatibility;
 		}
 	}
+	@Override
 	public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) throws IOException {
 		// per construction, OR pattern can only be used with a PathCollector (which already gather results using a set)
 		try {
@@ -64,6 +65,7 @@
 		}
 	}
 
+	@Override
 	public SearchPattern getBlankPattern() {
 		return null;
 	}
@@ -72,6 +74,7 @@
 		return (this.matchCompatibility & R_ERASURE_MATCH) != 0;
 	}
 
+	@Override
 	public boolean isPolymorphicSearch() {
 		for (int i = 0, length = this.patterns.length; i < length; i++)
 			if (this.patterns[i].isPolymorphicSearch()) return true;
@@ -103,6 +106,7 @@
 		return false;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		buffer.append(this.patterns[0].toString());
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.java
index eed2ca9..5fd4641 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationLocator.java
@@ -19,9 +19,11 @@
 
 	this.pattern = pattern;
 }
+@Override
 protected int matchContainer() {
 	return 0;
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.java
index 581b245..b70942c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageDeclarationPattern.java
@@ -20,10 +20,12 @@
 	super(PKG_DECL_PATTERN, matchRule);
 	this.pkgName = pkgName;
 }
+@Override
 public EntryResult[] queryIn(Index index) {
 	// package declarations are not indexed
 	return null;
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	output.append("PackageDeclarationPattern: <"); //$NON-NLS-1$
 	if (this.pkgName != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.java
index e0cc4f0..0f5eea5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferenceLocator.java
@@ -65,9 +65,11 @@
 
 	this.pattern = pattern;
 }
+@Override
 public int match(Annotation node, MatchingNodeSet nodeSet) {
 	return match(node.type, nodeSet);
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) { // interested in ImportReference
 	if (!(node instanceof ImportReference)) return IMPOSSIBLE_MATCH;
 
@@ -78,12 +80,14 @@
 //public int match(FieldDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(MethodDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(MessageSend node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(Reference node, MatchingNodeSet nodeSet) { // interested in QualifiedNameReference
 	if (!(node instanceof QualifiedNameReference)) return IMPOSSIBLE_MATCH;
 
 	return nodeSet.addMatch(node, matchLevelForTokens(((QualifiedNameReference) node).tokens));
 }
 //public int match(TypeDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(TypeReference node, MatchingNodeSet nodeSet) { // interested in QualifiedTypeReference only
 	if (node instanceof JavadocSingleTypeReference) {
 		char[][] tokens = new char[][] { ((JavadocSingleTypeReference) node).token };
@@ -93,6 +97,7 @@
 	return nodeSet.addMatch(node, matchLevelForTokens(((QualifiedTypeReference) node).tokens));
 }
 
+@Override
 protected int matchLevel(ImportReference importRef) {
 	return matchLevelForTokens(importRef.tokens);
 }
@@ -139,9 +144,8 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchLevelAndReportImportRef(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
- */
+
+@Override
 protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
 	Binding refBinding = binding;
 	if (importRef.isStatic()) {
@@ -162,6 +166,7 @@
 	}
 	super.matchLevelAndReportImportRef(importRef, refBinding, locator);
 }
+@Override
 protected void matchReportImportRef(ImportReference importRef, Binding binding, IJavaElement element, int accuracy, MatchLocator locator) throws CoreException {
 	if (binding == null) {
 		this.matchReportReference(importRef, element, null/*no binding*/, accuracy, locator);
@@ -179,15 +184,17 @@
 			if (binding instanceof PackageBinding)
 				last = ((PackageBinding) binding).compoundName.length;
 			int start = (int) (positions[0] >>> 32);
-			int end = (int) positions[last - 1];
+			int end = (int) positions[last > 0 ? last - 1 : 0];
 			this.match = locator.newPackageReferenceMatch(element, accuracy, start, end-start+1, importRef);
 			locator.report(this.match);
 		}
 	}
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	long[] positions = null;
 	int last = -1;
@@ -267,9 +274,11 @@
 	this.match = packageReferenceMatch;
 	locator.report(this.match);
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.PACKAGE_FRAGMENT;
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	if (node instanceof JavadocQualifiedTypeReference) {
 		JavadocQualifiedTypeReference qualifRef = (JavadocQualifiedTypeReference) node;
@@ -290,6 +299,7 @@
 //	if (node instanceof ImportReference) - Not called when resolve is true, see MatchingNodeSet.reportMatching(unit)
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 
@@ -358,6 +368,7 @@
 	}
 	return resolveLevel(typeBinding);
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
index 46302a4..fa69519 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PackageReferencePattern.java
@@ -38,34 +38,42 @@
 PackageReferencePattern(int matchRule) {
 	super(PKG_REF_PATTERN, matchRule);
 }
+@Override
 public void decodeIndexKey(char[] key) {
 	// Package reference keys are encoded as 'name' (where 'name' is the last segment of the package name)
 	this.pkgName = key;
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new PackageReferencePattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[] getIndexKey() {
 	// Package reference keys are encoded as 'name' (where 'name' is the last segment of the package name)
 	if (this.currentSegment >= 0)
 		return this.segments[this.currentSegment];
 	return null;
 }
+@Override
 public char[][] getIndexCategories() {
 	return CATEGORIES;
 }
+@Override
 protected boolean hasNextQuery() {
 	// if package has at least 4 segments, don't look at the first 2 since they are mostly
 	// redundant (e.g. in 'org.aspectj.org.eclipse.jdt.core.*' 'org.eclipse' is used all the time)
 	return --this.currentSegment >= (this.segments.length >= 4 ? 2 : 0);
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	return true; // index key is not encoded so query results all match
 }
+@Override
 protected void resetQuery() {
 	/* walk the segments from end to start as it will find less potential references using 'lang' than 'java' */
 	this.currentSegment = this.segments.length - 1;
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	output.append("PackageReferencePattern: <"); //$NON-NLS-1$
 	if (this.pkgName != null)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
index 36fcae0..e108bc4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -11,6 +11,8 @@
 package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
 
 
+import java.util.regex.Pattern;
+
 import org.eclipse.core.runtime.*;
 import org.aspectj.org.eclipse.jdt.core.*;
 import org.aspectj.org.eclipse.jdt.core.compiler.*;
@@ -93,6 +95,8 @@
 			return new LocalVariableLocator((LocalVariablePattern) pattern);
 		case IIndexConstants.TYPE_PARAM_PATTERN:
 			return new TypeParameterLocator((TypeParameterPattern) pattern);
+		case IIndexConstants.MODULE_PATTERN:
+			return new ModuleLocator((ModulePattern) pattern);
 	}
 	return null;
 }
@@ -222,6 +226,12 @@
 	// each subtype should override if needed
 	return IMPOSSIBLE_MATCH;
 }
+protected int match(ModuleDeclaration node, MatchingNodeSet nodeSet) {
+	return IMPOSSIBLE_MATCH;
+}
+protected int match(ModuleReference node, MatchingNodeSet nodeSet) {
+	return IMPOSSIBLE_MATCH;
+}
 public int match(Reference node, MatchingNodeSet nodeSet) {
 	// each subtype should override if needed
 	return IMPOSSIBLE_MATCH;
@@ -319,7 +329,9 @@
 			break;
 
 		case SearchPattern.R_REGEXP_MATCH :
-			// TODO (frederic) implement regular expression match
+			if (Pattern.matches(new String(pattern), new String(name))) {
+				return POSSIBLE_MATCH;
+			}
 			break;
 
 		case SearchPattern.R_CAMELCASE_MATCH:
@@ -418,6 +430,9 @@
 		case IJavaElement.TYPE_PARAMETER:
 			this.match = locator.newTypeParameterReferenceMatch(element, accuracy, offset, reference.sourceEnd-offset+1, reference);
 			break;
+		case IJavaElement.JAVA_MODULE:
+			this.match = locator.newModuleReferenceMatch(element, elementBinding, accuracy, offset, reference.sourceEnd-offset+1, reference);
+			break;
 	}
 	if (this.match != null) {
 		locator.report(this.match);
@@ -987,9 +1002,11 @@
 	}
 	return level;
 }
+@Override
 public String toString(){
 	return "SearchPattern"; //$NON-NLS-1$
 }
+@Override
 public void recordResolution(QualifiedTypeReference typeReference, TypeBinding resolution) {
 	// noop by default
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.java
index b5abc16..8d01038 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatch.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.*;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
 
@@ -34,6 +35,7 @@
 private String sourceFileName;
 private char[] source;
 private PossibleMatch similarMatch;
+public String autoModuleName;
 
 public PossibleMatch(MatchLocator locator, IResource resource, Openable openable, SearchDocument document, boolean mustResolve) {
 	this.resource = resource;
@@ -52,6 +54,7 @@
 	}
 	this.nodeSet = null;
 }
+@Override
 public boolean equals(Object obj) {
 	if (this.compoundName == null) return super.equals(obj);
 	if (!(obj instanceof PossibleMatch)) return false;
@@ -60,18 +63,32 @@
 	// Even .class files for secondary types and their nested types
 	return CharOperation.equals(this.compoundName, ((PossibleMatch) obj).compoundName);
 }
+@Override
 public char[] getContents() {
 	char[] contents = (this.source == NO_SOURCE_FILE) ? null : this.source;
 	if (this.source == null) {
-		if (this.openable instanceof ClassFile) {
+		if (this.openable instanceof AbstractClassFile) {
 			String fileName = getSourceFileName();
 			if (fileName == NO_SOURCE_FILE_NAME) return CharOperation.NO_CHAR;
 
 			SourceMapper sourceMapper = this.openable.getSourceMapper();
 			if (sourceMapper != null) {
-				IType type = ((ClassFile) this.openable).getType();
-				contents = sourceMapper.findSource(type, fileName);
+				if (this.openable instanceof ClassFile) {
+					IType type = ((ClassFile) this.openable).getType();
+					contents = sourceMapper.findSource(type, fileName);
+				} else if (this.openable instanceof ModularClassFile) {
+					try {
+						IModuleDescription module = ((ModularClassFile) this.openable).getModule();
+						contents = module != null ? sourceMapper.findSource(module) : CharOperation.NO_CHAR; // FIXME(SHMOD)
+					} catch (JavaModelException e) {
+						return CharOperation.NO_CHAR;
+					}
+				}
 			}
+		} else if (this.autoModuleName != null) { // fab a module
+			contents = new String("module " + this.autoModuleName + "{}").toCharArray();  //$NON-NLS-1$//$NON-NLS-2$
+			this.sourceFileName = "module-info.java"; //$NON-NLS-1$
+			this.compoundName = new char[][] { "module-info".toCharArray()}; //$NON-NLS-1$
 		} else {
 			contents = this.document.getCharContents();
 		}
@@ -85,13 +102,16 @@
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  * @see PackageReferenceLocator#isDeclaringPackageFragment(IPackageFragment, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding)
  */
+@Override
 public char[] getFileName() {
 	return this.openable.getElementName().toCharArray();
 }
+@Override
 public char[] getMainTypeName() {
 	// The file is no longer opened to get its name => remove fix for bug 32182
 	return this.compoundName[this.compoundName.length-1];
 }
+@Override
 public char[][] getPackageName() {
 	int length = this.compoundName.length;
 	if (length <= 1) return CharOperation.NO_CHAR_CHAR;
@@ -119,6 +139,11 @@
 		String simpleName = index==-1 ? fileName : fileName.substring(0, index);
 		PackageFragment pkg = (PackageFragment) this.openable.getParent();
 		return Util.concatWith(pkg.names, simpleName, '.').toCharArray();
+	} else if (this.openable instanceof ModularClassFile) {
+		// FIXME(SHMOD): not useful https://bugs.eclipse.org/501162#c30
+		String simpleName = TypeConstants.MODULE_INFO_NAME_STRING;
+		PackageFragment pkg = (PackageFragment) this.openable.getParent();
+		return Util.concatWith(pkg.names, simpleName, '.').toCharArray();
 	}
 	return null;
 }
@@ -134,18 +159,24 @@
 
 	this.sourceFileName = NO_SOURCE_FILE_NAME;
 	if (this.openable.getSourceMapper() != null) {
-		BinaryType type = (BinaryType) ((ClassFile) this.openable).getType();
-		IBinaryType reader = MatchLocator.classFileReader(type);
-		if (reader != null) {
-			String fileName = type.sourceFileName(reader);
-			this.sourceFileName = fileName == null ? NO_SOURCE_FILE_NAME : fileName;
+		if (this.openable instanceof ClassFile) {
+			BinaryType type = (BinaryType) ((ClassFile) this.openable).getType();
+			IBinaryType reader = MatchLocator.classFileReader(type);
+			if (reader != null) {
+				String fileName = type.sourceFileName(reader);
+				this.sourceFileName = fileName == null ? NO_SOURCE_FILE_NAME : fileName;
+			}
+		} else if (this.openable instanceof ModularClassFile) {
+			// FIXME(SHMOD): premature https://bugs.eclipse.org/501162#c31
+			this.sourceFileName = TypeConstants.MODULE_INFO_FILE_NAME_STRING;
 		}
 	}
 	return this.sourceFileName;
 }
 boolean hasSimilarMatch() {
-	return this.similarMatch != null && this.source == NO_SOURCE_FILE;
+	return this.similarMatch != null && (this.source == NO_SOURCE_FILE || isModuleInfo(this));
 }
+@Override
 public int hashCode() {
 	if (this.compoundName == null) return super.hashCode();
 
@@ -154,16 +185,33 @@
 		hashCode += CharOperation.hashCode(this.compoundName[i]);
 	return hashCode;
 }
+@Override
 public boolean ignoreOptionalProblems() {
 	return false;
 }
+private boolean isModuleInfo(PossibleMatch possibleMatch) {
+	return CharOperation.equals(getMainTypeName(), TypeConstants.MODULE_INFO_NAME);
+}
 void setSimilarMatch(PossibleMatch possibleMatch) {
 	// source does not matter on similar match as it is read on
 	// the first stored possible match
-	possibleMatch.source = NO_SOURCE_FILE;
+	possibleMatch.source = isModuleInfo(possibleMatch) ? null : NO_SOURCE_FILE;
 	this.similarMatch = possibleMatch;
 }
+@Override
 public String toString() {
 	return this.openable == null ? "Fake PossibleMatch" : this.openable.toString(); //$NON-NLS-1$
 }
+@Override
+public char[] getModuleName() {
+	if (this.openable instanceof CompilationUnit) {
+		return ((CompilationUnit) this.openable).getModuleName();
+	} else if (this.openable instanceof ClassFile) {
+		IModuleDescription moduleDescription = this.openable.getPackageFragmentRoot().getModuleDescription();
+		if (moduleDescription != null) {
+			return moduleDescription.getElementName().toCharArray();
+		}
+	}
+	return null;
+}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.java
index 19751b7..575ad95 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/PossibleMatchSet.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
 
+import java.util.HashSet;
+
 import org.eclipse.core.runtime.IPath;
 import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.ObjectVector;
@@ -45,11 +47,14 @@
 public PossibleMatch[] getPossibleMatches(IPackageFragmentRoot[] roots) {
 	PossibleMatch[] result = new PossibleMatch[this.elementCount];
 	int index = 0;
+	HashSet<IPath> processedHash = new HashSet<>();
 	for (int i = 0, length = roots.length; i < length; i++) {
-		ObjectVector possibleMatches = (ObjectVector) this.rootsToPossibleMatches.get(roots[i].getPath());
-		if (possibleMatches != null) {
+		IPath path = roots[i].getPath();
+		ObjectVector possibleMatches = (ObjectVector) this.rootsToPossibleMatches.get(path);
+		if (possibleMatches != null && !processedHash.contains(path)) {
 			possibleMatches.copyInto(result, index);
 			index += possibleMatches.size();
+			processedHash.add(path);
 		}
 	}
 	if (index < this.elementCount)
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.java
index 30f404a..26162ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/QualifiedTypeDeclarationPattern.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -19,14 +19,17 @@
 PackageDeclarationPattern packagePattern;
 public int packageIndex = -1;
 
-public QualifiedTypeDeclarationPattern(char[] qualification, char[] simpleName, char typeSuffix, int matchRule) {
+public QualifiedTypeDeclarationPattern(char[] moduleNames, char[] qualification, char[] simpleName, char typeSuffix, int matchRule) {
 	this(matchRule);
-
+	addModuleNames(moduleNames);
 	this.qualification = this.isCaseSensitive ? qualification : CharOperation.toLowerCase(qualification);
 	this.simpleName = (this.isCaseSensitive || this.isCamelCase) ? simpleName : CharOperation.toLowerCase(simpleName);
 	this.typeSuffix = typeSuffix;
 
-	this.mustResolve = this.qualification != null || typeSuffix != TYPE_SUFFIX;
+	this.mustResolve = this.qualification != null || typeSuffix != TYPE_SUFFIX || moduleNames != null;
+}
+public QualifiedTypeDeclarationPattern(char[] qualification, char[] simpleName, char typeSuffix, int matchRule) {
+	this(null, qualification, simpleName, typeSuffix, matchRule);
 }
 public QualifiedTypeDeclarationPattern(char[] qualification, int qualificationMatchRule, char[] simpleName, char typeSuffix, int matchRule) {
 	this(qualification, simpleName, typeSuffix, matchRule);
@@ -35,6 +38,7 @@
 QualifiedTypeDeclarationPattern(int matchRule) {
 	super(matchRule);
 }
+@Override
 public void decodeIndexKey(char[] key) {
 	int slash = CharOperation.indexOf(SEPARATOR, key, 0);
 	this.simpleName = CharOperation.subarray(key, 0, slash);
@@ -76,9 +80,11 @@
 		}
 	}
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new QualifiedTypeDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	QualifiedTypeDeclarationPattern pattern = (QualifiedTypeDeclarationPattern) decodedPattern;
 
@@ -93,6 +99,7 @@
 	return matchesName(this.simpleName, pattern.simpleName) &&
 		(this.qualification == null || this.packagePattern == null || this.packagePattern.matchesName(this.qualification, pattern.qualification));
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	switch (this.typeSuffix){
 		case CLASS_SUFFIX :
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.java
index d60940d..12f40e7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SecondaryTypeDeclarationPattern.java
@@ -29,17 +29,17 @@
 	super(matchRule);
 }
 
+@Override
 public SearchPattern getBlankPattern() {
 	return new SecondaryTypeDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	output.append("Secondary"); //$NON-NLS-1$
 	return super.print(output);
 }
 
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.TypeDeclarationPattern#queryIn(org.aspectj.org.eclipse.jdt.internal.core.index.Index)
- */
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	return index.query(CATEGORIES, SECONDARY_PATTERN_KEY, R_PATTERN_MATCH | R_CASE_SENSITIVE);
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.java
index debaeea..e2c13eb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeNamesCollector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -41,33 +41,40 @@
 	 * collecting their super type names.
 	 */
 	public class TypeDeclarationVisitor extends ASTVisitor {
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, BlockScope scope) {
 			ReferenceBinding binding = typeDeclaration.binding;
 			if (SuperTypeNamesCollector.this.matches(binding))
 				collectSuperTypeNames(binding, binding.compoundName);
 			return true;
 		}
+		@Override
 		public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) {
 			ReferenceBinding binding = typeDeclaration.binding;
 			if (SuperTypeNamesCollector.this.matches(binding))
 				collectSuperTypeNames(binding, binding.compoundName);
 			return true;
 		}
+		@Override
 		public boolean visit(TypeDeclaration memberTypeDeclaration, ClassScope scope) {
 			ReferenceBinding binding = memberTypeDeclaration.binding;
 			if (SuperTypeNamesCollector.this.matches(binding))
 				collectSuperTypeNames(binding, binding.compoundName);
 			return true;
 		}
+		@Override
 		public boolean visit(FieldDeclaration fieldDeclaration, MethodScope scope) {
 			return false; // don't visit field declarations
 		}
+		@Override
 		public boolean visit(Initializer initializer, MethodScope scope) {
 			return false; // don't visit initializers
 		}
+		@Override
 		public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) {
 			return false; // don't visit constructor declarations
 		}
+		@Override
 		public boolean visit(MethodDeclaration methodDeclaration, ClassScope scope) {
 			return false; // don't visit method declarations
 		}
@@ -206,8 +213,8 @@
 				CompilationUnitDeclaration parsedUnit = buildBindings(unit, true /*only top level and member types are visible to the focus type*/);
 				if (parsedUnit != null)
 					parsedUnit.traverse(new TypeDeclarationVisitor(), parsedUnit.scope);
-			} else if (openable instanceof IClassFile) {
-				IClassFile classFile = (IClassFile) openable;
+			} else if (openable instanceof IOrdinaryClassFile) {
+				IOrdinaryClassFile classFile = (IOrdinaryClassFile) openable;
 				BinaryTypeBinding binding = this.locator.cacheBinaryType(classFile.getType(), null);
 				if (matches(binding))
 					collectSuperTypeNames(binding, binding.compoundName);
@@ -258,6 +265,7 @@
 		IIndexConstants.TYPE_SUFFIX,
 		this.pattern.getMatchRule());
 	IndexQueryRequestor searchRequestor = new IndexQueryRequestor(){
+		@Override
 		public boolean acceptIndexMatch(String documentPath, SearchPattern indexRecord, SearchParticipant participant, AccessRuleSet access) {
 			TypeDeclarationPattern record = (TypeDeclarationPattern)indexRecord;
 			if (record.enclosingTypeNames != IIndexConstants.ONE_ZERO_CHAR) {  // filter out local and anonymous classes
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.java
index d7c794e..e68bf07 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferenceLocator.java
@@ -30,6 +30,7 @@
 //public int match(Expression node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(FieldDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 
+@Override
 public int match(LambdaExpression node, MatchingNodeSet nodeSet) {
 	if (this.pattern.superRefKind != SuperTypeReferencePattern.ONLY_SUPER_INTERFACES)
 		return IMPOSSIBLE_MATCH;
@@ -40,6 +41,7 @@
 //public int match(MessageSend node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(Reference node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(TypeDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(TypeReference node, MatchingNodeSet nodeSet) {
 	if (this.flavors != SUPERTYPE_REF_FLAVOR) return IMPOSSIBLE_MATCH;
 	if (this.pattern.superSimpleName == null)
@@ -58,12 +60,12 @@
 	return IMPOSSIBLE_MATCH;
 }
 
+@Override
 protected int matchContainer() {
 	return CLASS_CONTAINER;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchReportReference(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode, org.aspectj.org.eclipse.jdt.core.IJavaElement, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding, int, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
- */
+
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	if (elementBinding instanceof ReferenceBinding) {
 		ReferenceBinding referenceBinding = (ReferenceBinding) elementBinding;
@@ -78,9 +80,11 @@
 	}
 	super.matchReportReference(reference, element, elementBinding, accuracy, locator);
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.TYPE;
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	TypeBinding typeBinding = null;
 	if (node instanceof LambdaExpression) {
@@ -100,6 +104,7 @@
 	if (typeBinding == null || !typeBinding.isValidBinding()) return INACCURATE_MATCH;
 	return resolveLevelForType(this.pattern.superSimpleName, this.pattern.superQualification, typeBinding);
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof ReferenceBinding)) return IMPOSSIBLE_MATCH;
@@ -123,6 +128,7 @@
 	}
 	return level;
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
index 9e24e59..be2474f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/SuperTypeReferencePattern.java
@@ -172,6 +172,7 @@
 /*
  * superSimpleName / superQualification / simpleName / enclosingTypeName / typeParameters / pkgName / superClassOrInterface classOrInterface modifiers
  */
+@Override
 public void decodeIndexKey(char[] key) {
 	int slash = CharOperation.indexOf(SEPARATOR, key, 0);
 	this.superSimpleName = CharOperation.subarray(key, 0, slash);
@@ -222,12 +223,15 @@
 	this.classOrInterface = key[slash + 2];
 	this.modifiers = key[slash + 3]; // implicit cast to int type
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new SuperTypeReferencePattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	return CATEGORIES;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	SuperTypeReferencePattern pattern = (SuperTypeReferencePattern) decodedPattern;
 	if (this.superRefKind == ONLY_SUPER_CLASSES && pattern.enclosingTypeName != ONE_ZERO/*not an anonymous*/)
@@ -241,6 +245,7 @@
 
 	return matchesName(this.superSimpleName, pattern.superSimpleName);
 }
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	char[] key = this.superSimpleName; // can be null
 	int matchRule = getMatchRule();
@@ -271,6 +276,7 @@
 
 	return index.query(getIndexCategories(), key, matchRule); // match rule is irrelevant when the key is null
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	switch (this.superRefKind) {
 		case ALL_SUPER_TYPES:
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.java
index 8478a5c..1cef524 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationLocator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,10 +10,29 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchConstants;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.aspectj.org.eclipse.jdt.core.search.SearchDocument;
+import org.aspectj.org.eclipse.jdt.core.search.SearchEngine;
+import org.aspectj.org.eclipse.jdt.core.search.SearchMatch;
+import org.aspectj.org.eclipse.jdt.core.search.SearchParticipant;
+import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
+import org.aspectj.org.eclipse.jdt.core.search.SearchRequestor;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.*;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaModelManager;
+import org.aspectj.org.eclipse.jdt.internal.core.search.JavaSearchParticipant;
 
 public class TypeDeclarationLocator extends PatternLocator {
 
@@ -31,6 +50,7 @@
 //public int match(MethodDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(MessageSend node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(Reference node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(TypeDeclaration node, MatchingNodeSet nodeSet) {
 	if (this.pattern.simpleName == null || matchesName(this.pattern.simpleName, node.name))
 		return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
@@ -39,11 +59,13 @@
 }
 //public int match(TypeReference node, MatchingNodeSet nodeSet) - SKIP IT
 
+@Override
 public int resolveLevel(ASTNode node) {
 	if (!(node instanceof TypeDeclaration)) return IMPOSSIBLE_MATCH;
 
 	return resolveLevel(((TypeDeclaration) node).binding);
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof TypeBinding)) return IMPOSSIBLE_MATCH;
@@ -75,6 +97,9 @@
 		case TYPE_SUFFIX : // nothing
 	}
 
+	if (matchModule(this.pattern, type) == IMPOSSIBLE_MATCH) {
+		return IMPOSSIBLE_MATCH;
+	}
 	// fully qualified name
 	if (this.pattern instanceof QualifiedTypeDeclarationPattern) {
 		QualifiedTypeDeclarationPattern qualifiedPattern = (QualifiedTypeDeclarationPattern) this.pattern;
@@ -103,6 +128,102 @@
 		return resolveLevelForType(simpleNamePattern, fullQualificationPattern, type);
 	return IMPOSSIBLE_MATCH;
 }
+private HashSet<String> getModuleGraph(String mName, TypeDeclarationPattern typePattern, HashSet<String> mGraph) {
+	mGraph.add(mName);
+	SearchPattern modulePattern = SearchPattern.createPattern(mName,
+			IJavaSearchConstants.MODULE, IJavaSearchConstants.DECLARATIONS, typePattern.getMatchRule());
+	if (modulePattern == null) return mGraph;
+	final HashSet<String> tmpGraph = new HashSet<>();
+	final SearchParticipant participant = new JavaSearchParticipant() {
+		@Override
+		public void locateMatches(SearchDocument[] indexMatches, SearchPattern mPattern,
+				IJavaSearchScope scope, SearchRequestor requestor, IProgressMonitor monitor) throws CoreException {
+			MatchLocator matchLocator =	new MatchLocator(mPattern,	requestor,	scope,	monitor);
+			/* eliminating false matches and locating them */
+			if (monitor != null && monitor.isCanceled()) throw new OperationCanceledException();
+			matchLocator.locateMatches(indexMatches);
+			addRequiredModules(matchLocator);
+		}
+		private void addRequiredModules(MatchLocator matchLocator) {
+			if (matchLocator.matchBinding == null) return;
+			for (Binding b :matchLocator.matchBinding.values()) {
+				if (b instanceof ModuleBinding &&  ((ModuleBinding) b).moduleName != null) {
+					ModuleBinding m = (ModuleBinding) b;
+					tmpGraph.add(new String(m.moduleName));
+					for (ModuleBinding r : m.getAllRequiredModules()) {
+						char[] name = r.moduleName;
+						if (name == null || CharOperation.equals(name, CharOperation.NO_CHAR)) continue;
+						tmpGraph.add(new String(name));
+					}
+				}
+			}
+		}
+	};
+	final SearchRequestor requestor = new SearchRequestor() {	
+		@Override
+		public void acceptSearchMatch(SearchMatch searchMatch) throws CoreException {
+			System.out.println(searchMatch.toString());
+			// do nothing
+		}
+	};
+	try {
+		new SearchEngine().search(modulePattern, new SearchParticipant[] {participant},
+				JavaModelManager.getJavaModelManager().getWorkspaceScope(),
+				requestor,	null);
+	} catch (CoreException e) {
+		// do nothing
+	}
+	mGraph.addAll(tmpGraph);
+	return mGraph;
+}
+private char[][] getModuleList(TypeDeclarationPattern typePattern) {
+	if (!typePattern.moduleGraph)
+		return typePattern.moduleNames;
+	if (typePattern.moduleGraphElements != null) // already computed
+		return typePattern.moduleGraphElements;
+	typePattern.moduleGraphElements = CharOperation.NO_CHAR_CHAR; // signal processing done.
+	// compute (lazy)
+	List<String> moduleList = Arrays.asList(CharOperation.toStrings(typePattern.moduleNames));
+	int sz = moduleList.size();
+	HashSet<String> mGraph = new HashSet<>();
+	for (int i = 0; i < sz; ++i) {
+		mGraph = getModuleGraph(moduleList.get(i), typePattern, mGraph);
+	}
+	sz = mGraph.size();
+	if (sz > 0) {
+		String[] ar = mGraph.toArray(new String[0]);
+		char[][] tmp = new char[sz][];
+		for (int i = 0; i < sz; ++i) {
+			tmp[i] = ar[i].toCharArray();
+		}	
+		typePattern.moduleGraphElements = tmp;
+	}
+	return typePattern.moduleGraphElements;
+}
+private int matchModule(TypeDeclarationPattern typePattern, TypeBinding type) {
+	if (!(type instanceof ReferenceBinding)) 
+		return INACCURATE_MATCH; // a safety net, should not come here for error free code.
+	ReferenceBinding reference = (ReferenceBinding) type;
+	ModuleBinding module = reference.module();
+	if (module == null || module.moduleName == null || typePattern.moduleNames == null)
+		return POSSIBLE_MATCH; //can't determine, say possible to all.
+	String bindModName = new String(module.moduleName);
+
+	if (typePattern.modulePatterns == null) {// use 'normal' matching
+		char[][] moduleList = getModuleList(typePattern);
+		for (char[] m : moduleList) { // match any in the list
+			int ret = matchNameValue(m, module.moduleName);
+			if (ret != IMPOSSIBLE_MATCH) return ret;
+		}
+	} else {// use pattern matching
+		for (Pattern p : typePattern.modulePatterns) {
+			Matcher matcher = p.matcher(bindModName);
+			if (matcher.matches()) return ACCURATE_MATCH;
+		}
+	}
+	return IMPOSSIBLE_MATCH;
+}
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
index 77e0a5c..b3e57bb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeDeclarationPattern.java
@@ -11,17 +11,25 @@
 package org.aspectj.org.eclipse.jdt.internal.core.search.matching;
 
 import java.io.IOException;
+import java.util.regex.Pattern;
 
 import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.search.IJavaSearchConstants;
 import org.aspectj.org.eclipse.jdt.core.search.SearchPattern;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.core.index.*;
+import org.aspectj.org.eclipse.jdt.internal.core.search.indexing.IIndexConstants;
 
 public class TypeDeclarationPattern extends JavaSearchPattern {
 
 public char[] simpleName;
 public char[] pkg;
 public char[][] enclosingTypeNames;
+public char[][] moduleNames = null;
+private boolean allowModuleRegex = false; // enable to try experimental Module Regex Match
+/* package */ Pattern[] modulePatterns = null;
+public boolean moduleGraph = false;
+/* package */ char[][] moduleGraphElements = null;
 
 // set to CLASS_SUFFIX for only matching classes
 // set to INTERFACE_SUFFIX for only matching interfaces
@@ -132,31 +140,69 @@
 }
 
 public TypeDeclarationPattern(
+		char[] moduleNames,
+		char[] pkg,
+		char[][] enclosingTypeNames,
+		char[] simpleName,
+		char typeSuffix,
+		int matchRule) {
+
+		this(matchRule);
+		addModuleNames(moduleNames);
+		this.pkg = this.isCaseSensitive ? pkg : CharOperation.toLowerCase(pkg);
+		if (this.isCaseSensitive || enclosingTypeNames == null) {
+			this.enclosingTypeNames = enclosingTypeNames;
+		} else {
+			int length = enclosingTypeNames.length;
+			this.enclosingTypeNames = new char[length][];
+			for (int i = 0; i < length; i++)
+				this.enclosingTypeNames[i] = CharOperation.toLowerCase(enclosingTypeNames[i]);
+		}
+		this.simpleName = (this.isCaseSensitive || this.isCamelCase) ? simpleName : CharOperation.toLowerCase(simpleName);
+		this.typeSuffix = typeSuffix;
+
+		this.mustResolve = (this.pkg != null && this.enclosingTypeNames != null) || typeSuffix != TYPE_SUFFIX;
+	}
+
+public TypeDeclarationPattern(
 	char[] pkg,
 	char[][] enclosingTypeNames,
 	char[] simpleName,
 	char typeSuffix,
 	int matchRule) {
 
-	this(matchRule);
-
-	this.pkg = this.isCaseSensitive ? pkg : CharOperation.toLowerCase(pkg);
-	if (this.isCaseSensitive || enclosingTypeNames == null) {
-		this.enclosingTypeNames = enclosingTypeNames;
-	} else {
-		int length = enclosingTypeNames.length;
-		this.enclosingTypeNames = new char[length][];
-		for (int i = 0; i < length; i++)
-			this.enclosingTypeNames[i] = CharOperation.toLowerCase(enclosingTypeNames[i]);
-	}
-	this.simpleName = (this.isCaseSensitive || this.isCamelCase) ? simpleName : CharOperation.toLowerCase(simpleName);
-	this.typeSuffix = typeSuffix;
-
-	this.mustResolve = (this.pkg != null && this.enclosingTypeNames != null) || typeSuffix != TYPE_SUFFIX;
+	this(null, pkg, enclosingTypeNames, simpleName, typeSuffix, matchRule);
 }
 TypeDeclarationPattern(int matchRule) {
 	super(TYPE_DECL_PATTERN, matchRule);
 }
+protected void addModuleNames(char[] modNames) {
+	if (modNames == null) {
+		return;
+	}
+	final String explicit_unnamed = new String(IJavaSearchConstants.ALL_UNNAMED);
+	String[] names = new String(modNames).split(String.valueOf(CharOperation.COMMA_SEPARATOR));
+	int len = names.length;
+	if (this.allowModuleRegex && len > 0 && names[0] != null && names[0].length() > 0 
+			&& names[0].charAt(0) == IIndexConstants.ZERO_CHAR) { //pattern
+		names[0] = names[0].substring(1);
+		this.modulePatterns = new Pattern[len];
+		for (int i = 0; i < len; ++i) {
+			this.modulePatterns[i] = Pattern.compile(names[i]);
+		}
+	} else { // 'normal' matching - flag if don't care conditions are passed
+		for (int i = 0; i < len; ++i) {
+			names[i] = names[i].trim();
+			if (explicit_unnamed.equals(names[i]))
+				names[i] = ""; //$NON-NLS-1$
+		}
+	}
+	this.moduleNames = new char[len][];
+	for (int i = 0; i < len; ++i) {
+		String s = names[i];
+		this.moduleNames[i] = s != null ? s.toCharArray() : CharOperation.NO_CHAR;
+	}
+}
 /*
  * Type entries are encoded as:
  * 	simpleTypeName / packageName / enclosingTypeName / modifiers
@@ -166,6 +212,7 @@
  * or for secondary types as:
  * 	simpleTypeName / packageName / enclosingTypeName / modifiers / S
  */
+@Override
 public void decodeIndexKey(char[] key) {
 	int slash = CharOperation.indexOf(SEPARATOR, key, 0);
 	this.simpleName = CharOperation.subarray(key, 0, slash);
@@ -219,12 +266,15 @@
 			break;
 	}
 }
+@Override
 public SearchPattern getBlankPattern() {
 	return new TypeDeclarationPattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 }
+@Override
 public char[][] getIndexCategories() {
 	return CATEGORIES;
 }
+@Override
 public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 	TypeDeclarationPattern pattern = (TypeDeclarationPattern) decodedPattern;
 
@@ -255,6 +305,7 @@
 	}
 	return true;
 }
+@Override
 public EntryResult[] queryIn(Index index) throws IOException {
 	char[] key = this.simpleName; // can be null
 	int matchRule = getMatchRule();
@@ -309,6 +360,7 @@
 
 	return index.query(getIndexCategories(), key, matchRule); // match rule is irrelevant when the key is null
 }
+@Override
 protected StringBuffer print(StringBuffer output) {
 	switch (this.typeSuffix){
 		case CLASS_SUFFIX :
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
index 1199789..a1ce902 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterLocator.java
@@ -33,6 +33,7 @@
 	 * Verify whether a type reference matches name pattern.
 	 * Type parameter references (i.e. type arguments) are compiler type reference nodes
 	 */
+	@Override
 	public int match(TypeReference node, MatchingNodeSet nodeSet) {
 		if (this.pattern.findReferences) {
 			if (node instanceof SingleTypeReference) { // Type parameter cannot be qualified
@@ -49,6 +50,7 @@
 	/*
 	 * Verify whether a type parameter matches name pattern.
 	 */
+	@Override
 	public int match(TypeParameter node, MatchingNodeSet nodeSet) {
 		if (this.pattern.findDeclarations) {
 			if (matchesName(this.pattern.name, node.name)) {
@@ -63,6 +65,7 @@
 	 * While searching for references, need to match all containers as we can have references in javadoc comments.
 	 * Otherwise, only class or method container can declare type parameters.
 	 */
+	@Override
 	protected int matchContainer() {
 		if (this.pattern.findReferences) {
 			return ALL_CONTAINER;
@@ -102,6 +105,7 @@
 		return IMPOSSIBLE_MATCH;
 	}
 
+	@Override
 	protected int referenceType() {
 		return IJavaElement.TYPE_PARAMETER;
 	}
@@ -111,6 +115,7 @@
 	 * Only type references while searching references and type parameters
 	 * while searching declarations are valid.
 	 */
+	@Override
 	public int resolveLevel(ASTNode possibleMatchingNode) {
 		if (this.pattern.findReferences) {
 			if (possibleMatchingNode instanceof SingleTypeReference) {
@@ -129,6 +134,7 @@
 	 * Resolve level for a binding.
 	 * Only type variable bindings are valid.
 	 */
+	@Override
 	public int resolveLevel(Binding binding) {
 		if (binding == null) return INACCURATE_MATCH;
 		if (!(binding instanceof TypeVariableBinding)) return IMPOSSIBLE_MATCH;
@@ -136,6 +142,7 @@
 		return matchTypeParameter((TypeVariableBinding) binding, true);
 	}
 
+	@Override
 	public String toString() {
 		return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.java
index 72e5112..3a994ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeParameterPattern.java
@@ -76,6 +76,7 @@
 	/*
 	 * Same than LocalVariablePattern.
 	 */
+	@Override
 	public void findIndexMatches(Index index, IndexQueryRequestor requestor, SearchParticipant participant, IJavaSearchScope scope, IProgressMonitor progressMonitor) {
 	    IPackageFragmentRoot root = (IPackageFragmentRoot) this.typeParameter.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
 		String documentPath;
@@ -105,6 +106,7 @@
 		}
 	}
 
+	@Override
 	protected StringBuffer print(StringBuffer output) {
 		if (this.findDeclarations) {
 			output.append(this.findReferences
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.java
index 94ff57c..8d356fb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferenceLocator.java
@@ -53,12 +53,15 @@
 		element = element.getParent();
 	return element;
 }
+@Override
 protected int fineGrain() {
 	return this.fineGrain;
 }
+@Override
 public int match(Annotation node, MatchingNodeSet nodeSet) {
 	return match(node.type, nodeSet);
 }
+@Override
 public int match(ASTNode node, MatchingNodeSet nodeSet) { // interested in ImportReference
 	if (!(node instanceof ImportReference)) return IMPOSSIBLE_MATCH;
 
@@ -69,6 +72,7 @@
 //public int match(FieldDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(MethodDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
 //public int match(MessageSend node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(Reference node, MatchingNodeSet nodeSet) { // interested in NameReference & its subtypes
 	if (!(node instanceof NameReference)) return IMPOSSIBLE_MATCH;
 
@@ -88,6 +92,7 @@
 	return IMPOSSIBLE_MATCH;
 }
 //public int match(TypeDeclaration node, MatchingNodeSet nodeSet) - SKIP IT
+@Override
 public int match(TypeReference node, MatchingNodeSet nodeSet) {
 	if (this.pattern.simpleName == null)
 		return nodeSet.addMatch(node, this.pattern.mustResolve ? POSSIBLE_MATCH : ACCURATE_MATCH);
@@ -105,6 +110,7 @@
 	return IMPOSSIBLE_MATCH;
 }
 
+@Override
 protected int matchLevel(ImportReference importRef) {
 	if (this.pattern.qualification == null) {
 		if (this.pattern.simpleName == null) return ACCURATE_MATCH;
@@ -173,9 +179,8 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
-/* (non-Javadoc)
- * @see org.aspectj.org.eclipse.jdt.internal.core.search.matching.PatternLocator#matchLevelAndReportImportRef(org.aspectj.org.eclipse.jdt.internal.compiler.ast.ImportReference, org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding, org.aspectj.org.eclipse.jdt.internal.core.search.matching.MatchLocator)
- */
+
+@Override
 protected void matchLevelAndReportImportRef(ImportReference importRef, Binding binding, MatchLocator locator) throws CoreException {
 	Binding refBinding = binding;
 	if (importRef.isStatic()) {
@@ -209,6 +214,7 @@
 	}
 	super.matchLevelAndReportImportRef(importRef, refBinding, locator);
 }
+@Override
 protected void matchReportImportRef(ImportReference importRef, Binding binding, IJavaElement element, int accuracy, MatchLocator locator) throws CoreException {
 	if (this.isDeclarationOfReferencedTypesPattern) {
 		if ((element = findElement(element, accuracy)) != null) {
@@ -317,12 +323,14 @@
 /**
  * Reports the match of the given reference.
  */
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	matchReportReference(reference, element, null, null, elementBinding, accuracy, locator);
 }
 /**
  * Reports the match of the given reference. Also provide a local and other elements to eventually report in match.
  */
+@Override
 protected void matchReportReference(ASTNode reference, IJavaElement element, IJavaElement localElement, IJavaElement[] otherElements, Binding elementBinding, int accuracy, MatchLocator locator) throws CoreException {
 	if (this.isDeclarationOfReferencedTypesPattern) {
 		if ((element = findElement(element, accuracy)) != null)
@@ -519,6 +527,7 @@
 	}
 	locator.report(this.match);
 }
+@Override
 protected int referenceType() {
 	return IJavaElement.TYPE;
 }
@@ -610,6 +619,7 @@
 		maxType--;
 	}
 }
+@Override
 public int resolveLevel(ASTNode node) {
 	if (node instanceof TypeReference)
 		return resolveLevel((TypeReference) node);
@@ -618,6 +628,7 @@
 //	if (node instanceof ImportReference) - Not called when resolve is true, see MatchingNodeSet.reportMatching(unit)
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int resolveLevel(Binding binding) {
 	if (binding == null) return INACCURATE_MATCH;
 	if (!(binding instanceof TypeBinding)) return IMPOSSIBLE_MATCH;
@@ -762,6 +773,7 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public void recordResolution(QualifiedTypeReference typeReference, TypeBinding resolution) {
 	List/*<TypeBinding>*/ resolutionsForTypeReference = (List) this.recordedResolutions.get(typeReference);
 	if (resolutionsForTypeReference == null) {
@@ -770,6 +782,7 @@
 	resolutionsForTypeReference.add(resolution);
 	this.recordedResolutions.put(typeReference, resolutionsForTypeReference);
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java
index 25efe77..6e485c6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/TypeReferencePattern.java
@@ -108,12 +108,15 @@
 		super(TYPE_REF_PATTERN, matchRule);
 		this.categories = CATEGORIES;
 	}
+	@Override
 	public void decodeIndexKey(char[] key) {
 		this.simpleName = key;
 	}
+	@Override
 	public SearchPattern getBlankPattern() {
 		return new TypeReferencePattern(R_EXACT_MATCH | R_CASE_SENSITIVE);
 	}
+	@Override
 	public char[] getIndexKey() {
 		if (this.simpleName != null)
 			return this.simpleName;
@@ -123,9 +126,11 @@
 			return this.segments[this.currentSegment];
 		return null;
 	}
+	@Override
 	public char[][] getIndexCategories() {
 		return this.categories;
 	}
+	@Override
 	protected boolean hasNextQuery() {
 		if (this.segments == null) return false;
 
@@ -135,15 +140,18 @@
 		return --this.currentSegment >= (this.segments.length >= 4 ? 2 : 0);
 	}
 
+	@Override
 	public boolean matchesDecodedKey(SearchPattern decodedPattern) {
 		return true; // index key is not encoded so query results all match
 	}
 
+	@Override
 	protected void resetQuery() {
 		/* walk the segments from end to start as it will find less potential references using 'lang' than 'java' */
 		if (this.segments != null)
 			this.currentSegment = this.segments.length - 1;
 	}
+	@Override
 	protected StringBuffer print(StringBuffer output) {
 		String patternClassName = getClass().getName();
 		output.append(patternClassName.substring(patternClassName.lastIndexOf('.')+1));
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.java
index a856547..d4e870d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/matching/VariableLocator.java
@@ -21,6 +21,7 @@
 
 	this.pattern = pattern;
 }
+@Override
 public int match(Expression node, MatchingNodeSet nodeSet) { // interested in Assignment
 	if (this.pattern.writeAccess) {
 		if (this.pattern.readAccess) return IMPOSSIBLE_MATCH; // already checked the lhs in match(Reference...) before we reached here
@@ -48,6 +49,7 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public int match(Reference node, MatchingNodeSet nodeSet) { // interested in NameReference & its subtypes
 	return (this.pattern.readAccess || this.pattern.fineGrain != 0)
 		? matchReference(node, nodeSet, false)
@@ -76,6 +78,7 @@
 	}
 	return IMPOSSIBLE_MATCH;
 }
+@Override
 public String toString() {
 	return "Locator for " + this.pattern.toString(); //$NON-NLS-1$
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.java
index d7f8a8e..51b3fd9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/IJob.java
@@ -45,4 +45,14 @@
 	 * Returns this job's family
 	 */
 	public String getJobFamily();
+
+	/**
+	 * Answers if we need some sleep after index write operations. Default implementation returns {@code false}.
+	 *
+	 * @return true if the job manager should sleep a bit after this job is done to avoid IO tasks overloading OS (which
+	 *         could cause UI freezes etc).
+	 */
+	public default boolean waitNeeded() {
+		return false;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.java
index 7569e6e..39de721 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/search/processing/JobManager.java
@@ -325,6 +325,7 @@
 	/**
 	 * Infinite loop performing resource indexing
 	 */
+	@Override
 	public void run() {
 
 		long idlingStart = -1;
@@ -334,6 +335,7 @@
 				ProgressJob(String name) {
 					super(name);
 				}
+				@Override
 				protected IStatus run(IProgressMonitor monitor) {
 					IJob job = currentJob();
 					while (!monitor.isCanceled() && job != null) {
@@ -400,8 +402,12 @@
 						if (VERBOSE)
 							Util.verbose("FINISHED background job - " + job); //$NON-NLS-1$
 						moveToNextJob();
-						if (this.awaitingClients == 0)
-							Thread.sleep(50);
+						if (this.awaitingClients == 0 && job.waitNeeded()) {
+							if (VERBOSE) {
+								Util.verbose("WAITING after job - " + job); //$NON-NLS-1$
+							}
+							Thread.sleep(5);
+						}
 					}
 				} catch (InterruptedException e) { // background indexing was interrupted
 				}
@@ -459,6 +465,7 @@
 			// ignore
 		}
 	}
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer(10);
 		buffer.append("Enable count:").append(this.enableCount).append('\n'); //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.java
index 3ec7b5c..0ed1d16 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ASTNodeFinder.java
@@ -119,6 +119,7 @@
 		class Visitor extends ASTVisitor {
 			TypeDeclaration result;
 			int count = 0;
+			@Override
 			public boolean visit(TypeDeclaration typeDeclaration, BlockScope scope) {
 				if (this.result != null) return false;
 				if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.java
index 8d282b8..d75cd39 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Annotation.java
@@ -69,21 +69,17 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getTypeIndex()
-	 */
+	@Override
 	public int getTypeIndex() {
 		return this.typeIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getComponentsNumber()
-	 */
+
+	@Override
 	public int getComponentsNumber() {
 		return this.componentsNumber;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getComponents()
-	 */
+
+	@Override
 	public IAnnotationComponent[] getComponents() {
 		return this.components;
 	}
@@ -91,9 +87,8 @@
 	int sizeInBytes() {
 		return this.readOffset;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getTypeName()
-	 */
+
+	@Override
 	public char[] getTypeName() {
 		return this.typeName;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.java
index 737501d..13178e2 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponent.java
@@ -46,21 +46,17 @@
 		this.readOffset += value.sizeInBytes();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponent#getComponentNameIndex()
-	 */
+	@Override
 	public int getComponentNameIndex() {
 		return this.componentNameIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponent#getComponentName()
-	 */
+
+	@Override
 	public char[] getComponentName() {
 		return this.componentName;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponent#getComponentValue()
-	 */
+
+	@Override
 	public IAnnotationComponentValue getComponentValue() {
 		return this.componentValue;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.java
index 617d541..0ac328f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationComponentValue.java
@@ -133,75 +133,63 @@
 				break;
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getAnnotationComponentValues()
-	 */
+
+	@Override
 	public IAnnotationComponentValue[] getAnnotationComponentValues() {
 		return this.annotationComponentValues;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getAnnotationValue()
-	 */
+
+	@Override
 	public IAnnotation getAnnotationValue() {
 		return this.annotationValue;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getClassInfo()
-	 */
+
+	@Override
 	public IConstantPoolEntry getClassInfo() {
 		return this.classInfo;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getClassInfoIndex()
-	 */
+
+	@Override
 	public int getClassInfoIndex() {
 		return this.classFileInfoIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getConstantValue()
-	 */
+
+	@Override
 	public IConstantPoolEntry getConstantValue() {
 		return this.constantValue;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getConstantValueIndex()
-	 */
+
+	@Override
 	public int getConstantValueIndex() {
 		return this.constantValueIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getEnumConstantName()
-	 */
+
+	@Override
 	public char[] getEnumConstantName() {
 		return this.enumConstantName;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getEnumConstantNameIndex()
-	 */
+
+	@Override
 	public int getEnumConstantNameIndex() {
 		return this.enumConstantNameIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getEnumConstantTypeName()
-	 */
+
+	@Override
 	public char[] getEnumConstantTypeName() {
 		return this.enumConstantTypeName;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getEnumConstantTypeNameIndex()
-	 */
+
+	@Override
 	public int getEnumConstantTypeNameIndex() {
 		return this.enumConstantTypeNameIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getTag()
-	 */
+
+	@Override
 	public int getTag() {
 		return this.tag;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationComponentValue#getValuesNumber()
-	 */
+
+	@Override
 	public int getValuesNumber() {
 		return this.valuesNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.java
index ecff538..e151420 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/AnnotationDefaultAttribute.java
@@ -42,9 +42,7 @@
 		this.memberValue = new AnnotationComponentValue(classFileBytes, constantPool, offset + 6);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotationDefaultAttribute#getMemberValue()
-	 */
+	@Override
 	public IAnnotationComponentValue getMemberValue() {
 		return this.memberValue;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.java
index 9db879c..e4ae7ff 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,7 +34,8 @@
 		static final int CAPTURE = 8;
 		static final int CAPTURE18 = 9;
 		static final int BASE_TYPE = 10;
-		static final int END = 11;
+		static final int MODULE = 11;
+		static final int END = 12;
 
 		static final int START = -1;
 
@@ -152,6 +153,12 @@
 				&& this.source[this.index] == '&';
 		}
 
+		boolean isAtModuleStart() {
+			return
+				this.index < this.source.length
+				&& this.source[this.index] == '"';
+		}
+
 		int nextToken() {
 			int previousTokenEnd = this.index;
 			this.start = this.index;
@@ -221,6 +228,9 @@
 						}
 						break;
 					case '.':
+						if (this.token == MODULE)
+							break; // don't treat '.' as a separator in module names
+						//$FALL-THROUGH$
 					case '%':
 					case ':':
 					case '>':
@@ -319,6 +329,10 @@
 						this.index++;
 						this.token = CAPTURE18;
 						return this.token;
+					case '"':
+						this.index++;
+						this.token = MODULE;
+						return this.token;
 				}
 				this.index++;
 			}
@@ -397,6 +411,7 @@
 			this.start = this.index;
 		}
 
+		@Override
 		public String toString() {
 			StringBuffer buffer = new StringBuffer();
 			switch (this.token) {
@@ -436,6 +451,9 @@
 				case BASE_TYPE:
 					buffer.append("BASE TYPE: "); //$NON-NLS-1$
 					break;
+				case MODULE:
+					buffer.append("MODULE: "); //$NON-NLS-1$
+					break;
 				case END:
 					buffer.append("END: "); //$NON-NLS-1$
 					break;
@@ -466,6 +484,8 @@
 	private Scanner scanner;
 
 	private boolean hasTypeName = true;
+	
+	private boolean hasModuleName;
 
 	private boolean isMalformed;
 	
@@ -596,6 +616,10 @@
 		// default is to do nothing
 	}
 
+	public void consumeModule(char[] moduleName) {
+		// default is to do nothing
+	}
+
 	/*
 	 * Returns the string that this binding key wraps.
 	 */
@@ -607,6 +631,10 @@
 		return this.hasTypeName;
 	}
 
+	public boolean hasModuleName() {
+		return this.hasModuleName;
+	}
+
 	public void malformedKey() {
 		this.isMalformed = true;
 	}
@@ -621,6 +649,8 @@
 
 	public void parse(boolean pauseAfterFullyQualifiedName) {
 		if (!this.parsingPaused) {
+			if (parseModule())
+				return;
 			// fully qualified name
 			parseFullyQualifiedName();
 			parseSecondaryType();
@@ -694,6 +724,22 @@
 		consumeKey();
 	}
 
+	private boolean parseModule() {
+		if (this.scanner.isAtModuleStart()) {
+			this.hasTypeName = false;
+			this.keyStart = 1;
+			if (this.scanner.nextToken() == Scanner.MODULE
+				 && this.scanner.nextToken() == Scanner.END)
+			{
+				consumeModule(this.scanner.getTokenSource());
+				this.hasModuleName = true;
+				return true;
+			}
+			malformedKey();
+		}
+		return false;
+	}
+
 	private void parseFullyQualifiedName() {
 		if (this.scanner.isAtCaptureStart()) {
 			parseCapture();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
index daef87f..46f451c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BindingKeyResolver.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -97,6 +97,7 @@
 			return CharOperation.hashCode(computeUniqueKey());
 		}
 
+		@Override
 		public boolean equals(Object obj) {
 			if (!(obj instanceof SyntheticLocalVariableBinding))
 				return false;
@@ -108,6 +109,7 @@
 	Binding compilerBinding;
 
 	char[][] compoundName;
+	char[] moduleName;
 	int dimension;
 	LookupEnvironment environment;
 	ReferenceBinding genericType;
@@ -155,6 +157,11 @@
 		return this.compoundName;
 	}
 
+	public char[] moduleName() {
+		return this.moduleName;
+	}
+
+	@Override
 	public void consumeAnnotation() {
 		int size = this.types.size();
 		if (size == 0) return;
@@ -178,10 +185,12 @@
 		}
 	}
 
+	@Override
 	public void consumeArrayDimension(char[] brakets) {
 		this.dimension = brakets.length;
 	}
 
+	@Override
 	public void consumeBaseType(char[] baseTypeSig) {
 		this.compoundName = new char[][] {getKey().toCharArray()};
 		TypeBinding baseTypeBinding = getBaseTypeBinding(baseTypeSig);
@@ -190,10 +199,12 @@
 		}
 	}
 
+	@Override
 	public void consumeCapture18ID(int id, int position) {
 		consumeAnyCapture(id, position);
 	}
 
+	@Override
 	public void consumeCapture(final int position) {
 		consumeAnyCapture(-1, position);
 	}
@@ -246,41 +257,49 @@
 				}
 				return false;
 			}
+			@Override
 			public boolean visit(SingleNameReference singleNameReference, BlockScope blockScope) {
 				if (checkType(singleNameReference.resolvedType))
 					return false;
 				return super.visit(singleNameReference, blockScope);
 			}
+			@Override
 			public boolean visit(QualifiedNameReference qualifiedNameReference, BlockScope blockScope) {
 				if (checkType(qualifiedNameReference.resolvedType))
 					return false;
 				return super.visit(qualifiedNameReference, blockScope);
 			}
+			@Override
 			public boolean visit(MessageSend messageSend, BlockScope blockScope) {
 				if (checkType(messageSend.resolvedType))
 					return false;
 				return super.visit(messageSend, blockScope);
 			}
+			@Override
 			public boolean visit(FieldReference fieldReference, BlockScope blockScope) {
 				if (checkType(fieldReference.resolvedType))
 					return false;
 				return super.visit(fieldReference, blockScope);
 			}
+			@Override
 			public boolean visit(ConditionalExpression conditionalExpression, BlockScope blockScope) {
 				if (checkType(conditionalExpression.resolvedType))
 					return false;
 				return super.visit(conditionalExpression, blockScope);
 			}
+			@Override
 			public boolean visit(CastExpression castExpression, BlockScope blockScope) {
 				if (checkType(castExpression.resolvedType))
 					return false;
 				return super.visit(castExpression, blockScope);
 			}
+			@Override
 			public boolean visit(Assignment assignment, BlockScope blockScope) {
 				if (checkType(assignment.resolvedType))
 					return false;
 				return super.visit(assignment, blockScope);
 			}
+			@Override
 			public boolean visit(ArrayReference arrayReference, BlockScope blockScope) {
 				if (checkType(arrayReference.resolvedType))
 					return false;
@@ -292,10 +311,12 @@
 		this.typeBinding = captureFinder.capture;
 	}
 
+	@Override
 	public void consumeException() {
 		this.types = new ArrayList();
 	}
 
+	@Override
 	public void consumeField(char[] fieldName) {
 		if (this.typeBinding == null)
 			return;
@@ -310,6 +331,7 @@
 		}
 	}
 
+	@Override
 	public void consumeParameterizedGenericMethod() {
 		if (this.methodBinding == null)
 			return;
@@ -326,6 +348,7 @@
 		this.compilerBinding = this.methodBinding;
 	}
 
+	@Override
 	public void consumeLocalType(char[] uniqueKey) {
 		if (this.parsedUnit == null) {
 			this.typeBinding = null;
@@ -339,6 +362,7 @@
  			}
 	}
 
+	@Override
 	public void consumeLocalVar(char[] varName, int occurrenceCount, int argumentPosition) {
 		if (this.scope == null) {
 			if (this.methodBinding == null)
@@ -380,6 +404,7 @@
 		}
 	}
 
+	@Override
 	public void consumeMethod(char[] selector, char[] signature) {
 		if (this.typeBinding == null)
 			return;
@@ -464,15 +489,18 @@
 		}
 		return binding;
 	}
+	@Override
 	public void consumeMemberType(char[] simpleTypeName) {
 		this.typeBinding = getTypeBinding(simpleTypeName);
 	}
 
+	@Override
 	public void consumePackage(char[] pkgName) {
 		this.compoundName = CharOperation.splitOn('/', pkgName);
-		this.compilerBinding = new PackageBinding(this.compoundName, null, this.environment);
+		this.compilerBinding = new PackageBinding(this.compoundName, null, this.environment, this.environment.module); //TODO(SHMOD) enclosingModule
 	}
 
+	@Override
 	public void consumeParameterizedType(char[] simpleTypeName, boolean isRaw) {
 		if (this.typeBinding == null)
 			return;
@@ -505,10 +533,12 @@
 	}
 
 
+	@Override
 	public void consumeParser(BindingKeyParser parser) {
 		this.types.add(parser);
 	}
 
+	@Override
 	public void consumeScope(int scopeNumber) {
 		if (this.scope == null) {
 			if (this.methodBinding == null)
@@ -520,18 +550,22 @@
 		this.scope = (BlockScope) this.scope.subscopes[scopeNumber];
 	}
 
+	@Override
 	public void consumeRawType() {
 		if (this.typeBinding == null) return;
 		this.typeBinding = this.environment.convertToRawType(this.typeBinding, false /*do not force conversion of enclosing types*/);
 	}
+	@Override
 	public void consumeSecondaryType(char[] simpleTypeName) {
 		this.secondarySimpleName = simpleTypeName;
 	}
 
+	@Override
 	public void consumeFullyQualifiedName(char[] fullyQualifiedName) {
 		this.compoundName = CharOperation.splitOn('/', fullyQualifiedName);
 	}
 
+	@Override
 	public void consumeTopLevelType() {
 		char[] fileName;
 		this.parsedUnit = getCompilationUnitDeclaration();
@@ -547,6 +581,7 @@
 		}
 	}
 
+	@Override
 	public void consumeKey() {
 		if (this.typeBinding != null) {
 			this.typeBinding = getArrayBinding(this.dimension, this.typeBinding);
@@ -554,6 +589,7 @@
 		}
 	}
 
+	@Override
 	public void consumeTypeVariable(char[] position, char[] typeVariableName) {
 		if (position.length > 0) {
 			if (this.typeBinding == null)
@@ -581,15 +617,18 @@
 		}
 	}
 
+	@Override
 	public void consumeTypeWithCapture() {
 		BindingKeyResolver resolver = (BindingKeyResolver) this.types.get(0);
 		this.typeBinding =(TypeBinding) resolver.compilerBinding;
 	}
 
+	@Override
 	public void consumeWildcardRank(int aRank) {
 		this.wildcardRank = aRank;
 	}
 	
+	@Override
 	public void consumeWildCard(int kind) {
 		switch (kind) {
 			case Wildcard.EXTENDS:
@@ -610,6 +649,12 @@
 		}
 	}
 
+	@Override
+	public void consumeModule(char[] aModuleName) {
+		this.moduleName = aModuleName;
+		this.compilerBinding = this.environment.getModule(aModuleName);
+	}
+
 	public AnnotationBinding getAnnotationBinding() {
 		return this.annotationBinding;
 	}
@@ -738,14 +783,17 @@
 		return arguments;
 	}
 
+	@Override
 	public void malformedKey() {
 		this.compoundName = CharOperation.NO_CHAR_CHAR;
 	}
 
+	@Override
 	public BindingKeyParser newParser() {
 		return new BindingKeyResolver(this, this.compiler, this.environment, this.outerMostParsedUnit == null ? this.parsedUnit : this.outerMostParsedUnit, this.resolvedUnits);
 	}
 
+	@Override
 	public String toString() {
 		return getKey();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.java
index ba437d0..463cdaa 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsAttribute.java
@@ -54,10 +54,12 @@
 	/**
 	 * @see IBootstrapMethodsAttribute#getBootstrapMethods()
 	 */
+	@Override
 	public IBootstrapMethodsEntry[] getBootstrapMethods() {
 		return this.entries;
 	}
 	
+	@Override
 	public int getBootstrapMethodsLength() {
 		return this.numberOfBootstrapMethods;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.java
index 4c5b134..c1b71ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/BootstrapMethodsEntry.java
@@ -39,6 +39,7 @@
 	/**
 	 * @see IBootstrapMethodsEntry#getBootstrapArguments()
 	 */
+	@Override
 	public int[] getBootstrapArguments() {
 		return this.bootstrapArguments;
 	}
@@ -46,6 +47,7 @@
 	/**
 	 * @see IBootstrapMethodsEntry#getBootstrapMethodReference()
 	 */
+	@Override
 	public int getBootstrapMethodReference() {
 		return this.bootstrapMethodReference;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.java
index d507ac1..aa5799c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CharArrayBuffer.java
@@ -186,6 +186,7 @@
  * Returns the contents of the buffer as a String, or
  * an empty string if the buffer is empty.
  */
+@Override
 public String toString() {
 	char[] contents = getContents();
 	return (contents != null) ? new String(contents) : Util.EMPTY_STRING;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.java
index 0c93fd1..942ba43 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileAttribute.java
@@ -35,6 +35,7 @@
 		this.attributeName = constantPoolEntry.getUtf8Value();
 	}
 
+	@Override
 	public int getAttributeNameIndex() {
 		return this.attributeNameIndex;
 	}
@@ -42,6 +43,7 @@
 	/**
 	 * @see IClassFileAttribute#getAttributeName()
 	 */
+	@Override
 	public char[] getAttributeName() {
 		return this.attributeName;
 	}
@@ -49,6 +51,7 @@
 	/**
 	 * @see IClassFileAttribute#getAttributeLength()
 	 */
+	@Override
 	public long getAttributeLength() {
 		return this.attributeLength;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.java
index 9adca3c..9dc5ae4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ClassFileReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2011, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -154,6 +154,14 @@
 						constantPoolOffsets[i] = readOffset;
 						readOffset += IConstantPoolConstant.CONSTANT_InvokeDynamic_SIZE;
 						break;
+					case IConstantPoolConstant.CONSTANT_Module:
+						constantPoolOffsets[i] = readOffset;
+						readOffset += IConstantPoolConstant.CONSTANT_Module_SIZE;
+						break;
+					case IConstantPoolConstant.CONSTANT_Package:
+						constantPoolOffsets[i] = readOffset;
+						readOffset += IConstantPoolConstant.CONSTANT_Package_SIZE;
+						break;
 					default:
 						throw new ClassFormatException(ClassFormatException.INVALID_TAG_CONSTANT);
 				}
@@ -281,6 +289,12 @@
 							this.attributes[attributesIndex++] = new RuntimeVisibleTypeAnnotationsAttribute(classFileBytes, this.constantPool, readOffset);
 						} else if (equals(attributeName, IAttributeNamesConstants.RUNTIME_INVISIBLE_TYPE_ANNOTATIONS)) {
 							this.attributes[attributesIndex++] = new RuntimeInvisibleTypeAnnotationsAttribute(classFileBytes, this.constantPool, readOffset);
+						} else if (equals(attributeName, IAttributeNamesConstants.MODULE)) {
+							this.attributes[attributesIndex++] = new ModuleAttribute(classFileBytes, this.constantPool, readOffset);
+						} else if (equals(attributeName, IAttributeNamesConstants.MODULE_PACKAGES)) {
+							this.attributes[attributesIndex++] = new ModulePackagesAttribute(classFileBytes, this.constantPool, readOffset);
+						} else if (equals(attributeName, IAttributeNamesConstants.MODULE_MAIN_CLASS)) {
+							this.attributes[attributesIndex++] = new ModuleMainClassAttribute(classFileBytes, this.constantPool, readOffset);
 						} else {
 							this.attributes[attributesIndex++] = new ClassFileAttribute(classFileBytes, this.constantPool, readOffset);
 						}
@@ -306,12 +320,14 @@
 	/**
 	 * @see IClassFileReader#getAccessFlags()
 	 */
+	@Override
 	public int getAccessFlags() {
 		return this.accessFlags;
 	}
 	/**
 	 * @see IClassFileReader#getAttributeCount()
 	 */
+	@Override
 	public int getAttributeCount() {
 		return this.attributesCount;
 	}
@@ -319,6 +335,7 @@
 	/**
 	 * @see IClassFileReader#getAttributes()
 	 */
+	@Override
 	public IClassFileAttribute[] getAttributes() {
 		return this.attributes;
 	}
@@ -326,6 +343,7 @@
 	/**
 	 * @see IClassFileReader#getClassIndex()
 	 */
+	@Override
 	public int getClassIndex() {
 		return this.classNameIndex;
 	}
@@ -333,6 +351,7 @@
 	/**
 	 * @see IClassFileReader#getClassName()
 	 */
+	@Override
 	public char[] getClassName() {
 		return this.className;
 	}
@@ -345,12 +364,14 @@
 	/**
 	 * @see IClassFileReader#getConstantPool()
 	 */
+	@Override
 	public IConstantPool getConstantPool() {
 		return this.constantPool;
 	}
 	/**
 	 * @see IClassFileReader#getFieldInfos()
 	 */
+	@Override
 	public IFieldInfo[] getFieldInfos() {
 		return this.fields;
 	}
@@ -358,6 +379,7 @@
 	/**
 	 * @see IClassFileReader#getFieldsCount()
 	 */
+	@Override
 	public int getFieldsCount() {
 		return this.fieldsCount;
 	}
@@ -365,6 +387,7 @@
 	/**
 	 * @see IClassFileReader#getInnerClassesAttribute()
 	 */
+	@Override
 	public IInnerClassesAttribute getInnerClassesAttribute() {
 		return this.innerClassesAttribute;
 	}
@@ -372,6 +395,7 @@
 	/**
 	 * @see IClassFileReader#getInterfaceIndexes()
 	 */
+	@Override
 	public int[] getInterfaceIndexes() {
 		return this.interfaceIndexes;
 	}
@@ -379,6 +403,7 @@
 	/**
 	 * @see IClassFileReader#getInterfaceNames()
 	 */
+	@Override
 	public char[][] getInterfaceNames() {
 		return this.interfaceNames;
 	}
@@ -386,6 +411,7 @@
 	/**
 	 * @see IClassFileReader#getMagic()
 	 */
+	@Override
 	public int getMagic() {
 		return this.magicNumber;
 	}
@@ -393,6 +419,7 @@
 	/**
 	 * @see IClassFileReader#getMajorVersion()
 	 */
+	@Override
 	public int getMajorVersion() {
 		return this.majorVersion;
 	}
@@ -400,6 +427,7 @@
 	/**
 	 * @see IClassFileReader#getMethodInfos()
 	 */
+	@Override
 	public IMethodInfo[] getMethodInfos() {
 		return this.methods;
 	}
@@ -407,6 +435,7 @@
 	/**
 	 * @see IClassFileReader#getMethodsCount()
 	 */
+	@Override
 	public int getMethodsCount() {
 		return this.methodsCount;
 	}
@@ -414,6 +443,7 @@
 	/**
 	 * @see IClassFileReader#getMinorVersion()
 	 */
+	@Override
 	public int getMinorVersion() {
 		return this.minorVersion;
 	}
@@ -421,6 +451,7 @@
 	/**
 	 * @see IClassFileReader#getSourceFileAttribute()
 	 */
+	@Override
 	public ISourceAttribute getSourceFileAttribute() {
 		return this.sourceFileAttribute;
 	}
@@ -428,6 +459,7 @@
 	/**
 	 * @see IClassFileReader#getSuperclassIndex()
 	 */
+	@Override
 	public int getSuperclassIndex() {
 		return this.superclassNameIndex;
 	}
@@ -435,20 +467,26 @@
 	/**
 	 * @see IClassFileReader#getSuperclassName()
 	 */
+	@Override
 	public char[] getSuperclassName() {
 		return this.superclassName;
 	}
 	/**
 	 * @see IClassFileReader#isClass()
 	 */
+	@Override
 	public boolean isClass() {
-		return !isInterface();
+		return !(isInterface() || isModule());
 	}
 
 	/**
 	 * @see IClassFileReader#isInterface()
 	 */
+	@Override
 	public boolean isInterface() {
 		return (getAccessFlags() & IModifierConstants.ACC_INTERFACE) != 0;
 	}
+	private boolean isModule() {
+		return (getAccessFlags() & IModifierConstants.ACC_MODULE) != 0;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.java
index dcd1d32..06131a3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CodeAttribute.java
@@ -101,6 +101,7 @@
 	/**
 	 * @see ICodeAttribute#getAttributes()
 	 */
+	@Override
 	public IClassFileAttribute[] getAttributes() {
 		return this.attributes;
 	}
@@ -108,6 +109,7 @@
 	/**
 	 * @see ICodeAttribute#getAttributesCount()
 	 */
+	@Override
 	public int getAttributesCount() {
 		return this.attributesCount;
 	}
@@ -115,6 +117,7 @@
 	/**
 	 * @see ICodeAttribute#getBytecodes()
 	 */
+	@Override
 	public byte[] getBytecodes() {
 		if (this.bytecodes == null) {
 			System.arraycopy(this.classFileBytes, this.codeOffset, (this.bytecodes = new byte[(int) this.codeLength]), 0, (int) this.codeLength);
@@ -125,6 +128,7 @@
 	/**
 	 * @see ICodeAttribute#getCodeLength()
 	 */
+	@Override
 	public long getCodeLength() {
 		return this.codeLength;
 	}
@@ -132,6 +136,7 @@
 	/**
 	 * @see ICodeAttribute#getExceptionTable()
 	 */
+	@Override
 	public IExceptionTableEntry[] getExceptionTable() {
 		return this.exceptionTableEntries;
 	}
@@ -139,6 +144,7 @@
 	/**
 	 * @see ICodeAttribute#getExceptionTableLength()
 	 */
+	@Override
 	public int getExceptionTableLength() {
 		return this.exceptionTableLength;
 	}
@@ -146,6 +152,7 @@
 	/**
 	 * @see ICodeAttribute#getLineNumberAttribute()
 	 */
+	@Override
 	public ILineNumberAttribute getLineNumberAttribute() {
 		return this.lineNumberAttribute;
 	}
@@ -153,6 +160,7 @@
 	/**
 	 * @see ICodeAttribute#getLocalVariableAttribute()
 	 */
+	@Override
 	public ILocalVariableAttribute getLocalVariableAttribute() {
 		return this.localVariableAttribute;
 	}
@@ -160,6 +168,7 @@
 	/**
 	 * @see ICodeAttribute#getMaxLocals()
 	 */
+	@Override
 	public int getMaxLocals() {
 		return this.maxLocals;
 	}
@@ -167,6 +176,7 @@
 	/**
 	 * @see ICodeAttribute#getMaxStack()
 	 */
+	@Override
 	public int getMaxStack() {
 		return this.maxStack;
 	}
@@ -174,6 +184,7 @@
 	/**
 	 * @see ICodeAttribute#traverse(IBytecodeVisitor visitor)
 	 */
+	@Override
 	public void traverse(IBytecodeVisitor visitor) throws ClassFormatException {
 		int pc = this.codeOffset;
 		int opcode, index, _const, branchOffset;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.java
index 7e50484..c26898a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/CommentRecorderParser.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.util;
 
+import java.util.Arrays;
+
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
@@ -41,6 +43,7 @@
 
 	// old javadoc style check which doesn't include all leading comments into declaration
 	// for backward compatibility with 2.1 DOM
+	@Override
 	public void checkComment() {
 
 		// discard obsolete comments while inside methods or fields initializer (see bug 74369)
@@ -88,54 +91,43 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeAnnotationTypeDeclarationHeader()
-	 */
+	@Override
 	protected void consumeAnnotationTypeDeclarationHeader() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeAnnotationTypeDeclarationHeader();
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeClassHeader()
-	 */
+
+	@Override
 	protected void consumeClassHeader() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeClassHeader();
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeEmptyTypeDeclaration()
-	 */
+
+	@Override
 	protected void consumeEmptyTypeDeclaration() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeEmptyTypeDeclaration();
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeEnterAnonymousClassBody(boolean)
-	 */
+
 	@Override
 	protected void consumeEnterAnonymousClassBody(boolean qualified) {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeEnterAnonymousClassBody(qualified);
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeEnumHeader()
-	 */
+
+	@Override
 	protected void consumeEnumHeader() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeEnumHeader();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeInterfaceHeader()
-	 */
+	@Override
 	protected void consumeInterfaceHeader() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.consumeInterfaceHeader();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#endParse(int)
-	 */
+	@Override
 	protected CompilationUnitDeclaration endParse(int act) {
 		CompilationUnitDeclaration unit = super.endParse(act);
 		if (unit.comments == null) {
@@ -149,9 +141,10 @@
 	 * Save all source comments currently stored before flushing them.
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#flushCommentsDefinedPriorTo(int)
 	 */
+	@Override
 	public int flushCommentsDefinedPriorTo(int position) {
 
-		int lastCommentIndex = this.scanner.commentPtr;
+		int lastCommentIndex = getCommentPtr();
 		if (lastCommentIndex < 0) return position; // no comment
 
 		// compute the index of the first obsolete comment
@@ -211,6 +204,34 @@
 		return position;
 	}
 
+	protected int getCommentPtr() {
+		int lastComment = this.scanner.commentPtr;
+		if (lastComment == -1 && this.currentElement != null) {
+			// during recovery reuse comments from initial scan ...
+			lastComment = this.commentPtr;
+			if (lastComment >= 0) {
+				// ... but ignore if not suitable ...
+				if (lastComment >= this.scanner.commentStarts.length) {
+					return -1;
+				} else {
+					int start = this.scanner.commentStarts[lastComment];
+					// ... unsuitable if:
+					//     - unknown to the scanner (start == 0)
+					//     - line comment (start < 0)
+					if (start <= 0)
+						return -1;
+					//     - past the current position, or start of previous recovered element
+					int currentStart = this.currentElement.getLastStart();
+					if (currentStart == -1)
+						currentStart = this.scanner.currentPosition;
+					if (start > currentStart)
+						return -1;
+				}
+			}
+		}
+		return lastComment;
+	}
+
 	/*
 	 * Build a n*2 matrix of comments positions.
 	 * For each position, 0 is for start position and 1 for end position of the comment.
@@ -224,16 +245,13 @@
 		return positions;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#initialize()
-	 */
+	@Override
 	public void initialize(boolean parsingCompilationUnit) {
 		super.initialize(parsingCompilationUnit);
 		this.commentPtr = -1;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#initialize()
-	 */
+
+	@Override
 	public void initialize() {
 		super.initialize();
 		this.commentPtr = -1;
@@ -243,6 +261,7 @@
 	 * Create and store a specific comment recorder scanner.
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#initializeScanner()
 	 */
+	@Override
 	public void initializeScanner() {
 		this.scanner = new Scanner(
 				false /*comment*/,
@@ -260,6 +279,7 @@
 	private void pushOnCommentsStack(int start, int end) {
 
 		for (int i=start; i<=end; i++) {
+			if (this.scanner.commentPtr < i) break;
 			// First see if comment hasn't been already stored
 			int scannerStart = this.scanner.commentStarts[i]<0 ? -this.scanner.commentStarts[i] : this.scanner.commentStarts[i];
 			int commentStart = this.commentPtr == -1 ? -1 : (this.commentStarts[this.commentPtr]<0 ? -this.commentStarts[this.commentPtr] : this.commentStarts[this.commentPtr]);
@@ -285,11 +305,21 @@
 	 * this.scanner.commentPtr is expected *not* yet being reset before calling this method.
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#resetModifiers()
 	 */
+	@Override
 	protected void resetModifiers() {
 		pushOnCommentsStack(0, this.scanner.commentPtr);
 		super.resetModifiers();
 	}
-	
+	public void resetComments() {
+		this.commentPtr = -1;
+		Arrays.fill(this.commentStarts, 0);
+		Arrays.fill(this.commentStops, 0);
+		Arrays.fill(this.scanner.commentStops, 0);
+		Arrays.fill(this.scanner.commentStarts, 0);
+		Arrays.fill(this.scanner.commentTagStarts, 0);
+		this.scanner.commentPtr = -1; // no comment test with commentPtr value -1
+		this.scanner.lastCommentLinePosition = -1;
+	}
 	// AspectJ Extension
 	/* (non-Javadoc)
 	 * bug 150467 - save all source comments currently stored for declare 
@@ -297,6 +327,7 @@
 	 * calling super.consumeToken(type) 
 	 * @see org.aspectj.org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser#consumeToken(int)
 	 */
+	@Override
 	protected void consumeToken(int type) {
 		if (type == TokenNamedeclare) {
 			pushOnCommentsStack(0, this.scanner.commentPtr);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.java
index 07e80f8..2900fb7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPool.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -32,6 +32,7 @@
 	/**
 	 * @see IConstantPool#decodeEntry(int)
 	 */
+	@Override
 	public IConstantPoolEntry decodeEntry(int index) {
 		ConstantPoolEntry constantPoolEntry = null;
 		int kind = getEntryKind(index);
@@ -151,6 +152,24 @@
 				constantPoolEntry2.setMethodDescriptor(getUtf8ValueAt(methodDescriptorIndex));
 				constantPoolEntry = constantPoolEntry2;
 				break;
+			case IConstantPoolConstant.CONSTANT_Module :
+				constantPoolEntry2 = new ConstantPoolEntry2();
+				constantPoolEntry2.reset();
+				constantPoolEntry2.setKind(kind);
+				int moduleIndex = u2At(this.classFileBytes,  1, this.constantPoolOffset[index]);
+				constantPoolEntry2.setModuleIndex(moduleIndex);
+				constantPoolEntry2.setModuleName(getUtf8ValueAt(moduleIndex));
+				constantPoolEntry = constantPoolEntry2;
+				break;
+			case IConstantPoolConstant.CONSTANT_Package :
+				constantPoolEntry2 = new ConstantPoolEntry2();
+				constantPoolEntry2.reset();
+				constantPoolEntry2.setKind(kind);
+				int packageIndex = u2At(this.classFileBytes,  1, this.constantPoolOffset[index]);
+				constantPoolEntry2.setPackageIndex(packageIndex);
+				constantPoolEntry2.setPackageName(getUtf8ValueAt(packageIndex));
+				constantPoolEntry = constantPoolEntry2;
+				break;
 		}
 		return constantPoolEntry;
 	}
@@ -158,6 +177,7 @@
 	/**
 	 * @see IConstantPool#getConstantPoolCount()
 	 */
+	@Override
 	public int getConstantPoolCount() {
 		return this.constantPoolCount;
 	}
@@ -165,6 +185,7 @@
 	/**
 	 * @see IConstantPool#getEntryKind(int)
 	 */
+	@Override
 	public int getEntryKind(int index) {
 		return u1At(this.classFileBytes, 0, this.constantPoolOffset[index]);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.java
index 31b8737..9bdce6f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,6 +15,7 @@
 /**
  * Default implementation of IConstantPoolEntry
  *
+ * @see ConstantPoolEntry2
  * @since 2.0
  */
 public class ConstantPoolEntry implements IConstantPoolEntry {
@@ -65,6 +66,7 @@
 	/**
 	 * @see IConstantPoolEntry#getKind()
 	 */
+	@Override
 	public int getKind() {
 		return this.kind;
 	}
@@ -80,6 +82,7 @@
 	/**
 	 * @see IConstantPoolEntry#getClassInfoNameIndex()
 	 */
+	@Override
 	public int getClassInfoNameIndex() {
 		return this.classInfoNameIndex;
 	}
@@ -87,6 +90,7 @@
 	/**
 	 * @see IConstantPoolEntry#getClassIndex()
 	 */
+	@Override
 	public int getClassIndex() {
 		return this.classIndex;
 	}
@@ -94,6 +98,7 @@
 	/**
 	 * @see IConstantPoolEntry#getNameAndTypeIndex()
 	 */
+	@Override
 	public int getNameAndTypeIndex() {
 		return this.nameAndTypeIndex;
 	}
@@ -101,6 +106,7 @@
 	/**
 	 * @see IConstantPoolEntry#getStringIndex()
 	 */
+	@Override
 	public int getStringIndex() {
 		return this.stringIndex;
 	}
@@ -108,6 +114,7 @@
 	/**
 	 * @see IConstantPoolEntry#getStringValue()
 	 */
+	@Override
 	public String getStringValue() {
 		return new String(this.stringValue);
 	}
@@ -115,6 +122,7 @@
 	/**
 	 * @see IConstantPoolEntry#getIntegerValue()
 	 */
+	@Override
 	public int getIntegerValue() {
 		return this.integerValue;
 	}
@@ -122,6 +130,7 @@
 	/**
 	 * @see IConstantPoolEntry#getFloatValue()
 	 */
+	@Override
 	public float getFloatValue() {
 		return this.floatValue;
 	}
@@ -129,6 +138,7 @@
 	/**
 	 * @see IConstantPoolEntry#getDoubleValue()
 	 */
+	@Override
 	public double getDoubleValue() {
 		return this.doubleValue;
 	}
@@ -136,6 +146,7 @@
 	/**
 	 * @see IConstantPoolEntry#getLongValue()
 	 */
+	@Override
 	public long getLongValue() {
 		return this.longValue;
 	}
@@ -143,6 +154,7 @@
 	/**
 	 * @see IConstantPoolEntry#getNameAndTypeInfoDescriptorIndex()
 	 */
+	@Override
 	public int getNameAndTypeInfoDescriptorIndex() {
 		return this.nameAndTypeDescriptorIndex;
 	}
@@ -150,6 +162,7 @@
 	/**
 	 * @see IConstantPoolEntry#getNameAndTypeInfoNameIndex()
 	 */
+	@Override
 	public int getNameAndTypeInfoNameIndex() {
 		return this.nameAndTypeNameIndex;
 	}
@@ -157,6 +170,7 @@
 	/**
 	 * @see IConstantPoolEntry#getClassName()
 	 */
+	@Override
 	public char[] getClassName() {
 		return this.className;
 	}
@@ -164,6 +178,7 @@
 	/**
 	 * @see IConstantPoolEntry#getFieldName()
 	 */
+	@Override
 	public char[] getFieldName() {
 		return this.fieldName;
 	}
@@ -171,6 +186,7 @@
 	/**
 	 * @see IConstantPoolEntry#getMethodName()
 	 */
+	@Override
 	public char[] getMethodName() {
 		return this.methodName;
 	}
@@ -178,6 +194,7 @@
 	/**
 	 * @see IConstantPoolEntry#getFieldDescriptor()
 	 */
+	@Override
 	public char[] getFieldDescriptor() {
 		return this.fieldDescriptor;
 	}
@@ -185,6 +202,7 @@
 	/**
 	 * @see IConstantPoolEntry#getMethodDescriptor()
 	 */
+	@Override
 	public char[] getMethodDescriptor() {
 		return this.methodDescriptor;
 	}
@@ -192,6 +210,7 @@
 	/**
 	 * @see IConstantPoolEntry#getUtf8Value()
 	 */
+	@Override
 	public char[] getUtf8Value() {
 		return this.utf8Value;
 	}
@@ -199,6 +218,7 @@
 	/**
 	 * @see IConstantPoolEntry#getClassInfoName()
 	 */
+	@Override
 	public char[] getClassInfoName() {
 		return this.classInfoName;
 	}
@@ -367,6 +387,7 @@
 	/**
 	 * @see IConstantPoolEntry#getUtf8Length()
 	 */
+	@Override
 	public int getUtf8Length() {
 		return this.utf8Length;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.java
index aac2efc..e011a58 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantPoolEntry2.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2011 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,36 +10,65 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.util;
 
-import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry2;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry3;
 
 /**
- * Default implementation of IConstantPoolEntry
+ * Default implementation of IConstantPoolEntry2 and IConstantPoolEntry3.
  *
  * @since 2.0
  */
-public class ConstantPoolEntry2 extends ConstantPoolEntry implements IConstantPoolEntry2 {
-	
+public class ConstantPoolEntry2 extends ConstantPoolEntry implements IConstantPoolEntry3 {
+
 	private int descriptorIndex;
 	private int referenceKind;
 	private int referenceIndex;
 	private int bootstrapMethodAttributeIndex;
 	
+	private int moduleIndex;
+	private char[] moduleName;
+	private int packageIndex;
+	private char[] packageName;
+
+	@Override
 	public int getDescriptorIndex() {
 		return this.descriptorIndex;
 	}
 
+	@Override
 	public int getReferenceKind() {
 		return this.referenceKind;
 	}
 
+	@Override
 	public int getReferenceIndex() {
 		return this.referenceIndex;
 	}
 
+	@Override
 	public int getBootstrapMethodAttributeIndex() {
 		return this.bootstrapMethodAttributeIndex;
 	}
 
+	@Override
+	public int getModuleIndex() {
+		return this.moduleIndex;
+	}
+
+	@Override
+	public char[] getModuleName() {
+		return this.moduleName;
+	}
+
+	@Override
+	public int getPackageIndex() {
+		return this.packageIndex;
+	}
+
+	@Override
+	public char[] getPackageName() {
+		return this.packageName;
+	}
+
 	public void setDescriptorIndex(int descriptorIndex) {
 		this.descriptorIndex = descriptorIndex;
 	}
@@ -56,11 +85,32 @@
 		this.bootstrapMethodAttributeIndex = bootstrapMethodAttributeIndex;
 	}
 	
+	public void setModuleIndex(int moduleIndex) {
+		this.moduleIndex = moduleIndex;
+	}
+
+	public void setModuleName(char[] moduleName) {
+		this.moduleName = moduleName;
+	}
+
+	public void setPackageIndex(int packageIndex) {
+		this.packageIndex = packageIndex;
+	}
+
+	public void setPackageName(char[] packageName) {
+		this.packageName = packageName;
+	}
+
+	@Override
 	public void reset() {
 		super.reset();
 		this.descriptorIndex = 0;
 		this.referenceKind = 0;
 		this.referenceIndex = 0;
 		this.bootstrapMethodAttributeIndex = 0;
+		this.moduleIndex = 0;
+		this.moduleName = null;
+		this.packageIndex = 0;
+		this.packageName = null;
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.java
index 17e9174..b783c26 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ConstantValueAttribute.java
@@ -34,6 +34,7 @@
 	/**
 	 * @see IConstantValueAttribute#getConstantValue()
 	 */
+	@Override
 	public IConstantPoolEntry getConstantValue() {
 		return this.constantPoolEntry;
 	}
@@ -41,6 +42,7 @@
 	/**
 	 * @see IConstantValueAttribute#getConstantValueIndex()
 	 */
+	@Override
 	public int getConstantValueIndex() {
 		return this.constantValueIndex;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.java
index 20e080e..561e58b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DOMFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,6 +35,7 @@
 import org.aspectj.org.eclipse.jdt.core.dom.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.core.dom.MarkerAnnotation;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodDeclaration;
+import org.aspectj.org.eclipse.jdt.core.dom.ModuleDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.NormalAnnotation;
 import org.aspectj.org.eclipse.jdt.core.dom.PackageDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.ParameterizedType;
@@ -85,18 +86,21 @@
 		return this.foundNode;
 	}
 
+	@Override
 	public boolean visit(AnnotationTypeDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(AnnotationTypeMemberDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(AnonymousClassDeclaration node) {
 		ASTNode name;
 		ASTNode parent = node.getParent();
@@ -118,84 +122,105 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(EnumConstantDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveVariable();
 		return true;
 	}
 
+	@Override
 	public boolean visit(EnumDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(ImportDeclaration node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(Initializer node) {
 		// note that no binding exists for an Initializer
 		found(node, node);
 		return true;
 	}
 
+	@Override
 	public boolean visit(MarkerAnnotation node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveAnnotationBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(MethodDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		if (found(node, node.getName()) && this.resolveBinding) {
+			this.foundBinding = node.resolveBinding();
+		}
+		return true;
+	}
+	@Override
 	public boolean visit(NormalAnnotation node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveAnnotationBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(PackageDeclaration node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(SingleMemberAnnotation node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveAnnotationBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(TypeParameter node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(VariableDeclarationFragment node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;
 	}
 
+	@Override
 	public boolean visit(SingleVariableDeclaration node) {
 		if (found(node, node.getName()) && this.resolveBinding)
 			this.foundBinding = node.resolveBinding();
 		return true;		
 	}
 
+	@Override
 	public boolean visit(LambdaExpression node) {
 		if (found(node, node) && this.resolveBinding)
 			this.foundBinding = node.resolveMethodBinding();
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java
index 005f482..759d899 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java
@@ -79,6 +79,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aaload(int)
 	 */
+	@Override
 	public void _aaload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.AALOAD]);
@@ -100,6 +101,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aastore(int)
 	 */
+	@Override
 	public void _aastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.AASTORE]);
@@ -109,6 +111,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aconst_null(int)
 	 */
+	@Override
 	public void _aconst_null(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ACONST_NULL]);
@@ -118,6 +121,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_0(int)
 	 */
+	@Override
 	public void _aload_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load,
@@ -131,6 +135,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_1(int)
 	 */
+	@Override
 	public void _aload_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -143,6 +148,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_2(int)
 	 */
+	@Override
 	public void _aload_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -155,6 +161,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload_3(int)
 	 */
+	@Override
 	public void _aload_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -167,6 +174,7 @@
 	/**
 	 * @see IBytecodeVisitor#_aload(int, int)
 	 */
+	@Override
 	public void _aload(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -179,6 +187,7 @@
 	/**
 	 * @see IBytecodeVisitor#_anewarray(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _anewarray(int pc, int index, IConstantPoolEntry constantClass) {
 		dumpPcNumber(pc);
 		this.buffer
@@ -193,6 +202,7 @@
 	/**
 	 * @see IBytecodeVisitor#_areturn(int)
 	 */
+	@Override
 	public void _areturn(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ARETURN]);
@@ -202,6 +212,7 @@
 	/**
 	 * @see IBytecodeVisitor#_arraylength(int)
 	 */
+	@Override
 	public void _arraylength(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ARRAYLENGTH]);
@@ -211,6 +222,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_0(int)
 	 */
+	@Override
 	public void _astore_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -223,6 +235,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_1(int)
 	 */
+	@Override
 	public void _astore_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -303,6 +316,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_2(int)
 	 */
+	@Override
 	public void _astore_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -315,6 +329,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore_3(int)
 	 */
+	@Override
 	public void _astore_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -327,6 +342,7 @@
 	/**
 	 * @see IBytecodeVisitor#_astore(int, int)
 	 */
+	@Override
 	public void _astore(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -339,6 +355,7 @@
 	/**
 	 * @see IBytecodeVisitor#_athrow(int)
 	 */
+	@Override
 	public void _athrow(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ATHROW]);
@@ -348,6 +365,7 @@
 	/**
 	 * @see IBytecodeVisitor#_baload(int)
 	 */
+	@Override
 	public void _baload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.BALOAD]);
@@ -357,6 +375,7 @@
 	/**
 	 * @see IBytecodeVisitor#_bastore(int)
 	 */
+	@Override
 	public void _bastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.BASTORE]);
@@ -366,6 +385,7 @@
 	/**
 	 * @see IBytecodeVisitor#_bipush(int, byte)
 	 */
+	@Override
 	public void _bipush(int pc, byte _byte) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.BIPUSH])
@@ -377,6 +397,7 @@
 	/**
 	 * @see IBytecodeVisitor#_caload(int)
 	 */
+	@Override
 	public void _caload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.CALOAD]);
@@ -386,6 +407,7 @@
 	/**
 	 * @see IBytecodeVisitor#_castore(int)
 	 */
+	@Override
 	public void _castore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.CASTORE]);
@@ -395,6 +417,7 @@
 	/**
 	 * @see IBytecodeVisitor#_checkcast(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _checkcast(int pc, int index, IConstantPoolEntry constantClass) {
 		dumpPcNumber(pc);
 		this.buffer
@@ -409,6 +432,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2f(int)
 	 */
+	@Override
 	public void _d2f(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.D2F]);
@@ -418,6 +442,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2i(int)
 	 */
+	@Override
 	public void _d2i(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.D2I]);
@@ -427,6 +452,7 @@
 	/**
 	 * @see IBytecodeVisitor#_d2l(int)
 	 */
+	@Override
 	public void _d2l(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.D2L]);
@@ -436,6 +462,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dadd(int)
 	 */
+	@Override
 	public void _dadd(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DADD]);
@@ -445,6 +472,7 @@
 	/**
 	 * @see IBytecodeVisitor#_daload(int)
 	 */
+	@Override
 	public void _daload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DALOAD]);
@@ -454,6 +482,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dastore(int)
 	 */
+	@Override
 	public void _dastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DASTORE]);
@@ -463,6 +492,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dcmpg(int)
 	 */
+	@Override
 	public void _dcmpg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DCMPG]);
@@ -472,6 +502,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dcmpl(int)
 	 */
+	@Override
 	public void _dcmpl(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DCMPL]);
@@ -481,6 +512,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dconst_0(int)
 	 */
+	@Override
 	public void _dconst_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DCONST_0]);
@@ -490,6 +522,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dconst_1(int)
 	 */
+	@Override
 	public void _dconst_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DCONST_1]);
@@ -499,6 +532,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ddiv(int)
 	 */
+	@Override
 	public void _ddiv(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DDIV]);
@@ -508,6 +542,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_0(int)
 	 */
+	@Override
 	public void _dload_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load,new String[] {
@@ -520,6 +555,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_1(int)
 	 */
+	@Override
 	public void _dload_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -532,6 +568,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_2(int)
 	 */
+	@Override
 	public void _dload_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -544,6 +581,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload_3(int)
 	 */
+	@Override
 	public void _dload_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -556,6 +594,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dload(int, int)
 	 */
+	@Override
 	public void _dload(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -568,6 +607,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dmul(int)
 	 */
+	@Override
 	public void _dmul(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DMUL]);
@@ -577,6 +617,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dneg(int)
 	 */
+	@Override
 	public void _dneg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DNEG]);
@@ -586,6 +627,7 @@
 	/**
 	 * @see IBytecodeVisitor#_drem(int)
 	 */
+	@Override
 	public void _drem(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DREM]);
@@ -595,6 +637,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dreturn(int)
 	 */
+	@Override
 	public void _dreturn(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DRETURN]);
@@ -604,6 +647,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_0(int)
 	 */
+	@Override
 	public void _dstore_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -616,6 +660,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_1(int)
 	 */
+	@Override
 	public void _dstore_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -628,6 +673,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_2(int)
 	 */
+	@Override
 	public void _dstore_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -640,6 +686,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore_3(int)
 	 */
+	@Override
 	public void _dstore_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -652,6 +699,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dstore(int,int)
 	 */
+	@Override
 	public void _dstore(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -664,6 +712,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dsub(int)
 	 */
+	@Override
 	public void _dsub(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DSUB]);
@@ -673,6 +722,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup_x1(int)
 	 */
+	@Override
 	public void _dup_x1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP_X1]);
@@ -682,6 +732,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup_x2(int)
 	 */
+	@Override
 	public void _dup_x2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP_X2]);
@@ -691,6 +742,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup(int)
 	 */
+	@Override
 	public void _dup(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP]);
@@ -700,6 +752,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2_x1(int)
 	 */
+	@Override
 	public void _dup2_x1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP2_X1]);
@@ -709,6 +762,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2_x2(int)
 	 */
+	@Override
 	public void _dup2_x2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP2_X2]);
@@ -718,6 +772,7 @@
 	/**
 	 * @see IBytecodeVisitor#_dup2(int)
 	 */
+	@Override
 	public void _dup2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.DUP2]);
@@ -727,6 +782,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2d(int)
 	 */
+	@Override
 	public void _f2d(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.F2D]);
@@ -736,6 +792,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2i(int)
 	 */
+	@Override
 	public void _f2i(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.F2I]);
@@ -745,6 +802,7 @@
 	/**
 	 * @see IBytecodeVisitor#_f2l(int)
 	 */
+	@Override
 	public void _f2l(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.F2L]);
@@ -754,6 +812,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fadd(int)
 	 */
+	@Override
 	public void _fadd(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FADD]);
@@ -763,6 +822,7 @@
 	/**
 	 * @see IBytecodeVisitor#_faload(int)
 	 */
+	@Override
 	public void _faload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FALOAD]);
@@ -772,6 +832,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fastore(int)
 	 */
+	@Override
 	public void _fastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FASTORE]);
@@ -781,6 +842,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fcmpg(int)
 	 */
+	@Override
 	public void _fcmpg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FCMPG]);
@@ -790,6 +852,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fcmpl(int)
 	 */
+	@Override
 	public void _fcmpl(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FCMPL]);
@@ -799,6 +862,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_0(int)
 	 */
+	@Override
 	public void _fconst_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FCONST_0]);
@@ -808,6 +872,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_1(int)
 	 */
+	@Override
 	public void _fconst_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FCONST_1]);
@@ -817,6 +882,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fconst_2(int)
 	 */
+	@Override
 	public void _fconst_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FCONST_2]);
@@ -826,6 +892,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fdiv(int)
 	 */
+	@Override
 	public void _fdiv(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FDIV]);
@@ -835,6 +902,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_0(int)
 	 */
+	@Override
 	public void _fload_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -847,6 +915,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_1(int)
 	 */
+	@Override
 	public void _fload_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -859,6 +928,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_2(int)
 	 */
+	@Override
 	public void _fload_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -871,6 +941,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload_3(int)
 	 */
+	@Override
 	public void _fload_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -883,6 +954,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fload(int, int)
 	 */
+	@Override
 	public void _fload(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -895,6 +967,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fmul(int)
 	 */
+	@Override
 	public void _fmul(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FMUL]);
@@ -904,6 +977,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fneg(int)
 	 */
+	@Override
 	public void _fneg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FNEG]);
@@ -913,6 +987,7 @@
 	/**
 	 * @see IBytecodeVisitor#_frem(int)
 	 */
+	@Override
 	public void _frem(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FREM]);
@@ -922,6 +997,7 @@
 	/**
 	 * @see IBytecodeVisitor#_freturn(int)
 	 */
+	@Override
 	public void _freturn(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FRETURN]);
@@ -931,6 +1007,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_0(int)
 	 */
+	@Override
 	public void _fstore_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store,new String[] {
@@ -943,6 +1020,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_1(int)
 	 */
+	@Override
 	public void _fstore_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -955,6 +1033,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_2(int)
 	 */
+	@Override
 	public void _fstore_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -967,6 +1046,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore_3(int)
 	 */
+	@Override
 	public void _fstore_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -979,6 +1059,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fstore(int, int)
 	 */
+	@Override
 	public void _fstore(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -991,6 +1072,7 @@
 	/**
 	 * @see IBytecodeVisitor#_fsub(int)
 	 */
+	@Override
 	public void _fsub(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.FSUB]);
@@ -1000,6 +1082,7 @@
 	/**
 	 * @see IBytecodeVisitor#_getfield(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _getfield(int pc, int index, IConstantPoolEntry constantFieldref) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_getfield, new String[] {
@@ -1015,6 +1098,7 @@
 	/**
 	 * @see IBytecodeVisitor#_getstatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _getstatic(int pc, int index, IConstantPoolEntry constantFieldref) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_getstatic, new String[] {
@@ -1030,6 +1114,7 @@
 	/**
 	 * @see IBytecodeVisitor#_goto_w(int, int)
 	 */
+	@Override
 	public void _goto_w(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.GOTO_W])
@@ -1041,6 +1126,7 @@
 	/**
 	 * @see IBytecodeVisitor#_goto(int, int)
 	 */
+	@Override
 	public void _goto(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.GOTO])
@@ -1052,6 +1138,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2b(int)
 	 */
+	@Override
 	public void _i2b(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2B]);
@@ -1061,6 +1148,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2c(int)
 	 */
+	@Override
 	public void _i2c(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2C]);
@@ -1070,6 +1158,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2d(int)
 	 */
+	@Override
 	public void _i2d(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2D]);
@@ -1079,6 +1168,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2f(int)
 	 */
+	@Override
 	public void _i2f(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2F]);
@@ -1088,6 +1178,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2l(int)
 	 */
+	@Override
 	public void _i2l(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2L]);
@@ -1097,6 +1188,7 @@
 	/**
 	 * @see IBytecodeVisitor#_i2s(int)
 	 */
+	@Override
 	public void _i2s(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.I2S]);
@@ -1106,6 +1198,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iadd(int)
 	 */
+	@Override
 	public void _iadd(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IADD]);
@@ -1115,6 +1208,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iaload(int)
 	 */
+	@Override
 	public void _iaload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IALOAD]);
@@ -1124,6 +1218,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iand(int)
 	 */
+	@Override
 	public void _iand(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IAND]);
@@ -1133,6 +1228,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iastore(int)
 	 */
+	@Override
 	public void _iastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IASTORE]);
@@ -1142,6 +1238,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_acmpeq(int, int)
 	 */
+	@Override
 	public void _if_acmpeq(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ACMPEQ])
@@ -1153,6 +1250,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_acmpne(int, int)
 	 */
+	@Override
 	public void _if_acmpne(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ACMPNE])
@@ -1164,6 +1262,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpeq(int, int)
 	 */
+	@Override
 	public void _if_icmpeq(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPEQ])
@@ -1175,6 +1274,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpge(int, int)
 	 */
+	@Override
 	public void _if_icmpge(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPGE])
@@ -1186,6 +1286,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpgt(int, int)
 	 */
+	@Override
 	public void _if_icmpgt(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPGT])
@@ -1197,6 +1298,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmple(int, int)
 	 */
+	@Override
 	public void _if_icmple(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPLE])
@@ -1208,6 +1310,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmplt(int, int)
 	 */
+	@Override
 	public void _if_icmplt(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPLT])
@@ -1219,6 +1322,7 @@
 	/**
 	 * @see IBytecodeVisitor#_if_icmpne(int, int)
 	 */
+	@Override
 	public void _if_icmpne(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IF_ICMPNE])
@@ -1230,6 +1334,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_0(int)
 	 */
+	@Override
 	public void _iconst_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_0]);
@@ -1239,6 +1344,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_1(int)
 	 */
+	@Override
 	public void _iconst_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_1]);
@@ -1248,6 +1354,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_2(int)
 	 */
+	@Override
 	public void _iconst_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_2]);
@@ -1257,6 +1364,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_3(int)
 	 */
+	@Override
 	public void _iconst_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_3]);
@@ -1266,6 +1374,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_4(int)
 	 */
+	@Override
 	public void _iconst_4(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_4]);
@@ -1275,6 +1384,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_5(int)
 	 */
+	@Override
 	public void _iconst_5(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_5]);
@@ -1284,6 +1394,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iconst_m1(int)
 	 */
+	@Override
 	public void _iconst_m1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ICONST_M1]);
@@ -1293,6 +1404,7 @@
 	/**
 	 * @see IBytecodeVisitor#_idiv(int)
 	 */
+	@Override
 	public void _idiv(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IDIV]);
@@ -1302,6 +1414,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifeq(int, int)
 	 */
+	@Override
 	public void _ifeq(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFEQ])
@@ -1313,6 +1426,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifge(int, int)
 	 */
+	@Override
 	public void _ifge(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFGE])
@@ -1324,6 +1438,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifgt(int, int)
 	 */
+	@Override
 	public void _ifgt(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFGT])
@@ -1335,6 +1450,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifle(int, int)
 	 */
+	@Override
 	public void _ifle(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFLE])
@@ -1346,6 +1462,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iflt(int, int)
 	 */
+	@Override
 	public void _iflt(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFLT])
@@ -1357,6 +1474,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifne(int, int)
 	 */
+	@Override
 	public void _ifne(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFNE])
@@ -1368,6 +1486,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifnonnull(int, int)
 	 */
+	@Override
 	public void _ifnonnull(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFNONNULL])
@@ -1379,6 +1498,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ifnull(int, int)
 	 */
+	@Override
 	public void _ifnull(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IFNULL])
@@ -1390,6 +1510,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iinc(int, int, int)
 	 */
+	@Override
 	public void _iinc(int pc, int index, int _const) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_iinc, new String[] {
@@ -1404,6 +1525,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_0(int)
 	 */
+	@Override
 	public void _iload_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1416,6 +1538,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_1(int)
 	 */
+	@Override
 	public void _iload_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1428,6 +1551,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_2(int)
 	 */
+	@Override
 	public void _iload_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1440,6 +1564,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload_3(int)
 	 */
+	@Override
 	public void _iload_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1452,6 +1577,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iload(int, int)
 	 */
+	@Override
 	public void _iload(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1464,6 +1590,7 @@
 	/**
 	 * @see IBytecodeVisitor#_imul(int)
 	 */
+	@Override
 	public void _imul(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IMUL]);
@@ -1473,6 +1600,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ineg(int)
 	 */
+	@Override
 	public void _ineg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.INEG]);
@@ -1482,6 +1610,7 @@
 	/**
 	 * @see IBytecodeVisitor#_instanceof(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _instanceof(int pc, int index, IConstantPoolEntry constantClass) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_instanceof, new String[] {
@@ -1494,6 +1623,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokedynamic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokedynamic(
 		int pc,
 		int index,
@@ -1516,6 +1646,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokedynamic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokedynamic(
 		int pc,
 		int index,
@@ -1540,6 +1671,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokeinterface(int, int, byte, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokeinterface(
 		int pc,
 		int index,
@@ -1564,6 +1696,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokespecial(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokespecial(int pc, int index, IConstantPoolEntry constantMethodref) {
 		dumpPcNumber(pc);
 		final String signature = returnMethodSignature(constantMethodref);
@@ -1577,6 +1710,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokestatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokestatic(int pc, int index, IConstantPoolEntry constantMethodref) {
 		dumpPcNumber(pc);
 		final String signature = returnMethodSignature(constantMethodref);
@@ -1591,6 +1725,7 @@
 	/**
 	 * @see IBytecodeVisitor#_invokevirtual(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _invokevirtual(int pc, int index, IConstantPoolEntry constantMethodref) {
 		dumpPcNumber(pc);
 		final String signature = returnMethodSignature(constantMethodref);
@@ -1605,6 +1740,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ior(int)
 	 */
+	@Override
 	public void _ior(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IOR]);
@@ -1614,6 +1750,7 @@
 	/**
 	 * @see IBytecodeVisitor#_irem(int)
 	 */
+	@Override
 	public void _irem(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IREM]);
@@ -1623,6 +1760,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ireturn(int)
 	 */
+	@Override
 	public void _ireturn(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IRETURN]);
@@ -1632,6 +1770,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ishl(int)
 	 */
+	@Override
 	public void _ishl(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ISHL]);
@@ -1641,6 +1780,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ishr(int)
 	 */
+	@Override
 	public void _ishr(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ISHR]);
@@ -1650,6 +1790,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_0(int)
 	 */
+	@Override
 	public void _istore_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -1662,6 +1803,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_1(int)
 	 */
+	@Override
 	public void _istore_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -1674,6 +1816,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_2(int)
 	 */
+	@Override
 	public void _istore_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -1686,6 +1829,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore_3(int)
 	 */
+	@Override
 	public void _istore_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -1698,6 +1842,7 @@
 	/**
 	 * @see IBytecodeVisitor#_istore(int, int)
 	 */
+	@Override
 	public void _istore(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -1710,6 +1855,7 @@
 	/**
 	 * @see IBytecodeVisitor#_isub(int)
 	 */
+	@Override
 	public void _isub(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.ISUB]);
@@ -1719,6 +1865,7 @@
 	/**
 	 * @see IBytecodeVisitor#_iushr(int)
 	 */
+	@Override
 	public void _iushr(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IUSHR]);
@@ -1728,6 +1875,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ixor(int)
 	 */
+	@Override
 	public void _ixor(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IXOR]);
@@ -1737,6 +1885,7 @@
 	/**
 	 * @see IBytecodeVisitor#_jsr_w(int, int)
 	 */
+	@Override
 	public void _jsr_w(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.JSR_W])
@@ -1748,6 +1897,7 @@
 	/**
 	 * @see IBytecodeVisitor#_jsr(int, int)
 	 */
+	@Override
 	public void _jsr(int pc, int branchOffset) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.JSR])
@@ -1759,6 +1909,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2d(int)
 	 */
+	@Override
 	public void _l2d(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.L2D]);
@@ -1768,6 +1919,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2f(int)
 	 */
+	@Override
 	public void _l2f(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.L2F]);
@@ -1777,6 +1929,7 @@
 	/**
 	 * @see IBytecodeVisitor#_l2i(int)
 	 */
+	@Override
 	public void _l2i(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.L2I]);
@@ -1786,6 +1939,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ladd(int)
 	 */
+	@Override
 	public void _ladd(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LADD]);
@@ -1795,6 +1949,7 @@
 	/**
 	 * @see IBytecodeVisitor#_laload(int)
 	 */
+	@Override
 	public void _laload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LALOAD]);
@@ -1804,6 +1959,7 @@
 	/**
 	 * @see IBytecodeVisitor#_land(int)
 	 */
+	@Override
 	public void _land(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LAND]);
@@ -1813,6 +1969,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lastore(int)
 	 */
+	@Override
 	public void _lastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LASTORE]);
@@ -1822,6 +1979,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lcmp(int)
 	 */
+	@Override
 	public void _lcmp(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LCMP]);
@@ -1831,6 +1989,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lconst_0(int)
 	 */
+	@Override
 	public void _lconst_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LCONST_0]);
@@ -1840,6 +1999,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lconst_1(int)
 	 */
+	@Override
 	public void _lconst_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LCONST_1]);
@@ -1849,6 +2009,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc_w(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc_w(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		dumpPcNumber(pc);
 		switch (constantPoolEntry.getKind()) {
@@ -1886,6 +2047,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		dumpPcNumber(pc);
 		switch (constantPoolEntry.getKind()) {
@@ -1923,6 +2085,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldc2_w(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _ldc2_w(int pc, int index, IConstantPoolEntry constantPoolEntry) {
 		dumpPcNumber(pc);
 		switch (constantPoolEntry.getKind()) {
@@ -1946,6 +2109,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ldiv(int)
 	 */
+	@Override
 	public void _ldiv(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDIV]);
@@ -1955,6 +2119,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_0(int)
 	 */
+	@Override
 	public void _lload_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1967,6 +2132,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_1(int)
 	 */
+	@Override
 	public void _lload_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1979,6 +2145,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_2(int)
 	 */
+	@Override
 	public void _lload_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -1991,6 +2158,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload_3(int)
 	 */
+	@Override
 	public void _lload_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -2003,6 +2171,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lload(int, int)
 	 */
+	@Override
 	public void _lload(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_load, new String[] {
@@ -2015,6 +2184,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lmul(int)
 	 */
+	@Override
 	public void _lmul(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LMUL]);
@@ -2024,6 +2194,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lneg(int)
 	 */
+	@Override
 	public void _lneg(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LNEG]);
@@ -2033,6 +2204,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lookupswitch(int, int, int, int[][])
 	 */
+	@Override
 	public void _lookupswitch(int pc, int defaultoffset, int npairs, int[][] offset_pairs) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LOOKUPSWITCH])
@@ -2053,6 +2225,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lor(int)
 	 */
+	@Override
 	public void _lor(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LOR]);
@@ -2062,6 +2235,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lrem(int)
 	 */
+	@Override
 	public void _lrem(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LREM]);
@@ -2071,6 +2245,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lreturn(int)
 	 */
+	@Override
 	public void _lreturn(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LRETURN]);
@@ -2080,6 +2255,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lshl(int)
 	 */
+	@Override
 	public void _lshl(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LSHL]);
@@ -2089,6 +2265,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lshr(int)
 	 */
+	@Override
 	public void _lshr(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LSHR]);
@@ -2098,6 +2275,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_0(int)
 	 */
+	@Override
 	public void _lstore_0(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -2110,6 +2288,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_1(int)
 	 */
+	@Override
 	public void _lstore_1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -2122,6 +2301,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_2(int)
 	 */
+	@Override
 	public void _lstore_2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -2134,6 +2314,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore_3(int)
 	 */
+	@Override
 	public void _lstore_3(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -2146,6 +2327,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lstore(int, int)
 	 */
+	@Override
 	public void _lstore(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_store, new String[] {
@@ -2158,6 +2340,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lsub(int)
 	 */
+	@Override
 	public void _lsub(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LSUB]);
@@ -2167,6 +2350,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lushr(int)
 	 */
+	@Override
 	public void _lushr(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LUSHR]);
@@ -2176,6 +2360,7 @@
 	/**
 	 * @see IBytecodeVisitor#_lxor(int)
 	 */
+	@Override
 	public void _lxor(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LXOR]);
@@ -2185,6 +2370,7 @@
 	/**
 	 * @see IBytecodeVisitor#_monitorenter(int)
 	 */
+	@Override
 	public void _monitorenter(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.MONITORENTER]);
@@ -2194,6 +2380,7 @@
 	/**
 	 * @see IBytecodeVisitor#_monitorexit(int)
 	 */
+	@Override
 	public void _monitorexit(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.MONITOREXIT]);
@@ -2203,6 +2390,7 @@
 	/**
 	 * @see IBytecodeVisitor#_multianewarray(int, int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _multianewarray(
 		int pc,
 		int index,
@@ -2220,6 +2408,7 @@
 	/**
 	 * @see IBytecodeVisitor#_new(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _new(int pc, int index, IConstantPoolEntry constantClass) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_new, new String[] {
@@ -2233,6 +2422,7 @@
 	/**
 	 * @see IBytecodeVisitor#_newarray(int, int)
 	 */
+	@Override
 	public void _newarray(int pc, int atype) {
 		dumpPcNumber(pc);
 		switch(atype) {
@@ -2290,6 +2480,7 @@
 	/**
 	 * @see IBytecodeVisitor#_nop(int)
 	 */
+	@Override
 	public void _nop(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.NOP]);
@@ -2299,6 +2490,7 @@
 	/**
 	 * @see IBytecodeVisitor#_pop(int)
 	 */
+	@Override
 	public void _pop(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.POP]);
@@ -2308,6 +2500,7 @@
 	/**
 	 * @see IBytecodeVisitor#_pop2(int)
 	 */
+	@Override
 	public void _pop2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.POP2]);
@@ -2317,6 +2510,7 @@
 	/**
 	 * @see IBytecodeVisitor#_putfield(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _putfield(int pc, int index, IConstantPoolEntry constantFieldref) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_putfield, new String[] {
@@ -2332,6 +2526,7 @@
 	/**
 	 * @see IBytecodeVisitor#_putstatic(int, int, IConstantPoolEntry)
 	 */
+	@Override
 	public void _putstatic(int pc, int index, IConstantPoolEntry constantFieldref) {
 		dumpPcNumber(pc);
 		this.buffer.append(Messages.bind(Messages.classformat_putstatic, new String[] {
@@ -2347,6 +2542,7 @@
 	/**
 	 * @see IBytecodeVisitor#_ret(int, int)
 	 */
+	@Override
 	public void _ret(int pc, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.RET])
@@ -2358,6 +2554,7 @@
 	/**
 	 * @see IBytecodeVisitor#_return(int)
 	 */
+	@Override
 	public void _return(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.RETURN]);
@@ -2367,6 +2564,7 @@
 	/**
 	 * @see IBytecodeVisitor#_saload(int)
 	 */
+	@Override
 	public void _saload(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.SALOAD]);
@@ -2376,6 +2574,7 @@
 	/**
 	 * @see IBytecodeVisitor#_sastore(int)
 	 */
+	@Override
 	public void _sastore(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.SASTORE]);
@@ -2385,6 +2584,7 @@
 	/**
 	 * @see IBytecodeVisitor#_sipush(int, short)
 	 */
+	@Override
 	public void _sipush(int pc, short value) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.SIPUSH])
@@ -2396,6 +2596,7 @@
 	/**
 	 * @see IBytecodeVisitor#_swap(int)
 	 */
+	@Override
 	public void _swap(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.SWAP]);
@@ -2405,6 +2606,7 @@
 	/**
 	 * @see IBytecodeVisitor#_tableswitch(int, int, int, int, int[])
 	 */
+	@Override
 	public void _tableswitch(
 		int pc,
 		int defaultoffset,
@@ -2431,6 +2633,7 @@
 	/**
 	 * @see IBytecodeVisitor#_wide(int, int, int)
 	 */
+	@Override
 	public void _wide(int pc, int iincopcode, int index, int _const) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.WIDE]);
@@ -2441,6 +2644,7 @@
 	/**
 	 * @see IBytecodeVisitor#_wide(int, int, int)
 	 */
+	@Override
 	public void _wide(int pc, int opcode, int index) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.WIDE]);
@@ -2484,6 +2688,7 @@
 	/**
 	 * @see IBytecodeVisitor#_breakpoint(int)
 	 */
+	@Override
 	public void _breakpoint(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.BREAKPOINT]);
@@ -2493,6 +2698,7 @@
 	/**
 	 * @see IBytecodeVisitor#_impdep1(int)
 	 */
+	@Override
 	public void _impdep1(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IMPDEP1]);
@@ -2502,6 +2708,7 @@
 	/**
 	 * @see IBytecodeVisitor#_impdep2(int)
 	 */
+	@Override
 	public void _impdep2(int pc) {
 		dumpPcNumber(pc);
 		this.buffer.append(OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.IMPDEP2]);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.java
index f0e550b..64623a6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/DefaultStackMapFrame.java
@@ -72,21 +72,27 @@
 	int sizeInBytes() {
 		return this.readOffset;
 	}
+	@Override
 	public int getFrameType() {
 		return 255; // full_frame
 	}
+	@Override
 	public IVerificationTypeInfo[] getLocals() {
 		return this.locals;
 	}
+	@Override
 	public int getNumberOfLocals() {
 		return this.numberOfLocals;
 	}
+	@Override
 	public int getNumberOfStackItems() {
 		return this.numberOfStackItems;
 	}
+	@Override
 	public int getOffsetDelta() {
 		return this.offsetDelta;
 	}
+	@Override
 	public IVerificationTypeInfo[] getStackItems() {
 		return this.stackItems;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.java
index e7ce6a0..f2a94d4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Disassembler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -175,6 +175,30 @@
 				IModifierConstants.ACC_FINAL,
 		});
 	}
+	private final void decodeModifiersForModuleRequires(StringBuffer buffer, int accessFlags) {
+		int[] checkBits = new int[] {
+				IModifierConstants.ACC_TRANSITIVE,
+				IModifierConstants.ACC_STATIC_PHASE,
+		};
+		boolean firstModifier = true;
+		for (int i = 0, max = checkBits.length; i < max; i++) {
+			switch(checkBits[i]) {
+				case IModifierConstants.ACC_TRANSITIVE :
+					firstModifier = appendModifier(buffer, accessFlags, IModifierConstants.ACC_TRANSITIVE, "transitive", firstModifier); //$NON-NLS-1$
+					break;
+				case IModifierConstants.ACC_STATIC_PHASE :
+					firstModifier = appendModifier(buffer, accessFlags, IModifierConstants.ACC_STATIC_PHASE, "protected", firstModifier); //$NON-NLS-1$
+					break;
+			}
+		}
+		if (!firstModifier) {
+			buffer.append(Messages.disassembler_space);
+		}
+	}
+	private final void decodeModifiersForModule(StringBuffer buffer, int accessFlags) {
+		appendModifier(buffer, accessFlags, IModifierConstants.ACC_OPEN, "open", true); //$NON-NLS-1$
+		buffer.append(Messages.disassembler_space);
+	}
 	public static String escapeString(String s) {
 		return decodeStringValue(s);
 	}
@@ -199,6 +223,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.util.ClassFileBytesDisassembler#disassemble(byte[], java.lang.String)
 	 */
+	@Override
 	public String disassemble(byte[] classFileBytes, String lineSeparator) throws ClassFormatException {
 		try {
 			return disassemble(new ClassFileReader(classFileBytes, IClassFileReader.ALL), lineSeparator, ClassFileBytesDisassembler.DEFAULT);
@@ -210,6 +235,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.util.ClassFileBytesDisassembler#disassemble(byte[], java.lang.String, int)
 	 */
+	@Override
 	public String disassemble(byte[] classFileBytes, String lineSeparator, int mode) throws ClassFormatException {
 		try {
 			return disassemble(new ClassFileReader(classFileBytes, IClassFileReader.ALL), lineSeparator, mode);
@@ -974,6 +1000,10 @@
 				versionNumber = JavaCore.VERSION_1_7;
 			} else if (minorVersion == 0 && majorVersion == 52) {
 				versionNumber = JavaCore.VERSION_1_8;
+			} else if (minorVersion == 0 && majorVersion == 53) {
+				versionNumber = JavaCore.VERSION_9;
+			} else if (minorVersion == 0 && majorVersion == 54) {
+				versionNumber = JavaCore.VERSION_10;
 			}
 			buffer.append(
 				Messages.bind(Messages.classfileformat_versiondetails,
@@ -1009,7 +1039,8 @@
 		IClassFileAttribute runtimeInvisibleTypeAnnotationsAttribute = Util.getAttribute(classFileReader, IAttributeNamesConstants.RUNTIME_INVISIBLE_TYPE_ANNOTATIONS);
 
 		IClassFileAttribute bootstrapMethods = Util.getAttribute(classFileReader, IAttributeNamesConstants.BOOTSTRAP_METHODS);
-	
+		IModuleAttribute moduleAttribute = (IModuleAttribute) Util.getAttribute(classFileReader, IAttributeNamesConstants.MODULE);
+
 		if (checkMode(mode, DETAILED)) {
 			// disassemble compact version of annotations
 			if (runtimeInvisibleAnnotationsAttribute != null) {
@@ -1049,9 +1080,12 @@
 		}
 	
 		final boolean isAnnotation = (accessFlags & IModifierConstants.ACC_ANNOTATION) != 0;
+		final boolean isModule = (accessFlags & IModifierConstants.ACC_MODULE) != 0;
 		boolean isInterface = false;
 		if (isEnum) {
 			buffer.append("enum "); //$NON-NLS-1$
+		} else if (isModule) {
+			// skip - process under module attribute
 		} else if (classFileReader.isClass()) {
 			buffer.append("class "); //$NON-NLS-1$
 		} else {
@@ -1070,7 +1104,7 @@
 			if (signatureAttribute != null) {
 				disassembleGenericSignature(mode, buffer, signatureAttribute.getSignature());
 			}
-		} else {
+		} else if (!isModule) {
 			buffer.append(className);
 		}
 	
@@ -1104,15 +1138,29 @@
 				}
 			}
 		}
-		buffer.append(Messages.bind(Messages.disassembler_opentypedeclaration));
+		if (!isModule)
+			buffer.append(Messages.bind(Messages.disassembler_opentypedeclaration));
 		if (checkMode(mode, SYSTEM)) {
 			disassemble(classFileReader.getConstantPool(), buffer, lineSeparator, 1);
 		}
+		if (isModule && moduleAttribute != null) { // print attributes - module package and main class only if the mandatory module attribute non-null
+			decodeModifiersForModule(buffer, accessFlags);
+			buffer.append("module"); //$NON-NLS-1$
+			buffer.append(Messages.disassembler_space);
+			buffer.append(moduleAttribute.getModuleName());
+			buffer.append(Messages.disassembler_space);
+			buffer.append(Messages.bind(Messages.disassembler_opentypedeclaration));
+			disassembleModule(moduleAttribute, buffer, lineSeparator, 1);
+			IModulePackagesAttribute modulePackagesAttribute = (IModulePackagesAttribute) Util.getAttribute(classFileReader, IAttributeNamesConstants.MODULE_PACKAGES);
+			disassembleModule(modulePackagesAttribute, buffer, lineSeparator, 1);
+			IModuleMainClassAttribute mainClassAttribute = (IModuleMainClassAttribute) Util.getAttribute(classFileReader, IAttributeNamesConstants.MODULE_MAIN_CLASS);
+			disassembleModule(mainClassAttribute, buffer, lineSeparator, 1);
+		}
 		disassembleTypeMembers(classFileReader, className, buffer, lineSeparator, 1, mode, isEnum);
 		if (checkMode(mode, SYSTEM | DETAILED)) {
 			IClassFileAttribute[] attributes = classFileReader.getAttributes();
 			int length = attributes.length;
-			IEnclosingMethodAttribute enclosingMethodAttribute = getEnclosingMethodAttribute(classFileReader);
+			IEnclosingMethodAttribute enclosingMethodAttribute = (IEnclosingMethodAttribute) Util.getAttribute(classFileReader, IAttributeNamesConstants.ENCLOSING_METHOD);
 			int remainingAttributesLength = length;
 			if (innerClassesAttribute != null) {
 				remainingAttributesLength--;
@@ -1129,9 +1177,13 @@
 			if (bootstrapMethods != null) {
 				remainingAttributesLength--;
 			}
+			if (moduleAttribute != null) {
+				remainingAttributesLength--;
+			}
 			if (innerClassesAttribute != null
 					|| enclosingMethodAttribute != null
 					|| bootstrapMethods != null
+					|| moduleAttribute != null
 					|| remainingAttributesLength != 0) {
 				// this test is to ensure we don't insert more than one line separator
 				if (buffer.lastIndexOf(lineSeparator) != buffer.length() - lineSeparator.length()) {
@@ -1173,7 +1225,9 @@
 								&& attribute != runtimeVisibleTypeAnnotationsAttribute
 								&& !CharOperation.equals(attribute.getAttributeName(), IAttributeNamesConstants.DEPRECATED)
 								&& !CharOperation.equals(attribute.getAttributeName(), IAttributeNamesConstants.SYNTHETIC)
-								&& attribute != bootstrapMethods) {
+								&& attribute != bootstrapMethods
+								&& attribute != moduleAttribute
+								) {
 							disassemble(attribute, buffer, lineSeparator, 0, mode);
 						}
 					}
@@ -1185,6 +1239,130 @@
 		return buffer.toString();
 	}
 
+	private void disassembleModule(IModuleAttribute moduleAttribute, StringBuffer buffer, String lineSeparator, int tabNumber) {
+		writeNewLine(buffer, lineSeparator, tabNumber);
+		char[] moduleVersion = moduleAttribute.getModuleVersionValue();
+		if (moduleVersion == null) {
+			moduleVersion = Messages.disassembler_module_version_none.toCharArray();
+		}
+		buffer.append(Messages.bind(Messages.disassembler_module_version, new String(moduleVersion)));
+		IRequiresInfo[] requiresInfo = moduleAttribute.getRequiresInfo();
+		if (requiresInfo.length > 0) {
+			writeNewLine(buffer, lineSeparator, 0);
+			for (int i = 0, max = requiresInfo.length; i < max; i++) {
+				writeNewLine(buffer, lineSeparator, tabNumber);
+				disassemble(requiresInfo[i], buffer, lineSeparator, tabNumber);
+			}
+		}
+		IPackageVisibilityInfo[] exportInfos = moduleAttribute.getExportsInfo();
+		if (exportInfos.length > 0) {
+			writeNewLine(buffer, lineSeparator, 0);
+			for (int i = 0, max = exportInfos.length; i < max; i++) {
+				writeNewLine(buffer, lineSeparator, tabNumber);
+				disassemble(exportInfos[i], buffer, lineSeparator, tabNumber, true);
+			}
+		}
+		IPackageVisibilityInfo[] opensInfos = moduleAttribute.getOpensInfo();
+		if (opensInfos.length > 0) {
+			writeNewLine(buffer, lineSeparator, 0);
+			for (int i = 0, max = opensInfos.length; i < max; i++) {
+				writeNewLine(buffer, lineSeparator, tabNumber);
+				disassemble(opensInfos[i], buffer, lineSeparator, tabNumber, false);
+			}
+		}
+		char[][] usesNames = moduleAttribute.getUsesClassNames();
+		if (usesNames.length > 0) {
+			writeNewLine(buffer, lineSeparator, 0);
+			for (int i = 0, max = usesNames.length; i < max; i++) {
+				writeNewLine(buffer, lineSeparator, tabNumber);
+				buffer.append("uses " + CharOperation.charToString(CharOperation.replaceOnCopy(usesNames[i], '/','.'))); //$NON-NLS-1$
+			}
+		}
+		IProvidesInfo[] providesInfos = moduleAttribute.getProvidesInfo();
+		if (providesInfos.length > 0) {
+			writeNewLine(buffer, lineSeparator, 0);
+			for (int i = 0, max = providesInfos.length; i < max; i++) {
+				writeNewLine(buffer, lineSeparator, tabNumber);
+				disassemble(providesInfos[i], buffer, lineSeparator, tabNumber);
+			}
+		}
+	}
+	private void convertModuleNames(StringBuffer buffer, char[] name) {
+		buffer.append(CharOperation.replaceOnCopy(CharOperation.replaceOnCopy(name, '$','.'), '/','.'));				
+	}
+
+	private void disassembleModule(IModulePackagesAttribute modulePackagesAttribute, StringBuffer buffer, String lineSeparator, int tabNumber) {
+		if (modulePackagesAttribute == null) return;
+		writeNewLine(buffer, lineSeparator, tabNumber);
+		writeNewLine(buffer, lineSeparator, tabNumber);
+		buffer.append(Messages.disassembler_modulepackagesattributeheader);
+		char[][] names = modulePackagesAttribute.getPackageNames();
+		for (int i = 0, l = modulePackagesAttribute.getPackagesCount(); i < l; ++i) {
+			writeNewLine(buffer, lineSeparator, tabNumber + 1);
+			convertModuleNames(buffer, names[i]);				
+		}
+		writeNewLine(buffer, lineSeparator, 0);
+	}
+
+	private void disassembleModule(IModuleMainClassAttribute moduleMainClassAttribute, StringBuffer buffer, String lineSeparator, int tabNumber) {
+		if (moduleMainClassAttribute == null) return;
+		writeNewLine(buffer, lineSeparator, tabNumber);
+		buffer.append(Messages.disassembler_modulemainclassattributeheader);
+		writeNewLine(buffer, lineSeparator, tabNumber + 1);
+		convertModuleNames(buffer, moduleMainClassAttribute.getMainClassName());				
+		writeNewLine(buffer, lineSeparator, 0);
+	}
+
+	private void disassemble(IProvidesInfo iProvidesInfo, StringBuffer buffer, String lineSeparator, int tabNumber) {
+		buffer.append("provides"); //$NON-NLS-1$
+		buffer.append(Messages.disassembler_space);
+		convertModuleNames(buffer, iProvidesInfo.getServiceName());
+		buffer.append(Messages.disassembler_space);
+		char[][] implementations = iProvidesInfo.getImplementationNames();
+		if (implementations.length > 0) {
+			buffer.append( "with"); //$NON-NLS-1$
+			buffer.append(Messages.disassembler_space);
+			for (int i = 0, l = implementations.length; i < l; ++i) {
+				if (i != 0) {
+					buffer
+						.append(Messages.disassembler_comma)
+						.append(Messages.disassembler_space);
+				}
+				convertModuleNames(buffer, implementations[i]);				
+			}
+		}
+		buffer.append(';');		
+	}
+
+	private void disassemble(IPackageVisibilityInfo iPackageVisibilityInfo, StringBuffer buffer, String lineSeparator,
+			int tabNumber, boolean isExports) {
+		buffer.append(isExports ? "exports" : "opens"); //$NON-NLS-1$ //$NON-NLS-2$
+		buffer.append(Messages.disassembler_space);
+		convertModuleNames(buffer, iPackageVisibilityInfo.getPackageName());
+		char[][] targets = iPackageVisibilityInfo.getTargetModuleNames();		
+		if (targets.length > 0) {
+			buffer.append(Messages.disassembler_space);
+			buffer.append( "to"); //$NON-NLS-1$
+			buffer.append(Messages.disassembler_space);
+			for (int i = 0, l = targets.length; i < l; ++i) {
+				if (i != 0) {
+					buffer
+						.append(Messages.disassembler_comma)
+						.append(Messages.disassembler_space);
+				}
+				buffer.append(targets[i]);
+			}
+		}
+		buffer.append(';');		
+	}
+
+	private void disassemble(IRequiresInfo iRequiresInfo, StringBuffer buffer, String lineSeparator, int tabNumber) {
+		buffer.append("requires "); //$NON-NLS-1$
+		decodeModifiersForModuleRequires(buffer, iRequiresInfo.getRequiresFlags());
+		buffer.append(iRequiresInfo.getRequiresModuleName());
+		buffer.append(';');		
+	}
+
 	private void disassembleGenericSignature(int mode, StringBuffer buffer, final char[] signature) {
 		CharOperation.replace(signature, '/', '.');
 		final char[][] typeParameters = Signature.getTypeParameters(signature);
@@ -1331,7 +1509,7 @@
 					}));
 			}
 		}
-		final ILocalVariableTypeTableAttribute localVariableTypeAttribute= (ILocalVariableTypeTableAttribute) getAttribute(IAttributeNamesConstants.LOCAL_VARIABLE_TYPE_TABLE, codeAttribute);
+		final ILocalVariableTypeTableAttribute localVariableTypeAttribute= (ILocalVariableTypeTableAttribute) Util.getAttribute(codeAttribute, IAttributeNamesConstants.LOCAL_VARIABLE_TYPE_TABLE);
 		final int localVariableTypeTableLength = localVariableTypeAttribute == null ? 0 : localVariableTypeAttribute.getLocalVariableTypeTableLength();
 		if (localVariableTypeTableLength != 0) {
 			int tabNumberForLocalVariableAttribute = tabNumber + 2;
@@ -2446,29 +2624,11 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.util.ClassFileBytesDisassembler#getDescription()
 	 */
+	@Override
 	public String getDescription() {
 		return Messages.disassembler_description;
 	}
 
-	private IEnclosingMethodAttribute getEnclosingMethodAttribute(IClassFileReader classFileReader) {
-		IClassFileAttribute[] attributes = classFileReader.getAttributes();
-		for (int i = 0, max = attributes.length; i < max; i++) {
-			if (CharOperation.equals(attributes[i].getAttributeName(), IAttributeNamesConstants.ENCLOSING_METHOD)) {
-				return (IEnclosingMethodAttribute) attributes[i];
-			}
-		}
-		return null;
-	}
-	private IClassFileAttribute getAttribute(final char[] attributeName, final ICodeAttribute codeAttribute) {
-		IClassFileAttribute[] attributes = codeAttribute.getAttributes();
-		for (int i = 0, max = attributes.length; i < max; i++) {
-			if (CharOperation.equals(attributes[i].getAttributeName(), attributeName)) {
-				return attributes[i];
-			}
-		}
-		return null;
-	}
-
 	private char[][] getParameterNames(char[] methodDescriptor, ICodeAttribute codeAttribute, IMethodParametersAttribute parametersAttribute, int accessFlags) {
 		int paramCount = Signature.getParameterCount(methodDescriptor);
 		char[][] parameterNames = new char[paramCount][];
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.java
index 2f55c2f..3cbe7bd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/EnclosingMethodAttribute.java
@@ -60,45 +60,38 @@
 			this.methodName = constantPoolEntry.getUtf8Value();
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getEnclosingClass()
-	 */
+
+	@Override
 	public char[] getEnclosingClass() {
 		return this.enclosingClassName;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodDeclaringClassDescriptorIndex()
-	 */
+
+	@Override
 	public int getEnclosingClassIndex() {
 		return this.enclosingClassIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodDescriptor()
-	 */
+
+	@Override
 	public char[] getMethodDescriptor() {
 		return this.methodDescriptor;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodDescriptorIndex()
-	 */
+
+	@Override
 	public int getMethodDescriptorIndex() {
 		return this.methodDescriptorIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodName()
-	 */
+
+	@Override
 	public char[] getMethodName() {
 		return this.methodName;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodNameIndex()
-	 */
+
+	@Override
 	public int getMethodNameIndex() {
 		return this.methodNameIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IEnclosingMethodAttribute#getMethodNameAndTypeIndex()
-	 */
+
+	@Override
 	public int getMethodNameAndTypeIndex() {
 		return this.methodNameAndTypeIndex;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.java
index 71dbe93..8a17566 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionAttribute.java
@@ -51,6 +51,7 @@
 	/**
 	 * @see IExceptionAttribute#getExceptionIndexes()
 	 */
+	@Override
 	public int[] getExceptionIndexes() {
 		return this.exceptionIndexes;
 	}
@@ -58,6 +59,7 @@
 	/**
 	 * @see IExceptionAttribute#getExceptionNames()
 	 */
+	@Override
 	public char[][] getExceptionNames() {
 		return this.exceptionNames;
 	}
@@ -65,6 +67,7 @@
 	/**
 	 * @see IExceptionAttribute#getExceptionsNumber()
 	 */
+	@Override
 	public int getExceptionsNumber() {
 		return this.exceptionsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.java
index e7e3948..fe70687 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExceptionTableEntry.java
@@ -46,6 +46,7 @@
 	/**
 	 * @see IExceptionTableEntry#getStartPC()
 	 */
+	@Override
 	public int getStartPC() {
 		return this.startPC;
 	}
@@ -53,6 +54,7 @@
 	/**
 	 * @see IExceptionTableEntry#getEndPC()
 	 */
+	@Override
 	public int getEndPC() {
 		return this.endPC;
 	}
@@ -60,6 +62,7 @@
 	/**
 	 * @see IExceptionTableEntry#getHandlerPC()
 	 */
+	@Override
 	public int getHandlerPC() {
 		return this.handlerPC;
 	}
@@ -67,6 +70,7 @@
 	/**
 	 * @see IExceptionTableEntry#getCatchTypeIndex()
 	 */
+	@Override
 	public int getCatchTypeIndex() {
 		return this.catchTypeIndex;
 	}
@@ -74,6 +78,7 @@
 	/**
 	 * @see IExceptionTableEntry#getCatchType()
 	 */
+	@Override
 	public char[] getCatchType() {
 		return this.catchType;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.java
index 3f3d99c..e83e8a7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ExtendedAnnotation.java
@@ -227,21 +227,17 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getTypeIndex()
-	 */
+	@Override
 	public int getTypeIndex() {
 		return this.typeIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getComponentsNumber()
-	 */
+
+	@Override
 	public int getComponentsNumber() {
 		return this.componentsNumber;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getComponents()
-	 */
+
+	@Override
 	public IAnnotationComponent[] getComponents() {
 		return this.components;
 	}
@@ -249,49 +245,58 @@
 	int sizeInBytes() {
 		return this.readOffset;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IAnnotation#getTypeName()
-	 */
+
+	@Override
 	public char[] getTypeName() {
 		return this.typeName;
 	}
 
+	@Override
 	public int getTargetType() {
 		return this.targetType;
 	}
 	
+	@Override
 	public int getExceptionTableIndex() {
 		return this.exceptionTableIndex;
 	}
 
+	@Override
 	public int getOffset() {
 		return this.offset;
 	}
 
+	@Override
 	public int getLocalVariableRefenceInfoLength() {
 		return this.localVariableTable.length;
 	}
 
+	@Override
 	public ILocalVariableReferenceInfo[] getLocalVariableTable() {
 		return this.localVariableTable;
 	}
 
+	@Override
 	public int getParameterIndex() {
 		return this.parameterIndex;
 	}
 
+	@Override
 	public int getTypeParameterIndex() {
 		return this.typeParameterIndex;
 	}
 
+	@Override
 	public int getTypeParameterBoundIndex() {
 		return this.typeParameterBoundIndex;
 	}
 
+	@Override
 	public int[][] getTypePath() {
 		return this.typePath;
 	}
 
+	@Override
 	public int getAnnotationTypeIndex() {
 		return this.annotationTypeIndex;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.java
index ea27db9..a2fd4ed 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/FieldInfo.java
@@ -107,12 +107,14 @@
 	/**
 	 * @see IFieldInfo#getAccessFlags()
 	 */
+	@Override
 	public int getAccessFlags() {
 		return this.accessFlags;
 	}
 	/**
 	 * @see IFieldInfo#getAttributeCount()
 	 */
+	@Override
 	public int getAttributeCount() {
 		return this.attributesCount;
 	}
@@ -120,6 +122,7 @@
 	/**
 	 * @see IFieldInfo#getAttributes()
 	 */
+	@Override
 	public IClassFileAttribute[] getAttributes() {
 		return this.attributes;
 	}
@@ -127,6 +130,7 @@
 	/**
 	 * @see IFieldInfo#getConstantValueAttribute()
 	 */
+	@Override
 	public IConstantValueAttribute getConstantValueAttribute() {
 		return this.constantValueAttribute;
 	}
@@ -134,6 +138,7 @@
 	/**
 	 * @see IFieldInfo#getDescriptor()
 	 */
+	@Override
 	public char[] getDescriptor() {
 		return this.descriptor;
 	}
@@ -141,6 +146,7 @@
 	/**
 	 * @see IFieldInfo#getDescriptorIndex()
 	 */
+	@Override
 	public int getDescriptorIndex() {
 		return this.descriptorIndex;
 	}
@@ -148,6 +154,7 @@
 	/**
 	 * @see IFieldInfo#getName()
 	 */
+	@Override
 	public char[] getName() {
 		return this.name;
 	}
@@ -155,12 +162,14 @@
 	/**
 	 * @see IFieldInfo#getNameIndex()
 	 */
+	@Override
 	public int getNameIndex() {
 		return this.nameIndex;
 	}
 	/**
 	 * @see IFieldInfo#hasConstantValueAttribute()
 	 */
+	@Override
 	public boolean hasConstantValueAttribute() {
 		return this.constantValueAttribute != null;
 	}
@@ -168,6 +177,7 @@
 	/**
 	 * @see IFieldInfo#isDeprecated()
 	 */
+	@Override
 	public boolean isDeprecated() {
 		return this.isDeprecated;
 	}
@@ -175,6 +185,7 @@
 	/**
 	 * @see IFieldInfo#isSynthetic()
 	 */
+	@Override
 	public boolean isSynthetic() {
 		return this.isSynthetic;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.java
index f9b826a..03fc392 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HandleFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -38,6 +38,8 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodScope;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemMethodBinding;
 import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt;
 import org.aspectj.org.eclipse.jdt.internal.core.*;
 import org.aspectj.org.eclipse.jdt.internal.core.search.AbstractJavaSearchScope;
 import org.aspectj.org.eclipse.jdt.internal.core.util.Util;
@@ -61,6 +63,8 @@
 
 	private JavaModel javaModel;
 
+	private HashtableOfObjectToInt localOccurrenceCounts = new HashtableOfObjectToInt(5);
+
 	public HandleFactory() {
 		this.javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
 	}
@@ -82,11 +86,12 @@
 			// path to a class file inside a jar
 			// Optimization: cache package fragment root handle and package handles
 			int rootPathLength;
+			PackageFragmentRoot root = null;
 			if (this.lastPkgFragmentRootPath == null
 					|| (rootPathLength = this.lastPkgFragmentRootPath.length()) != resourcePath.length()
 					|| !resourcePath.regionMatches(0, this.lastPkgFragmentRootPath, 0, rootPathLength)) {
 				String jarPath= resourcePath.substring(0, separatorIndex);
-				PackageFragmentRoot root= getJarPkgFragmentRoot(resourcePath, separatorIndex, jarPath, scope);
+				root= getJarPkgFragmentRoot(resourcePath, separatorIndex, jarPath, scope);
 				if (root == null)
 					return null; // match is outside classpath
 				this.lastPkgFragmentRootPath= jarPath;
@@ -94,7 +99,15 @@
 				this.packageHandles= new HashtableOfArrayToObject(5);
 			}
 			// create handle
+			String module = null;
+			String rootPath = this.lastPkgFragmentRoot.getPath().toOSString();
+			if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isJrt(rootPath)) {
+				module = resourcePath.substring(separatorIndex + 1, 
+						(separatorIndex = resourcePath.lastIndexOf(IJavaSearchScope.JAR_FILE_ENTRY_SEPARATOR)));
+			}
 			String classFilePath= resourcePath.substring(separatorIndex + 1);
+			if (classFilePath.endsWith(TypeConstants.AUTOMATIC_MODULE_NAME))
+				return root;
 			String[] simpleNames = new Path(classFilePath).segments();
 			String[] pkgName;
 			int length = simpleNames.length-1;
@@ -106,7 +119,7 @@
 			}
 			IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName);
 			if (pkgFragment == null) {
-				pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName);
+				pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName, module);
 				this.packageHandles.put(pkgName, pkgFragment);
 			}
 			IClassFile classFile= pkgFragment.getClassFile(simpleNames[length]);
@@ -167,6 +180,21 @@
 	public IJavaElement createLambdaTypeElement(LambdaExpression expression, ICompilationUnit unit, HashSet existingElements, HashMap knownScopes) {
 		return createElement(expression.scope, expression.sourceStart(), unit, existingElements, knownScopes).getParent();
 	}
+	protected void resolveDuplicates(IJavaElement handle) {
+
+		// For anonymous source types, the occurrence count should be in the context
+		// of the enclosing type.
+		if (handle instanceof SourceType && ((SourceType) handle).isAnonymous()) {
+			Object key = handle.getParent().getAncestor(IJavaElement.TYPE);
+			int occurenceCount = this.localOccurrenceCounts.get(key);
+			if (occurenceCount == -1)
+				this.localOccurrenceCounts.put(key, 1);
+			else {
+				this.localOccurrenceCounts.put(key, ++occurenceCount);
+				((SourceType)handle).localOccurrenceCount = occurenceCount;
+			}
+		}
+	}
 	/**
 	 * Create handle by adding child to parent obtained by recursing into parent scopes.
 	 */
@@ -257,6 +285,7 @@
 				newElement = createElement(scope.parent, elementPosition, unit, existingElements, knownScopes);
 				break;
 		}
+		resolveDuplicates(newElement);
 		return newElement;
 	}
 	/**
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.java
index 67ee7d4..5a0b5c5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfArray.java
@@ -35,6 +35,7 @@
 		this.set = new Object[extraRoom][];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashSetOfArray result = (HashSetOfArray) super.clone();
 		result.elementSize = this.elementSize;
@@ -129,6 +130,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		Object[] element;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.java
index 5c7aacd..1148aeb 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashSetOfCharArrayArray.java
@@ -37,6 +37,7 @@
 		this.set = new char[extraRoom][][];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashSetOfCharArrayArray result = (HashSetOfCharArrayArray) super.clone();
 		result.elementSize = this.elementSize;
@@ -130,6 +131,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		for (int i = 0, length = this.set.length; i < length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java
index 0264893..f279886 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/HashtableOfArrayToObject.java
@@ -37,6 +37,7 @@
 		this.valueTable = new Object[extraRoom];
 	}
 
+	@Override
 	public Object clone() throws CloneNotSupportedException {
 		HashtableOfArrayToObject result = (HashtableOfArrayToObject) super.clone();
 		result.elementSize = this.elementSize;
@@ -181,6 +182,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer();
 		Object[] element;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.java
index 7514552..7765883 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ICacheEnumeration.java
@@ -28,13 +28,12 @@
  *
  * @see LRUCache
  */
-@SuppressWarnings("rawtypes")
-public interface ICacheEnumeration extends Enumeration {
+public interface ICacheEnumeration<K,V> extends Enumeration<K> {
 	/**
 	 * Returns the value of the previously accessed key in the enumeration.
 	 * Must be called after a call to nextElement().
 	 *
 	 * @return Value of current cache entry
 	 */
-	public Object getValue();
+	public V getValue();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.java
index ff30b73..c38d172 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttribute.java
@@ -53,6 +53,7 @@
 	/**
 	 * @see IInnerClassesAttribute#getInnerClassAttributesEntries()
 	 */
+	@Override
 	public IInnerClassesAttributeEntry[] getInnerClassAttributesEntries() {
 		return this.entries;
 	}
@@ -60,6 +61,7 @@
 	/**
 	 * @see IInnerClassesAttribute#getNumberOfClasses()
 	 */
+	@Override
 	public int getNumberOfClasses() {
 		return this.numberOfClasses;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.java
index aef9e66..1715cfe 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/InnerClassesAttributeEntry.java
@@ -64,6 +64,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getAccessFlags()
 	 */
+	@Override
 	public int getAccessFlags() {
 		return this.accessFlags;
 	}
@@ -71,6 +72,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getInnerClassName()
 	 */
+	@Override
 	public char[] getInnerClassName() {
 		return this.innerClassName;
 	}
@@ -78,6 +80,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getInnerClassNameIndex()
 	 */
+	@Override
 	public int getInnerClassNameIndex() {
 		return this.innerClassNameIndex;
 	}
@@ -85,6 +88,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getInnerName()
 	 */
+	@Override
 	public char[] getInnerName() {
 		return this.innerName;
 	}
@@ -92,6 +96,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getInnerNameIndex()
 	 */
+	@Override
 	public int getInnerNameIndex() {
 		return this.innerNameIndex;
 	}
@@ -99,6 +104,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getOuterClassName()
 	 */
+	@Override
 	public char[] getOuterClassName() {
 		return this.outerClassName;
 	}
@@ -106,6 +112,7 @@
 	/**
 	 * @see IInnerClassesAttributeEntry#getOuterClassNameIndex()
 	 */
+	@Override
 	public int getOuterClassNameIndex() {
 		return this.outerClassNameIndex;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.java
index f6883e2..503a604 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/JavaElementFinder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -48,6 +48,7 @@
 		this.owner = owner;
 	}
 
+	@Override
 	public void consumeAnnotation() {
 		if (!(this.element instanceof IAnnotatable)) return;
 		int size = this.types.size();
@@ -56,11 +57,13 @@
 		this.element = ((IAnnotatable) this.element).getAnnotation(annotationType.getElementName());
 	}
 
+	@Override
 	public void consumeField(char[] fieldName) {
 		if (!(this.element instanceof IType)) return;
 		this.element = ((IType) this.element).getField(new String(fieldName));
 	}
 
+	@Override
 	public void consumeFullyQualifiedName(char[] fullyQualifiedName) {
 		try {
 			this.element = this.project.findType(new String(CharOperation.replaceOnCopy(fullyQualifiedName, '/', '.')), this.owner);
@@ -69,6 +72,7 @@
 		}
 	}
 
+	@Override
 	public void consumeLocalType(char[] uniqueKey) {
 		if (this.element == null) return;
 		if (this.element instanceof BinaryType) {
@@ -92,11 +96,13 @@
 		}
 	}
 
+	@Override
 	public void consumeMemberType(char[] simpleTypeName) {
 		if (!(this.element instanceof IType)) return;
 		this.element = ((IType) this.element).getType(new String(simpleTypeName));
 	}
 
+	@Override
 	public void consumeMethod(char[] selector, char[] signature) {
 		if (!(this.element instanceof IType)) return;
 		String[] parameterTypes = Signature.getParameterTypes(new String(signature));
@@ -107,6 +113,7 @@
 			this.element = methods[0];
 	}
 
+	@Override
 	public void consumePackage(char[] pkgName) {
 		pkgName = CharOperation.replaceOnCopy(pkgName, '/', '.');
 		try {
@@ -116,10 +123,12 @@
 		}
 	}
 
+	@Override
 	public void consumeParser(BindingKeyParser parser) {
 		this.types.add(parser);
 	}
 
+	@Override
 	public void consumeSecondaryType(char[] simpleTypeName) {
 		if (this.element == null) return;
 		IOpenable openable = this.element.getOpenable();
@@ -127,6 +136,7 @@
 		this.element = ((ICompilationUnit) openable).getType(new String(simpleTypeName));
 	}
 
+	@Override
 	public void consumeTypeVariable(char[] position, char[] typeVariableName) {
 		if (this.element == null) return;
 		switch (this.element.getElementType()) {
@@ -139,6 +149,16 @@
 		}
 	}
 
+	@Override
+	public void consumeModule(char[] moduleName) {
+		try {
+			this.element = this.project.findModule(new String(moduleName), null);
+		} catch (JavaModelException e) {
+			this.exception = e;
+		}
+	}
+
+	@Override
 	public BindingKeyParser newParser() {
 		return new JavaElementFinder(this, this.project, this.owner);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.java
index 10e5ccd..5b80223 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyKind.java
@@ -39,68 +39,84 @@
 		super(key);
 	}
 
+	@Override
 	public void consumeBaseType(char[] baseTypeSig) {
 		this.flags |= F_TYPE;
 	}
 
+	@Override
 	public void consumeCapture(int position) {
 		this.flags |= F_CAPTURE;
 	}
 
+	@Override
 	public void consumeField(char[] fieldName) {
 		this.flags |= F_FIELD;
 	}
 
+	@Override
 	public void consumeLocalType(char[] uniqueKey) {
 		this.flags |= F_LOCAL;
 	}
 
+	@Override
 	public void consumeLocalVar(char[] varName, int occurrenceCount, int argumentPosition) {
 		this.flags |= F_LOCAL_VAR;
 	}
 
+	@Override
 	public void consumeMemberType(char[] simpleTypeName) {
 		this.flags |= F_MEMBER;
 	}
 
+	@Override
 	public void consumeMethod(char[] selector, char[] signature) {
 		this.flags |= F_METHOD;
 		if (selector.length == 0)
 			this.flags |= F_CONSTRUCTOR;
 	}
 
+	@Override
 	public void consumeParameterizedGenericMethod() {
 		this.flags |= F_PARAMETERIZED_METHOD;
 	}
 
+	@Override
 	public void consumeParameterizedType(char[] simpleTypeName, boolean isRaw) {
 		this.flags |= isRaw ? F_RAW_TYPE : F_PARAMETERIZED_TYPE;
 	}
 
+	@Override
 	public void consumeParser(BindingKeyParser parser) {
 		this.innerKeyKind = (KeyKind) parser;
 	}
 
+	@Override
 	public void consumeRawType() {
 		this.flags |= F_RAW_TYPE;
 	}
 
+	@Override
 	public void consumeTopLevelType() {
 		this.flags |= F_TYPE;
 	}
 
+	@Override
 	public void consumeTypeParameter(char[] typeParameterName) {
 		this.flags |= F_TYPE_PARAMETER;
 	}
 
+	@Override
 	public void consumeTypeWithCapture() {
 		this.flags = this.innerKeyKind.flags;
 	}
 
+	@Override
 	public void consumeWildCard(int kind) {
 		this.flags |= F_WILDCARD_TYPE;
 	}
 
+	@Override
 	public BindingKeyParser newParser() {
 		return new KeyKind(this);
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.java
index 9ac3cba..679384e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/KeyToSignature.java
@@ -60,15 +60,18 @@
 		this.asBinarySignature = asBinarySignature;
 	}
 
+	@Override
 	public void consumeArrayDimension(char[] brakets) {
 		this.signature.append(brakets);
 	}
 
+	@Override
 	public void consumeBaseType(char[] baseTypeSig) {
 		this.typeSigStart = this.signature.length();
 		this.signature.append(baseTypeSig);
 	}
 
+	@Override
 	public void consumeCapture(int position) {
 		this.signature.append('!');
 		this.signature.append(((KeyToSignature) this.arguments.get(0)).signature);
@@ -80,6 +83,7 @@
 		this.signature.append("!*"); // pretend a 'capture-of ?' //$NON-NLS-1$
 	}
 
+	@Override
 	public void consumeLocalType(char[] uniqueKey) {
 		this.signature = new StringBuffer();
 		// remove trailing semi-colon as it is added later in comsumeType()
@@ -89,6 +93,7 @@
 		this.signature.append(uniqueKey);
 	}
 
+	@Override
 	public void consumeMethod(char[] selector, char[] methodSignature) {
 		this.arguments = new ArrayList();
 		this.typeArguments = new ArrayList();
@@ -111,15 +116,18 @@
 		}
 	}
 
+	@Override
 	public void consumeMemberType(char[] simpleTypeName) {
 		this.signature.append('$');
 		this.signature.append(simpleTypeName);
 	}
 
+	@Override
 	public void consumePackage(char[] pkgName) {
 		this.signature.append(pkgName);
 	}
 
+	@Override
 	public void consumeParameterizedGenericMethod() {
 		this.typeArguments = this.arguments;
 		int typeParametersSize = this.arguments.size();
@@ -207,6 +215,7 @@
 		}
 	}
 
+	@Override
 	public void consumeParameterizedType(char[] simpleTypeName, boolean isRaw) {
 		if (simpleTypeName != null) {
 			// member type
@@ -225,16 +234,19 @@
 		}
 	}
 
+	@Override
 	public void consumeParser(BindingKeyParser parser) {
 		this.arguments.add(parser);
 	}
 
+	@Override
 	public void consumeField(char[] fieldName) {
 		if (this.kind == SIGNATURE) {
 			this.signature = ((KeyToSignature) this.arguments.get(0)).signature;
 		}
 	}
 
+	@Override
 	public void consumeException() {
 		int size = this.arguments.size();
 		if (size > 0) {
@@ -246,6 +258,7 @@
 		}
 	}
 
+	@Override
 	public void consumeFullyQualifiedName(char[] fullyQualifiedName) {
 		this.typeSigStart = this.signature.length();
 		this.signature.append('L');
@@ -254,6 +267,7 @@
 		this.signature.append(fullyQualifiedName);
 	}
 
+	@Override
 	public void consumeSecondaryType(char[] simpleTypeName) {
 		this.signature.append('~');
 		this.mainTypeStart = this.signature.lastIndexOf(this.asBinarySignature ? "/" : ".") + 1; //$NON-NLS-1$ //$NON-NLS-2$
@@ -270,6 +284,7 @@
 		this.signature.append(simpleTypeName);
 	}
 
+	@Override
 	public void consumeType() {
 		// remove main type if needed
 		if (this.mainTypeStart != -1) {
@@ -294,10 +309,12 @@
 		this.signature.append(';');
 	}
 
+	@Override
 	public void consumeTypeParameter(char[] typeParameterName) {
 		this.typeParameters.add(typeParameterName);
 	}
 
+	@Override
 	public void consumeTypeVariable(char[] position, char[] typeVariableName) {
 		this.signature = new StringBuffer();
 		this.signature.append('T');
@@ -305,6 +322,7 @@
 		this.signature.append(';');
 	}
 
+	@Override
 	public void consumeTypeWithCapture() {
 		KeyToSignature keyToSignature = (KeyToSignature) this.arguments.get(0);
 		this.signature = keyToSignature.signature;
@@ -313,6 +331,7 @@
 		this.thrownExceptions = keyToSignature.thrownExceptions;
 	}
 
+	@Override
 	public void consumeWildCard(int wildCardKind) {
 		// don't put generic type in signature
 		this.signature = new StringBuffer();
@@ -352,13 +371,12 @@
 		return result;
 	}
 
+	@Override
 	public BindingKeyParser newParser() {
 		return new KeyToSignature(this);
 	}
 
-	/* (non-Javadoc)
-	 * @see java.lang.Object#toString()
-	 */
+	@Override
 	public String toString() {
 		return this.signature.toString();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.java
index 0f6e13c..98bcfc5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LRUCache.java
@@ -13,6 +13,10 @@
 import java.text.NumberFormat;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.List;
+
+import org.aspectj.org.eclipse.jdt.internal.core.JavaElement;
+import org.aspectj.org.eclipse.jdt.internal.core.util.ToStringSorter.Pair;
 
 /**
  * The <code>LRUCache</code> is a hashtable that stores a finite number of elements.
@@ -29,8 +33,7 @@
  *
  * @see org.aspectj.org.eclipse.jdt.internal.core.util.ILRUCacheable
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
-public class LRUCache implements Cloneable {
+public class LRUCache<K, V> implements Cloneable {
 
 	/**
 	 * This type is used internally by the LRUCache to represent entries
@@ -40,17 +43,17 @@
 	 *
 	 * @see LRUCache
 	 */
-	protected static class LRUCacheEntry {
+	public static class LRUCacheEntry<K, V> {
 
 		/**
 		 * Hash table key
 		 */
-		public Object key;
+		public K key;
 
 		/**
 		 * Hash table value (an LRUCacheEntry object)
 		 */
-		public Object value;
+		public V value;
 
 		/**
 		 * Time value for queue sorting
@@ -65,18 +68,18 @@
 		/**
 		 * Previous entry in queue
 		 */
-		public LRUCacheEntry previous;
+		public LRUCacheEntry<K, V> previous;
 
 		/**
 		 * Next entry in queue
 		 */
-		public LRUCacheEntry next;
+		public LRUCacheEntry<K, V> next;
 
 		/**
 		 * Creates a new instance of the receiver with the provided values
 		 * for key, value, and space.
 		 */
-		public LRUCacheEntry (Object key, Object value, int space) {
+		public LRUCacheEntry (K key, V value, int space) {
 			this.key = key;
 			this.value = value;
 			this.space = space;
@@ -85,17 +88,17 @@
 		/**
 		 * Returns a String that represents the value of this object.
 		 */
+		@Override
 		public String toString() {
-
 			return "LRUCacheEntry [" + this.key + "-->" + this.value + "]"; //$NON-NLS-3$ //$NON-NLS-1$ //$NON-NLS-2$
 		}
 	}
-	
+
 	public class Stats {
 		private int[] counters = new int[20];
 		private long[] timestamps = new long[20];
 		private int counterIndex = -1;
-		
+
 		private void add(int counter) {
 			for (int i = 0; i <= this.counterIndex; i++) {
 				if (this.counters[i] == counter)
@@ -110,6 +113,7 @@
 			this.counters[this.counterIndex] = counter;
 			this.timestamps[this.counterIndex] = System.currentTimeMillis();
 		}
+
 		private String getAverageAge(long totalTime, int numberOfElements, long currentTime) {
 			if (numberOfElements == 0)
 				return "N/A"; //$NON-NLS-1$
@@ -156,6 +160,7 @@
 			buffer.append(" seconds"); //$NON-NLS-1$
 			return buffer.toString();
 		}
+
 		private long getTimestamps(int counter) {
 			for (int i = 0; i <= this.counterIndex; i++) {
 				if (this.counters[i] >= counter)
@@ -163,16 +168,17 @@
 			}
 			return -1;
 		}
+
 		public synchronized String printStats() {
 			int numberOfElements = LRUCache.this.currentSpace;
 			if (numberOfElements == 0) {
 				return "No elements in cache"; //$NON-NLS-1$
 			}
 			StringBuffer buffer = new StringBuffer();
-			
+
 			buffer.append("Number of elements in cache: "); //$NON-NLS-1$
 			buffer.append(numberOfElements);
-			
+
 			final int numberOfGroups = 5;
 			int numberOfElementsPerGroup = numberOfElements / numberOfGroups;
 			buffer.append("\n("); //$NON-NLS-1$
@@ -183,7 +189,7 @@
 			buffer.append("\n\nAverage age:"); //$NON-NLS-1$
 			int groupNumber = 1;
 			int elementCounter = 0;
-			LRUCacheEntry entry = LRUCache.this.entryQueueTail;
+			LRUCacheEntry<K, V> entry = LRUCache.this.entryQueueTail;
 			long currentTime = System.currentTimeMillis();
 			long accumulatedTime = 0;
 			while (entry != null) {
@@ -211,9 +217,10 @@
 			buffer.append(numberOfGroups);
 			buffer.append(" (youngest)\t: "); //$NON-NLS-1$
 			buffer.append(getAverageAge(accumulatedTime, elementCounter, currentTime));
-			
+
 			return buffer.toString();
 		}
+
 		private void removeCountersOlderThan(int counter) {
 			for (int i = 0; i <= this.counterIndex; i++) {
 				if (this.counters[i] >= counter) {
@@ -227,12 +234,15 @@
 				}
 			}
 		}
-		public Object getOldestElement() {
+
+		public K getOldestElement() {
 			return LRUCache.this.getOldestElement();
 		}
+
 		public long getOldestTimestamps() {
 			return getTimestamps(getOldestTimestampCounter());
 		}
+
 		public synchronized void snapshot() {
 			removeCountersOlderThan(getOldestTimestampCounter());
 			add(getNewestTimestampCounter());
@@ -257,50 +267,51 @@
 	/**
 	 * Hash table for fast random access to cache entries
 	 */
-	protected Hashtable entryTable;
+	protected Hashtable<K, LRUCacheEntry<K, V>> entryTable;
 
 	/**
 	 * Start of queue (most recently used entry)
 	 */
-	protected LRUCacheEntry entryQueue;
+	protected LRUCacheEntry<K, V> entryQueue;
 
 	/**
 	 * End of queue (least recently used entry)
 	 */
-	protected LRUCacheEntry entryQueueTail;
+	protected LRUCacheEntry<K, V> entryQueueTail;
 
 	/**
 	 * Default amount of space in the cache
 	 */
 	protected static final int DEFAULT_SPACELIMIT = 100;
+
 	/**
 	 * Creates a new cache.  Size of cache is defined by
 	 * <code>DEFAULT_SPACELIMIT</code>.
 	 */
 	public LRUCache() {
-
 		this(DEFAULT_SPACELIMIT);
 	}
+
 	/**
 	 * Creates a new cache.
 	 * @param size Size of Cache
 	 */
 	public LRUCache(int size) {
-
 		this.timestampCounter = this.currentSpace = 0;
 		this.entryQueue = this.entryQueueTail = null;
-		this.entryTable = new Hashtable(size);
+		this.entryTable = new Hashtable<>(size);
 		this.spaceLimit = size;
 	}
+
 	/**
 	 * Returns a new cache containing the same contents.
 	 *
 	 * @return New copy of object.
 	 */
-	public Object clone() {
-
-		LRUCache newCache = newInstance(this.spaceLimit);
-		LRUCacheEntry qEntry;
+	@Override
+	public LRUCache<K, V> clone() {
+		LRUCache<K, V> newCache = newInstance(this.spaceLimit);
+		LRUCacheEntry<K, V> qEntry;
 
 		/* Preserve order of entries by copying from oldest to newest */
 		qEntry = this.entryQueueTail;
@@ -310,60 +321,61 @@
 		}
 		return newCache;
 	}
+
 	public double fillingRatio() {
 		return (this.currentSpace) * 100.0 / this.spaceLimit;
 	}
+
 	/**
 	 * Flushes all entries from the cache.
 	 */
 	public void flush() {
-
 		this.currentSpace = 0;
-		LRUCacheEntry entry = this.entryQueueTail; // Remember last entry
-		this.entryTable = new Hashtable();  // Clear it out
+		LRUCacheEntry<K, V> entry = this.entryQueueTail; // Remember last entry
+		this.entryTable = new Hashtable<>();  // Clear it out
 		this.entryQueue = this.entryQueueTail = null;
 		while (entry != null) {  // send deletion notifications in LRU order
 			entry = entry.previous;
 		}
 	}
+
 	/**
 	 * Flushes the given entry from the cache.  Does nothing if entry does not
 	 * exist in cache.
 	 *
 	 * @param key Key of object to flush
 	 */
-	public void flush (Object key) {
-
-		LRUCacheEntry entry;
-
-		entry = (LRUCacheEntry) this.entryTable.get(key);
+	public void flush (K key) {
+		LRUCacheEntry<K, V> entry;
+		entry = this.entryTable.get(key);
 
 		/* If entry does not exist, return */
 		if (entry == null) return;
 
 		privateRemoveEntry (entry, false);
 	}
+
 	/*
 	 * Answers the existing key that is equals to the given key.
 	 * If the key is not in the cache, returns the given key
 	 */
-	public Object getKey(Object key) {
-		LRUCacheEntry entry = (LRUCacheEntry) this.entryTable.get(key);
+	public K getKey(K key) {
+		LRUCacheEntry<K, V> entry = this.entryTable.get(key);
 		if (entry == null) {
 			return key;
 		}
 		return entry.key;
 	}
+
 	/**
 	 * Answers the value in the cache at the given key.
 	 * If the value is not in the cache, returns null
 	 *
 	 * @param key Hash table key of object to retrieve
-	 * @return Retreived object, or null if object does not exist
+	 * @return Retrieved object, or null if object does not exist
 	 */
-	public Object get(Object key) {
-
-		LRUCacheEntry entry = (LRUCacheEntry) this.entryTable.get(key);
+	public V get(K key) {
+		LRUCacheEntry<K, V> entry = this.entryTable.get(key);
 		if (entry == null) {
 			return null;
 		}
@@ -371,64 +383,72 @@
 		updateTimestamp (entry);
 		return entry.value;
 	}
+
 	/**
 	 * Returns the amount of space that is current used in the cache.
 	 */
 	public int getCurrentSpace() {
 		return this.currentSpace;
 	}
+
 	/**
 	 * Returns the timestamps of the most recently used element in the cache.
 	 */
 	public int getNewestTimestampCounter() {
 		return this.entryQueue == null ? 0 : this.entryQueue.timestamp;
 	}
+
 	/**
 	 * Returns the timestamps of the least recently used element in the cache.
 	 */
 	public int getOldestTimestampCounter() {
 		return this.entryQueueTail == null ? 0 : this.entryQueueTail.timestamp;
 	}
+
 	/**
-	 * Returns the lest recently used element in the cache
+	 * Returns the lest recently used element in the cache, can return {@code null}
 	 */
-	public Object getOldestElement() {
+	public K getOldestElement() {
 		return this.entryQueueTail == null ? null : this.entryQueueTail.key;
 	}
-	
+
 	/**
 	 * Returns the maximum amount of space available in the cache.
 	 */
 	public int getSpaceLimit() {
 		return this.spaceLimit;
 	}
+
 	/**
 	 * Returns an Enumeration of the keys currently in the cache.
 	 */
-	public Enumeration keys() {
-
+	public Enumeration<K> keys() {
 		return this.entryTable.keys();
 	}
+
 	/**
 	 * Returns an enumeration that iterates over all the keys and values
 	 * currently in the cache.
 	 */
-	public ICacheEnumeration keysAndValues() {
-		return new ICacheEnumeration() {
+	public ICacheEnumeration<K, V> keysAndValues() {
+		return new ICacheEnumeration<K, V>() {
 
-			Enumeration values = LRUCache.this.entryTable.elements();
-			LRUCacheEntry entry;
+			Enumeration<LRUCacheEntry<K, V>> values = LRUCache.this.entryTable.elements();
+			LRUCacheEntry<K, V> entry;
 
+			@Override
 			public boolean hasMoreElements() {
 				return this.values.hasMoreElements();
 			}
 
-			public Object nextElement() {
-				this.entry = (LRUCacheEntry) this.values.nextElement();
+			@Override
+			public K nextElement() {
+				this.entry = this.values.nextElement();
 				return this.entry.key;
 			}
 
-			public Object getValue() {
+			@Override
+			public V getValue() {
 				if (this.entry == null) {
 					throw new java.util.NoSuchElementException();
 				}
@@ -436,6 +456,7 @@
 			}
 		};
 	}
+
 	/**
 	 * Ensures there is the specified amount of free space in the receiver,
 	 * by removing old entries if necessary.  Returns true if the requested space was
@@ -465,43 +486,43 @@
 		}
 		return true;
 	}
+
 	/**
 	 * Returns a new LRUCache instance
 	 */
-	protected LRUCache newInstance(int size) {
-		return new LRUCache(size);
+	protected LRUCache<K, V> newInstance(int size) {
+		return new LRUCache<>(size);
 	}
+
 	/**
 	 * Answers the value in the cache at the given key.
 	 * If the value is not in the cache, returns null
 	 *
 	 * This function does not modify timestamps.
 	 */
-	public Object peek(Object key) {
-
-		LRUCacheEntry entry = (LRUCacheEntry) this.entryTable.get(key);
+	public V peek(K key) {
+		LRUCacheEntry<K, V> entry = this.entryTable.get(key);
 		if (entry == null) {
 			return null;
 		}
 		return entry.value;
 	}
+
 	/**
 	 * Adds an entry for the given key/value/space.
 	 */
-	protected void privateAdd (Object key, Object value, int space) {
-
-		LRUCacheEntry entry;
-
-		entry = new LRUCacheEntry(key, value, space);
+	protected void privateAdd (K key, V value, int space) {
+		LRUCacheEntry<K, V> entry;
+		entry = new LRUCacheEntry<>(key, value, space);
 		privateAddEntry (entry, false);
 	}
+
 	/**
 	 * Adds the given entry from the receiver.
 	 * @param shuffle Indicates whether we are just shuffling the queue
 	 * (in which case, the entry table is not modified).
 	 */
-	protected void privateAddEntry (LRUCacheEntry entry, boolean shuffle) {
-
+	protected void privateAddEntry (LRUCacheEntry<K, V> entry, boolean shuffle) {
 		if (!shuffle) {
 			this.entryTable.put (entry.key, entry);
 			this.currentSpace += entry.space;
@@ -520,14 +541,14 @@
 
 		this.entryQueue = entry;
 	}
+
 	/**
 	 * Removes the entry from the entry queue.
 	 * @param shuffle indicates whether we are just shuffling the queue
 	 * (in which case, the entry table is not modified).
 	 */
-	protected void privateRemoveEntry (LRUCacheEntry entry, boolean shuffle) {
-
-		LRUCacheEntry previous, next;
+	protected void privateRemoveEntry (LRUCacheEntry<K, V> entry, boolean shuffle) {
+		LRUCacheEntry<K, V> previous, next;
 
 		previous = entry.previous;
 		next = entry.next;
@@ -551,6 +572,7 @@
 			next.previous = previous;
 		}
 	}
+
 	/**
 	 * Sets the value in the cache at the given key. Returns the value.
 	 *
@@ -558,14 +580,13 @@
 	 * @param value Value of object to add.
 	 * @return added value.
 	 */
-	public Object put(Object key, Object value) {
-
+	public V put(K key, V value) {
 		int newSpace, oldSpace, newTotal;
-		LRUCacheEntry entry;
+		LRUCacheEntry<K, V> entry;
 
 		/* Check whether there's an entry in the cache */
 		newSpace = spaceFor(value);
-		entry = (LRUCacheEntry) this.entryTable.get (key);
+		entry = this.entryTable.get (key);
 
 		if (entry != null) {
 
@@ -591,6 +612,7 @@
 		}
 		return value;
 	}
+
 	/**
 	 * Removes and returns the value in the cache for the given key.
 	 * If the key is not in the cache, returns null.
@@ -598,16 +620,16 @@
 	 * @param key Key of object to remove from cache.
 	 * @return Value removed from cache.
 	 */
-	public Object removeKey (Object key) {
-
-		LRUCacheEntry entry = (LRUCacheEntry) this.entryTable.get(key);
+	public V removeKey (K key) {
+		LRUCacheEntry<K, V> entry = this.entryTable.get(key);
 		if (entry == null) {
 			return null;
 		}
-		Object value = entry.value;
+		V value = entry.value;
 		privateRemoveEntry (entry, false);
 		return value;
 	}
+
 	/**
 	 * Sets the maximum amount of space that the cache can store
 	 *
@@ -619,21 +641,23 @@
 		}
 		this.spaceLimit = limit;
 	}
+
 	/**
 	 * Returns the space taken by the given value.
 	 */
-	protected int spaceFor (Object value) {
-
+	protected int spaceFor (V value) {
 		if (value instanceof ILRUCacheable) {
 			return ((ILRUCacheable) value).getCacheFootprint();
 		} else {
 			return 1;
 		}
 	}
+
 	/**
 	 * Returns a String that represents the value of this object.  This method
 	 * is for debugging purposes only.
 	 */
+	@Override
 	public String toString() {
 		return
 			toStringFillingRation("LRUCache") + //$NON-NLS-1$
@@ -646,23 +670,11 @@
 	 */
 	protected String toStringContents() {
 		StringBuffer result = new StringBuffer();
-		int length = this.entryTable.size();
-		Object[] unsortedKeys = new Object[length];
-		String[] unsortedToStrings = new String[length];
-		Enumeration e = keys();
-		for (int i = 0; i < length; i++) {
-			Object key = e.nextElement();
-			unsortedKeys[i] = key;
-			unsortedToStrings[i] =
-				(key instanceof org.aspectj.org.eclipse.jdt.internal.core.JavaElement) ?
-					((org.aspectj.org.eclipse.jdt.internal.core.JavaElement)key).getElementName() :
-					key.toString();
-		}
-		ToStringSorter sorter = new ToStringSorter();
-		sorter.sort(unsortedKeys, unsortedToStrings);
-		for (int i = 0; i < length; i++) {
-			String toString = sorter.sortedStrings[i];
-			Object value = get(sorter.sortedObjects[i]);
+		ToStringSorter<K> sorter = new ToStringSorter<>(o -> o instanceof JavaElement ? ((JavaElement) o).getElementName() : o.toString());
+		List<Pair<K>> sortedObjects = sorter.sort(this.entryTable.keySet());
+		for (Pair<K> pair : sortedObjects) {
+			String toString = pair.string;
+			V value = get(pair.object);
 			result.append(toString);
 			result.append(" -> "); //$NON-NLS-1$
 			result.append(value);
@@ -685,8 +697,7 @@
 	 * Updates the timestamp for the given entry, ensuring that the queue is
 	 * kept in correct order.  The entry must exist
 	 */
-	protected void updateTimestamp (LRUCacheEntry entry) {
-
+	protected void updateTimestamp (LRUCacheEntry<K, V> entry) {
 		entry.timestamp = this.timestampCounter++;
 		if (this.entryQueue != entry) {
 			privateRemoveEntry (entry, true);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.java
index d7cfd7e..0cb3eec 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LineNumberAttribute.java
@@ -56,6 +56,7 @@
 	/**
 	 * @see ILineNumberAttribute#getLineNumberTable()
 	 */
+	@Override
 	public int[][] getLineNumberTable() {
 		return this.lineNumberTable;
 	}
@@ -63,6 +64,7 @@
 	/**
 	 * @see ILineNumberAttribute#getLineNumberTableLength()
 	 */
+	@Override
 	public int getLineNumberTableLength() {
 		return this.lineNumberTableLength;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.java
index e08260a..eddcac9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableAttribute.java
@@ -55,6 +55,7 @@
 	/**
 	 * @see ILocalVariableAttribute#getLocalVariableTable()
 	 */
+	@Override
 	public ILocalVariableTableEntry[] getLocalVariableTable() {
 		return this.localVariableTable;
 	}
@@ -62,6 +63,7 @@
 	/**
 	 * @see ILocalVariableAttribute#getLocalVariableTableLength()
 	 */
+	@Override
 	public int getLocalVariableTableLength() {
 		return this.localVariableTableLength;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.java
index b7af138..3d147ac 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableReferenceInfo.java
@@ -43,6 +43,7 @@
 	/**
 	 * @see ILocalVariableReferenceInfo#getStartPC()
 	 */
+	@Override
 	public int getStartPC() {
 		return this.startPC;
 	}
@@ -50,6 +51,7 @@
 	/**
 	 * @see ILocalVariableReferenceInfo#getLength()
 	 */
+	@Override
 	public int getLength() {
 		return this.length;
 	}
@@ -57,6 +59,7 @@
 	/**
 	 * @see ILocalVariableReferenceInfo#getIndex()
 	 */
+	@Override
 	public int getIndex() {
 		return this.index;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.java
index e794306..226ffbc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTableEntry.java
@@ -61,6 +61,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getStartPC()
 	 */
+	@Override
 	public int getStartPC() {
 		return this.startPC;
 	}
@@ -68,6 +69,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getLength()
 	 */
+	@Override
 	public int getLength() {
 		return this.length;
 	}
@@ -75,6 +77,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getNameIndex()
 	 */
+	@Override
 	public int getNameIndex() {
 		return this.nameIndex;
 	}
@@ -82,6 +85,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getDescriptorIndex()
 	 */
+	@Override
 	public int getDescriptorIndex() {
 		return this.descriptorIndex;
 	}
@@ -89,6 +93,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getIndex()
 	 */
+	@Override
 	public int getIndex() {
 		return this.index;
 	}
@@ -96,6 +101,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getName()
 	 */
+	@Override
 	public char[] getName() {
 		return this.name;
 	}
@@ -103,6 +109,7 @@
 	/**
 	 * @see ILocalVariableTableEntry#getDescriptor()
 	 */
+	@Override
 	public char[] getDescriptor() {
 		return this.descriptor;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.java
index bc7572e..32f4777 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeAttribute.java
@@ -55,6 +55,7 @@
 	/**
 	 * @see ILocalVariableTypeTableAttribute#getLocalVariableTypeTable()
 	 */
+	@Override
 	public ILocalVariableTypeTableEntry[] getLocalVariableTypeTable() {
 		return this.localVariableTypeTableEntries;
 	}
@@ -62,6 +63,7 @@
 	/**
 	 * @see ILocalVariableTypeTableAttribute#getLocalVariableTypeTableLength()
 	 */
+	@Override
 	public int getLocalVariableTypeTableLength() {
 		return this.localVariableTypeTableLength;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.java
index 126551c..0e37cd9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/LocalVariableTypeTableEntry.java
@@ -61,6 +61,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getStartPC()
 	 */
+	@Override
 	public int getStartPC() {
 		return this.startPC;
 	}
@@ -68,6 +69,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getLength()
 	 */
+	@Override
 	public int getLength() {
 		return this.length;
 	}
@@ -75,6 +77,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getNameIndex()
 	 */
+	@Override
 	public int getNameIndex() {
 		return this.nameIndex;
 	}
@@ -82,6 +85,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getSignatureIndex()
 	 */
+	@Override
 	public int getSignatureIndex() {
 		return this.signatureIndex;
 	}
@@ -89,6 +93,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getIndex()
 	 */
+	@Override
 	public int getIndex() {
 		return this.index;
 	}
@@ -96,6 +101,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getName()
 	 */
+	@Override
 	public char[] getName() {
 		return this.name;
 	}
@@ -103,6 +109,7 @@
 	/**
 	 * @see ILocalVariableTypeTableEntry#getSignature()
 	 */
+	@Override
 	public char[] getSignature() {
 		return this.signature;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.java
index 9cdac45..678e57f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MementoTokenizer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -22,7 +22,9 @@
 	public static final String INITIALIZER = Character.toString(JavaElement.JEM_INITIALIZER);
 	public static final String COMPILATIONUNIT = Character.toString(JavaElement.JEM_COMPILATIONUNIT);
 	public static final String CLASSFILE = Character.toString(JavaElement.JEM_CLASSFILE);
+	public static final String MODULAR_CLASSFILE = Character.toString(JavaElement.JEM_MODULAR_CLASSFILE);
 	public static final String TYPE = Character.toString(JavaElement.JEM_TYPE);
+	public static final String MODULE = Character.toString(JavaElement.JEM_MODULE);
 	public static final String PACKAGEDECLARATION = Character.toString(JavaElement.JEM_PACKAGEDECLARATION);
 	public static final String IMPORTDECLARATION = Character.toString(JavaElement.JEM_IMPORTDECLARATION);
 	public static final String LOCALVARIABLE = Character.toString(JavaElement.JEM_LOCALVARIABLE);
@@ -90,8 +92,12 @@
 				return COMPILATIONUNIT;
 			case JavaElement.JEM_CLASSFILE:
 				return CLASSFILE;
+			case JavaElement.JEM_MODULAR_CLASSFILE:
+				return MODULAR_CLASSFILE;
 			case JavaElement.JEM_TYPE:
 				return TYPE;
+			case JavaElement.JEM_MODULE:
+				return MODULE;
 			case JavaElement.JEM_PACKAGEDECLARATION:
 				return PACKAGEDECLARATION;
 			case JavaElement.JEM_IMPORTDECLARATION:
@@ -109,6 +115,8 @@
 					if (buffer == null) buffer = new StringBuffer();
 					buffer.append(this.memento, start, this.index - start);
 					start = ++this.index;
+					if (this.memento[this.index] == JavaElement.JEM_MODULE)
+						return buffer.toString();
 					break;
 				case JavaElement.JEM_COUNT:
 				case JavaElement.JEM_JAVAPROJECT:
@@ -120,6 +128,7 @@
 				case JavaElement.JEM_COMPILATIONUNIT:
 				case JavaElement.JEM_CLASSFILE:
 				case JavaElement.JEM_TYPE:
+				case JavaElement.JEM_MODULE:
 				case JavaElement.JEM_PACKAGEDECLARATION:
 				case JavaElement.JEM_IMPORTDECLARATION:
 				case JavaElement.JEM_LOCALVARIABLE:
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.java
index 1467a17..b850cf9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -40,6 +40,7 @@
 	public static String element_nullName;
 	public static String element_nullType;
 	public static String element_illegalParent;
+	public static String element_moduleInfoNotSupported;
 	public static String javamodel_initialization;
 	public static String javamodel_initializing_delta_state;
 	public static String javamodel_building_after_upgrade;
@@ -186,6 +187,8 @@
 	public static String classpath_duplicateEntryExtraAttribute;
 	public static String classpath_deprecated_variable;
 	public static String classpath_invalidExternalAnnotationPath;
+	public static String classpath_testSourceRequiresSeparateOutputFolder;
+	public static String classpath_testOutputFolderMustBeSeparateFromMainOutputFolders;
 	public static String file_notFound;
 	public static String file_badFormat;
 	public static String path_nullPath;
@@ -212,6 +215,13 @@
 	public static String convention_package_nameWithBlanks;
 	public static String convention_package_consecutiveDotsName;
 	public static String convention_package_uppercaseName;
+	public static String convention_module_nullName;
+	public static String convention_module_emptyName;
+	public static String convention_module_dotName;
+	public static String convention_module_nameWithBlanks;
+	public static String convention_module_consecutiveDotsName;
+	public static String convention_module_uppercaseName;
+	public static String convention_module_javaName;
 	public static String dom_cannotDetail;
 	public static String dom_nullTypeParameter;
 	public static String dom_nullNameParameter;
@@ -323,6 +333,10 @@
 	public static String disassembler_extendedannotation_typepath_typeargument;
 	public static String disassembler_extendedannotation_typepath_innertype;
 	public static String disassembler_localvariabletargetheader;
+	public static String disassembler_module_version;
+	public static String disassembler_module_version_none;
+	public static String disassembler_modulepackagesattributeheader;
+	public static String disassembler_modulemainclassattributeheader;
 
 	public static String disassembler_runtimevisibleannotationsattributeheader;
 	public static String disassembler_runtimeinvisibleannotationsattributeheader;
@@ -386,7 +400,7 @@
 	public static String disassembler_frame_full_frame;
 	public static String disassembler_frame_same_frame;
 	public static String disassembler_frame_same_locals_1_stack_item;
-	public static String code_assist_internal_error;
+	public static String internal_error;
 	
 	public static String disassembler_method_type_ref_getfield;
 	public static String disassembler_method_type_ref_putfield;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.java
index ccff4fd..65ce893 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodInfo.java
@@ -134,6 +134,7 @@
 	/**
 	 * @see IMethodInfo#getAccessFlags()
 	 */
+	@Override
 	public int getAccessFlags() {
 		return this.accessFlags;
 	}
@@ -141,12 +142,14 @@
 	/**
 	 * @see IMethodInfo#getAttributeCount()
 	 */
+	@Override
 	public int getAttributeCount() {
 		return this.attributesCount;
 	}
 	/**
 	 * @see IMethodInfo#getAttributes()
 	 */
+	@Override
 	public IClassFileAttribute[] getAttributes() {
 		return this.attributes;
 	}
@@ -154,6 +157,7 @@
 	/**
 	 * @see IMethodInfo#getCodeAttribute()
 	 */
+	@Override
 	public ICodeAttribute getCodeAttribute() {
 		return this.codeAttribute;
 	}
@@ -161,6 +165,7 @@
 	/**
 	 * @see IMethodInfo#getDescriptor()
 	 */
+	@Override
 	public char[] getDescriptor() {
 		return this.descriptor;
 	}
@@ -168,6 +173,7 @@
 	/**
 	 * @see IMethodInfo#getDescriptorIndex()
 	 */
+	@Override
 	public int getDescriptorIndex() {
 		return this.descriptorIndex;
 	}
@@ -175,6 +181,7 @@
 	/**
 	 * @see IMethodInfo#getExceptionAttribute()
 	 */
+	@Override
 	public IExceptionAttribute getExceptionAttribute() {
 		return this.exceptionAttribute;
 	}
@@ -182,6 +189,7 @@
 	/**
 	 * @see IMethodInfo#getName()
 	 */
+	@Override
 	public char[] getName() {
 		return this.name;
 	}
@@ -189,6 +197,7 @@
 	/**
 	 * @see IMethodInfo#getNameIndex()
 	 */
+	@Override
 	public int getNameIndex() {
 		return this.nameIndex;
 	}
@@ -200,6 +209,7 @@
 	/**
 	 * @see IMethodInfo#isClinit()
 	 */
+	@Override
 	public boolean isClinit() {
 		return this.name[0] == '<' && this.name.length == 8; // Can only match <clinit>
 	}
@@ -207,6 +217,7 @@
 	/**
 	 * @see IMethodInfo#isConstructor()
 	 */
+	@Override
 	public boolean isConstructor() {
 		return this.name[0] == '<' && this.name.length == 6; // Can only match <init>
 	}
@@ -214,6 +225,7 @@
 	/**
 	 * @see IMethodInfo#isDeprecated()
 	 */
+	@Override
 	public boolean isDeprecated() {
 		return this.isDeprecated;
 	}
@@ -225,6 +237,7 @@
 	/**
 	 * @see IMethodInfo#isSynthetic()
 	 */
+	@Override
 	public boolean isSynthetic() {
 		return this.isSynthetic;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.java
index 7ed1c94..3973aa3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/MethodParametersAttribute.java
@@ -60,23 +60,17 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IMethodParametersAttribute#getMethodParameterLength()
-	 */
+	@Override
 	public int getMethodParameterLength() {
 		return this.numberOfEntries;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IMethodParametersAttribute#getParameterName(int)
-	 */
+	@Override
 	public char[] getParameterName(int i) {
 		return this.names[i];
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IMethodParametersAttribute#getAccessFlags(int)
-	 */
+	@Override
 	public short getAccessFlags(int i) {
 		return this.accessFlags[i];
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.java
new file mode 100644
index 0000000..1178620
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleAttribute.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry3;
+import org.aspectj.org.eclipse.jdt.core.util.IModuleAttribute;
+import org.aspectj.org.eclipse.jdt.core.util.IPackageVisibilityInfo;
+import org.aspectj.org.eclipse.jdt.core.util.IProvidesInfo;
+import org.aspectj.org.eclipse.jdt.core.util.IRequiresInfo;
+
+/**
+ * @since 3.14
+ */
+public class ModuleAttribute extends ClassFileAttribute implements IModuleAttribute {
+
+	static final IRequiresInfo[] NO_REQUIRES = new IRequiresInfo[0];
+	static final IPackageVisibilityInfo[] NO_PACKAGE_VISIBILITY_INFOS = new IPackageVisibilityInfo[0];
+	static final int[] NO_USES = new int[0];
+	static final IProvidesInfo[] NO_PROVIDES_INFOS = new IProvidesInfo[0];
+	private int moduleNameIndex;
+	private char[] moduleName;
+	private int moduleFlags;
+	private int moduleVersionIndex;
+	private char[] moduleVersionValue;
+	private int requiresCount;
+	private IRequiresInfo[] requiresInfo;
+	private int exportsCount;
+	private IPackageVisibilityInfo[] exportsInfo;
+	private int opensCount;
+	private IPackageVisibilityInfo[] opensInfo;
+	private int usesCount;
+	private int[] usesIndices;
+	private char[][] usesNames;
+	private int providesCount;
+	private IProvidesInfo[] providesInfo;
+
+	ModuleAttribute(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException {
+		super(classFileBytes, constantPool, offset);
+		int readOffset = 6; // skip attribute_name_index & attribute_length
+		this.moduleNameIndex = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.moduleNameIndex);
+		if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Module) {
+			throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+		}
+		this.moduleName = ((IConstantPoolEntry3) constantPoolEntry).getModuleName();
+		this.moduleFlags = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		this.moduleVersionIndex = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.moduleVersionIndex != 0) {
+			constantPoolEntry = constantPool.decodeEntry(this.moduleVersionIndex);
+			if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) {
+				throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+			}
+			this.moduleVersionValue = constantPoolEntry.getUtf8Value();
+		} else {
+			this.moduleVersionValue = CharOperation.NO_CHAR;
+		}
+
+		this.requiresCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.requiresCount != 0) {
+			this.requiresInfo = new RequiresInfo[this.requiresCount];
+			for (int i = 0; i < this.requiresCount; i++) {
+				this.requiresInfo [i] = new RequiresInfo(classFileBytes, constantPool, offset + readOffset);
+				readOffset += 6;
+			}
+		} else {
+			this.requiresInfo = NO_REQUIRES;
+		}
+
+		this.exportsCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.exportsCount != 0) {
+			this.exportsInfo = new PackageVisibilityInfo[this.exportsCount];
+			for (int i = 0; i < this.exportsCount; i++) {
+				this.exportsInfo [i] = new PackageVisibilityInfo(classFileBytes, constantPool, offset + readOffset);
+				readOffset += 6 + 2 * this.exportsInfo[i].getTargetsCount();
+			}
+		} else {
+			this.exportsInfo = NO_PACKAGE_VISIBILITY_INFOS;
+		}
+
+		this.opensCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.opensCount != 0) {
+			this.opensInfo = new PackageVisibilityInfo[this.opensCount];
+			for (int i = 0; i < this.opensCount; i++) {
+				this.opensInfo [i] = new PackageVisibilityInfo(classFileBytes, constantPool, offset + readOffset);
+				readOffset += 6 + 2 * this.opensInfo[i].getTargetsCount();
+			}
+		} else {
+			this.opensInfo = NO_PACKAGE_VISIBILITY_INFOS;
+		}
+
+		this.usesCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.usesCount != 0) {
+			this.usesIndices = new int[this.usesCount];
+			this.usesNames = new char[this.usesCount][];
+			for (int i = 0; i < this.usesCount; i++) {
+				this.usesIndices[i] = u2At(classFileBytes, readOffset, offset);
+				readOffset += 2;
+				constantPoolEntry = constantPool.decodeEntry(this.usesIndices[i]);
+				if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) {
+					throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+				}
+				this.usesNames[i] = constantPoolEntry.getClassInfoName();
+			}
+		} else {
+			this.usesIndices = NO_USES;
+			this.usesNames = CharOperation.NO_CHAR_CHAR;
+		}
+
+		this.providesCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.providesCount != 0) {
+			this.providesInfo = new ProvidesInfo[this.providesCount];
+			for (int i = 0; i < this.providesCount; i++) {
+				this.providesInfo[i] = new ProvidesInfo(classFileBytes, constantPool, offset + readOffset);
+				readOffset += 4 + 2 * this.providesInfo[i].getImplementationsCount();
+			}
+		} else {
+			this.providesInfo = NO_PROVIDES_INFOS;
+		}
+	}
+
+	@Override
+	public int getModuleNameIndex() {
+		return this.moduleNameIndex;
+	}
+
+	@Override
+	public char[] getModuleName() {
+		return this.moduleName;
+	}
+
+	@Override
+	public int getModuleFlags() {
+		return this.moduleFlags;
+	}
+
+	@Override
+	public int getModuleVersionIndex() {
+		return this.moduleVersionIndex;
+	}
+
+	@Override
+	public char[] getModuleVersionValue() {
+		return this.moduleVersionValue;
+	}
+
+	@Override
+	public int getRequiresCount() {
+		return this.requiresCount;
+	}
+
+	@Override
+	public IRequiresInfo[] getRequiresInfo() {
+		return this.requiresInfo;
+	}
+
+	@Override
+	public int getExportsCount() {
+		return this.exportsCount;
+	}
+
+	@Override
+	public IPackageVisibilityInfo[] getExportsInfo() {
+		return this.exportsInfo;
+	}
+
+	@Override
+	public int getOpensCount() {
+		return this.opensCount;
+	}
+
+	@Override
+	public IPackageVisibilityInfo[] getOpensInfo() {
+		return this.opensInfo;
+	}
+
+	@Override
+	public int getUsesCount() {
+		return this.usesCount;
+	}
+
+	@Override
+	public int[] getUsesIndices() {
+		return this.usesIndices;
+	}
+
+	@Override
+	public char[][] getUsesClassNames() {
+		return this.usesNames;
+	}
+
+	@Override
+	public int getProvidesCount() {
+		return this.providesCount;
+	}
+
+	@Override
+	public IProvidesInfo[] getProvidesInfo() {
+		return this.providesInfo;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.java
new file mode 100644
index 0000000..f7ee7b5
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleMainClassAttribute.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IModuleMainClassAttribute;
+
+/**
+ * Default implementation of IModuleMainClassAttribute
+ */
+public class ModuleMainClassAttribute extends ClassFileAttribute implements IModuleMainClassAttribute {
+
+	private final int mainClassIndex;
+	private final char[] mainClassName;
+
+	/**
+	 * Constructor for ModuleMainClassAttribute.
+	 * @param classFileBytes
+	 * @param constantPool
+	 * @param offset
+	 * @throws ClassFormatException
+	 */
+	public ModuleMainClassAttribute(	byte[] classFileBytes,	IConstantPool constantPool,	int offset)	throws ClassFormatException {
+		super(classFileBytes, constantPool, offset);
+		int readOffset = 6;
+		this.mainClassIndex = u2At(classFileBytes, readOffset, offset);
+		IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.mainClassIndex);
+		if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) {
+			throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+		}
+		this.mainClassName = constantPoolEntry.getClassInfoName();
+	}
+
+	@Override
+	public int getMainClassIndex() {
+		return this.mainClassIndex;
+	}
+
+	@Override
+	public char[] getMainClassName() {
+		return this.mainClassName;
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.java
new file mode 100644
index 0000000..ffdd4a4
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModulePackagesAttribute.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry3;
+import org.aspectj.org.eclipse.jdt.core.util.IModulePackagesAttribute;
+
+/**
+ * Default implementation of IModulePackagesAttribute
+ */
+public class ModulePackagesAttribute extends ClassFileAttribute implements IModulePackagesAttribute {
+
+	private int packagesCount;
+	private int[] packageIndices;
+	private char[][] packageNames;
+
+	/**
+	 * Constructor for ModulePackagesAttribute.
+	 * @param classFileBytes
+	 * @param constantPool
+	 * @param offset
+	 * @throws ClassFormatException
+	 */
+	public ModulePackagesAttribute(	byte[] classFileBytes,	IConstantPool constantPool,	int offset)	throws ClassFormatException {
+		super(classFileBytes, constantPool, offset);
+		int readOffset = 6;
+		final int length = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		this.packagesCount = length;
+		if (length != 0) {
+			this.packageIndices = new int[length];
+			this.packageNames = new char[length][0];
+			for (int i = 0; i < length; i++) {
+				this.packageIndices[i] = u2At(classFileBytes, readOffset, offset);
+				readOffset += 2;
+				IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.packageIndices[i]);
+				if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Package) {
+					throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+				}
+				char[] name = ((IConstantPoolEntry3) constantPoolEntry).getPackageName();
+				this.packageNames[i] = name != null ? name : CharOperation.NO_CHAR;
+
+			}
+		} else {
+			this.packageNames = CharOperation.NO_CHAR_CHAR;
+		}
+	}
+
+	@Override
+	public int getPackagesCount() {
+		return this.packagesCount;
+	}
+
+	@Override
+	public int[] getPackageIndices() {
+		return this.packageIndices;
+	}
+
+	@Override
+	public char[][] getPackageNames() {
+		return this.packageNames;
+	}
+}
\ No newline at end of file
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.java
new file mode 100644
index 0000000..e5c6e8c
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ModuleUtil.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.core.IJavaElement;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragment;
+import org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.aspectj.org.eclipse.jdt.internal.compiler.Compiler;
+import org.aspectj.org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ICompilerRequestor;
+import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer;
+import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
+import org.aspectj.org.eclipse.jdt.internal.core.BasicCompilationUnit;
+import org.aspectj.org.eclipse.jdt.internal.core.ClasspathEntry;
+import org.aspectj.org.eclipse.jdt.internal.core.CompilationGroup;
+import org.aspectj.org.eclipse.jdt.internal.core.builder.NameEnvironment;
+import org.aspectj.org.eclipse.jdt.internal.core.builder.ProblemFactory;
+
+public class ModuleUtil {
+
+	static class ModuleAccumulatorEnvironment extends NameEnvironment {
+		public ModuleAccumulatorEnvironment(IJavaProject javaProject) {
+			super(javaProject, CompilationGroup.MAIN);
+		}
+
+		Set<String> modules = new HashSet<>();
+		public String[] getModules() {
+			this.modules.remove(String.valueOf(TypeConstants.JAVA_BASE));
+			String[] mods = new String[this.modules.size()];
+			return this.modules.toArray(mods);
+		}
+
+		@Override
+		protected boolean isOnModulePath(ClasspathEntry entry) {
+			return true; // try to interpret all dependencies as modules from now on
+		}
+
+		@Override
+		public void cleanup() {
+			this.modules.clear();
+		}
+
+		@Override
+		public NameEnvironmentAnswer findType(char[][] compoundTypeName, char[] moduleName) {
+			NameEnvironmentAnswer answer = super.findType(compoundTypeName, moduleName);
+			if (answer != null && answer.moduleName() != null) {
+				this.modules.add(String.valueOf(answer.moduleName()));
+			}
+			return answer;
+		}
+
+		@Override
+		public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName, char[] moduleName) {
+			NameEnvironmentAnswer answer = super.findType(typeName, packageName, moduleName);
+			if (answer != null && answer.moduleName() != null) {
+				this.modules.add(String.valueOf(answer.moduleName()));
+			}
+			return answer;
+		}
+	}
+	private static Compiler newCompiler(ModuleAccumulatorEnvironment environment, IJavaProject javaProject) {
+		Map<String, String> projectOptions = javaProject.getOptions(true);
+		CompilerOptions compilerOptions = new CompilerOptions(projectOptions);
+		compilerOptions.performMethodsFullRecovery = true;
+		compilerOptions.performStatementsRecovery = true;
+		ICompilerRequestor requestor = new ICompilerRequestor() {
+			@Override
+			public void acceptResult(CompilationResult result) {
+				// Nothing to do here
+			}
+		};
+		Compiler newCompiler = new Compiler(
+			environment,
+			DefaultErrorHandlingPolicies.proceedWithAllProblems(),
+			compilerOptions,
+			requestor,
+			ProblemFactory.getProblemFactory(Locale.getDefault()));
+
+		return newCompiler;
+	}
+	public static String[] getReferencedModules(IJavaProject project) throws CoreException {
+
+		ModuleAccumulatorEnvironment environment = new ModuleAccumulatorEnvironment(project);
+		Compiler compiler = newCompiler(environment, project);
+		// First go over the binary roots and see if any of them are modules
+		List<String> required = new ArrayList<>();
+		Set<org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit> toCompile = new HashSet<>();
+		IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();
+		for (IPackageFragmentRoot root : roots) {
+			if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
+				IJavaElement[] children = root.getChildren();
+				for (IJavaElement child : children) {
+					if (child instanceof IPackageFragment) {
+						IPackageFragment fragment = (IPackageFragment) child;
+						if (fragment.isDefaultPackage()) continue;
+						ICompilationUnit[] units = fragment.getCompilationUnits();
+						if (units.length != 0) {
+							String pack = fragment.getElementName();
+							for (ICompilationUnit iUnit : units) {
+								org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit sourceFile = 
+										new BasicCompilationUnit(iUnit.getSource().toCharArray(),
+												CharOperation.splitOn('.', pack.toCharArray()),
+												iUnit.getPath().toOSString(),
+												iUnit);
+								toCompile.add(sourceFile);
+							}
+						}
+					}
+				}
+			}
+		}
+
+		org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit[] sources = new org.aspectj.org.eclipse.jdt.internal.compiler.env.ICompilationUnit[toCompile.size()];
+		toCompile.toArray(sources);
+		compiler.compile(sources);
+		String[] mods = environment.getModules();
+		for (String string : mods) {
+			required.add(string);
+		}
+		Collections.sort(required, new Comparator<String>() {
+			@Override
+			public int compare(String o1, String o2) {
+				return o1.compareTo(o2);
+			}
+		});
+		return required.toArray(new String[required.size()]);
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.java
new file mode 100644
index 0000000..3da5e11
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PackageVisibilityInfo.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry3;
+import org.aspectj.org.eclipse.jdt.core.util.IPackageVisibilityInfo;
+
+public class PackageVisibilityInfo extends ClassFileStruct implements IPackageVisibilityInfo {
+
+	private int index;
+	private char[] packageName;
+	private int flags;
+	private int targetsCount;
+	private int[] targetModuleIndices;
+	private char[][] targetModuleNames;
+
+	public PackageVisibilityInfo(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException {
+		int readOffset = 0;
+		this.index = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.index);
+		if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Package) {
+			throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+		}
+		char[] tmp = ((IConstantPoolEntry3) constantPoolEntry).getPackageName();
+		this.packageName = tmp != null ? tmp : CharOperation.NO_CHAR;
+
+		this.flags = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		this.targetsCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+
+		if (this.targetsCount != 0) {
+			this.targetModuleIndices = new int[this.targetsCount];
+			this.targetModuleNames = new char[this.targetsCount][];
+			for (int i = 0; i < this.targetsCount; i++) {
+				this.targetModuleIndices[i] = u2At(classFileBytes, readOffset, offset);
+				readOffset += 2;
+				constantPoolEntry = constantPool.decodeEntry(this.targetModuleIndices[i]);
+				if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Module) {
+					throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+				}
+				tmp = ((IConstantPoolEntry3) constantPoolEntry).getModuleName();
+				this.targetModuleNames[i] = tmp != null ? tmp : CharOperation.NO_CHAR;
+			}
+		} else {
+			this.targetModuleIndices = new int[0];
+			this.targetModuleNames = CharOperation.NO_CHAR_CHAR;
+		}
+	}
+	@Override
+	public int getIndex() {
+		return this.index;
+	}
+
+	@Override
+	public char[] getPackageName() {
+		return this.packageName;
+	}
+
+	@Override
+	public int getFlags() {
+		return this.flags;
+	}
+
+	@Override
+	public int getTargetsCount() {
+		return this.targetsCount;
+	}
+
+	@Override
+	public int[] getTargetModuleIndices() {
+		return this.targetModuleIndices;
+	}
+
+	@Override
+	public char[][] getTargetModuleNames() {
+		return this.targetModuleNames;
+	}
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.java
index 2a384ed..8c5b3d9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ParameterAnnotation.java
@@ -57,15 +57,13 @@
 	int sizeInBytes() {
 		return this.readOffset;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IParameterAnnotation#getAnnotations()
-	 */
+
+	@Override
 	public IAnnotation[] getAnnotations() {
 		return this.annotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IParameterAnnotation#getAnnotationsNumber()
-	 */
+
+	@Override
 	public int getAnnotationsNumber() {
 		return this.annotationsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.java
new file mode 100644
index 0000000..f5363d1
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ProvidesInfo.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IProvidesInfo;
+
+public class ProvidesInfo extends ClassFileStruct implements IProvidesInfo {
+	private int index;
+	private char[] serviceName;
+	private int implementationsCount;
+	private int[] implementationIndices;
+	private char[][] implementationNames;
+
+	public ProvidesInfo(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException {
+		int readOffset = 0;
+		this.index = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.index);
+		if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) {
+			throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+		}
+		this.serviceName = constantPoolEntry.getClassInfoName();
+		this.implementationsCount = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+
+		if (this.implementationsCount != 0) {
+			this.implementationIndices = new int[this.implementationsCount];
+			this.implementationNames = new char[this.implementationsCount][];
+			for (int i = 0; i < this.implementationsCount; i++) {
+				this.implementationIndices[i] = u2At(classFileBytes, readOffset, offset);
+				readOffset += 2;
+				constantPoolEntry = constantPool.decodeEntry(this.implementationIndices[i]);
+				if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) {
+					throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+				}
+				this.implementationNames[i] = constantPoolEntry.getClassInfoName();
+			}
+		}
+	}
+	@Override
+	public int getIndex() {
+		return this.index;
+	}
+
+	@Override
+	public char[] getServiceName() {
+		return this.serviceName;
+	}
+
+	@Override
+	public int getImplementationsCount() {
+		return this.implementationsCount;
+	}
+
+	@Override
+	public int[] getImplementationIndices() {
+		return this.implementationIndices;
+	}
+
+	@Override
+	public char[][] getImplementationNames() {
+		return this.implementationNames;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.java
index 5195bdc..8d27a11 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/PublicScanner.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2012 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -23,6 +23,9 @@
 
 public class PublicScanner implements IScanner, ITerminalSymbols {
 
+	@SuppressWarnings("deprecation")
+	private static final int InternalTokenNameIdentifier = TokenNameIdentifier;
+
 	//public int newIdentCount = 0;
 
 	/* APIs ares
@@ -441,9 +444,11 @@
 	System.arraycopy(this.source, this.startPosition, result, 0, length);
 	return result;
 }
+@Override
 public int getCurrentTokenEndPosition(){
 	return this.currentPosition - 1;
 }
+@Override
 public char[] getCurrentTokenSource() {
 	// Return the token REAL source (aka unicodes are precomputed)
 
@@ -515,6 +520,7 @@
 		return new String(this.source, this.startPosition + 1, this.currentPosition - this.startPosition - 2);
 	}
 }
+@Override
 public final char[] getRawTokenSource() {
 	int length = this.currentPosition - this.startPosition;
 	char[] tokenSource = new char[length];
@@ -529,6 +535,7 @@
 	return sourceEnd;
 }
 
+@Override
 public int getCurrentTokenStartPosition(){
 	return this.startPosition;
 }
@@ -540,6 +547,7 @@
  *
  * In case the given line number is inconsistent, answers -1.
  */
+@Override
 public final int getLineEnd(int lineNumber) {
 
 	if (this.lineEnds == null || this.linePtr == -1)
@@ -553,6 +561,7 @@
 	return this.lineEnds[lineNumber-1]; // next line start one character behind the lineEnd of the previous line
 }
 
+@Override
 public final int[] getLineEnds() {
 	//return a bounded copy of this.lineEnds
 	if (this.linePtr == -1) {
@@ -576,6 +585,7 @@
  * @param lineNumber int
  * @return int
  */
+@Override
 public final int getLineStart(int lineNumber) {
 
 	if (this.lineEnds == null || this.linePtr == -1)
@@ -1115,6 +1125,7 @@
 		return TokenNameERROR;
 	}
 }
+@Override
 public int getNextToken() throws InvalidInputException {
 	this.wasAcr = false;
 	if (this.diet) {
@@ -1851,6 +1862,7 @@
 	}
 	return null;
 }
+@Override
 public char[] getSource(){
 	return this.source;
 }
@@ -2679,6 +2691,7 @@
  * @param begin the given start position
  * @param end the given end position
  */
+@Override
 public void resetTo(int begin, int end) {
 	//reset the scanner to a given position where it may rescan again
 
@@ -2810,13 +2823,13 @@
 		//have a length which is <= 12...but there are lots of identifier with
 		//only one char....
 		if ((length = this.currentPosition - this.startPosition) == 1) {
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 		}
 		data = this.source;
 		index = this.startPosition;
 	} else {
 		if ((length = this.withoutUnicodePtr) == 1)
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 		data = this.withoutUnicodeBuffer;
 		index = 1;
 	}
@@ -2872,13 +2885,13 @@
 		//have a length which is <= 12...but there are lots of identifier with
 		//only one char....
 		if ((length = this.currentPosition - this.startPosition) == 1) {
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 		}
 		data = this.source;
 		index = this.startPosition;
 	} else {
 		if ((length = this.withoutUnicodePtr) == 1)
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 		data = this.withoutUnicodeBuffer;
 		index = 1;
 	}
@@ -2899,7 +2912,7 @@
 						&& (data[++index] == 't')) {
 							return TokenNameabstract;
 						} else {
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 						}
 				case 6: // assert
 					if ((data[++index] == 's')
@@ -2912,13 +2925,13 @@
 								return TokenNameassert;
 							} else {
 								this.useAssertAsAnIndentifier = true;
-								return TokenNameIdentifier;
+								return InternalTokenNameIdentifier;
 							}
 						} else {
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 						}
 				default:
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 		case 'b' : //boolean break byte
 			switch (length) {
@@ -2926,7 +2939,7 @@
 					if ((data[++index] == 'y') && (data[++index] == 't') && (data[++index] == 'e'))
 						return TokenNamebyte;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 5 :
 					if ((data[++index] == 'r')
 						&& (data[++index] == 'e')
@@ -2934,7 +2947,7 @@
 						&& (data[++index] == 'k'))
 						return TokenNamebreak;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 7 :
 					if ((data[++index] == 'o')
 						&& (data[++index] == 'o')
@@ -2944,9 +2957,9 @@
 						&& (data[++index] == 'n'))
 						return TokenNameboolean;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'c' : //case char catch const class continue
@@ -2956,18 +2969,18 @@
 						if ((data[++index] == 's') && (data[++index] == 'e'))
 							return TokenNamecase;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'h') && (data[++index] == 'a') && (data[++index] == 'r'))
 							return TokenNamechar;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 				case 5 :
 					if (data[++index] == 'a')
 						if ((data[++index] == 't') && (data[++index] == 'c') && (data[++index] == 'h'))
 							return TokenNamecatch;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if (data[index] == 'l')
 							if ((data[++index] == 'a')
@@ -2975,14 +2988,14 @@
 								&& (data[++index] == 's'))
 								return TokenNameclass;
 							else
-								return TokenNameIdentifier;
+								return InternalTokenNameIdentifier;
 						else if ((data[index] == 'o')
 							&& (data[++index] == 'n')
 							&& (data[++index] == 's')
 							&& (data[++index] == 't'))
 							return TokenNameconst; //const is not used in java ???????
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 				case 8 :
 					if ((data[++index] == 'o')
 						&& (data[++index] == 'n')
@@ -2993,9 +3006,9 @@
 						&& (data[++index] == 'e'))
 						return TokenNamecontinue;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'd' : //default do double
@@ -3004,7 +3017,7 @@
 					if ((data[++index] == 'o'))
 						return TokenNamedo;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 6 :
 					if ((data[++index] == 'o')
 						&& (data[++index] == 'u')
@@ -3013,7 +3026,7 @@
 						&& (data[++index] == 'e'))
 						return TokenNamedouble;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 7 :
 					if ((data[++index] == 'e')
 						&& (data[++index] == 'f')
@@ -3023,9 +3036,9 @@
 						&& (data[++index] == 't'))
 						return TokenNamedefault;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 		case 'e' : //else extends
 			switch (length) {
@@ -3034,7 +3047,7 @@
 						if ((data[++index] == 's') && (data[++index] == 'e')) {
 							return TokenNameelse;
 						} else {
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 						}
 					} else if ((data[index] == 'n')
 							&& (data[++index] == 'u')
@@ -3043,10 +3056,10 @@
 							return TokenNameenum;
 						} else {
 							this.useEnumAsAnIndentifier = true;
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 						}
 					}
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 				case 7 :
 					if ((data[++index] == 'x')
 						&& (data[++index] == 't')
@@ -3056,9 +3069,9 @@
 						&& (data[++index] == 's'))
 						return TokenNameextends;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'f' : //final finally float for false
@@ -3067,7 +3080,7 @@
 					if ((data[++index] == 'o') && (data[++index] == 'r'))
 						return TokenNamefor;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 5 :
 					if (data[++index] == 'i')
 						if ((data[++index] == 'n')
@@ -3075,7 +3088,7 @@
 							&& (data[++index] == 'l')) {
 							return TokenNamefinal;
 						} else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if (data[index] == 'l')
 							if ((data[++index] == 'o')
@@ -3083,7 +3096,7 @@
 								&& (data[++index] == 't'))
 								return TokenNamefloat;
 							else
-								return TokenNameIdentifier;
+								return InternalTokenNameIdentifier;
 						else
 							if ((data[index] == 'a')
 								&& (data[++index] == 'l')
@@ -3091,7 +3104,7 @@
 								&& (data[++index] == 'e'))
 								return TokenNamefalse;
 							else
-								return TokenNameIdentifier;
+								return InternalTokenNameIdentifier;
 				case 7 :
 					if ((data[++index] == 'i')
 						&& (data[++index] == 'n')
@@ -3101,10 +3114,10 @@
 						&& (data[++index] == 'y'))
 						return TokenNamefinally;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 		case 'g' : //goto
 			if (length == 4) {
@@ -3114,7 +3127,7 @@
 					return TokenNamegoto;
 				}
 			} //no goto in java are allowed, so why java removes this keyword ???
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 
 		case 'i' : //if implements import instanceof int interface
 			switch (length) {
@@ -3122,12 +3135,12 @@
 					if (data[++index] == 'f')
 						return TokenNameif;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 3 :
 					if ((data[++index] == 'n') && (data[++index] == 't'))
 						return TokenNameint;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 6 :
 					if ((data[++index] == 'm')
 						&& (data[++index] == 'p')
@@ -3136,7 +3149,7 @@
 						&& (data[++index] == 't'))
 						return TokenNameimport;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 9 :
 					if ((data[++index] == 'n')
 						&& (data[++index] == 't')
@@ -3148,7 +3161,7 @@
 						&& (data[++index] == 'e'))
 						return TokenNameinterface;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 10 :
 					if (data[++index] == 'm')
 						if ((data[++index] == 'p')
@@ -3161,7 +3174,7 @@
 							&& (data[++index] == 's'))
 							return TokenNameimplements;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'n')
 							&& (data[++index] == 's')
@@ -3174,10 +3187,10 @@
 							&& (data[++index] == 'f'))
 							return TokenNameinstanceof;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'l' : //long
@@ -3188,7 +3201,7 @@
 					return TokenNamelong;
 				}
 			}
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 
 		case 'n' : //native new null
 			switch (length) {
@@ -3196,12 +3209,12 @@
 					if ((data[++index] == 'e') && (data[++index] == 'w'))
 						return TokenNamenew;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 4 :
 					if ((data[++index] == 'u') && (data[++index] == 'l') && (data[++index] == 'l'))
 						return TokenNamenull;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 6 :
 					if ((data[++index] == 'a')
 						&& (data[++index] == 't')
@@ -3210,9 +3223,9 @@
 						&& (data[++index] == 'e')) {
 						return TokenNamenative;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'p' : //package private protected public
@@ -3225,7 +3238,7 @@
 						&& (data[++index] == 'c')) {
 						return TokenNamepublic;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 7 :
 					if (data[++index] == 'a')
 						if ((data[++index] == 'c')
@@ -3235,7 +3248,7 @@
 							&& (data[++index] == 'e'))
 							return TokenNamepackage;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'r')
 							&& (data[++index] == 'i')
@@ -3245,7 +3258,7 @@
 							&& (data[++index] == 'e')) {
 							return TokenNameprivate;
 						} else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 				case 9 :
 					if ((data[++index] == 'r')
 						&& (data[++index] == 'o')
@@ -3257,10 +3270,10 @@
 						&& (data[++index] == 'd')) {
 						return TokenNameprotected;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'r' : //return
@@ -3273,7 +3286,7 @@
 					return TokenNamereturn;
 				}
 			}
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 
 		case 's' : //short static super switch synchronized strictfp
 			switch (length) {
@@ -3282,7 +3295,7 @@
 						if ((data[++index] == 'o') && (data[++index] == 'r') && (data[++index] == 't'))
 							return TokenNameshort;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'u')
 							&& (data[++index] == 'p')
@@ -3290,7 +3303,7 @@
 							&& (data[++index] == 'r'))
 							return TokenNamesuper;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 
 				case 6 :
 					if (data[++index] == 't')
@@ -3300,7 +3313,7 @@
 							&& (data[++index] == 'c')) {
 							return TokenNamestatic;
 						} else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'w')
 							&& (data[++index] == 'i')
@@ -3309,7 +3322,7 @@
 							&& (data[++index] == 'h'))
 							return TokenNameswitch;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 				case 8 :
 					if ((data[++index] == 't')
 						&& (data[++index] == 'r')
@@ -3320,7 +3333,7 @@
 						&& (data[++index] == 'p'))
 						return TokenNamestrictfp;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 12 :
 					if ((data[++index] == 'y')
 						&& (data[++index] == 'n')
@@ -3335,9 +3348,9 @@
 						&& (data[++index] == 'd')) {
 						return TokenNamesynchronized;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 't' : //try throw throws transient this true
@@ -3346,18 +3359,18 @@
 					if ((data[++index] == 'r') && (data[++index] == 'y'))
 						return TokenNametry;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 4 :
 					if (data[++index] == 'h')
 						if ((data[++index] == 'i') && (data[++index] == 's'))
 							return TokenNamethis;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 					else
 						if ((data[index] == 'r') && (data[++index] == 'u') && (data[++index] == 'e'))
 							return TokenNametrue;
 						else
-							return TokenNameIdentifier;
+							return InternalTokenNameIdentifier;
 				case 5 :
 					if ((data[++index] == 'h')
 						&& (data[++index] == 'r')
@@ -3365,7 +3378,7 @@
 						&& (data[++index] == 'w'))
 						return TokenNamethrow;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 6 :
 					if ((data[++index] == 'h')
 						&& (data[++index] == 'r')
@@ -3374,7 +3387,7 @@
 						&& (data[++index] == 's'))
 						return TokenNamethrows;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 9 :
 					if ((data[++index] == 'r')
 						&& (data[++index] == 'a')
@@ -3386,10 +3399,10 @@
 						&& (data[++index] == 't')) {
 						return TokenNametransient;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'v' : //void volatile
@@ -3398,7 +3411,7 @@
 					if ((data[++index] == 'o') && (data[++index] == 'i') && (data[++index] == 'd'))
 						return TokenNamevoid;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 				case 8 :
 					if ((data[++index] == 'o')
 						&& (data[++index] == 'l')
@@ -3409,10 +3422,10 @@
 						&& (data[++index] == 'e')) {
 						return TokenNamevolatile;
 					} else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		case 'w' : //while widefp
@@ -3424,17 +3437,17 @@
 						&& (data[++index] == 'e'))
 						return TokenNamewhile;
 					else
-						return TokenNameIdentifier;
+						return InternalTokenNameIdentifier;
 					//case 6:if ( (data[++index] =='i') && (data[++index]=='d') && (data[++index]=='e') && (data[++index]=='f')&& (data[++index]=='p'))
 					//return TokenNamewidefp ;
 					//else
 					//return TokenNameIdentifier;
 				default :
-					return TokenNameIdentifier;
+					return InternalTokenNameIdentifier;
 			}
 
 		default :
-			return TokenNameIdentifier;
+			return InternalTokenNameIdentifier;
 	}
 }
 
@@ -3747,9 +3760,11 @@
  * @param position int
  * @return int
  */
+@Override
 public final int getLineNumber(int position) {
 	return Util.getLineNumber(position, this.lineEnds, 0, this.linePtr);
 }
+@Override
 public final void setSource(char[] sourceString){
 	//the source-buffer is set to sourceString
 
@@ -3791,6 +3806,7 @@
 public final void setSource(CompilationResult compilationResult) {
 	setSource(null, compilationResult);
 }
+@Override
 public String toString() {
 	if (this.startPosition == this.eofPosition)
 		return "EOF\n\n" + new String(this.source); //$NON-NLS-1$
@@ -3822,7 +3838,7 @@
 }
 public String toStringAction(int act) {
 	switch (act) {
-		case TokenNameIdentifier :
+		case InternalTokenNameIdentifier :
 			return "Identifier(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
 		case TokenNameabstract :
 			return "abstract"; //$NON-NLS-1$
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.java
new file mode 100644
index 0000000..308633e
--- /dev/null
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RequiresInfo.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2017 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.org.eclipse.jdt.internal.core.util;
+
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
+import org.aspectj.org.eclipse.jdt.core.util.ClassFormatException;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPool;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolConstant;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry;
+import org.aspectj.org.eclipse.jdt.core.util.IConstantPoolEntry3;
+import org.aspectj.org.eclipse.jdt.core.util.IRequiresInfo;
+
+public class RequiresInfo extends ClassFileStruct implements IRequiresInfo {
+
+	private int index;
+	private char[] moduleName;
+	private int flags;
+	private int versionIndex;
+	private char[] versionName;
+
+	public RequiresInfo(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException{
+		int readOffset = 0;
+		this.index = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(this.index);
+		if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Module) {
+			throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+		}
+		this.moduleName = ((IConstantPoolEntry3) constantPoolEntry).getModuleName();
+		this.flags = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		this.versionIndex = u2At(classFileBytes, readOffset, offset);
+		readOffset += 2;
+		if (this.versionIndex != 0) {
+			constantPoolEntry = constantPool.decodeEntry(this.versionIndex);
+			if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) {
+				throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY);
+			}
+			this.versionName = constantPoolEntry.getUtf8Value();
+		} else {
+			this.versionName = CharOperation.NO_CHAR;
+		}
+	}
+	@Override
+	public int getRequiresIndex() {
+		return this.index;
+	}
+
+	@Override
+	public char[] getRequiresModuleName() {
+		return this.moduleName;
+	}
+
+	@Override
+	public int getRequiresFlags() {
+		return this.flags;
+	}
+
+	@Override
+	public int getRequiresVersionIndex() {
+		return this.versionIndex;
+	}
+
+	@Override
+	public char[] getRequiresVersionValue() {
+		return this.versionName;
+	}
+
+}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.java
index 44da2ca..89635a1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ResourceCompilationUnit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -24,10 +24,10 @@
 	private char[] contents;
 	private char[] fileName;
 	private char[] mainTypeName;
-
-	public ResourceCompilationUnit(IFile file) {
+	private char[] module;
+	public ResourceCompilationUnit(IFile file, char[] mod) {
 		this.file = file;
-
+		this.module = mod;
 		String f = file.getFullPath().toString();
 		this.fileName = f.toCharArray();
 		int start = f.lastIndexOf("/") + 1; //$NON-NLS-1$
@@ -41,6 +41,7 @@
 		this.mainTypeName = f.substring(start, end).toCharArray();
 	}
 
+	@Override
 	public char[] getContents() {
 		if (this.contents != null)
 			return this.contents;   // answer the cached source
@@ -72,4 +73,9 @@
 	public boolean ignoreOptionalProblems() {
 		return false;
 	}
+
+	@Override
+	public char[] getModuleName() {
+		return this.module;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.java
index cb99ebb..f2c4df4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleAnnotationsAttribute.java
@@ -54,15 +54,12 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleAnnotations#getAnnotations()
-	 */
+	@Override
 	public IAnnotation[] getAnnotations() {
 		return this.annotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleAnnotations#getAnnotationsNumber()
-	 */
+
+	@Override
 	public int getAnnotationsNumber() {
 		return this.annotationsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.java
index 681b0ae..c023fa1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleParameterAnnotationsAttribute.java
@@ -53,15 +53,13 @@
 			this.parameterAnnotations = NO_ENTRIES;
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleParameterAnnotations#getAnnotations()
-	 */
+
+	@Override
 	public IParameterAnnotation[] getParameterAnnotations() {
 		return this.parameterAnnotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleParameterAnnotations#getParametersNumber()
-	 */
+
+	@Override
 	public int getParametersNumber() {
 		return this.parametersNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.java
index 869c6b0..b759374 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeInvisibleTypeAnnotationsAttribute.java
@@ -57,15 +57,12 @@
 		}
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleTypeAnnotationsAttribute.getExtendedAnnotations()
-	 */
+	@Override
 	public IExtendedAnnotation[] getExtendedAnnotations() {
 		return this.extendedAnnotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeInvisibleTypeAnnotationsAttribute.getExtendedAnnotationsNumber()
-	 */
+
+	@Override
 	public int getExtendedAnnotationsNumber() {
 		return this.extendedAnnotationsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.java
index 21ac668..ce0ba1c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleAnnotationsAttribute.java
@@ -53,15 +53,13 @@
 			this.annotations = NO_ENTRIES;
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleAnnotations#getAnnotations()
-	 */
+
+	@Override
 	public IAnnotation[] getAnnotations() {
 		return this.annotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleAnnotations#getAnnotationsNumber()
-	 */
+
+	@Override
 	public int getAnnotationsNumber() {
 		return this.annotationsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.java
index b5aa0d3..732d82a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleParameterAnnotationsAttribute.java
@@ -53,15 +53,13 @@
 			this.parameterAnnotations = NO_ENTRIES;
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleParameterAnnotations#getAnnotations()
-	 */
+
+	@Override
 	public IParameterAnnotation[] getParameterAnnotations() {
 		return this.parameterAnnotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleParameterAnnotations#getParametersNumber()
-	 */
+
+	@Override
 	public int getParametersNumber() {
 		return this.parametersNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.java
index 31b78d8..2a6ff1e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/RuntimeVisibleTypeAnnotationsAttribute.java
@@ -54,15 +54,13 @@
 			this.extendedAnnotations = NO_ENTRIES;
 		}
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleTypeAnnotationsAttribute.getExtendedAnnotations()
-	 */
+
+	@Override
 	public IExtendedAnnotation[] getExtendedAnnotations() {
 		return this.extendedAnnotations;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.IRuntimeVisibleTypeAnnotationsAttribute.getExtendedAnnotationsNumber()
-	 */
+
+	@Override
 	public int getExtendedAnnotationsNumber() {
 		return this.extendedAnnotationsNumber;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.java
index ed5ac84..9b95bd1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SignatureAttribute.java
@@ -34,15 +34,13 @@
 		}
 		this.signature = constantPoolEntry.getUtf8Value();
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.ISignatureAttribute#getSignatureIndex()
-	 */
+
+	@Override
 	public int getSignatureIndex() {
 		return this.signatureIndex;
 	}
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.core.util.ISignatureAttribute#getSignature()
-	 */
+
+	@Override
 	public char[] getSignature() {
 		return this.signature;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.java
index 4f7da5c..f2ac7e8 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SimpleDocument.java
@@ -31,324 +31,238 @@
 		this.buffer = new StringBuffer(source);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getChar(int)
-	 */
+	@Override
 	public char getChar(int offset) {
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLength()
-	 */
+	@Override
 	public int getLength() {
 		return this.buffer.length();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#get()
-	 */
+	@Override
 	public String get() {
 		return this.buffer.toString();
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#get(int, int)
-	 */
+	@Override
 	public String get(int offset, int length) {
 		return this.buffer.substring(offset, offset + length);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#set(java.lang.String)
-	 */
+	@Override
 	public void set(String text) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#replace(int, int, java.lang.String)
-	 */
+	@Override
 	public void replace(int offset, int length, String text) {
 
 		this.buffer.replace(offset, offset + length, text);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addDocumentListener(org.eclipse.jface.text.IDocumentListener)
-	 */
+	@Override
 	public void addDocumentListener(IDocumentListener listener) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removeDocumentListener(org.eclipse.jface.text.IDocumentListener)
-	 */
+	@Override
 	public void removeDocumentListener(IDocumentListener listener) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addPrenotifiedDocumentListener(org.eclipse.jface.text.IDocumentListener)
-	 */
+	@Override
 	public void addPrenotifiedDocumentListener(IDocumentListener documentAdapter) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removePrenotifiedDocumentListener(org.eclipse.jface.text.IDocumentListener)
-	 */
+	@Override
 	public void removePrenotifiedDocumentListener(IDocumentListener documentAdapter) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addPositionCategory(java.lang.String)
-	 */
+	@Override
 	public void addPositionCategory(String category) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removePositionCategory(java.lang.String)
-	 */
+	@Override
 	public void removePositionCategory(String category) {
 			// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getPositionCategories()
-	 */
+	@Override
 	public String[] getPositionCategories() {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#containsPositionCategory(java.lang.String)
-	 */
+	@Override
 	public boolean containsPositionCategory(String category) {
 		// defining interface method
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addPosition(org.eclipse.jface.text.Position)
-	 */
+	@Override
 	public void addPosition(Position position) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removePosition(org.eclipse.jface.text.Position)
-	 */
+	@Override
 	public void removePosition(Position position) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addPosition(java.lang.String, org.eclipse.jface.text.Position)
-	 */
+	@Override
 	public void addPosition(String category, Position position) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removePosition(java.lang.String, org.eclipse.jface.text.Position)
-	 */
+	@Override
 	public void removePosition(String category, Position position) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getPositions(java.lang.String)
-	 */
+	@Override
 	public Position[] getPositions(String category) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#containsPosition(java.lang.String, int, int)
-	 */
+	@Override
 	public boolean containsPosition(String category, int offset, int length) {
 		// defining interface method
 		return false;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#computeIndexInCategory(java.lang.String, int)
-	 */
+	@Override
 	public int computeIndexInCategory(String category, int offset) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addPositionUpdater(org.eclipse.jface.text.IPositionUpdater)
-	 */
+	@Override
 	public void addPositionUpdater(IPositionUpdater updater) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removePositionUpdater(org.eclipse.jface.text.IPositionUpdater)
-	 */
+	@Override
 	public void removePositionUpdater(IPositionUpdater updater) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#insertPositionUpdater(org.eclipse.jface.text.IPositionUpdater, int)
-	 */
+	@Override
 	public void insertPositionUpdater(IPositionUpdater updater, int index) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getPositionUpdaters()
-	 */
+	@Override
 	public IPositionUpdater[] getPositionUpdaters() {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLegalContentTypes()
-	 */
+	@Override
 	public String[] getLegalContentTypes() {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getContentType(int)
-	 */
+	@Override
 	public String getContentType(int offset) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getPartition(int)
-	 */
+	@Override
 	public ITypedRegion getPartition(int offset) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#computePartitioning(int, int)
-	 */
+	@Override
 	public ITypedRegion[] computePartitioning(int offset, int length) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#addDocumentPartitioningListener(org.eclipse.jface.text.IDocumentPartitioningListener)
-	 */
+	@Override
 	public void addDocumentPartitioningListener(IDocumentPartitioningListener listener) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#removeDocumentPartitioningListener(org.eclipse.jface.text.IDocumentPartitioningListener)
-	 */
+	@Override
 	public void removeDocumentPartitioningListener(IDocumentPartitioningListener listener) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#setDocumentPartitioner(org.eclipse.jface.text.IDocumentPartitioner)
-	 */
+	@Override
 	public void setDocumentPartitioner(IDocumentPartitioner partitioner) {
 		// defining interface method
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getDocumentPartitioner()
-	 */
+	@Override
 	public IDocumentPartitioner getDocumentPartitioner() {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineLength(int)
-	 */
+	@Override
 	public int getLineLength(int line) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineOfOffset(int)
-	 */
+	@Override
 	public int getLineOfOffset(int offset) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineOffset(int)
-	 */
+	@Override
 	public int getLineOffset(int line) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineInformation(int)
-	 */
+	@Override
 	public IRegion getLineInformation(int line) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineInformationOfOffset(int)
-	 */
+	@Override
 	public IRegion getLineInformationOfOffset(int offset) {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getNumberOfLines()
-	 */
+	@Override
 	public int getNumberOfLines() {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getNumberOfLines(int, int)
-	 */
+	@Override
 	public int getNumberOfLines(int offset, int length) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#computeNumberOfLines(java.lang.String)
-	 */
+	@Override
 	public int computeNumberOfLines(String text) {
 		// defining interface method
 		return 0;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLegalLineDelimiters()
-	 */
+	@Override
 	public String[] getLegalLineDelimiters() {
 		// defining interface method
 		return null;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.text.IDocument#getLineDelimiter(int)
-	 */
+	@Override
 	public String getLineDelimiter(int line) {
 		// defining interface method
 		return null;
@@ -358,6 +272,7 @@
 	 * @see org.eclipse.jface.text.IDocument#search(int, java.lang.String, boolean, boolean, boolean)
 	 * @deprecated
 	 */
+	@Override
 	public int search(
 		int startOffset,
 		String findString,
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.java
index 52d8d5f..d527764 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/SourceFileAttribute.java
@@ -49,6 +49,7 @@
 	/**
 	 * @see ISourceAttribute#getSourceFileIndex()
 	 */
+	@Override
 	public int getSourceFileIndex() {
 		return this.sourceFileIndex;
 	}
@@ -56,6 +57,7 @@
 	/**
 	 * @see ISourceAttribute#getSourceFileName()
 	 */
+	@Override
 	public char[] getSourceFileName() {
 		return this.sourceFileName;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.java
index 96c0593..fe78148 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapAttribute.java
@@ -66,10 +66,12 @@
 		}
 	}
 
+	@Override
 	public int getNumberOfEntries() {
 		return this.numberOfEntries;
 	}
 
+	@Override
 	public IStackMapFrame[] getStackMapFrame() {
 		return this.frames;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.java
index 49e8a16..719b7dd 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapFrame.java
@@ -149,21 +149,27 @@
 	int sizeInBytes() {
 		return this.readOffset;
 	}
+	@Override
 	public int getFrameType() {
 		return this.frameType;
 	}
+	@Override
 	public IVerificationTypeInfo[] getLocals() {
 		return this.locals;
 	}
+	@Override
 	public int getNumberOfLocals() {
 		return this.numberOfLocals;
 	}
+	@Override
 	public int getNumberOfStackItems() {
 		return this.numberOfStackItems;
 	}
+	@Override
 	public int getOffsetDelta() {
 		return this.offsetDelta;
 	}
+	@Override
 	public IVerificationTypeInfo[] getStackItems() {
 		return this.stackItems;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.java
index 1e0a2cb..3752f08 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/StackMapTableAttribute.java
@@ -66,10 +66,12 @@
 		}
 	}
 
+	@Override
 	public int getNumberOfEntries() {
 		return this.numberOfEntries;
 	}
 
+	@Override
 	public IStackMapFrame[] getStackMapFrame() {
 		return this.frames;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.java
index 84043af..44fd92c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/ToStringSorter.java
@@ -10,66 +10,48 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.core.util;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Function;
+
 /**
  * The SortOperation takes a collection of objects and returns
  * a sorted collection of these objects. The sorting of these
  * objects is based on their toString(). They are sorted in
  * alphabetical order.
  */
-public class ToStringSorter {
-	Object[] sortedObjects;
-	String[] sortedStrings;
-/**
- *  Returns true if stringTwo is 'greater than' stringOne
- *  This is the 'ordering' method of the sort operation.
- */
-public boolean compare(String stringOne, String stringTwo) {
-	return stringOne.compareTo(stringTwo) < 0;
-}
-/**
- *  Sort the objects in sorted collection and return that collection.
- */
-private void quickSort(int left, int right) {
-	int originalLeft = left;
-	int originalRight = right;
-	int midIndex =  left + (right - left) / 2;
-	String midToString = this.sortedStrings[midIndex];
+public class ToStringSorter <T> {
+	private final Function<T, String> toString;
 
-	do {
-		while (compare(this.sortedStrings[left], midToString))
-			left++;
-		while (compare(midToString, this.sortedStrings[right]))
-			right--;
-		if (left <= right) {
-			Object tmp = this.sortedObjects[left];
-			this.sortedObjects[left] = this.sortedObjects[right];
-			this.sortedObjects[right] = tmp;
-			String tmpToString = this.sortedStrings[left];
-			this.sortedStrings[left] = this.sortedStrings[right];
-			this.sortedStrings[right] = tmpToString;
-			left++;
-			right--;
+	public ToStringSorter(Function<T, String> toString) {
+		this.toString = toString;
+	}
+
+	static class Pair<T> implements Comparable<Pair<T>> {
+		final T object;
+		final String string;
+		public Pair(T k, String s) {
+			this.object = k;
+			this.string = s;
 		}
-	} while (left <= right);
 
-	if (originalLeft < right)
-		quickSort(originalLeft, right);
-	if (left < originalRight)
-		quickSort(left, originalRight);
-}
-/**
- *  Return a new sorted collection from this unsorted collection.
- *  Sort using quick sort.
- */
-public void sort(Object[] unSortedObjects, String[] unsortedStrings) {
-	int size = unSortedObjects.length;
-	this.sortedObjects = new Object[size];
-	this.sortedStrings = new String[size];
+		@Override
+		public int compareTo(Pair<T> other) {
+			return this.string.compareTo(other.string);
+		}
+	}
 
-	//copy the array so can return a new sorted collection
-	System.arraycopy(unSortedObjects, 0, this.sortedObjects, 0, size);
-	System.arraycopy(unsortedStrings, 0, this.sortedStrings, 0, size);
-	if (size > 1)
-		quickSort(0, size - 1);
-}
+	/**
+	 *  Return a new sorted collection from this unsorted collection.
+	 */
+	public List<Pair<T>> sort(Collection<T> unSorted) {
+		int size = unSorted.size();
+		//copy the list so can return a new sorted collection
+		List<Pair <T>> sortedObjects = new ArrayList<>(size);
+		unSorted.forEach(k -> sortedObjects.add(new Pair<>(k, this.toString.apply(k))));
+		Collections.sort(sortedObjects);
+		return sortedObjects;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Util.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Util.java
index 36a47b0..71b4cee 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Util.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/Util.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -43,9 +43,11 @@
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AnnotationMethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Argument;
-import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnionTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.IntersectionCastTypeReference;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.MethodDeclaration;
 import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.UnionTypeReference;
+import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
 import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
 import org.aspectj.org.eclipse.jdt.internal.compiler.env.ClassSignature;
@@ -771,15 +773,23 @@
 		if (pkgEnd == -1)
 			return null;
 		IPackageFragment pkg = getPackageFragment(slashSeparatedFileName, pkgEnd, -1/*no jar separator for .java files*/);
-		if (pkg == null) return null;
-		int start;
-		ICompilationUnit cu = pkg.getCompilationUnit(new String(slashSeparatedFileName, start =  pkgEnd+1, slashSeparatedFileName.length - start));
-		if (workingCopyOwner != null) {
-			ICompilationUnit workingCopy = cu.findWorkingCopy(workingCopyOwner);
-			if (workingCopy != null)
-				return workingCopy;
+		if (pkg != null) {
+			int start;
+			ICompilationUnit cu = pkg.getCompilationUnit(new String(slashSeparatedFileName, start =  pkgEnd+1, slashSeparatedFileName.length - start));
+			if (workingCopyOwner != null) {
+				ICompilationUnit workingCopy = cu.findWorkingCopy(workingCopyOwner);
+				if (workingCopy != null)
+					return workingCopy;
+			}
+			return cu;
 		}
-		return cu;
+		IWorkspaceRoot wsRoot = ResourcesPlugin.getWorkspace().getRoot();
+		IFile file = wsRoot.getFile(new Path(String.valueOf(fileName)));
+		if (file.exists()) {
+			// this approach works if file exists but is not on the project's build path:
+			return JavaCore.createCompilationUnitFrom(file);
+		}
+		return null;
 	}
 
 	/**
@@ -845,13 +855,17 @@
 						}
 					}
 					if (path != null) {
-						jar = JavaModelManager.getJavaModelManager().getZipFile(path);
-						for (Enumeration e= jar.entries(); e.hasMoreElements();) {
-							ZipEntry member= (ZipEntry) e.nextElement();
-							String entryName= member.getName();
-							if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(entryName)) {
-								reader = ClassFileReader.read(jar, entryName);
-								break;
+						if (JavaModelManager.isJrt(path)) {
+							return ClassFileConstants.JDK9;
+						} else {
+							jar = JavaModelManager.getJavaModelManager().getZipFile(path);
+							for (Enumeration e= jar.entries(); e.hasMoreElements();) {
+								ZipEntry member= (ZipEntry) e.nextElement();
+								String entryName= member.getName();
+								if (org.aspectj.org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(entryName)) {
+									reader = ClassFileReader.read(jar, entryName);
+									break;
+								}
 							}
 						}
 					}
@@ -1867,7 +1881,7 @@
 	}
 
 	public static void log(Throwable e) {
-		log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, Messages.code_assist_internal_error, e));
+		log(new Status(IStatus.ERROR, JavaCore.PLUGIN_ID, Messages.internal_error, e));
 	}
 
 	public static ClassFileReader newClassFileReader(IResource resource) throws CoreException, ClassFormatException, IOException {
@@ -2327,6 +2341,7 @@
 		IJavaElement[] copy = new IJavaElement[len];
 		System.arraycopy(elements, 0, copy, 0, len);
 		sort(copy, new Comparer() {
+			@Override
 			public int compare(Object a, Object b) {
 				return ((JavaElement) a).toStringWithAncestors().compareTo(((JavaElement) b).toStringWithAncestors());
 			}
@@ -2691,14 +2706,13 @@
 			// special treatment for union type reference
 			UnionTypeReference unionTypeReference = (UnionTypeReference) type;
 			TypeReference[] typeReferences = unionTypeReference.typeReferences;
-			int length = typeReferences.length;
-			String[] typeSignatures = new String[length];
-			for(int i = 0; i < length; i++) {
-				char[][] compoundName = typeReferences[i].getParameterizedTypeName();
-				char[] typeName = CharOperation.concatWith(compoundName, '.');
-				typeSignatures[i] = Signature.createTypeSignature(typeName, false/*don't resolve*/);
-			}
+			String[] typeSignatures = typeSignatures(typeReferences);
 			signature = Signature.createIntersectionTypeSignature(typeSignatures);
+		} else if (type instanceof IntersectionCastTypeReference) {
+			IntersectionCastTypeReference intersection = (IntersectionCastTypeReference) type;
+			TypeReference[] typeReferences = intersection.typeReferences;
+			String[] typeSignatures = typeSignatures(typeReferences);
+			signature = Signature.createUnionTypeSignature(typeSignatures);
 		} else {
 			char[][] compoundName = type.getParameterizedTypeName();
 			char[] typeName =CharOperation.concatWith(compoundName, '.');
@@ -2706,7 +2720,17 @@
 		}
 		return signature;
 	}
-
+	
+	private static String[] typeSignatures(TypeReference[] types) {
+		int length = types.length;
+		String[] typeSignatures = new String[length];
+		for(int i = 0; i < length; i++) {
+			char[][] compoundName = types[i].getParameterizedTypeName();
+			char[] typeName = CharOperation.concatWith(compoundName, '.');
+			typeSignatures[i] = Signature.createTypeSignature(typeName, false/*don't resolve*/);
+		}
+		return typeSignatures;
+	}
 	/**
 	 * Asserts that the given method signature is valid.
 	 */
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.java
index 4e1d3d3..0c2937d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/VerificationInfo.java
@@ -50,18 +50,22 @@
 		}
 	}
 
+	@Override
 	public int getTag() {
 		return this.tag;
 	}
 
+	@Override
 	public int getOffset() {
 		return this.offset;
 	}
 
+	@Override
 	public int getConstantPoolIndex() {
 		return this.constantPoolIndex;
 	}
 
+	@Override
 	public char[] getClassTypeName() {
 		return this.classTypeName;
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.java
index 66cbfb0..9155c00 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSet.java
@@ -24,6 +24,7 @@
 			super(referent, queue);
 			this.hashCode = referent.hashCode();
 		}
+		@Override
 		public boolean equals(Object obj) {
 			if (!(obj instanceof HashableWeakReference)) return false;
 			Object referent = get();
@@ -31,9 +32,11 @@
 			if (referent == null) return other == null;
 			return referent.equals(other);
 		}
+		@Override
 		public int hashCode() {
 			return this.hashCode;
 		}
+		@Override
 		public String toString() {
 			Object referent = get();
 			if (referent == null) return "[hashCode=" + this.hashCode + "] <referent was garbage collected>"; //$NON-NLS-1$  //$NON-NLS-2$
@@ -200,6 +203,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer("{"); //$NON-NLS-1$
 		for (int i = 0, length = this.values.length; i < length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.java
index 511b3e4..e310d4e 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/WeakHashSetOfCharArray.java
@@ -26,6 +26,7 @@
 			super(referent, queue);
 			this.hashCode = CharOperation.hashCode(referent);
 		}
+		@Override
 		public boolean equals(Object obj) {
 			if (!(obj instanceof HashableWeakReference)) return false;
 			char[] referent = (char[]) get();
@@ -33,9 +34,11 @@
 			if (referent == null) return other == null;
 			return CharOperation.equals(referent, other);
 		}
+		@Override
 		public int hashCode() {
 			return this.hashCode;
 		}
+		@Override
 		public String toString() {
 			char[] referent = (char[]) get();
 			if (referent == null) return "[hashCode=" + this.hashCode + "] <referent was garbage collected>"; //$NON-NLS-1$  //$NON-NLS-2$
@@ -202,6 +205,7 @@
 		return this.elementSize;
 	}
 
+	@Override
 	public String toString() {
 		StringBuffer buffer = new StringBuffer("{"); //$NON-NLS-1$
 		for (int i = 0, length = this.values.length; i < length; i++) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
index 724696c..7cf3f28 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/core/util/messages.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2000, 2015 IBM Corporation and others.
+# Copyright (c) 2000, 2018 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -32,6 +32,7 @@
 element_nullName = Name cannot be null
 element_nullType = Type cannot be null
 element_illegalParent = Illegal parent argument
+element_moduleInfoNotSupported=module-info.class is not supported by method IPackageFragment.getClassFile(String).
 
 ### java model operations
 operation_needElements = Operation requires one or more elements
@@ -182,6 +183,8 @@
 classpath_duplicateEntryExtraAttribute = Duplicate extra attribute: ''{0}'' in classpath entry ''{1}'' for project ''{2}''
 classpath_deprecated_variable = Classpath variable ''{0}'' in project ''{1}'' is deprecated: {2}
 classpath_invalidExternalAnnotationPath = Invalid external annotation path: ''{0}'' in project ''{1}'', for classpath entry ''{2}''
+classpath_testSourceRequiresSeparateOutputFolder=Test source folder ''{0}'' in project ''{1}'' must have a separate output folder
+classpath_testOutputFolderMustBeSeparateFromMainOutputFolders=Test source folder ''{0}'' in project ''{1}'' must have an output folder that is not also used for main sources
 
 ### miscellaneous
 buffer_closed=Buffer is closed
@@ -193,6 +196,7 @@
 savedState_jobName = Processing Java changes since last activation
 refreshing_external_folders = Refreshing external folders
 synchronizing_projects_job = Synchronizing projects
+internal_error=Unexpected internal error
 
 ## java model initialization
 javamodel_initialization = Initializing Java tooling
@@ -224,6 +228,13 @@
 convention_package_nameWithBlanks = A package name must not start or end with a blank
 convention_package_consecutiveDotsName = A package name must not contain two consecutive dots
 convention_package_uppercaseName = By convention, package names usually start with a lowercase letter
+convention_module_nullName = A module name must not be null
+convention_module_emptyName = A module name must not be empty
+convention_module_dotName = A module name cannot start or end with a dot
+convention_module_nameWithBlanks = A module name must not start or end with a blank
+convention_module_consecutiveDotsName = A module name must not contain consecutive dots
+convention_module_uppercaseName = By convention, module names usually start with a lowercase letter
+convention_module_javaName = 'java' is reserved for system modules
 
 ### DOM
 dom_cannotDetail = Unable to generate detailed source indexes
@@ -378,6 +389,10 @@
 disassembler_extendedannotation_typepath_innertype=INNER_TYPE
 disassembler_extendedannotation_typepath_wildcard=WILDCARD
 disassembler_extendedannotation_typepath_typeargument=TYPE_ARGUMENT({0})
+disassembler_module_version=// Version: {0}
+disassembler_module_version_none=<none>
+disassembler_modulepackagesattributeheader = Module packages:
+disassembler_modulemainclassattributeheader=Module main class:
 
 ### classfileformat decoding
 classfileformat_versiondetails =\ (version {0} : {1}.{2}, {3})
@@ -431,4 +446,3 @@
 
 ### Eclipse Java Core completion messages.
 engine_completing = Computing proposals...
-code_assist_internal_error=Code assist internal error
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.java
index 50fa837..f753809 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetAllocationExpression.java
@@ -52,6 +52,7 @@
 public CodeSnippetAllocationExpression(EvaluationContext evaluationContext) {
 	this.evaluationContext = evaluationContext;
 }
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, 	boolean valueRequired) {
 	int pc = codeStream.position;
 	MethodBinding codegenBinding = this.binding.original();
@@ -125,12 +126,15 @@
  * types, since by the time we reach them, we might not yet know their
  * exact need.
  */
+@Override
 public void manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) {
 	// not supported yet
 }
+@Override
 public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) {
 	// do nothing
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Propagate the type checking to the arguments, and check if the constructor is defined.
 	this.constant = Constant.NotAConstant;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.java
index 94b9b96..b62cac3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetClassFile.java
@@ -51,7 +51,7 @@
 	 * @param creatingProblemType <CODE>boolean</CODE>
 	 */
 	this.referenceBinding = aType;
-	initByteArrays();
+	initByteArrays(aType.methods().length + aType.fields().length);
 	// generate the magic numbers inside the header
 	this.header[this.headerOffset++] = (byte) (0xCAFEBABEL >> 24);
 	this.header[this.headerOffset++] = (byte) (0xCAFEBABEL >> 16);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.java
index e509d15..c014cd5 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetCompiler.java
@@ -53,9 +53,7 @@
 		// fully parse only the code snippet compilation unit
 	}
 
-	/* (non-Javadoc)
-	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.Compiler#initializeParser()
-	 */
+	@Override
 	public void initializeParser() {
 		this.parser =
 			new CodeSnippetParser(
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.java
index 2f96feb..9c3b943 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEnvironment.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -37,6 +37,7 @@
 /**
  * @see INameEnvironment#findType(char[][])
  */
+@Override
 public NameEnvironmentAnswer findType(char[][] compoundTypeName) {
 	NameEnvironmentAnswer result = this.env.findType(compoundTypeName);
 	if (result != null) {
@@ -70,6 +71,7 @@
 /**
  * @see INameEnvironment#findType(char[], char[][])
  */
+@Override
 public NameEnvironmentAnswer findType(char[] typeName, char[][] packageName) {
 	NameEnvironmentAnswer result = this.env.findType(typeName, packageName);
 	if (result != null) {
@@ -80,9 +82,11 @@
 /**
  * @see INameEnvironment#isPackage(char[][], char[])
  */
+@Override
 public boolean isPackage(char[][] parentPackageName, char[] packageName) {
 	return this.env.isPackage(parentPackageName, packageName);
 }
+@Override
 public void cleanup() {
 	this.env.cleanup();
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.java
index 68f487d..7a61036 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetEvaluator.java
@@ -55,6 +55,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected void addEvaluationResultForCompilationProblem(Map<char[], EvaluationResult> resultsByIDs, CategorizedProblem problem, char[] cuSource) {
 	CodeSnippetToCuMapper sourceMapper = getMapper();
 	int pbLineNumber = problem.getSourceLineNumber();
@@ -104,12 +105,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected char[] getClassName() {
 	return CharOperation.concat(CODE_SNIPPET_CLASS_NAME_PREFIX, Integer.toString(EvaluationContext.CODE_SNIPPET_COUNTER + 1).toCharArray());
 }
 /**
  * @see Evaluator
  */
+@Override
 Compiler getCompiler(ICompilerRequestor compilerRequestor) {
 	Compiler compiler = null;
 	if (!DEVELOPMENT_MODE) {
@@ -199,6 +202,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected char[] getSource() {
 	return getMapper().cuSource;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.java
index b4bac68..537969d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetFieldReference.java
@@ -42,6 +42,7 @@
 	super(source, pos);
 	this.evaluationContext = evaluationContext;
 }
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	FieldBinding codegenBinding = this.binding.original();
 	if (codegenBinding.canBeSeenBy(this.actualReceiverType, this, currentScope)) {
@@ -79,6 +80,7 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -128,6 +130,7 @@
 	codeStream.recordPositionsFrom(pc, this.sourceStart);
 }
 
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	boolean isStatic;
 	FieldBinding codegenBinding = this.binding.original();
@@ -212,6 +215,7 @@
 		codeStream.generateEmulatedWriteAccessForField(codegenBinding);
 	}
 }
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	boolean isStatic;
 	FieldBinding codegenBinding = this.binding.original();
@@ -277,11 +281,13 @@
 /*
  * No need to emulate access to protected fields since not implicitly accessed
  */
+@Override
 public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess){
 	// The private access will be managed through the code generation
 
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) != 0) return;
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Answer the signature type of the field.
 	// constants are propaged when the field is final
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
index 9cdea1b..a327401 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetMessageSend.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -58,10 +58,11 @@
  * @param codeStream org.aspectj.org.eclipse.jdt.internal.compiler.codegen.CodeStream
  * @param valueRequired boolean
  */
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	MethodBinding codegenBinding = this.binding.original();
-	if (codegenBinding.canBeSeenBy(this.actualReceiverType, this, currentScope)) {
+	if (codegenBinding.canBeSeenBy(this.actualReceiverType.original(), this, currentScope)) {
 		// generate receiver/enclosing instance access
 		boolean isStatic = codegenBinding.isStatic();
 		// outer access ?
@@ -175,6 +176,7 @@
 	}
 	codeStream.recordPositionsFrom(pc, (int)(this.nameSourcePosition >>> 32)); // highlight selector
 }
+@Override
 public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) {
 
 	if ((flowInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) == 0) {
@@ -191,6 +193,7 @@
 		}
 	}
 }
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	// Answer the signature return type
 	// Base type promotion
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.java
index aa2d600..0e120b9 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetParser.java
@@ -40,6 +40,7 @@
 	this.reportOnlyOneSyntaxError = true;
 	this.javadocParser.checkDocComment = false;
 }
+@Override
 protected void classInstanceCreation(boolean alwaysQualified) {
 	// ClassInstanceCreationExpression ::= 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt
 
@@ -86,6 +87,7 @@
 		this.astLengthPtr--;
 	}
 }
+@Override
 protected void consumeClassInstanceCreationExpressionWithTypeArguments() {
 	// ClassInstanceCreationExpression ::= 'new' TypeArguments ClassType '(' ArgumentListopt ')' ClassBodyopt
 	AllocationExpression alloc;
@@ -139,11 +141,13 @@
 		}
 	}
 }
+@Override
 protected void consumeClassDeclaration() {
 	super.consumeClassDeclaration();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeClassHeaderName1() {
 	// ClassHeaderName ::= Modifiersopt 'class' 'Identifier'
 	TypeDeclaration typeDecl;
@@ -192,21 +196,25 @@
 	typeDecl.javadoc = this.javadoc;
 	this.javadoc = null;
 }
+@Override
 protected void consumeEmptyStatement() {
 	super.consumeEmptyStatement();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeEnhancedForStatement() {
 	super.consumeEnhancedForStatement();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeExpressionStatement() {
 	super.consumeExpressionStatement();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeFieldAccess(boolean isSuperAccess) {
 	// FieldAccess ::= Primary '.' 'Identifier'
 	// FieldAccess ::= 'super' '.' 'Identifier'
@@ -232,11 +240,13 @@
 		this.expressionStack[this.expressionPtr] = fr;
 	}
 }
+@Override
 protected void consumeInternalCompilationUnit() {
 	// InternalCompilationUnit ::= PackageDeclaration
 	// InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports
 	// InternalCompilationUnit ::= ImportDeclarations ReduceImports
 }
+@Override
 protected void consumeInternalCompilationUnitWithTypes() {
 	// InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports TypeDeclarations
 	// InternalCompilationUnit ::= PackageDeclaration TypeDeclarations
@@ -250,6 +260,7 @@
 		System.arraycopy(this.astStack, this.astPtr + 1, this.compilationUnit.types, 0, length);
 	}
 }
+@Override
 protected void consumeLocalVariableDeclarationStatement() {
 	super.consumeLocalVariableDeclarationStatement();
 	/* recovery */
@@ -262,6 +273,7 @@
  * The CSToCuMapper could not be used, since it could have interfered with
  * the syntax recovery specific to code snippets.
  */
+@Override
 protected void consumeMethodDeclaration(boolean isNotAbstract, boolean isDefaultMethod) {
 	// MethodDeclaration ::= MethodHeader MethodBody
 	// AbstractMethodDeclaration ::= MethodHeader ';'
@@ -351,6 +363,7 @@
 	}
 }
 
+@Override
 protected void consumeMethodInvocationName() {
 	// MethodInvocation ::= Name '(' ArgumentListopt ')'
 
@@ -389,6 +402,7 @@
 		super.consumeMethodInvocationName();
 	}
 }
+@Override
 protected void consumeMethodInvocationNameWithTypeArguments() {
 	// MethodInvocation ::= Name '.' TypeArguments 'Identifier' '(' ArgumentListopt ')'
 
@@ -418,6 +432,7 @@
 		super.consumeMethodInvocationNameWithTypeArguments();
 	}
 }
+@Override
 protected void consumeMethodInvocationSuper() {
 	// MethodInvocation ::= 'super' '.' 'Identifier' '(' ArgumentListopt ')'
 
@@ -430,6 +445,7 @@
 	m.receiver = new CodeSnippetSuperReference(m.sourceStart, this.endPosition);
 	pushOnExpressionStack(m);
 }
+@Override
 protected void consumeMethodInvocationSuperWithTypeArguments() {
 	// MethodInvocation ::= 'super' '.' TypeArguments 'Identifier' '(' ArgumentListopt ')'
 
@@ -449,6 +465,7 @@
 	m.receiver = new CodeSnippetSuperReference(m.sourceStart, this.endPosition);
 	pushOnExpressionStack(m);
 }
+@Override
 protected void consumePrimaryNoNewArrayThis() {
 	// PrimaryNoNewArray ::= 'this'
 
@@ -461,56 +478,67 @@
 		super.consumePrimaryNoNewArrayThis();
 	}
 }
+@Override
 protected void consumeStatementBreak() {
 	super.consumeStatementBreak();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementBreakWithLabel() {
 	super.consumeStatementBreakWithLabel();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementCatch() {
 	super.consumeStatementCatch();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementContinue() {
 	super.consumeStatementContinue();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementContinueWithLabel() {
 	super.consumeStatementContinueWithLabel();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementDo() {
 	super.consumeStatementDo();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementFor() {
 	super.consumeStatementFor();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementIfNoElse() {
 	super.consumeStatementIfNoElse();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementIfWithElse() {
 	super.consumeStatementIfWithElse();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementLabel() {
 	super.consumeStatementLabel();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementReturn() {
 	// ReturnStatement ::= 'return' Expressionopt ';'
 
@@ -533,31 +561,37 @@
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementSwitch() {
 	super.consumeStatementSwitch();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementSynchronized() {
 	super.consumeStatementSynchronized();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementThrow() {
 	super.consumeStatementThrow();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementTry(boolean arg_0, boolean arg_1) {
 	super.consumeStatementTry(arg_0, arg_1);
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected void consumeStatementWhile() {
 	super.consumeStatementWhile();
 	/* recovery */
 	recordLastStatementIfNeeded();
 }
+@Override
 protected CompilationUnitDeclaration endParse(int act) {
 	if (this.hasRecoveredOnExpression) {
 		CompilationResult unitResult = this.compilationUnit.compilationResult;
@@ -636,6 +670,7 @@
 	}
 	return super.endParse(act);
 }
+@Override
 protected NameReference getUnspecifiedReference(boolean rejectTypeAnnotations) {
 	/* build a (unspecified) NameReference which may be qualified*/
 	if (rejectTypeAnnotations) {
@@ -672,6 +707,7 @@
 		return super.getUnspecifiedReference(rejectTypeAnnotations);
 	}
 }
+@Override
 protected NameReference getUnspecifiedReferenceOptimized() {
 	/* build a (unspecified) NameReference which may be qualified
 	The optimization occurs for qualified reference while we are
@@ -721,6 +757,7 @@
 		return super.getUnspecifiedReferenceOptimized();
 	}
 }
+@Override
 protected void ignoreExpressionAssignment() {
 	super.ignoreExpressionAssignment();
 	/* recovery */
@@ -732,6 +769,7 @@
 private boolean isTopLevelType() {
 	return this.nestedType == (this.diet ? 0 : 1);
 }
+@Override
 protected MessageSend newMessageSend() {
 	// '(' ArgumentListopt ')'
 	// the arguments are on the expression stack
@@ -749,6 +787,7 @@
 	}
 	return m;
 }
+@Override
 protected MessageSend newMessageSendWithTypeArguments() {
 	// '(' ArgumentListopt ')'
 	// the arguments are on the expression stack
@@ -774,6 +813,7 @@
 	}
 }
 
+@Override
 protected void reportSyntaxErrors(boolean isDietParse, int oldFirstToken) {
 	if (!isDietParse) {
 		this.scanner.initialPosition = this.lastStatement;
@@ -786,6 +826,7 @@
  * A syntax error was detected. If a method is being parsed, records the number of errors and
  * attempts to restart from the last statement by going for an expression.
  */
+@Override
 protected int resumeOnSyntaxError() {
 	if (this.diet || this.hasRecoveredOnExpression) { // no reentering inside expression recovery
 		return HALT;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.java
index 53aee11..e65974c 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetQualifiedNameReference.java
@@ -73,6 +73,7 @@
 	return getOtherFieldBindings(scope);
 }
 
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if ((this.bits & Binding.VARIABLE) == 0) { // nothing to do if type ref
@@ -149,6 +150,7 @@
 /**
  * Check and/or redirect the field access to the delegate receiver if any
  */
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
     FieldBinding lastFieldBinding = this.otherBindings == null ? (FieldBinding) this.binding : this.otherBindings[this.otherBindings.length-1];
 	if (lastFieldBinding.canBeSeenBy(getFinalReceiverType(), this, currentScope)) {
@@ -176,6 +178,7 @@
 	}
 }
 
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
     FieldBinding lastFieldBinding = this.otherBindings == null ? (FieldBinding) this.binding : this.otherBindings[this.otherBindings.length-1];
 	if (lastFieldBinding.canBeSeenBy(getFinalReceiverType(), this, currentScope)) {
@@ -234,6 +237,7 @@
 	// value field receiver value
 	codeStream.generateEmulatedWriteAccessForField(lastFieldBinding);
 }
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
     FieldBinding lastFieldBinding = this.otherBindings == null ? (FieldBinding) this.binding : this.otherBindings[this.otherBindings.length-1];
 	if (lastFieldBinding.canBeSeenBy(getFinalReceiverType(), this, currentScope)) {
@@ -285,6 +289,7 @@
  * Generate code for all bindings (local and fields) excluding the last one, which may then be generated code
  * for a read or write access.
  */
+@Override
 public FieldBinding generateReadSequence(BlockScope currentScope, CodeStream codeStream) {
 	// determine the rank until which we now we do not need any actual value for the field access
 	int otherBindingsCount = this.otherBindings == null ? 0 : this.otherBindings.length;
@@ -443,6 +448,7 @@
 }
 
 
+@Override
 public void generateReceiver(CodeStream codeStream) {
 	codeStream.aload_0();
 	if (this.delegateThis != null) {
@@ -450,6 +456,7 @@
 	}
 }
 
+@Override
 public TypeBinding getOtherFieldBindings(BlockScope scope) {
 	// At this point restrictiveFlag may ONLY have two potential value : FIELD LOCAL (i.e cast <<(VariableBinding) binding>> is valid)
 	int length = this.tokens.length;
@@ -535,6 +542,7 @@
 /**
  * index is <0 to denote write access emulation
  */
+@Override
 public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FieldBinding fieldBinding, int index, FlowInfo flowInfo) {
 	// do nothing
 }
@@ -542,6 +550,7 @@
 /**
  * Normal field binding did not work, try to bind to a field of the delegate receiver.
  */
+@Override
 public TypeBinding reportError(BlockScope scope) {
 	if (this.evaluationContext.declaringTypeName != null) {
 		this.delegateThis = scope.getField(scope.enclosingSourceType(), DELEGATE_THIS, this);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.java
index cf4a0b8..e9ca740 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetReturnStatement.java
@@ -39,6 +39,7 @@
 	super(expr, s, e);
 }
 
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
 	FlowInfo info = super.analyseCode(currentScope, flowContext, flowInfo);
 	// we need to remove this optimization in order to prevent the inlining of the return bytecode
@@ -51,11 +52,13 @@
  * Dump the suitable return bytecode for a return statement
  *
  */
+@Override
 public void generateReturnBytecode(CodeStream codeStream) {
 
 	// output the return bytecode
 	codeStream.return_();
 }
+@Override
 public void generateStoreSaveValueIfNecessary(CodeStream codeStream){
 
 	// push receiver
@@ -93,25 +96,32 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return null;
 }
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return null;
 }
+@Override
 public boolean isSuperAccess() {
 	return false;
 }
+@Override
 public boolean isTypeAccess() {
 	return false;
 }
+@Override
 public boolean needValue(){
 	return true;
 }
+@Override
 public void prepareSaveValueLocation(TryStatement targetTryStatement){
 
 	// do nothing: no storage is necessary for snippets
 }
+@Override
 public void resolve(BlockScope scope) {
 	if (this.expression != null) {
 		if (this.expression.resolveType(scope) != null) {
@@ -139,12 +149,15 @@
 		}
 	}
 }
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	// ignored
 }
+@Override
 public void setDepth(int depth) {
 	// ignored
 }
+@Override
 public void setFieldIndex(int depth) {
 	// ignored
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
index ff8dd31..705109b 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetScope.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -256,6 +256,7 @@
 	return receiverType.fPackage == referenceBinding.fPackage;
 }
 // Internal use only
+@Override
 public MethodBinding findExactMethod(ReferenceBinding receiverType, char[] selector, TypeBinding[] argumentTypes, InvocationSite invocationSite) {
 	MethodBinding exactMethod = receiverType.getExactMethod(selector, argumentTypes, null);
 	if (exactMethod != null){
@@ -371,6 +372,7 @@
 	return null;
 }
 // Internal use only
+@Override
 public MethodBinding findMethod(ReferenceBinding receiverType, char[] selector, TypeBinding[] argumentTypes, InvocationSite invocationSite, boolean inStaticContext) {
 	MethodBinding methodBinding = super.findMethod(receiverType, selector, argumentTypes, invocationSite, inStaticContext);
 	if (methodBinding != null && methodBinding.isValidBinding())
@@ -380,6 +382,7 @@
 }
 
 // Internal use only
+@Override
 public MethodBinding findMethodForArray(ArrayBinding receiverType, char[] selector, TypeBinding[] argumentTypes, InvocationSite invocationSite) {
 	ReferenceBinding object = getJavaLangObject();
 	MethodBinding methodBinding = object.getExactMethod(selector, argumentTypes, null);
@@ -449,7 +452,7 @@
 		PackageBinding packageBinding = (PackageBinding) binding;
 
 		while (currentIndex < length) {
-			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++]);
+			binding = packageBinding.getTypeOrPackage(compoundName[currentIndex++], null);
 			invocationSite.setFieldIndex(currentIndex);
  			if (binding == null) {
 	 			if (currentIndex == length) // must be a type if its the last name, otherwise we have no idea if its a package or type
@@ -528,6 +531,7 @@
 	If no visible constructor is discovered, an error binding is answered.
 */
 
+@Override
 public MethodBinding getConstructor(ReferenceBinding receiverType, TypeBinding[] argumentTypes, InvocationSite invocationSite) {
 	MethodBinding methodBinding = receiverType.getExactConstructor(argumentTypes);
 	if (methodBinding != null) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
index 64e7e78..37ce8d6 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSingleNameReference.java
@@ -55,6 +55,7 @@
 	super(source, pos);
 	this.evaluationContext = evaluationContext;
 }
+@Override
 public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) {
 
 	switch (this.bits & RestrictiveFlagMASK) {
@@ -85,6 +86,7 @@
 /**
  * Check and/or redirect the field access to the delegate receiver if any
  */
+@Override
 public TypeBinding checkFieldAccess(BlockScope scope) {
 
 	if (this.delegateThis == null) {
@@ -111,6 +113,7 @@
 	return fieldBinding.type;
 
 }
+@Override
 public void generateAssignment(BlockScope currentScope, CodeStream codeStream, Assignment assignment, boolean valueRequired) {
 	// optimizing assignment like: i = i + 1 or i = 1 + i
 	if (assignment.expression.isCompactableOperation()) {
@@ -221,6 +224,7 @@
 			}
 	}
 }
+@Override
 public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 	int pc = codeStream.position;
 	if (this.constant != Constant.NotAConstant) {
@@ -304,6 +308,7 @@
  * The APIs with an extra argument is used whenever there are two references to the same variable which
  * are optimized in one access: e.g "a = a + 1" optimized into "a++".
  */
+@Override
 public void generateCompoundAssignment(BlockScope currentScope, CodeStream codeStream, MethodBinding writeAccessor, Expression expression, int operator, int assignmentImplicitConversion, boolean valueRequired) {
 	switch (this.bits & RestrictiveFlagMASK) {
 		case Binding.FIELD : // assigning to a field
@@ -486,6 +491,7 @@
 			codeStream.store(localBinding, false);
 	}
 }
+@Override
 public void generatePostIncrement(BlockScope currentScope, CodeStream codeStream, CompoundAssignment postIncrement, boolean valueRequired) {
 	switch (this.bits & RestrictiveFlagMASK) {
 		case Binding.FIELD : // assigning to a field
@@ -552,6 +558,7 @@
 			super.generatePostIncrement(currentScope, codeStream, postIncrement, valueRequired);
 	}
 }
+@Override
 public void generateReceiver(CodeStream codeStream) {
 	codeStream.aload_0();
 	if (this.delegateThis != null) {
@@ -572,6 +579,7 @@
 			}
 	}
 }
+@Override
 public void manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess) {
 
 	if (this.delegateThis == null) {
@@ -596,6 +604,7 @@
 /**
  * Normal field binding did not work, try to bind to a field of the delegate receiver.
  */
+@Override
 public TypeBinding reportError(BlockScope scope) {
 
 	this.constant = Constant.NotAConstant;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.java
index 59aa94b..b6d9569 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSkeleton.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2017 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -49,45 +49,59 @@
 			this.exceptionTypeNames = exceptionTypeNames;
 			this.isConstructor = isConstructor;
 		}
+		@Override
 		public IBinaryAnnotation[] getAnnotations() {
 			return null;
 		}
+		@Override
 		public char[][] getArgumentNames() {
 			return null;
 		}
+		@Override
 		public Object getDefaultValue() {
 			return null;
 		}
+		@Override
 		public char[][] getExceptionTypeNames() {
 			return this.exceptionTypeNames;
 		}
+		@Override
 		public char[] getGenericSignature() {
 			return null;
 		}
+		@Override
 		public char[] getMethodDescriptor() {
 			return this.methodDescriptor;
 		}
+		@Override
 		public int getModifiers() {
 			return ClassFileConstants.AccPublic;
 		}
+		@Override
 		public IBinaryAnnotation[] getParameterAnnotations(int index, char[] classFileName) {
 			return null;
 		}
+		@Override
 		public int getAnnotatedParametersCount() {
 			return 0;
 		}
+		@Override
 		public IBinaryTypeAnnotation[] getTypeAnnotations() {
 			return null; 
 		}
+		@Override
 		public char[] getSelector() {
 			return this.selector;
 		}
+		@Override
 		public long getTagBits() {
 			return 0;
 		}
+		@Override
 		public boolean isClinit() {
 			return false;
 		}
+		@Override
 		public boolean isConstructor() {
 			return this.isConstructor;
 		}
@@ -120,30 +134,38 @@
 public CodeSnippetSkeleton() {
 	super();
 }
+@Override
 public IBinaryAnnotation[] getAnnotations() {
 	return null;
 }
+@Override
 public IBinaryTypeAnnotation[] getTypeAnnotations() {
 	return null; 
 }
+@Override
 public char[] getEnclosingMethod() {
 	return null;
 }
+@Override
 public char[] getEnclosingTypeName() {
 	return null;
 }
+@Override
 public IBinaryField[] getFields() {
 	return null;
 }
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.env.IDependent#getFileName()
  */
+@Override
 public char[] getFileName() {
 	return CharOperation.concat(CODE_SNIPPET_NAME, Util.defaultJavaExtension().toCharArray());
 }
+@Override
 public char[] getGenericSignature() {
 	return null;
 }
+@Override
 public char[][] getInterfaceNames() {
 	return null;
 }
@@ -153,52 +175,71 @@
 public String getJavadocContents(IProgressMonitor monitor, String defaultEncoding) throws JavaModelException {
 	return null;
 }
+@Override
 public IBinaryNestedType[] getMemberTypes() {
 	return null;
 }
+@Override
 public IBinaryMethod[] getMethods() {
 	return this.methods;
 }
+@Override
 public int getModifiers() {
 	return ClassFileConstants.AccPublic;
 }
+@Override
 public char[][][] getMissingTypeNames() {
 	return null;
 }
+@Override
 public char[] getName() {
 	return CODE_SNIPPET_NAME;
 }
+@Override
 public char[] getSourceName() {
 	return ROOT_CLASS_NAME;
 }
+@Override
 public char[] getSuperclassName() {
 	return null;
 }
+@Override
 public long getTagBits() {
 	return 0;
 }
 public String getURLContents(String docUrlValue, String defaultEncoding) {
 	return null;
 }
+@Override
 public boolean isAnonymous() {
 	return false;
 }
+@Override
 public boolean isBinaryType() {
 	return true;
 }
+@Override
 public boolean isLocal() {
 	return false;
 }
+@Override
 public boolean isMember() {
 	return false;
 }
+@Override
 public char[] sourceFileName() {
 	return null;
 }
+@Override
 public ITypeAnnotationWalker enrichWithExternalAnnotationsFor(ITypeAnnotationWalker walker, Object member, LookupEnvironment environment) {
 	return walker;
 }
 @Override
+public char[] getModule() {
+	// TODO Java 9 Auto-generated method stub
+	return null;
+}
+@Override
 public ExternalAnnotationStatus getExternalAnnotationStatus() {
 	return ExternalAnnotationStatus.NOT_EEA_CONFIGURED;
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
index 0499e17..d58b9a1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetSuperReference.java
@@ -35,29 +35,37 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
  */
+@Override
 public TypeBinding[] genericTypeArguments() {
 	return null;
 }
 
+@Override
 public TypeBinding resolveType(BlockScope scope) {
 	scope.problemReporter().cannotUseSuperInCodeSnippet(this.sourceStart, this.sourceEnd);
 	return null;
 }
+@Override
 public InferenceContext18 freshInferenceContext(Scope scope) {
 	return null;
 }
+@Override
 public boolean isSuperAccess(){
 	return false;
 }
+@Override
 public boolean isTypeAccess(){
 	return false;
 }
+@Override
 public void setActualReceiverType(ReferenceBinding receiverType) {
 	// ignored
 }
+@Override
 public void setDepth(int depth){
 	// ignored
 }
+@Override
 public void setFieldIndex(int index){
 	// ignored
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
index a05bdbc..a1c255a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetThisReference.java
@@ -48,6 +48,7 @@
 		this.isImplicit = isImplicit;
 	}
 	
+	@Override
 	public boolean checkAccess(BlockScope scope, ReferenceBinding thisType) {
 		// this/super cannot be used in constructor call
 		MethodScope methodScope = scope.methodScope();
@@ -65,6 +66,7 @@
 		return true;
 	}
 	
+	@Override
 	public void generateCode(BlockScope currentScope, CodeStream codeStream, boolean valueRequired) {
 		int pc = codeStream.position;
 		if (valueRequired) {
@@ -77,22 +79,27 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
 	 */
+	@Override
 	public TypeBinding[] genericTypeArguments() {
 		return null;
 	}
 	
+	@Override
 	public InferenceContext18 freshInferenceContext(Scope scope) {
 		return null;
 	}
 
+	@Override
 	public boolean isSuperAccess(){
 		return false;
 	}
 	
+	@Override
 	public boolean isTypeAccess(){
 		return false;
 	}
 	
+	@Override
 	public StringBuffer printExpression(int indent, StringBuffer output){
 
 		char[] declaringType = this.evaluationContext.declaringTypeName;
@@ -104,6 +111,7 @@
 		return output.append(")this"); //$NON-NLS-1$
 	}
 	
+	@Override
 	public TypeBinding resolveType(BlockScope scope) {
 		// implicit this
 		this.constant = Constant.NotAConstant;
@@ -123,14 +131,17 @@
 		return this.resolvedType = this.delegateThis.type;
 	}
 	
+	@Override
 	public void setActualReceiverType(ReferenceBinding receiverType) {
 		// ignored
 	}
 	
+	@Override
 	public void setDepth(int depth){
 		// ignored
 	}
 	
+	@Override
 	public void setFieldIndex(int index){
 		// ignored
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
index 753edf8..3f62700 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetToCuMapper.java
@@ -169,6 +169,7 @@
  */
 public CompletionRequestor getCompletionRequestor(final CompletionRequestor originalRequestor) {
 	return new CompletionRequestor() {
+		@Override
 		public void accept(CompletionProposal proposal) {
 			switch(proposal.getKind()) {
 				case CompletionProposal.TYPE_REF:
@@ -203,6 +204,7 @@
 			originalRequestor.accept(proposal);
 		}
 
+		@Override
 		public void completionFailure(IProblem problem) {
 			problem.setSourceStart(problem.getSourceStart() - CodeSnippetToCuMapper.this.startPosOffset);
 			problem.setSourceEnd(problem.getSourceEnd() - CodeSnippetToCuMapper.this.startPosOffset);
@@ -210,30 +212,37 @@
 			originalRequestor.completionFailure(problem);
 		}
 
+		@Override
 		public void acceptContext(CompletionContext context) {
 			originalRequestor.acceptContext(context);
 		}
 
+		@Override
 		public void beginReporting() {
 			originalRequestor.beginReporting();
 		}
 
+		@Override
 		public void endReporting() {
 			originalRequestor.endReporting();
 		}
 
+		@Override
 		public boolean isIgnored(int completionProposalKind) {
 			return originalRequestor.isIgnored(completionProposalKind);
 		}
 
+		@Override
 		public void setIgnored(int completionProposalKind, boolean ignore) {
 			originalRequestor.setIgnored(completionProposalKind, ignore);
 		}
 
+		@Override
 		public boolean isAllowingRequiredProposals(int mainKind, int requiredKind) {
 			return originalRequestor.isAllowingRequiredProposals(mainKind, requiredKind);
 		}
 
+		@Override
 		public void setAllowsRequiredProposals(int mainKind, int requiredKind, boolean allow) {
 			originalRequestor.setAllowsRequiredProposals(mainKind, requiredKind, allow);
 		}
@@ -296,31 +305,42 @@
  */
 public ISelectionRequestor getSelectionRequestor(final ISelectionRequestor originalRequestor) {
 	return new ISelectionRequestor() {
+		@Override
 		public void acceptType(char[] packageName, char[] typeName, int modifiers, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 			originalRequestor.acceptType(packageName, typeName, modifiers, isDeclaration, uniqueKey, start, end);
 		}
+		@Override
 		public void acceptError(CategorizedProblem error) {
 			error.setSourceLineNumber(error.getSourceLineNumber() -  CodeSnippetToCuMapper.this.lineNumberOffset);
 			error.setSourceStart(error.getSourceStart() - CodeSnippetToCuMapper.this.startPosOffset);
 			error.setSourceEnd(error.getSourceEnd() - CodeSnippetToCuMapper.this.startPosOffset);
 			originalRequestor.acceptError(error);
 		}
+		@Override
 		public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] name, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 			originalRequestor.acceptField(declaringTypePackageName, declaringTypeName, name, isDeclaration, uniqueKey, start, end);
 		}
+		@Override
 		public void acceptMethod(char[] declaringTypePackageName, char[] declaringTypeName, String enclosingDeclaringTypeSignature, char[] selector, char[][] parameterPackageNames, char[][] parameterTypeNames, String[] parameterSignatures, char[][] typeParameterNames, char[][][] typeParameterBoundNames, boolean isConstructor, boolean isDeclaration, char[] uniqueKey, int start, int end) {
 			originalRequestor.acceptMethod(declaringTypePackageName, declaringTypeName, enclosingDeclaringTypeSignature, selector, parameterPackageNames, parameterTypeNames, parameterSignatures, typeParameterNames, typeParameterBoundNames, isConstructor, isDeclaration, uniqueKey, start, end);
 		}
+		@Override
 		public void acceptPackage(char[] packageName) {
 			originalRequestor.acceptPackage(packageName);
 		}
 
+		@Override
 		public void acceptTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] typeParameterName, boolean isDeclaration, int start, int end) {
 			originalRequestor.acceptTypeParameter(declaringTypePackageName, declaringTypeName, typeParameterName, isDeclaration, start, end);
 		}
+		@Override
 		public void acceptMethodTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] selector, int selectorStart, int selectorEnd, char[] typeParameterName,boolean isDeclaration, int start, int end) {
 			originalRequestor.acceptMethodTypeParameter(declaringTypePackageName, declaringTypeName, selector, selectorStart, selectorEnd, typeParameterName, isDeclaration, start, end);
 		}
+		@Override
+		public void acceptModule(char[] moduleName, char[] uniqueKey, int start, int end) {
+			originalRequestor.acceptModule(moduleName, uniqueKey, start, end);
+		}
 	};
 }
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.java
index 4595935..dd73f47 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/CodeSnippetTypeDeclaration.java
@@ -28,6 +28,7 @@
 /**
  * Generic bytecode generation for type
  */
+@Override
 public void generateCode(ClassFile enclosingClassFile) {
 	if ((this.bits & ASTNode.HasBeenGenerated) != 0) return;
 	this.bits |= ASTNode.HasBeenGenerated;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.java
index 333daa3..784a64f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationContext.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2013 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -117,10 +117,12 @@
 		IProgressMonitor monitor) {
 	try {
 		IRequestor variableRequestor = new IRequestor() {
+			@Override
 			public boolean acceptClassFiles(ClassFile[] classFiles, char[] codeSnippetClassName) {
 				// Do nothing
 				return true;
 			}
+			@Override
 			public void acceptProblem(CategorizedProblem problem, char[] fragmentSource, int fragmentKind) {
 				// Do nothing
 			}
@@ -145,21 +147,31 @@
 		complianceVersion
 	);
 	ICompilationUnit sourceUnit = new ICompilationUnit() {
+		@Override
 		public char[] getFileName() {
 			return CharOperation.concat(className, Util.defaultJavaExtension().toCharArray());
 		}
+		@Override
 		public char[] getContents() {
 			return mapper.getCUSource(EvaluationContext.this.lineSeparator);
 		}
+		@Override
 		public char[] getMainTypeName() {
 			return className;
 		}
+		@Override
 		public char[][] getPackageName() {
 			return null;
 		}
+		@Override
 		public boolean ignoreOptionalProblems() {
 			return false;
 		}
+		@Override
+		public char[] getModuleName() {
+			// TODO Java 9 Auto-generated method stub
+			return null;
+		}
 	};
 
 	CompletionEngine engine = new CompletionEngine(environment, mapper.getCompletionRequestor(requestor), options, project, owner, monitor);
@@ -215,9 +227,11 @@
 		if (!requestor.acceptClassFiles(
 			new ClassFile[] {
 				new ClassFile() {
+					@Override
 					public byte[] getBytes() {
 						return getCodeSnippetBytes();
 					}
+					@Override
 					public char[][] getCompoundName() {
 						return EvaluationConstants.ROOT_COMPOUND_NAME;
 					}
@@ -258,9 +272,11 @@
 		// Install new variables if needed
 		class ForwardingRequestor implements IRequestor {
 			boolean hasErrors = false;
+			@Override
 			public boolean acceptClassFiles(ClassFile[] classFiles, char[] codeSnippetClassName) {
 				return requestor.acceptClassFiles(classFiles, codeSnippetClassName);
 			}
+			@Override
 			public void acceptProblem(CategorizedProblem problem, char[] fragmentSource, int fragmentKind) {
 				requestor.acceptProblem(problem, fragmentSource, fragmentKind);
 				if (problem.isError()) {
@@ -391,6 +407,7 @@
 			// otherwise an AbortCompilation is thrown in 1.5 mode since the enclosing type
 			// is needed to resolve a nested type
 			Util.sort(classes, new Util.Comparer() {
+				@Override
 				public int compare(Object a, Object b) {
 					if (a == b) return 0;
 					ClassFile enclosing = ((ClassFile) a).enclosingClassFile;
@@ -592,21 +609,30 @@
 		complianceVersion
 	);
 	ICompilationUnit sourceUnit = new ICompilationUnit() {
+		@Override
 		public char[] getFileName() {
 			return CharOperation.concat(className, Util.defaultJavaExtension().toCharArray());
 		}
+		@Override
 		public char[] getContents() {
 			return mapper.getCUSource(EvaluationContext.this.lineSeparator);
 		}
+		@Override
 		public char[] getMainTypeName() {
 			return className;
 		}
+		@Override
 		public char[][] getPackageName() {
 			return null;
 		}
+		@Override
 		public boolean ignoreOptionalProblems() {
 			return false;
 		}
+		@Override
+		public char[] getModuleName() {
+			return null;
+		}
 	};
 	SelectionEngine engine = new SelectionEngine(environment, mapper.getSelectionRequestor(requestor), options, owner);
 	engine.select(sourceUnit, mapper.startPosOffset + selectionSourceStart, mapper.startPosOffset + selectionSourceEnd);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.java
index bdb9702..884a4e7 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/EvaluationResult.java
@@ -190,6 +190,7 @@
  * Returns a readable representation of this result.
  * This is for debugging purpose only.
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	switch (this.evaluationType) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.java
index 4f194b4..7eb48a1 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/Evaluator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2016 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -90,6 +90,7 @@
 	// The requestor collects the class definitions and problems
 	class CompilerRequestor implements ICompilerRequestor {
 		boolean hasErrors = false;
+		@Override
 		public void acceptResult(CompilationResult result) {
 			if (result.hasProblems()) {
 				EvaluationResult[] evalResults = evaluationResultsForCompilationProblems(result, source);
@@ -129,22 +130,32 @@
 	CompilerRequestor compilerRequestor = new CompilerRequestor();
 	Compiler compiler = getCompiler(compilerRequestor);
 	compiler.compile(new ICompilationUnit[] {new ICompilationUnit() {
+		@Override
 		public char[] getFileName() {
 			 // Name of class is name of CU
 			return CharOperation.concat(Evaluator.this.getClassName(), Util.defaultJavaExtension().toCharArray());
 		}
+		@Override
 		public char[] getContents() {
 			return source;
 		}
+		@Override
 		public char[] getMainTypeName() {
 			return Evaluator.this.getClassName();
 		}
+		@Override
 		public char[][] getPackageName() {
 			return null;
 		}
+		@Override
 		public boolean ignoreOptionalProblems() {
 			return false;
 		}
+		@Override
+		public char[] getModuleName() {
+			// TODO Java 9 Auto-generated method stub
+			return null;
+		}
 	}});
 	if (compilerRequestor.hasErrors) {
 		return null;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.java
index 7fea2aa..0ba22dc 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/GlobalVariable.java
@@ -54,6 +54,7 @@
  * Returns a readable representation of the receiver.
  * This is for debugging purpose only.
  */
+@Override
 public String toString() {
 	StringBuffer buffer = new StringBuffer();
 	buffer.append(this.typeName);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.java
index 96c9654..2a4181d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/eval/VariablesEvaluator.java
@@ -36,6 +36,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected void addEvaluationResultForCompilationProblem(Map<char[], EvaluationResult> resultsByIDs, CategorizedProblem problem, char[] cuSource) {
 	// set evaluation id and type to an internal problem by default
 	char[] evaluationID = cuSource;
@@ -136,12 +137,14 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected char[] getClassName() {
 	return CharOperation.concat(EvaluationConstants.GLOBAL_VARS_CLASS_NAME_PREFIX, Integer.toString(EvaluationContext.VAR_CLASS_COUNTER + 1).toCharArray());
 }
 /**
  * Creates and returns a compiler for this evaluator.
  */
+@Override
 Compiler getCompiler(ICompilerRequestor compilerRequestor) {
 	Compiler compiler = super.getCompiler(compilerRequestor);
 
@@ -178,6 +181,7 @@
 /**
  * @see org.aspectj.org.eclipse.jdt.internal.eval.Evaluator
  */
+@Override
 protected char[] getSource() {
 	StringBuffer buffer = new StringBuffer();
 	int lineNumberOffset = 1;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.java
index 4547588..b626e41 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/CommentsPreparator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 Mateusz Matela and others.
+ * Copyright (c) 2014, 2018 Mateusz Matela and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -39,8 +39,8 @@
 import org.aspectj.org.eclipse.jdt.core.dom.MemberRef;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodRef;
 import org.aspectj.org.eclipse.jdt.core.dom.QualifiedName;
+import org.aspectj.org.eclipse.jdt.core.dom.SimpleName;
 import org.aspectj.org.eclipse.jdt.core.dom.TagElement;
-import org.aspectj.org.eclipse.jdt.core.formatter.CodeFormatter;
 import org.aspectj.org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
@@ -61,10 +61,10 @@
 		String breakBeforeTags = "(dd|dt|li|td|th|h1|h2|h3|h4|h5|h6|q)"; //$NON-NLS-1$
 		String breakAfterTags = "(br)"; //$NON-NLS-1$
 		String noFormatTags = "(code|tt)"; //$NON-NLS-1$
-		String otherTags = "([^<>&&\\S]++)"; //$NON-NLS-1$
+		String otherTags = "([\\S&&[^<>]]++)"; //$NON-NLS-1$
 		String ws = "(?>[ \\t]++|[\\r\\n]++[ \\t]*+\\*?)"; // whitespace or line break with optional asterisk //$NON-NLS-1$
-		String attributeValue = "(?>\"[^\"]*\")|(?>\'[^\']*\')|[^/>\"\'&&\\S]++"; //$NON-NLS-1$
-		String attribute = "(?>" + ws + "+[^=&&\\S]+" + ws + "*(=)" + ws + "*(?>" + attributeValue  + "))"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
+		String attributeValue = "(?>\"[^\"]*\")|(?>\'[^\']*\')|[\\S&&[^/>\"\']]++"; //$NON-NLS-1$
+		String attribute = "(?>" + ws + "+[\\S&&[^=]]+" + ws + "*(=)" + ws + "*(?>" + attributeValue  + "))"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
 		HTML_TAG_PATTERN = Pattern.compile("<(/)?+(?:" //$NON-NLS-1$
 				+ formatCodeTags + '|' + separateLineTags + '|' + breakBeforeTags + '|' + breakAfterTags + '|' + noFormatTags + '|' + otherTags + ')'
 				+ "(" + attribute + "*)" + ws + "*/?>", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -144,12 +144,12 @@
 					&& !this.options.comment_format_line_comment_starting_on_first_column) {
 				this.lastLineComment = null;
 				commentToken.setIndent(0);
-				commentToken.setWrapPolicy(null);
+				commentToken.setWrapPolicy(WrapPolicy.FORCE_FIRST_COLUMN);
 				return;
 			}
 			if (this.options.never_indent_line_comments_on_first_column) {
 				commentToken.setIndent(0);
-				commentToken.setWrapPolicy(null);
+				commentToken.setWrapPolicy(WrapPolicy.FORCE_FIRST_COLUMN);
 			}
 		}
 
@@ -392,7 +392,7 @@
 
 		if (this.options.never_indent_block_comments_on_first_column && isFirstColumn) {
 			commentToken.setIndent(0);
-			commentToken.setWrapPolicy(null);
+			commentToken.setWrapPolicy(WrapPolicy.FORCE_FIRST_COLUMN);
 		}
 	}
 
@@ -427,7 +427,8 @@
 
 		if (existingBreaksBefore <= 1
 				&& (previous.tokenType == TokenNameCOMMENT_LINE || previous.tokenType == TokenNameCOMMENT_BLOCK)) {
-			commentToken.setWrapPolicy(previous.getWrapPolicy());
+			if (previous.getWrapPolicy() != WrapPolicy.FORCE_FIRST_COLUMN)
+				commentToken.setWrapPolicy(previous.getWrapPolicy());
 		} else {
 			int i = commentIndex + 2;
 			while (existingBreaksAfter <= 1 && i < this.tm.size()
@@ -549,6 +550,9 @@
 		this.commentStructure = commentToken.getInternalStructure();
 		this.commentIndent = this.tm.toIndent(commentToken.getIndent(), true);
 		this.ctm = new TokenManager(commentToken.getInternalStructure(), this.tm);
+
+		handleJavadocTagAlignment(node);
+
 		return true;
 	}
 
@@ -585,16 +589,10 @@
 				Token token = this.ctm.get(startIndex + 2);
 				token.breakBefore();
 			}
-
-			if (this.options.comment_indent_root_tags) {
-				int indent = this.ctm.getLength(this.ctm.get(startIndex), 0) + 1;
-				if (isParamTag && this.options.comment_indent_parameter_description)
-					indent += this.options.indentation_size;
-				for (int i = startIndex + 1; i <= endIndex; i++) {
+			if (isParamTag && this.options.comment_indent_parameter_description) {
+				for (int i = startIndex + 2; i <= endIndex; i++) {
 					Token token = this.ctm.get(i);
-					token.setIndent(indent);
-					// indent is used temporarily, tokens that are actually first in line
-					// will have this changed to align (indent is reserved for code inside <pre> tags)
+					token.setIndent(token.getIndent() + this.options.indentation_size);
 				}
 			}
 
@@ -623,6 +621,110 @@
 
 		if (TagElement.TAG_SEE.equals(tagName))
 			handleStringLiterals(this.tm.toString(node), node.getStartPosition());
+
+		if (PARAM_TAGS.contains(tagName) && this.options.comment_indent_parameter_description) {
+			// tokens in the first line should not be indented
+			int startIndex = this.ctm.findIndex(node.getStartPosition(), -1, false);
+			if (this.ctm.get(startIndex).tokenType != TokenNameNotAToken) {
+				int endIndex = this.ctm.lastIndexIn(node, -1);
+				int range = this.options.indentation_size;
+				for (int i = startIndex + 2; i <= endIndex && range > 0; i++) {
+					Token token = this.ctm.get(i);
+					if (token.getLineBreaksBefore() > 0)
+						break;
+					assert token.getIndent() >= this.options.indentation_size;
+					token.setIndent(token.getIndent() - this.options.indentation_size);
+					if (token.getLineBreaksAfter() > 0)
+						break;
+					range -= this.ctm.getLength(token, 0) + (token.isSpaceBefore() ? 1 : 0);
+				}
+			}
+		}
+	}
+
+	private void handleJavadocTagAlignment(Javadoc node) {
+		// Lists of tag tokens: index 0 for tag name, index 1 for param name (may be null), the rest for description
+		List<List<Token>> javadocRootTags = new ArrayList<>();
+		List<TagElement> tagElements = node.tags();
+		for (TagElement tagElement : tagElements) {
+			String tagName = tagElement.getTagName();
+			if (tagName == null || tagName.length() <= 1)
+				continue;
+			int startIndex = tokenStartingAt(tagElement.getStartPosition());
+			int nodeEnd = tagElement.getStartPosition() + tagElement.getLength() - 1;
+			while (ScannerHelper.isWhitespace(this.ctm.charAt(nodeEnd)))
+				nodeEnd--;
+			int endIndex = tokenEndingAt(nodeEnd);
+
+			List<Token> tagTokens = new ArrayList<>();
+			tagTokens.add(this.ctm.get(startIndex));
+			if (!PARAM_TAGS.contains(tagName) || tagElement.fragments().isEmpty()
+					|| !(tagElement.fragments().get(0) instanceof SimpleName)) {
+				tagTokens.add(null);
+			}
+			for (int i = startIndex + 1; i <= endIndex; i++) {
+				tagTokens.add(this.ctm.get(i));
+			}
+			javadocRootTags.add(tagTokens);
+		}
+		
+		// indent is used temporarily, tokens that are actually first in line
+		// will have this changed to align (indent is reserved for code inside <pre> tags)
+		if (this.options.comment_align_tags_names_descriptions) {
+			int maxTagNameLength = 0;
+			int maxParamNameLength = 0;
+			for (List<Token> tagTokens : javadocRootTags) {
+				Token tagName = tagTokens.get(0);
+				Token paramName = tagTokens.get(1);
+				maxTagNameLength = Math.max(maxTagNameLength, this.tm.getLength(tagName, 0));
+				if (paramName != null)
+					maxParamNameLength = Math.max(maxParamNameLength, this.tm.getLength(paramName, 0));
+			}
+			int paramNameAlign = maxTagNameLength + 1;
+			int descriptionAlign = paramNameAlign;
+			if (maxParamNameLength > 0)
+				descriptionAlign += maxParamNameLength + 1;
+			for (List<Token> tagTokens : javadocRootTags) {
+				if (tagTokens.get(1) != null)
+					tagTokens.get(1).setIndent(paramNameAlign);
+				for (int i = 2; i < tagTokens.size(); i++)
+					tagTokens.get(i).setIndent(descriptionAlign);
+			}
+		} else if (this.options.comment_align_tags_descriptions_grouped) {
+			int groupStart = 0;
+			String groupTagName = null;
+			int descriptionAlign = 0;
+			for (int i = 0; i < javadocRootTags.size(); i++) {
+				List<Token> tagTokens = javadocRootTags.get(i);
+				String tagName = this.ctm.toString(tagTokens.get(0));
+				if (!tagName.equals(groupTagName)) {
+					for (int j = groupStart; j < i; j++) {
+						List<Token> tokens = javadocRootTags.get(j);
+						for (int k = 2; k < tokens.size(); k++)
+							tokens.get(k).setIndent(descriptionAlign);
+					}
+					groupStart = i;
+					groupTagName = tagName;
+					descriptionAlign = 0;
+				}
+				int indent = tagName.length() + 1;
+				if (tagTokens.get(1) != null)
+					indent += 1 + this.ctm.getLength(tagTokens.get(1), 0);
+				descriptionAlign = Math.max(descriptionAlign, indent);
+			}
+			for (int j = groupStart; j < javadocRootTags.size(); j++) {
+				List<Token> tokens = javadocRootTags.get(j);
+				for (int k = 2; k < tokens.size(); k++)
+					tokens.get(k).setIndent(descriptionAlign);
+			}
+		} else if (this.options.comment_indent_root_tags) {
+			for (List<Token> tagTokens : javadocRootTags) {
+				Token tagName = tagTokens.get(0);
+				int indent = this.ctm.getLength(tagName, 0) + 1;
+				for (int i = 2; i < tagTokens.size(); i++)
+					tagTokens.get(i).setIndent(indent);
+			}
+		}
 	}
 
 	private void handleHtml(TagElement node) {
@@ -1008,11 +1110,14 @@
 		boolean newLinesAtBoundries = commentToken.tokenType == TokenNameCOMMENT_JAVADOC
 				? this.options.comment_new_lines_at_javadoc_boundaries
 				: this.options.comment_new_lines_at_block_boundaries;
-		if (newLinesAtBoundries && this.tm.countLineBreaksBetween(first, last) > 0) {
+		if (!newLinesAtBoundries) {
+			structure.get(1).clearLineBreaksBefore();
+			last.clearLineBreaksBefore();
+		} else if (this.tm.countLineBreaksBetween(first, last) > 0) {
 			first.breakAfter();
 			last.breakBefore();
-			last.setAlign(1);
 		}
+		last.setAlign(1);
 
 		if (structure.size() == 2)
 			return false;
@@ -1027,11 +1132,13 @@
 	}
 
 	private void addSubstituteWraps() {
-		int commentStart = this.ctm.get(0).originalStart;
+		Token previous = this.ctm.get(0);
+		int commentStart = previous.originalStart;
 		for (int i = 1; i < this.ctm.size() - 1; i++) {
 			Token token = this.ctm.get(i);
 			boolean touchesPrevious = token.originalStart == this.ctm.get(i - 1).originalEnd + 1;
-			if (touchesPrevious && token.getWrapPolicy() == null && token.getLineBreaksBefore() == 0) {
+			if (touchesPrevious && token.getLineBreaksBefore() == 0 && previous.getLineBreaksAfter() == 0
+					&& token.getWrapPolicy() == null) {
 				boolean allowWrap = this.allowSubstituteWrapping[token.originalStart - commentStart];
 				token.setWrapPolicy(allowWrap ? WrapPolicy.SUBSTITUTE_ONLY : WrapPolicy.DISABLE_WRAP);
 			}
@@ -1044,6 +1151,7 @@
 					this.ctm.get(tokenStartingAt(pos + 1)).setWrapPolicy(WrapPolicy.SUBSTITUTE_ONLY);
 				}
 			}
+			previous = token;
 		}
 	}
 
@@ -1058,8 +1166,7 @@
 		// ^ index: original source position (minus startPosition), value: position in code string
 		getCodeToFormat(codeStartPosition, codeEndPosition, codeBuilder, positionMapping);
 
-		List<Token> formattedTokens = getCommentCodeFormatter().prepareFormattedCode(codeBuilder.toString(),
-				CodeFormatter.K_UNKNOWN);
+		List<Token> formattedTokens = getCommentCodeFormatter().prepareFormattedCode(codeBuilder.toString());
 
 		if (formattedTokens == null) {
 			disableFormattingExclusively(openingTagLastIndex, closingTagFirstIndex);
@@ -1206,14 +1313,22 @@
 			Token translated = new Token(token, newStart + startPosition, newEnd + startPosition, token.tokenType);
 			if (translated.getWrapPolicy() == null)
 				translated.setWrapPolicy(WrapPolicy.DISABLE_WRAP);
-			if (token.hasNLSTag())
-				translationMap.put(token, translated);
+
+			if (token.hasNLSTag()) {
+				if (translationMap == null)
+					translationMap = new HashMap<>();
+				Token translatedNLS = translationMap.get(token.getNLSTag());
+				if (translatedNLS != null) {
+					translatedNLS.setNLSTag(translated);
+					translated.setNLSTag(translatedNLS);
+				} else {
+					translationMap.put(token, translated);
+				}
+			}
 
 			int lineBreaks = Math.max(previousLineBreaks, token.getLineBreaksBefore());
 			List<Token> structure = token.getInternalStructure();
 			if (structure != null && !structure.isEmpty()) {
-				if (translationMap == null)
-					translationMap = new HashMap<>();
 				translated.setInternalStructure(translateFormattedTokens(startPosition, structure, positionMapping,
 						translationMap));
 			}
@@ -1223,14 +1338,6 @@
 		}
 		result.get(result.size() - 1).putLineBreaksAfter(previousLineBreaks);
 
-		for (Token translated : result) {
-			if (translated.getNLSTag() != null) {
-				Token nlsTagToken = translationMap.get(translated.getNLSTag());
-				translated.setNLSTag(nlsTagToken);
-				nlsTagToken.setNLSTag(translated);
-				assert translated.getNLSTag() != null;
-			}
-		}
 		return result;
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
index f756b25..4cc1c58 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,17 +17,23 @@
  *******************************************************************************/
 package org.aspectj.org.eclipse.jdt.internal.formatter;
 
+import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_BLOCK;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_JAVADOC;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_LINE;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameEOF;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameNotAToken;
-import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_JAVADOC;
-import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_BLOCK;
-import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCOMMENT_LINE;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.aspectj.org.eclipse.jdt.core.ICompilationUnit;
+import org.aspectj.org.eclipse.jdt.core.IJavaProject;
+import org.aspectj.org.eclipse.jdt.core.IModuleDescription;
 import org.aspectj.org.eclipse.jdt.core.JavaCore;
+import org.aspectj.org.eclipse.jdt.core.JavaModelException;
 import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
 import org.aspectj.org.eclipse.jdt.core.compiler.InvalidInputException;
 import org.aspectj.org.eclipse.jdt.core.dom.AST;
@@ -40,8 +46,11 @@
 import org.aspectj.org.eclipse.jdt.core.formatter.CodeFormatter;
 import org.aspectj.org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Scanner;
 import org.aspectj.org.eclipse.jdt.internal.compiler.util.Util;
+import org.aspectj.org.eclipse.jdt.internal.core.JavaProject;
+import org.aspectj.org.eclipse.jdt.internal.core.SourceModule;
 import org.aspectj.org.eclipse.jdt.internal.formatter.linewrap.CommentWrapExecutor;
 import org.aspectj.org.eclipse.jdt.internal.formatter.linewrap.WrapPreparator;
 import org.eclipse.jface.text.IRegion;
@@ -66,8 +75,18 @@
 		| K_STATEMENTS
 		| K_CLASS_BODY_DECLARATIONS
 		| K_COMPILATION_UNIT
+		| K_MODULE_INFO
 		| K_COMMENTS_MASK;
 
+	private static final Map<Integer, Integer> FORMAT_TO_PARSER_KIND = new HashMap<>();
+	static {
+		FORMAT_TO_PARSER_KIND.put(K_COMPILATION_UNIT, ASTParser.K_COMPILATION_UNIT);
+		FORMAT_TO_PARSER_KIND.put(K_MODULE_INFO, ASTParser.K_COMPILATION_UNIT);
+		FORMAT_TO_PARSER_KIND.put(K_CLASS_BODY_DECLARATIONS, ASTParser.K_CLASS_BODY_DECLARATIONS);
+		FORMAT_TO_PARSER_KIND.put(K_STATEMENTS, ASTParser.K_STATEMENTS);
+		FORMAT_TO_PARSER_KIND.put(K_EXPRESSION, ASTParser.K_EXPRESSION);
+	}
+
 	private DefaultCodeFormatterOptions originalOptions;
 	private DefaultCodeFormatterOptions workingOptions;
 
@@ -75,8 +94,8 @@
 	private String sourceLevel;
 
 	private String sourceString;
-	private char[] sourceArray;
-	private IRegion[] formatRegions;
+	char[] sourceArray;
+	private List<IRegion> formatRegions;
 
 	private ASTNode astRoot;
 	private List<Token> tokens = new ArrayList<>();
@@ -123,6 +142,7 @@
 		return options.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT);
 	}
 
+	@Override
 	public String createIndentationString(final int indentationLevel) {
 		if (indentationLevel < 0) {
 			throw new IllegalArgumentException();
@@ -138,6 +158,7 @@
 	/**
 	 * @see org.aspectj.org.eclipse.jdt.core.formatter.CodeFormatter#format(int, java.lang.String, int, int, int, java.lang.String)
 	 */
+	@Override
 	public TextEdit format(int kind, String source, int offset, int length, int indentationLevel, String lineSeparator) {
 		return format(kind, source, new IRegion[] { new Region(offset, length) }, indentationLevel, lineSeparator);
 	}
@@ -145,11 +166,12 @@
 	/**
 	 * {@inheritDoc}
 	 */
+	@Override
 	public TextEdit format(int kind, String source, IRegion[] regions, int indentationLevel, String lineSeparator) {
 		if (!regionsSatisfiesPreconditions(regions, source.length())) {
 			throw new IllegalArgumentException();
 		}
-		this.formatRegions = regions;
+		this.formatRegions = Arrays.asList(regions);
 
 		updateWorkingOptions(indentationLevel, lineSeparator, kind);
 
@@ -160,7 +182,7 @@
 			return this.tokens.isEmpty() ? new MultiTextEdit() : null;
 
 		MultiTextEdit result = new MultiTextEdit();
-		TextEditsBuilder resultBuilder = new TextEditsBuilder(this.sourceString, regions, this.tokenManager,
+		TextEditsBuilder resultBuilder = new TextEditsBuilder(this.sourceString, this.formatRegions, this.tokenManager,
 				this.workingOptions);
 		this.tokenManager.traverse(0, resultBuilder);
 		for (TextEdit edit : resultBuilder.getEdits()) {
@@ -169,7 +191,7 @@
 		return result;
 	}
 
-	private boolean init(String source) {
+	private boolean init(String source, int kind) {
 
 		// this is convenient for debugging (see Token.toString())
 		// Token.source = source;
@@ -179,12 +201,17 @@
 		this.tokens.clear();
 		this.tokenManager = new TokenManager(this.tokens, source, this.workingOptions);
 
-		tokenizeSource();
+		tokenizeSource(kind);
 		return !this.tokens.isEmpty();
 	}
 
-	List<Token> prepareFormattedCode(String source, int kind) {
-		if (!init(source))
+	List<Token> prepareFormattedCode(String source) {
+		this.formatRegions = Arrays.asList(new Region(0, source.length()));
+		return prepareFormattedCode(source, CodeFormatter.K_UNKNOWN);
+	}
+
+	private List<Token> prepareFormattedCode(String source, int kind) {
+		if (!init(source, kind))
 			return null;
 
 		this.astRoot = parseSourceCode(kind);
@@ -199,8 +226,6 @@
 		prepareComments();
 		prepareWraps(kind);
 
-		this.tokenManager.applyFormatOff();
-
 		return this.tokens;
 	}
 
@@ -218,7 +243,7 @@
 
 	private TextEdit formatComments(String source, int kind) {
 		MultiTextEdit result = new MultiTextEdit();
-		if (!init(source))
+		if (!init(source, kind))
 			return result;
 
 		CommentsPreparator commentsPreparator = new CommentsPreparator(this.tokenManager, this.workingOptions,
@@ -226,12 +251,9 @@
 		CommentWrapExecutor commentWrapper = new CommentWrapExecutor(this.tokenManager, this.workingOptions);
 		switch (kind) {
 			case K_JAVA_DOC:
-				ASTParser parser = ASTParser.newParser(AST.JLS8);
 				for (Token token : this.tokens) {
 					if (token.tokenType == TokenNameCOMMENT_JAVADOC) {
-						parser.setSourceRange(token.originalStart, token.countChars());
-						CompilationUnit cu = (CompilationUnit) parseSourceCode(parser, ASTParser.K_COMPILATION_UNIT,
-								true);
+						CompilationUnit cu = (CompilationUnit) parseSourceCode(ASTParser.K_COMPILATION_UNIT);
 						Javadoc javadoc = (Javadoc) cu.getCommentList().get(0);
 						javadoc.accept(commentsPreparator);
 						int startPosition = this.tokenManager.findSourcePositionInLine(token.originalStart);
@@ -268,7 +290,7 @@
 				throw new AssertionError(String.valueOf(kind));
 		}
 
-		this.tokenManager.applyFormatOff();
+		applyFormatOff();
 
 		TextEditsBuilder resultBuilder = new TextEditsBuilder(source, this.formatRegions, this.tokenManager,
 				this.workingOptions);
@@ -286,59 +308,85 @@
 	}
 
 	private ASTNode parseSourceCode(int kind) {
-		ASTParser parser = ASTParser.newParser(AST.JLS8);
+		kind = kind & K_MASK;
+		if (kind != K_UNKNOWN) {
+			ASTNode astNode = createParser(kind).createAST(null);
+			if (kind == K_COMPILATION_UNIT || kind == K_MODULE_INFO)
+				return astNode;
+			return hasErrors(astNode) ? null : astNode;
+		}
+
+		int[] kindsToTry = { K_COMPILATION_UNIT, K_EXPRESSION, K_CLASS_BODY_DECLARATIONS, K_STATEMENTS, K_MODULE_INFO };
+		for (int kindToTry : kindsToTry) {
+			ASTNode astNode = createParser(kindToTry).createAST(null);
+			if (!hasErrors(astNode)) {
+				if (kindToTry == K_MODULE_INFO) 
+					tokenizeSource(kindToTry); // run scanner again to get module specific tokens
+				return astNode;
+			}
+		}
+		return null;
+	}
+
+	private ASTParser createParser(int kind) {
+		@SuppressWarnings("deprecation")
+		ASTParser parser = ASTParser.newParser(AST.JLS9);
+
+		if (kind == K_MODULE_INFO) {
+			parser.setSource(createDummyModuleInfoCompilationUnit());
+		} else {
+			parser.setSource(this.sourceArray);
+		}
+		parser.setKind(FORMAT_TO_PARSER_KIND.get(kind));
+
 		Map<String, String> parserOptions = JavaCore.getOptions();
 		parserOptions.put(CompilerOptions.OPTION_Source, this.sourceLevel);
 		parserOptions.put(CompilerOptions.OPTION_DocCommentSupport, CompilerOptions.ENABLED);
 		parser.setCompilerOptions(parserOptions);
-
-		switch (kind & K_MASK) {
-			case K_COMPILATION_UNIT:
-				return parseSourceCode(parser, ASTParser.K_COMPILATION_UNIT, true);
-			case K_CLASS_BODY_DECLARATIONS:
-				return parseSourceCode(parser, ASTParser.K_CLASS_BODY_DECLARATIONS, false);
-			case K_STATEMENTS:
-				return parseSourceCode(parser, ASTParser.K_STATEMENTS, false);
-			case K_EXPRESSION:
-				return parseSourceCode(parser, ASTParser.K_EXPRESSION, false);
-			case K_UNKNOWN:
-				int[] parserModes = { ASTParser.K_COMPILATION_UNIT, ASTParser.K_EXPRESSION,
-						ASTParser.K_CLASS_BODY_DECLARATIONS, ASTParser.K_STATEMENTS };
-				for (int parserMode : parserModes) {
-					ASTNode astNode = parseSourceCode(parser, parserMode, false);
-					if (astNode != null)
-						return astNode;
-					parser.setCompilerOptions(parserOptions); // parser loses compiler options after every use
-				}
-				return null;
-			default:
-				throw new IllegalArgumentException();
-		}
+		return parser;
 	}
 
-	private ASTNode parseSourceCode(ASTParser parser, int parserMode, boolean ignoreErrors) {
-		parser.setKind(parserMode);
-		parser.setSource(this.sourceArray);
-		ASTNode astNode = parser.createAST(null);
-		if (ignoreErrors)
-			return astNode;
+	private ICompilationUnit createDummyModuleInfoCompilationUnit() {
+		IJavaProject dummyProject = new JavaProject() {
+			@Override
+			public Map<String, String> getOptions(boolean inheritJavaCoreOptions) {
+				return new HashMap<>();
+			}
 
-		boolean hasErrors = false;
+			@Override
+			public IModuleDescription getModuleDescription() throws JavaModelException {
+				return new SourceModule(this, ""); //$NON-NLS-1$
+			}
+		};
+		return new org.aspectj.org.eclipse.jdt.internal.core.CompilationUnit(null, TypeConstants.MODULE_INFO_FILE_NAME_STRING,
+				null) {
+			@Override
+			public char[] getContents() {
+				return DefaultCodeFormatter.this.sourceArray;
+			}
+
+			@Override
+			public IJavaProject getJavaProject() {
+				return dummyProject;
+			}
+		};
+	}
+
+	private boolean hasErrors(ASTNode astNode) {
 		CompilationUnit root = (CompilationUnit) astNode.getRoot();
 		for (IProblem problem : root.getProblems()) {
-			if (problem.isError()) {
-				hasErrors = true;
-				break;
-			}
+			if (problem.isError())
+				return true;
 		}
-		return hasErrors ? null : astNode;
+		return false;
 	}
 
-	private void tokenizeSource() {
+	private void tokenizeSource(int kind) {
 		this.tokens.clear();
 		Scanner scanner = new Scanner(true, false, false/* nls */, CompilerOptions.versionToJdkLevel(this.sourceLevel),
 				null/* taskTags */, null/* taskPriorities */, false/* taskCaseSensitive */);
 		scanner.setSource(this.sourceArray);
+		scanner.fakeInModule = (kind & K_MODULE_INFO) != 0;
 		while (true) {
 			try {
 				int tokenType = scanner.getNextToken();
@@ -378,9 +426,37 @@
 	private void prepareWraps(int kind) {
 		WrapPreparator wrapPreparator = new WrapPreparator(this.tokenManager, this.workingOptions, kind);
 		this.astRoot.accept(wrapPreparator);
+		applyFormatOff();
 		wrapPreparator.finishUp(this.astRoot, this.formatRegions);
 	}
 
+	private void applyFormatOff() {
+		for (Token[] offPair : this.tokenManager.getDisableFormatTokenPairs()) {
+			final int offStart = offPair[0].originalStart;
+			final int offEnd = offPair[1].originalEnd;
+
+			offPair[0].setWrapPolicy(null);
+			offPair[0]
+					.setIndent(Math.min(offPair[0].getIndent(), this.tokenManager.findSourcePositionInLine(offStart)));
+
+			final List<IRegion> result = new ArrayList<>();
+			for (IRegion region : this.formatRegions) {
+				final int start = region.getOffset(), end = region.getOffset() + region.getLength() - 1;
+				if (offEnd < start || end < offStart) {
+					result.add(region);
+				} else if (offStart <= start && end <= offEnd) {
+					// whole region off
+				} else {
+					if (start < offStart)
+						result.add(new Region(start, offStart - start));
+					if (offEnd < end)
+						result.add(new Region(offEnd + 1, end - offEnd));
+				}
+			}
+			this.formatRegions = result;
+		}
+	}
+
 	/**
 	 * True if
 	 * <li>1. All regions are within maxLength
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
index 92ecbb9..44aafb4 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/DefaultCodeFormatterOptions.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -124,6 +124,7 @@
 	public int alignment_for_expressions_in_array_initializer;
 	public int alignment_for_expressions_in_for_loop_header;
 	public int alignment_for_method_declaration;
+	public int alignment_for_module_statements;
 	// TODO following option cannot be set in preferences dialog (but it's used by old.CodeFormatter)
 	public int alignment_for_multiple_fields;
 	public int alignment_for_parameterized_type_references;
@@ -196,10 +197,13 @@
 	public boolean comment_format_source;
 	public boolean comment_indent_parameter_description;
 	public boolean comment_indent_root_tags;
+	public boolean comment_align_tags_names_descriptions;
+	public boolean comment_align_tags_descriptions_grouped;
 	public boolean comment_insert_empty_line_before_root_tags;
 	public boolean comment_insert_new_line_for_parameter;
 	public boolean comment_preserve_white_space_between_code_and_line_comments;
 	public int comment_line_length;
+	public boolean comment_count_line_length_from_starting_position;
 
 	public boolean use_tags;
 	public char[] disabling_tag;
@@ -459,6 +463,7 @@
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_EXPRESSIONS_IN_ARRAY_INITIALIZER, getAlignment(this.alignment_for_expressions_in_array_initializer));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_EXPRESSIONS_IN_FOR_LOOP_HEADER, getAlignment(this.alignment_for_expressions_in_for_loop_header));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_METHOD_DECLARATION, getAlignment(this.alignment_for_method_declaration));
+		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_MODULE_STATEMENTS, getAlignment(this.alignment_for_module_statements));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_MULTIPLE_FIELDS, getAlignment(this.alignment_for_multiple_fields));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_PARAMETERIZED_TYPE_REFERENCES, getAlignment(this.alignment_for_parameterized_type_references));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_PARAMETERS_IN_CONSTRUCTOR_DECLARATION, getAlignment(this.alignment_for_parameters_in_constructor_declaration));
@@ -510,10 +515,13 @@
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_FORMAT_SOURCE, this.comment_format_source ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_INDENT_PARAMETER_DESCRIPTION, this.comment_indent_parameter_description ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_INDENT_ROOT_TAGS, this.comment_indent_root_tags ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
+		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS, this.comment_align_tags_names_descriptions ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
+		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED, this.comment_align_tags_descriptions_grouped ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_INSERT_EMPTY_LINE_BEFORE_ROOT_TAGS, this.comment_insert_empty_line_before_root_tags ? JavaCore.INSERT : JavaCore.DO_NOT_INSERT);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_INSERT_NEW_LINE_FOR_PARAMETER, this.comment_insert_new_line_for_parameter ? JavaCore.INSERT : JavaCore.DO_NOT_INSERT);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_PRESERVE_WHITE_SPACE_BETWEEN_CODE_AND_LINE_COMMENT, this.comment_preserve_white_space_between_code_and_line_comments ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_LINE_LENGTH, Integer.toString(this.comment_line_length));
+		options.put(DefaultCodeFormatterConstants.FORMATTER_COMMENT_COUNT_LINE_LENGTH_FROM_STARTING_POSITION, this.comment_count_line_length_from_starting_position ? DefaultCodeFormatterConstants.TRUE : DefaultCodeFormatterConstants.FALSE);
 		options.put(DefaultCodeFormatterConstants.FORMATTER_CONTINUATION_INDENTATION, Integer.toString(this.continuation_indentation));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_CONTINUATION_INDENTATION_FOR_ARRAY_INITIALIZER, Integer.toString(this.continuation_indentation_for_array_initializer));
 		options.put(DefaultCodeFormatterConstants.FORMATTER_BLANK_LINES_AFTER_IMPORTS, Integer.toString(this.blank_lines_after_imports));
@@ -895,6 +903,10 @@
 				this.alignment_for_method_declaration = Alignment.M_COMPACT_SPLIT;
 			}
 		}
+		final Object alignmentForModuleStatementsOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_MODULE_STATEMENTS);
+		if (alignmentForModuleStatementsOption != null)
+			this.alignment_for_module_statements = toInt(alignmentForModuleStatementsOption, Alignment.M_COMPACT_SPLIT);
+
 		final Object alignmentForMultipleFieldsOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_ALIGNMENT_FOR_MULTIPLE_FIELDS);
 		if (alignmentForMultipleFieldsOption != null) {
 			try {
@@ -1350,6 +1362,14 @@
 		if (commentIndentRootTagsOption != null) {
 			this.comment_indent_root_tags = DefaultCodeFormatterConstants.TRUE.equals(commentIndentRootTagsOption);
 		}
+		final Object commentAlignTagsDescriptionsOption= settings.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_ALIGN_TAGS_NAMES_DESCRIPTIONS);
+		if (commentAlignTagsDescriptionsOption != null) {
+			this.comment_align_tags_names_descriptions = DefaultCodeFormatterConstants.TRUE.equals(commentAlignTagsDescriptionsOption);
+		}
+		final Object commentAlignTagsGroupedOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_ALIGN_TAGS_DESCREIPTIONS_GROUPED);
+		if (commentAlignTagsGroupedOption != null) {
+			this.comment_align_tags_descriptions_grouped = DefaultCodeFormatterConstants.TRUE.equals(commentAlignTagsGroupedOption);
+		}
 		final Object commentInsertEmptyLineBeforeRootTagsOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_INSERT_EMPTY_LINE_BEFORE_ROOT_TAGS);
 		if (commentInsertEmptyLineBeforeRootTagsOption != null) {
 			this.comment_insert_empty_line_before_root_tags = JavaCore.INSERT.equals(commentInsertEmptyLineBeforeRootTagsOption);
@@ -1372,6 +1392,10 @@
 				this.comment_line_length = 80;
 			}
 		}
+		final Object commentCountLineLengthFromStartingPositionOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_COUNT_LINE_LENGTH_FROM_STARTING_POSITION);
+		if (commentCountLineLengthFromStartingPositionOption != null) {
+			this.comment_count_line_length_from_starting_position = DefaultCodeFormatterConstants.TRUE.equals(commentCountLineLengthFromStartingPositionOption);
+		}
 		final Object commentNewLinesAtBlockBoundariesOption = settings.get(DefaultCodeFormatterConstants.FORMATTER_COMMENT_NEW_LINES_AT_BLOCK_BOUNDARIES);
 		if (commentNewLinesAtBlockBoundariesOption != null) {
 			this.comment_new_lines_at_block_boundaries = DefaultCodeFormatterConstants.TRUE.equals(commentNewLinesAtBlockBoundariesOption);
@@ -2424,6 +2448,7 @@
 		this.alignment_for_expressions_in_array_initializer = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_expressions_in_for_loop_header = Alignment.M_NO_ALIGNMENT;
 		this.alignment_for_method_declaration = Alignment.M_NO_ALIGNMENT;
+		this.alignment_for_module_statements = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_multiple_fields = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_parameterized_type_references = Alignment.M_NO_ALIGNMENT;
 		this.alignment_for_parameters_in_constructor_declaration = Alignment.M_COMPACT_SPLIT;
@@ -2473,11 +2498,14 @@
 		this.comment_format_source = true;
 		this.comment_indent_parameter_description = true;
 		this.comment_indent_root_tags = true;
+		this.comment_align_tags_names_descriptions = false;
+		this.comment_align_tags_descriptions_grouped = false;
 		this.comment_insert_empty_line_before_root_tags = true;
 		this.comment_insert_new_line_for_parameter = true;
 		this.comment_new_lines_at_block_boundaries = true;
 		this.comment_new_lines_at_javadoc_boundaries = true;
 		this.comment_line_length = 80;
+		this.comment_count_line_length_from_starting_position = true;
 		this.comment_preserve_white_space_between_code_and_line_comments= false; 
 		this.continuation_indentation = 2;
 		this.continuation_indentation_for_array_initializer = 2;
@@ -2729,10 +2757,11 @@
 		this.alignment_for_binary_expression = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_compact_if = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_conditional_expression = Alignment.M_NEXT_PER_LINE_SPLIT;
-		this.alignment_for_enum_constants = Alignment.M_NO_ALIGNMENT;
+		this.alignment_for_enum_constants = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_expressions_in_array_initializer = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_expressions_in_for_loop_header = Alignment.M_NO_ALIGNMENT;
 		this.alignment_for_method_declaration = Alignment.M_NO_ALIGNMENT;
+		this.alignment_for_module_statements = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_multiple_fields = Alignment.M_COMPACT_SPLIT;
 		this.alignment_for_parameterized_type_references = Alignment.M_NO_ALIGNMENT;
 		this.alignment_for_parameters_in_constructor_declaration = Alignment.M_COMPACT_SPLIT;
@@ -2776,17 +2805,20 @@
 		this.comment_format_block_comment = true;
 		this.comment_format_javadoc_comment = true;
 		this.comment_format_line_comment = true;
-		this.comment_format_line_comment_starting_on_first_column = true;
+		this.comment_format_line_comment_starting_on_first_column = false;
 		this.comment_format_header = false;
 		this.comment_format_html = true;
 		this.comment_format_source = true;
-		this.comment_indent_parameter_description = true;
-		this.comment_indent_root_tags = true;
+		this.comment_indent_parameter_description = false;
+		this.comment_indent_root_tags = false;
+		this.comment_align_tags_names_descriptions = false;
+		this.comment_align_tags_descriptions_grouped = true;
 		this.comment_insert_empty_line_before_root_tags = true;
-		this.comment_insert_new_line_for_parameter = true;
+		this.comment_insert_new_line_for_parameter = false;
 		this.comment_new_lines_at_block_boundaries = true;
 		this.comment_new_lines_at_javadoc_boundaries = true;
 		this.comment_line_length = 80;
+		this.comment_count_line_length_from_starting_position = true;
 		this.comment_preserve_white_space_between_code_and_line_comments= false; 
 		this.continuation_indentation = 2;
 		this.continuation_indentation_for_array_initializer = 2;
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.java
index 0b3f7f9..d221d8a 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/LineBreaksPreparator.java
@@ -60,6 +60,8 @@
 import org.aspectj.org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodInvocation;
 import org.aspectj.org.eclipse.jdt.core.dom.Modifier;
+import org.aspectj.org.eclipse.jdt.core.dom.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.core.dom.ModuleDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.NormalAnnotation;
 import org.aspectj.org.eclipse.jdt.core.dom.PackageDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.ReturnStatement;
@@ -135,6 +137,7 @@
 		return true;
 	}
 
+	@Override
 	public boolean visit(TypeDeclaration node) {
 		handleBodyDeclarations(node.bodyDeclarations());
 
@@ -674,6 +677,28 @@
 		return true;
 	}
 
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		// using settings for type declaration and fields for now, add new settings if necessary
+		breakLineBefore(node);
+		handleBracedCode(node, node.getName(), this.options.brace_position_for_type_declaration,
+				this.options.indent_body_declarations_compare_to_type_header,
+				this.options.insert_new_line_in_empty_type_declaration);
+
+		List<ModuleDirective> statements = node.moduleStatements();
+		ModuleDirective previous = null;
+		for (ModuleDirective statement : statements) {
+			int blankLines = previous == null ? this.options.blank_lines_before_first_class_body_declaration
+					: previous.getClass().equals(statement.getClass()) ? this.options.blank_lines_before_field
+							: this.options.blank_lines_before_new_chunk;
+			putBlankLinesBefore(statement, blankLines);
+			previous = statement;
+		}
+
+		this.declarationModifierVisited = false;
+		return true;
+	}
+
 	private void breakLineBefore(ASTNode node) {
 		this.tm.firstTokenIn(node, -1).breakBefore();
 	}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.java
index 1923be1..f9e686d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/SpacePreparator.java
@@ -14,6 +14,7 @@
 
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.core.dom.ASTNode;
@@ -40,6 +41,7 @@
 import org.aspectj.org.eclipse.jdt.core.dom.EnhancedForStatement;
 import org.aspectj.org.eclipse.jdt.core.dom.EnumConstantDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.EnumDeclaration;
+import org.aspectj.org.eclipse.jdt.core.dom.ExportsDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.Expression;
 import org.aspectj.org.eclipse.jdt.core.dom.ExpressionMethodReference;
 import org.aspectj.org.eclipse.jdt.core.dom.ExpressionStatement;
@@ -56,12 +58,16 @@
 import org.aspectj.org.eclipse.jdt.core.dom.MemberValuePair;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodInvocation;
+import org.aspectj.org.eclipse.jdt.core.dom.ModuleDeclaration;
+import org.aspectj.org.eclipse.jdt.core.dom.Name;
 import org.aspectj.org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.aspectj.org.eclipse.jdt.core.dom.OpensDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.PackageDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.ParameterizedType;
 import org.aspectj.org.eclipse.jdt.core.dom.ParenthesizedExpression;
 import org.aspectj.org.eclipse.jdt.core.dom.PostfixExpression;
 import org.aspectj.org.eclipse.jdt.core.dom.PrefixExpression;
+import org.aspectj.org.eclipse.jdt.core.dom.ProvidesDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.PrefixExpression.Operator;
 import org.aspectj.org.eclipse.jdt.core.dom.ReturnStatement;
 import org.aspectj.org.eclipse.jdt.core.dom.SingleMemberAnnotation;
@@ -221,13 +227,21 @@
 				: this.options.insert_space_before_opening_brace_in_method_declaration) && node.getBody() != null)
 			this.tm.firstTokenIn(node.getBody(), TokenNameLBRACE).spaceBefore();
 
+		if (node.getReceiverType() != null)
+			this.tm.lastTokenIn(node.getReceiverType(), -1).spaceAfter();
+
 		boolean beforeComma = node.isConstructor()
 				? this.options.insert_space_before_comma_in_constructor_declaration_parameters
 				: this.options.insert_space_before_comma_in_method_declaration_parameters;
 		boolean afterComma = node.isConstructor()
 				? this.options.insert_space_after_comma_in_constructor_declaration_parameters
 				: this.options.insert_space_after_comma_in_method_declaration_parameters;
-		handleCommas(node.parameters(), beforeComma, afterComma);
+		List<SingleVariableDeclaration> params = node.parameters();
+		if (node.getReceiverType() != null) {
+			params = new ArrayList<>(params);
+			params.add(0, null); // space for explicit receiver, null OK - first value not read in handleCommas 
+		}
+		handleCommas(params, beforeComma, afterComma);
 
 		List<Type> thrownExceptionTypes = node.thrownExceptionTypes();
 		if (!thrownExceptionTypes.isEmpty()) {
@@ -363,7 +377,7 @@
 
 	@Override
 	public boolean visit(TryStatement node) {
-		List<VariableDeclarationExpression> resources = node.resources();
+		List<Expression> resources = node.resources();
 		if (!resources.isEmpty()) {
 			handleToken(node, TokenNameLPAREN, this.options.insert_space_before_opening_paren_in_try,
 					this.options.insert_space_after_opening_paren_in_try);
@@ -951,6 +965,37 @@
 		return true;
 	}
 
+	@Override
+	public boolean visit(ModuleDeclaration node) {
+		handleToken(node.getName(), TokenNameLBRACE,
+				this.options.insert_space_before_opening_brace_in_type_declaration, false);
+		return true;
+	}
+
+	@Override
+	public boolean visit(ExportsDirective node) {
+		handleModuleStatementCommas(node.modules());
+		return true;
+	}
+	
+	@Override
+	public boolean visit(OpensDirective node) {
+		handleModuleStatementCommas(node.modules());
+		return true;
+	}
+
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		handleModuleStatementCommas(node.implementations());
+		return true;
+	}
+
+	private void handleModuleStatementCommas(List<Name> names) {
+		// using settings for fields for now, add new settings if necessary
+		handleCommas(names, this.options.insert_space_before_comma_in_multiple_field_declarations,
+				this.options.insert_space_after_comma_in_multiple_field_declarations);
+	}
+
 	private void handleCommas(List<? extends ASTNode> nodes, boolean spaceBefore, boolean spaceAfter) {
 		if (spaceBefore || spaceAfter) {
 			for (int i = 1; i < nodes.size(); i++) {
@@ -975,21 +1020,21 @@
 	}
 
 	private void handleTokenAfter(ASTNode node, int tokenType, boolean spaceBefore, boolean spaceAfter) {
-		if (spaceBefore || spaceAfter) {
-			if (tokenType == TokenNameGREATER) {
-				// there could be ">>" or ">>>" instead, get rid of them
-				int index = this.tm.lastIndexIn(node, -1);
-				for (int i = index; i < index + 2; i++) {
-					Token token = this.tm.get(i);
-					if (token.tokenType == TokenNameRIGHT_SHIFT || token.tokenType == TokenNameUNSIGNED_RIGHT_SHIFT) {
-						this.tm.remove(i);
-						for (int j = 0; j < (token.tokenType == TokenNameRIGHT_SHIFT ? 2 : 3); j++) {
-							this.tm.insert(i + j, new Token(token.originalStart + j, token.originalStart + j,
-									TokenNameGREATER));
-						}
+		if (tokenType == TokenNameGREATER) {
+			// there could be ">>" or ">>>" instead, get rid of them
+			int index = this.tm.lastIndexIn(node, -1);
+			for (int i = index; i < index + 2; i++) {
+				Token token = this.tm.get(i);
+				if (token.tokenType == TokenNameRIGHT_SHIFT || token.tokenType == TokenNameUNSIGNED_RIGHT_SHIFT) {
+					this.tm.remove(i);
+					for (int j = 0; j < (token.tokenType == TokenNameRIGHT_SHIFT ? 2 : 3); j++) {
+						this.tm.insert(i + j, new Token(token.originalStart + j, token.originalStart + j,
+								TokenNameGREATER));
 					}
 				}
 			}
+		}
+		if (spaceBefore || spaceAfter) {
 			Token token = this.tm.firstTokenAfter(node, tokenType);
 			handleToken(token, spaceBefore, spaceAfter);
 		}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.java
index 2d5786e..3186305 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TextEditsBuilder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 Mateusz Matela and others.
+ * Copyright (c) 2014, 2018 Mateusz Matela and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -35,7 +35,6 @@
 public class TextEditsBuilder extends TokenTraverser {
 
 	private final String source;
-	private List<IRegion> regions;
 	private TokenManager tm;
 	private final DefaultCodeFormatterOptions options;
 	private final StringBuilder buffer;
@@ -43,6 +42,7 @@
 	private final List<Token> stringLiteralsInLine = new ArrayList<Token>();
 	private final List<TextEdit> edits = new ArrayList<TextEdit>();
 
+	private final List<IRegion> regions;
 	private int currentRegion = 0;
 
 	private TextEditsBuilder childBuilder;
@@ -51,7 +51,7 @@
 	private int sourceLimit;
 	private int parentTokenIndex;
 
-	public TextEditsBuilder(String source, IRegion[] regions, TokenManager tokenManager,
+	public TextEditsBuilder(String source, List<IRegion> regions, TokenManager tokenManager,
 			DefaultCodeFormatterOptions options) {
 		this.source = source;
 		this.tm = tokenManager;
@@ -74,9 +74,7 @@
 		this.alignChar = DefaultCodeFormatterOptions.SPACE;
 	}
 
-	private List<IRegion> adaptRegions(IRegion[] givenRegions) {
-		if (givenRegions == null)
-			return null;
+	private List<IRegion> adaptRegions(List<IRegion> givenRegions) {
 		// make sure regions don't begin or end inside multiline comments
 		ArrayList<IRegion> result = new ArrayList<IRegion>();
 		IRegion previous = null;
@@ -175,8 +173,7 @@
 		} else if (index == 0 && this.parent == null) {
 			bufferIndent(token, index);
 		} else {
-			bufferAlign(token, index);
-			if (isSpaceBefore() && token.getAlign() == 0)
+			if (!bufferAlign(token, index) && isSpaceBefore())
 				this.buffer.append(' ');
 		}
 	}
@@ -280,10 +277,16 @@
 		target.append(indentChars);
 	}
 
-	private void bufferAlign(Token token, int index) {
+	private boolean bufferAlign(Token token, int index) {
 		int align = token.getAlign();
+		int alignmentChar = this.alignChar;
+		if (align == 0 && getLineBreaksBefore() == 0 && this.parent != null) {
+			align = token.getIndent();
+			token.setAlign(align);
+			alignmentChar = DefaultCodeFormatterOptions.SPACE;
+		}
 		if (align == 0)
-			return;
+			return false;
 
 		int currentPositionInLine = 0;
 		if (getLineBreaksBefore() > 0) {
@@ -293,11 +296,11 @@
 			currentPositionInLine = this.tm.getPositionInLine(index - 1);
 			currentPositionInLine += this.tm.getLength(this.tm.get(index - 1), currentPositionInLine);
 		}
-		if (isSpaceBefore())
-			align = Math.max(align, currentPositionInLine + 1);
+		if (currentPositionInLine >= align)
+			return false;
 
 		final int tabSize = this.options.tab_size;
-		switch (this.alignChar) {
+		switch (alignmentChar) {
 			case DefaultCodeFormatterOptions.SPACE:
 				while (currentPositionInLine++ < align) {
 					this.buffer.append(' ');
@@ -319,8 +322,9 @@
 				}
 				break;
 			default:
-				throw new IllegalStateException("Unrecognized align char: " + this.alignChar); //$NON-NLS-1$
+				throw new IllegalStateException("Unrecognized align char: " + alignmentChar); //$NON-NLS-1$
 		}
+		return true;
 	}
 
 	private void flushBuffer(int currentPosition) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/Token.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/Token.java
index f0ff50a..5724641 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/Token.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/Token.java
@@ -55,6 +55,9 @@
 		 */
 		public final static WrapPolicy SUBSTITUTE_ONLY = new WrapPolicy(WrapMode.DISABLED, 0, 0);
 
+		/** Policy used to mark comments on first column that should not be indented. */
+		public final static WrapPolicy FORCE_FIRST_COLUMN = new WrapPolicy(WrapMode.DISABLED, 0, 0);
+
 		public final WrapMode wrapMode;
 		public final int wrapParentIndex;
 		public final int groupEndIndex;
@@ -222,6 +225,7 @@
 	}
 
 	public void setIndent(int indent) {
+		assert indent >= 0;
 		this.indent = indent;
 	}
 
@@ -320,6 +324,7 @@
 	 */
 //	public static String source;
 
+	@Override
 	public String toString() {
 //		if (source != null)  // see comment above
 //			return toString(source);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.java
index f80bbd6..bda7b9d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/TokenManager.java
@@ -15,7 +15,6 @@
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameLBRACE;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameNotAToken;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameStringLiteral;
-import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameWHITESPACE;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -49,7 +48,7 @@
 	final CommentWrapExecutor commentWrapper;
 
 	private HashMap<Integer, Integer> tokenIndexToNLSAlign;
-	private List<Token[]> formatOffTagPairs;
+	private List<Token[]> formatOffTagPairs = new ArrayList<>();
 	private int headerEndIndex = 0;
 
 	public TokenManager(List<Token> tokens, String source, DefaultCodeFormatterOptions options) {
@@ -430,29 +429,10 @@
 	}
 
 	public void addDisableFormatTokenPair(Token formatOffTag, Token formatOnTag) {
-		if (this.formatOffTagPairs == null)
-			this.formatOffTagPairs = new ArrayList<Token[]>();
 		this.formatOffTagPairs.add(new Token[] { formatOffTag, formatOnTag });
 	}
 
-	public void applyFormatOff() {
-		if (this.formatOffTagPairs == null)
-			return;
-		for (Token[] pair : this.formatOffTagPairs) {
-			int index1 = findIndex(pair[0].originalStart, -1, false);
-			int index2 = findIndex(pair[1].originalEnd, -1, false);
-			pair[0] = get(index1);
-			pair[1] = get(index2);
-			Token unformatted = new Token(pair[0].originalStart, pair[1].originalEnd, TokenNameWHITESPACE);
-			unformatted.setIndent(Math.min(pair[0].getIndent(), findSourcePositionInLine(pair[0].originalStart)));
-			unformatted.putLineBreaksBefore(pair[0].getLineBreaksBefore());
-			if (pair[0].isSpaceBefore())
-				unformatted.spaceBefore();
-			unformatted.putLineBreaksAfter(pair[1].getLineBreaksAfter());
-			if (pair[1].isSpaceAfter())
-				unformatted.spaceAfter();
-			this.tokens.set(index1, unformatted);
-			this.tokens.subList(index1 + 1, index2 + 1).clear();
-		}
+	public List<Token[]> getDisableFormatTokenPairs() {
+		return this.formatOffTagPairs;
 	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.java
index dc182b8..f979ec3 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/CommentWrapExecutor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2015 Mateusz Matela and others.
+ * Copyright (c) 2014, 2018 Mateusz Matela and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,9 +36,10 @@
 	private final ArrayList<Token> nlsTags = new ArrayList<>();
 
 	private int lineStartPosition;
-	private List<Token> blockStructure;
+	private int lineLimit;
 	private boolean simulation;
 	private boolean wrapDisabled;
+	private boolean newLinesAtBoundries;
 
 	private Token potentialWrapToken, potentialWrapTokenSubstitute;
 	private int counterIfWrapped, counterIfWrappedSubstitute;
@@ -61,40 +62,27 @@
 	public int wrapMultiLineComment(Token commentToken, int startPosition, boolean simulate, boolean noWrap) {
 		this.lineCounter = 1;
 		this.counter = startPosition;
+		commentToken.setIndent(this.tm.toIndent(startPosition, true));
+		this.lineStartPosition = commentToken.getIndent();
+		this.lineLimit = getLineLimit(startPosition);
+		this.simulation = simulate;
+		this.wrapDisabled = noWrap;
+		this.potentialWrapToken = this.potentialWrapTokenSubstitute = null;
+		this.newLinesAtBoundries = commentToken.tokenType == TokenNameCOMMENT_JAVADOC
+				? this.options.comment_new_lines_at_javadoc_boundaries
+				: this.options.comment_new_lines_at_block_boundaries;
 
 		List<Token> structure = commentToken.getInternalStructure();
 		if (structure == null || structure.isEmpty())
 			return startPosition + this.tm.getLength(commentToken, startPosition);
 
-		commentToken.setIndent(this.tm.toIndent(startPosition, true));
-		this.lineStartPosition = commentToken.getIndent();
-		this.simulation = simulate;
-		this.wrapDisabled = noWrap;
-		this.potentialWrapToken = this.potentialWrapTokenSubstitute = null;
-		this.blockStructure = structure;
+		int position = tryToFitInOneLine(structure, startPosition, noWrap);
+		if (position > 0)
+			return position;
+
 		traverse(structure, 0);
-
-		boolean newLinesAtBoundries = commentToken.tokenType == TokenNameCOMMENT_JAVADOC
-				? this.options.comment_new_lines_at_javadoc_boundaries
-				: this.options.comment_new_lines_at_block_boundaries;
-		if (this.lineCounter > 1 && newLinesAtBoundries) {
-			Token endingToken = structure.get(structure.size() - 1);
-			if (!simulate && endingToken.tokenType != TokenNameNotAToken) {
-				structure.get(0).breakAfter();
-				endingToken.breakBefore();
-				endingToken.setAlign(1);
-			}
-			return startPosition + this.tm.getLength(endingToken, startPosition);
-		} else if (this.lineCounter > 1 && !newLinesAtBoundries) {
-			// the rest of this code assumes that newLinesAtBoundries==true, so now subtract the additional lines
-			this.lineCounter -= 2;
-
-			this.lineCounter -= structure.get(1).getLineBreaksBefore();
-			structure.get(1).clearLineBreaksBefore();
-			Token last = structure.get(structure.size() - 1);
-			this.lineCounter -= last.getLineBreaksBefore();
-			last.clearLineBreaksBefore();
-		}
+		if (this.newLinesAtBoundries)
+			return this.lineStartPosition + 1 + this.tm.getLength(structure.get(structure.size() - 1), 0);
 		return this.counter;
 	}
 
@@ -102,19 +90,59 @@
 		return this.lineCounter;
 	}
 
+	private int tryToFitInOneLine(List<Token> structure, int startPosition, boolean noWrap) {
+		int position = startPosition;
+		boolean hasWrapPotential = false;
+		boolean wasSpaceAfter = false;
+		for (int i = 0; i < structure.size(); i++) {
+			Token token = structure.get(i);
+			if (token.getLineBreaksBefore() > 0 || token.getLineBreaksAfter() > 0) {
+				assert !noWrap; // comment already wrapped
+				return -1;
+			}
+			if (!wasSpaceAfter && token.isSpaceBefore())
+				position++;
+			position += this.tm.getLength(token, position);
+			wasSpaceAfter = token.isSpaceAfter();
+			if (wasSpaceAfter)
+				position++;
+
+			WrapPolicy policy = token.getWrapPolicy();
+			if (i > 1 && (policy == null || policy == WrapPolicy.SUBSTITUTE_ONLY))
+				hasWrapPotential = true;
+		}
+		if (position <= this.lineLimit || noWrap || !hasWrapPotential)
+			return position;
+		return -1;
+	}
+
+	private int getStartingPosition(Token token) {
+		int position = this.lineStartPosition + token.getAlign() + token.getIndent();
+		if (token.tokenType != TokenNameNotAToken)
+			position += COMMENT_LINE_SEPARATOR_LENGTH;
+		return position;
+	}
+
 	@Override
 	protected boolean token(Token token, int index) {
-		int positionIfNewLine = this.lineStartPosition + token.getAlign() + token.getIndent();
-		if (token.tokenType != TokenNameNotAToken)
-			positionIfNewLine += COMMENT_LINE_SEPARATOR_LENGTH;
-		if (getLineBreaksBefore() > 0) {
-			this.lineCounter = Math.max(this.lineCounter + getLineBreaksBefore(), 4);
+		final int positionIfNewLine = getStartingPosition(token);
+
+		int lineBreaksBefore = getLineBreaksBefore();
+		if ((index == 1 || getNext() == null) && this.newLinesAtBoundries && lineBreaksBefore == 0) {
+			if (!this.simulation)
+				token.breakBefore();
+			lineBreaksBefore = 1;
+		}
+
+		if (lineBreaksBefore > 0) {
+			this.lineCounter += lineBreaksBefore;
 			this.counter = positionIfNewLine;
 			this.potentialWrapToken = this.potentialWrapTokenSubstitute = null;
+			this.lineLimit = getLineLimit(this.lineStartPosition);
 
 			boolean isFormattedCode = token.getWrapPolicy() != null
 					&& token.getWrapPolicy() != WrapPolicy.SUBSTITUTE_ONLY;
-			if (!isFormattedCode && token.getAlign() == 0) {
+			if (!isFormattedCode && token.getAlign() == 0 && !this.simulation) {
 				// Indents are reserved for code inside <pre>.
 				// Indentation of javadoc tags can be achieved with align
 				token.setAlign(token.getIndent());
@@ -122,8 +150,7 @@
 			}
 		}
 
-		boolean canWrap = getNext() != null && getLineBreaksBefore() == 0 && index > 1
-				&& positionIfNewLine < this.counter;
+		boolean canWrap = getNext() != null && lineBreaksBefore == 0 && index > 1 && positionIfNewLine < this.counter;
 		if (canWrap) {
 			if (token.getWrapPolicy() == null) {
 				this.potentialWrapToken = token;
@@ -134,6 +161,8 @@
 			}
 		}
 
+		if (index > 1 && getNext() != null && (token.getAlign() + token.getIndent()) > 0)
+			this.counter = Math.max(this.counter, getStartingPosition(token));
 		this.counter += this.tm.getLength(token, this.counter);
 		this.counterIfWrapped += this.tm.getLength(token, this.counterIfWrapped);
 		this.counterIfWrappedSubstitute += this.tm.getLength(token, this.counterIfWrappedSubstitute);
@@ -143,7 +172,6 @@
 				this.potentialWrapToken = this.potentialWrapTokenSubstitute;
 				this.counterIfWrapped = this.counterIfWrappedSubstitute;
 			}
-			this.counter = this.counterIfWrapped;
 			if (!this.simulation) {
 				this.potentialWrapToken.breakBefore();
 				// Indents are reserved for code inside <pre>.
@@ -151,8 +179,10 @@
 				this.potentialWrapToken.setAlign(this.potentialWrapToken.getIndent());
 				this.potentialWrapToken.setIndent(0);
 			}
-			this.lineCounter = Math.max(this.lineCounter + 1, 4);
+			this.counter = this.counterIfWrapped;
+			this.lineCounter++;
 			this.potentialWrapToken = this.potentialWrapTokenSubstitute = null;
+			this.lineLimit = getLineLimit(this.lineStartPosition);
 		}
 
 		if (isSpaceAfter()) {
@@ -164,8 +194,7 @@
 	}
 
 	private boolean shouldWrap() {
-		int lineLenght = this.options.comment_line_length;
-		if (this.wrapDisabled || this.counter <= lineLenght)
+		if (this.wrapDisabled || this.counter <= this.lineLimit)
 			return false;
 		if (getLineBreaksAfter() == 0 && getNext() != null && getNext().getWrapPolicy() == WrapPolicy.DISABLE_WRAP) {
 			// The next token cannot be wrapped, so there's no need to wrap now.
@@ -173,36 +202,14 @@
 			return false;
 		}
 		if (this.potentialWrapToken != null && this.potentialWrapTokenSubstitute != null
-				&& this.counterIfWrapped > lineLenght && this.counterIfWrappedSubstitute < this.counterIfWrapped) {
+				&& this.counterIfWrapped > this.lineLimit && this.counterIfWrappedSubstitute < this.counterIfWrapped) {
 			// there is a normal token to wrap, but the line would overflow anyway - better use substitute
 			this.potentialWrapToken = null;
 		}
 		if (this.potentialWrapToken == null && this.potentialWrapTokenSubstitute == null) {
-			boolean isFormattingEnabled = this.blockStructure.size() > 1
-					&& this.blockStructure.get(1).tokenType == TokenNameNotAToken;
-			if (isFormattingEnabled) {
-				// can't wrap, but the long comment cannot stay in one line
-				this.lineCounter = Math.max(this.lineCounter, 3);
-			}
 			return false;
 		}
 
-		if (this.options.comment_new_lines_at_javadoc_boundaries) {
-			if (getNext() == null) { // the closing token will go to the next line anyway
-				this.lineCounter = Math.max(this.lineCounter, 3);
-				return false;
-			}
-			if (this.lineCounter == 1) {
-				// when wrapping the first line of javadoc (more asterisks in opening token), the line will
-				// move to the left so it may not need wrapping in the end
-				int openingTokenLength = this.tm.getLength(this.blockStructure.get(0), 0);
-				if (this.counter - (openingTokenLength - 2) <= lineLenght) {
-					this.counter -= (openingTokenLength - 2);
-					this.lineCounter = Math.max(this.lineCounter, 3);
-					return false;
-				}
-			}
-		}
 		return true;
 	}
 
@@ -220,6 +227,7 @@
 		int position = startPosition;
 		startPosition = this.tm.toIndent(startPosition, true);
 		int indent = startPosition;
+		int limit = getLineLimit(position);
 
 		for (Token token : structure) {
 			if (token.hasNLSTag()) {
@@ -259,6 +267,7 @@
 				position++;
 			if (token.getLineBreaksBefore() > 0) {
 				position = startPosition;
+				limit = getLineLimit(position);
 				lineStartIndex = whitespace == null ? i : i + 1;
 				if (whitespace != null && token != whitespace) {
 					token.clearLineBreaksBefore();
@@ -267,7 +276,9 @@
 				}
 			}
 			position += this.tm.getLength(token, position);
-			if (position > this.options.comment_line_length && i > lineStartIndex + 1) {
+			if (token.tokenType == TokenNameWHITESPACE)
+				limit = getLineLimit(position);
+			if (position > limit && i > lineStartIndex + 1) {
 				structure.add(i, prefix);
 				if (whitespace != null)
 					structure.add(i, whitespace);
@@ -280,4 +291,15 @@
 		}
 		this.nlsTags.clear();
 	}
+
+	private int getLineLimit(int startPosition) {
+		final int commentLength = this.options.comment_line_length;
+		if (!this.options.comment_count_line_length_from_starting_position)
+			return commentLength;
+		final int pageWidth = this.options.page_width;
+		int lineLength = startPosition + commentLength;
+		if (lineLength > pageWidth && commentLength <= pageWidth)
+			lineLength = pageWidth;
+		return lineLength;
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java
index 85d5711..c57ca58 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/FieldAligner.java
@@ -154,6 +154,7 @@
 	public void alignComments() {
 		if (this.fieldAlignGroups.isEmpty())
 			return;
+		boolean alignLineComments = !this.options.comment_preserve_white_space_between_code_and_line_comments;
 		PositionCounter positionCounter = new PositionCounter();
 		// align comments after field declarations
 		for (List<FieldDeclaration> alignGroup : this.fieldAlignGroups) {
@@ -179,10 +180,10 @@
 					if (lineBreak) {
 						if (token.tokenType == TokenNameCOMMENT_BLOCK) {
 							token.setAlign(maxCommentAlign);
-						} else {
+						} else if (alignLineComments) {
 							this.tm.addNLSAlignIndex(i, maxCommentAlign);
 						}
-					} else if (next.tokenType == TokenNameCOMMENT_LINE
+					} else if (next.tokenType == TokenNameCOMMENT_LINE && alignLineComments
 							|| (next.tokenType == TokenNameCOMMENT_BLOCK && i == lastIndex)) {
 						next.setAlign(maxCommentAlign);
 					}
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.java
index b409bf1..22af76f 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapExecutor.java
@@ -19,6 +19,7 @@
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 
 import org.aspectj.org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
@@ -464,7 +465,7 @@
 				depthLimit = currentDepth;
 		}
 		// optimization: turns out there's no point checking multiple wraps with the same policy 
-		ArrayList<WrapPolicy> policiesTried = new ArrayList<>();
+		LinkedHashSet<WrapPolicy> policiesTried = new LinkedHashSet<>();
 
 		for (int i = lastIndex; firstPotentialWrap >= 0 && i >= firstPotentialWrap; i--) {
 			token = this.tm.get(i);
@@ -640,12 +641,7 @@
 		WrapPolicy policy = token.getWrapPolicy();
 		if (policy == null)
 			return token.getIndent();
-
-		if (this.options.never_indent_line_comments_on_first_column && token.tokenType == TokenNameCOMMENT_LINE
-				&& token.getIndent() == 0)
-			return 0;
-		if (this.options.never_indent_block_comments_on_first_column && token.tokenType == TokenNameCOMMENT_BLOCK
-				&& token.getIndent() == 0)
+		if (policy == WrapPolicy.FORCE_FIRST_COLUMN)
 			return 0;
 
 		Token wrapParent = this.tm.get(policy.wrapParentIndex);
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java
index 4f90cc0..36d263d 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/linewrap/WrapPreparator.java
@@ -34,6 +34,8 @@
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamesuper;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamethis;
 import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamethrows;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameto;
+import static org.aspectj.org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamewith;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -55,6 +57,7 @@
 import org.aspectj.org.eclipse.jdt.core.dom.CreationReference;
 import org.aspectj.org.eclipse.jdt.core.dom.EnumConstantDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.EnumDeclaration;
+import org.aspectj.org.eclipse.jdt.core.dom.ExportsDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.Expression;
 import org.aspectj.org.eclipse.jdt.core.dom.ExpressionMethodReference;
 import org.aspectj.org.eclipse.jdt.core.dom.FieldAccess;
@@ -67,8 +70,11 @@
 import org.aspectj.org.eclipse.jdt.core.dom.LambdaExpression;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.MethodInvocation;
+import org.aspectj.org.eclipse.jdt.core.dom.Name;
 import org.aspectj.org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.aspectj.org.eclipse.jdt.core.dom.OpensDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.ParameterizedType;
+import org.aspectj.org.eclipse.jdt.core.dom.ProvidesDirective;
 import org.aspectj.org.eclipse.jdt.core.dom.QualifiedName;
 import org.aspectj.org.eclipse.jdt.core.dom.SingleVariableDeclaration;
 import org.aspectj.org.eclipse.jdt.core.dom.Statement;
@@ -391,7 +397,7 @@
 			Collections.reverse(this.wrapIndexes);
 			this.wrapParentIndex = (expression != null) ? this.tm.lastIndexIn(expression, -1)
 					: this.tm.lastIndexIn(invocation, -1);
-			this.wrapGroupEnd = this.tm.firstIndexIn(node.getName(), -1);
+			this.wrapGroupEnd = this.tm.lastIndexIn(node, -1);
 			handleWrap(this.options.alignment_for_selector_in_method_invocation);
 		}
 		return true;
@@ -779,6 +785,34 @@
 		handleWrap(this.options.alignment_for_type_arguments);
 	}
 
+	@Override
+	public boolean visit(ExportsDirective node) {
+		handleModuleStatement(node.modules(), TokenNameto);
+		return true;
+	}
+
+	@Override
+	public boolean visit(OpensDirective node) {
+		handleModuleStatement(node.modules(), TokenNameto);
+		return true;
+	}
+
+	@Override
+	public boolean visit(ProvidesDirective node) {
+		handleModuleStatement(node.implementations(), TokenNamewith);
+		return true;
+	}
+
+	private void handleModuleStatement(List<Name> names, int joiningTokenType) {
+		if (names.isEmpty())
+			return;
+		int joiningTokenIndex = this.tm.firstIndexBefore(names.get(0), joiningTokenType);
+		this.wrapParentIndex = this.tm.firstIndexBefore(names.get(0), TokenNameIdentifier);
+		this.wrapIndexes.add(joiningTokenIndex);
+		prepareElementsList(names, TokenNameCOMMA, -1);
+		handleWrap(this.options.alignment_for_module_statements, PREFERRED);
+	}
+
 	/**
 	 * Makes sure all new lines within given node will have wrap policy so that
 	 * wrap executor will fix their indentation if necessary.
@@ -865,6 +899,9 @@
 		assert this.wrapParentIndex >= 0 && this.wrapParentIndex < this.wrapIndexes.get(0);
 		assert this.wrapGroupEnd >= this.wrapIndexes.get(this.wrapIndexes.size() - 1);
 
+		while (this.tm.get(this.wrapParentIndex).isComment() && this.wrapParentIndex > 0)
+			this.wrapParentIndex--;
+
 		float penalty = this.wrapPenalties.isEmpty() ? 1 : this.wrapPenalties.get(0);
 		WrapPolicy policy = getWrapPolicy(wrappingOption, penalty, true, parentNode);
 
@@ -906,6 +943,8 @@
 				Token previous = this.tm.get(i);
 				if (!previous.isComment())
 					break;
+				if (previous.getWrapPolicy() == WrapPolicy.FORCE_FIRST_COLUMN)
+					break;
 				if (previous.getLineBreaksAfter() == 0 && i == index - 1)
 					index = i;
 				if (previous.getLineBreaksBefore() > 0)
@@ -988,10 +1027,9 @@
 				penaltyMultiplier, isFirst, indentOnColumn);
 	}
 
-	public void finishUp(ASTNode astRoot, IRegion[] regions) {
+	public void finishUp(ASTNode astRoot, List<IRegion> regions) {
 		preserveExistingLineBreaks();
-		if (regions != null)
-			applyBreaksOutsideRegions(regions);
+		applyBreaksOutsideRegions(regions);
 		new WrapExecutor(this.tm, this.options).executeWraps();
 		this.fieldAligner.alignComments();
 		wrapComments();
@@ -1025,7 +1063,7 @@
 		int endingBreaks = getLineBreaksToPreserve(last, null, false);
 		if (endingBreaks > 0) {
 			last.putLineBreaksAfter(endingBreaks);
-		} else if ((this.kind & CodeFormatter.K_COMPILATION_UNIT) != 0
+		} else if ((this.kind & (CodeFormatter.K_COMPILATION_UNIT | CodeFormatter.K_MODULE_INFO)) != 0
 				&& this.options.insert_new_line_at_end_of_file_if_missing) {
 			last.breakAfter();
 		}
@@ -1052,7 +1090,7 @@
 		return Math.min(lineBreaks, toPreserve);
 	}
 
-	private void applyBreaksOutsideRegions(IRegion[] regions) {
+	private void applyBreaksOutsideRegions(List<IRegion> regions) {
 		String source = this.tm.getSource();
 		int previousRegionEnd = 0;
 		for (IRegion region : regions) {
diff --git a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.java b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.java
index 56e81f3..3568821 100644
--- a/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.java
+++ b/org.aspectj.ajde/source/org/aspectj/org/eclipse/jdt/internal/formatter/old/CodeFormatter.java
@@ -39,6 +39,7 @@
 		}
 	}
 
+	@Override
 	public String format(String string, int indentLevel, int[] positions, String lineSeparator) {
 		// initialize the new formatter with old options
 		Map newOptions = DefaultCodeFormatterConstants.getEclipse21Settings();
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ajc/Main.java b/org.aspectj.ajde/source/org/aspectj/tools/ajc/Main.java
index f66408e..c8b111e 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ajc/Main.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ajc/Main.java
@@ -534,6 +534,7 @@
 		 * 
 		 * @return false always
 		 */
+		@Override
 		public boolean handleMessage(IMessage message) {
 			if (null != message) {
 				PrintStream out = getStreamFor(message.getKind());
@@ -617,6 +618,7 @@
 
 		}
 
+		@Override
 		public boolean isIgnoring(IMessage.Kind kind) {
 			return (null != getStreamFor(kind));
 		}
@@ -627,6 +629,7 @@
 		 * @see org.aspectj.bridge.IMessageHandler#isIgnoring(org.aspectj.bridge.IMessage.Kind)
 		 * @param kind
 		 */
+		@Override
 		public void dontIgnore(IMessage.Kind kind) {
 
 		}
@@ -652,6 +655,7 @@
 		 * @see org.aspectj.bridge.IMessageHandler#ignore(org.aspectj.bridge.IMessage.Kind)
 		 * @param kind
 		 */
+		@Override
 		public void ignore(Kind kind) {
 		}
 	}
@@ -665,6 +669,7 @@
 			this.logStream = logStream;
 		}
 
+		@Override
 		protected PrintStream getStreamFor(IMessage.Kind kind) {
 			if (IMessage.WARNING.isSameOrLessThan(kind)) {
 				return logStream;
@@ -849,4 +854,5 @@
 			}
 		}
 	}
+
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/HtmlDecorator.java b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/HtmlDecorator.java
index f873c3e..ec492fc 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/HtmlDecorator.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/HtmlDecorator.java
@@ -48,7 +48,7 @@
 	private static final String ITD_FIELD_SUMMARY = "Inter-Type Field Summary";
 	private static final String ITD_CONSTRUCTOR_SUMMARY = "Inter-Type Constructor Summary";
 
-	static List visibleFileList = new ArrayList();
+	static List<String> visibleFileList = new ArrayList<String>();
 	static Hashtable declIDTable = null;
 	static File rootDir = null;
 	static String docVisibilityModifier;
@@ -291,22 +291,22 @@
 	}
 
 	static void addAspectDocumentation(IProgramElement node, StringBuffer fileBuffer, int index) {
-		List pointcuts = new ArrayList();
-		List advice = new ArrayList();
-		List declares = new ArrayList();
-		List methodsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_METHOD);
+		List<IProgramElement> pointcuts = new ArrayList<IProgramElement>();
+		List<IProgramElement> advice = new ArrayList<IProgramElement>();
+		List<IProgramElement> declares = new ArrayList<IProgramElement>();
+		List<IProgramElement> methodsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_METHOD);
 		if (methodsDeclaredOn != null && !methodsDeclaredOn.isEmpty()) {
 			insertDeclarationsSummary(fileBuffer, methodsDeclaredOn, ITD_METHOD_SUMMARY, index);
 		}
-		List fieldsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_FIELD);
+		List<IProgramElement> fieldsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_FIELD);
 		if (fieldsDeclaredOn != null && !fieldsDeclaredOn.isEmpty()) {
 			insertDeclarationsSummary(fileBuffer, fieldsDeclaredOn, ITD_FIELD_SUMMARY, index);
 		}
-		List constDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
+		List<IProgramElement> constDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
 		if (fieldsDeclaredOn != null && !constDeclaredOn.isEmpty()) {
 			insertDeclarationsSummary(fileBuffer, constDeclaredOn, ITD_CONSTRUCTOR_SUMMARY, index);
 		}
-		for (Iterator it = node.getChildren().iterator(); it.hasNext();) {
+		for (Iterator<IProgramElement> it = node.getChildren().iterator(); it.hasNext();) {
 			IProgramElement member = (IProgramElement) it.next();
 			if (member.getKind().equals(IProgramElement.Kind.POINTCUT)) {
 				pointcuts.add(member);
@@ -329,17 +329,17 @@
 			insertDeclarationsDetails(fileBuffer, advice, ADVICE_DETAIL, index);
 		}
 		// add the 'aspect declarations' information against the type
-		List parentsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.DECLARE_PARENTS);
+		List<IProgramElement> parentsDeclaredOn = StructureUtil.getDeclareInterTypeTargets(node, IProgramElement.Kind.DECLARE_PARENTS);
 		if (parentsDeclaredOn != null && parentsDeclaredOn.size() > 0) {
 			decorateDocWithRel(node, fileBuffer, index, parentsDeclaredOn, HtmlRelationshipKind.ASPECT_DECLARATIONS);
 		}
 		// add the 'annotated by' information against the type
-		List annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
+		List<String> annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
 		if (annotatedBy != null && annotatedBy.size() > 0) {
 			decorateDocWithRel(node, fileBuffer, index, annotatedBy, HtmlRelationshipKind.ANNOTATED_BY);
 		}
 		// add the 'advised by' information against the type
-		List advisedBy = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
+		List<String> advisedBy = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
 		if (advisedBy != null && advisedBy.size() > 0) {
 			decorateDocWithRel(node, fileBuffer, index, advisedBy, HtmlRelationshipKind.ADVISED_BY);
 		}
@@ -621,16 +621,16 @@
 	}
 
 	static void decorateMemberDocumentation(IProgramElement node, StringBuffer fileContentsBuffer, int index) {
-		List targets = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
+		List<String> targets = StructureUtil.getTargets(node, IRelationship.Kind.ADVICE);
 		decorateDocWithRel(node, fileContentsBuffer, index, targets, HtmlRelationshipKind.ADVISED_BY);
 
-		List warnings = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "matches declare");
+		List<String> warnings = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "matches declare");
 		decorateDocWithRel(node, fileContentsBuffer, index, warnings, HtmlRelationshipKind.MATCHES_DECLARE);
 
-		List softenedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "softened by");
+		List<String> softenedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE, "softened by");
 		decorateDocWithRel(node, fileContentsBuffer, index, softenedBy, HtmlRelationshipKind.SOFTENED_BY);
 
-		List annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
+		List<String> annotatedBy = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE, "annotated by");
 		decorateDocWithRel(node, fileContentsBuffer, index, annotatedBy, HtmlRelationshipKind.ANNOTATED_BY);
 	}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/JavadocRunner.java b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/JavadocRunner.java
index b0ab3cd..64e53ee 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/JavadocRunner.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/JavadocRunner.java
@@ -16,6 +16,14 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Vector;
+
+import javax.tools.DocumentationTool;
+import javax.tools.DocumentationTool.DocumentationTask;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
 
 /**
  * @author Mik Kersten
@@ -62,7 +70,7 @@
 		// defaultSecurityManager.checkPermission( permission, context );
 		// }
 		// } );
-
+		
 		try {
 			// for JDK 1.4 and above call the execute method...
 			Class jdMainClass = com.sun.tools.javadoc.Main.class;
@@ -92,4 +100,13 @@
 		// Set the security manager back
 		// System.setSecurityManager(defaultSecurityManager);
 	}
+
+	public static void callJavadocViaToolProvider(Vector<String> options, List<String> files) {
+		DocumentationTool doctool = ToolProvider.getSystemDocumentationTool();
+		StandardJavaFileManager fm = doctool.getStandardFileManager(null, null, null);
+		Iterable<? extends JavaFileObject> jfos = fm.getJavaFileObjects(files.toArray(new String[0]));
+		DocumentationTask task = doctool.getTask(null/*standard System.err*/, null/*standard file manager*/,
+				null/*default diagnostic listener*/, null/*standard doclet*/, options, jfos);
+		task.call();
+	}
 }
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/Main.java b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/Main.java
index 5c9047d..2e622ba 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/Main.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/Main.java
@@ -35,6 +35,7 @@
 import org.aspectj.bridge.IMessage;
 import org.aspectj.bridge.Version;
 import org.aspectj.util.FileUtil;
+import org.aspectj.util.LangUtil;
 
 /**
  * This is an old implementation of ajdoc that does not use an OO style. However, it does the job, and should serve to evolve a
@@ -47,24 +48,24 @@
 	private static final String FAIL_MESSAGE = "> compile failed, exiting ajdoc";
 
 	/** Command line options. */
-	static Vector options;
+	static Vector<String> options;
 
 	/** Options to pass to ajc. */
-	static Vector ajcOptions;
+	static Vector<String> ajcOptions;
 
 	/** All of the files to be processed by ajdoc. */
-	static Vector filenames;
+	static Vector<String> filenames;
 
 	/** List of files to pass to javadoc. */
-	static Vector fileList;
+	static Vector<String> fileList;
 
 	/** List of packages to pass to javadoc. */
-	static Vector packageList;
+	static Vector<String> packageList;
 
 	/** Default to package visiblity. */
 	static String docModifier = "package";
 
-	static Vector sourcepath;
+	static Vector<String> sourcepath;
 
 	static boolean verboseMode = false;
 	static boolean packageMode = false;
@@ -85,13 +86,13 @@
 	private static String outputWorkingDir = Config.WORKING_DIR;
 
 	public static void clearState() {
-		options = new Vector();
-		ajcOptions = new Vector();
-		filenames = new Vector();
-		fileList = new Vector();
-		packageList = new Vector();
+		options = new Vector<String>();
+		ajcOptions = new Vector<String>();
+		filenames = new Vector<String>();
+		fileList = new Vector<String>();
+		packageList = new Vector<String>();
 		docModifier = "package";
-		sourcepath = new Vector();
+		sourcepath = new Vector<String>();
 		verboseMode = false;
 		packageMode = false;
 		rootDir = null;
@@ -125,7 +126,7 @@
 			}
 
 			for (int i = 0; i < filenames.size(); i++) {
-				inputFiles[i] = new File((String) filenames.elementAt(i));
+				inputFiles[i] = new File(filenames.elementAt(i));
 			}
 
 			// PHASE 0: call ajc
@@ -169,7 +170,7 @@
 	 * package-summary properly.
 	 */
 	private static void packageHTML(AsmManager model, File[] inputFiles) throws IOException {
-		ArrayList dirList = new ArrayList();
+		ArrayList<String> dirList = new ArrayList<String>();
 		for (int i = 0; i < inputFiles.length; i++) {
 			String packageName = StructureUtil.getPackageDeclarationFromFile(model, inputFiles[i]);
 			// Only copy the package.html file once.
@@ -192,7 +193,7 @@
 				String pathName = outputWorkingDir + File.separator + packageName.replace('.', File.separatorChar);
 				File packageDir = new File(pathName);
 				if (!packageDir.exists()) {
-					dirList.add(packageDir);
+					dirList.add(packageName);
 					continue;
 				}
 				packageName = packageName.replace('.', '/'); // !!!
@@ -223,7 +224,7 @@
 		String[] argsToCompiler = new String[ajcOptions.size() + inputFiles.length];
 		int i = 0;
 		for (; i < ajcOptions.size(); i++) {
-			argsToCompiler[i] = (String) ajcOptions.elementAt(i);
+			argsToCompiler[i] = ajcOptions.elementAt(i);
 		}
 		for (int j = 0; j < inputFiles.length; j++) {
 			argsToCompiler[i] = inputFiles[j].getAbsolutePath();
@@ -237,6 +238,8 @@
 	private static void callJavadoc(File[] signatureFiles) throws IOException {
 		System.out.println("> Calling javadoc...");
 		String[] javadocargs = null;
+
+		List<String> files = new ArrayList<String>();
 		if (packageMode) {
 			int numExtraArgs = 2;
 			if (authorStandardDocletSwitch)
@@ -256,25 +259,37 @@
 			}
 			// javadocargs[1] = getSourcepathAsString();
 			for (int k = 0; k < options.size(); k++) {
-				javadocargs[numExtraArgs + k] = (String) options.elementAt(k);
+				javadocargs[numExtraArgs + k] = options.elementAt(k);
 			}
 			for (int k = 0; k < packageList.size(); k++) {
-				javadocargs[numExtraArgs + options.size() + k] = (String) packageList.elementAt(k);
+				javadocargs[numExtraArgs + options.size() + k] = packageList.elementAt(k);
 			}
 			for (int k = 0; k < fileList.size(); k++) {
-				javadocargs[numExtraArgs + options.size() + packageList.size() + k] = (String) fileList.elementAt(k);
+				javadocargs[numExtraArgs + options.size() + packageList.size() + k] = fileList.elementAt(k);
+			}
+			if (LangUtil.is19VMOrGreater()) {
+				options = new Vector<String>();
+				for (String a: javadocargs) {
+					options.add(a);
+				}
 			}
 		} else {
 			javadocargs = new String[options.size() + signatureFiles.length];
 			for (int k = 0; k < options.size(); k++) {
-				javadocargs[k] = (String) options.elementAt(k);
+				javadocargs[k] = options.elementAt(k);
 			}
 			for (int k = 0; k < signatureFiles.length; k++) {
 				javadocargs[options.size() + k] = StructureUtil.translateAjPathName(signatureFiles[k].getCanonicalPath());
 			}
+			for (int k = 0; k < signatureFiles.length; k++) {
+				files.add(StructureUtil.translateAjPathName(signatureFiles[k].getCanonicalPath()));
+			}
 		}
-
-		JavadocRunner.callJavadoc(javadocargs);
+		if (LangUtil.is19VMOrGreater()) {
+			JavadocRunner.callJavadocViaToolProvider(options, files);
+		} else {
+			JavadocRunner.callJavadoc(javadocargs);
+		}
 	}
 
 	/**
@@ -291,7 +306,7 @@
 		removeDeclIDsFromFile("serialized-form.html", true);
 		if (packageList.size() > 0) {
 			for (int p = 0; p < packageList.size(); p++) {
-				removeDeclIDsFromFile(((String) packageList.elementAt(p)).replace('.', '/') + Config.DIR_SEP_CHAR
+				removeDeclIDsFromFile(packageList.elementAt(p).replace('.', '/') + Config.DIR_SEP_CHAR
 						+ "package-summary.html", true);
 			}
 		} else {
@@ -301,6 +316,7 @@
 				return;
 			}
 			files = FileUtil.listFiles(rootDir, new FileFilter() {
+				@Override
 				public boolean accept(File f) {
 					return f.getName().equals("package-summary.html");
 				}
@@ -345,11 +361,11 @@
 		}
 	}
 
-	static Vector getSourcePath() {
-		Vector sourcePath = new Vector();
+	static Vector<String> getSourcePath() {
+		Vector<String> sourcePath = new Vector<String>();
 		boolean found = false;
 		for (int i = 0; i < options.size(); i++) {
-			String currOption = (String) options.elementAt(i);
+			String currOption = options.elementAt(i);
 			if (found && !currOption.startsWith("-")) {
 				sourcePath.add(currOption);
 			}
@@ -363,8 +379,8 @@
 	static File getRootDir() {
 		File rootDir = new File(".");
 		for (int i = 0; i < options.size(); i++) {
-			if (((String) options.elementAt(i)).equals("-d")) {
-				rootDir = new File((String) options.elementAt(i + 1));
+			if (options.elementAt(i).equals("-d")) {
+				rootDir = new File(options.elementAt(i + 1));
 				if (!rootDir.exists()) {
 					rootDir.mkdir();
 					// System.out.println( "Destination directory not found: " +
@@ -455,15 +471,15 @@
 				String line = "";
 				line = br.readLine();
 				StringTokenizer st = new StringTokenizer(line, " ");
-				List argList = new ArrayList();
+				List<String> argList = new ArrayList<String>();
 				while (st.hasMoreElements()) {
-					argList.add(st.nextElement());
+					argList.add(st.nextToken());
 				}
 				// System.err.println(argList);
 				args = new String[argList.size()];
 				int counter = 0;
-				for (Iterator it = argList.iterator(); it.hasNext();) {
-					args[counter] = (String) it.next();
+				for (Iterator<String> it = argList.iterator(); it.hasNext();) {
+					args[counter] = it.next();
 					counter++;
 				}
 			} catch (FileNotFoundException e) {
@@ -474,7 +490,7 @@
 				ioe.printStackTrace();
 			}
 		}
-		List vargs = new LinkedList(Arrays.asList(args));
+		List<String> vargs = new LinkedList<String>(Arrays.asList(args));
 		vargs.add("-Xset:minimalModel=false");
 		parseArgs(vargs, new File(".")); // !!!
 
@@ -488,14 +504,14 @@
 		arg = arg + File.pathSeparator; // makes things easier for ourselves
 		StringTokenizer tokenizer = new StringTokenizer(arg, File.pathSeparator);
 		while (tokenizer.hasMoreElements()) {
-			sourcepath.addElement(tokenizer.nextElement());
+			sourcepath.addElement(tokenizer.nextToken());
 		}
 	}
 
 	static String getSourcepathAsString() {
 		String cPath = "";
 		for (int i = 0; i < sourcepath.size(); i++) {
-			cPath += (String) sourcepath.elementAt(i) + Config.DIR_SEP_CHAR + outputWorkingDir;
+			cPath += sourcepath.elementAt(i) + Config.DIR_SEP_CHAR + outputWorkingDir;
 			if (i != sourcepath.size() - 1) {
 				cPath += File.pathSeparator;
 			}
@@ -668,10 +684,11 @@
 
 					// do this for every item in the classpath
 					for (int c = 0; c < sourcepath.size(); c++) {
-						String path = (String) sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg;
+						String path = sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg;
 						File pkg = new File(path);
 						if (pkg.isDirectory()) {
 							String[] files = pkg.list(new FilenameFilter() {
+								@Override
 								public boolean accept(File dir, String name) {
 									int index1 = name.lastIndexOf(".");
 									int index2 = name.length();
@@ -685,7 +702,7 @@
 								}
 							});
 							for (int j = 0; j < files.length; j++) {
-								filenames.addElement((String) sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg
+								filenames.addElement(sourcepath.elementAt(c) + Config.DIR_SEP_CHAR + arg
 										+ Config.DIR_SEP_CHAR + files[j]);
 							}
 						} else if (c == sourcepath.size()) { // last element on classpath
@@ -705,7 +722,7 @@
 	}
 
 	static void expandAtSignFile(String filename, File currentWorkingDir) {
-		List result = new LinkedList();
+		List<String> result = new LinkedList<String>();
 
 		File atFile = qualifiedFile(filename, currentWorkingDir);
 		String atFileParent = atFile.getParent();
@@ -730,6 +747,7 @@
 					continue;
 				result.add(line);
 			}
+			stream.close();
 		} catch (IOException e) {
 			System.err.println("Error while reading the @ file " + atFile.getPath() + ".\n" + e);
 			System.exit(-1);
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/StructureUtil.java b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/StructureUtil.java
index 6f9ad77..3d866b6 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/StructureUtil.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ajdoc/StructureUtil.java
@@ -31,7 +31,7 @@
 	 * 
 	 * @return null if a relationship of that kind is not found
 	 */
-	public static List /* String */getTargets(IProgramElement node, IRelationship.Kind kind) {
+	public static List<String> getTargets(IProgramElement node, IRelationship.Kind kind) {
 		return getTargets(node, kind, null);
 	}
 
@@ -41,21 +41,21 @@
 	 * 
 	 * @return null if a relationship of that kind is not found
 	 */
-	public static List /* String */getTargets(IProgramElement node, IRelationship.Kind kind, String relName) {
-		List relations = new ArrayList();
-		List rels = node.getModel().getRelationshipMap().get(node);
+	public static List<String> getTargets(IProgramElement node, IRelationship.Kind kind, String relName) {
+		List<IRelationship> relations = new ArrayList<IRelationship>();
+		List<IRelationship> rels = node.getModel().getRelationshipMap().get(node);
 		if (rels != null) {
 			relations.addAll(rels);
 		}
-		for (Iterator iter = node.getChildren().iterator(); iter.hasNext();) {
+		for (Iterator<IProgramElement> iter = node.getChildren().iterator(); iter.hasNext();) {
 			IProgramElement child = (IProgramElement) iter.next();
 			// if we're not a type, or if we are and the child is code, then
 			// we want to get the relationships for this child - this means that the
 			// correct relationships appear against the type in the ajdoc
 			if (!node.getKind().isType() || child.getKind().equals(IProgramElement.Kind.CODE)) {
-				List childRelations = node.getModel().getRelationshipMap().get(child);
+				List<IRelationship> childRelations = node.getModel().getRelationshipMap().get(child);
 				if (childRelations != null) {
-					for (Iterator iterator = childRelations.iterator(); iterator.hasNext();) {
+					for (Iterator<IRelationship> iterator = childRelations.iterator(); iterator.hasNext();) {
 						IRelationship rel = (IRelationship) iterator.next();
 						if (!relations.contains(rel)) {
 							relations.add(rel);
@@ -66,13 +66,12 @@
 		}
 		if (relations == null || relations.isEmpty())
 			return null;
-		List targets = new ArrayList();
-		for (Iterator it = relations.iterator(); it.hasNext();) {
+		List<String> targets = new ArrayList<String>();
+		for (Iterator<IRelationship> it = relations.iterator(); it.hasNext();) {
 			IRelationship rtn = (IRelationship) it.next();
 			if (rtn.getKind().equals(kind) && ((relName != null && relName.equals(rtn.getName())) || relName == null)) {
-				List targs = rtn.getTargets();
-				for (Iterator iter = targs.iterator(); iter.hasNext();) {
-					String element = (String) iter.next();
+				List<String> targs = rtn.getTargets();
+				for (String element: targs) {
 					if (!targets.contains(element)) {
 						targets.add(element);
 					}
@@ -82,14 +81,13 @@
 		return targets;
 	}
 
-	static List /* IProgramElement */getDeclareInterTypeTargets(IProgramElement node, IProgramElement.Kind kind) {
-		List targets = new ArrayList();
-		List stringTargets = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE);
+	static List<IProgramElement> getDeclareInterTypeTargets(IProgramElement node, IProgramElement.Kind kind) {
+		List<IProgramElement> targets = new ArrayList<IProgramElement>();
+		List<String> stringTargets = StructureUtil.getTargets(node, IRelationship.Kind.DECLARE_INTER_TYPE);
 		if (stringTargets == null) {
 			return null;
 		}
-		for (Iterator iter = stringTargets.iterator(); iter.hasNext();) {
-			String element = (String) iter.next();
+		for (String element: stringTargets) {
 			IProgramElement ipe = node.getModel().getHierarchy().findElementForHandle(element);
 			if (ipe != null && ipe.getKind().equals(kind)) {
 				targets.add(ipe);
@@ -98,13 +96,12 @@
 		return targets;
 	}
 
-	public static List/* String */getDeclareTargets(IProgramElement node) {
-		List relations = node.getModel().getRelationshipMap().get(node);
-		List targets = null;
+	public static List<String> getDeclareTargets(IProgramElement node) {
+		List<IRelationship> relations = node.getModel().getRelationshipMap().get(node);
+		List<String> targets = null;
 		if (relations == null)
 			return null;
-		for (Iterator it = relations.iterator(); it.hasNext();) {
-			IRelationship rtn = (IRelationship) it.next();
+		for (IRelationship rtn: relations) {
 			if (rtn.getKind().isDeclareKind()) {
 				targets = rtn.getTargets();
 			}
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/Ajc10.java b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/Ajc10.java
index 686b3b7..065f44e 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/Ajc10.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/Ajc10.java
@@ -12,6 +12,16 @@
 
 package org.aspectj.tools.ant.taskdefs;
 
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Location;
 import org.apache.tools.ant.Project;
@@ -28,23 +38,13 @@
 import org.aspectj.tools.ajc.Main.MessagePrinter;
 import org.aspectj.util.FileUtil;
 
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
 /**
  * Main taskdef class for the AspectJ 1.0 compiler, <code>ajc</code>.
  * See the README and examples/build.xml for more information.
  */
 public class Ajc10 extends MatchingTask {
 
-    private static final List VALID_XOPTIONS;
+    private static final List<String> VALID_XOPTIONS;
     static {
         String[] xs = new String[] 
             {   "lint", "serializableAspects", "targetNearSource", "OcodeSize",
@@ -398,7 +398,8 @@
 
     // ------------------------- operational methods
 
-    public void execute() throws BuildException {
+    @Override
+	public void execute() throws BuildException {
         if (srcdir == null && argfiles == null) {
             throw new BuildException("one of srcdir or argfiles must be set!",
                                      location);
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/AjcTask.java b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/AjcTask.java
index 84bc8e5..93f93ef 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/AjcTask.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/AjcTask.java
@@ -227,6 +227,7 @@
 	private static final int MAX_COMMANDLINE = 4096;
 
 	private static final File DEFAULT_DESTDIR = new File(".") {
+		@Override
 		public String toString() {
 			return "(no destination dir specified)";
 		}
@@ -253,9 +254,9 @@
 
 	public static final String COMMAND_EDITOR_NAME = AjcTask.class.getName() + ".COMMAND_EDITOR";
 
-	static final String[] TARGET_INPUTS = new String[] { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" };
-	static final String[] SOURCE_INPUTS = new String[] { "1.3", "1.4", "1.5", "1.6", "1.7", "1.8" };
-	static final String[] COMPLIANCE_INPUTS = new String[] { "-1.3", "-1.4", "-1.5", "-1.6", "-1.7", "-1.8" };
+	static final String[] TARGET_INPUTS = new String[] { "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10" };
+	static final String[] SOURCE_INPUTS = new String[] { "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "9", "10" };
+	static final String[] COMPLIANCE_INPUTS = new String[] { "-1.3", "-1.4", "-1.5", "-1.6", "-1.7", "-1.8", "-1.9", "-9", "-10" };
 
 	private static final ICommandEditor COMMAND_EDITOR;
 
@@ -326,6 +327,8 @@
 	private File xweaveDir;
 	private String xdoneSignal;
 
+	private List<CompilerArg> compilerArgs;
+	
 	// ----- added by adapter - integrate better?
 	private List /* File */adapterFiles;
 	private String[] adapterArguments;
@@ -390,6 +393,7 @@
 		// need declare for "all fields initialized in ..."
 		adapterArguments = null;
 		adapterFiles = new ArrayList();
+		compilerArgs = null;
 		argfiles = null;
 		inxmlfiles = null;
 		executing = false;
@@ -481,7 +485,7 @@
   public void setProcessor(String processors) {
     cmd.addFlagged("-processor", processors);
   }
-
+  
   /**
    * -processorpath path
    * Specify where to find annotation processors; if this option is not used, the class path will be searched for processors.
@@ -694,6 +698,33 @@
 	public Commandline.Argument createJvmarg() {
 		return this.javaCmd.createVmArgument();
 	}
+	
+	public static class CompilerArg {
+
+		private String value;
+		
+		public String getValue() {
+			return value;
+		}
+		
+		public void setValue(String value) {
+			this.value = value;
+		}
+		
+		@Override
+		public String toString() {
+			return value;
+		}
+	}
+
+	public CompilerArg createCompilerarg() {
+		 CompilerArg compilerArg = new CompilerArg();
+		 if (compilerArgs == null) {
+			 compilerArgs = new ArrayList<CompilerArg>();
+		 }
+		 compilerArgs.add(compilerArg);
+		 return compilerArg;
+	}
 
 	// ----------------
 	public void setTagFile(File file) {
@@ -1076,6 +1107,7 @@
 	 * 
 	 * @exception BuildException if the compilation has problems or if there were compiler errors and failonerror is true.
 	 */
+	@Override
 	public void execute() throws BuildException {
 		this.logger = new TaskLogger(this);
 		if (executing) {
@@ -1273,6 +1305,7 @@
 			Main newmain = new Main();
 			newmain.setHolder(holder);
 			newmain.setCompletionRunner(new Runnable() {
+				@Override
 				public void run() {
 					doCompletionTasks();
 				}
@@ -1425,9 +1458,6 @@
 
 	/**
 	 * Execute in another process using the same JDK and the base directory of the project. XXX correct?
-	 * 
-	 * @param args
-	 * @return
 	 */
 	protected int execInOtherVM(String[] args) {
 		try {
@@ -1437,28 +1467,28 @@
 					Project.MSG_WARN);
 
 			// replace above two lines with what follows as an aid to debugging when running the unit tests....
-			// LogStreamHandler handler = new LogStreamHandler(this,
-			// Project.MSG_INFO, Project.MSG_WARN) {
-			//
-			// ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			// /* (non-Javadoc)
-			// * @see org.apache.tools.ant.taskdefs.PumpStreamHandler#createProcessOutputPump(java.io.InputStream,
-			// java.io.OutputStream)
-			// */
-			// protected void createProcessErrorPump(InputStream is,
-			// OutputStream os) {
-			// super.createProcessErrorPump(is, baos);
-			// }
-			//
-			// /* (non-Javadoc)
-			// * @see org.apache.tools.ant.taskdefs.LogStreamHandler#stop()
-			// */
-			// public void stop() {
-			// byte[] written = baos.toByteArray();
-			// System.err.print(new String(written));
-			// super.stop();
-			// }
-			// };
+//			LogStreamHandler handler = new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN) {
+//
+//				ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//
+//				/*
+//				 * @see
+//				 * org.apache.tools.ant.taskdefs.PumpStreamHandler#createProcessOutputPump(java.
+//				 * io.InputStream, java.io.OutputStream)
+//				 */
+//				protected void createProcessErrorPump(InputStream is, OutputStream os) {
+//					super.createProcessErrorPump(is, baos);
+//				}
+//
+//				/*
+//				 * @see org.apache.tools.ant.taskdefs.LogStreamHandler#stop()
+//				 */
+//				public void stop() {
+//					byte[] written = baos.toByteArray();
+//					System.err.print(new String(written));
+//					super.stop();
+//				}
+//			};
 
 			Execute exe = new Execute(handler);
 			exe.setAntRun(project);
@@ -1483,7 +1513,7 @@
 
 	// ------------------------------ setup and reporting
 	/** @return null if path null or empty, String rendition otherwise */
-	protected static void addFlaggedPath(String flag, Path path, List list) {
+	protected static void addFlaggedPath(String flag, Path path, List<String> list) {
 		if (!LangUtil.isEmpty(flag) && ((null != path) && (0 < path.size()))) {
 			list.add(flag);
 			list.add(path.toString());
@@ -1493,7 +1523,7 @@
 	/**
 	 * Add to list any path or plural arguments.
 	 */
-	protected void addListArgs(List list) throws BuildException {
+	protected void addListArgs(List<String> list) throws BuildException {
 		addFlaggedPath("-classpath", classpath, list);
 		addFlaggedPath("-bootclasspath", bootclasspath, list);
 		addFlaggedPath("-extdirs", extdirs, list);
@@ -1501,6 +1531,12 @@
 		addFlaggedPath("-injars", injars, list);
 		addFlaggedPath("-inpath", inpath, list);
 		addFlaggedPath("-sourceroots", sourceRoots, list);
+		
+		if (this.compilerArgs != null) {
+			for (CompilerArg compilerArg:compilerArgs) {
+				list.add(compilerArg.toString());
+			}
+		}
 
 		if (argfiles != null) {
 			String[] files = argfiles.list();
@@ -2073,6 +2109,7 @@
 		 * 
 		 * @see org.aspectj.bridge.IMessageHandler#handleMessage(org.aspectj.bridge.IMessage)
 		 */
+		@Override
 		public boolean handleMessage(IMessage message) throws AbortException {
 			Kind messageKind = message.getKind();
 			String messageText = message.toString();
@@ -2107,6 +2144,7 @@
 		 * 
 		 * @see org.aspectj.bridge.IMessageHandler#isIgnoring(org.aspectj.bridge.IMessage.Kind)
 		 */
+		@Override
 		public boolean isIgnoring(Kind kind) {
 			return false;
 		}
@@ -2116,6 +2154,7 @@
 		 * 
 		 * @see org.aspectj.bridge.IMessageHandler#dontIgnore(org.aspectj.bridge.IMessage.Kind)
 		 */
+		@Override
 		public void dontIgnore(Kind kind) {
 		}
 
@@ -2124,6 +2163,7 @@
 		 * 
 		 * @see org.aspectj.bridge.IMessageHandler#ignore(org.aspectj.bridge.IMessage.Kind)
 		 */
+		@Override
 		public void ignore(Kind kind) {
 		}
 
diff --git a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/compilers/Ajc.java b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/compilers/Ajc.java
index b507522..690cccf 100644
--- a/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/compilers/Ajc.java
+++ b/org.aspectj.ajde/source/org/aspectj/tools/ant/taskdefs/compilers/Ajc.java
@@ -12,13 +12,6 @@
 
 package org.aspectj.tools.ant.taskdefs.compilers;
 
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.taskdefs.LogOutputStream;
-import org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter;
-import org.apache.tools.ant.types.Commandline;
-
 import java.io.File;
 import java.io.PrintStream;
 import java.util.ArrayList;
@@ -26,6 +19,13 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.taskdefs.Javac;
+import org.apache.tools.ant.taskdefs.LogOutputStream;
+import org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter;
+import org.apache.tools.ant.types.Commandline;
+
 /**
  * Ajc uses this as the CompilerAdapter.
  *
@@ -45,15 +45,15 @@
     /**
      * List of arguments allowed only by javac and <b>not</b> ajc.
      */    
-    final static List javacOnlyFlags
+    final static List<String> javacOnlyFlags
         = finalList(new String[] { "-g:none", "-g:lines",
         "-g:vars", "-g:source", "-nowarn"});
-    final static List javacOnlyArgs  
+    final static List<String> javacOnlyArgs  
         = finalList(new String[] { "-sourcepath",
         "-encoding", "-target" });
 
-    private static List finalList(String[] args) {
-        List result = new ArrayList();
+    private static List<String> finalList(String[] args) {
+        List<String> result = new ArrayList<String>();
         result.addAll(Arrays.asList(args));
         return Collections.unmodifiableList(result);
     }
@@ -65,7 +65,8 @@
      * @return true if a good compile, false otherwise.
      * @throws org.apache.tools.ant.BuildException
      */
-    public boolean execute() throws BuildException {
+    @Override
+	public boolean execute() throws BuildException {
         attributes.log("Using AJC", Project.MSG_VERBOSE);
         return compile(addAjcOptions(setupJavacCommand()));
     }
@@ -185,7 +186,8 @@
      * Logs the compilation parameters, adds the files to compile and logs the 
      * &qout;niceSourceList&quot;
      */
-    protected void logAndAddFilesToCompile(Commandline cmd) {
+    @Override
+	protected void logAndAddFilesToCompile(Commandline cmd) {
 
         // Same behavior as DefaultCompilerAdapter.logAndAddFilesToCompile
         attributes.log("Compilation args: " + cmd.toString(), Project.MSG_VERBOSE);
diff --git a/org.aspectj.runtime/classes/org/aspectj/runtime/reflect/Factory.class b/org.aspectj.runtime/classes/org/aspectj/runtime/reflect/Factory.class
index 7e529df..5377225 100644
--- a/org.aspectj.runtime/classes/org/aspectj/runtime/reflect/Factory.class
+++ b/org.aspectj.runtime/classes/org/aspectj/runtime/reflect/Factory.class
Binary files differ
diff --git a/org.aspectj.runtime/source/org/aspectj/runtime/reflect/Factory.java b/org.aspectj.runtime/source/org/aspectj/runtime/reflect/Factory.java
index 06e0738..759a136 100644
--- a/org.aspectj.runtime/source/org/aspectj/runtime/reflect/Factory.java
+++ b/org.aspectj.runtime/source/org/aspectj/runtime/reflect/Factory.java
@@ -1,6 +1,6 @@
 /* *******************************************************************
  * Copyright (c) 1999-2001 Xerox Corporation, 
- *               2002 Palo Alto Research Center, Incorporated (PARC).
+ *               2002-2018 Palo Alto Research Center, Incorporated (PARC), Contributors
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
@@ -8,9 +8,10 @@
  * http://www.eclipse.org/legal/epl-v10.html 
  *  
  * Contributors: 
- *     Xerox/PARC     initial implementation 
+ *      Xerox/PARC    initial implementation 
  *    Alex Vasseur    new factory methods for variants of JP
- *    Abraham Nevado  new factory methods for collapsed SJPs
+ *  Abraham Nevado    new factory methods for collapsed SJPs
+ *    Andy Clement    new factory methods that rely on LDC <class>
  * ******************************************************************/
 
 package org.aspectj.runtime.reflect;
@@ -38,6 +39,9 @@
 	ClassLoader lookupClassLoader;
 	String filename;
 	int count;
+	
+	private static final Class[] NO_TYPES = new Class[0];
+	private static final String[] NO_STRINGS = new String[0];
 
 	static Hashtable prims = new Hashtable();
 	static {
@@ -55,7 +59,7 @@
 	static Class makeClass(String s, ClassLoader loader) {
 		if (s.equals("*"))
 			return null;
-		Class ret = (Class) prims.get(s);
+		Class ret = (Class)prims.get(s);
 		if (ret != null)
 			return ret;
 		try {
@@ -113,6 +117,105 @@
 		Signature sig = this.makeMethodSig(modifiers, methodName, declaringType, paramTypes, paramNames, "", returnType);
 		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(l, -1));
 	}
+	
+	// These are direct routes to creating thisJoinPoint and thisEnclosingJoinPoint objects
+	// added in 1.9.1
+	
+	public JoinPoint.StaticPart makeMethodSJP(String kind, int modifiers, String methodName, Class declaringType, Class[] paramTypes, String[] paramNames, Class[] exceptionTypes, Class returnType, int line) {
+		Signature sig = this.makeMethodSig(modifiers, methodName, declaringType, paramTypes==null?NO_TYPES:paramTypes, 
+			paramNames==null?NO_STRINGS:paramNames, exceptionTypes==null?NO_TYPES:exceptionTypes, returnType == null?Void.TYPE:returnType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));		
+	}
+
+	public JoinPoint.EnclosingStaticPart makeMethodESJP(String kind, int modifiers, String methodName, Class declaringType, Class[] paramTypes, String[] paramNames, Class[] exceptionTypes, Class returnType, int line) {
+		Signature sig = this.makeMethodSig(modifiers, methodName, declaringType, paramTypes==null?NO_TYPES:paramTypes,
+				paramNames==null?NO_STRINGS:paramNames, exceptionTypes==null?NO_TYPES:exceptionTypes, returnType == null?Void.TYPE:returnType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));		
+	}
+
+	public JoinPoint.StaticPart makeConstructorSJP(String kind, int modifiers, Class declaringType, Class[] parameterTypes, String[] parameterNames, Class[] exceptionTypes, int line) {
+		ConstructorSignatureImpl sig = new ConstructorSignatureImpl(modifiers, declaringType, parameterTypes==null?NO_TYPES:parameterTypes, parameterNames==null?NO_STRINGS:parameterNames,
+				exceptionTypes==null?NO_TYPES:exceptionTypes);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeConstructorESJP(String kind, int modifiers, Class declaringType, Class[] parameterTypes, String[] parameterNames, Class[] exceptionTypes, int line) {
+		ConstructorSignatureImpl sig = new ConstructorSignatureImpl(modifiers, declaringType, parameterTypes==null?NO_TYPES:parameterTypes, parameterNames==null?NO_STRINGS:parameterNames,
+				exceptionTypes==null?NO_TYPES:exceptionTypes);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.StaticPart makeCatchClauseSJP(String kind, Class declaringType, Class parameterType, String parameterName, int line) {
+		CatchClauseSignatureImpl sig = new CatchClauseSignatureImpl(declaringType, parameterType, parameterName==null?"":parameterName);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeCatchClauseESJP(String kind, Class declaringType, Class parameterType, String parameterName, int line) {
+		CatchClauseSignatureImpl sig = new CatchClauseSignatureImpl(declaringType, parameterType, parameterName==null?"":parameterName);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.StaticPart makeFieldSJP(String kind, int modifiers, String name, Class declaringType, Class fieldType, int line) {
+		FieldSignatureImpl sig = new FieldSignatureImpl(modifiers, name, declaringType, fieldType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeFieldESJP(String kind, int modifiers, String name, Class declaringType, Class fieldType, int line) {
+		FieldSignatureImpl sig = new FieldSignatureImpl(modifiers, name, declaringType, fieldType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+	
+	public JoinPoint.StaticPart makeInitializerSJP(String kind, int modifiers, Class declaringType, int line) {
+		InitializerSignatureImpl sig = new InitializerSignatureImpl(modifiers, declaringType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeInitializerESJP(String kind, int modifiers, Class declaringType, int line) {
+		InitializerSignatureImpl sig = new InitializerSignatureImpl(modifiers, declaringType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+	
+	public JoinPoint.StaticPart makeLockSJP(String kind, Class declaringType, int line) {
+		LockSignatureImpl sig = new LockSignatureImpl(declaringType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeLockESJP(String kind, Class declaringType, int line) {
+		LockSignatureImpl sig = new LockSignatureImpl(declaringType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.StaticPart makeUnlockSJP(String kind, Class declaringType, int line) {
+		UnlockSignatureImpl sig = new UnlockSignatureImpl(declaringType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeUnlockESJP(String kind, Class declaringType, int line) {
+		UnlockSignatureImpl sig = new UnlockSignatureImpl(declaringType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.StaticPart makeAdviceSJP(String kind, int modifiers, String name, Class declaringType, Class[] parameterTypes,
+			String[] parameterNames, Class[] exceptionTypes, Class returnType, int line) {
+		AdviceSignatureImpl sig = new AdviceSignatureImpl(modifiers, name, declaringType,
+				parameterTypes==null?NO_TYPES:parameterTypes,
+				parameterNames==null?NO_STRINGS:parameterNames,
+				exceptionTypes==null?NO_TYPES:exceptionTypes,
+				returnType==null?Void.TYPE:returnType);
+		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+
+	public JoinPoint.EnclosingStaticPart makeAdviceESJP(String kind, int modifiers, String name, Class declaringType, Class[] parameterTypes,
+			String[] parameterNames, Class[] exceptionTypes, Class returnType, int line) {
+		AdviceSignatureImpl sig = new AdviceSignatureImpl(modifiers, name, declaringType,
+				parameterTypes==null?NO_TYPES:parameterTypes,
+				parameterNames==null?NO_STRINGS:parameterNames,
+				exceptionTypes==null?NO_TYPES:exceptionTypes,
+				returnType==null?Void.TYPE:returnType);
+		return new JoinPointImpl.EnclosingStaticPartImpl(count++, kind, sig, makeSourceLoc(line, -1));	
+	}
+		
+	// ---
 
 	public JoinPoint.StaticPart makeSJP(String kind, Signature sig, SourceLocation loc) {
 		return new JoinPointImpl.StaticPartImpl(count++, kind, sig, loc);
@@ -181,12 +284,16 @@
 		ret.setLookupClassLoader(lookupClassLoader);
 		return ret;
 	}
-
+	
 	public MethodSignature makeMethodSig(String modifiers, String methodName, String declaringType, String paramTypes,
 			String paramNames, String exceptionTypes, String returnType) {
-		int modifiersAsInt = Integer.parseInt(modifiers, 16);
-
 		Class declaringTypeClass = makeClass(declaringType, lookupClassLoader);
+		return makeMethodSig(modifiers, methodName, declaringTypeClass, paramTypes, paramNames, exceptionTypes, returnType);
+	}
+	
+	public MethodSignature makeMethodSig(String modifiers, String methodName, Class declaringTypeClass, String paramTypes,
+			String paramNames, String exceptionTypes, String returnType) {
+		int modifiersAsInt = Integer.parseInt(modifiers, 16);
 
 		StringTokenizer st = new StringTokenizer(paramTypes, ":");
 		int numParams = st.countTokens();
@@ -216,8 +323,8 @@
 
 	public MethodSignature makeMethodSig(int modifiers, String name, Class declaringType, Class[] parameterTypes,
 			String[] parameterNames, Class[] exceptionTypes, Class returnType) {
-		MethodSignatureImpl ret = new MethodSignatureImpl(modifiers, name, declaringType, parameterTypes, parameterNames,
-				exceptionTypes, returnType);
+		MethodSignatureImpl ret = new MethodSignatureImpl(modifiers, name, declaringType, parameterTypes==null?NO_TYPES:parameterTypes, parameterNames,
+				exceptionTypes == null?NO_TYPES:exceptionTypes, returnType);
 		ret.setLookupClassLoader(lookupClassLoader);
 		return ret;
 	}
diff --git a/org.aspectj.weaver/classes/META-INF/MANIFEST.MF b/org.aspectj.weaver/classes/META-INF/MANIFEST.MF
index e6c5db1..52757ef 100644
--- a/org.aspectj.weaver/classes/META-INF/MANIFEST.MF
+++ b/org.aspectj.weaver/classes/META-INF/MANIFEST.MF
@@ -1,4 +1,5 @@
 Manifest-Version: 1.0
+Automatic-Module-Name: org.aspectj.weaver
 Name: org/aspectj/weaver/
 Specification-Title: AspectJ Weaver Classes
 Specification-Version: DEVELOPMENT
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationVisitor.class
index 07186ab..5aef756 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationVisitor.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationWriter.class
index 6a9a293..9189fc5 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationWriter.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/AnnotationWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute$Set.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute$Set.class
new file mode 100644
index 0000000..f5946af
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute$Set.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute.class
index 0802e80..bb1c613 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Attribute.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ByteVector.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ByteVector.class
index 5eb2b8c..e729a1b 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ByteVector.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ByteVector.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassReader.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassReader.class
index b30ef22..63f7196 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassReader.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassReader.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassVisitor.class
index a6a3460..5ae51d9 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassVisitor.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassWriter.class
index 3ec2c1e..b8319a2 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassWriter.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ClassWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Constants.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Constants.class
new file mode 100644
index 0000000..2e1b830
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Constants.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Context.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Context.class
index 212f705..0f91394 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Context.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Context.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/CurrentFrame.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/CurrentFrame.class
new file mode 100644
index 0000000..286afaa
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/CurrentFrame.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Edge.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Edge.class
index ec3129f..580a0c5 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Edge.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Edge.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldVisitor.class
index 6e0a1a5..76f5464 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldVisitor.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldWriter.class
index a051623..cc8e192 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldWriter.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/FieldWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Frame.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Frame.class
index 30ae50d..69ac64e 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Frame.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Frame.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handle.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handle.class
index 4d595c6..4d583f2 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handle.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handle.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handler.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handler.class
index 0ca7966..b7cbecf 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handler.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Handler.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Item.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Item.class
deleted file mode 100644
index a36b3f3..0000000
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Item.class
+++ /dev/null
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Label.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Label.class
index d03491c..d1fb9c5 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Label.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Label.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodVisitor.class
index 4318ff0..18ceda9 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodVisitor.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodWriter.class
index df39782..1ea8aed 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodWriter.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/MethodWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleVisitor.class
new file mode 100644
index 0000000..ce79cde
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleWriter.class
new file mode 100644
index 0000000..6d43c92
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/ModuleWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Opcodes.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Opcodes.class
index bff88bf..121b768 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Opcodes.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Opcodes.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Symbol.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Symbol.class
new file mode 100644
index 0000000..f1dd475
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Symbol.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable$Entry.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable$Entry.class
new file mode 100644
index 0000000..95f3053
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable$Entry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable.class
new file mode 100644
index 0000000..e1ef847
--- /dev/null
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/SymbolTable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Type.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Type.class
index 20c4413..a8b771c 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/Type.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/Type.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypePath.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypePath.class
index 594eff8..f8be697 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypePath.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypePath.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypeReference.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypeReference.class
index a2a857f..20eb555 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypeReference.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/TypeReference.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureReader.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureReader.class
index a0cc087..42207d8 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureReader.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureReader.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureVisitor.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureVisitor.class
index d059748..59359a4 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureVisitor.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureWriter.class b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureWriter.class
index 34ebe87..4a7f9ac 100644
--- a/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureWriter.class
+++ b/org.aspectj.weaver/classes/aj/org/objectweb/asm/signature/SignatureWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Constants.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Constants.class
index 386deb6..e7927f4 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Constants.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Constants.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ConstantsInitializer.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ConstantsInitializer.class
index 94c3cf1..00ac850 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ConstantsInitializer.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ConstantsInitializer.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ExceptionConstants.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ExceptionConstants.class
index 72ebc38..034c041 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ExceptionConstants.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/ExceptionConstants.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Repository.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Repository.class
index f527911..262e58a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Repository.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/Repository.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AnnotationDefault.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AnnotationDefault.class
index c627f03..93615df 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AnnotationDefault.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AnnotationDefault.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Attribute.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Attribute.class
index 38c8a5d..934a4fd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Attribute.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Attribute.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AttributeUtils.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AttributeUtils.class
index f5da420..39f2926 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AttributeUtils.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/AttributeUtils.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods$BootstrapMethod.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods$BootstrapMethod.class
index d9824ac..b68a06d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods$BootstrapMethod.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods$BootstrapMethod.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods.class
index 43c433c..bd3957b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/BootstrapMethods.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassFormatException.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassFormatException.class
index 33f41f0..603b066 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassFormatException.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassFormatException.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassParser.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassParser.class
index 9e4bf14..dae0bb2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassParser.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassParser.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassVisitor.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassVisitor.class
index 12f64df..2d1a292 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ClassVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Code.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Code.class
index 22690b4..d94a57e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Code.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Code.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/CodeException.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/CodeException.class
index 70a2008..458e782 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/CodeException.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/CodeException.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Constant.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Constant.class
index d688574..b02d4c2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Constant.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Constant.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantCP.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantCP.class
index 9092410..8ab6869 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantCP.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantCP.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantClass.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantClass.class
index ec8b531..5dfe07d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantClass.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantClass.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantDouble.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantDouble.class
index a7bffad..5c1f384 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantDouble.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantDouble.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFieldref.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFieldref.class
index 5bbfc63..2a1bab2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFieldref.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFieldref.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFloat.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFloat.class
index 0d016ad..3cf44ac 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFloat.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantFloat.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInteger.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInteger.class
index 0fee47a..5fcfd28 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInteger.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInteger.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInterfaceMethodref.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInterfaceMethodref.class
index ee46d6d..55e5c8a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInterfaceMethodref.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInterfaceMethodref.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInvokeDynamic.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInvokeDynamic.class
index 2841582..d7d32d3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInvokeDynamic.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantInvokeDynamic.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantLong.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantLong.class
index b63a866..74692a0 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantLong.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantLong.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.class
index cfcd4d4..282c74a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodHandle.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodType.class
index 051663b..48fe43d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodref.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodref.class
index 788c317..7970fe7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodref.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantMethodref.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantModule.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantModule.class
new file mode 100644
index 0000000..5320222
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantModule.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantNameAndType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantNameAndType.class
index 939eaff..b60b4dd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantNameAndType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantNameAndType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantObject.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantObject.class
index 5c067bc..38bdd08 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantObject.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantObject.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPackage.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPackage.class
new file mode 100644
index 0000000..fad81ef
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPackage.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPool.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPool.class
index 71cd4cb..e50fdd9 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPool.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantPool.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantString.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantString.class
index aeb3d7d..f88a6cd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantString.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantString.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantUtf8.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantUtf8.class
index fceced5..069cb84 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantUtf8.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantUtf8.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantValue.class
index a5e0997..8a6248f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ConstantValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Deprecated.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Deprecated.class
index 320e0e8..ece5e14 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Deprecated.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Deprecated.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/EnclosingMethod.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/EnclosingMethod.class
index 8454208..dbc7bcb 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/EnclosingMethod.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/EnclosingMethod.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ExceptionTable.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ExceptionTable.class
index 697d72c..8812b01 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ExceptionTable.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ExceptionTable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Field.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Field.class
index 4074457..5e46297 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Field.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Field.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/FieldOrMethod.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/FieldOrMethod.class
index 8d593f2..c47ef53 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/FieldOrMethod.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/FieldOrMethod.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClass.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClass.class
index 8f65fa5..c38792d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClass.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClass.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClasses.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClasses.class
index 19c8bf3..b339091 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClasses.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/InnerClasses.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/JavaClass.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/JavaClass.class
index c9521a9..793b1f2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/JavaClass.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/JavaClass.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumber.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumber.class
index 43dee45..0a81f0b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumber.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumber.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumberTable.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumberTable.class
index 17b684c..1413c15 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumberTable.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LineNumberTable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariable.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariable.class
index 02992e6..232e069 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariable.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTable.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTable.class
index 0c7a5ec..e1c8d2c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTable.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTypeTable.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTypeTable.class
index 83933ea..0e42df7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTypeTable.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/LocalVariableTypeTable.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Method.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Method.class
index 7a8c145..9e2bf75 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Method.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Method.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/MethodParameters.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/MethodParameters.class
index 71c6b82..9ca6934 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/MethodParameters.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/MethodParameters.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Modifiers.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Modifiers.class
index e6833fe..73b4d65 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Modifiers.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Modifiers.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Export.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Export.class
new file mode 100644
index 0000000..1c7ed09
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Export.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Open.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Open.class
new file mode 100644
index 0000000..1f6d6fe
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Open.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Provide.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Provide.class
new file mode 100644
index 0000000..3e2448b
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Provide.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Require.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Require.class
new file mode 100644
index 0000000..13067c6
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Require.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Uses.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Uses.class
new file mode 100644
index 0000000..7690b98
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module$Uses.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module.class
new file mode 100644
index 0000000..7c957fa
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Module.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModuleMainClass.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModuleMainClass.class
new file mode 100644
index 0000000..a74bac0
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModuleMainClass.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModulePackages.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModulePackages.class
new file mode 100644
index 0000000..42a3aac
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/ModulePackages.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Node.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Node.class
index ff00584..89cd38d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Node.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Node.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature$MyByteArrayInputStream.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature$MyByteArrayInputStream.class
index 350d1d6..bd33163 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature$MyByteArrayInputStream.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature$MyByteArrayInputStream.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature.class
index 8e8556c..6ea62eb 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Signature.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SimpleConstant.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SimpleConstant.class
index 0b4ffbe..efb2d45 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SimpleConstant.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SimpleConstant.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SourceFile.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SourceFile.class
index 55ee480..681f3b8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SourceFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/SourceFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMap.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMap.class
index aa72b7b..eaaddb4 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMap.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMap.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapEntry.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapEntry.class
index 2b77165..36947f3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapEntry.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapEntry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapType.class
index daf965c..9f2f363 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/StackMapType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Synthetic.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Synthetic.class
index 3f3d807..d6cfdfe 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Synthetic.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Synthetic.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Unknown.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Unknown.class
index 2a88ff1..d01a933 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Unknown.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Unknown.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility$ResultHolder.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility$ResultHolder.class
index aad1ee8..16dde7c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility$ResultHolder.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility$ResultHolder.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility.class
index d46bab0..4f01e48 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/Utility.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationElementValue.class
index 5b8a42f..1a7775f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationGen.class
index a1745a1..3e2de0a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/AnnotationGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ArrayElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ArrayElementValue.class
index 3bfa7f0..26a4d3a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ArrayElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ArrayElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ClassElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ClassElementValue.class
index b98f2f3..f2c14cd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ClassElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ClassElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ElementValue.class
index 09edf52..a23c7fa 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/ElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/EnumElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/EnumElementValue.class
index efd6264..b4c505f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/EnumElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/EnumElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/NameValuePair.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/NameValuePair.class
index 74fbd08..01cac70 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/NameValuePair.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/NameValuePair.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeAnnos.class
index 47fbda3..a01ab58 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisAnnos.class
index 344a634..260d3f1 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisParamAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisParamAnnos.class
index 69e67c3..610ae23 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisParamAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisParamAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisTypeAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisTypeAnnos.class
index 1c3861c..523a308 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisTypeAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeInvisTypeAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeParamAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeParamAnnos.class
index f408f50..6fc9cf9 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeParamAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeParamAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeTypeAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeTypeAnnos.class
index f361214..6c7c08f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeTypeAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeTypeAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisAnnos.class
index ea1626f..5c9861b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisParamAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisParamAnnos.class
index f58ba68..299d28d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisParamAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisParamAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisTypeAnnos.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisTypeAnnos.class
index f1b275a..af5b352 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisTypeAnnos.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/RuntimeVisTypeAnnos.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/SimpleElementValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/SimpleElementValue.class
index 42480ad..3cf80d3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/SimpleElementValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/SimpleElementValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/TypeAnnotationGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/TypeAnnotationGen.class
index 759f825..78baeae 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/TypeAnnotationGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/classfile/annotation/TypeAnnotationGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ArrayType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ArrayType.class
index 75894ad..e6c8f79 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ArrayType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ArrayType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BasicType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BasicType.class
index 8d08912..b046c6d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BasicType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BasicType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BranchHandle.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BranchHandle.class
index 5614aea..fd32a0d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BranchHandle.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/BranchHandle.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$ConstructorComparator.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$ConstructorComparator.class
index 880a84c..e4d98e0 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$ConstructorComparator.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$ConstructorComparator.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$FieldComparator.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$FieldComparator.class
index 265e600..7b68220 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$FieldComparator.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$FieldComparator.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$MethodComparator.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$MethodComparator.class
index df70cdd..6aba129 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$MethodComparator.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen$MethodComparator.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen.class
index e3b3338..514b59f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGenException.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGenException.class
index 5b4dbac..5c91e29 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGenException.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ClassGenException.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/CodeExceptionGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/CodeExceptionGen.class
index 2981f98..3b8419a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/CodeExceptionGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/CodeExceptionGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGen.class
index dd54f0b..735aaf8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGenOrMethodGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGenOrMethodGen.class
index 18c63df..d4d6d52 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGenOrMethodGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldGenOrMethodGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldInstruction.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldInstruction.class
index 40c92e2..5f7b7e8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldInstruction.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldInstruction.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldOrMethod.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldOrMethod.class
index 299d3a2..4de2817 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldOrMethod.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/FieldOrMethod.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/IINC.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/IINC.class
index 14c78b2..f22ae9f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/IINC.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/IINC.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/INVOKEINTERFACE.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/INVOKEINTERFACE.class
index ebcfc6b..c0bcd50 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/INVOKEINTERFACE.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/INVOKEINTERFACE.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstVisitor.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstVisitor.class
index 981ff28..20e5b97 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Instruction.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Instruction.class
index 707d6bd..9633b07 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Instruction.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Instruction.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionBranch.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionBranch.class
index 878e591..14057bc 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionBranch.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionBranch.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionByte.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionByte.class
index bea6c67..fd4ebc5 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionByte.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionByte.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCLV.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCLV.class
index 8b887f0..430c11f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCLV.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCLV.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCP.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCP.class
index 643e42f..5850a52 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCP.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionCP.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants$Clinit.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants$Clinit.class
index 1c6bf4b..df842ee 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants$Clinit.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants$Clinit.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants.class
index 89f2058..dc84057 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionConstants.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionFactory.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionFactory.class
index 9245033..7d481e8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionFactory.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionFactory.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionHandle.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionHandle.class
index a16c5aa..c8cc36b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionHandle.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionHandle.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionLV.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionLV.class
index 96ba76c..25b9675 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionLV.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionLV.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList$1.class
index 35ac07b..6a011b8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList.class
index 7f831f1..128ce09 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionList.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionSelect.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionSelect.class
index 8f6a4b3..33ad3e5 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionSelect.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionSelect.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionShort.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionShort.class
index c944c6a..fa41fa3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionShort.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionShort.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionTargeter.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionTargeter.class
index 6c537db..41f20d7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionTargeter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InstructionTargeter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeDynamic.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeDynamic.class
index d0c2901..e5fb261 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeDynamic.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeDynamic.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeInstruction.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeInstruction.class
index c6d9200..a71855f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeInstruction.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/InvokeInstruction.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LOOKUPSWITCH.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LOOKUPSWITCH.class
index cdaf54e..d4109fe 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LOOKUPSWITCH.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LOOKUPSWITCH.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberGen.class
index 6508a56..2251c33 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberTag.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberTag.class
index ca3afab..24b0629 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberTag.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LineNumberTag.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableGen.class
index ef3e76a..d66bb00 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableTag.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableTag.class
index 796aa71..a38a687 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableTag.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/LocalVariableTag.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MULTIANEWARRAY.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MULTIANEWARRAY.class
index 0419cf8..66e90fe 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MULTIANEWARRAY.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MULTIANEWARRAY.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchStack.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchStack.class
index a85c99f..c2a99ec 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchStack.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchStack.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchTarget.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchTarget.class
index b99db96..0925c33 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchTarget.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen$BranchTarget.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen.class
index 2b19e29..eb3eaa3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/MethodGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ObjectType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ObjectType.class
index 94f34a3..4265c6b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ObjectType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ObjectType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/RET.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/RET.class
index 15b93c3..fcf9d70 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/RET.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/RET.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReferenceType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReferenceType.class
index e7a356b..3464ca5 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReferenceType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReferenceType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReturnaddressType.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReturnaddressType.class
index c342c68..2e6abca 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReturnaddressType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/ReturnaddressType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/SwitchBuilder.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/SwitchBuilder.class
index a785997..4587bfa 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/SwitchBuilder.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/SwitchBuilder.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TABLESWITCH.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TABLESWITCH.class
index 5f5089d..00be84a 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TABLESWITCH.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TABLESWITCH.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Tag.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Tag.class
index b4f4163..5802997 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Tag.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Tag.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TargetLostException.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TargetLostException.class
index 90285cb..dd9b339 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TargetLostException.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/TargetLostException.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$1.class
index 6d20b96..14be1a8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$2.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$2.class
index b735973..00a1b19 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$2.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$2.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$TypeHolder.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$TypeHolder.class
index f5a8533..a5e8138 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$TypeHolder.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type$TypeHolder.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type.class
index 054ffeb..a784b23 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/generic/Type.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence$ByteArrayStream.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence$ByteArrayStream.class
index 0034f3f..dfe2e79 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence$ByteArrayStream.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence$ByteArrayStream.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence.class
index 5e66b55..caf1dbb 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ByteSequence.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderReference.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderReference.class
index a5925d1..f86a623 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderReference.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderReference.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap$SpecialValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap$SpecialValue.class
index 699ebc4..cf3d2ff 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap$SpecialValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap$SpecialValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap.class
index 95b894c..f565075 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository$SoftHashMap.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository.class
index bfea261..3025360 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassLoaderRepository.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$1.class
index 0a2e9f0..b33bb8c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$ClassFile.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$ClassFile.class
index fcdc3d0..0871864 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$ClassFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$ClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir$1.class
index 5326095..d8bd638 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir.class
index 6d85b7d..2ea8ee6 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Dir.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$1.class
new file mode 100644
index 0000000..e911c44
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$ByteBasedClassFile.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$ByteBasedClassFile.class
new file mode 100644
index 0000000..8d83402
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage$ByteBasedClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage.class
new file mode 100644
index 0000000..a2c125a
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$JImage.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$PathEntry.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$PathEntry.class
index 4282ae1..d9774d9 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$PathEntry.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$PathEntry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip$1.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip$1.class
index ef043d7..c73377f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip.class
index 701571a..a17d5dd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath$Zip.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath.class
index c419a84..8b9fe5c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPath.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPathTests.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPathTests.class
new file mode 100644
index 0000000..2a4625b
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/ClassPathTests.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/DefaultClassLoaderReference.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/DefaultClassLoaderReference.class
index 2911961..2322ec4 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/DefaultClassLoaderReference.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/DefaultClassLoaderReference.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap$SpecialValue.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap$SpecialValue.class
index 1910371..82737ce 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap$SpecialValue.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap$SpecialValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap.class
index be9f52e..9c226d1 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository$SoftHashMap.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.class
index 798a861..b9f2f3d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Play.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Play.class
new file mode 100644
index 0000000..3aedb9e
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Play.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Repository.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Repository.class
index 38723f9..f04774d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Repository.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/Repository.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/SyntheticRepository.class b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/SyntheticRepository.class
index 8af4dac..eb82df7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/SyntheticRepository.class
+++ b/org.aspectj.weaver/classes/org/aspectj/apache/bcel/util/SyntheticRepository.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/bridge/Version.class b/org.aspectj.weaver/classes/org/aspectj/bridge/Version.class
index 6dcc00b..43b4406 100644
--- a/org.aspectj.weaver/classes/org/aspectj/bridge/Version.class
+++ b/org.aspectj.weaver/classes/org/aspectj/bridge/Version.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$1.class b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$1.class
index e843f3a..dac59d8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$Thrown.class b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$Thrown.class
index b2e0435..2819789 100644
--- a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$Thrown.class
+++ b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController$Thrown.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController.class b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController.class
index 06924fa..f6091bd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController.class
+++ b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$ProcessController.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$StringChecker.class b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$StringChecker.class
index 077febb..122a5ca 100644
--- a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$StringChecker.class
+++ b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil$StringChecker.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil.class b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil.class
index a5a8cc5..8954941 100644
--- a/org.aspectj.weaver/classes/org/aspectj/util/LangUtil.class
+++ b/org.aspectj.weaver/classes/org/aspectj/util/LangUtil.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap$SpecialValue.class b/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap$SpecialValue.class
new file mode 100644
index 0000000..6693510
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap$SpecialValue.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap.class b/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap.class
new file mode 100644
index 0000000..c1dcf94
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/util/SoftHashMap.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/AjcMemberMaker.class b/org.aspectj.weaver/classes/org/aspectj/weaver/AjcMemberMaker.class
index 49a4574..9ce8374 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/AjcMemberMaker.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/AjcMemberMaker.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/Constants.class b/org.aspectj.weaver/classes/org/aspectj/weaver/Constants.class
index 7a33dea..eb34c74 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/Constants.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/Constants.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/Dump.class b/org.aspectj.weaver/classes/org/aspectj/weaver/Dump.class
index 5d8b3f2..e81663c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/Dump.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/Dump.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/Lint.class b/org.aspectj.weaver/classes/org/aspectj/weaver/Lint.class
index 81324d7..cd37ce3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/Lint.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/Lint.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature$1.class
index bd98183..cbfb3e7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.class b/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.class
index ae56ff2..3971fb8 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/NewConstructorTypeMunger.class b/org.aspectj.weaver/classes/org/aspectj/weaver/NewConstructorTypeMunger.class
index d81ad47..831b4d2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/NewConstructorTypeMunger.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/NewConstructorTypeMunger.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.class b/org.aspectj.weaver/classes/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.class
index 389e7dc..2ecd11c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ReferenceType.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ReferenceType.class
index 3dbed84..a7eea9f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ReferenceType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ReferenceType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$1.class
index db784fc..0c1e374 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$2.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$2.class
index b0e0049..df93933 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$2.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$2.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$3.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$3.class
index 95cabde..7ce2881 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$3.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$3.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$4.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$4.class
index b99aebf..1fe37aa 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$4.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$4.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$5.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$5.class
index 18cc15e..31da821 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$5.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$5.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$FieldGetter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$FieldGetter.class
index d64509a..815a898 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$FieldGetter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$FieldGetter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetter.class
index ad309e8..4f41f2d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetterIncludingItds.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetterIncludingItds.class
index b77b91a..c26b376 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetterIncludingItds.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$MethodGetterIncludingItds.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Missing.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Missing.class
index c21cd8c..0cfd451 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Missing.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Missing.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$PointcutGetter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$PointcutGetter.class
index 10a4a36..2c7eac3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$PointcutGetter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$PointcutGetter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Primitive.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Primitive.class
index d619169..fa8726b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Primitive.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$Primitive.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperClassWalker.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperClassWalker.class
index 4639a92..5ee700e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperClassWalker.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperClassWalker.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperInterfaceWalker.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperInterfaceWalker.class
index 46113ec..a0b6849 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperInterfaceWalker.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType$SuperInterfaceWalker.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType.class b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType.class
index 6e04a43..e244596 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/ResolvedType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/RuntimeVersion.class b/org.aspectj.weaver/classes/org/aspectj/weaver/RuntimeVersion.class
new file mode 100644
index 0000000..baf31cb
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/RuntimeVersion.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType$TypeKind.class b/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType$TypeKind.class
index 973d2ba..7751995 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType$TypeKind.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType$TypeKind.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType.class b/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType.class
index a9f8247..9e63d49 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/UnresolvedType.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey.class b/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey.class
index 0e5d9e4..bfbe5e6 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator$PrecedenceCacheKey.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator.class b/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator.class
index 5f68131..ae94922 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/World$AspectPrecedenceCalculator.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/World$TimeCollector.class b/org.aspectj.weaver/classes/org/aspectj/weaver/World$TimeCollector.class
index af9ea02..6c64d1f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/World$TimeCollector.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/World$TimeCollector.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/World$TypeMap.class b/org.aspectj.weaver/classes/org/aspectj/weaver/World$TypeMap.class
index c6df00f..dbacd6b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/World$TypeMap.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/World$TypeMap.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/World.class b/org.aspectj.weaver/classes/org/aspectj/weaver/World.class
index 5aa1ad9..7763a66 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/World.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/World.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelMethod.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelMethod.class
index 9e1c126..b256066 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelMethod.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelMethod.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$1.class
index 62313a1..bbe08a9 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesTargetVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesTargetVisitor.class
index 3f8eaea..aae909e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesTargetVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesTargetVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesThisVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesThisVisitor.class
index dabd65b..9a22908 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesThisVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow$UsesThisVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow.class
index 116572a..3383d3d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelShadow.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelTypeMunger.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelTypeMunger.class
index 962921a..c7bcdd0 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelTypeMunger.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelTypeMunger.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver$1AdviceLocation.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver$1AdviceLocation.class
index ce08057..2ff15a9 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver$1AdviceLocation.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver$1AdviceLocation.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver.class
index 14d56ca..898b89d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWeaver.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld$WeavingXmlConfig.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld$WeavingXmlConfig.class
index c5104dd..0b7e905 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld$WeavingXmlConfig.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld$WeavingXmlConfig.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld.class
index b699af3..534365b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/BcelWorld.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ByteBasedClassFile.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ByteBasedClassFile.class
new file mode 100644
index 0000000..8138d7b
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ByteBasedClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ClassFile.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ClassFile.class
index 1549875..c2e3131 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ClassFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$DirEntry.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$DirEntry.class
index 8b31279..5f9483c 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$DirEntry.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$DirEntry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$Entry.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$Entry.class
index ec1345a..877b52f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$Entry.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$Entry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$FileClassFile.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$FileClassFile.class
index 06b35de..70b0cb4 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$FileClassFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$FileClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$PackageCacheBuilderVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$PackageCacheBuilderVisitor.class
new file mode 100644
index 0000000..03ee5c2
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$PackageCacheBuilderVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$TypeIdentifier.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$TypeIdentifier.class
new file mode 100644
index 0000000..a25f24f
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry$TypeIdentifier.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry.class
new file mode 100644
index 0000000..7618a0c
--- /dev/null
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$JImageEntry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipEntryClassFile.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipEntryClassFile.class
index b06ba96..abcd4b6 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipEntryClassFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipEntryClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipFileEntry.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipFileEntry.class
index 64e256e..46971b2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipFileEntry.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager$ZipFileEntry.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager.class
index 7c22a2a..35f0df3 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/ClassPathManager.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$1.class
index a10e787..978bf39 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$CacheKey.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$CacheKey.class
index a197078..0a007a1 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$CacheKey.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$CacheKey.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$InlinedSourceFileInfo.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$InlinedSourceFileInfo.class
index 9da4150..9325264 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$InlinedSourceFileInfo.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen$InlinedSourceFileInfo.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen.class
index d138652..e64589d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/LazyClassGen.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile$ChildClass.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile$ChildClass.class
index 75f36f4..fa95a67 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile$ChildClass.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile$ChildClass.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile.class
index bae6804..357943e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/UnwovenClassFile.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/Utility.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/Utility.class
index abd76e0..e4951c7 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/Utility.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/Utility.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor$AJMethodVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor$AJMethodVisitor.class
index 38737ae..240088d 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor$AJMethodVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor$AJMethodVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor.class
index 3dd1ded..18d1946 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJClassVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJConnectClassWriter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJConnectClassWriter.class
index dd8aad0..c1d84b1 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJConnectClassWriter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder$AspectJConnectClassWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder.class b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder.class
index b9081cc..d36d199 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/bcel/asm/StackMapAdder.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$AdaptorKey.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$AdaptorKey.class
index 6be32f0..2c0871f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$AdaptorKey.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$AdaptorKey.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.class
index 353f127..cd7f8de 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$ExplicitlyInitializedClassLoaderWeavingAdaptor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$WeaverContainer.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$WeaverContainer.class
index c6688f1..207a90b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$WeaverContainer.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj$WeaverContainer.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj.class
index b5a4d63..b9993d2 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/Aj.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.class
index dd469a2..208b3bb 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor$SimpleGeneratedClassHandler.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.class
index 3a777c2..88bb553 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessor.class
index 67610f0..f593f2e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.class
index 1221997..5a8bf06 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/DefaultWeavingContext.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/DefaultWeavingContext.class
index 8e95515..6467497 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/DefaultWeavingContext.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/DefaultWeavingContext.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/IWeavingContext.class b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/IWeavingContext.class
index 031e426..e267581 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/IWeavingContext.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/loadtime/IWeavingContext.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/HasMemberTypePattern.class b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/HasMemberTypePattern.class
index 1974098..3f9bce0 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/HasMemberTypePattern.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/HasMemberTypePattern.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/PerTypeWithin.class b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/PerTypeWithin.class
index 4ecfdce..8fe9e3b 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/PerTypeWithin.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/PerTypeWithin.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern$TypePatternVisitor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern$TypePatternVisitor.class
index 3a61869..71dbc6e 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern$TypePatternVisitor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern$TypePatternVisitor.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern.class b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern.class
index 8f01cdf..4219afb 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/patterns/SignaturePattern.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ExceptionBasedMessageHandler.class b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ExceptionBasedMessageHandler.class
index b797682..679eb57 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ExceptionBasedMessageHandler.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ExceptionBasedMessageHandler.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException.class b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException.class
index 0808dab..2b5cd59 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld.class b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld.class
index 5e32169..1a17bfd 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/reflect/ReflectionWorld.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$1.class
index 6f4fdbb..d877a6f 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageHolder.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageHolder.class
index 792f2d9..a82d8ea 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageHolder.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageHolder.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageWriter.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageWriter.class
index 84ceb69..f77d9a5 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageWriter.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingAdaptorMessageWriter.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider$1.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider$1.class
index aa8c638..99641d0 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider$1.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider$1.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider.class
index d432fcc..5395012 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor$WeavingClassFileProvider.class
Binary files differ
diff --git a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor.class b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor.class
index e3aaa77..17522a4 100644
--- a/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor.class
+++ b/org.aspectj.weaver/classes/org/aspectj/weaver/tools/WeavingAdaptor.class
Binary files differ
diff --git a/org.aspectj.weaver/source/org/aspectj/bridge/Version.java b/org.aspectj.weaver/source/org/aspectj/bridge/Version.java
index 391c179..fc4f538 100644
--- a/org.aspectj.weaver/source/org/aspectj/bridge/Version.java
+++ b/org.aspectj.weaver/source/org/aspectj/bridge/Version.java
@@ -37,7 +37,7 @@
       * Time text set by build script using SIMPLE_DATE_FORMAT.
       * (if DEVELOPMENT version, invalid)
       */
-    public static final String time_text = "Monday Oct 30, 2017 at 17:23:54 GMT";
+    public static final String time_text = "Friday May 25, 2018 at 21:41:03 GMT";
 
     /** 
       * time in seconds-since-... format, used by programmatic clients.
diff --git a/org.aspectj.weaver/source/org/aspectj/util/LangUtil.java b/org.aspectj.weaver/source/org/aspectj/util/LangUtil.java
index 0f19124..ad83a4e 100644
--- a/org.aspectj.weaver/source/org/aspectj/util/LangUtil.java
+++ b/org.aspectj.weaver/source/org/aspectj/util/LangUtil.java
@@ -1,6 +1,7 @@
 /* *******************************************************************
  * Copyright (c) 1999-2001 Xerox Corporation, 
  *               2002 Palo Alto Research Center, Incorporated (PARC).
+ *               2018 Contributors
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
@@ -42,6 +43,17 @@
 
 	private static double vmVersion;
 
+	/**
+	 * @return the vm version (1.1, 1.2, 1.3, 1.4, etc)
+	 */
+	public static String getVmVersionString() {
+		return Double.toString(vmVersion);
+	}
+	
+	public static double getVmVersion() {
+		return vmVersion;
+	}
+	
 	static {
 		StringWriter buf = new StringWriter();
 		PrintWriter writer = new PrintWriter(buf);
@@ -59,6 +71,8 @@
 	}
 
 	static {
+		// http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html
+		// http://openjdk.java.net/jeps/223 "New Version-String Scheme"
 		try {
 			String vm = System.getProperty("java.version"); // JLS 20.18.7
 			if (vm == null) {
@@ -73,17 +87,21 @@
 						.printStackTrace(System.err);
 				vmVersion = 1.5;
 			} else {
-				if (vm.startsWith("9")) {
-					// JDK 9 beta 99 starts using 9-ea as the version string.
-					vmVersion = 1.9;
-				} else {
-					try {
-						String versionString = vm.substring(0, 3);
-						Double temp = new Double(Double.parseDouble(versionString));
-						vmVersion = temp.doubleValue();
-					} catch (Exception e) {
-						vmVersion = 1.4;
+				// Version: [1-9][0-9]*((\.0)*\.[1-9][0-9]*)* 
+				// Care about the first set of digits and second set if first digit is 1
+				try {
+					List<Integer> numbers = getFirstNumbers(vm);
+					if (numbers.get(0) == 1) {
+						// Old school for 1.0 > 1.8
+						vmVersion = numbers.get(0)+(numbers.get(1)/10d);
+					} else {
+						// numbers.get(0) is the major version (9 and above)
+						// Note here the number will be 9 (or 10), *not* 1.9 or 1.10
+						vmVersion = numbers.get(0);
 					}
+				} catch (Throwable t) {
+					// Give up
+					vmVersion = 1.5;
 				}
 			}
 		} catch (Throwable t) {
@@ -93,6 +111,19 @@
 			vmVersion = 1.5;
 		}
 	}
+	
+	private static List<Integer> getFirstNumbers(String vm) {
+		List<Integer> result = new ArrayList<Integer>();
+		StringTokenizer st = new StringTokenizer(vm,".-_");
+		try {
+			result.add(Integer.parseInt(st.nextToken()));
+			result.add(Integer.parseInt(st.nextToken()));
+		} catch (Exception e) {
+			// NoSuchElementException if no more tokens
+			// NumberFormatException if not a number
+		}
+		return result;
+	}
 
 	public static boolean is13VMOrGreater() {
 		return 1.3 <= vmVersion;
@@ -119,7 +150,11 @@
 	}
 	
 	public static boolean is19VMOrGreater() {
-		return 1.9 <= vmVersion;
+		return 9 <= vmVersion;
+	}
+	
+	public static boolean is10VMOrGreater() {
+		return 10 <= vmVersion;
 	}
 
 	/**
@@ -237,7 +272,7 @@
 	 * @param text <code>String</code> to split.
 	 */
 	public static String[] split(String text) {
-		return (String[]) strings(text).toArray(new String[0]);
+		return strings(text).toArray(new String[0]);
 	}
 
 	/**
@@ -268,7 +303,7 @@
 				result.add(entry);
 			}
 		}
-		return (String[]) result.toArray(new String[0]);
+		return result.toArray(new String[0]);
 	}
 
 	/**
@@ -856,7 +891,7 @@
 		String line;
 		int elided = 0;
 		while (!lines.isEmpty()) {
-			line = (String) lines.getLast();
+			line = lines.getLast();
 			if (!checker.acceptString(line)) {
 				break;
 			} else {
@@ -868,7 +903,7 @@
 			final int EOL_LEN = EOL.length();
 			int totalLength = 0;
 			while (!lines.isEmpty()) {
-				totalLength += EOL_LEN + ((String) lines.getFirst()).length();
+				totalLength += EOL_LEN + lines.getFirst().length();
 				lines.removeFirst();
 			}
 			if (stack.length() > totalLength) {
@@ -1030,7 +1065,7 @@
 		if (!LangUtil.isEmpty(args)) {
 			cmd.addAll(Arrays.asList(args));
 		}
-		String[] command = (String[]) cmd.toArray(new String[0]);
+		String[] command = cmd.toArray(new String[0]);
 		if (null == controller) {
 			controller = new ProcessController();
 		}
@@ -1219,7 +1254,7 @@
 			if (!LangUtil.isEmpty(args)) {
 				cmd.addAll(Arrays.asList(args));
 			}
-			init((String[]) cmd.toArray(new String[0]), mainClass);
+			init(cmd.toArray(new String[0]), mainClass);
 		}
 
 		public final void init(String[] command, String label) {
@@ -1285,6 +1320,7 @@
 			inStream = new FileUtil.Pipe(System.in, process.getOutputStream());
 			// start 4 threads, process & pipes for in, err, out
 			Runnable processRunner = new Runnable() {
+				@Override
 				public void run() {
 					Throwable thrown = null;
 					int result = Integer.MIN_VALUE;
@@ -1436,6 +1472,7 @@
 				thrown = ((null != fromProcess) || (null != fromInPipe) || (null != fromOutPipe) || (null != fromErrPipe));
 			}
 
+			@Override
 			public String toString() {
 				StringBuffer sb = new StringBuffer();
 				append(sb, fromProcess, "process");
diff --git a/org.aspectj.weaver/source/org/aspectj/util/SoftHashMap.java b/org.aspectj.weaver/source/org/aspectj/util/SoftHashMap.java
new file mode 100644
index 0000000..94ae834
--- /dev/null
+++ b/org.aspectj.weaver/source/org/aspectj/util/SoftHashMap.java
@@ -0,0 +1,95 @@
+/* *******************************************************************
+ * Copyright (c) 2017 Contributors
+ * All rights reserved. 
+ * This program and the accompanying materials are made available 
+ * under the terms of the Eclipse Public License v1.0 
+ * which accompanies this distribution and is available at 
+ * http://www.eclipse.org/legal/epl-v10.html 
+ * ******************************************************************/package org.aspectj.util;
+
+import java.lang.ref.*;
+import java.util.*;
+
+public class SoftHashMap<K,V> extends AbstractMap<K,V> {
+	private Map<K, SpecialValue> map;
+	private ReferenceQueue<? super V> rq = new ReferenceQueue();
+
+	public SoftHashMap() {
+		this.map = new HashMap<K,SpecialValue>();
+	}
+	
+	class SpecialValue extends SoftReference<V> {
+		private final K key;
+
+		SpecialValue(K k, V v) {
+			super(v, rq);
+			this.key = k;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	private void processQueue() {
+		SpecialValue sv = null;
+		while ((sv = (SpecialValue)rq.poll()) != null) {
+			map.remove(sv.key);
+		}
+	}
+
+	@Override
+	public V get(Object key) {
+		SpecialValue ref = map.get(key);
+		if (ref == null) {
+			map.remove(key);
+			return null;
+		}
+		V value = ref.get();
+		if (value == null) {
+			map.remove(ref.key);
+			return null;
+		}
+		return value;
+	}
+
+	@Override
+	public V put(K k, V v) {
+		processQueue();
+		SpecialValue sv = new SpecialValue(k, v);
+		SpecialValue result = map.put(k, sv);
+		return (result == null ? null : result.get());
+	}
+
+	@Override
+	public java.util.Set<Map.Entry<K,V>> entrySet() {
+		if (map.isEmpty()) { return Collections.<K,V>emptyMap().entrySet(); }
+		Map<K,V> currentContents = new HashMap<K,V>();
+		for (Map.Entry<K,SpecialValue> entry: map.entrySet()) {
+			V currentValueForEntry = entry.getValue().get();
+			if (currentValueForEntry != null) {
+				currentContents.put(entry.getKey(), currentValueForEntry);
+			}
+		}
+		return currentContents.entrySet();
+	}
+
+	@Override
+	public void clear() {
+		processQueue();
+		map.clear();
+	}
+
+	@Override
+	public int size() {
+		processQueue();
+		return map.size();
+	}
+
+	@Override
+	public V remove(Object k) {
+		processQueue();
+		SpecialValue ref = map.remove(k);
+		if (ref == null) {
+			return null;
+		}
+		return ref.get();
+	}
+}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/AjcMemberMaker.java b/org.aspectj.weaver/source/org/aspectj/weaver/AjcMemberMaker.java
index 62459bd..1870eb5 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/AjcMemberMaker.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/AjcMemberMaker.java
@@ -74,7 +74,7 @@
 	}
 
 	public static ResolvedMember perSingletonField(UnresolvedType declaringType) {
-		return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC_FINAL, NameMangler.PERSINGLETON_FIELD_NAME,
+		return new ResolvedMemberImpl(Member.FIELD, declaringType, PUBLIC_STATIC, NameMangler.PERSINGLETON_FIELD_NAME,
 				declaringType.getSignature());
 	}
 
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/Constants.java b/org.aspectj.weaver/source/org/aspectj/weaver/Constants.java
index 4b99a32..bdbde38 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/Constants.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/Constants.java
@@ -22,6 +22,7 @@
 
 	public final static String RUNTIME_LEVEL_12 = "1.2";
 	public final static String RUNTIME_LEVEL_15 = "1.5";
+	public final static String RUNTIME_LEVEL_19 = "1.9";
 
 	// Default for 1.5.0
 	public final static String RUNTIME_LEVEL_DEFAULT = RUNTIME_LEVEL_15;
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/Lint.java b/org.aspectj.weaver/source/org/aspectj/weaver/Lint.java
index 36d6475..aab34b8 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/Lint.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/Lint.java
@@ -114,7 +114,7 @@
 			"calculated SerialVersionUID for type {0} to be {1}");
 
 	public final Kind nonReweavableTypeEncountered = new Kind("nonReweavableTypeEncountered",
-			"class '{0}' is already woven and has not been built in reweavable mode");
+			"class {0} is already woven and has not been built in reweavable mode");
 
 	// there are a lot of messages in the cant find type family - I'm defining an umbrella lint warning that
 	// allows a user to control their severity (for e.g. ltw or binary weaving)
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java b/org.aspectj.weaver/source/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
index 18b2cdf..da61ffd 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/MissingResolvedTypeWithKnownSignature.java
@@ -114,18 +114,22 @@
 	public ISourceContext getSourceContext() {
 		return new ISourceContext() {
 
+			@Override
 			public ISourceLocation makeSourceLocation(IHasPosition position) {
 				return null;
 			}
 
+			@Override
 			public ISourceLocation makeSourceLocation(int line, int offset) {
 				return null;
 			}
 
+			@Override
 			public int getOffset() {
 				return 0;
 			}
 
+			@Override
 			public void tidy() {
 			}
 
@@ -151,7 +155,7 @@
 			return isAssignableFrom(other);
 		}
 	}
-
+	
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -168,6 +172,7 @@
 	 * 
 	 * @see org.aspectj.weaver.AnnotatedElement#hasAnnotation(org.aspectj.weaver.UnresolvedType)
 	 */
+	@Override
 	public boolean hasAnnotation(UnresolvedType ofType) {
 		raiseCantFindType(WeaverMessages.CANT_FIND_TYPE_ANNOTATION);
 		return false;
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/NewConstructorTypeMunger.java b/org.aspectj.weaver/source/org/aspectj/weaver/NewConstructorTypeMunger.java
index 47cfdf5..d7d1ba1 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/NewConstructorTypeMunger.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/NewConstructorTypeMunger.java
@@ -33,6 +33,7 @@
 
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		if (!(other instanceof NewConstructorTypeMunger)) {
 			return false;
@@ -56,6 +57,7 @@
 
 	private volatile int hashCode = 0;
 
+	@Override
 	public int hashCode() {
 		if (hashCode == 0) {
 			int result = 17;
@@ -71,6 +73,7 @@
 	// return AjcMemberMaker.interMethodBody(signature, aspectType);
 	// }
 
+	@Override
 	public void write(CompressingDataOutputStream s) throws IOException {
 		kind.write(s);
 		signature.write(s);
@@ -111,6 +114,7 @@
 		hashCode = 0;
 	}
 
+	@Override
 	public ResolvedMember getMatchingSyntheticMember(Member member, ResolvedType aspectType) {
 		ResolvedMember ret = getSyntheticConstructor();
 		if (ResolvedType.matches(ret, member)) {
@@ -129,6 +133,7 @@
 	/**
 	 * see ResolvedTypeMunger.parameterizedFor(ResolvedType)
 	 */
+	@Override
 	public ResolvedTypeMunger parameterizedFor(ResolvedType target) {
 		ResolvedType genericType = target;
 		if (target.isRawType() || target.isParameterizedType()) {
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.java b/org.aspectj.weaver/source/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.java
index 036ab9b..ad54941 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/PerTypeWithinTargetTypeMunger.java
@@ -29,6 +29,7 @@
 		this.testPointcut = testPointcut;
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		if (!(other instanceof PerTypeWithinTargetTypeMunger)) {
 			return false;
@@ -40,6 +41,7 @@
 
 	private volatile int hashCode = 0;
 
+	@Override
 	public int hashCode() {
 		if (hashCode == 0) {
 			int result = 17;
@@ -50,6 +52,7 @@
 		return hashCode;
 	}
 
+	@Override
 	public void write(CompressingDataOutputStream s) throws IOException {
 		throw new RuntimeException("shouldn't be serialized");
 	}
@@ -65,8 +68,9 @@
 	// This is a lexical within() so if you say PerTypeWithin(Test) and matchType is an
 	// inner type (e.g. Test$NestedType) then it should match successfully
 	// Does not match if the target is an interface
+	@Override
 	public boolean matches(ResolvedType matchType, ResolvedType aspectType) {
-		return isWithinType(matchType).alwaysTrue() && !matchType.isInterface();
+		return isWithinType(matchType).alwaysTrue() && !matchType.isInterface() && (matchType.canBeSeenBy(aspectType) || aspectType.isPrivilegedAspect());
 	}
 
 	private FuzzyBoolean isWithinType(ResolvedType type) {
@@ -78,5 +82,5 @@
 		}
 		return FuzzyBoolean.NO;
 	}
-
+	
 }
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/ReferenceType.java b/org.aspectj.weaver/source/org/aspectj/weaver/ReferenceType.java
index 65fdf3a..7dc162a 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/ReferenceType.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/ReferenceType.java
@@ -376,10 +376,16 @@
 		if (this.isFinal() || other.isFinal()) {
 			return false;
 		}
+		
+		// 20170927: What is the block of code for? It mentions jls5.5 which isn't on this topic (old version of jls?)
+		// Some possible references: http://docs.oracle.com/javase/specs/jls/se9/jls9.pdf  5.1.6 (narrowing reference conversion)
+		// On Java 9 the test GenericsTests.testAfterReturningWithWildcardVar will fail because this code below
+		// used to find Set and List were the same, but now finds they are not. (so it doesn't put out the unchecked
+		// conversion message). However the code "List l = (List)someSet;" still compiles on 9 - so is this code bogus?
+		
 		// ??? needs to be Methods, not just declared methods? JLS 5.5 unclear
 		ResolvedMember[] a = getDeclaredMethods();
-		ResolvedMember[] b = other.getDeclaredMethods(); // ??? is this cast
-		// always safe
+		ResolvedMember[] b = other.getDeclaredMethods();
 		for (int ai = 0, alen = a.length; ai < alen; ai++) {
 			for (int bi = 0, blen = b.length; bi < blen; bi++) {
 				if (!b[bi].isCompatibleWith(a[ai])) {
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/ResolvedType.java b/org.aspectj.weaver/source/org/aspectj/weaver/ResolvedType.java
index 5985e4b..98400eb 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/ResolvedType.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/ResolvedType.java
@@ -59,6 +59,8 @@
 	private static int TypeHierarchyCompleteBit = 0x0010;
 	private static int GroovyObjectInitialized = 0x0020;
 	private static int IsGroovyObject = 0x0040;
+	private static int IsPrivilegedBitInitialized = 0x0080;
+	private static int IsPrivilegedAspect = 0x0100;
 
 	protected ResolvedType(String signature, World world) {
 		super(signature);
@@ -70,6 +72,7 @@
 		this.world = world;
 	}
 
+	@Override
 	public int getSize() {
 		return 1;
 	}
@@ -107,6 +110,18 @@
 
 	public abstract int getModifiers();
 
+	public boolean canBeSeenBy(ResolvedType from) {
+		int targetMods = getModifiers();
+		if (Modifier.isPublic(targetMods)) {
+			return true;
+		}
+		if (Modifier.isPrivate(targetMods)) {
+			return false;
+		}
+		// isProtected() or isDefault()
+		return getPackageName().equals(from.getPackageName());
+	}
+
 	// return true if this resolved type couldn't be found (but we know it's name maybe)
 	public boolean isMissing() {
 		return false;
@@ -124,10 +139,12 @@
 		}
 	}
 
+	@Override
 	public ResolvedType[] getAnnotationTypes() {
 		return EMPTY_RESOLVED_TYPE_ARRAY;
 	}
 
+	@Override
 	public AnnotationAJ getAnnotationOfType(UnresolvedType ofType) {
 		return null;
 	}
@@ -197,6 +214,7 @@
 	public Iterator<ResolvedMember> getFields() {
 		final Iterators.Filter<ResolvedType> dupFilter = Iterators.dupFilter();
 		Iterators.Getter<ResolvedType, ResolvedType> typeGetter = new Iterators.Getter<ResolvedType, ResolvedType>() {
+			@Override
 			public Iterator<ResolvedType> get(ResolvedType o) {
 				return dupFilter.filter(o.getDirectSupertypes());
 			}
@@ -230,6 +248,7 @@
 	 * An Iterators.Getter that returns an iterator over all methods declared on some resolved type.
 	 */
 	private static class MethodGetter implements Iterators.Getter<ResolvedType, ResolvedMember> {
+		@Override
 		public Iterator<ResolvedMember> get(ResolvedType type) {
 			return Iterators.array(type.getDeclaredMethods());
 		}
@@ -239,6 +258,7 @@
 	 * An Iterators.Getter that returns an iterator over all pointcuts declared on some resolved type.
 	 */
 	private static class PointcutGetter implements Iterators.Getter<ResolvedType, ResolvedMember> {
+		@Override
 		public Iterator<ResolvedMember> get(ResolvedType o) {
 			return Iterators.array(o.getDeclaredPointcuts());
 		}
@@ -248,6 +268,7 @@
 
 	// Getter that returns all declared methods for a type through an iterator - including intertype declarations
 	private static class MethodGetterIncludingItds implements Iterators.Getter<ResolvedType, ResolvedMember> {
+		@Override
 		public Iterator<ResolvedMember> get(ResolvedType type) {
 			ResolvedMember[] methods = type.getDeclaredMethods();
 			if (type.interTypeMungers != null) {
@@ -280,6 +301,7 @@
 	 * An Iterators.Getter that returns an iterator over all fields declared on some resolved type.
 	 */
 	private static class FieldGetter implements Iterators.Getter<ResolvedType, ResolvedMember> {
+		@Override
 		public Iterator<ResolvedMember> get(ResolvedType type) {
 			return Iterators.array(type.getDeclaredFields());
 		}
@@ -307,6 +329,7 @@
 		final Iterators.Getter<ResolvedType, ResolvedType> interfaceGetter = new Iterators.Getter<ResolvedType, ResolvedType>() {
 			List<String> alreadySeen = new ArrayList<String>(); // Strings are signatures (ResolvedType.getSignature())
 
+			@Override
 			public Iterator<ResolvedType> get(ResolvedType type) {
 				ResolvedType[] interfaces = type.getDeclaredInterfaces();
 
@@ -732,6 +755,7 @@
 		final Iterators.Filter<ResolvedType> dupFilter = Iterators.dupFilter();
 		// same order as fields
 		Iterators.Getter<ResolvedType, ResolvedType> typeGetter = new Iterators.Getter<ResolvedType, ResolvedType>() {
+			@Override
 			public Iterator<ResolvedType> get(ResolvedType o) {
 				return dupFilter.filter(o.getDirectSupertypes());
 			}
@@ -799,6 +823,7 @@
 			// ret.addAll(getDeclares());
 			final Iterators.Filter<ResolvedType> dupFilter = Iterators.dupFilter();
 			Iterators.Getter<ResolvedType, ResolvedType> typeGetter = new Iterators.Getter<ResolvedType, ResolvedType>() {
+				@Override
 				public Iterator<ResolvedType> get(ResolvedType o) {
 					return dupFilter.filter((o).getDirectSupertypes());
 				}
@@ -832,6 +857,7 @@
 		List<ShadowMunger> acc = new ArrayList<ShadowMunger>();
 		final Iterators.Filter<ResolvedType> dupFilter = Iterators.dupFilter();
 		Iterators.Getter<ResolvedType, ResolvedType> typeGetter = new Iterators.Getter<ResolvedType, ResolvedType>() {
+			@Override
 			public Iterator<ResolvedType> get(ResolvedType o) {
 				return dupFilter.filter((o).getDirectSupertypes());
 			}
@@ -966,12 +992,38 @@
 		}
 		TypeVariable[] tvs = getGenericType().getTypeVariables();
 		Map<String, UnresolvedType> parameterizationMap = new HashMap<String, UnresolvedType>();
-		for (int i = 0; i < tvs.length; i++) {
-			parameterizationMap.put(tvs[i].getName(), typeParameters[i]);
+		if (tvs.length != typeParameters.length) {
+			world.getMessageHandler()
+					.handleMessage(
+							new Message("Mismatch when building parameterization map. For type '" + this.signature +
+									"' expecting "+tvs.length+":["+toString(tvs)+"] type parameters but found "+typeParameters.length+
+									":["+toString(typeParameters)+"]", "",
+									IMessage.ERROR, getSourceLocation(), null,
+									new ISourceLocation[] { getSourceLocation() }));
+		} else {
+			for (int i = 0; i < tvs.length; i++) {
+				parameterizationMap.put(tvs[i].getName(), typeParameters[i]);
+			}
 		}
 		return parameterizationMap;
 	}
 
+	private String toString(UnresolvedType[] typeParameters) {
+		StringBuilder s = new StringBuilder();
+		for (UnresolvedType tv: typeParameters) {
+			s.append(tv.getSignature()).append(" ");
+		}
+		return s.toString().trim();
+	}
+
+	private String toString(TypeVariable[] tvs) {
+		StringBuilder s = new StringBuilder();
+		for (TypeVariable tv: tvs) {
+			s.append(tv.getName()).append(" ");
+		}
+		return s.toString().trim();
+	}
+
 	public List<ShadowMunger> getDeclaredAdvice() {
 		List<ShadowMunger> l = new ArrayList<ShadowMunger>();
 		ResolvedMember[] methods = getDeclaredMethods();
@@ -1071,7 +1123,7 @@
 		public final int getSize() {
 			return size;
 		}
-
+		
 		@Override
 		public final int getModifiers() {
 			return Modifier.PUBLIC | Modifier.FINAL;
@@ -1082,6 +1134,7 @@
 			return true;
 		}
 
+		@Override
 		public boolean hasAnnotation(UnresolvedType ofType) {
 			return false;
 		}
@@ -1210,6 +1263,7 @@
 			return true;
 		}
 
+		@Override
 		public boolean hasAnnotation(UnresolvedType ofType) {
 			return false;
 		}
@@ -2235,10 +2289,12 @@
 			this.wantGenerics = genericsAware;
 		}
 
+		@Override
 		public boolean hasNext() {
 			return curr != null;
 		}
 
+		@Override
 		public ResolvedType next() {
 			ResolvedType ret = curr;
 			if (!wantGenerics && ret.isParameterizedOrGenericType()) {
@@ -2249,6 +2305,7 @@
 			return ret;
 		}
 
+		@Override
 		public void remove() {
 			throw new UnsupportedOperationException();
 		}
@@ -2270,6 +2327,7 @@
 			this.delegate = Iterators.one(interfaceType);
 		}
 
+		@Override
 		public boolean hasNext() {
 			if (delegate == null || !delegate.hasNext()) {
 				// either we set it up or we have run out, is there anything else to look at?
@@ -2289,6 +2347,7 @@
 			toPersue.add(ret);
 		}
 
+		@Override
 		public ResolvedType next() {
 			ResolvedType next = delegate.next();
 			// BUG should check for generics and erase?
@@ -2300,6 +2359,7 @@
 			return next;
 		}
 
+		@Override
 		public void remove() {
 			throw new UnsupportedOperationException();
 		}
@@ -2857,5 +2917,17 @@
 		}
 		return (bits & IsGroovyObject) != 0;
 	}
+	
+	public boolean isPrivilegedAspect() {
+		if ((bits & IsPrivilegedBitInitialized) == 0) {
+			AnnotationAJ privilegedAnnotation = getAnnotationOfType(UnresolvedType.AJC_PRIVILEGED);
+			if (privilegedAnnotation != null) {
+				bits |= IsPrivilegedAspect;
+			}
+			// TODO do we need to reset this bit if the annotations are set again ?
+			bits |= IsPrivilegedBitInitialized;
+		}
+		return (bits & IsPrivilegedAspect) != 0;
+	}
 
 }
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/RuntimeVersion.java b/org.aspectj.weaver/source/org/aspectj/weaver/RuntimeVersion.java
new file mode 100644
index 0000000..0cf90a9
--- /dev/null
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/RuntimeVersion.java
@@ -0,0 +1,47 @@
+/* *******************************************************************
+ * Copyright (c) 2018 Contributors
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * ******************************************************************/
+package org.aspectj.weaver;
+
+/**
+ * Captures important runtime versions. Typically new versions are added here if something
+ * changes in the runtime and the code generation may be able to do something different
+ * (more optimal) for a later runtime.
+ * 
+ * @author Andy Clement
+ */
+public enum RuntimeVersion {
+	
+	V1_2("1.2"), V1_5("1.5"), V1_6_10("1.6.10"), V1_9("1.9");
+	
+	private String[] aliases = null;
+
+	RuntimeVersion(String... aliases) {
+		this.aliases = aliases;
+	}
+	
+	public static RuntimeVersion getVersionFor(String version) {
+		for (RuntimeVersion candidateVersion: values()) {
+			if (candidateVersion.name().equals(version)) {
+				return candidateVersion;
+			}
+			if (candidateVersion.aliases != null) {
+				for (String alias: candidateVersion.aliases) {
+					if (alias.equals(version)) {
+						return candidateVersion;
+					}
+				}
+			}
+		}
+		return null;
+	}
+
+	public boolean isThisVersionOrLater(RuntimeVersion version) {
+		return this.compareTo(version) >= 0;
+	}
+}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/UnresolvedType.java b/org.aspectj.weaver/source/org/aspectj/weaver/UnresolvedType.java
index b5d085c..d8d4617 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/UnresolvedType.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/UnresolvedType.java
@@ -61,6 +61,7 @@
 	public static final UnresolvedType[] ARRAY_WITH_JUST_OBJECT = new UnresolvedType[] { OBJECT };
 	public static final UnresolvedType JOINPOINT_STATICPART = forSignature("Lorg/aspectj/lang/JoinPoint$StaticPart;");
 	public static final UnresolvedType JOINPOINT_ENCLOSINGSTATICPART = forSignature("Lorg/aspectj/lang/JoinPoint$EnclosingStaticPart;");
+	public static final UnresolvedType AJC_PRIVILEGED = forSignature("Lorg/aspectj/internal/lang/annotation/ajcPrivileged;");
 
 	public static final UnresolvedType BOOLEAN = forPrimitiveType("Z");
 	public static final UnresolvedType BYTE = forPrimitiveType("B");
@@ -868,6 +869,7 @@
 		private final String type;
 	}
 
+	@Override
 	public TypeVariable getTypeVariableNamed(String name) {
 		TypeVariable[] vars = getTypeVariables();
 		if (vars == null || vars.length == 0) {
@@ -882,6 +884,7 @@
 		return null;
 	}
 
+	@Override
 	public String toTraceString() {
 		return getClass().getName() + "[" + getName() + "]";
 	}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/World.java b/org.aspectj.weaver/source/org/aspectj/weaver/World.java
index 6bba2d5..644f232 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/World.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/World.java
@@ -110,8 +110,9 @@
 	private boolean incrementalCompileCouldFollow = false;
 
 	/** The level of the aspectjrt.jar the code we generate needs to run on */
-	private String targetAspectjRuntimeLevel = Constants.RUNTIME_LEVEL_DEFAULT;
-
+	public static final RuntimeVersion RUNTIME_LEVEL_DEFAULT = RuntimeVersion.V1_5;
+	private RuntimeVersion targetAspectjRuntimeLevel = RUNTIME_LEVEL_DEFAULT;
+	
 	/** Flags for the new joinpoints that are 'optional': -Xjoinpoints:arrayconstruction -Xjoinpoints:synchronization */
 	private boolean optionalJoinpoint_ArrayConstruction = false; 
 	private boolean optionalJoinpoint_Synchronization = false; 
@@ -202,6 +203,7 @@
 	/**
 	 * Dump processing when a fatal error occurs
 	 */
+	@Override
 	public void accept(Dump.IVisitor visitor) {
 		// visitor.visitObject("Extra configuration:");
 		// visitor.visitList(extraConfiguration.);
@@ -462,6 +464,9 @@
 		} else if (ty.isGenericType()) {
 			// ======= generic types ======================
 			ResolvedType rt = resolveGenericTypeFor(ty, false);
+			if (rt.isMissing()) {
+				return rt;
+			}
 			ReferenceType genericType = (ReferenceType) rt;
 			if (rt.isMissing()) {
 				return rt;
@@ -979,7 +984,7 @@
 	}
 
 	public void setTargetAspectjRuntimeLevel(String s) {
-		targetAspectjRuntimeLevel = s;
+		targetAspectjRuntimeLevel = RuntimeVersion.getVersionFor(s);
 	}
 
 	public void setOptionalJoinpoints(String jps) {
@@ -1002,20 +1007,18 @@
 		return optionalJoinpoint_Synchronization;
 	}
 
-	public String getTargetAspectjRuntimeLevel() {
+	public RuntimeVersion getTargetAspectjRuntimeLevel() {
 		return targetAspectjRuntimeLevel;
 	}
 
-	// OPTIMIZE are users falling foul of not supplying -1.5 and so targetting
-	// the old runtime?
+	// OPTIMIZE are users falling foul of not supplying -1.5 and so targetting the old runtime?
 	public boolean isTargettingAspectJRuntime12() {
 		boolean b = false; // pr116679
 		if (!isInJava5Mode()) {
 			b = true;
 		} else {
-			b = getTargetAspectjRuntimeLevel().equals(org.aspectj.weaver.Constants.RUNTIME_LEVEL_12);
+			b = (getTargetAspectjRuntimeLevel() == RuntimeVersion.V1_2);
 		}
-		// System.err.println("Asked if targetting runtime 1.2 , returning: "+b);
 		return b;
 	}
 
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelMethod.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelMethod.java
index 7fc78b5..4d8114e 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelMethod.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelMethod.java
@@ -55,10 +55,7 @@
 
 	// these fields are not set for many BcelMethods...
 	private ShadowMunger associatedShadowMunger;
-	private ResolvedPointcutDefinition preResolvedPointcut; // used when ajc has
-	// pre-resolved the
-	// pointcut of some
-	// @Advice
+	private ResolvedPointcutDefinition preResolvedPointcut; // used when ajc has pre-resolved the pointcut of some @Advice
 	private AjAttribute.EffectiveSignatureAttribute effectiveSignature;
 
 	private AjAttribute.MethodDeclarationLineNumberAttribute declarationLineNumber;
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelShadow.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelShadow.java
index 10fdbd0..2e8d3ab 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelShadow.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelShadow.java
@@ -1129,6 +1129,7 @@
 		return getThisJoinPointStaticPartBcelVar(false);
 	}
 
+	@Override
 	public BcelVar getThisAspectInstanceVar(ResolvedType aspectType) {
 		return new AspectInstanceVar(aspectType);
 	}
@@ -1995,16 +1996,24 @@
 	 * Causes the aspect instance to be *set* for later retrievable through localAspectof()/aspectOf()
 	 */
 	public void weavePerTypeWithinAspectInitialization(final BcelAdvice munger, UnresolvedType t) {
-
-		if (t.resolve(world).isInterface()) {
-			return; // Don't initialize statics in
+		ResolvedType tResolved = t.resolve(world);
+		if (tResolved.isInterface()) {
+			return; // Don't initialize statics in interfaces
 		}
+		ResolvedType aspectRT = munger.getConcreteAspect();
+		BcelWorld.getBcelObjectType(aspectRT);
+		
+		// Although matched, if the visibility rules prevent the aspect from seeing this type, don't
+		// insert any code (easier to do it here than try to affect the matching logic, unfortunately)
+		if (!(tResolved.canBeSeenBy(aspectRT) || aspectRT.isPrivilegedAspect())) {
+			return;
+		}
+		
 		final InstructionFactory fact = getFactory();
 
 		InstructionList entryInstructions = new InstructionList();
 		InstructionList entrySuccessInstructions = new InstructionList();
 
-		BcelWorld.getBcelObjectType(munger.getConcreteAspect());
 		String aspectname = munger.getConcreteAspect().getName();
 
 		String ptwField = NameMangler.perTypeWithinFieldForTarget(munger.getConcreteAspect());
@@ -3059,6 +3068,7 @@
 
 		LazyClassGen closureClass = new LazyClassGen(closureClassName, superClassName, getEnclosingClass().getFileName(),
 				Modifier.PUBLIC, new String[] {}, getWorld());
+		closureClass.setMajorMinor(getEnclosingClass().getMajor(), getEnclosingClass().getMinor());
 		InstructionFactory fact = new InstructionFactory(closureClass.getConstantPool());
 
 		// constructor
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelTypeMunger.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelTypeMunger.java
index 9768cb9..b92760f 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelTypeMunger.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelTypeMunger.java
@@ -352,8 +352,21 @@
 									&& targetMethod.getBackingGenericMember().getParameterSignature().equals(newParentMethodSig)) {
 								discoveredImpl = targetMethod;
 							} else if (newParentMethod.hasBackingGenericMember()) {
-								if (newParentMethod.getBackingGenericMember().getParameterSignature().equals(targetMethodSignature)) {
+ 								if (newParentMethod.getBackingGenericMember().getParameterSignature().equals(targetMethodSignature)) { // newParentMethod.getBackingGenericMember().getParameterSignature gives: (Pjava/util/List<TI;>;)  targetMethodSignature= (Ljava/util/List;)
 									discoveredImpl = targetMethod;
+								} else if (targetMethod instanceof BcelMethod) {
+									// BcelMethod does not have backing generic member set (need to investigate why). For now, special case here:
+									UnresolvedType[] targetMethodGenericParameterTypes = targetMethod.getGenericParameterTypes();
+									if (targetMethodGenericParameterTypes !=null) {
+										StringBuilder b = new StringBuilder("(");
+										for (UnresolvedType p: targetMethodGenericParameterTypes) {
+											b.append(p.getSignature());
+										}
+										b.append(')');
+										if (b.toString().equals(newParentMethodSig)) {
+											discoveredImpl = targetMethod;
+										}
+									}
 								}
 							}
 						}
@@ -816,7 +829,9 @@
 		// e.g ajc$com_blah_SecurityAspect$ptwAspectInstance
 		FieldGen fg = makeFieldGen(gen, AjcMemberMaker.perTypeWithinField(gen.getType(), aspectType));
 		gen.addField(fg, getSourceLocation());
-
+		if (!gen.getType().canBeSeenBy(aspectType) && aspectType.isPrivilegedAspect()) {
+			gen.forcePublic();
+		}
 		// Add an accessor for this new field, the
 		// ajc$<aspectname>$localAspectOf() method
 		// e.g.
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWeaver.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWeaver.java
index 1a66c72..4306602 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWeaver.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWeaver.java
@@ -1035,10 +1035,12 @@
 		// repaired prior to weaving
 		for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 			UnwovenClassFile classFile = i.next();
-			String className = classFile.getClassName();
-			ResolvedType theType = world.resolve(className);
-			if (theType != null) {
-				theType.ensureConsistent();
+			if (classFile.shouldBeWoven()) {
+				String className = classFile.getClassName();
+				ResolvedType theType = world.resolve(className);
+				if (theType != null) {
+					theType.ensureConsistent();
+				}
 			}
 		}
 
@@ -1051,22 +1053,24 @@
 			CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.WEAVING_ASPECTS, "");
 			for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 				UnwovenClassFile classFile = i.next();
-				String className = classFile.getClassName();
-				ResolvedType theType = world.resolve(className);
-				if (theType.isAnnotationStyleAspect()) {
-					BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
-					if (classType == null) {
-						throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
+				if (classFile.shouldBeWoven()) {
+					String className = classFile.getClassName();
+					ResolvedType theType = world.resolve(className);
+					if (theType.isAnnotationStyleAspect()) {
+						BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
+						if (classType == null) {
+							throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
+						}
+						LazyClassGen clazz = classType.getLazyClassGen();
+						BcelPerClauseAspectAdder selfMunger = new BcelPerClauseAspectAdder(theType, theType.getPerClause().getKind());
+						selfMunger.forceMunge(clazz, true);
+						classType.finishedWith();
+						UnwovenClassFile[] newClasses = getClassFilesFor(clazz);
+						for (int news = 0; news < newClasses.length; news++) {
+							requestor.acceptResult(newClasses[news]);
+						}
+						wovenClassNames.add(classFile.getClassName());
 					}
-					LazyClassGen clazz = classType.getLazyClassGen();
-					BcelPerClauseAspectAdder selfMunger = new BcelPerClauseAspectAdder(theType, theType.getPerClause().getKind());
-					selfMunger.forceMunge(clazz, true);
-					classType.finishedWith();
-					UnwovenClassFile[] newClasses = getClassFilesFor(clazz);
-					for (int news = 0; news < newClasses.length; news++) {
-						requestor.acceptResult(newClasses[news]);
-					}
-					wovenClassNames.add(classFile.getClassName());
 				}
 			}
 			requestor.weaveCompleted();
@@ -1081,17 +1085,19 @@
 		// clear all state from files we'll be reweaving
 		for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 			UnwovenClassFile classFile = i.next();
-			String className = classFile.getClassName();
-			BcelObjectType classType = getClassType(className);
-
-			// null return from getClassType() means the delegate is an eclipse
-			// source type - so
-			// there *cant* be any reweavable state... (he bravely claimed...)
-			if (classType != null) {
-				ContextToken tok = CompilationAndWeavingContext.enteringPhase(
-						CompilationAndWeavingContext.PROCESSING_REWEAVABLE_STATE, className);
-				processReweavableStateIfPresent(className, classType);
-				CompilationAndWeavingContext.leavingPhase(tok);
+			if (classFile.shouldBeWoven()) {
+				String className = classFile.getClassName();
+				BcelObjectType classType = getClassType(className);
+	
+				// null return from getClassType() means the delegate is an eclipse
+				// source type - so
+				// there *cant* be any reweavable state... (he bravely claimed...)
+				if (classType != null) {
+					ContextToken tok = CompilationAndWeavingContext.enteringPhase(
+							CompilationAndWeavingContext.PROCESSING_REWEAVABLE_STATE, className);
+					processReweavableStateIfPresent(className, classType);
+					CompilationAndWeavingContext.leavingPhase(tok);
+				}
 			}
 		}
 
@@ -1112,7 +1118,9 @@
 		List<String> typesToProcess = new ArrayList<String>();
 		for (Iterator<UnwovenClassFile> iter = input.getClassFileIterator(); iter.hasNext();) {
 			UnwovenClassFile clf = iter.next();
-			typesToProcess.add(clf.getClassName());
+			if (clf.shouldBeWoven()) {
+				typesToProcess.add(clf.getClassName());
+			}
 		}
 		while (typesToProcess.size() > 0) {
 			weaveParentsFor(typesToProcess, typesToProcess.get(0), null);
@@ -1120,8 +1128,10 @@
 
 		for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 			UnwovenClassFile classFile = i.next();
-			String className = classFile.getClassName();
-			addNormalTypeMungers(className);
+			if (classFile.shouldBeWoven()) {
+				String className = classFile.getClassName();
+				addNormalTypeMungers(className);
+			}
 		}
 
 		CompilationAndWeavingContext.leavingPhase(typeMungingToken);
@@ -1131,28 +1141,30 @@
 		// first weave into aspects
 		for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 			UnwovenClassFile classFile = i.next();
-			String className = classFile.getClassName();
-			ResolvedType theType = world.resolve(className);
-			if (theType.isAspect()) {
-				BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
-				if (classType == null) {
-
-					// Sometimes.. if the Bcel Delegate couldn't be found then a
-					// problem occurred at compile time - on
-					// a previous compiler run. In this case I assert the
-					// delegate will still be an EclipseSourceType
-					// and we can ignore the problem here (the original compile
-					// error will be reported again from
-					// the eclipse source type) - pr113531
-					ReferenceTypeDelegate theDelegate = ((ReferenceType) theType).getDelegate();
-					if (theDelegate.getClass().getName().endsWith("EclipseSourceType")) {
-						continue;
+			if (classFile.shouldBeWoven()) {
+				String className = classFile.getClassName();
+				ResolvedType theType = world.resolve(className);
+				if (theType.isAspect()) {
+					BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
+					if (classType == null) {
+	
+						// Sometimes.. if the Bcel Delegate couldn't be found then a
+						// problem occurred at compile time - on
+						// a previous compiler run. In this case I assert the
+						// delegate will still be an EclipseSourceType
+						// and we can ignore the problem here (the original compile
+						// error will be reported again from
+						// the eclipse source type) - pr113531
+						ReferenceTypeDelegate theDelegate = ((ReferenceType) theType).getDelegate();
+						if (theDelegate.getClass().getName().endsWith("EclipseSourceType")) {
+							continue;
+						}
+	
+						throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
 					}
-
-					throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
+					weaveAndNotify(classFile, classType, requestor);
+					wovenClassNames.add(className);
 				}
-				weaveAndNotify(classFile, classType, requestor);
-				wovenClassNames.add(className);
 			}
 		}
 
@@ -1163,25 +1175,27 @@
 		// then weave into non-aspects
 		for (Iterator<UnwovenClassFile> i = input.getClassFileIterator(); i.hasNext();) {
 			UnwovenClassFile classFile = i.next();
-			String className = classFile.getClassName();
-			ResolvedType theType = world.resolve(className);
-			if (!theType.isAspect()) {
-				BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
-				if (classType == null) {
-
-					// bug 119882 - see above comment for bug 113531
-					ReferenceTypeDelegate theDelegate = ((ReferenceType) theType).getDelegate();
-
-					// TODO urgh - put a method on the interface to check this,
-					// string compare is hideous
-					if (theDelegate.getClass().getName().endsWith("EclipseSourceType")) {
-						continue;
+			if (classFile.shouldBeWoven()) {
+				String className = classFile.getClassName();
+				ResolvedType theType = world.resolve(className);
+				if (!theType.isAspect()) {
+					BcelObjectType classType = BcelWorld.getBcelObjectType(theType);
+					if (classType == null) {
+	
+						// bug 119882 - see above comment for bug 113531
+						ReferenceTypeDelegate theDelegate = ((ReferenceType) theType).getDelegate();
+	
+						// TODO urgh - put a method on the interface to check this,
+						// string compare is hideous
+						if (theDelegate.getClass().getName().endsWith("EclipseSourceType")) {
+							continue;
+						}
+	
+						throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
 					}
-
-					throw new BCException("Can't find bcel delegate for " + className + " type=" + theType.getClass());
+					weaveAndNotify(classFile, classType, requestor);
+					wovenClassNames.add(className);
 				}
-				weaveAndNotify(classFile, classType, requestor);
-				wovenClassNames.add(className);
 			}
 		}
 		CompilationAndWeavingContext.leavingPhase(classToken);
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWorld.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWorld.java
index 395e07e..4ade1e1 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWorld.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/BcelWorld.java
@@ -723,26 +723,32 @@
 
 	// / The repository interface methods
 
+	@Override
 	public JavaClass findClass(String className) {
 		return lookupJavaClass(classPath, className);
 	}
 
+	@Override
 	public JavaClass loadClass(String className) throws ClassNotFoundException {
 		return lookupJavaClass(classPath, className);
 	}
 
+	@Override
 	public void storeClass(JavaClass clazz) {
 		// doesn't need to do anything
 	}
 
+	@Override
 	public void removeClass(JavaClass clazz) {
 		throw new RuntimeException("Not implemented");
 	}
 
+	@Override
 	public JavaClass loadClass(Class clazz) throws ClassNotFoundException {
 		throw new RuntimeException("Not implemented");
 	}
 
+	@Override
 	public void clear() {
 		delegate.clear();
 		// throw new RuntimeException("Not implemented");
@@ -1291,10 +1297,12 @@
 
 	}
 
+	@Override
 	public TypeMap getTypeMap() {
 		return typeMap;
 	}
 
+	@Override
 	public boolean isLoadtimeWeaving() {
 		return false;
 	}
@@ -1306,6 +1314,7 @@
 		typeDelegateResolvers.add(typeDelegateResolver);
 	}
 
+	@Override
 	public void classWriteEvent(char[][] compoundName) {
 		typeMap.classWriteEvent(new String(CharOperation.concatWith(compoundName, '.')));
 	}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/ClassPathManager.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/ClassPathManager.java
index f176f88..14fb6e9 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/ClassPathManager.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/ClassPathManager.java
@@ -1,5 +1,5 @@
 /* *******************************************************************
- * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
+ * Copyright (c) 2002, 2017 Contributors
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
@@ -7,35 +7,57 @@
  * http://www.eclipse.org/legal/epl-v10.html 
  *  
  * Contributors: 
- *     PARC     initial implementation 
+ * Palo Alto Research Center, Incorporated (PARC).
  * ******************************************************************/
-
 package org.aspectj.weaver.bcel;
 
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
 import org.aspectj.bridge.IMessageHandler;
 import org.aspectj.bridge.MessageUtil;
+import org.aspectj.util.LangUtil;
+import org.aspectj.util.SoftHashMap;
 import org.aspectj.weaver.BCException;
 import org.aspectj.weaver.UnresolvedType;
 import org.aspectj.weaver.WeaverMessages;
 import org.aspectj.weaver.tools.Trace;
 import org.aspectj.weaver.tools.TraceFactory;
 
+/**
+ * @author Andy Clement
+ * @author Mario Ivankovits
+ */
 public class ClassPathManager {
 
 	private static Trace trace = TraceFactory.getTraceFactory().getTrace(ClassPathManager.class);
 
+	private static int maxOpenArchives = -1;
+	
+	private static URI JRT_URI = URI.create("jrt:/"); //$NON-NLS-1$
+	
+	private static final int MAXOPEN_DEFAULT = 1000;
+
 	private List<Entry> entries;
 
 	// In order to control how many open files we have, we maintain a list.
@@ -44,10 +66,6 @@
 	// and it defaults to 1000
 	private List<ZipFile> openArchives = new ArrayList<ZipFile>();
 
-	private static int maxOpenArchives = -1;
-	
-	private static final int MAXOPEN_DEFAULT = 1000;
-
 	static {
 		String openzipsString = getSystemPropertyWithoutSecurityException("org.aspectj.weaver.openarchives",
 				Integer.toString(MAXOPEN_DEFAULT));
@@ -88,7 +106,11 @@
 				return;
 			}
 			try {
-				entries.add(new ZipFileEntry(f));
+				if (lc.endsWith(LangUtil.JRT_FS)) { // Java9
+					entries.add(new JImageEntry());
+				} else {
+					entries.add(new ZipFileEntry(f));
+				}
 			} catch (IOException ioe) {
 				MessageUtil.warn(handler,
 						WeaverMessages.format(WeaverMessages.ZIPFILE_ENTRY_INVALID, name, ioe.getMessage()));
@@ -151,11 +173,46 @@
 		public abstract void close();
 	}
 
-	public abstract static class Entry {
+	abstract static class Entry {
 		public abstract ClassFile find(String name) throws IOException;
 	}
+	
+	static class ByteBasedClassFile extends ClassFile {
 
-	private static class FileClassFile extends ClassFile {
+		private byte[] bytes;
+		private ByteArrayInputStream bais;
+		private String path;
+		
+		public ByteBasedClassFile(byte[] bytes, String path) {
+			this.bytes = bytes;			
+			this.path = path;
+		}
+		
+		@Override
+		public InputStream getInputStream() throws IOException {
+			this.bais = new ByteArrayInputStream(bytes);
+			return this.bais;
+		}
+
+		@Override
+		public String getPath() {
+			return this.path;
+		}
+
+		@Override
+		public void close() {
+			if (this.bais!=null) {
+				try {
+					this.bais.close();
+				} catch (IOException e) {
+				}
+				this.bais = null;
+			}
+		}
+		
+	}
+
+	static class FileClassFile extends ClassFile {
 		private File file;
 		private FileInputStream fis;
 
@@ -184,7 +241,7 @@
 		}
 	}
 
-	public class DirEntry extends Entry {
+	class DirEntry extends Entry {
 		private String dirPath;
 
 		public DirEntry(File dir) {
@@ -208,7 +265,7 @@
 		}
 	}
 
-	private static class ZipEntryClassFile extends ClassFile {
+	static class ZipEntryClassFile extends ClassFile {
 		private ZipEntry entry;
 		private ZipFileEntry zipFile;
 		private InputStream is;
@@ -239,8 +296,143 @@
 		}
 
 	}
+	
+	/**
+	 * Maintains a shared package cache for java runtime image. This maps packages (for example:
+	 * java/lang) to a starting root position in the filesystem (for example: /modules/java.base/java/lang).
+	 * When searching for a type we work out the package name, use it to find where in the filesystem
+	 * to start looking then run from there. Once found we do cache what we learn to make subsequent
+	 * lookups of that type even faster. Maintaining just a package cache rather than complete type cache
+	 * helps reduce memory usage but still gives reasonably fast lookup performance.
+	 */
+	static class JImageEntry extends Entry {
+		
+		private final static FileSystem fs = FileSystems.getFileSystem(JRT_URI);
+		
+		private final static Map<String, Path> fileCache = new SoftHashMap<String, Path>();
 
-	public class ZipFileEntry extends Entry {
+		private final static Map<String, Path> packageCache = new HashMap<String, Path>();
+		
+		private static boolean packageCacheInitialized = false;
+
+		public JImageEntry() {
+			buildPackageMap();
+		}
+		
+		class PackageCacheBuilderVisitor extends SimpleFileVisitor<Path> {
+			@Override
+			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+				if (file.getNameCount() > 3 && file.toString().endsWith(".class")) {
+					int fnc = file.getNameCount();
+					if (fnc > 3) { // There is a package name - e.g. /modules/java.base/java/lang/Object.class
+						Path packagePath = file.subpath(2, fnc-1); // e.g. java/lang
+						String packagePathString = packagePath.toString();
+						packageCache.put(packagePathString, file.subpath(0, fnc-1)); // java/lang -> /modules/java.base/java/lang
+					}
+				}
+				return FileVisitResult.CONTINUE;
+			}
+		}
+		
+		/**
+		 * Create a map from package names to the specific directory of the package members in the filesystem.
+		 */
+		private synchronized void buildPackageMap() {
+			if (!packageCacheInitialized) {
+				packageCacheInitialized = true;
+				Iterable<java.nio.file.Path> roots = fs.getRootDirectories();
+				PackageCacheBuilderVisitor visitor = new PackageCacheBuilderVisitor();
+				try {
+					for (java.nio.file.Path path : roots) {
+						Files.walkFileTree(path, visitor);
+		 			}
+				} catch (IOException e) {
+					throw new RuntimeException(e);
+				}
+			}
+		}
+		
+		class TypeIdentifier extends SimpleFileVisitor<Path> {
+			
+			// What are we looking for?
+			private String name;
+			
+			// If set, where did we find it?
+			public Path found;
+			
+			// Basic metric count of how many files we checked before finding it
+			public int filesSearchedCount;
+
+			public TypeIdentifier(String name) {
+				this.name = name;
+			}
+
+			@Override
+			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+				filesSearchedCount++;
+				if (file.getNameCount() > 2 && file.toString().endsWith(".class")) {
+					int fnc = file.getNameCount();
+					Path filePath = file.subpath(2, fnc);
+					String filePathString = filePath.toString();
+					if (filePathString.equals(name)) {
+						fileCache.put(filePathString, file);
+						found = file;
+						return FileVisitResult.TERMINATE;
+					}
+				}
+				return FileVisitResult.CONTINUE;
+			}
+		}
+		
+		private Path searchForFileAndCache(final Path startPath, final String name) {
+			TypeIdentifier locator = new TypeIdentifier(name);
+			try {
+				Files.walkFileTree(startPath, locator);
+			} catch (IOException e) {
+				throw new RuntimeException(e);
+			}
+			return locator.found;
+ 		}
+
+		public ClassFile find(String name) throws IOException {
+			String fileName = name.replace('.', '/') + ".class";
+			Path file = fileCache.get(fileName);
+			if (file == null) {
+				// Check the packages map to see if we know about this package
+				int idx = fileName.lastIndexOf('/');
+				if (idx == -1) {
+					// Package not here
+					return null;
+				}
+				Path packageStart = null;
+				String packageName = null;
+				if (idx !=-1 ) {
+					packageName = fileName.substring(0, idx);
+					packageStart = packageCache.get(packageName);
+					if (packageStart != null) {
+						file = searchForFileAndCache(packageStart, fileName);
+					}
+				}
+ 			}
+			if (file == null) {
+				return null;
+			}
+			byte[] bs = Files.readAllBytes(file);
+			ClassFile cf = new ByteBasedClassFile(bs, fileName);
+			return cf;
+		}
+
+		static Map<String, Path> getPackageCache() {
+			return packageCache;
+		}
+		
+		static Map<String, Path> getFileCache() {
+			return fileCache;
+		}
+
+	}
+
+	class ZipFileEntry extends Entry {
 		private File file;
 		private ZipFile zipFile;
 
@@ -359,4 +551,10 @@
 			return aDefaultValue;
 		}
 	}
+	
+	// Mainly exposed for testing
+	public List<Entry> getEntries() {
+		return entries;
+	}
+
 }
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/LazyClassGen.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/LazyClassGen.java
index 9334022..95ef524 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/LazyClassGen.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/LazyClassGen.java
@@ -58,9 +58,11 @@
 import org.aspectj.weaver.AjAttribute.WeaverVersionInfo;
 import org.aspectj.weaver.BCException;
 import org.aspectj.weaver.Member;
+import org.aspectj.weaver.MemberKind;
 import org.aspectj.weaver.NameMangler;
 import org.aspectj.weaver.ResolvedMember;
 import org.aspectj.weaver.ResolvedType;
+import org.aspectj.weaver.RuntimeVersion;
 import org.aspectj.weaver.Shadow;
 import org.aspectj.weaver.SignatureUtils;
 import org.aspectj.weaver.TypeVariable;
@@ -79,6 +81,45 @@
  */
 public final class LazyClassGen {
 
+	private static final Type[] ARRAY_7STRING_INT = new Type[] { Type.STRING, Type.STRING, Type.STRING, Type.STRING, Type.STRING,
+			Type.STRING, Type.STRING, Type.INT };
+	
+	private static final Type[] ARRAY_8STRING_INT = new Type[] { Type.STRING, Type.STRING, Type.STRING, Type.STRING, Type.STRING,
+			Type.STRING, Type.STRING, Type.STRING, Type.INT };
+
+	private static final Type[] PARAMSIGNATURE_MAKESJP_METHOD = new Type[] {
+			Type.STRING, Type.INT, Type.STRING, Type.CLASS, Type.CLASS_ARRAY, Type.STRING_ARRAY, Type.CLASS_ARRAY, Type.CLASS, Type.INT
+	};
+
+	private static final Type[] PARAMSIGNATURE_MAKESJP_CONSTRUCTOR = new Type[] {
+			Type.STRING, Type.INT, Type.CLASS, Type.CLASS_ARRAY, Type.STRING_ARRAY, Type.CLASS_ARRAY, Type.INT
+	};
+	
+	private static final Type[] PARAMSIGNATURE_MAKESJP_CATCHCLAUSE = new Type[] {
+			Type.STRING, Type.CLASS, Type.CLASS, Type.STRING, Type.INT
+	};
+	
+	private static final Type[] PARAMSIGNATURE_MAKESJP_FIELD = new Type[] {
+			Type.STRING, Type.INT, Type.STRING, Type.CLASS, Type.CLASS, Type.INT
+	};
+	
+	private static final Type[] PARAMSIGNATURE_MAKESJP_INITIALIZER = new Type[] {
+			Type.STRING, Type.INT, Type.CLASS, Type.INT
+	};
+	
+	private static final Type[] PARAMSIGNATURE_MAKESJP_MONITOR = new Type[] {
+			Type.STRING, Type.CLASS, Type.INT
+	};
+
+	private static final Type[] PARAMSIGNATURE_MAKESJP_ADVICE = new Type[] {
+			Type.STRING, Type.INT, Type.STRING, Type.CLASS, Type.CLASS_ARRAY, Type.STRING_ARRAY,
+			Type.CLASS_ARRAY, Type.CLASS, Type.INT
+	};
+	
+	
+	
+	
+
 	private static final int ACC_SYNTHETIC = 0x1000;
 
 	private static final String[] NO_STRINGS = new String[0];
@@ -252,6 +293,19 @@
 		regenerateGenericSignatureAttribute = true;
 		this.world = world;
 	}
+	
+	public void setMajorMinor(int major, int minor) {
+		myGen.setMajor(major);
+		myGen.setMinor(minor);
+	}
+	
+	public int getMajor() {
+		return myGen.getMajor();
+	}
+	
+	public int getMinor() {
+		return myGen.getMinor();
+	}
 
 	// Non child type, so it comes from a real type in the world.
 	public LazyClassGen(BcelObjectType myType) {
@@ -1003,7 +1057,13 @@
 			return tjpField;
 		}
 
-		int modifiers = Modifier.STATIC | Modifier.FINAL ;
+		int modifiers = Modifier.STATIC;
+		
+		// J9: Can't always be final on Java 9 because it is set outside of clinit
+		// But must be final in interface
+		if (shadow.getEnclosingClass().isInterface()) {
+			modifiers |= Modifier.FINAL;
+		}
 
 		// XXX - Do we ever inline before or after advice? If we do, then we
 		// better include them in the check below. (or just change it to
@@ -1212,6 +1272,7 @@
 
 		List<Map.Entry<BcelShadow, Field>> entries = new ArrayList<Map.Entry<BcelShadow, Field>>(tjpFields.entrySet());
 		Collections.sort(entries, new Comparator<Map.Entry<BcelShadow, Field>>() {
+			@Override
 			public int compare(Map.Entry<BcelShadow, Field> a, Map.Entry<BcelShadow, Field> b) {
 				return (a.getValue()).getName().compareTo((b.getValue()).getName());
 			}
@@ -1233,6 +1294,10 @@
 	}
 
 	private void initializeTjp(InstructionFactory fact, InstructionList list, Field field, BcelShadow shadow) {
+		if (world.getTargetAspectjRuntimeLevel() == RuntimeVersion.V1_9) {
+			initializeTjpOptimal(fact, list, field, shadow);
+			return;
+		}
 		boolean fastSJP = false;
 		// avoid fast SJP if it is for an enclosing joinpoint
 		boolean isFastSJPAvailable = shadow.getWorld().isTargettingRuntime1_6_10()
@@ -1254,9 +1319,7 @@
 		String signatureMakerName = SignatureUtils.getSignatureMakerName(sig);
 		ObjectType signatureType = new ObjectType(SignatureUtils.getSignatureType(sig));
 		UnresolvedType[] exceptionTypes = null;
-		if (world.isTargettingAspectJRuntime12()) { // TAG:SUPPORTING12: We
-			// didn't have optimized
-			// factory methods in 1.2
+		if (world.isTargettingAspectJRuntime12()) { // TAG:SUPPORTING12: We didn't have optimized factory methods in 1.2
 			list.append(InstructionFactory.PUSH(cp, SignatureUtils.getSignatureString(sig, shadow.getWorld())));
 			list.append(fact.createInvoke(factoryType.getClassName(), signatureMakerName, signatureType, Type.STRINGARRAY1,
 					Constants.INVOKEVIRTUAL));
@@ -1350,6 +1413,7 @@
 			list.append(fact.createInvoke(factoryType.getClassName(), signatureMakerName, signatureType, Type.STRINGARRAY2,
 					Constants.INVOKEVIRTUAL));
 		} else {
+			// TODO looks like this block is unused code
 			list.append(InstructionFactory.PUSH(cp, SignatureUtils.getSignatureString(sig, shadow.getWorld())));
 			list.append(fact.createInvoke(factoryType.getClassName(), signatureMakerName, signatureType, Type.STRINGARRAY1,
 					Constants.INVOKEVIRTUAL));
@@ -1395,10 +1459,208 @@
 		}
 	}
 
-	private static final Type[] ARRAY_7STRING_INT = new Type[] { Type.STRING, Type.STRING, Type.STRING, Type.STRING, Type.STRING,
-			Type.STRING, Type.STRING, Type.INT };
-	private static final Type[] ARRAY_8STRING_INT = new Type[] { Type.STRING, Type.STRING, Type.STRING, Type.STRING, Type.STRING,
-			Type.STRING, Type.STRING, Type.STRING, Type.INT };
+	public String getFactoryMethod(Field field, BcelShadow shadow) {
+		StringBuilder b = new StringBuilder();
+		b.append("make");
+		MemberKind kind = shadow.getSignature().getKind();
+		if (kind.equals(Member.METHOD)) {
+			b.append("Method");
+		} else if (kind.equals(Member.CONSTRUCTOR)) {
+			b.append("Constructor");
+		} else if (kind.equals(Member.HANDLER)) {
+			b.append("CatchClause");
+		} else if (kind.equals(Member.FIELD)) {
+			b.append("Field");
+		} else if (kind.equals(Member.STATIC_INITIALIZATION)) {
+			b.append("Initializer");
+		} else if (kind.equals(Member.MONITORENTER)) {
+			b.append("Lock");
+		} else if (kind.equals(Member.MONITOREXIT)) {
+			b.append("Unlock");
+		} else if (kind.equals(Member.ADVICE)) {
+			b.append("Advice");
+		} else {
+			throw new IllegalStateException(kind.toString());
+		}
+		if (staticTjpType.equals(field.getType())) {
+			b.append("SJP");
+		} else if (enclosingStaticTjpType.equals(field.getType())) {
+			b.append("ESJP");
+		}
+		return b.toString();
+	}
+	
+	/**
+	 * Generate optimal joinpoint initialization code.
+	 * 
+	 * As of version 1.9.1 the runtime includes new factory methods for joinpoints that take classes, not strings
+	 * and using them requires different code generation. Using these instead of the old ones means we can avoid
+	 * deferred classloading for these types. By using the LDC instruction that loads classes, it also means
+	 * anything modifying woven code and changing type names will also pick up on these references.
+	 */
+	private void initializeTjpOptimal(InstructionFactory fact, InstructionList list, Field field, BcelShadow shadow) {
+		list.append(InstructionFactory.createLoad(factoryType, 0));
+		pushString(list, shadow.getKind().getName());
+		String factoryMethod = getFactoryMethod(field, shadow);
+		Member sig = shadow.getSignature();
+		BcelWorld w = shadow.getWorld();
+
+		if (sig.getKind().equals(Member.METHOD)) {
+			pushInt(list, sig.getModifiers(w));
+			pushString(list, sig.getName());
+			pushClass(list, sig.getDeclaringType());
+			pushClasses(list, sig.getParameterTypes());
+			pushStrings(list, sig.getParameterNames(w));
+			pushClasses(list, sig.getExceptions(w));
+			pushClass(list, sig.getReturnType());
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_METHOD, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.CONSTRUCTOR)) {
+			if (w.isJoinpointArrayConstructionEnabled() && sig.getDeclaringType().isArray()) {
+				pushInt(list, Modifier.PUBLIC);
+				pushClass(list, sig.getDeclaringType());
+				pushClasses(list, sig.getParameterTypes());
+				pushStrings(list, null);
+				pushClasses(list, null);
+			} else {
+				pushInt(list, sig.getModifiers(w));
+				pushClass(list, sig.getDeclaringType());
+				pushClasses(list, sig.getParameterTypes());
+				pushStrings(list, sig.getParameterNames(w));
+				pushClasses(list, sig.getExceptions(w));
+			}
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_CONSTRUCTOR, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.HANDLER)) {
+			pushClass(list, sig.getDeclaringType());
+			pushClass(list, sig.getParameterTypes()[0]);
+			String pname = null;
+			String[] pnames = sig.getParameterNames(w);
+			if (pnames != null && pnames.length>0) {
+				pname = pnames[0];
+			}
+			pushString(list, pname);
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_CATCHCLAUSE, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.FIELD)) {
+			pushInt(list, sig.getModifiers(w));
+			pushString(list, sig.getName());
+			// see pr227401
+			UnresolvedType dType = sig.getDeclaringType();
+			if (dType.getTypekind() == TypeKind.PARAMETERIZED || dType.getTypekind() == TypeKind.GENERIC) {
+				dType = sig.getDeclaringType().resolve(world).getGenericType();
+			}
+			pushClass(list, dType);
+			pushClass(list, sig.getReturnType());
+			pushInt(list,shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_FIELD, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.STATIC_INITIALIZATION)) {
+			pushInt(list, sig.getModifiers(w));
+			pushClass(list, sig.getDeclaringType());
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_INITIALIZER, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.MONITORENTER)) {
+			pushClass(list, sig.getDeclaringType());
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_MONITOR, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.MONITOREXIT)) {
+			pushClass(list, sig.getDeclaringType());
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_MONITOR, Constants.INVOKEVIRTUAL));
+		} else if (sig.getKind().equals(Member.ADVICE)) {
+			pushInt(list, sig.getModifiers(w));
+			pushString(list, sig.getName());
+			pushClass(list, sig.getDeclaringType());
+			pushClasses(list, sig.getParameterTypes());
+			pushStrings(list, sig.getParameterNames(w));
+			pushClasses(list, sig.getExceptions(w));
+			pushClass(list, sig.getReturnType());
+			pushInt(list, shadow.getSourceLine());
+			list.append(fact.createInvoke(factoryType.getClassName(), factoryMethod, field.getType(), 
+					PARAMSIGNATURE_MAKESJP_ADVICE, Constants.INVOKEVIRTUAL));
+		} else {
+			throw new IllegalStateException("not sure what to do: "+shadow);
+		}
+		list.append(fact.createFieldAccess(getClassName(), field.getName(), field.getType(), Constants.PUTSTATIC));
+	}
+
+	private void pushStrings(InstructionList list, String[] strings) {
+		// Build an array loaded with the strings
+		if (strings == null || strings.length == 0) {
+			list.append(InstructionFactory.ACONST_NULL);
+		} else {
+			list.append(InstructionFactory.PUSH(cp, strings.length));
+			list.append(fact.createNewArray(Type.STRING, (short)1));
+			for (int s=0;s<strings.length;s++) {
+				list.append(InstructionFactory.DUP);
+				list.append(InstructionFactory.PUSH(cp, s));
+				list.append(InstructionFactory.PUSH(cp, strings[s]));
+				list.append(InstructionFactory.AASTORE);
+			}
+		}
+	}
+
+	private void pushClass(InstructionList list, UnresolvedType type) {
+		if (type.isPrimitiveType()) {
+			if (type.getSignature().equals("I")) {
+				list.append(fact.createGetStatic("java/lang/Integer","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("D")) {
+				list.append(fact.createGetStatic("java/lang/Double","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("S")) {
+				list.append(fact.createGetStatic("java/lang/Short","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("J")) {
+				list.append(fact.createGetStatic("java/lang/Long","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("F")) {
+				list.append(fact.createGetStatic("java/lang/Float","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("C")) {
+				list.append(fact.createGetStatic("java/lang/Character","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("B")) {
+				list.append(fact.createGetStatic("java/lang/Byte","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("Z")) {
+				list.append(fact.createGetStatic("java/lang/Boolean","TYPE", Type.CLASS));
+			} else if (type.getSignature().equals("V")) {
+				list.append(InstructionFactory.ACONST_NULL);
+			}
+			return;
+		}
+		String classString = makeLdcClassString(type);
+		if (classString == null) {
+			list.append(InstructionFactory.ACONST_NULL);
+		} else {
+			list.append(fact.PUSHCLASS(cp, classString));
+		}
+	}
+
+	private void pushClasses(InstructionList list, UnresolvedType[] types) {
+		// Build an array loaded with the class objects
+		if (types == null || types.length == 0) {
+			list.append(InstructionFactory.ACONST_NULL);
+		} else {
+			list.append(InstructionFactory.PUSH(cp, types.length));
+			list.append(fact.createNewArray(Type.CLASS, (short)1));
+			for (int t=0;t<types.length;t++) {
+				list.append(InstructionFactory.DUP);
+				list.append(InstructionFactory.PUSH(cp, t));
+				pushClass(list, types[t]);
+				list.append(InstructionFactory.AASTORE);
+			}
+		}
+	}
+
+	private final void pushString(InstructionList list, String string) {
+		list.append(InstructionFactory.PUSH(cp, string));
+	}
+	
+	private final void pushInt(InstructionList list, int value) {
+		list.append(InstructionFactory.PUSH(cp, value));
+	}
 
 	protected String makeString(int i) {
 		return Integer.toString(i, 16); // ??? expensive
@@ -1418,6 +1680,24 @@
 			}
 		}
 	}
+	
+	protected String makeLdcClassString(UnresolvedType type) {
+		if (type.isVoid() || type.isPrimitiveType()) {
+			return null;
+		}
+		if (type.isArray()) {
+			return type.getSignature();
+		} else {
+			if (type.isParameterizedType()) {
+				type = type.getRawType();
+			}
+			String signature = type.getSignature();
+			if (signature.length() ==1 ) {
+				return signature;
+			}
+			return signature.substring(1,signature.length()-1);
+		}
+	}
 
 	protected String makeString(UnresolvedType[] types) {
 		if (types == null) {
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/UnwovenClassFile.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/UnwovenClassFile.java
index d02c901..7076316 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/UnwovenClassFile.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/UnwovenClassFile.java
@@ -30,19 +30,27 @@
 	// protected byte[] writtenBytes = null;
 	protected List<ChildClass> writtenChildClasses = Collections.emptyList();
 	protected String className = null;
+	protected boolean isModule = false;
 
 	public UnwovenClassFile(String filename, byte[] bytes) {
 		this.filename = filename;
+		this.isModule = filename.toLowerCase().endsWith("module-info.java");
 		this.bytes = bytes;
 	}
 
 	/** Use if the classname is known, saves a bytecode parse */
 	public UnwovenClassFile(String filename, String classname, byte[] bytes) {
 		this.filename = filename;
+		this.isModule = filename.toLowerCase().endsWith("module-info.class");
 		this.className = classname;
 		this.bytes = bytes;
 	}
 
+	public boolean shouldBeWoven() {
+		// Skip module-info files for now, they aren't really types
+		return !isModule;
+	}
+
 	public String getFilename() {
 		return filename;
 	}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/Utility.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/Utility.java
index afbfbc7..cd1fd4a 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/Utility.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/Utility.java
@@ -212,7 +212,7 @@
 			kind = Constants.INVOKEVIRTUAL;
 		}
 
-		return fact.createInvoke(m.getClassName(), m.getName(), m.getReturnType(), m.getArgumentTypes(), kind);
+		return fact.createInvoke(m.getClassName(), m.getName(), m.getReturnType(), m.getArgumentTypes(), kind, m.getEnclosingClass().isInterface());
 	}
 
 	/**
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/asm/StackMapAdder.java b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/asm/StackMapAdder.java
index 4624dda..d7932c8 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/bcel/asm/StackMapAdder.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/bcel/asm/StackMapAdder.java
@@ -1,5 +1,5 @@
 /* *******************************************************************
- * Copyright (c) 2008 Contributors
+ * Copyright (c) 2008, 2018 Contributors
  * All rights reserved.
  * This program and the accompanying materials are made available
  * under the terms of the Eclipse Public License v1.0
@@ -15,7 +15,11 @@
 import org.aspectj.weaver.UnresolvedType;
 import org.aspectj.weaver.World;
 
-import aj.org.objectweb.asm.*;
+import aj.org.objectweb.asm.ClassReader;
+import aj.org.objectweb.asm.ClassVisitor;
+import aj.org.objectweb.asm.ClassWriter;
+import aj.org.objectweb.asm.MethodVisitor;
+import aj.org.objectweb.asm.Opcodes;
 
 /**
  * Uses asm to add the stack map attribute to methods in a class. The class is passed in as pure byte data and then a reader/writer
@@ -79,6 +83,7 @@
 		
 
 		// Implementation of getCommonSuperClass() that avoids Class.forName()
+		@Override
 		protected String getCommonSuperClass(final String type1, final String type2) {
 
 			ResolvedType resolvedType1 = world.resolve(UnresolvedType.forName(type1.replace('/', '.')));
@@ -97,6 +102,14 @@
 			} else {
 				do {
 					resolvedType1 = resolvedType1.getSuperclass();
+					if (resolvedType1 == null) {
+						// This happens if some types are missing, the getSuperclass() call on 
+						// MissingResolvedTypeWithKnownSignature will return the Missing type which
+						// in turn returns a superclass of null. By returning Object here it
+						// should surface the cantFindType message raised in the first problematic
+						// getSuperclass call
+						return "java/lang/Object";
+					}
 					if (resolvedType1.isParameterizedOrGenericType()) {
 						resolvedType1 = resolvedType1.getRawType();
 					}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/Aj.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/Aj.java
index 0654e4c..e9c347a 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/Aj.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/Aj.java
@@ -66,6 +66,7 @@
 	/**
 	 * Initialization
 	 */
+	@Override
 	public void initialize() {
 
 	}
@@ -80,6 +81,7 @@
 	 * @param loader
 	 * @return woven bytes
 	 */
+	@Override
 	public byte[] preProcess(String className, byte[] bytes, ClassLoader loader, ProtectionDomain protectionDomain) {
 		// TODO AV needs to doc that
 		if (loader == null || className == null || loader.getClass().getName().equals(deleLoader)) {
@@ -171,6 +173,7 @@
 			return instance;
 		}
 
+		@Override
 		public boolean equals(Object obj) {
 			if (!(obj instanceof AdaptorKey)) {
 				return false;
@@ -181,6 +184,7 @@
 					&& loaderClass.equals(other.loaderClass);
 		}
 
+		@Override
 		public int hashCode() {
 			return hashValue;
 		}
@@ -301,7 +305,7 @@
                 if (loader.equals(myClassLoader)){
                     adaptor = myClassLoaderAdaptor;
                 } else {
-                	adaptor = (ExplicitlyInitializedClassLoaderWeavingAdaptor) weavingAdaptors.get(adaptorKey);
+                	adaptor = weavingAdaptors.get(adaptorKey);
                 }
 				if (adaptor == null) {
 					// create it and put it back in the weavingAdaptors map but avoid any kind of instantiation
@@ -370,4 +374,9 @@
 		((ClassLoaderWeavingAdaptor) WeaverContainer.getWeaver(loader, weavingContext)).flushGeneratedClasses();
 	}
 
+	@Override
+	public void prepareForRedefinition(ClassLoader loader, String className) {
+		((ClassLoaderWeavingAdaptor) WeaverContainer.getWeaver(loader, weavingContext)).flushGeneratedClassesFor(className);
+	}
+
 }
\ No newline at end of file
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
index 21a1821..6fa259d 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
@@ -1,30 +1,38 @@
 /*******************************************************************************
- * Copyright (c) 2005 Contributors.
+ * Copyright (c) 2005, 2017 Contributors.
  * All rights reserved.
  * This program and the accompanying materials are made available
  * under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution and is available at
  * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Alexandre Vasseur         initial implementation
- *   David Knibb		       weaving context enhancments
- *   John Kew (vmware)         caching hook
  *******************************************************************************/
 package org.aspectj.weaver.loadtime;
 
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.security.ProtectionDomain;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
 
 import org.aspectj.bridge.AbortException;
 import org.aspectj.bridge.Constants;
 import org.aspectj.bridge.MessageUtil;
 import org.aspectj.util.LangUtil;
+import org.aspectj.weaver.IUnwovenClassFile;
 import org.aspectj.weaver.Lint;
 import org.aspectj.weaver.Lint.Kind;
 import org.aspectj.weaver.ResolvedType;
@@ -39,13 +47,20 @@
 import org.aspectj.weaver.ltw.LTWWorld;
 import org.aspectj.weaver.patterns.PatternParser;
 import org.aspectj.weaver.patterns.TypePattern;
-import org.aspectj.weaver.tools.*;
+import org.aspectj.weaver.tools.GeneratedClassHandler;
+import org.aspectj.weaver.tools.Trace;
+import org.aspectj.weaver.tools.TraceFactory;
+import org.aspectj.weaver.tools.WeavingAdaptor;
 import org.aspectj.weaver.tools.cache.WeavedClassCache;
 
+import sun.misc.Unsafe;
+
 /**
  * @author Alexandre Vasseur
  * @author Andy Clement
  * @author Abraham Nevado
+ * @author David Knibb
+ * @author John Kew
  */
 public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
 
@@ -53,8 +68,8 @@
 
 	private boolean initialized;
 
-	private List<TypePattern> m_dumpTypePattern = new ArrayList<TypePattern>();
-	private boolean m_dumpBefore = false;
+	private List<TypePattern> dumpTypePattern = new ArrayList<TypePattern>();
+	private boolean dumpBefore = false;
 	private boolean dumpDirPerClassloader = false;
 
 	private boolean hasExcludes = false;
@@ -67,14 +82,14 @@
 
 	private boolean hasIncludes = false;
 	private List<TypePattern> includeTypePattern = new ArrayList<TypePattern>();
-	private List<String> m_includeStartsWith = new ArrayList<String>();
+	private List<String> includeStartsWith = new ArrayList<String>();
 	private List<String> includeExactName = new ArrayList<String>();
 	private boolean includeStar = false;
 
-	private List<TypePattern> m_aspectExcludeTypePattern = new ArrayList<TypePattern>();
-	private List<String> m_aspectExcludeStartsWith = new ArrayList<String>();
-	private List<TypePattern> m_aspectIncludeTypePattern = new ArrayList<TypePattern>();
-	private List<String> m_aspectIncludeStartsWith = new ArrayList<String>();
+	private List<TypePattern> aspectExcludeTypePattern = new ArrayList<TypePattern>();
+	private List<String> aspectExcludeStartsWith = new ArrayList<String>();
+	private List<TypePattern> aspectIncludeTypePattern = new ArrayList<TypePattern>();
+	private List<String> aspectIncludeStartsWith = new ArrayList<String>();
 
 	private StringBuffer namespace;
 	private IWeavingContext weavingContext;
@@ -99,6 +114,7 @@
 	 * 
 	 * @deprecated
 	 */
+	@Deprecated
 	public ClassLoaderWeavingAdaptor(final ClassLoader deprecatedLoader, final IWeavingContext deprecatedContext) {
 		super();
 		if (trace.isTraceEnabled()) {
@@ -120,6 +136,7 @@
 		 * Callback when we need to define a Closure in the JVM
 		 * 
 		 */
+		@Override
 		public void acceptClass (String name, byte[] originalBytes, byte[] wovenBytes) {
 			try {
 				if (shouldDump(name.replace('/', '.'), false)) {
@@ -153,7 +170,7 @@
 
 		this.generatedClassHandler = new SimpleGeneratedClassHandler(classLoader);
 
-		List definitions = weavingContext.getDefinitions(classLoader, this);
+		List<Definition> definitions = weavingContext.getDefinitions(classLoader, this);
 		if (definitions.isEmpty()) {
 			disable(); // TODO maw Needed to ensure messages are flushed
 			if (trace.isTraceEnabled()) {
@@ -232,7 +249,7 @@
 				String file = System.getProperty("aj5.def", null);
 				if (file != null) {
 					info("using (-Daj5.def) " + file);
-					definitions.add(DocumentParser.parse((new File(file)).toURL()));
+					definitions.add(DocumentParser.parse((new File(file)).toURI().toURL()));
 				}
 			}
 
@@ -252,7 +269,7 @@
 						if (!configFile.exists()) {
 							warn("configuration does not exist: " + nextDefinition);
 						} else {
-							definitions.add(DocumentParser.parse(configFile.toURL()));
+							definitions.add(DocumentParser.parse(configFile.toURI().toURL()));
 						}
 					} catch (MalformedURLException mue) {
 						error("malformed definition url: " + nextDefinition);
@@ -414,10 +431,10 @@
 		for (Definition definition : definitions) {
 			for (String exclude : definition.getAspectExcludePatterns()) {
 				TypePattern excludePattern = new PatternParser(exclude).parseTypePattern();
-				m_aspectExcludeTypePattern.add(excludePattern);
+				aspectExcludeTypePattern.add(excludePattern);
 				fastMatchInfo = looksLikeStartsWith(exclude);
 				if (fastMatchInfo != null) {
-					m_aspectExcludeStartsWith.add(fastMatchInfo);
+					aspectExcludeStartsWith.add(fastMatchInfo);
 				}
 			}
 		}
@@ -428,10 +445,10 @@
 		for (Definition definition : definitions) {
 			for (String include : definition.getAspectIncludePatterns()) {
 				TypePattern includePattern = new PatternParser(include).parseTypePattern();
-				m_aspectIncludeTypePattern.add(includePattern);
+				aspectIncludeTypePattern.add(includePattern);
 				fastMatchInfo = looksLikeStartsWith(include);
 				if (fastMatchInfo != null) {
-					m_aspectIncludeStartsWith.add(fastMatchInfo);
+					aspectIncludeStartsWith.add(fastMatchInfo);
 				}
 			}
 		}
@@ -586,7 +603,7 @@
 				String include = iterator1.next();
 				fastMatchInfo = looksLikeStartsWith(include);
 				if (fastMatchInfo != null) {
-					m_includeStartsWith.add(fastMatchInfo);
+					includeStartsWith.add(fastMatchInfo);
 				} else if (include.equals("*")) {
 					includeStar = true;
 				} else if ((fastMatchInfo = looksLikeExactName(include)) != null) {
@@ -723,10 +740,10 @@
 			for (Iterator<String> iterator1 = definition.getDumpPatterns().iterator(); iterator1.hasNext();) {
 				String dump = iterator1.next();
 				TypePattern pattern = new PatternParser(dump).parseTypePattern();
-				m_dumpTypePattern.add(pattern);
+				dumpTypePattern.add(pattern);
 			}
 			if (definition.shouldDumpBefore()) {
-				m_dumpBefore = true;
+				dumpBefore = true;
 			}
 			if (definition.createDumpDirPerClassloader()) {
 				dumpDirPerClassloader = true;
@@ -811,9 +828,9 @@
 				}
 			}
 			boolean fastAccept = false;// defaults to false if no fast include
-			for (int i = 0; i < m_includeStartsWith.size(); i++) {
+			for (int i = 0; i < includeStartsWith.size(); i++) {
 				didSomeIncludeMatching = true;
-				fastAccept = fastClassName.startsWith(m_includeStartsWith.get(i));
+				fastAccept = fastClassName.startsWith(includeStartsWith.get(i));
 				if (fastAccept) {
 					return true;
 				}
@@ -849,9 +866,9 @@
 					}
 				}
 			}
-			for (int i = 0; i < m_includeStartsWith.size(); i++) {
+			for (int i = 0; i < includeStartsWith.size(); i++) {
 				didSomeIncludeMatching = true;
-				boolean fastaccept = fastClassName.startsWith(m_includeStartsWith.get(i));
+				boolean fastaccept = fastClassName.startsWith(includeStartsWith.get(i));
 				if (fastaccept) {
 					return true;
 				}
@@ -874,21 +891,21 @@
 	// this can be nice but very dangerous as well to change that
 	private boolean acceptAspect(String aspectClassName) {
 		// avoid ResolvedType if not needed
-		if (m_aspectExcludeTypePattern.isEmpty() && m_aspectIncludeTypePattern.isEmpty()) {
+		if (aspectExcludeTypePattern.isEmpty() && aspectIncludeTypePattern.isEmpty()) {
 			return true;
 		}
 
 		// still try to avoid ResolvedType if we have simple patterns
 		// EXCLUDE: if one match then reject
 		String fastClassName = aspectClassName.replace('/', '.').replace('.', '$');
-		for (int i = 0; i < m_aspectExcludeStartsWith.size(); i++) {
-			if (fastClassName.startsWith(m_aspectExcludeStartsWith.get(i))) {
+		for (int i = 0; i < aspectExcludeStartsWith.size(); i++) {
+			if (fastClassName.startsWith(aspectExcludeStartsWith.get(i))) {
 				return false;
 			}
 		}
 		// INCLUDE: if one match then accept
-		for (int i = 0; i < m_aspectIncludeStartsWith.size(); i++) {
-			if (fastClassName.startsWith(m_aspectIncludeStartsWith.get(i))) {
+		for (int i = 0; i < aspectIncludeStartsWith.size(); i++) {
+			if (fastClassName.startsWith(aspectIncludeStartsWith.get(i))) {
 				return true;
 			}
 		}
@@ -896,8 +913,7 @@
 		// needs further analysis
 		ResolvedType classInfo = weaver.getWorld().resolve(UnresolvedType.forName(aspectClassName), true);
 		// exclude are "AND"ed
-		for (Iterator iterator = m_aspectExcludeTypePattern.iterator(); iterator.hasNext();) {
-			TypePattern typePattern = (TypePattern) iterator.next();
+		for (TypePattern typePattern: aspectExcludeTypePattern) {
 			if (typePattern.matchesStatically(classInfo)) {
 				// exclude match - skip
 				return false;
@@ -905,8 +921,7 @@
 		}
 		// include are "OR"ed
 		boolean accept = true;// defaults to true if no include
-		for (Iterator iterator = m_aspectIncludeTypePattern.iterator(); iterator.hasNext();) {
-			TypePattern typePattern = (TypePattern) iterator.next();
+		for (TypePattern typePattern: aspectIncludeTypePattern) {
 			accept = typePattern.matchesStatically(classInfo);
 			if (accept) {
 				break;
@@ -919,19 +934,19 @@
 	@Override
 	protected boolean shouldDump(String className, boolean before) {
 		// Don't dump before weaving unless asked to
-		if (before && !m_dumpBefore) {
+		if (before && !dumpBefore) {
 			return false;
 		}
 
 		// avoid ResolvedType if not needed
-		if (m_dumpTypePattern.isEmpty()) {
+		if (dumpTypePattern.isEmpty()) {
 			return false;
 		}
 
 		// TODO AV - optimize for className.startWith only
 		ResolvedType classInfo = weaver.getWorld().resolve(UnresolvedType.forName(className), true);
 		// dump
-		for (Iterator<TypePattern> iterator = m_dumpTypePattern.iterator(); iterator.hasNext();) {
+		for (Iterator<TypePattern> iterator = dumpTypePattern.iterator(); iterator.hasNext();) {
 			TypePattern typePattern = iterator.next();
 			if (typePattern.matchesStatically(classInfo)) {
 				// dump match
@@ -990,35 +1005,59 @@
 	 */
 	public void flushGeneratedClasses() {
 		// System.err.println("? ClassLoaderWeavingAdaptor.flushGeneratedClasses() generatedClasses=" + generatedClasses);
-		generatedClasses = new HashMap();
+		generatedClasses = new HashMap<String, IUnwovenClassFile>();
 	}
 
-	private Method defineClassMethod;
-	private Method defineClassWithProtectionDomainMethod;
+	/**
+	 * Remove generated classes based on the supplied className. This will
+	 * remove any entries related to this name - so the class itself plus
+	 * and inner classes.
+	 * @param className a slashed classname (e.g. com/foo/Bar)
+	 */
+	public void flushGeneratedClassesFor(String className) {
+		try {
+			String dottedClassName = className.replace('/', '.');
+			String dottedClassNameDollar = dottedClassName+"$"; // to pickup inner classes
+			Iterator<Map.Entry<String, IUnwovenClassFile>> iter = generatedClasses.entrySet().iterator();
+			while (iter.hasNext()) {
+				Entry<String, IUnwovenClassFile> next = iter.next();
+				String existingGeneratedName = next.getKey();
+				if (existingGeneratedName.equals(dottedClassName) ||
+						existingGeneratedName.startsWith(dottedClassNameDollar)) {
+					iter.remove();
+				}
+			}
+		} catch (Throwable t) {
+			new RuntimeException("Unexpected problem tidying up generated classes for "+className,t).printStackTrace();
+		}
+	}
 
+	private Unsafe unsafe;
+
+	private Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {
+		if (unsafe == null) {
+	        Field theUnsafeField = Unsafe.class.getDeclaredField("theUnsafe");
+	        theUnsafeField.setAccessible(true);
+	        return (Unsafe) theUnsafeField.get(null);
+		}
+		return unsafe;
+    }
+	
 	private void defineClass(ClassLoader loader, String name, byte[] bytes) {
 		if (trace.isTraceEnabled()) {
 			trace.enter("defineClass", this, new Object[] { loader, name, bytes });
 		}
 		Object clazz = null;
 		debug("generating class '" + name + "'");
-
 		try {
-			if (defineClassMethod == null) {
-				defineClassMethod = ClassLoader.class.getDeclaredMethod("defineClass", new Class[] { String.class,
-						bytes.getClass(), int.class, int.class });
-			}
-			defineClassMethod.setAccessible(true);
-			clazz = defineClassMethod.invoke(loader, new Object[] { name, bytes, new Integer(0), new Integer(bytes.length) });
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof LinkageError) {
-				warn("define generated class failed", e.getTargetException());
-				// is already defined (happens for X$ajcMightHaveAspect interfaces since aspects are reweaved)
-				// TODO maw I don't think this is OK and
-			} else {
-				warn("define generated class failed", e.getTargetException());
-			}
+			clazz = getUnsafe().defineClass(name, bytes, 0, bytes.length, loader, null);
+		} catch (LinkageError le) {
+			// likely thrown due to defining something that already exists?
+			// Old comments from before moving to Unsafe.defineClass():
+			// is already defined (happens for X$ajcMightHaveAspect interfaces since aspects are reweaved)
+			// TODO maw I don't think this is OK and
 		} catch (Exception e) {
+			e.printStackTrace(System.err);
 			warn("define generated class failed", e);
 		}
 
@@ -1033,24 +1072,13 @@
 		}
 		Object clazz = null;
 		debug("generating class '" + name + "'");
-
 		try {
-			// System.out.println(">> Defining with protection domain " + name + " pd=" + protectionDomain);
-			if (defineClassWithProtectionDomainMethod == null) {
-				defineClassWithProtectionDomainMethod = ClassLoader.class.getDeclaredMethod("defineClass", new Class[] {
-						String.class, bytes.getClass(), int.class, int.class, ProtectionDomain.class });
-			}
-			defineClassWithProtectionDomainMethod.setAccessible(true);
-			clazz = defineClassWithProtectionDomainMethod.invoke(loader, new Object[] { name, bytes, Integer.valueOf(0),
-					new Integer(bytes.length), protectionDomain });
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof LinkageError) {
-				warn("define generated class failed", e.getTargetException());
-				// is already defined (happens for X$ajcMightHaveAspect interfaces since aspects are reweaved)
-				// TODO maw I don't think this is OK and
-			} else {
-				warn("define generated class failed", e.getTargetException());
-			}
+			getUnsafe().defineClass(name, bytes, 0, bytes.length, loader, protectionDomain);
+		} catch (LinkageError le) {
+			// likely thrown due to defining something that already exists?
+			// Old comments from before moving to Unsafe.defineClass():
+			// is already defined (happens for X$ajcMightHaveAspect interfaces since aspects are reweaved)
+			// TODO maw I don't think this is OK and
 		} catch (Exception e) {
 			warn("define generated class failed", e);
 		}
@@ -1059,4 +1087,5 @@
 			trace.exit("defineClass", clazz);
 		}
 	}
+
 }
\ No newline at end of file
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessor.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessor.java
index 12e6202..97348b2 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessor.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessor.java
@@ -1,13 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005 Contributors.
+ * Copyright (c) 2005,2018 Contributors.
  * All rights reserved.
  * This program and the accompanying materials are made available
  * under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution and is available at
  * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Alexandre Vasseur         initial implementation
  *******************************************************************************/
 package org.aspectj.weaver.loadtime;
 
@@ -18,6 +15,7 @@
  * further use on Java 1.3 / 1.4
  * 
  * @author Alexandre Vasseur
+ * @author Andy Clement
  */
 public interface ClassPreProcessor {
 
@@ -26,14 +24,7 @@
 	 */
 	void initialize();
 
-	/**
-	 * Weave
-	 * 
-	 * @param className
-	 * @param bytes
-	 * @param classLoader
-	 * @param a protection domain that may be used for defining extraneous classes generated as part of modifying the one passed in
-	 * @return
-	 */
 	byte[] preProcess(String className, byte[] bytes, ClassLoader classLoader, ProtectionDomain protectionDomain);
+
+	void prepareForRedefinition(ClassLoader loader, String className);
 }
\ No newline at end of file
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.java
index ae5a999..a320181 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter.java
@@ -1,13 +1,10 @@
 /*******************************************************************************
- * Copyright (c) 2005 Contributors.
+ * Copyright (c) 2005,2018 Contributors.
  * All rights reserved.
  * This program and the accompanying materials are made available
  * under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution and is available at
  * http://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Alexandre Vasseur         initial implementation
  *******************************************************************************/
 package org.aspectj.weaver.loadtime;
 
@@ -18,19 +15,17 @@
 /**
  * Java 1.5 adapter for class pre processor
  * 
- * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur</a>
+ * @author Alexandre Vasseur
+ * @author Andy Clement
  */
 public class ClassPreProcessorAgentAdapter implements ClassFileTransformer {
 
-	/**
-	 * Concrete preprocessor.
-	 */
-	private static ClassPreProcessor s_preProcessor;
+	private static ClassPreProcessor classPreProcessor;
 
 	static {
 		try {
-			s_preProcessor = new Aj();
-			s_preProcessor.initialize();
+			classPreProcessor = new Aj();
+			classPreProcessor.initialize();
 		} catch (Exception e) {
 			throw new ExceptionInInitializerError("could not initialize JSR163 preprocessor due to: " + e.toString());
 		}
@@ -46,11 +41,13 @@
 	 * @param bytes the incoming bytes (before weaving)
 	 * @return the woven bytes
 	 */
+	@Override
 	public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
 			byte[] bytes) throws IllegalClassFormatException {
 		if (classBeingRedefined != null) {
 			System.err.println("INFO: (Enh120375):  AspectJ attempting reweave of '" + className + "'");
+			classPreProcessor.prepareForRedefinition(loader, className);
 		}
-		return s_preProcessor.preProcess(className, bytes, loader, protectionDomain);
+		return classPreProcessor.preProcess(className, bytes, loader, protectionDomain);
 	}
 }
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/DefaultWeavingContext.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
index 0af7526..8e8d9df 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
@@ -47,7 +47,7 @@
 	/**
 	 * Same as ClassLoader.getResources()
 	 */
-	public Enumeration getResources(String name) throws IOException {
+	public Enumeration<URL> getResources(String name) throws IOException {
 		return getClassLoader().getResources(name);
 	}
 
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/IWeavingContext.java b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/IWeavingContext.java
index 8f7f72c..51b781e 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/IWeavingContext.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/loadtime/IWeavingContext.java
@@ -16,6 +16,7 @@
 import java.util.Enumeration;
 import java.util.List;
 
+import org.aspectj.weaver.loadtime.definition.Definition;
 import org.aspectj.weaver.tools.WeavingAdaptor;
 
 /**
@@ -35,7 +36,7 @@
 	 * @return an enumeration containing all of the matching resources found
 	 * @throws IOException
 	 */
-	public Enumeration getResources(String name) throws IOException;
+	public Enumeration<URL> getResources(String name) throws IOException;
 	
 	/**
 	 * In an OSGi environment, determin which bundle a URL originated from.
@@ -86,6 +87,6 @@
 	 * @param adaptor
 	 * @return List containing 0 or more Definition instances
 	 */
-    public List getDefinitions(final ClassLoader loader, WeavingAdaptor adaptor);
+    public List<Definition> getDefinitions(final ClassLoader loader, WeavingAdaptor adaptor);
 
 }
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/HasMemberTypePattern.java b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/HasMemberTypePattern.java
index 6aa55a4..2b1f28f 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/HasMemberTypePattern.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/HasMemberTypePattern.java
@@ -87,11 +87,18 @@
 				continue;
 			}
 			if (signaturePattern.matches(method, type.getWorld(), false)) {
-				if (method.getDeclaringType().resolve(world) != type) {
+				ResolvedType declaringType = method.getDeclaringType().resolve(world);
+				if (declaringType != type) {
 					if (Modifier.isPrivate(method.getModifiers())) {
 						continue;
 					}
 				}
+				// J9: Object.finalize() is marked Deprecated it seems... triggers unhelpful messages
+				if (method.getName().equals("finalize") && declaringType.equals(ResolvedType.OBJECT)
+						&& (signaturePattern.getAnnotationPattern() instanceof ExactAnnotationTypePattern)
+						&& ((ExactAnnotationTypePattern)signaturePattern.getAnnotationPattern()).getAnnotationType().getSignature().equals("Ljava/lang/Deprecated;")) {
+					continue;
+				}
 				return true;
 			}
 		}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/PerTypeWithin.java b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/PerTypeWithin.java
index e8b92ac..d912b52 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/PerTypeWithin.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/PerTypeWithin.java
@@ -51,14 +51,17 @@
 		typePattern = p;
 	}
 
+	@Override
 	public Object accept(PatternNodeVisitor visitor, Object data) {
 		return visitor.visit(this, data);
 	}
 
+	@Override
 	public int couldMatchKinds() {
 		return kindSet;
 	}
 
+	@Override
 	public Pointcut parameterizeWith(Map<String,UnresolvedType> typeVariableMap, World w) {
 		PerTypeWithin ret = new PerTypeWithin(typePattern.parameterizeWith(typeVariableMap, w));
 		ret.copyLocationFrom(this);
@@ -66,6 +69,7 @@
 	}
 
 	// -----
+	@Override
 	public FuzzyBoolean fastMatch(FastMatchInfo info) {
 		if (typePattern.annotationPattern instanceof AnyAnnotationTypePattern) {
 			return isWithinType(info.getType());
@@ -73,6 +77,7 @@
 		return FuzzyBoolean.MAYBE;
 	}
 
+	@Override
 	protected FuzzyBoolean matchInternal(Shadow shadow) {
 		ResolvedType enclosingType = shadow.getIWorld().resolve(shadow.getEnclosingType(), true);
 		if (enclosingType.isMissing()) {
@@ -90,15 +95,20 @@
 		if (enclosingType.isInterface()) {
 			return FuzzyBoolean.NO;
 		}
+		if (!(enclosingType.canBeSeenBy(inAspect) || inAspect.isPrivilegedAspect())) {
+			return FuzzyBoolean.NO;
+		}
 
 		typePattern.resolve(shadow.getIWorld());
 		return isWithinType(enclosingType);
 	}
 
+	@Override
 	public void resolveBindings(IScope scope, Bindings bindings) {
 		typePattern = typePattern.resolveBindings(scope, bindings, false, false);
 	}
 
+	@Override
 	protected Test findResidueInternal(Shadow shadow, ExposedState state) {
 		// Member ptwField =
 		// AjcMemberMaker.perTypeWithinField(shadow.getEnclosingType
@@ -135,6 +145,7 @@
 		return match(shadow).alwaysTrue() ? Literal.TRUE : Literal.FALSE;
 	}
 
+	@Override
 	public PerClause concretize(ResolvedType inAspect) {
 		PerTypeWithin ret = new PerTypeWithin(typePattern);
 		ret.copyLocationFrom(this);
@@ -152,14 +163,12 @@
 		Pointcut staticInitStar = new KindedPointcut(Shadow.StaticInitialization, sigpat);
 		Pointcut withinTp = new WithinPointcut(typePattern);
 		Pointcut andPcut = new AndPointcut(staticInitStar, withinTp);
-		// We want the pointcut to be 'staticinitialization(*) &&
-		// within(<typepattern>' -
+		// We want the pointcut to be:
+		// 'staticinitialization(*) && within(<typepattern>)' -
 		// we *cannot* shortcut this to staticinitialization(<typepattern>)
-		// because it
-		// doesnt mean the same thing.
+		// because it doesnt mean the same thing.
 
-		// This munger will initialize the aspect instance field in the matched
-		// type
+		// This munger will initialize the aspect instance field in the matched type
 
 		inAspect.crosscuttingMembers.addConcreteShadowMunger(Advice.makePerTypeWithinEntry(world, andPcut, inAspect));
 
@@ -181,6 +190,7 @@
 
 	}
 
+	@Override
 	public void write(CompressingDataOutputStream s) throws IOException {
 		PERTYPEWITHIN.write(s);
 		typePattern.write(s);
@@ -193,14 +203,17 @@
 		return ret;
 	}
 
+	@Override
 	public PerClause.Kind getKind() {
 		return PERTYPEWITHIN;
 	}
 
+	@Override
 	public String toString() {
 		return "pertypewithin(" + typePattern + ")";
 	}
 
+	@Override
 	public String toDeclarationString() {
 		return toString();
 	}
@@ -215,6 +228,7 @@
 		return FuzzyBoolean.NO;
 	}
 
+	@Override
 	public boolean equals(Object other) {
 		if (!(other instanceof PerTypeWithin)) {
 			return false;
@@ -224,6 +238,7 @@
 				&& ((pc.typePattern == null) ? (typePattern == null) : pc.typePattern.equals(typePattern));
 	}
 
+	@Override
 	public int hashCode() {
 		int result = 17;
 		result = 37 * result + ((inAspect == null) ? 0 : inAspect.hashCode());
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/SignaturePattern.java b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/SignaturePattern.java
index a4bf804..365b5b7 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/patterns/SignaturePattern.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/patterns/SignaturePattern.java
@@ -72,6 +72,7 @@
 		this.isExactDeclaringTypePattern = (declaringType instanceof ExactTypePattern);
 	}
 
+	@Override
 	public SignaturePattern resolveBindings(IScope scope, Bindings bindings) {
 		if (returnType != null) {
 			returnType = returnType.resolveBindings(scope, bindings, false, false);
@@ -290,6 +291,7 @@
 	 * return a copy of this signature pattern in which every type variable reference is replaced by the corresponding entry in the
 	 * map.
 	 */
+	@Override
 	public SignaturePattern parameterizeWith(Map<String, UnresolvedType> typeVariableMap, World w) {
 		SignaturePattern ret = new SignaturePattern(kind, modifiers, returnType.parameterizeWith(typeVariableMap, w), declaringType
 				.parameterizeWith(typeVariableMap, w), name, parameterTypes.parameterizeWith(typeVariableMap, w), throwsPattern
@@ -298,6 +300,7 @@
 		return ret;
 	}
 
+	@Override
 	public boolean matches(Member joinPointSignature, World world, boolean allowBridgeMethods) {
 		// fail (or succeed!) fast tests...
 		if (joinPointSignature == null) {
@@ -628,7 +631,7 @@
 
 		if (!parameterTypes.matches(resolvedParameters, TypePattern.STATIC, parameterAnnotationTypes).alwaysTrue()) {
 			// It could still be a match based on the generic sig parameter types of a parameterized type
-			if (!parameterTypes.matches(world.resolve(aConstructor.getGenericParameterTypes()), TypePattern.STATIC).alwaysTrue()) {
+			if (!parameterTypes.matches(world.resolve(aConstructor.getGenericParameterTypes()), TypePattern.STATIC, parameterAnnotationTypes).alwaysTrue()) {
 				return FuzzyBoolean.MAYBE;
 				// It could STILL be a match based on the erasure of the parameter types??
 				// to be determined via test cases...
@@ -968,6 +971,7 @@
 		return annotationPattern;
 	}
 
+	@Override
 	public boolean isStarAnnotation() {
 		return annotationPattern == AnnotationTypePattern.ANY;
 	}
@@ -981,10 +985,12 @@
 		return isExactDeclaringTypePattern;
 	}
 
+	@Override
 	public boolean isMatchOnAnyName() {
 		return getName().isAny();
 	}
 
+	@Override
 	public List<ExactTypePattern> getExactDeclaringTypes() {
 		if (declaringType instanceof ExactTypePattern) {
 			List<ExactTypePattern> l = new ArrayList<ExactTypePattern>();
@@ -995,6 +1001,7 @@
 		}
 	}
 
+	@Override
 	public boolean couldEverMatch(ResolvedType type) {
 		return declaringType.matches(type, TypePattern.STATIC).maybeTrue();
 	}
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ArgNameFinder.java b/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ArgNameFinder.java
index dc295eb..25945a9 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ArgNameFinder.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ArgNameFinder.java
@@ -1,28 +1,25 @@
 /* *******************************************************************
- * Copyright (c) 2005 Contributors.
+ * Copyright (c) 2005-2017 Contributors.
  * All rights reserved. 
  * This program and the accompanying materials are made available 
  * under the terms of the Eclipse Public License v1.0 
  * which accompanies this distribution and is available at 
  * http://eclipse.org/legal/epl-v10.html 
- *  
- * Contributors: 
- *   Adrian Colyer			Initial implementation
  * ******************************************************************/
 package org.aspectj.weaver.reflect;
 
 import java.lang.reflect.Member;
 
 /**
- * @author Adrian
- *
+ * @author Adrian Colyer
+ * @author Andy Clement
  */
 public interface ArgNameFinder {
 
 	/**
-	 * Attempt to discover the parameter names for a reflectively obtained member
-	 * @param forMember
-	 * @return null if names can't be determined
+	 * Attempt to discover the parameter names for a reflectively obtained member.
+	 * @param forMember the member for which parameter names are being looked up
+	 * @return parameter names or null if names can't be determined
 	 */
 	String[] getParameterNames(Member forMember);
 
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ReflectionWorld.java b/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ReflectionWorld.java
index ac1f5e1..c784ff2 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ReflectionWorld.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/reflect/ReflectionWorld.java
@@ -43,26 +43,34 @@
 	private Map<String,Class<?>> inProgressResolutionClasses = new HashMap<String,Class<?>>();
 	
 	public static ReflectionWorld getReflectionWorldFor(WeakClassLoaderReference classLoaderReference) {
+		
+		// Temporarily do as before. Although the cache makes things faster it needs a bit more thought because
+		// if the world has pointcutdesignators registered then someone may inadvertently register additional
+		// ones on reusing a world (when they would be expecting a clean world). We can't automatically
+		// clear them because we don't know when they are finished with.
 		return new ReflectionWorld(classLoaderReference);
-//		synchronized (rworlds) {
-//			// Tidyup any no longer relevant entries...
-//			for (Iterator<Map.Entry<WeakClassLoaderReference, ReflectionWorld>> it = rworlds.entrySet().iterator();
-//					it.hasNext();) {
-//				Map.Entry<WeakClassLoaderReference, ReflectionWorld> entry = it.next();
-//				if (entry.getKey().getClassLoader() == null) {
-//					it.remove();
-//				}
-//			}
-//			ReflectionWorld rworld = null;
-//			if (classLoaderReference.getClassLoader() != null) {
-//				rworld = rworlds.get(classLoaderReference);
-//				if (rworld == null) {
-//					rworld = new ReflectionWorld(classLoaderReference);
-//					rworlds.put(classLoaderReference, rworld);
-//				}
-//			}
-//			return rworld;
-//		}
+		
+		/*
+		synchronized (rworlds) {
+			// Tidyup any no longer relevant entries...
+			for (Iterator<Map.Entry<WeakClassLoaderReference, ReflectionWorld>> it = rworlds.entrySet().iterator();
+					it.hasNext();) {
+				Map.Entry<WeakClassLoaderReference, ReflectionWorld> entry = it.next();
+				if (entry.getKey().getClassLoader() == null) {
+					it.remove();
+				}
+			}
+			ReflectionWorld rworld = null;
+			if (classLoaderReference.getClassLoader() != null) {
+				rworld = rworlds.get(classLoaderReference);
+				if (rworld == null) {
+					rworld = new ReflectionWorld(classLoaderReference);
+					rworlds.put(classLoaderReference, rworld);
+				}
+			}
+			return rworld;
+		}
+		*/
 	}
 	
 	public static void cleanUpWorlds() {
diff --git a/org.aspectj.weaver/source/org/aspectj/weaver/tools/WeavingAdaptor.java b/org.aspectj.weaver/source/org/aspectj/weaver/tools/WeavingAdaptor.java
index 48ef6ae..c372afc 100644
--- a/org.aspectj.weaver/source/org/aspectj/weaver/tools/WeavingAdaptor.java
+++ b/org.aspectj.weaver/source/org/aspectj/weaver/tools/WeavingAdaptor.java
@@ -20,7 +20,17 @@
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.security.ProtectionDomain;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.StringTokenizer;
 
 import org.aspectj.bridge.AbortException;
 import org.aspectj.bridge.IMessage;
@@ -134,9 +144,20 @@
 				warn("cannot determine classpath");
 			}
 		}
-
+		// On Java9 it is possible to fail to find a URLClassLoader from which to derive a suitable classpath
+		// For now we can determine it from the java.class.path:
+        if (LangUtil.is19VMOrGreater()) {
+	    		list.add(0, LangUtil.getJrtFsFilePath());
+			List<String> javaClassPathEntries = makeClasspath(System.getProperty("java.class.path"));
+			for (int i=javaClassPathEntries.size()-1;i>=0;i--) {
+				String javaClassPathEntry = javaClassPathEntries.get(i);
+				if (!list.contains(javaClassPathEntry)) {
+					list.add(0,javaClassPathEntry);
+				}
+			}
+        }
+		// On Java9 the sun.boot.class.path won't be set. System classes accessible through JRT filesystem 
 		list.addAll(0, makeClasspath(System.getProperty("sun.boot.class.path")));
-
 		return list;
 	}
 
diff --git a/org.eclipse.ajdt.releng/build.properties b/org.eclipse.ajdt.releng/build.properties
index f6f0ba4..7e283ea 100644
--- a/org.eclipse.ajdt.releng/build.properties
+++ b/org.eclipse.ajdt.releng/build.properties
@@ -42,7 +42,8 @@
 # 1.8.11.20161216172400 - 1.8.11 
 # 1.8.11.20171005105600 - 1.8.11 release (plus one extra fix)
 # 1.8.13.20171030102906 - 1.8.13 dev
-ajde.version=1.8.13.20171030102906
+# 1.9.2.20180525152400 - 1.9.2 snapshot
+ajde.version=1.9.2.20180525152400
 
 
 builder=.